Merge branch 'master' into eine_uid

This commit is contained in:
Andreas Moik
2016-06-20 16:18:28 +02:00
23 changed files with 588 additions and 247 deletions
+4
View File
@@ -10,6 +10,8 @@
- **[CIS]** LVPlan Export für Excel
- **[FAS]** Termine Karteireiter im FAS zeigt die Anmerkung aus dem LVPlan an
- **[CIS]** Onlinebewerbungstool greift auf mehrsprachige Statusbezeichnungen zu.
- **[CIS]** Config-Einträge für die Tabellenspalten beim Eintragen der Gesamtnote hinzugefügt.
- **[CIS]** Prüfungsverwaltung: Config-Eintrag hinzugefügt um die Accordion-Elemente ein- und auszublenden.
### Changed
- **[FAS]** Dokumente Menü im FAS neu sortiert um den Lebenszyklus des Studierenden abzubilden
@@ -18,6 +20,8 @@
- **[CIS]** LVPlan Begrenzung der 4er Blockung aufgehoben.
- **[CIS]** Im Menü 'Zeitsperren' Link zu Resturlaubsübersicht entfernt. Falls benötigt Verlinkung über CMS möglich.
- **[CORE]** Removed NOT NULL constraint on 'verfasser\_uid' from public.tbl\_notiz
- **[CIS]** Studienplanansicht: Wenn eine LV nicht benotet ist, aber eine kompatible LV mit vorhandener Anrechnung benotet ist wird diese Note angezeigt.
- **[FAS]** Die RDF-Schnittstelle für das Zeugnis prüft bei Anrechnungen ob, die ECTS-Punkte übereinstimmen und wählt bei ungleichen Werten jene der angerechneten LV.
### Updateinfo
- **[FAS]** Für Lehraufträge muss eine Unoconv-Vorlage erstellt werden, da der für xsl-fo notwendige Seitenumbruch-Tag aus dem RDF entfernt wurde.
@@ -841,9 +841,15 @@ echo "
<th></th>
<th>".$p->t('global/uid')."</th>
<th>".$p->t('global/nachname')."</th>
<th>".$p->t('global/vorname')."</th>
<th>".($grade_from_moodle?''.$p->t('benotungstool/moodleNote').'':''.$p->t('benotungstool/leNoten').' (LE-ID)')."</th>
<th>".$p->t('benotungstool/punkte').' / '.$p->t('benotungstool/note')."</th>
<th>".$p->t('global/vorname')."</th>";
if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
{
echo "<th>".($grade_from_moodle?''.$p->t('benotungstool/moodleNote').'':''.$p->t('benotungstool/leNoten').' (LE-ID)')."</th>";
}
echo "<th>".$p->t('benotungstool/punkte').' / '.$p->t('benotungstool/note')."</th>
<th rowspan=2>".$p->t('benotungstool/lvNote')."<br>
<input type='button' onclick='GradeImport()' value='".$p->t('benotungstool/importieren')."'>
</th>
@@ -854,26 +860,38 @@ echo "
<br><input type='submit' name='frei' value='Freigabe'>
</form>
</th>
<th>".$p->t('benotungstool/zeugnisnote')."</th>
<th colspan='2'>".$p->t('benotungstool/nachpruefung')."</th>";
<th>".$p->t('benotungstool/zeugnisnote')."</th>";
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
echo "<th colspan='2'>".$p->t('benotungstool/nachpruefung')."</th>";
}
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
echo "<th colspan='2' nowrap>".$p->t('benotungstool/nachpruefung2')."</th>";
}
if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
echo "<th colspan='2'>".$p->t('benotungstool/kommissionellePruefung')."</th>";
}
echo "
<th colspan='2'>".$p->t('benotungstool/kommissionellePruefung')."</th>
</tr>
<tr>
<th colspan='9'>&nbsp;</th>
<th colspan='2'>
<table>
<tr>
<td class='td_datum'>".$p->t('global/datum')."</td>
<td class='td_note'>".$p->t('benotungstool/note')."</td>
<td></td>
</tr>
</table>
</th>";
<th colspan='9'>&nbsp;</th>";
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
echo "<th colspan='2'>
<table>
<tr>
<td class='td_datum'>".$p->t('global/datum')."</td>
<td class='td_note'>".$p->t('benotungstool/note')."</td>
<td></td>
</tr>
</table>
</th>";
}
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
echo "<th colspan='2'>
@@ -886,66 +904,73 @@ echo "
</table>
</th>";
}
echo "
<th colspan='2'>
<table>
<tr>
<td class='td_datum'>".$p->t('global/datum')."</td>
<td class='td_note'>".$p->t('benotungstool/note')."</td>
<td></td>
</tr>
</table>
</th>
if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
echo "
<th colspan='2'>
<table>
<tr>
<td class='td_datum'>".$p->t('global/datum')."</td>
<td class='td_note'>".$p->t('benotungstool/note')."</td>
<td></td>
</tr>
</table>
</th>";
}
echo "
</tr>
";
if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
{
if($grade_from_moodle)
{
flush();
ob_flush();
if($grade_from_moodle)
{
flush();
ob_flush();
$moodle24 = new moodle24_course();
$moodle24->loadNoten($lvid, $stsem);
$moodle24 = new moodle24_course();
$moodle24->loadNoten($lvid, $stsem);
$moodle24_course_bezeichnung=array();
$moodle24_course_bezeichnung=array();
if(count($moodle24->result)>0)
{
// Bezeichnungen der Moodlekurse laden
foreach($moodle24->result as $obj)
{
if(!isset($moodle24_course_bezeichnung[$obj->mdl_course_id]))
{
$moodle24course = new moodle24_course();
$moodle24course->load($obj->mdl_course_id);
if(count($moodle24->result)>0)
{
// Bezeichnungen der Moodlekurse laden
foreach($moodle24->result as $obj)
{
if(!isset($moodle24_course_bezeichnung[$obj->mdl_course_id]))
{
$moodle24course = new moodle24_course();
$moodle24course->load($obj->mdl_course_id);
$moodle24_course_bezeichnung[$obj->mdl_course_id]=$moodle24course->mdl_shortname;
}
$moodle24_course_bezeichnung[$obj->mdl_course_id]=$moodle24course->mdl_shortname;
}
if(!isset($moodle24_course_gewicht[$obj->mdl_course_id]))
{
$mdl_obj = new moodle24_course();
$mdl_lehreinheiten=$mdl_obj->getLeFromCourse($obj->mdl_course_id);
if(!isset($moodle24_course_gewicht[$obj->mdl_course_id]))
{
$mdl_obj = new moodle24_course();
$mdl_lehreinheiten=$mdl_obj->getLeFromCourse($obj->mdl_course_id);
foreach($mdl_lehreinheiten as $row_mdl_lehreinheit)
{
if($row_mdl_lehreinheit!='')
{
$lehreinheit_gewicht_obj = new lehreinheit();
$lehreinheit_gewicht_obj->load($row_mdl_lehreinheit);
foreach($mdl_lehreinheiten as $row_mdl_lehreinheit)
{
if($row_mdl_lehreinheit!='')
{
$lehreinheit_gewicht_obj = new lehreinheit();
$lehreinheit_gewicht_obj->load($row_mdl_lehreinheit);
if($lehreinheit_gewicht_obj->gewicht!='')
{
$moodle24_course_gewicht[$obj->mdl_course_id]=$lehreinheit_gewicht_obj->gewicht;
break;
}
}
}
}
}
}
}
if($lehreinheit_gewicht_obj->gewicht!='')
{
$moodle24_course_gewicht[$obj->mdl_course_id]=$lehreinheit_gewicht_obj->gewicht;
break;
}
}
}
}
}
}
}
}
// studentenquery
$qry_stud = "SELECT
@@ -979,7 +1004,9 @@ echo "
$note_le_gewichtet=0;
$gewichtsumme=0;
$note=0;
if($grade_from_moodle)
if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
{
if($grade_from_moodle)
{
//Moodle 1.9
@@ -1040,7 +1067,6 @@ echo "
$title.=$key."=>".$value."\r\n";
}
$note_les_str .= "<span ".$leneg.">".$note."</span> <span title='".$title."' style='font-size:10px'>(".$mdl_shortname.")</span> ";
}
} // ende If Richtiger User
@@ -1134,10 +1160,11 @@ echo "
$title='Gewichtung: '.$l->gewicht;
else
$title='';
$note_les_str .= '<span title="'.$title.'"><span'.$leneg.'>'.$legesamtnote->note.'</span> ('.$l->lehreinheit_id.') </span>';
}
}
$note_les_str .= '<span title="'.$title.'"><span'.$leneg.'>'.$legesamtnote->note.'</span> ('.$l->lehreinheit_id.') </span>';
}
}
}
}
if ($lvgesamtnote = new lvgesamtnote($lvid,$row_stud->prestudent_id,$stsem))
{
@@ -1191,8 +1218,10 @@ echo "
else
$znote = null;
echo "<td style='white-space: nowrap;'>".$note_les_str."&nbsp;</td>";
if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE)
{
echo "<td style='white-space: nowrap;'>".$note_les_str."&nbsp;</td>";
}
if (key_exists($row_stud->uid,$studpruef_arr))
$hide = "style='display:none;visibility:hidden;'";
@@ -1276,43 +1305,46 @@ echo "
if(isset($noten_array[$znote]) && $noten_array[$znote]['positiv']==false)
$summe_ng++;
// Pruefung 2. Termin
if (key_exists($row_stud->uid, $studpruef_arr))
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2)
{
echo "<td colspan='2'>";
echo "<span id='span_Termin2_".$row_stud->uid."'>";
echo "<table>";
$le_id_arr = array();
$le_id_arr = array_keys($studpruef_arr[$row_stud->uid]);
foreach ($le_id_arr as $le_id_stud)
{
$pr_note = $studpruef_arr[$row_stud->uid][$le_id_stud]["note"];
$pr_punkte = $studpruef_arr[$row_stud->uid][$le_id_stud]["punkte"];
$pr_datum = $studpruef_arr[$row_stud->uid][$le_id_stud]["datum"];
$pr_le_id = $le_id_stud;
// Pruefung 2. Termin
if (key_exists($row_stud->uid, $studpruef_arr))
{
echo "<td colspan='2'>";
echo "<span id='span_Termin2_".$row_stud->uid."'>";
echo "<table>";
$le_id_arr = array();
$le_id_arr = array_keys($studpruef_arr[$row_stud->uid]);
foreach ($le_id_arr as $le_id_stud)
{
$pr_note = $studpruef_arr[$row_stud->uid][$le_id_stud]["note"];
$pr_punkte = $studpruef_arr[$row_stud->uid][$le_id_stud]["punkte"];
$pr_datum = $studpruef_arr[$row_stud->uid][$le_id_stud]["datum"];
$pr_le_id = $le_id_stud;
if($pr_punkte!='')
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')';
else
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'];
if($pr_punkte!='')
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')';
else
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'];
echo '<tr>
<td class="td_datum">'.$pr_datum.'</td>
<td class="td_note">'.$pr_notenbezeichnung.'</td>
<td><input type="button" name="anlegen" value="'.$p->t('global/aendern').'" onclick="pruefungAnlegen(\''.$row_stud->uid.'\',\''.$pr_datum.'\',\''.$pr_note.'\',\''.$pr_le_id.'\',\''.$pr_punkte.'\')"><td>
</tr>';
}
echo "</table>";
echo "</span>";
echo "</td>";
}
else
{
if (!is_null($note_lv) || !is_null($znote))
echo "<td colspan='2'><span id='span_Termin2_".$row_stud->uid."'><input type='button' name='anlegen' value='".$p->t('benotungstool/anlegen')."' onclick='pruefungAnlegen(\"".$row_stud->uid."\",\"\",\"\",\"\",\"\")'></span></td>";
else
echo "<td colspan='2'></td>";
}
echo '<tr>
<td class="td_datum">'.$pr_datum.'</td>
<td class="td_note">'.$pr_notenbezeichnung.'</td>
<td><input type="button" name="anlegen" value="'.$p->t('global/aendern').'" onclick="pruefungAnlegen(\''.$row_stud->uid.'\',\''.$pr_datum.'\',\''.$pr_note.'\',\''.$pr_le_id.'\',\''.$pr_punkte.'\')"><td>
</tr>';
}
echo "</table>";
echo "</span>";
echo "</td>";
}
else
{
if (!is_null($note_lv) || !is_null($znote))
echo "<td colspan='2'><span id='span_Termin2_".$row_stud->uid."'><input type='button' name='anlegen' value='".$p->t('benotungstool/anlegen')."' onclick='pruefungAnlegen(\"".$row_stud->uid."\",\"\",\"\",\"\",\"\")'></span></td>";
else
echo "<td colspan='2'></td>";
}
}
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3)
{
@@ -1355,39 +1387,42 @@ echo "
}
}
// komm Pruefung
if (key_exists($row_stud->uid,$studpruef_komm))
if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF)
{
echo "<td colspan='2'>";
echo "<span id='span_".$row_stud->uid."'>";
echo "<table>";
$le_id_arr = array();
$le_id_arr = array_keys($studpruef_komm[$row_stud->uid]);
foreach ($le_id_arr as $le_id_stud)
{
$pr_note = $studpruef_komm[$row_stud->uid][$le_id_stud]["note"];
$pr_punkte = $studpruef_komm[$row_stud->uid][$le_id_stud]["punkte"];
$pr_datum = $studpruef_komm[$row_stud->uid][$le_id_stud]["datum"];
$pr_le_id = $le_id_stud;
// komm Pruefung
if (key_exists($row_stud->uid,$studpruef_komm))
{
echo "<td colspan='2'>";
echo "<span id='span_".$row_stud->uid."'>";
echo "<table>";
$le_id_arr = array();
$le_id_arr = array_keys($studpruef_komm[$row_stud->uid]);
foreach ($le_id_arr as $le_id_stud)
{
$pr_note = $studpruef_komm[$row_stud->uid][$le_id_stud]["note"];
$pr_punkte = $studpruef_komm[$row_stud->uid][$le_id_stud]["punkte"];
$pr_datum = $studpruef_komm[$row_stud->uid][$le_id_stud]["datum"];
$pr_le_id = $le_id_stud;
if($pr_punkte!='')
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')';
else
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'];
if($pr_punkte!='')
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'].' ('.number_format($pr_punkte,2).')';
else
$pr_notenbezeichnung = $noten_array[$pr_note]['bezeichnung'];
echo '<tr>
<td class="td_datum">'.$pr_datum.'</td>
<td class="td_note">'.$pr_notenbezeichnung.'</td>
</tr>';
}
echo "</table>";
echo "</span>";
echo "</td>";
}
else
{
echo "<td colspan='2'></td>";
}
echo '<tr>
<td class="td_datum">'.$pr_datum.'</td>
<td class="td_note">'.$pr_notenbezeichnung.'</td>
</tr>';
}
echo "</table>";
echo "</span>";
echo "</td>";
}
else
{
echo "<td colspan='2'></td>";
}
}
echo "</tr>";
$i++;
@@ -1398,12 +1433,27 @@ echo "
echo "
<tr style='font-weight:bold;' align='center'>
<th style='font-weight:bold;'>&Sigma;</th>
<th style='font-weight:bold;' title='".$p->t('benotungstool/anzahlDerStudenten')."'>$summe_stud</th>
<th colspan='6'></td>
<th style='color:red; font-weight:bold;' title='".$p->t('benotungstool/anzahlNegativerBeurteilungen')."'>$summe_ng</th>
<th style='font-weight:bold;' colspan='2' title='".$p->t('benotungstool/anzahlNachpruefungen')."'>$summe_t2</th>
<th style='font-weight:bold;' colspan='2' title='".$p->t('benotungstool/anzahlNachpruefungen')."'>$summe_t3</th>
<th style='font-weight:bold;' colspan='2' title='".$p->t('benotungstool/anzahlKommisionellePruefungen')."'>$summe_komm</th>
<th style='font-weight:bold;' title='".$p->t('benotungstool/anzahlDerStudenten')."'>$summe_stud</th>";
if(defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && (!CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE))
{
echo "<th colspan='5'></td>";
}
else
{
echo "<th colspan='6'></td>";
}
echo "<th style='color:red; font-weight:bold;' title='".$p->t('benotungstool/anzahlNegativerBeurteilungen')."'>$summe_ng</th>";
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN2): ?>
<th style='font-weight:bold;' colspan='2' title='"<?php echo $p->t('benotungstool/anzahlNachpruefungen'); ?>"'>$summe_t2</th>;
<?php endif;
if(defined('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3') && CIS_GESAMTNOTE_PRUEFUNG_TERMIN3): ?>
<th style='font-weight:bold;' colspan='2' title='"<?php echo $p->t('benotungstool/anzahlNachpruefungen'); ?>"'>$summe_t3</th>";
<?php endif;
if(defined('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF') && CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF): ?>
<th style='font-weight:bold;' colspan='2' title='"<?php echo $p->t('benotungstool/anzahlKommisionellePruefungen'); ?>"'>$summe_komm</th>
<?php endif;
echo "
</tr>
</table>
</td></tr>
+3 -1
View File
@@ -589,6 +589,8 @@ function resetForm()
*/
function setTablesorter(tableId)
{
if($("#"+tableId).length != 0)
{
if($("#"+tableId)[0].hasInitialized !== true)
{
$("#"+tableId).tablesorter({
@@ -602,6 +604,7 @@ function setTablesorter(tableId)
var sorting = [[1,0],[0,0]];
$("#"+tableId).trigger("sorton",[sorting]);
}
}
}
/**
@@ -688,7 +691,6 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id)
function writeAnmeldungen(data)
{
console.log(data);
if(data.error === 'false')
{
var terminId = data.result.anmeldungen[0].pruefungstermin_id;
+16 -14
View File
@@ -635,19 +635,22 @@ function resetForm()
*/
function setTablesorter(tableId)
{
if($("#"+tableId)[0].hasInitialized !== true)
{
$("#"+tableId).tablesorter({
widgets: ["zebra"],
sortList: [[1,0]]
});
}
else
{
$("#"+tableId).trigger("updateAll");
var sorting = [[1,0],[0,0]];
$("#"+tableId).trigger("sorton",[sorting]);
}
if($("#"+tableId).length != 0)
{
if($("#"+tableId)[0].hasInitialized !== true)
{
$("#"+tableId).tablesorter({
widgets: ["zebra"],
sortList: [[1,0]]
});
}
else
{
$("#"+tableId).trigger("updateAll");
var sorting = [[1,0],[0,0]];
$("#"+tableId).trigger("sorton",[sorting]);
}
}
}
/**
@@ -734,7 +737,6 @@ function showAnmeldungen(pruefungstermin_id, lehrveranstaltung_id)
function writeAnmeldungen(data)
{
console.log(data);
if(data.error === 'false')
{
var terminId = data.result.anmeldungen[0].pruefungstermin_id;
@@ -490,34 +490,50 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
foreach($pruefung->result as $prf)
{
$note = new note($prf->note);
if($note->note === $noteCode_uef)
$pruefung = new pruefungCis();
$reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]);
$anmeldung = new pruefungsanmeldung();
$anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"];
$anmeldung->pruefungstermin_id = $_REQUEST["termin_id"];
$anmeldung->wuensche = $_REQUEST["bemerkung"];
$anmeldung->uid = $uid;
$anmeldung->reihung = $reihung+1;
$anmeldung->status_kurzbz = "angemeldet";
$anmeldung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz;
$lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]);
$konto = new konto();
$creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester);
if($creditpoints !== false)
{
$pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id);
$pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id);
$pf = new pruefungCis($pruefungstermin->pruefung_id);
$pruefungsfenster = new pruefungsfenster($pf->pruefungsfenster_id);
$studiensemester = new studiensemester();
$stdsem = $studiensemester->getaktorNext();
$i=0;
while($i<2)
if($creditpoints < $lehrveranstaltung->ects)
{
if($stdsem === $pruefungsfenster->studiensemester_kurzbz)
$pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id);
$pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id);
$pf = new pruefungCis($pruefungstermin->pruefung_id);
$pruefungsfenster = new pruefungsfenster($pf->pruefungsfenster_id);
$studiensemester = new studiensemester();
$stdsem = $studiensemester->getaktorNext();
$i=0;
while($i<2)
{
if($stdsem === $pruefungsfenster->studiensemester_kurzbz)
{
$anmeldung_moeglich = false;
}
$stdsem = $studiensemester->getPreviousFrom($stdsem);
$i++;
}
}
else
{
if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche)
{
$anmeldung_moeglich = false;
}
$stdsem = $studiensemester->getPreviousFrom($stdsem);
$i++;
}
}
else
{
if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche)
{
$anmeldung_moeglich = false;
}
}
}
if($anmeldung_moeglich)
{
@@ -577,15 +593,29 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$data['errormsg']=$p->t('pruefung/anmeldungAufgrundVonSperreNichtMoeglich');
return $data;
}
}
else
{
$data['error']='true';
$data['errormsg']=$p->t('pruefung/anmeldungAufgrundVonSperreNichtMoeglich');
return $data;
}
$anrechnung = new anrechnung();
$lv_komp = new lehrveranstaltung($studienverpflichtung_id);
$person = new person();
$person->getPersonFromBenutzer($uid);
$prestudent = new prestudent();
$prestudent->getPrestudenten($person->person_id);
$anrechnung = new anrechnung();
$lv_komp = new lehrveranstaltung($studienverpflichtung_id);
$person = new person();
$person->getPersonFromBenutzer($uid);
$prestudent = new prestudent();
$prestudent->getPrestudenten($person->person_id);
$studiensemester = new studiensemester();
$stdsem = $studiensemester->getaktorNext();
if ($aktStudiensemester)
$stdsem = $aktStudiensemester;
if(count($prestudent->result) > 0)
if(count($prestudent->result) > 0)
{
$prestudent_id = "";
foreach($prestudent->result as $ps)
{
$prestudent_id = "";
foreach($prestudent->result as $ps)
@@ -663,6 +693,75 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null)
$data['error']='true';
$data['errormsg']=$p->t('pruefung/prestudentNichtGefunden');
}
}
}
if($prestudent_id != "")
{
$anrechungSaveResult = false;
if(!defined('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG') || CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG == true)
{
if($lv_komp->lehrveranstaltung_id != null && ($lv_komp->lehrveranstaltung_id != $lehrveranstaltung->lehrveranstaltung_id))
{
$anrechnung->lehrveranstaltung_id = $lv_komp->lehrveranstaltung_id;
$anrechnung->lehrveranstaltung_id_kompatibel = $lehrveranstaltung->lehrveranstaltung_id;
$anrechnung->prestudent_id = $prestudent_id;
$anrechnung->begruendung_id = "2";
$anrechnung->genehmigt_von = CIS_PRUEFUNGSANMELDUNG_USER;
$anrechnung->new = true;
$anrechungSaveResult = $anrechnung->save();
}
else
{
$anrechungSaveResult = true;
}
}
else
{
$anrechungSaveResult = true;
}
if($anrechungSaveResult)
{
if($anrechnung->anrechnung_id == "")
$anmeldung->anrechnung_id = null;
else
$anmeldung->anrechnung_id = $anrechnung->anrechnung_id;
if($anmeldung->save(true))
{
$pruefung = new pruefungCis($termin->pruefung_id);
if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== ""))
$to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN;
else
$to = $pruefung->mitarbeiter_uid."@".DOMAIN;
$from = "noreply@".DOMAIN;
$subject = $p->t('pruefung/emailLektorSubjectAnmeldung');
$mail = new mail($to, $from, $subject, $p->t('pruefung/emailBodyBitteHtmlSicht'));
$student = new student($uid);
$datum = new datum();
$lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id);
$html = $p->t('pruefung/emailLektorStudentIn')." ".$student->vorname." ".$student->nachname." ".$p->t('pruefung/emailLektorHatSichZurPruefung')." ".$lv->bezeichnung." ".$p->t('pruefung/emailLektorAm')." ".$datum->formatDatum($termin->von, "m.d.Y")." ".$p->t('pruefung/emailLektorVon')." ".$datum->formatDatum($termin->von,"h:i")." ".$p->t('pruefung/emailLektorUhrBis')." ".$datum->formatDatum($termin->bis,"h:i")." ".$p->t('pruefung/emailLektorUhrAngemeldet');
$mail->setHTMLContent($html);
$mail->send();
$data['result'] = $p->t('pruefung/anmeldungErfolgreich');
$data['error']='false';
$data['errormsg']='';
}
else
{
$data['error']='true';
$data['errormsg']=$anmeldung->errormsg;
}
}
else
{
$data['error']='true';
$data['errormsg']=$anrechnung->errormsg;
}
}
else
{
@@ -231,6 +231,7 @@ $studiensemester->getAll();
</tbody>
</table>
</div>
<?php if(!defined('CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG') || CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG == true): ?>
<h2><?php echo $p->t('pruefung/lvVonStudiengang'); ?></h2>
<div>
<table id="table2" class="tablesorter">
@@ -247,6 +248,7 @@ $studiensemester->getAll();
</tbody>
</table>
</div>
<?php endif; ?>
<h2><?php echo $p->t('pruefung/lvAlle'); ?></h2>
<div>
<table id="table3" class="tablesorter">
@@ -67,7 +67,7 @@ $rechte->getBerechtigungen($uid);
min-height: 297mm;
padding: 20mm;
margin: 10mm auto;
border: 1px #D3D3D3 solid;
border: 1px #ffffff solid;
border-radius: 5px;
background: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
@@ -76,7 +76,7 @@ $rechte->getBerechtigungen($uid);
#subpage {
padding: 10mm;
border: 1px black solid;
border: 1px white solid;
height: 256mm;
outline: 20mm
}
+10 -10
View File
@@ -96,8 +96,8 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
{
$("#modalOverlay").addClass("modalOverlay");
$("#anmeldeDaten").empty();
$("#anmeldungen").children("h2").text("Bewertungen zu "+lehrveranstaltung+" ("+datum+")");
var noten = "<select onchange='markAsUnsaved(this);'><option value='null'>Keine Auswahl</option>";
$("#anmeldungen").children("h2").text("<?php echo $p->t('pruefung/bewertungenZu'); ?> "+lehrveranstaltung+" ("+datum+")");
var noten = "<select onchange='markAsUnsaved(this);'><option value='null'><?php echo $p->t('pruefung/keineAuswahl'); ?></option>";
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
@@ -138,15 +138,15 @@ function showTeilnehmer(pruefungstermin_id, lehrveranstaltung_id, lehrveranstalt
data.result.forEach(function(d)
{
if(d.status_kurzbz === "bestaetigt")
{
var datum = d.von.split(" ");
{
var datum = d.von.split(" ");
if(d.pruefung.note===null)
{
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='saveBeurteilung(this,\""+datum[0]+"\",\""+d.pruefungsanmeldung_id+"\",\""+d.pruefung_id+"\",\""+d.lehrveranstaltung_id+"\");' value='speichern'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='Anmerkung' /></div>";
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='saveBeurteilung(this,\""+datum[0]+"\",\""+d.pruefungsanmeldung_id+"\",\""+d.pruefung_id+"\",\""+d.lehrveranstaltung_id+"\");' value='<?php echo $p->t('global/speichern'); ?>'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='<?php echo $p->t('global/anmerkung'); ?>' /></div>";
}
else
{
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='updateBeurteilung(this,\""+d.pruefung.pruefung_id+"\");' value='speichern'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='Anmerkung' value='"+d.pruefung.anmerkung+"' /></div>";
entry = "<div class='anmeldung' id="+d.student.uid+"><div>"+d.student.vorname+" "+d.student.nachname+"</div>"+notenSelect+"<input type='button' onclick='updateBeurteilung(this,\""+d.pruefung.pruefung_id+"\");' value='<?php echo $p->t('global/speichern'); ?>'/></br><input id='note_anmerkung_"+d.student.uid+"' placeholder='<?php echo $p->t('global/anmerkung'); ?>' value='"+d.pruefung.anmerkung+"' /></div>";
}
$("#anmeldeDaten").append(entry);
if(d.pruefung.note!==null)
@@ -199,7 +199,7 @@ function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrver
return false;
}
var anmerkung = $("#note_anmerkung_"+student_uid).val();
$.ajax({
dataType: 'json',
url: "./pruefungsbewertung.json.php",
@@ -229,7 +229,7 @@ function saveBeurteilung(ele, datum, pruefungsanmeldung_id, pruefung_id, lehrver
$(ele).parent().find("select").val(null);
}
}).complete(function(event, xhr, settings){
});
}
@@ -270,8 +270,8 @@ function updateBeurteilung(ele, pruefung_id)
{
messageBox("message",data.errormsg, "red", "highlight", 1000);
}
}).complete(function(event, xhr, settings){
});
+2 -1
View File
@@ -231,7 +231,8 @@ if(!isset($begin) || !isset($ende))
}
}
if($ende-$begin>31536000)
if($ende-$begin>34560000) // = 400 Tage
{
die($p->t('lvplan/datumsbereichZuGross')."!");
}
+6 -19
View File
@@ -433,19 +433,6 @@ if(isset($prestudent_id))
}
echo '</body>
</html>';
function drawTree($tree, $depth)
{
global $uid, $stsem_arr, $noten_arr, $lvangebot_arr;
@@ -557,12 +544,12 @@ echo '</body>
$lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel;
if(isset($noten_arr[$lv]))
{
$positiv=false;
foreach($noten_arr[$lv] as $note)
{
if($note_pruef_arr[$note]->positiv)
$positiv=true;
}
$positiv=false;
foreach($noten_arr[$lv] as $note)
{
if($note_pruef_arr[$note]->positiv)
$positiv=true;
}
$found = true;
}
else
+3
View File
@@ -215,6 +215,9 @@ define('CIS_PRUEFUNGSANMELDUNG_USER','p.pruefungsanmeldung');
// Soll für die Prüfungsanmeldungen eine Anrechnung erstellt werden
define('CIS_PRUEFUNGSANMELDUNG_ANRECHNUNG', true);
//Gibt an, ob der Bereich zur Anmeldung zu Pruefungen des gesamten Studiengangs angezeigt werden soll
define('CIS_PRUEFUNGSANMELDUNG_LEHRVERANSTALTUNGEN_AUS_STUDIENGANG', true);
//Gibt an, wie viele Semester aus der Vergangenheit unter Meine LV angezeigt werden
define('CIS_MEINELV_ANZAHL_SEMESTER_PAST', 3);
+11
View File
@@ -59,9 +59,20 @@ define('CIS_GESAMTNOTE_UEBERSCHREIBEN',true);
// Gewichtung der Lehreinheiten bei Noteneintragung true|false
define('CIS_GESAMTNOTE_GEWICHTUNG', true);
// Bei Gesamtnote eine zusaetzliche Spalte fuer den 2. Termin anzeigen
define('CIS_GESAMTNOTE_PRUEFUNG_TERMIN2',true);
// Bei Gesamtnote eine zusaetzliche Spalte fuer den 3. Termin anzeigen
define('CIS_GESAMTNOTE_PRUEFUNG_TERMIN3',true);
// Bei Gesamtnote eine zusaetzliche Spalte fuer die kommissionelle Pruefung anlegen
define('CIS_GESAMTNOTE_PRUEFUNG_KOMMPRUEF', true);
// Bei Gesamtnote eine zusaetzliche Spalte fuer die kommissionelle Pruefung anlegen
define('CIS_GESAMTNOTE_PRUEFUNG_MOODLE_NOTE', true);
// Bei Gesamtnote die Spalte fuer die Quelle der Noten anzeigen (Moodle oder LE)
define('CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE', true);
// Gibt an ob im FAS bei den Lehrveranstaltungsnoten ein zusaetzliches Formular angezeigt wird um
// Vertraege fuer Pruefungshonorare anzulegen
+15 -2
View File
@@ -71,7 +71,7 @@ else
$xsl_stg_kz=$_GET['stg_kz'];
else
{
// Werden UIDs uebergeben, wird die Vorlage des Studiengangs genommen
// Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen
// in dem der 1. Studierende in der Liste ist
if(isset($_GET['uid']) && $_GET['uid']!='')
{
@@ -86,6 +86,19 @@ else
$xsl_stg_kz=$student_obj->studiengang_kz;
}
}
elseif(isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='')
{
if(strstr($_GET['prestudent_id'],';'))
$prestudent_ids = explode(';',$_GET['prestudent_id']);
else
$prestudent_ids[1] = $_GET['prestudent_id'];
$prestudent_obj = new prestudent();
if($prestudent_obj->load($prestudent_ids[1]))
{
$xsl_stg_kz=$prestudent_obj->studiengang_kz;
}
}
}
}
if(isset($_GET['xsl_oe_kurzbz']))
@@ -666,7 +679,7 @@ else
// Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den
// Styleanweisungen und ebenfalls zum Zip hinzugefuegt
if(isset($_GET['style_xsl']))
if(isset($_GET['style_xsl']) || $vorlage->style!='')
{
//Wenn die Spalte style in der DB befuellt ist, wird dieses verwendet
if($vorlage->style!='')
+11
View File
@@ -291,6 +291,9 @@ class dokument_export
if($download)
{
if(headers_sent())
exit('Header wurden bereits gesendet -> Abbruch');
switch($this->outputformat)
{
case 'pdf':
@@ -310,6 +313,8 @@ class dokument_export
header('Content-Disposition: attachment; filename="'.$this->filename.'.odt"');
header('Content-Length: '.$fsize);
break;
default:
exit('Outputformat is not defined');
}
while (!feof($handle))
@@ -389,5 +394,11 @@ class dokument_export
}
return $_xml_data->asXML();
}
public function getXML()
{
$this->xml_data->formatOutput=true;
return $this->xml_data->saveXML();
}
}
?>
+4 -2
View File
@@ -548,8 +548,10 @@ class jahresplan extends basis_db
$qry.=", to_char(tbl_veranstaltung.start, 'Q') as \"start_quartal\" ";
$qry.=", to_char(tbl_veranstaltung.ende, 'Q') as \"ende_quartal\" ";
$qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.start) as \"start_timestamp\" ";
$qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.ende) as \"ende_timestamp\" ";
$qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.start::TIMESTAMP WITHOUT TIME
ZONE at time zone 'CEST' ) as \"start_timestamp\" ";
$qry.=", EXTRACT(EPOCH FROM tbl_veranstaltung.ende::TIMESTAMP WITHOUT TIME
ZONE at time zone 'CEST' ) as \"ende_timestamp\" ";
$qry.=", to_char(tbl_veranstaltung.start, 'DD.MM.YYYY') as \"start_datum\" ";
+6 -2
View File
@@ -1784,7 +1784,9 @@ class prestudent extends person
if($stg_obj->typ=='m')
{
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus,
(Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber') as anmerkung
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
@@ -1810,7 +1812,9 @@ class prestudent extends person
}
else
{
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus
$qry = "SELECT DISTINCT prestudent_id, vorname, nachname, gebdatum, rt_gesamtpunkte, tbl_prestudent.studiengang_kz, bis.tbl_zgvgruppe.bezeichnung, get_rolle_prestudent(prestudent_id, null) as laststatus,
(Select anmerkung from public.tbl_prestudentstatus where prestudent_id=tbl_prestudent.prestudent_id AND studiensemester_kurzbz=". $this->db_add_param($studiensemester_kurzbz)."
AND status_kurzbz='Bewerber') as anmerkung
FROM
public.tbl_prestudent
JOIN public.tbl_person USING(person_id)
+2
View File
@@ -73,6 +73,8 @@ $this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Lehrveranstaltung erfolgreic
$this->phrasen['pruefung/pruefungStorniert'] = 'Prüfung storniert';
$this->phrasen['pruefung/terminGeloescht'] = 'Termin gelöscht';
$this->phrasen['pruefung/unbegrenzt'] = 'unbegrenzt';
$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu';
$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl';
// pruefungsbewertung
$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung';
+2
View File
@@ -73,6 +73,8 @@ $this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Lehrveranstaltung erfolgreic
$this->phrasen['pruefung/pruefungStorniert'] = 'Prüfung storniert';
$this->phrasen['pruefung/terminGeloescht'] = 'Termin gelöscht';
$this->phrasen['pruefung/unbegrenzt'] = 'unlimited';
$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu';
$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl';
// pruefungsbewertung
$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung';
+5 -2
View File
@@ -46,7 +46,7 @@ $this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Possibilità di iscrizione ent
$this->phrasen['pruefung/stornoNichtMehrMoeglich'] = 'Non è più possibile annullare liscrizione.';
$this->phrasen['pruefung/zurLvAnmeldung'] = 'iscriversi al corso';
$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Scegliere prima lesame.';
$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'inserito da docente';
$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'iscrizione da segreteria';
$this->phrasen['pruefung/bestaetigen'] = 'Confermare';
$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Osservazioni dello studente:</br>';
$this->phrasen['pruefung/bestaetigt'] = 'confermato';
@@ -73,6 +73,9 @@ $this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Insegnamento tolto con succe
$this->phrasen['pruefung/pruefungStorniert'] = 'Esame cancellato';
$this->phrasen['pruefung/terminGeloescht'] = 'Appello eliminato';
$this->phrasen['pruefung/unbegrenzt'] = '';
$this->phrasen['pruefung/bewertungenZu'] = 'Bewertungen zu';
$this->phrasen['pruefung/keineAuswahl'] = 'Keine Auswahl';
// pruefungsbewertung
$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Voti desame';
$this->phrasen['pruefung/pruefungsbewertungAnmeldungen'] = 'Iscrizioni';
@@ -102,7 +105,7 @@ $this->phrasen['pruefung/keineLvAngegeben'] = 'Nessun corso definito.';
$this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Date sovrapposte.';
$this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'La data dellappello non è nel passato.';
$this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Nessun corso disponibile.';
$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna registrazione disponibile.';
$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna studente iscritto.';
// anmeldungen Verwalten
$this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Gestione delle prenotazioni degli appelli';
+15 -1
View File
@@ -297,6 +297,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$stg = new studiengang();
$stg->load($lvstg);
$xml .= " <stg_studiengang_bezeichnung>".$stg_oe_obj->bezeichnung."</stg_studiengang_bezeichnung>";
$xml .= " <lv_studiengang_bezeichnung>".$stg->bezeichnung."</lv_studiengang_bezeichnung>";
$xml .= " <lv_studiengang_typ>".$stg->typ."</lv_studiengang_typ>";
$xml .= " <lv_studiengang_kennzahl>".sprintf('%04s',$lvstg)."</lv_studiengang_kennzahl>";
@@ -312,7 +314,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$xml .= " <lehrform_kurzbz>".$lehrform_kurzbz."</lehrform_kurzbz>";
$xml .= " <lehrform_bezeichnung>".$lehrform_bezeichnung."</lehrform_bezeichnung>";
$xml .= " <sws>".($sws==0?'':number_format(sprintf('%.1F',$sws),1))."</sws>";
$xml .= " <ects>".number_format($ects,1)."</ects>";
$xml .= " <lvleiter>".$leiter_titel." ".$leiter_vorname." ".$leiter_nachname.($leiter_titelpost!=''?', '.$leiter_titelpost:'')."</lvleiter>";
$xml .= " <lehrinhalte><![CDATA[".clearHtmlTags($lehrinhalte)."]]></lehrinhalte>";
$xml .= " <kompatible_lvs>";
@@ -324,6 +326,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
}
$xml .= " </kompatible_lvs>";
$anrechnung = new anrechnung();
$anrechnung->getAnrechnungPrestudent($student->prestudent_id, null, $lehrveranstaltung_id);
@@ -336,6 +339,17 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$xml .= $anrechnung->result[0]->lehrveranstaltung_bez;
}
$xml .= "</studienverpflichtung>";
if($lehrveranstaltung_id_kompatibel != "")
{
$lv = new lehrveranstaltung($lehrveranstaltung_id_kompatibel);
if(($lv->ects !== $ects) && ($lv->ects != "") && ($lv->ects != null))
{
$ects = $lv->ects;
}
}
$xml .= " <ects>".number_format($ects,1)."</ects>";
$lehrveranstaltung->loadLehrveranstaltungStudienplan($studienplan_id);
+14 -1
View File
@@ -34,6 +34,7 @@ require_once('../include/datum.class.php');
require_once('../include/note.class.php');
require_once('../include/studiengang.class.php');
require_once('../include/mitarbeiter.class.php');
require_once('../include/anrechnung.class.php');
require_once('../include/studiensemester.class.php');
$datum = new datum();
@@ -374,6 +375,19 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$xml .= " <sws>".($row->semesterstunden==0?'':number_format(sprintf('%.1F',$row->semesterstunden/$wochen),1))."</sws>";
$ectspunkte='';
$anrechnung = new anrechnung();
$anrechnung->getAnrechnungPrestudent($prestudent_id_arr[$i], null, $row->lehrveranstaltung_id);
if($anrechnung->result != null)
{
$lv = new lehrveranstaltung($anrechnung->result[0]->lehrveranstaltung_id);
if(($lv->ects !== $row->ects) && ($lv->ects != "") && ($lv->ects != null))
{
$row->ects = $lv->ects;
}
}
if($row->ects==0 || $row->ects=='')
$ectspunkte='';
else
@@ -406,4 +420,3 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
echo $xml;
}
?>
+44 -5
View File
@@ -234,6 +234,7 @@ $error_msg='';
// **************************************************************
// Studiengangsleiter-Verteiler abgleichen
// Es werden auch StellvertreterInnen hinzugefügt
$mlist_name='tw_stgl';
setGeneriert($mlist_name);
// Personen holen die nicht mehr in den Verteiler gehoeren
@@ -248,9 +249,10 @@ $error_msg='';
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
JOIN public.tbl_benutzerfunktion USING(uid)
JOIN public.tbl_studiengang USING(oe_kurzbz)
WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg') AND
WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()))";
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND tbl_studiengang.aktiv=true)";
if(!($result = $db->db_query($sql_query)))
$error_msg.=$db->db_last_error();
while($row=$db->db_fetch_object($result))
@@ -263,7 +265,7 @@ $error_msg='';
}
// Personen holen die nicht im Verteiler sind
echo '<BR>';
$sql_query="SELECT mitarbeiter_uid AS uid
$sql_query="SELECT DISTINCT mitarbeiter_uid AS uid
FROM
public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
@@ -271,10 +273,11 @@ $error_msg='';
JOIN public.tbl_studiengang USING(oe_kurzbz)
WHERE
tbl_benutzer.aktiv AND
(tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg') AND
(tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))
AND tbl_studiengang.aktiv=true";
if(!($result = $db->db_query($sql_query)))
$error_msg.=$db->db_last_error();
while($row=$db->db_fetch_object($result))
@@ -1703,6 +1706,42 @@ $error_msg='';
$error_msg.=$db->db_last_error().' '.$sql_querys;
}
$sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
if(!($result_oe = $db->db_query($sql_query)))
$error_msg.=$db->db_last_error().' '.$sql_query;
// Personen holen die nicht im Verteiler sind
while($row_oe = $db->db_fetch_object($result_oe))
{
$sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
if(!$db->db_query($sql_query))
{
$error_msg.=$db->db_last_error().$sql_query;
}
}
// **************************************************************
// Alle MA mit Funktion Leitung oder stvLeitung oder gfLtg
$mlist_name='TW_LEITUNG';
$grp = new gruppe();
setGeneriert($mlist_name);
// Personen holen die nicht mehr in den Verteiler gehoeren
echo '<br>'.$mlist_name.' wird abgeglichen!';
flush();
$sql_query = "SELECT DISTINCT uid FROM tbl_person JOIN tbl_benutzer
USING (person_id) JOIN tbl_benutzerfunktion USING (uid)
WHERE funktion_kurzbz in('Leitung','stvLtg','gLtg')
AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
$sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
if(!$db->db_query($sql_querys))
{
$error_msg.=$db->db_last_error().' '.$sql_querys;
}
$sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
if(!($result_oe = $db->db_query($sql_query)))
$error_msg.=$db->db_last_error().' '.$sql_query;
+91 -14
View File
@@ -74,6 +74,7 @@
aqr.studiengaenge = [];
aqr.studiensemester = [];
aqr.studienplaetze = [];
aqr.zgvElems = [];
aqr.actualSequence = 1;
SERVICE_TARGET = "aliquote_reduktion.json.php";
@@ -112,6 +113,12 @@
if(!confirm("Es wurden zu viel Studenten gewählt!"))
return;
}
else
{
if(!confirm("Sind Sie sicher, dass Sie die ausgewählten Personen aufnehmen wollen?"))
return;
}
var prestudent_ids = [];
aqr.studenten.forEach(function(i)
@@ -190,7 +197,7 @@
aqr.studenten=res;
aqr.studenten.forEach(function(i)
{
if(i.laststatus=='Wartender'||i.laststatus=='Bewerber')
if((i.laststatus=='Wartender'||i.laststatus=='Bewerber') && i.rt_gesamtpunkte !== null && i.rt_gesamtpunkte > 0)
i.applicant = true;
else if(i.laststatus=='Student'||i.laststatus=='Aufgenommener')
i.selected=true;
@@ -212,12 +219,12 @@
return ret;
}
aqr.getAcceptedCount = function()
aqr.getAcceptedCount = function(zgvGruppe)
{
var ret = 0;
aqr.studenten.forEach(function(i)
{
if(i.laststatus=='Student'||i.laststatus=='Aufgenommener')
if((i.laststatus=='Student'||i.laststatus=='Aufgenommener') && (zgvGruppe === undefined || zgvGruppe === i.bezeichnung))
ret++;
});
return ret;
@@ -225,24 +232,60 @@
aqr.doPreselection = function()
{
if(parseInt(aqr.selectedStudienplatz.apz) >= 0)
aqr.zgvElems = [];
if(parseInt(aqr.selectedStudienplatz.apz) >= 0) // we only preselect, if we have an APZ
{
aqr.studenten.sort(sortStudentenRTP);
var zgvs = aqr.getZGVArray();
var neededStudentsCount = aqr.selectedStudienplatz.apz - aqr.getAcceptedCount();
var perZGV = parseInt(neededStudentsCount / zgvs.length);
var perZGV = aqr.studenten.length;
var zgvElems = [];
var allApplicants = [];
aqr.studenten.forEach(function(j)
{
if(j.applicant)
allApplicants.push(j);
});
var applicantCount = aqr.selectedStudienplatz.apz;
if(applicantCount > allApplicants.length)
applicantCount = allApplicants.length;
zgvs.forEach(function(i)
{
zgvElems.push({name:i,needed:perZGV});
var applicantsFromZGV = [];
aqr.studenten.forEach(function(j)
{
if(j.applicant && j.bezeichnung === i)
applicantsFromZGV.push(j);
});
// calculate the aliquote reduction for every ZGV
var percent = applicantsFromZGV.length / allApplicants.length * 100;
var neededFromZGV = (applicantCount / 100 * percent) - aqr.getAcceptedCount(i);
if(neededFromZGV < 0)
neededFromZGV = 0;
zgvElems.push({name:i, needed:neededFromZGV, percent:percent, accepted: aqr.getAcceptedCount(i), neededSum: (applicantCount / 100 * percent)});
});
var residual = perZGV * zgvs.length;
aqr.zgvElems = JSON.parse(JSON.stringify(zgvElems));
// calculate the already distributed students
var residual = 0;
zgvElems.forEach(function(i)
{
residual += i.needed;
});
// calculate the difference from needed to already distributed
var resDiff = neededStudentsCount - residual;
// distribute the remaining places on the present ZGVs
while(resDiff > 0)
while(resDiff > 0 && zgvElems.length > 0/*if there are no zgvs(to prevent a deadlock)*/)
{
zgvElems.forEach(function(i)
{
@@ -276,7 +319,7 @@
{
var beginNeeded = needed;
//distribute the remainig applicants to the present ZGVs
//distribute the applicants to the present ZGVs
for(var i=0; i < zgvElems.length; i++)
{
for(var j in aqr.studenten)
@@ -284,9 +327,11 @@
if(
aqr.studenten[j].laststatus!='Abgewiesener'
&& aqr.studenten[j].laststatus!='Abbrecher'
&& zgvElems[i].needed > 0
&& parseInt(zgvElems[i].needed) > 0
&& aqr.studenten[j].bezeichnung == zgvElems[i].name
&& !aqr.studenten[j].seqPlace)
&& !aqr.studenten[j].seqPlace
&& !aqr.studenten[j].selected
&& aqr.studenten[j].applicant)
{
aqr.setSequence(aqr.studenten[j]);
zgvElems[i].needed --;
@@ -303,7 +348,7 @@
//distribute the rest of the applicants, WITH a ZGV group
for(var j in aqr.studenten)
{
if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung)
if(!aqr.studenten[j].selected && aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant)
{
aqr.setSequence(aqr.studenten[j]);
if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber'))
@@ -316,7 +361,7 @@
//distribute the rest of the applicants, WITHOUT a ZGV group
for(var j in aqr.studenten)
{
if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung)
if(!aqr.studenten[j].selected && !aqr.studenten[j].bezeichnung && aqr.studenten[j].applicant)
{
aqr.setSequence(aqr.studenten[j]);
if(needed > 0 && (aqr.studenten[j].laststatus=='Wartender'||aqr.studenten[j].laststatus=='Bewerber'))
@@ -403,6 +448,7 @@
<th ts-criteria="seqPlace|parseInt" ts-default="ascending">Reihung</th>
<th ts-criteria="rt_gesamtpunkte|parseFloat" ts-default="ascending">RT Gesamt</th>
<th ts-criteria="interviewbogen">Interviewbogen</th>
<th ts-criteria="anmerkung">Anmerkung/Prio</th>
<th ts-criteria="laststatus">Status</th>
<th ng-if="aqr.selectedStudienplatz.apz">{{aqr.choosenStuds}}/{{aqr.selectedStudienplatz.apz}}</th>
<th ng-if="!aqr.selectedStudienplatz.apz">{{aqr.choosenStuds}}/Keine APZ</th>
@@ -418,6 +464,7 @@
<td>{{stud.seqPlace}}</td>
<td>{{stud.rt_gesamtpunkte}}</td>
<td>{{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}</td>
<td>{{stud.anmerkung}}</td>
<td>{{stud.laststatus}}</td>
<td>
<input ng-if="stud.applicant" type="checkbox" ng-model="stud.selected"/>
@@ -429,8 +476,36 @@
<input style="float:right;" type="button" value="Annehmen" ng-click="aqr.submit()"/>
<input style="float:right;" type="button" value="Download" ng-click="aqr.download()"/>
<h3>ZGV Informationen</h3>
<table ts-wrapper>
<thead>
<tr>
<th ts-criteria="name" ts-default="ascending">Name</th>
<th ts-criteria="percent">Prozent</th>
<th ts-criteria="neededSum">Insgesamt benötigt</th>
<th ts-criteria="accepted">Bereits aufgenommen</th>
<th ts-criteria="needed">Noch benötigte Personen</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="zgv in aqr.zgvElems" ts-repeat ts-hide-no-data>
<td>{{zgv.name}}</td>
<td>{{zgv.percent | number: 2}}%</td>
<td>{{zgv.neededSum | parseInt}}</td>
<td>{{zgv.accepted}}</td>
<td>{{zgv.needed | parseInt}}</td>
</tr>
<tr>
<th>Gesamt</th>
<th></th>
<th>{{aqr.selectedStudienplatz.apz}}</th>
<th>{{aqr.getAcceptedCount()}}</th>
<th>{{aqr.selectedStudienplatz.apz - aqr.getAcceptedCount()}}</th>
</tr>
</tbody>
</table>
<h3>Bereits aufgenommene</h3>
<h3>Restliche Studenten</h3>
<table ts-wrapper>
<thead>
<tr>
@@ -441,6 +516,7 @@
<th ts-criteria="seqPlace|parseInt" ts-default="ascending">Reihung</th>
<th ts-criteria="rt_gesamtpunkte|parseFloat">RT Gesamt</th>
<th ts-criteria="interviewbogen">Interviewbogen</th>
<th ts-criteria="anmerkung">Anmerkung/Prio</th>
<th ts-criteria="laststatus">Status</th>
<th></th>
</tr>
@@ -455,6 +531,7 @@
<td>{{stud.seqPlace}}</td>
<td>{{stud.rt_gesamtpunkte}}</td>
<td>{{stud.interviewbogen?'vorhanden':'nicht vorhanden'}}</td>
<td>{{stud.anmerkung}}</td>
<td>{{stud.laststatus}}</td>
<td>
<input ng-if="stud.applicant" type="checkbox" ng-model="stud.selected"/>