- Incoming werden beim Anlegen in Gruppe 0I verschoben

- Ab/Unterbrecher werden bei check_studentlehrverband in 0I verschoben
- letzter Status kann nicht mehr geloescht werden
- Fehlermeldung bei Filter wenn kein Stg ausgewaehlt ist
- Tempus: neuer Menuepunkt Extras->Kollisionstudent
This commit is contained in:
Andreas Österreicher
2008-01-14 15:38:11 +00:00
parent cb5ce66573
commit ed4b2c8695
13 changed files with 260 additions and 33 deletions
+15
View File
@@ -417,6 +417,21 @@ Studenten<br>
<hr>
<h2>Erledigte Anforderungen</h2>
<ul>
<li>Beim Filtern der Studentenliste erscheint nun eine Fehlermeldung
wenn kein Studiengang markiert ist<br>
14.01.2007 oesi<br>
<br>
</li>
<li>Studiensemester ist jetzt in der Statusleiste mit Pfeiltasten
&auml;nderbar.<br>
14.01.2008 oesi<br>
<br>
</li>
<li>Incoming werden beim Anlegen automatisch in die Gruppe "0I"
verschoben<br>
14.01.2008 oesi<br>
<br>
</li>
<li>Tippfehler in Diplomasupplement korrigiert<br>
07.01.2008<br>
<br>
+8 -8
View File
@@ -103,10 +103,8 @@ wenn "Raumtyp" und "Raumtyp alternativ" belegt sind<br>
</td>
</tr>
<tr class="liste1">
<td>Eintragen von Anmerkungen zu einzelnen (verplanten)
Lehreinheiten direkt im Tempus<br>
</td>
<td style="text-align: center;">med</td>
<td>Lektor&auml;nderung durch Drag&amp;Drop in Tempus einbauen </td>
<td style="text-align: center;">low</td>
<td align="center">?<br>
</td>
</tr>
@@ -191,11 +189,11 @@ Lektorenansicht Stunden aus anderen Studieng&auml;ngen verplanen)<br>
</td>
</tr>
<tr class="liste1">
<td>Lektor&auml;nderung durch Drag&amp;Drop in Tempus einbauen<br>
<td><br>
</td>
<td align="center">low<br>
<td align="center"><br>
</td>
<td align="center">?<br>
<td align="center"><br>
</td>
</tr>
<tr class="liste0">
@@ -524,7 +522,9 @@ ist fehlerhaft<br>
<hr>
<h2>Erledigte Anforderungen</h2>
<ul>
<li>Text<br>
<li>Eintragen von Anmerkungen zu einzelnen (verplanten)
Lehreinheiten direkt im Tempus<br>
12.01.2007<br>
<br>
</li>
</ul>
+24 -2
View File
@@ -67,12 +67,20 @@ if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz'))
$data = '';
$error = true;
}
function check_kollision($lehreinheit_id, $mitarbeiter_uid, $mitarbeiter_uid_old)
{
return true;
}
if(!$error)
{
if(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_save')
{
loadVariables($conn, $user);
//Lehreinheitmitarbeiter Zuteilung
$qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, fachbereich_kurzbz
FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrfach
@@ -134,7 +142,21 @@ if(!$error)
$lem->new=false;
if(!$ignore_kollision && $lem->mitarbeiter_uid!=$lem->mitarbeiter_uid_old)
{
//check kollision
if(check_kollision($lem->lehreinheit_id, $lem->mitarbeiter_uid, $lem->mitarbeiter_uid_old))
{
//Update im Stundenplan
}
else
{
$return = false;
$errormsg = 'Fehler: Die Aenderung des Lektors fuehrt zu einer Kollision im Stundenplan';
$error = true;
}
}
if(!$error)
{
if($lem->save())
@@ -359,7 +359,10 @@ function InteressentDokumenteFilter()
//Wenn nichts markiert wurde -> beenden
if(tree.currentIndex==-1)
{
alert('Bitte einen Studiengang/Semester waehlen');
return;
}
// Progressmeter starten. Ab jetzt keine 'return's mehr.
document.getElementById('statusbar-progressmeter').setAttribute('mode','undetermined');
+41 -12
View File
@@ -584,32 +584,61 @@ if(!$error)
}
else
{
$rolle = new prestudent($conn, null, true);
if($rolle->load_rolle($_POST['prestudent_id'],$_POST['rolle_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudentrolle WHERE prestudent_id='".addslashes($_POST['prestudent_id'])."'";
if($result = pg_query($conn, $qry))
{
if($rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') || $rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
if($row = pg_fetch_object($result))
{
if($rolle->delete_rolle($_POST['prestudent_id'],$_POST['rolle_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
if($row->anzahl<=1)
{
$return = true;
$return = false;
$errormsg = 'Die letzte Rolle darf nicht geloescht werden';
$error = true;
}
}
else
{
$return = false;
$errormsg = 'Fehler beim Ermitteln der Rollen';
$error = true;
}
}
else
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Ermitteln der Rollen';
}
if(!$error)
{
$rolle = new prestudent($conn, null, true);
if($rolle->load_rolle($_POST['prestudent_id'],$_POST['rolle_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
{
if($rechte->isBerechtigt('admin', $_POST['studiengang_kz'], 'suid') || $rechte->isBerechtigt('assistenz', $_POST['studiengang_kz'], 'suid'))
{
if($rolle->delete_rolle($_POST['prestudent_id'],$_POST['rolle_kurzbz'],$_POST['studiensemester_kurzbz'], $_POST['ausbildungssemester']))
{
$return = true;
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
$errormsg = 'Sie haben keine Berechtigung zum Loeschen dieser Rolle:'.$_POST['studiengang_kz'];
}
}
else
{
$return = false;
$errormsg = 'Sie haben keine Berechtigung zum Loeschen dieser Rolle:'.$_POST['studiengang_kz'];
$errormsg = $rolle->errormsg;
}
}
else
{
$return = false;
$errormsg = $rolle->errormsg;
}
}
}
else
+3
View File
@@ -1945,7 +1945,10 @@ function StudentKontoFilterStudenten(filter)
//Wenn nichts markiert wurde -> beenden
if(tree.currentIndex==-1)
{
alert('Bitte zuerst einen Studiengang/Semester waehlen');
return;
}
// Progressmeter starten. Ab jetzt keine 'return's mehr.
document.getElementById('statusbar-progressmeter').setAttribute('mode','undetermined');
+8
View File
@@ -321,4 +321,12 @@ function UnDo(log_id, bezeichnung)
function HelpOpenToDo()
{
window.open('ToDo_Tempus.html','ToDo');
}
// ****
// * Zeigt das Fenster zur Kollisionspruefung auf Studentenebene an
// ****
function KollisionStudentShow()
{
window.open('<?php echo APP_ROOT;?>vilesci/lehre/stpl_benutzer_kollision_frameset.html', 'Kollision Student');
}
+11
View File
@@ -56,6 +56,7 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
<command id="menu-prefs-ignore_kollision:command" oncommand="variableChange('ignore_kollision','menu-prefs-ignore_kollision');"/>
<command id="menu-prefs-ignore_zeitsperre:command" oncommand="variableChange('ignore_zeitsperre','menu-prefs-ignore_zeitsperre');"/>
<command id="menu-prefs-ignore_reservierung:command" oncommand="variableChange('ignore_reservierung','menu-prefs-ignore_reservierung');"/>
<command id="menu-extras-kollisionstudent:command" oncommand="KollisionStudentShow();"/>
<command id="menu-help-todo:command" oncommand="HelpOpenToDo();"/>
</commandset>
@@ -173,6 +174,16 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
?>
</menupopup>
</menu>
<menu id="menu-extras" label="&menu-extras.label;" accesskey="&menu-extras.accesskey;">
<menupopup id="menu-extras-popup">
<menuitem
id = "menu-extras-kollisionstudent"
key = "menu-extras-kollisionstudent:key"
label = "&menu-extras-kollisionstudent.label;"
command = "menu-extras-kollisionstudent:command"
accesskey = "&menu-extras-kollisionstudent.accesskey;"/>
</menupopup>
</menu>
<menu id="menu-help" label="&menu-help.label;" accesskey="&menu-help.accesskey;">
<menupopup id="menu-about-popup">
<menuitem
+7 -2
View File
@@ -723,7 +723,7 @@ class prestudent extends person
}
}
function getLastStatus($prestudent_id)
function getLastStatus($prestudent_id, $studiensemester_kurzbz='')
{
if($prestudent_id=='' || !is_numeric($prestudent_id))
{
@@ -731,7 +731,12 @@ class prestudent extends person
return false;
}
$qry = "SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$prestudent_id' ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1";
$qry = "SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$prestudent_id'";
if($studiensemester_kurzbz!='')
$qry.=" AND studiensemester_kurzbz='$studiensemester_kurzbz'";
$qry.=" ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
+2
View File
@@ -31,6 +31,8 @@ class student extends benutzer
var $verband;
var $gruppe;
var $ext_id_student;
var $studiensemester_kurzbz;
// *************************************************************************
// * Konstruktor - Uebergibt die Connection und laedt optional einen Studenten
+7
View File
@@ -53,3 +53,10 @@
<!ENTITY menu-help-todo.key "T">
<!ENTITY menu-help-todo.label "ToDo">
<!ENTITY menu-help-todo.accesskey "T">
<!ENTITY menu-extras.label "Extras">
<!ENTITY menu-extras.accesskey "E">
<!ENTITY menu-extras-kollisionstudent.key "K">
<!ENTITY menu-extras-kollisionstudent.label "Kollision Student">
<!ENTITY menu-extras-kollisionstudent.accesskey "K">
+104 -1
View File
@@ -8,6 +8,11 @@
// **********************************
require_once('../vilesci/config.inc.php');
require_once('../include/studiensemester.class.php');
require_once('../include/person.class.php');
require_once('../include/benutzer.class.php');
require_once('../include/student.class.php');
require_once('../include/prestudent.class.php');
require_once('../include/lehrverband.class.php');
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Hestellen der DB Verbindung');
@@ -18,6 +23,8 @@ $anzahl_gruppenaenderung=0;
$anzahl_gruppenaenderung_fehler=0;
$text='';
$statistik ='';
$abunterbrecher_verschoben_error=0;
$abunterbrecher_verschoben=0;
// ****
// * Bei Studenten mit fehlener Prestudent_id wird die passende id ermittelt und Eingetragen
@@ -68,6 +75,100 @@ if($result = pg_query($conn, $qry))
}
}
// *****
// * Gruppenzuteilung von Abbrechern und Unterbrechern korrigieren.
// * Abbrecher werden in die Gruppe 0A verschoben
// * Unterbrecher in die Gruppe 0B
// *****
$text.="\n\nKorrigiere Gruppenzuteilungen von Ab-/Unterbrechern\n";
//Alle Ab-/Unterbrecher holen die nicht im 0. Semester sind
$qry = "SELECT
student_uid,
tbl_student.studiengang_kz,
tbl_prestudent.prestudent_id,
rolle_kurzbz,
studiensemester_kurzbz
FROM
public.tbl_student,
public.tbl_prestudent,
public.tbl_prestudentrolle
WHERE
tbl_student.prestudent_id=tbl_prestudent.prestudent_id AND
tbl_prestudent.prestudent_id=tbl_prestudentrolle.prestudent_id AND
(
tbl_prestudentrolle.rolle_kurzbz='Unterbrecher' OR
tbl_prestudentrolle.rolle_kurzbz='Abbrecher'
)
AND
EXISTS (SELECT
*
FROM
public.tbl_studentlehrverband
WHERE
student_uid=tbl_student.student_uid AND
studiensemester_kurzbz=tbl_prestudentrolle.studiensemester_kurzbz AND
semester<>0
)
";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
//Eintrag nur korrigieren wenn der Abbrecher/Unterbrecher Status der letzte in diesem Studiensemester ist
$prestd = new prestudent($conn);
$prestd->getLastStatus($row->prestudent_id, $row->studiensemester_kurzbz);
if($prestd->rolle_kurzbz=='Unterbrecher' || $prestd->rolle_kurzbz=='Abbrecher')
{
//Studentlehrverbandeintrag aktualisieren
$student = new student($conn);
if($student->studentlehrverband_exists($row->student_uid, $row->studiensemester_kurzbz))
$student->new = false;
else
{
$student->new = true;
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = 'auto';
}
$student->uid = $row->student_uid;
$student->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$student->studiengang_kz = $row->studiengang_kz;
$student->semester = '0';
$student->verband = ($prestd->rolle_kurzbz=='Unterbrecher'?'B':'A');
$student->gruppe = ' ';
$student->updateamum = date('Y-m-d H:i:s');
$student->updatevon = 'auto';
//Pruefen ob der Lehrverband exisitert, wenn nicht dann wird er angelegt
$lehrverband = new lehrverband($conn);
if(!$lehrverband->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
{
$lehrverband->studiengang_kz = $student->studiengang_kz;
$lehrverband->semester = $student->semester;
$lehrverband->verband = $student->verband;
$lehrverband->gruppe = $student->gruppe;
$lehrverband->bezeichnung = ($student->verband=='A'?'Abbrecher':'Unterbrecher');
$lehrverband->save(true);
}
if($student->save_studentlehrverband())
{
$text.="Student $student->uid wurde im $row->studiensemester_kurzbz in die Gruppe $student->semester$student->verband verschoben\n";
$abunterbrecher_verschoben++;
}
else
{
$text.="Fehler biem Speichern des Lehrverbandeintrages bei $student->student_uid:".$student->errormsg."\n";
$abunterbrecher_verschoben_error++;
}
}
}
}
// *****
// * Unterschiedliche Gruppenzuteilungen in tbl_studentlehrverband - tbl_student korrigieren
// *****
@@ -111,7 +212,7 @@ if($result = pg_query($conn, $qry))
}
else
{
$text.="Fehler beim aendern der Gruppe: ".pg_last_error($conn)."\n";
$text.="Fehler beim Aendern der Gruppe: ".pg_last_error($conn)."\n";
$anzahl_gruppenaenderung_fehler++;
}
}
@@ -121,6 +222,8 @@ else
$statistik .= "Prestudent_id wurde bei $anzahl_neue_prestudent_id Studenten korrigiert\n";
$statistik .= "$anzahl_fehler_prestudent Fehler sind bei der Korrektur der Prestudent_id aufgetreten\n";
$statistik .= "$abunterbrecher_verschoben Studenten wurden ins 0. Semester verschoben\n ";
$statistik .= "$abunterbrecher_verschoben_error Fehler sind beim Verschieben aufgetreten\n ";
$statistik .= "Bei $anzahl_gruppenaenderung Studenten wurde die Gruppenzuordnung korrigiert\n";
$statistik .= "$anzahl_gruppenaenderung_fehler Fehler sind bei der Korrektur der Gruppenzuordnung aufgetreten\n";
$statistik .= "\n\n";
@@ -33,6 +33,7 @@ require_once('../../../include/studiensemester.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/lehrverband.class.php');
if(!$conn=pg_pconnect(CONN_STRING))
die('Fehler beim Herstellen der DB Connection');
@@ -94,6 +95,11 @@ function AnredeChange()
if(anrede=='Frau')
document.getElementById('geschlecht').value='w';
}
function cmdIncoming()
{
document.getElementById('ausbildungssemester').disabled=document.getElementById('incoming').checked;
}
</script>
</head>
<body>
@@ -131,7 +137,7 @@ if($studiengang_kz=='' && isset($_GET['studiengang_kz']))
$person_id = (isset($_REQUEST['person_id'])?$_REQUEST['person_id']:'');
$ueberschreiben = (isset($_REQUEST['ueberschreiben'])?$_REQUEST['ueberschreiben']:'');
$studiensemester_kurzbz = (isset($_REQUEST['studiensemester_kurzbz'])?$_REQUEST['studiensemester_kurzbz']:'');
$ausbildungssemester = (isset($_REQUEST['ausbildungssemester'])?$_REQUEST['ausbildungssemester']:'');
$ausbildungssemester = (isset($_REQUEST['ausbildungssemester'])?$_REQUEST['ausbildungssemester']:'0');
$incoming = (isset($_REQUEST['incoming'])?true:false);
//end Parameter
$geburtsdatum_error=false;
@@ -490,11 +496,24 @@ if(isset($_POST['save']))
$student->matrikelnr = $matrikelnr;
$student->prestudent_id = $prestudent->prestudent_id;
$student->studiengang_kz = $studiengang_kz;
$student->semester = $ausbildungssemester;
$student->verband = ' ';
$student->semester = '0';
$student->verband = 'I';
$student->gruppe = ' ';
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = $user;
$lvb = new lehrverband($conn);
if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
{
$lvb->studiengang_kz = $student->studiengang_kz;
$lvb->semester = $student->semester;
$lvb->verband = $student->verband;
$lvb->gruppe = $student->gruppe;
$lvb->bezeichnung = 'Incoming';
$lvb->aktiv = true;
$lvb->save(true);
}
if($student->save(true, false))
{
@@ -503,8 +522,8 @@ if(isset($_POST['save']))
$studentlehrverband->uid = $uid;
$studentlehrverband->studiensemester_kurzbz = $studiensemester_kurzbz;
$studentlehrverband->studiengang_kz = $studiengang_kz;
$studentlehrverband->semester = $ausbildungssemester;
$studentlehrverband->verband = ' ';
$studentlehrverband->semester = '0';
$studentlehrverband->verband = 'I';
$studentlehrverband->gruppe = ' ';
$studentlehrverband->insertamum = date('Y-m-d H:i:s');
$studentlehrverband->insertvon = $user;
@@ -531,7 +550,7 @@ if(isset($_POST['save']))
if(!$error)
{
pg_query($conn, 'COMMIT');
die("<b>".($incoming?'Incomming':'Interessent')." $vorname $nachname wurde erfolgreich angelegt</b><br><br><a href='interessentenimport.php?studiengang_kz=$studiengang_kz'>Neue Person Anlegen</a>");
die("<b>".($incoming?'Incoming':'Interessent')." $vorname $nachname wurde erfolgreich angelegt</b><br><br><a href='interessentenimport.php?studiengang_kz=$studiengang_kz'>Neue Person Anlegen</a>");
}
else
{
@@ -627,12 +646,12 @@ foreach ($stsem->studiensemester as $row)
echo '<OPTION value="'.$row->studiensemester_kurzbz.'" '.($row->studiensemester_kurzbz==$studiensemester_kurzbz?'selected':'').'>'.$row->studiensemester_kurzbz.'</OPTION>';
echo '</SELECT>';
echo '</td></tr>';
echo '<tr><td>Ausbildungssemester *</td><td><SELECT id="ausbildungssemester" name="ausbildungssemester">';
echo '<tr><td>Ausbildungssemester *</td><td><SELECT id="ausbildungssemester" name="ausbildungssemester" '.($incoming?'disabled':'').'>';
for ($i=1;$i<9;$i++)
echo '<OPTION value="'.$i.'" '.($i==$ausbildungssemester?'selected':'').'>'.$i.'. Semester</OPTION>';
echo '</SELECT>';
echo '</td></tr>';
echo '<tr><td>Incoming:</td><td><input type="checkbox" name="incoming" '.($incoming?'checked':'').' /></td></tr>';
echo '<tr><td>Incoming:</td><td><input type="checkbox" id="incoming" name="incoming" '.($incoming?'checked':'').' onclick="cmdIncoming()" /></td></tr>';
echo '<tr><tr><td></td><td>';
if(($geburtsdatum=='' && $vorname=='' && $nachname=='') || $geburtsdatum_error)