Anwesenheiten koennen bei Studierenden direkt im FAS geaendert werden

This commit is contained in:
oesi
2016-01-12 14:25:24 +01:00
parent 36b76ad34f
commit 05a883a9e9
5 changed files with 210 additions and 1 deletions
+36
View File
@@ -40,6 +40,7 @@ require_once('../include/variable.class.php');
require_once('../include/benutzerfunktion.class.php');
require_once('../include/studiensemester.class.php');
require_once('../include/fotostatus.class.php');
require_once('../include/anwesenheit.class.php');
$user = get_uid();
@@ -653,6 +654,41 @@ if(!$error)
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='anwesenheittoggle')
{
if(!$rechte->isBerechtigt('student/anwesenheit'))
{
$return = false;
$errormsg = 'Sie haben keine Berechtigung fuer diese Aktion';
$data = '';
$error = true;
}
else
{
if(isset($_POST['student_uid']) && isset($_POST['lehreinheit_id']) && isset($_POST['datum']))
{
$student_uid = $_POST['student_uid'];
$lehreinheit_id = $_POST['lehreinheit_id'];
$datum = $_POST['datum'];
$anwesenheit = new anwesenheit();
if($anwesenheit->AnwesenheitToggle($lehreinheit_id, $datum, $student_uid))
{
$return = true;
$errormsg = "";
}
else
{
$return = false;
$errormsg = $anwesenheit->errormsg;
}
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
}
else
{
$return = false;
+49
View File
@@ -118,3 +118,52 @@ function TermineExport()
var url = 'statistik/termine.xls.php?lehreinheit_id='+TermineLehreinheitID+'&lehrveranstaltung_id='+TermineLehrveranstaltungID+'&mitarbeiter_uid='+TermineMitarbeiterUID+'&student_uid='+TermineStudentUID+'&db_stpl_table='+TermineStundenplanTable;
window.open(url);
}
function TermineToggleAnwesenheit()
{
if(TermineStudentUID=='')
{
alert('Anwesenheit kann nur in der Studierendenansicht geaendert werden');
return;
}
if(TermineStundenplanTable!='stundenplan')
{
alert('Bitte wechseln Sie auf die Stundenplan Tabelle. Anhand der StundenplanDEV duerfen keine Anwesenheiten geaendert werden.');
return;
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('termine-tree');
if (tree.currentIndex==-1) return;
//Ausgewaehlte Nr holen
var datum = getTreeCellText(tree, 'termine-treecol-datum_iso', tree.currentIndex);
var lehreinheit_id = getTreeCellText(tree, 'termine-treecol-lehreinheit_id', tree.currentIndex);
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'anwesenheittoggle');
req.add('datum', datum);
req.add('lehreinheit_id', lehreinheit_id);
req.add('student_uid', TermineStudentUID);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
TermineLoadTree();
SetStatusBarText('Daten wurden gespeichert');
}
}
+12
View File
@@ -47,6 +47,11 @@ $student_uid = filter_input(INPUT_GET,'student_uid');
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/phpRequest.js.php" />
<vbox flex="1">
<popupset>
<menupopup id="termine-tree-popup">
<menuitem label="Anwesenheit umschalten" oncommand="TermineToggleAnwesenheit();" id="termine-tree-popup-toggle-anwesenheit" hidden="false"/>
</menupopup>
</popupset>
<groupbox id="termine-groupbox-termine" flex="1">
<caption label="Termine" />
<vbox flex="1">
@@ -57,6 +62,7 @@ $student_uid = filter_input(INPUT_GET,'student_uid');
<tree id="termine-tree" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/termine"
persist="hidden, height"
context="termine-tree-popup"
>
<treecols>
<treecol id="termine-treecol-datum" label="Datum" flex="1" hidden="false"
@@ -103,6 +109,11 @@ $student_uid = filter_input(INPUT_GET,'student_uid');
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="termine-treecol-lehreinheit_id" label="LehreinheitID" flex="1" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/termine/rdf#lehreinheit_id" onclick="termineTreeSort()"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
@@ -121,6 +132,7 @@ $student_uid = filter_input(INPUT_GET,'student_uid');
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#lehrfach" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#anwesend" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" />
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#lehreinheit_id" />
</treerow>
</treeitem>
</treechildren>
+112
View File
@@ -435,6 +435,38 @@ class anwesenheit extends basis_db
}
}
/**
* Prueft ob Anwesenheiten erfasst wurden
* @param $lehreinheit_id ID der Lehreinheit
* @param $datum Datum
* @param $uid UID des Studierenden
* @return boolean true wenn vorhanden, sonst false
*/
public function AnwesenheitEntryExists($lehreinheit_id, $datum, $uid=null)
{
$qry = "SELECT
1
FROM
campus.tbl_anwesenheit
WHERE
lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
AND datum=".$this->db_add_param($datum)."
AND uid=".$this->db_add_param($uid);
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result)>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt die Anwesenheiten in Prozent von Studierenden bei Lehrveranstaltungen
* Wenn die StudentUID uebergeben wird, werden alle Lehrveranstaltungen zu denen der Studierenden zugeteilt ist inkl Prozent der Anwesenheit
@@ -524,4 +556,84 @@ class anwesenheit extends basis_db
return false;
}
}
/**
* Aendert die bestehende Anwesenheit
* @param $lehreinheit_id ID der Lehreinheit
* @param $datum Datum
* @param $uid UID des Studierenden
* @return boolean true ok, sonst false
*/
public function AnwesenheitToggle($lehreinheit_id, $datum, $uid)
{
if($this->AnwesenheitEntryExists($lehreinheit_id, $datum, $uid))
{
$qry = "UPDATE
campus.tbl_anwesenheit
SET anwesend= NOT anwesend
WHERE
lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
AND datum=".$this->db_add_param($datum)."
AND uid=".$this->db_add_param($uid);
if($result = $this->db_query($qry))
{
if($this->db_affected_rows($result)>0)
return true;
else
{
$this->errormsg='Anwesenheitsliste wurde noch nicht erfasst';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
// Anwesenheitsliste wurde noch nicht erfasst. Eintrag neu anlegen
// Einheiten ermitteln
$qry = "SELECT
distinct stunde
FROM
lehre.tbl_stundenplan
WHERE
lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
AND datum=".$this->db_add_param($datum);
if($result = $this->db_query($qry))
{
if($anzahl = $this->db_num_rows($result))
{
$einheiten = $anzahl;
}
}
if($einheiten>0)
{
$this->lehreinheit_id=$lehreinheit_id;
$this->datum = $datum;
$this->uid = $uid;
$this->anwesend=true;
$this->new=true;
$this->einheiten=$einheiten;
if($this->save())
return true;
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
return true;
}
}
else
{
$this->errormsg = 'Anzahl der Einheiten fuer diesen Tag konnte nicht ermittelt werden';
return false;
}
}
}
}
+1 -1
View File
@@ -204,7 +204,7 @@ if($work=='save')
// Wenn der Eintrag bereits exisitiert aber kein Update durchgefuehrt wird, dann wird der Eintrag uebersprungen
// da der Eintrag sonst doppelt vorhanden ist.
// zB bei Reload der Seite oder schliessen und erneuten oeffnen des Browsers und Absenden der POST Daten
if($anwesenheit->AnwesenheitExists($_POST['lehreinheit_id'], $_POST['datum'], $user))
if($anwesenheit->AnwesenheitEntryExists($_POST['lehreinheit_id'], $_POST['datum'], $user))
{
echo $anwesenheit->convert_html_chars($user)." wird übersprungen da der Eintrag bereits erfasst wurde<br>";
continue;