mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Terminliste und Export bei Studierenden, Mitarbeitern und Lehrveranstaltungen/Lehreinheiten
This commit is contained in:
@@ -759,6 +759,12 @@ function LeAuswahl()
|
||||
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=false;
|
||||
LvAngebotLoad(lehrveranstaltung_id);
|
||||
|
||||
if(document.getElementById('lehrveranstaltung-tabs').selectedItem==document.getElementById('lehrveranstaltung-tab-termine'))
|
||||
{
|
||||
// Termine Laden
|
||||
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehrveranstaltung_id='+lehrveranstaltung_id);
|
||||
}
|
||||
|
||||
LeDetailDisableFields(true);
|
||||
//Details zuruecksetzen
|
||||
LeDetailReset();
|
||||
@@ -779,6 +785,12 @@ function LeAuswahl()
|
||||
//LV-Angebot Tab ausblenden
|
||||
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=true;
|
||||
|
||||
if(document.getElementById('lehrveranstaltung-tabs').selectedItem==document.getElementById('lehrveranstaltung-tab-termine'))
|
||||
{
|
||||
// Termine Laden
|
||||
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehreinheit_id='+lehreinheit_id);
|
||||
}
|
||||
|
||||
document.getElementById('lehrveranstaltung-toolbar-neu').disabled=true;
|
||||
document.getElementById('lehrveranstaltung-toolbar-del').disabled=false;
|
||||
|
||||
@@ -2327,3 +2339,29 @@ function LvAngebotNew()
|
||||
LvAngebotReset();
|
||||
LvAngebotGruppeTreeRefresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Termine einer Lehrveranstaltung/Lehreinheit wenn auf den Tab gewechselt wird
|
||||
*/
|
||||
function LehrveranstaltungTermineIFrameLoad()
|
||||
{
|
||||
var tree = document.getElementById('lehrveranstaltung-tree');
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
return;
|
||||
try
|
||||
{
|
||||
//Ausgewaehlte Lehreinheit holen
|
||||
var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehreinheit_id"] : "lehrveranstaltung-treecol-lehreinheit_id";
|
||||
var lehreinheit_id=tree.view.getCellText(tree.currentIndex,col);
|
||||
var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehrveranstaltung_id"] : "lehrveranstaltung-treecol-lehrveranstaltung_id";
|
||||
var lehrveranstaltung_id=tree.view.getCellText(tree.currentIndex,col);
|
||||
|
||||
if(lehreinheit_id!='')
|
||||
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehreinheit_id='+lehreinheit_id);
|
||||
else
|
||||
document.getElementById('lehrveranstaltung-termine').setAttribute('src','termine.xul.php?lehrveranstaltung_id='+lehrveranstaltung_id);
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
}
|
||||
|
||||
@@ -248,6 +248,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
|
||||
<tab id="lehrveranstaltung-tab-noten" label="Noten" />
|
||||
<tab id="lehrveranstaltung-tab-notizen" label="Notizen" />
|
||||
<tab id="lehrveranstaltung-tab-lvangebot" label="LV-Angebot" />
|
||||
<tab id="lehrveranstaltung-tab-termine" label="Termine" onclick="LehrveranstaltungTermineIFrameLoad()"/>
|
||||
</tabs>
|
||||
<tabpanels id="lehrveranstaltung-tabpanels-main" flex="1">
|
||||
<vbox id="lehrveranstaltung-detail" />
|
||||
@@ -257,6 +258,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
|
||||
<box class="Notiz" flex="1" id="lehrveranstaltung-box-notizen"/>
|
||||
</vbox>
|
||||
<vbox id="lehrveranstaltung-lvangebot" />
|
||||
<iframe id="lehrveranstaltung-termine" src="" style="margin-top:10px;" />
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
</vbox>
|
||||
|
||||
@@ -601,6 +601,13 @@ function MitarbeiterAuswahl()
|
||||
// ***** BETRIEBSMITTEL *****
|
||||
document.getElementById('mitarbeiter-betriebsmittel').setAttribute('src','betriebsmitteloverlay.xul.php?person_id='+person_id+'&uid='+uid);
|
||||
|
||||
|
||||
if(document.getElementById('mitarbeiter-tabs').selectedItem==document.getElementById('mitarbeiter-tab-termine'))
|
||||
{
|
||||
// ***** Termine *****
|
||||
document.getElementById('mitarbeiter-termine').setAttribute('src','termine.xul.php?mitarbeiter_uid='+uid);
|
||||
}
|
||||
|
||||
// **** VERWENDUNG ****
|
||||
verwendungtree = document.getElementById('mitarbeiter-tree-verwendung');
|
||||
url='<?php echo APP_ROOT;?>rdf/bisverwendung.rdf.php?uid='+uid+"&"+gettimestamp();
|
||||
@@ -1885,3 +1892,13 @@ function MitarbeiterShowPersonendetails()
|
||||
person_id = document.getElementById('mitarbeiter-detail-textbox-person_id').value;
|
||||
window.open('<?php echo APP_ROOT ?>vilesci/personen/personendetails.php?id='+person_id,'Personendetails','');
|
||||
}
|
||||
|
||||
function MitarbeiterTermineIFrameLoad()
|
||||
{
|
||||
uid = document.getElementById('mitarbeiter-detail-textbox-uid').value;
|
||||
if(uid!='')
|
||||
{
|
||||
url = 'termine.xul.php?mitarbeiter_uid='+uid+'&ts='+gettimestamp();
|
||||
document.getElementById('mitarbeiter-termine').setAttribute('src',url);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,6 +258,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
|
||||
echo '<tab id="mitarbeiter-tab-vertrag" label="Verträge" />';
|
||||
|
||||
?>
|
||||
<tab id="mitarbeiter-tab-termine" label="Termine" onclick="MitarbeiterTermineIFrameLoad()" />
|
||||
</tabs>
|
||||
<tabpanels id="mitarbeiter-tabpanels-main" flex="1">
|
||||
<vbox id="mitarbeiter-detail-stammdaten" style="margin-top:10px;" />
|
||||
@@ -271,6 +272,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
|
||||
if($rechte->isBerechtigt('vertrag/mitarbeiter'))
|
||||
echo '<vbox id="mitarbeiter-vertrag" style="margin-top:10px;" />';
|
||||
?>
|
||||
<iframe id="mitarbeiter-termine" src="" style="margin-top:10px;" />
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
</vbox>
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
*/
|
||||
/**
|
||||
* Exportiert die Termine von Lehreinheiten/Lehrveranstaltung/Studierenden/Mitarbeitern
|
||||
*/
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
require_once('../../include/rdf.class.php');
|
||||
require_once('../../include/basis_db.class.php');
|
||||
require_once('../../include/functions.inc.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/variable.class.php');
|
||||
require_once('../../include/lehrstunde.class.php');
|
||||
require_once('../../include/datum.class.php');
|
||||
require_once('../../include/stunde.class.php');
|
||||
require_once('../../include/Excel/excel.php');
|
||||
|
||||
$user = get_uid();
|
||||
$variable = new variable();
|
||||
$variable->loadVariables($user);
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
if(!$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lvplan') && !$rechte->isBerechtigt('admin'))
|
||||
die($rechte->errormsg);
|
||||
|
||||
$stunde = new stunde();
|
||||
$stunde->loadAll();
|
||||
|
||||
$stunden_arr=array();
|
||||
foreach($stunde->stunden as $row)
|
||||
{
|
||||
$stunden_arr[$row->stunde]['beginn']=$row->beginn->format('H:i');
|
||||
$stunden_arr[$row->stunde]['ende']=$row->ende->format('H:i');
|
||||
}
|
||||
$datum_obj = new datum();
|
||||
|
||||
$lehrveranstaltung_id = filter_input(INPUT_GET, 'lehrveranstaltung_id');
|
||||
$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit_id');
|
||||
$mitarbeiter_uid = filter_input(INPUT_GET,'mitarbeiter_uid');
|
||||
$student_uid = filter_input(INPUT_GET,'student_uid');
|
||||
|
||||
$db = new basis_db();
|
||||
|
||||
$lehrstunde = new lehrstunde();
|
||||
//$variable->variable->db_stpl_table
|
||||
$lehrstunde->getStundenplanData('stundenplan', $lehrveranstaltung_id, $variable->variable->semester_aktuell, $lehreinheit_id, $mitarbeiter_uid, $student_uid);
|
||||
|
||||
function writecol($zeile, $i, $content)
|
||||
{
|
||||
global $worksheet, $maxlength;
|
||||
$worksheet->write($zeile, $i, $content);
|
||||
if(mb_strlen($content)>$maxlength[$i])
|
||||
$maxlength[$i]=mb_strlen($content);
|
||||
}
|
||||
|
||||
$maxlength= array();
|
||||
$zeile=1;
|
||||
|
||||
// Creating a workbook
|
||||
$workbook = new Spreadsheet_Excel_Writer();
|
||||
|
||||
// sending HTTP headers
|
||||
$workbook->send("Termine". "_" . date("d_m_Y") . ".xls");
|
||||
$workbook->setVersion(8);
|
||||
// Creating a worksheet
|
||||
$worksheet =& $workbook->addWorksheet("Termine");
|
||||
$worksheet->setInputEncoding('utf-8');
|
||||
|
||||
$format_bold =& $workbook->addFormat();
|
||||
$format_bold->setBold();
|
||||
|
||||
$format_title =& $workbook->addFormat();
|
||||
$format_title->setBold();
|
||||
// let's merge
|
||||
$format_title->setAlign('merge');
|
||||
|
||||
//Zeilenueberschriften ausgeben
|
||||
$headline=array('Datum','Von','Bis','Ort','Lektoren','Gruppen','Lehrfach','StundeVon','StundeBis');
|
||||
|
||||
$i=0;
|
||||
foreach ($headline as $title)
|
||||
{
|
||||
$worksheet->write(0,$i,$title, $format_bold);
|
||||
$maxlength[$i]=mb_strlen($title);
|
||||
$i++;
|
||||
}
|
||||
|
||||
foreach($lehrstunde->result as $row)
|
||||
{
|
||||
$i=0;
|
||||
|
||||
writecol($zeile, $i++, $datum_obj->formatDatum($row->datum,'d.m.Y'));
|
||||
writecol($zeile, $i++, $stunden_arr[$row->stundevon]['beginn']);
|
||||
writecol($zeile, $i++, $stunden_arr[$row->stundebis]['ende']);
|
||||
writecol($zeile, $i++, implode(',',$row->orte));
|
||||
writecol($zeile, $i++, implode(',',$row->lektoren));
|
||||
writecol($zeile, $i++, implode(',',$row->gruppen));
|
||||
writecol($zeile, $i++, $row->lehrfach_bezeichnung);
|
||||
writecol($zeile, $i++, $row->stundevon);
|
||||
writecol($zeile, $i++, $row->stundebis);
|
||||
|
||||
$zeile++;
|
||||
}
|
||||
|
||||
//Die Breite der Spalten setzen
|
||||
foreach($maxlength as $i=>$breite)
|
||||
$worksheet->setColumn($i, $i, $breite+2);
|
||||
|
||||
$workbook->close();
|
||||
?>
|
||||
@@ -369,6 +369,7 @@ else
|
||||
<tab id="student-tab-gruppen" label="Gruppen" onclick="StudentGruppenLoadData();"/>
|
||||
<tab id="student-tab-funktionen" label="Funktionen" onclick="StudentFunktionIFrameLoad();"/>
|
||||
<tab id="student-tab-notizen" label="Notizen"/>
|
||||
<tab id="student-tab-termine" label="Termine" onclick="StudentTermineIFrameLoad();"/>
|
||||
</tabs>
|
||||
<tabpanels id="student-tabpanels-main" flex="1">
|
||||
<vbox id="student-detail" style="margin-top:10px;" />
|
||||
@@ -392,6 +393,7 @@ else
|
||||
<vbox id="student-box-notiz">
|
||||
<box class="Notiz" flex="1" id="student-box-notizen"/>
|
||||
</vbox>
|
||||
<iframe id="student-termine" src="" style="margin-top:10px;" />
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
</vbox>
|
||||
|
||||
@@ -1525,6 +1525,13 @@ function StudentAuswahl()
|
||||
url = '<?php echo APP_ROOT; ?>content/funktionen.xul.php?uid='+uid;
|
||||
document.getElementById('student-funktionen').setAttribute('src',url);
|
||||
}
|
||||
|
||||
// ***** Termine *****
|
||||
if(document.getElementById('student-content-tabs').selectedItem==document.getElementById('student-tab-termine'))
|
||||
{
|
||||
document.getElementById('student-termine').setAttribute('src','termine.xul.php?student_uid='+uid);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Notizen laden
|
||||
@@ -5289,6 +5296,19 @@ function StudentFunktionIFrameLoad()
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Laedt den Termine IFrame
|
||||
// ****
|
||||
function StudentTermineIFrameLoad()
|
||||
{
|
||||
uid = document.getElementById('student-detail-textbox-uid').value;
|
||||
if(uid!='')
|
||||
{
|
||||
url = 'termine.xul.php?student_uid='+uid+'&ts='+gettimestamp();
|
||||
document.getElementById('student-termine').setAttribute('src',url);
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Funktionen IFrame ins leere zeigen lassen
|
||||
// ****
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
?>
|
||||
// ********** FUNKTIONEN ********** //
|
||||
var TermineLehreinheitID='';
|
||||
var TermineLehrveranstaltungID='';
|
||||
var TermineMitarbeiterUID='';
|
||||
var TermineStudentUID='';
|
||||
|
||||
// ****
|
||||
// * Laedt die Trees
|
||||
// ****
|
||||
function loadTermine(lehreinheit_id, lehrveranstaltung_id, mitarbeiter_uid, student_uid)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
TermineLehreinheitID=lehreinheit_id;
|
||||
TermineLehrveranstaltungID=lehrveranstaltung_id;
|
||||
TermineMitarbeiterUID=mitarbeiter_uid;
|
||||
TermineStudentUID=student_uid;
|
||||
|
||||
//Termine laden
|
||||
url = "<?php echo APP_ROOT; ?>rdf/termine.rdf.php?ts="+gettimestamp();
|
||||
|
||||
if(lehreinheit_id!='')
|
||||
url=url+"&lehreinheit_id="+lehreinheit_id;
|
||||
if(lehrveranstaltung_id!='')
|
||||
url=url+"&lehrveranstaltung_id="+lehrveranstaltung_id;
|
||||
if(mitarbeiter_uid!='')
|
||||
url=url+"&mitarbeiter_uid="+mitarbeiter_uid;
|
||||
if(student_uid!='')
|
||||
url=url+"&student_uid="+student_uid;
|
||||
|
||||
var treeTermine=document.getElementById('termine-tree');
|
||||
|
||||
//Alte DS entfernen
|
||||
var oldDatasources = treeTermine.database.GetDataSources();
|
||||
while(oldDatasources.hasMoreElements())
|
||||
{
|
||||
treeTermine.database.RemoveDataSource(oldDatasources.getNext());
|
||||
}
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
var TerminTreeDatasource = rdfService.GetDataSource(url);
|
||||
TerminTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
treeTermine.database.AddDataSource(TerminTreeDatasource);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Exportiert die Termine
|
||||
*/
|
||||
function TermineExport()
|
||||
{
|
||||
var url = 'statistik/termine.xls.php?lehreinheit_id='+TermineLehreinheitID+'&lehrveranstaltung_id='+TermineLehrveranstaltungID+'&mitarbeiter_uid='+TermineMitarbeiterUID+'&student_uid='+TermineStudentUID;
|
||||
window.open(url);
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
*/
|
||||
header("Cache-Control: no-cache");
|
||||
header("Cache-Control: post-check=0, pre-check=0",false);
|
||||
header("Expires Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Pragma: no-cache");
|
||||
header("Content-type: application/vnd.mozilla.xul+xml");
|
||||
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
|
||||
|
||||
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
|
||||
echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css"?>';
|
||||
|
||||
$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit_id');
|
||||
$lehrveranstaltung_id = filter_input(INPUT_GET, 'lehrveranstaltung_id');
|
||||
$mitarbeiter_uid = filter_input(INPUT_GET,'mitarbeiter_uid');
|
||||
$student_uid = filter_input(INPUT_GET,'student_uid');
|
||||
|
||||
?>
|
||||
|
||||
<window id="termine-window" title="termine"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
onload="loadTermine(<?php echo "'".$lehreinheit_id."','".$lehrveranstaltung_id."','".$mitarbeiter_uid."','".$student_uid."'"; ?>);"
|
||||
>
|
||||
|
||||
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/termine.js.php" />
|
||||
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/functions.js.php" />
|
||||
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/phpRequest.js.php" />
|
||||
|
||||
<vbox flex="1">
|
||||
<groupbox id="termine-groupbox-termine" flex="1">
|
||||
<caption label="Termine" />
|
||||
<hbox flex="1">
|
||||
<tree id="termine-tree" seltype="single" hidecolumnpicker="false" flex="1"
|
||||
datasources="rdf:null" ref="http://www.technikum-wien.at/termine"
|
||||
persist="hidden, height"
|
||||
>
|
||||
<treecols>
|
||||
<treecol id="termine-treecol-datum" label="Datum" flex="1" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-stundevon" label="Stunde Von" flex="1" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#stundevon" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-stundebis" label="Stunde Bis" flex="1" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#stundebis" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-uhrzeitvon" label="Von" flex="1" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitvon" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-uhrzeitbis" label="Bis" flex="1" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitbis" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-gruppen" label="Gruppen" flex="3" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#gruppen" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-ort" label="Ort" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#ort" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-lektor" label="Lektor" flex="2" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#lektor" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-lehrfach" label="Lehrfach" flex="4" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#lehrfach" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-anwesend" label="Anwesend" flex="1" hidden="false"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#anwesend" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="termine-treecol-datum_iso" label="DatumISO" flex="1" hidden="true"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/termine/rdf#datum_iso" onclick="termineTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
</treecols>
|
||||
|
||||
<template>
|
||||
<rule>
|
||||
<treechildren>
|
||||
<treeitem uri="rdf:*">
|
||||
<treerow>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#datum" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#stundevon" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#stundebis" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitvon" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#uhrzeitbis" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#gruppen" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#ort" />
|
||||
<treecell label="rdf:http://www.technikum-wien.at/termine/rdf#lektor" />
|
||||
<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" />
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</rule>
|
||||
</template>
|
||||
</tree>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
<button label="Exportieren" oncommand="TermineExport()"/>
|
||||
</vbox>
|
||||
</window>
|
||||
@@ -349,4 +349,39 @@ class anwesenheit extends basis_db
|
||||
return 'green';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 AnwesenheitExists($lehreinheit_id, $datum, $uid=null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
1
|
||||
FROM
|
||||
campus.tbl_anwesenheit
|
||||
WHERE
|
||||
anwesend=true
|
||||
AND lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
|
||||
AND datum=".$this->db_add_param($datum);
|
||||
|
||||
if($uid!='')
|
||||
$qry.=" 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ abstract class db extends basis
|
||||
abstract function db_parse_bool($var);
|
||||
abstract function db_implode4SQL($var);
|
||||
abstract function db_getResultJSON($result = null);
|
||||
abstract function db_parse_array($var);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -891,6 +891,82 @@ class lehrstunde extends basis_db
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
|
||||
{
|
||||
|
||||
$qry = "SELECT
|
||||
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
|
||||
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
|
||||
array_agg(
|
||||
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
|
||||
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
|
||||
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
|
||||
array_agg(ort_kurzbz) as orte
|
||||
FROM
|
||||
lehre.tbl_".$db_stpl_table." as stpl
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
WHERE ";
|
||||
|
||||
if($lehrveranstaltung_id!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
|
||||
WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
|
||||
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
||||
|
||||
}
|
||||
elseif($lehreinheit_id!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id=".$this->db_add_param($lehreinheit_id);
|
||||
}
|
||||
elseif($mitarbeiter_uid!='')
|
||||
{
|
||||
$qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
|
||||
SELECT
|
||||
lehreinheit_id
|
||||
FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
||||
}
|
||||
elseif($student_uid!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id in (
|
||||
SELECT
|
||||
lehreinheit_id
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
WHERE
|
||||
uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
||||
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->datum = $row->datum;
|
||||
$obj->stundevon = $row->stundevon;
|
||||
$obj->stundebis = $row->stundebis;
|
||||
$obj->gruppen = array_unique($this->db_parse_array($row->gruppen));
|
||||
$obj->lektoren = array_unique($this->db_parse_array($row->lektoren));
|
||||
$obj->orte = array_unique($this->db_parse_array($row->orte));
|
||||
$obj->lehrfach_bezeichnung = $row->lehrfach_bezeichnung;
|
||||
$obj->lehreinheit_id = $row->lehreinheit_id;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -342,5 +342,23 @@ class basis_db extends db
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt aus einem DB Array ein PHP Array
|
||||
* @param $var DB Result Array Spalte
|
||||
* @return php array
|
||||
*/
|
||||
public function db_parse_array($var)
|
||||
{
|
||||
if ($var == '')
|
||||
return;
|
||||
preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?<!^\{)(?=\}$))/i', $var, $matches, PREG_SET_ORDER);
|
||||
$values = [];
|
||||
foreach ($matches as $match)
|
||||
{
|
||||
$values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/* Copyright (C) 2015 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <oesi@technikum-wien.at>
|
||||
*/
|
||||
require_once('../config/vilesci.config.inc.php');
|
||||
require_once('../include/rdf.class.php');
|
||||
require_once('../include/basis_db.class.php');
|
||||
require_once('../include/functions.inc.php');
|
||||
require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/variable.class.php');
|
||||
require_once('../include/lehrstunde.class.php');
|
||||
require_once('../include/datum.class.php');
|
||||
require_once('../include/stunde.class.php');
|
||||
require_once('../include/anwesenheit.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
if(!$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lvplan') && !$rechte->isBerechtigt('admin'))
|
||||
die($rechte->errormsg);
|
||||
|
||||
$variable = new variable();
|
||||
$variable->loadVariables($user);
|
||||
|
||||
$stunde = new stunde();
|
||||
$stunde->loadAll();
|
||||
|
||||
$stunden_arr=array();
|
||||
foreach($stunde->stunden as $row)
|
||||
{
|
||||
$stunden_arr[$row->stunde]['beginn']=$row->beginn->format('H:i');
|
||||
$stunden_arr[$row->stunde]['ende']=$row->ende->format('H:i');
|
||||
}
|
||||
$datum_obj = new datum();
|
||||
|
||||
$oRdf = new rdf('TERMINE','http://www.technikum-wien.at/termine');
|
||||
|
||||
$lehrveranstaltung_id = filter_input(INPUT_GET, 'lehrveranstaltung_id');
|
||||
$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit_id');
|
||||
$mitarbeiter_uid = filter_input(INPUT_GET,'mitarbeiter_uid');
|
||||
$student_uid = filter_input(INPUT_GET,'student_uid');
|
||||
|
||||
$oRdf->sendHeader();
|
||||
$db = new basis_db();
|
||||
|
||||
$lehrstunde = new lehrstunde();
|
||||
//$variable->variable->db_stpl_table
|
||||
$lehrstunde->getStundenplanData('stundenplan', $lehrveranstaltung_id, $variable->variable->semester_aktuell, $lehreinheit_id, $mitarbeiter_uid, $student_uid);
|
||||
|
||||
$i=0;
|
||||
if(isset($lehrstunde->result) && is_array($lehrstunde->result))
|
||||
{
|
||||
foreach($lehrstunde->result as $row)
|
||||
{
|
||||
$i=$oRdf->newObjekt($i);
|
||||
$oRdf->obj[$i]->setAttribut('datum',$datum_obj->formatDatum($row->datum,'d.m.Y'),true);
|
||||
$oRdf->obj[$i]->setAttribut('stundevon',$row->stundevon,true);
|
||||
$oRdf->obj[$i]->setAttribut('stundebis',$row->stundebis,true);
|
||||
$oRdf->obj[$i]->setAttribut('uhrzeitvon',$stunden_arr[$row->stundevon]['beginn'],true);
|
||||
$oRdf->obj[$i]->setAttribut('uhrzeitbis',$stunden_arr[$row->stundebis]['ende'],true);
|
||||
$oRdf->obj[$i]->setAttribut('gruppen',implode(',',$row->gruppen),true);
|
||||
$oRdf->obj[$i]->setAttribut('lektor',implode(',',$row->lektoren),true);
|
||||
$oRdf->obj[$i]->setAttribut('ort',implode(',',$row->orte),true);
|
||||
$oRdf->obj[$i]->setAttribut('lehrfach',$row->lehrfach_bezeichnung,true);
|
||||
$oRdf->obj[$i]->setAttribut('lehreinheit_id',$row->lehreinheit_id,true);
|
||||
|
||||
$anwesenheit = new anwesenheit();
|
||||
if($anwesenheit->AnwesenheitExists($row->lehreinheit_id, $row->datum, $student_uid))
|
||||
$anwesend='Ja';
|
||||
else
|
||||
$anwesend='Nein';
|
||||
$oRdf->obj[$i]->setAttribut('anwesend',$anwesend,true);
|
||||
$oRdf->obj[$i]->setAttribut('datum_iso',$row->datum,true);
|
||||
|
||||
|
||||
$oRdf->addSequence($i);
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$oRdf->sendRdfText();
|
||||
?>
|
||||
Reference in New Issue
Block a user