Merge branch 'feature-30181/Anrechnungen_Erweiterte-Angaben-fuer-Studierende'

This commit is contained in:
Andreas Österreicher
2023-08-22 14:50:32 +02:00
15 changed files with 506 additions and 106 deletions
@@ -37,6 +37,9 @@ class AnrechnungJob extends JOB_Controller
$this->load->helper('hlp_sancho_helper');
$this->load->library('AnrechnungLib');
// Load configs
$this->load->config('anrechnung');
}
/**
@@ -227,6 +230,82 @@ class AnrechnungJob extends JOB_Controller
$this->logInfo('SUCCEDED: Sending emails to STGL about yesterdays new Anrechnungen succeded.');
}
// Send Sancho mail to LV-Leitung (fallback Lectors) that were requested for recommendation yesterday.
public function sendMailRecommendationRequests(){
$this->logInfo('Start AnrechnungJob sendMailRecommendationRequests to inform lecturers about yesterdays requests for recommendation.');
// Get Anrechnungen, für die gestern eine Empfehlung angefragt worden ist
$this->AnrechnungModel->addSelect('astat.anrechnung_id, astat.datum, astat.insertamum');
$this->AnrechnungModel->addDistinct('astat.anrechnung_id');
$this->AnrechnungModel->addJoin('lehre.tbl_anrechnung_anrechnungstatus astat', 'anrechnung_id');
$result = $this->AnrechnungModel->loadWhere('
studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM tbl_studiensemester WHERE now()::date BETWEEN start AND ende)
AND genehmigt_von IS NULL
AND empfehlung_anrechnung IS NULL
AND status_kurzbz = '. $this->db->escape(self::ANRECHNUNGSTATUS_PROGRESSED_BY_LEKTOR) .' -- in Bearbeitung durch Lektor
AND NOW()::date = (astat.datum + interval \'1 day\') -- nur gestrige Empfehlungsanfrage
ORDER BY astat.anrechnung_id, astat.datum DESC, astat.insertamum DESC -- nur letzten status dabei prüfen
');
// Exit, wenn es gestern keine Empfehlungsanfragen gab
if (!hasData($result))
{
$this->logInfo('End AnrechnungJob sendMailRecommendationRequests, because no recommendations were requested yesterday.');
exit;
}
$anrechnung_id_arr = array_column(getData($result), 'anrechnung_id');
$arr_lvLector_arr = array();
foreach ($anrechnung_id_arr as $anrechnung_id)
{
// Get full name of Fachbereichsleitung or LV Leitung.
if($this->config->item('fbl') === TRUE)
{
$arr_lvLector_arr[] = $this->anrechnunglib->getLeitungOfLvOe($anrechnung_id);
}
else
{
$arr_lvLector_arr[] = $this->anrechnunglib->getLectors($anrechnung_id); // Returns LV Leitung. If not present, then all lectors of LV.
}
}
// Unique lector array to send only one mail per lector
$arr_lvLector_arr = array_unique($arr_lvLector_arr, SORT_REGULAR);
// Link to 'Anrechnungen prüfen' dashboard
$url =
CIS_ROOT. 'cis/index.php?menu='.
CIS_ROOT. 'cis/menu.php?content_id=&content='.
CIS_ROOT. index_page(). self::REVIEW_ANRECHNUNG_URI;
foreach ($arr_lvLector_arr as $lvLector_arr)
{
foreach ($lvLector_arr as $lector)
{
// Prepare mail content
$fields = array(
'vorname' => $lector->vorname,
'stgl_name' => 'Die Studiengangsleitung',
'link' => anchor($url, 'Anrechnungsanträge Übersicht')
);
// Send mail
sendSanchoMail(
'AnrechnungEmpfehlungAnfordern',
$fields,
$lector->uid. '@'. DOMAIN,
'Deine Empfehlung wird benötigt zur Anerkennung nachgewiesener Kenntnisse'
);
}
}
$this->logInfo('SUCCEDED AnrechnungJob sendMailRecommendationRequests');
}
/**
* Send Sancho mail to students, whose Anrechnungen were approved 24 hours ago.
*/
@@ -242,7 +242,7 @@ class approveAnrechnungDetail extends Auth_Controller
$empfehlungsanfrage_an = !isEmptyArray($result) ? implode(', ', array_column($result, 'fullname')) : '';
// Request Recommendation
if($this->anrechnunglib->requestRecommendation($anrechnung_id))
if ($this->anrechnunglib->requestRecommendation($anrechnung_id))
{
$retval[]= array(
'anrechnung_id' => $anrechnung_id,
@@ -254,31 +254,23 @@ class approveAnrechnungDetail extends Auth_Controller
);
}
/**
* Send mails to lectors
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
* even if they are required for more recommendations
* */
if (!isEmptyArray($retval))
{
if ($this->config->item('send_mail') === TRUE)
{
$this->_sendSanchoMailToLectors($anrechnung_id);
}
// Output json to ajax
return $this->outputJsonSuccess($retval);
}
// Output json to ajax
if ($empfehlungsanfrage_an == '')
{
$this->terminateWithJsonError(
"Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
);
}
if (isEmptyArray($retval))
{
$this->terminateWithJsonError(
"Empfehlung wurde nicht angefordert,\nDer LV sind keine LektorInnen zugeteilt."
);
$this->terminateWithJsonError("Empfehlung wurde nicht angefordert");
}
$this->terminateWithJsonError($this->p->t('ui', 'errorNichtAusgefuehrt'));
else
{
// Output json to ajax
return $this->outputJsonSuccess($retval);
}
}
/**
@@ -249,19 +249,6 @@ class approveAnrechnungUebersicht extends Auth_Controller
}
}
/**
* Send mails
* NOTE: mails are sent at the end to ensure sending only ONE mail to each LV-Leitung or lector
* even if they are required for more recommendations
* */
if (!isEmptyArray($retval))
{
if ($this->config->item('send_mail') === TRUE)
{
$this->_sendSanchoMail($retval);
}
}
// Output json to ajax
if (isEmptyArray($retval))
{
@@ -273,7 +260,7 @@ class approveAnrechnungUebersicht extends Auth_Controller
$this->terminateWithJsonError('Es wurden keine Empfehlungen angefordert');
}
return $this->outputJsonSuccess($retval);
$this->outputJsonSuccess($retval);
}
/**
@@ -111,6 +111,8 @@ class requestAnrechnung extends Auth_Controller
$lehrveranstaltung_id = $this->input->post('lv_id');
$studiensemester_kurzbz = $this->input->post('studiensemester');
$bestaetigung = $this->input->post('bestaetigung');
$begruendung_ects = $this->input->post('begruendung_ects');
$begruendung_lvinhalt = $this->input->post('begruendung_lvinhalt');
// Validate data
if (empty($_FILES['uploadfile']['name']))
@@ -121,7 +123,9 @@ class requestAnrechnung extends Auth_Controller
if (isEmptyString($begruendung_id) ||
isEmptyString($anmerkung) ||
isEmptyString($lehrveranstaltung_id) ||
isEmptyString($studiensemester_kurzbz))
isEmptyString($studiensemester_kurzbz) ||
isEmptyString($begruendung_ects) ||
isEmptyString($begruendung_lvinhalt))
{
return $this->outputJsonError($this->p->t('ui', 'errorFelderFehlen'));
}
@@ -172,7 +176,9 @@ class requestAnrechnung extends Auth_Controller
$lehrveranstaltung_id,
$begruendung_id,
$lastInsert_dms_id,
$anmerkung
$anmerkung,
$begruendung_ects,
$begruendung_lvinhalt
);
if (isError($result))
+4
View File
@@ -174,6 +174,8 @@ class AnrechnungLib
$anrechnung_data->insertvon = '';
$anrechnung_data->studiensemester_kurzbz = '';
$anrechnung_data->empfehlung = '';
$anrechnung_data->begruendung_ects = '';
$anrechnung_data->begruendung_lvinhalt = '';
$anrechnung_data->status_kurzbz = '';
$anrechnung_data->status = getUserLanguage() == 'German' ? 'neu' : 'new';
$anrechnung_data->dokumentname = '';
@@ -894,6 +896,8 @@ class AnrechnungLib
$anrechnung_data->insertvon= $anrechnung->insertvon;
$anrechnung_data->studiensemester_kurzbz= $anrechnung->studiensemester_kurzbz;
$anrechnung_data->empfehlung= $anrechnung->empfehlung_anrechnung;
$anrechnung_data->begruendung_ects = $anrechnung->begruendung_ects;
$anrechnung_data->begruendung_lvinhalt = $anrechnung->begruendung_lvinhalt;
// Get last status_kurzbz
$result = $this->ci->AnrechnungModel->getLastAnrechnungstatus($anrechnung->anrechnung_id);
@@ -30,7 +30,7 @@ class Anrechnung_model extends DB_Model
*/
public function createAnrechnungsantrag(
$prestudent_id, $studiensemester_kurzbz, $lehrveranstaltung_id,
$begruendung_id, $dms_id, $anmerkung_student = null
$begruendung_id, $dms_id, $anmerkung_student = null, $begruendung_ects = null, $begruendung_lvinhalt = null
)
{
// Start DB transaction
@@ -44,6 +44,8 @@ class Anrechnung_model extends DB_Model
'dms_id' => $dms_id,
'studiensemester_kurzbz' => $studiensemester_kurzbz,
'anmerkung_student' => $anmerkung_student,
'begruendung_ects' => $begruendung_ects,
'begruendung_lvinhalt' => $begruendung_lvinhalt,
'insertvon' => $this->_uid
));
@@ -92,85 +92,93 @@ $this->load->view(
</div>
<div class="panel-body">
<div class="row">
<div class="col-lg-6">
<div class="col-lg-4">
<table class="table table-bordered table-condensed table-fixed">
<tbody>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
<th class="col-xs-5"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
<th class="col-xs-5"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
<td><?php echo $antragData->matrikelnr ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
<td><?php echo $antragData->stg_bezeichnung ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
<td><?php echo $antragData->lv_bezeichnung ?></td>
</tr>
</tbody>
</table>
</div>
<div class="col-lg-6">
<table class="table table-bordered table-condensed table-fixed">
<tbody>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'ects'); ?></th>
<td colspan="3"><span id="ects"><?php echo $antragData->ects ?></span></td>
</tr>
<tr>
<th class="col-xs-4">
<?php echo $this->p->t('anrechnung', 'bisherAngerechneteEcts'); ?>
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
<td>
<?php $len = count($antragData->lektoren) - 1 ?>
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
echo $key === $len ? '' : ', ' ?>
<?php endforeach; ?>
</td>
</tr>
<tr>
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'ects'); ?></th>
<td><span id="ects"><?php echo $antragData->ects ?></span></td>
</tr>
<tr>
<th class="col-xs-5">
<?php echo $this->p->t('anrechnung', 'bisherAngerechneteEcts'); ?>
<span class="approveAnrechnungDetail-anrechnungEctsTooltip"
data-toggle="tooltip" data-placement="right"
title="<?php echo $this->p->t('anrechnung', 'anrechnungEctsTooltipText'); ?>">
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
</span>
</th>
<td colspan="3">
<td>
Total: <span id="sumEctsTotal"><?php echo number_format($antragData->sumEctsSchulisch + $antragData->sumEctsBeruflich, 1) ?></span>
[Schulisch: <span id="sumEctsSchulisch" value="<?php echo $antragData->sumEctsSchulisch ?>"><?php echo $antragData->sumEctsSchulisch ?></span> /
Beruflich: <span id="sumEctsBeruflich" value="<?php echo $antragData->sumEctsBeruflich ?>"><?php echo $antragData->sumEctsBeruflich ?></span> ]
<span id="sumEctsMsg"></span>
<span id="sumEctsMsg"></span>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-lg-8">
<table class="table table-bordered table-condensed table-fixed">
<tbody>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
<td colspan="3">
<?php $len = count($antragData->lektoren) - 1 ?>
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
echo $key === $len ? '' : ', ' ?>
<?php endforeach; ?>
</td>
</tr>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
<td colspan="3"><?php echo $antragData->zgv ?></td>
<th class="col-xs-3"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
<td><?php echo $antragData->zgv ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'herkunftDerKenntnisse'); ?></th>
<td colspan="3"><?php echo $anrechnungData->anmerkung ?></td>
<td><?php echo $anrechnungData->anmerkung ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'nachweisdokumente'); ?></th>
<td colspan="3">
<td>
<a href="<?php echo current_url() . '/download?dms_id=' . $anrechnungData->dms_id; ?>"
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
</td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('global', 'begruendung'); ?></th>
<td colspan="3"><span id="begruendung_id" data-begruendung_id="<?php echo $anrechnungData->begruendung_id ?>" ><?php echo $anrechnungData->begruendung ?></span></td>
<td><span id="begruendung_id" data-begruendung_id="<?php echo $anrechnungData->begruendung_id ?>" ><?php echo $anrechnungData->begruendung ?></span></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungEctsLabel'); ?></th>
<td><span><?php echo $anrechnungData->begruendung_ects ?></span></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungLvinhaltLabel'); ?></th>
<td><span><?php echo $anrechnungData->begruendung_lvinhalt ?></span></td>
</tr>
</tbody>
</table>
@@ -1,5 +1,8 @@
<?php
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
const CHAR_LENGTH125 = 125;
const CHAR_LENGTH150 = 150;
const CHAR_LENGTH500 = 500;
const CHAR_LENGTH1000 = 1000;
$this->load->view(
'templates/FHC-Header',
@@ -197,6 +200,46 @@ $this->load->view(
</div>
</div>
</div>
<!-- Begruendung ECTS -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<b><?php echo $this->p->t('anrechnung', 'begruendungEcts'); ?></b>&emsp;
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
title="<?php echo $this->p->t('anrechnung', 'anrechnungBegruendungEctsTooltipText'); ?>">
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
</span>
</div>
<div class="panel-body">
<textarea class="form-control" name="begruendung_ects" rows="1" id="requestAnrechnung-begruendungEcts"
maxlength="<?php echo CHAR_LENGTH150 ?>" required><?php echo $anrechnungData->begruendung_ects; ?></textarea>
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-begruendungEcts-charCounter"><?php echo CHAR_LENGTH150 ?></span></span></small>
</div>
</div>
</div>
</div>
<!-- Begruendung LV Inhalt -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
<b><?php echo $this->p->t('anrechnung', 'begruendungLvinhalt'); ?></b>&emsp;
<span class="requestAnrechnung-anrechnungInfoTooltip" data-toggle="tooltip" data-placement="right"
title="<?php echo $this->p->t('anrechnung', 'anrechnungBegruendungLvinhaltTooltipText'); ?>">
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>
</span>
</div>
<div class="panel-body">
<textarea class="form-control" name="begruendung_lvinhalt" rows="7" id="requestAnrechnung-begruendungLvinhalt"
minlength="<?php echo CHAR_LENGTH500 ?>"
maxlength="<?php echo CHAR_LENGTH1000 ?>" required><?php echo $anrechnungData->begruendung_lvinhalt; ?></textarea>
<small><span class="text-muted pull-right">&nbsp;/&nbsp;<?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-begruendungLvinhalt-charCounterMax"><?php echo CHAR_LENGTH1000 ?></span></span></small>
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'fehlendeMinZeichen'); ?> :<span id="requestAnrechnung-begruendungLvinhalt-charCounterMin"><?php echo CHAR_LENGTH500 ?></span></span></small>
</div>
</div>
</div>
</div>
<!-- Dokument Upload-->
<div class="row">
<div class="col-lg-12">
@@ -242,8 +285,8 @@ $this->load->view(
</div>
<div class="panel-body">
<textarea class="form-control" name="anmerkung" rows="1" id="requestAnrechnung-herkunftDerKenntnisse"
maxlength="<?php echo HERKUNFT_DER_KENNTNISSE_MAX_LENGTH ?>" required><?php echo $anrechnungData->anmerkung; ?></textarea>
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-herkunftDerKenntnisse-charCounter"><?php echo HERKUNFT_DER_KENNTNISSE_MAX_LENGTH ?></span></span></small>
maxlength="<?php echo CHAR_LENGTH125 ?>" required><?php echo $anrechnungData->anmerkung; ?></textarea>
<small><span class="text-muted pull-right"><?php echo $this->p->t('ui', 'maxZeichen'); ?> :<span id="requestAnrechnung-herkunftDerKenntnisse-charCounter"><?php echo CHAR_LENGTH125 ?></span></span></small>
</div>
</div>
</div>
@@ -16,6 +16,23 @@
</div>
</div>
</div>
<!-- Referenzbeispiele ECTS Berechnung panel -->
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingBegruendung">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseBegruendung"
aria-expanded="false" aria-controls="collapseBegruendung">
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>&ensp;
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungTitle'); ?>
</a>
</h4>
</div>
<div id="collapseBegruendung" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingBegruendung">
<div class="panel-body">
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungBody'); ?>
</div>
</div>
</div>
<!-- Nachweisdokumente: Voraussetzung panel -->
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingTwo">
@@ -84,49 +84,50 @@ $this->load->view(
</div>
<div class="panel-body">
<div class="row">
<div class="col-lg-6">
<div class="col-lg-4">
<table class="table table-bordered table-condensed table-fixed">
<tbody>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
<th class="col-xs-5"><?php echo ucfirst($this->p->t('person', 'studentIn')); ?></th>
<td><?php echo $antragData->vorname . ' ' . $antragData->nachname; ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
<th class="col-xs-5"><?php echo $this->p->t('person', 'personenkennzeichen'); ?></th>
<td><?php echo $antragData->matrikelnr ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiensemester')); ?></th>
<td><?php echo $antragData->studiensemester_kurzbz ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
<th class="col-xs-5"><?php echo ucfirst($this->p->t('lehre', 'studiengang')); ?></th>
<td><?php echo $antragData->stg_bezeichnung ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lehrveranstaltung'); ?></th>
<td><?php echo $antragData->lv_bezeichnung ?></td>
</tr>
</tbody>
</table>
</div>
<div class="col-lg-6">
<table class="table table-bordered table-condensed table-fixed">
<tbody>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'ects'); ?></th>
<td><?php echo $antragData->ects ?></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
<td>
<tr>
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'ects'); ?></th>
<td><?php echo $antragData->ects ?></td>
</tr>
<tr>
<th class="col-xs-5"><?php echo $this->p->t('lehre', 'lektorInnen'); ?></th>
<td>
<?php $len = count($antragData->lektoren) - 1 ?>
<?php foreach ($antragData->lektoren as $key => $lektor): ?>
<?php echo $lektor->vorname . ' ' . $lektor->nachname;
echo $key === $len ? '' : ', ' ?>
<?php endforeach; ?>
</td>
</tr>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-lg-8">
<table class="table table-bordered table-condensed table-fixed">
<tbody>
<tr>
<th class="col-xs-4"><?php echo ucfirst($this->p->t('global', 'zgv')); ?></th>
<td><?php echo $antragData->zgv ?></td>
@@ -142,6 +143,14 @@ $this->load->view(
target="_blank"><?php echo htmlentities($anrechnungData->dokumentname) ?></a>
</td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungEctsLabel'); ?></th>
<td><span><?php echo $anrechnungData->begruendung_ects ?></span></td>
</tr>
<tr>
<th class="col-xs-4"><?php echo $this->p->t('anrechnung', 'begruendungLvinhaltLabel'); ?></th>
<td><span><?php echo $anrechnungData->begruendung_lvinhalt ?></span></td>
</tr>
</tbody>
</table>
@@ -15,6 +15,22 @@
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingBegruendung">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseBegruendung"
aria-expanded="false" aria-controls="collapseBegruendung">
<i class="fa fa-lg fa-info-circle" aria-hidden="true"></i>&ensp;
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungTitle'); ?>
</a>
</h4>
</div>
<div id="collapseBegruendung" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingBegruendung">
<div class="panel-body">
<?php echo $this->p->t('anrechnung', 'requestAnrechnungInfoEctsBerechnungBody'); ?>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingZero">
<h4 class="panel-title">
@@ -1,6 +1,9 @@
const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
const CHAR_LENGTH125 = 125;
const CHAR_LENGTH150 = 150;
const CHAR_LENGTH500 = 500;
const CHAR_LENGTH1000 = 1000;
const COLOR_DANGER = '#f2dede';
@@ -25,7 +28,7 @@ $(function(){
// Alert message inside Begruendungsbox, if maximum ECTS exceeded
requestAnrechnung.alertIfMaxEctsExceededInsideBegruendungsbox();
// Set chars counter for textarea 'Herkunft der Kenntnisse'
// Set chars counter for textareas
requestAnrechnung.setCharsCounter();
// If Sperregrund exists: display Sperre panel, hide Status panel and disable all form elements
@@ -98,6 +101,8 @@ $(function(){
begruendung: this.begruendung.value,
lv_id: this.lv_id.value,
studiensemester: this.studiensemester.value,
begruendung_ects: this.begruendung_ects.value,
begruendung_lvinhalt: this.begruendung_lvinhalt.value,
bestaetigung: this.bestaetigung.value,
uploadfile: this.uploadfile.files
},
@@ -207,11 +212,22 @@ var requestAnrechnung = {
},
setCharsCounter: function(){
$('#requestAnrechnung-herkunftDerKenntnisse').keyup(function() {
let length = HERKUNFT_DER_KENNTNISSE_MAX_LENGTH - $(this).val().length;
let length = CHAR_LENGTH125 - $(this).val().length;
$('#requestAnrechnung-herkunftDerKenntnisse-charCounter').text(length);
});
$('#requestAnrechnung-begruendungEcts').keyup(function() {
let length = CHAR_LENGTH150 - $(this).val().length;
$('#requestAnrechnung-begruendungEcts-charCounter').text(length);
});
$('#requestAnrechnung-begruendungLvinhalt').keyup(function() {
let maxlength = CHAR_LENGTH1000 - $(this).val().length;
$('#requestAnrechnung-begruendungLvinhalt-charCounterMax').text(maxlength);
let minlength = CHAR_LENGTH500 - $(this).val().length;
$('#requestAnrechnung-begruendungLvinhalt-charCounterMin').text(minlength);
});
},
formatAnrechnungIsApplied: function (antragdatum, dms_id, filename){
$('#requestAnrechnung-antragdatum').text(antragdatum);
+2 -1
View File
@@ -41,6 +41,7 @@ require_once('dbupdate_3.4/24913_tabelle_raumtyp_neues_attribut_aktiv.php');
require_once('dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php');
require_once('dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php');
require_once('dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php');
require_once('dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -151,7 +152,7 @@ $tabellen=array(
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"),
"lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"),
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"),
"lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung", "begruendung_ects", "begruendung_lvinhalt"),
"lehre.tbl_anrechnungstatus" => array("status_kurzbz", "bezeichnung_mehrsprachig"),
"lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id", "status_kurzbz", "datum", "insertamum", "insertvon"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
@@ -0,0 +1,28 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
//Add column begruendung_ects to lehre.tbl_anrechnung
if(!@$db->db_query("SELECT begruendung_ects FROM lehre.tbl_anrechnung LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_ects text;
COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_ects IS 'Begruendung gleichwertiger ECTS';
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_anrechnung '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte begruendung_ects zu Tabelle lehre.tbl_anrechnung hinzugefügt';
}
//Add column begruendung_lvinhalt to lehre.tbl_anrechnung
if(!@$db->db_query("SELECT begruendung_lvinhalt FROM lehre.tbl_anrechnung LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_lvinhalt text;
COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_lvinhalt IS 'Begruendung gleichwertiger LV-Inhalte';
";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_anrechnung '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte begruendung_lvinhalt zu Tabelle lehre.tbl_anrechnung hinzugefügt';
}
+192
View File
@@ -10909,6 +10909,178 @@ Any unusual occurrences
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'begruendungEcts',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Begründen Sie die Gleichwertigkeit der ECTS',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Give reasons for the equivalence of ECTS',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'begruendungLvinhalt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Begründen Sie die Gleichwertigkeit der Lehrveranstaltungsinhalte',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Give reasons for the equivalence of the course contents',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'anrechnungBegruendungEctsTooltipText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Hinsichtlich des Umfangs der LV, die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum Ihr Zeugnis bzw. Ihre berufliche Praxis mit dem Umfang der LV gleichwertig ist.<br><br>Referenzbeispiele für die ECTS-Berechnung finden Sie rechts in der Infobox.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Regarding the scope of the course you want to have credited: Please explain why your certificate or your professional practice is equivalent to the scope of the course.<br><br>Reference examples for the ECTS calculation can be found in the info box on the right.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'anrechnungBegruendungLvinhaltTooltipText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Hinsichtlich der Lernergebnisse der LV (vgl. CIS), die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum die von Ihnen erworbenen Kompetenzen mit diesen Lernergebnissen gleichwertig sind.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'With regard to the learning outcomes of the course (cf. CIS) for which you want to receive credit: Please explain why the competences you have acquired are equivalent to these learning outcomes.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'requestAnrechnungInfoEctsBerechnungTitle',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Referenzbeispiele ECTS-Berechnung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Reference examples of ECTS calculation',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'requestAnrechnungInfoEctsBerechnungBody',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "<b>1 ECTS an der FH Technikum Wien entspricht einem Arbeitsaufwand von 25 Stunden.</b>
<br><br><u>Schulisches Zeugnis:</u>
<br>Bitte die Unterrichtsstunden nachvollziehbar in ECTS umrechnen (ein Schuljahr besteht aus ca. 40 Wochen; d.h., eine Unterrichtsstunde pro Woche sind insgesamt ca. 40 Stunden Jahresaufwand.)
<br><br><u>Hochschulzeugnis:</u>
<br>Bitte die ECTS angeben.
<br><br><u>Berufliche Praxis:</u>
<br>Bitte die Dauer der einschlägigen beruflichen Praxis nachvollziehbar in ECTS umrechnen (1,5 ECTS sind ungefähr eine Arbeitswoche im Umfang von 37,5 Stunden).",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "<br>1 ECTS at the FH Technikum Wien corresponds to a workload of 25 hours.</b>
<br><br><u>School certificate:</u>
<br>Please convert the teaching hours into ECTS in a comprehensible way (a school year consists of approx. 40 weeks; i.e. one teaching hour per week is a total of approx. 40 hours of annual work).
<br><br><u>University certificate:</u>
<br>Please indicate the ECTS.
<br><br><u>Professional practice:</u>
<br>Please convert the duration of the relevant professional practice into ECTS in a comprehensible way (1.5 ECTS are approximately one working week of 37.5 hours).",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'begruendungEctsLabel',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Begründung Gleichwertigkeit ECTS',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Reason Equivalency of ECTS',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
'phrase' => 'begruendungLvinhaltLabel',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Begründung Gleichwertigkeit LV-Inhalt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Reason Equivalency of Course content',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -13745,6 +13917,26 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'fehlendeMinZeichen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehlende min. Zeichen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Missing min. Characters",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',