mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
88409c6532
- Kollisionsplanung auf Studentenebene direkt beim Verplanen im Tempus - Scrollposition im Tempus bleibt nach dem verschieben einer Stunde erhalten - Semesterplan wird beim Starten nicht mehr automatisch geladen - Diverse Bugfixes beim Bearbeiten und Anlegen von Lehreinheiten
463 lines
16 KiB
PHP
463 lines
16 KiB
PHP
<?php
|
|
/* Copyright (C) 2008 Technikum-Wien
|
|
*
|
|
* 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: Christian Paminger <christian.paminger@technikum-wien.at>,
|
|
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
|
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
|
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>.
|
|
*/
|
|
require_once('../../config/vilesci.config.inc.php');
|
|
?>
|
|
|
|
|
|
// LVA-Panel aktualisieren
|
|
function onLVARefresh()
|
|
{
|
|
// LVAs
|
|
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
|
|
var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
|
|
//alert (datasources);
|
|
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources+"&bla=");
|
|
}
|
|
|
|
// LVA-Panel filtern
|
|
function onLVAFilter()
|
|
{
|
|
var filter=document.getElementById('tempus-lva-filter').value;
|
|
var vorher='';
|
|
var nachher='';
|
|
|
|
// LVAs
|
|
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
|
|
var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
|
|
|
|
var orig=datasources.substring(0);
|
|
var idx = datasources.indexOf("&filter=")
|
|
if(idx!=-1)
|
|
{
|
|
idx2=datasources.indexOf("&",idx+9);
|
|
vorher=datasources.slice(0,idx);
|
|
if(idx2!=-1)
|
|
nachher=datasources.slice(idx2);
|
|
datasources=vorher+nachher;
|
|
}
|
|
|
|
datasources=datasources+"&filter="+encodeURIComponent(filter);
|
|
|
|
//alert('Orig:'+orig+' Source: '+datasources+' Vorher:'+vorher+' Nachher:'+nachher);
|
|
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources);
|
|
}
|
|
|
|
// LVA-Panel filtern
|
|
function onLVASort(order)
|
|
{
|
|
var vorher='';
|
|
var nachher='';
|
|
|
|
// LVAs
|
|
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
|
|
var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
|
|
|
|
var orig=datasources.substring(0);
|
|
var idx = datasources.indexOf("&order=")
|
|
if(idx!=-1)
|
|
{
|
|
idx2=datasources.indexOf("&",idx+8);
|
|
vorher=datasources.slice(0,idx);
|
|
if(idx2!=-1)
|
|
nachher=datasources.slice(idx2);
|
|
datasources=vorher+nachher;
|
|
}
|
|
|
|
datasources=datasources+"&order="+encodeURIComponent(order);
|
|
|
|
//alert('Orig:'+orig+' Source: '+datasources+' Vorher:'+vorher+' Nachher:'+nachher);
|
|
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources);
|
|
}
|
|
|
|
function onJumpNow()
|
|
{
|
|
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
|
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
|
|
var datum=parseInt(daten.getAttribute("datum"));
|
|
var type=daten.getAttribute("stpl_type");
|
|
var stg_kz=daten.getAttribute("stg_kz");
|
|
var sem=daten.getAttribute("sem");
|
|
var ver=daten.getAttribute("ver");
|
|
var grp=daten.getAttribute("grp");
|
|
var gruppe=daten.getAttribute("gruppe");
|
|
var ort=daten.getAttribute("ort");
|
|
var pers_uid=daten.getAttribute("pers_uid");
|
|
|
|
var d = new Date();
|
|
var datum=0;
|
|
//Sekunden seit 1.1.1970
|
|
datum = d.getTime()/1000;
|
|
//alert(datum);
|
|
var attributes="?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe;
|
|
var url = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
|
url+=attributes;
|
|
if (url)
|
|
contentFrame.setAttribute('src', url);
|
|
}
|
|
|
|
function onJumpDate(wochen)
|
|
{
|
|
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
|
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
|
|
var datum=parseInt(daten.getAttribute("datum"));
|
|
var type=daten.getAttribute("stpl_type");
|
|
var stg_kz=daten.getAttribute("stg_kz");
|
|
var sem=daten.getAttribute("sem");
|
|
var ver=daten.getAttribute("ver");
|
|
var grp=daten.getAttribute("grp");
|
|
var gruppe=daten.getAttribute("gruppe");
|
|
var ort=daten.getAttribute("ort");
|
|
var pers_uid=daten.getAttribute("pers_uid");
|
|
|
|
// neues Datum berechnen. Eine Woche sind 604800 Sekunden.
|
|
datum+=(604800*wochen)+1;
|
|
|
|
var attributes="?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe;
|
|
var url = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
|
url+=attributes;
|
|
if (url)
|
|
contentFrame.setAttribute('src', url);
|
|
}
|
|
|
|
function onJumpDateRel(evt)
|
|
{
|
|
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
|
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
|
|
var datum=parseInt(daten.getAttribute("datum"));
|
|
var type=daten.getAttribute("stpl_type");
|
|
var stg_kz=daten.getAttribute("stg_kz");
|
|
var sem=daten.getAttribute("sem");
|
|
var ver=daten.getAttribute("ver");
|
|
var grp=daten.getAttribute("grp");
|
|
var gruppe=daten.getAttribute("gruppe");
|
|
var ort=daten.getAttribute("ort");
|
|
var pers_uid=daten.getAttribute("pers_uid");
|
|
var kw=daten.getAttribute("kw");
|
|
var KWZiel=evt.target.getAttribute("kw");
|
|
var wochen=KWZiel-kw;
|
|
|
|
// neues Datum berechnen. Eine Woche sind 604800 Sekunden.
|
|
datum+=(604800*wochen)+1;
|
|
|
|
var attributes="?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe;
|
|
var url = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
|
url+=attributes;
|
|
if (url)
|
|
contentFrame.setAttribute('src', url);
|
|
}
|
|
|
|
function onLVAdoStpl(evt)
|
|
{
|
|
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
|
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
|
|
var datum=parseInt(daten.getAttribute("datum"));
|
|
var type=daten.getAttribute("stpl_type");
|
|
var stg_kz=daten.getAttribute("stg_kz");
|
|
var sem=daten.getAttribute("sem");
|
|
var ver=daten.getAttribute("ver");
|
|
var grp=daten.getAttribute("grp");
|
|
var gruppe=daten.getAttribute("gruppe");
|
|
var ort=daten.getAttribute("ort");
|
|
var pers_uid=daten.getAttribute("pers_uid");
|
|
var aktion=evt.target.getAttribute("aktion");
|
|
var doIt=true;
|
|
var oneDate=new Date();
|
|
if (aktion=='lva_stpl_del_single')
|
|
doIt=confirm('Es werden alle Lehrveranstaltungen aus dem Stundenplan dieser Woche geloescht!\nSind Sie sicher?')
|
|
else
|
|
if (aktion=='lva_stpl_del_multi')
|
|
doIt=confirm('Es werden alle Lehrveranstaltungen aus dem Stundenplan ab dieser Woche geloescht!\nSind Sie sicher?')
|
|
else
|
|
aktion+="_search";
|
|
var idList=evt.target.getAttribute("idList");
|
|
|
|
var attributes="?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe;
|
|
attributes+=idList+"&aktion="+aktion+"&time="+oneDate.getTime();
|
|
var url = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
|
url+=attributes+"&bla=";
|
|
//dump(url);
|
|
if (url && doIt)
|
|
contentFrame.setAttribute('src', url);
|
|
}
|
|
|
|
function onStplSearchRoom(event)
|
|
{
|
|
//alert ("clickCount="+event.clickCount+" button="+event.button);
|
|
if (event.button == 1)
|
|
{
|
|
StplSearchRoom(event.target);
|
|
}
|
|
}
|
|
|
|
function StplSearchRoom(target)
|
|
{
|
|
saveScrollPositionTimeTableWeek();
|
|
if(typeof(target)==='undefined')
|
|
target = document.popupNode;
|
|
|
|
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
|
var daten=document.getElementById('TimeTableWeekData');
|
|
var datum=parseInt(daten.getAttribute("datum"));
|
|
var type=daten.getAttribute("stpl_type");
|
|
var stg_kz=daten.getAttribute("stg_kz");
|
|
var sem=daten.getAttribute("sem");
|
|
var ver=daten.getAttribute("ver");
|
|
var grp=daten.getAttribute("grp");
|
|
var gruppe=daten.getAttribute("gruppe");
|
|
var ort=daten.getAttribute("ort");
|
|
var pers_uid=daten.getAttribute("pers_uid");
|
|
var aktion=target.getAttribute("aktion");
|
|
aktion+="_single_search";
|
|
var idList=target.getAttribute("idList");
|
|
|
|
var attributes="\n?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&gruppe="+gruppe;
|
|
attributes+=idList+"&aktion="+aktion;
|
|
var url = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
|
url+=attributes;
|
|
//alert(url);
|
|
if (url)
|
|
location.href=url;
|
|
}
|
|
|
|
function onStplDelete(aktion)
|
|
{
|
|
saveScrollPositionTimeTableWeek();
|
|
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
|
var daten=document.getElementById('TimeTableWeekData');
|
|
var datum=parseInt(daten.getAttribute("datum"));
|
|
var type=daten.getAttribute("stpl_type");
|
|
var stg_kz=daten.getAttribute("stg_kz");
|
|
var sem=daten.getAttribute("sem");
|
|
var ver=daten.getAttribute("ver");
|
|
var grp=daten.getAttribute("grp");
|
|
var gruppe=daten.getAttribute("gruppe");
|
|
var ort=daten.getAttribute("ort");
|
|
var pers_uid=daten.getAttribute("pers_uid");
|
|
var idList=document.popupNode.getAttribute("idList");
|
|
var doIt=true;
|
|
doIt=confirm('Es werden die gewaehlten Eintraege aus dem Stundenplan geloescht!\nSind Sie sicher?')
|
|
|
|
var attributes="\n?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&gruppe="+gruppe;
|
|
attributes+=idList+"&aktion="+aktion;
|
|
var url = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
|
url+=attributes;
|
|
//alert(url);
|
|
if (url && doIt)
|
|
location.href=url;
|
|
}
|
|
|
|
function onStplDetail(event)
|
|
{
|
|
var idList=event.target.getAttribute("idList");
|
|
var type=event.target.getAttribute("stpltype");
|
|
var stg_kz=event.target.getAttribute("stg_kz");
|
|
var sem=event.target.getAttribute("sem");
|
|
var ver=event.target.getAttribute("ver");
|
|
var grp=event.target.getAttribute("grp");
|
|
var gruppe=event.target.getAttribute("gruppe");
|
|
var datum=event.target.getAttribute("datum");
|
|
var stunde=event.target.getAttribute("stunde");
|
|
var pers_uid=event.target.getAttribute("pers_uid");
|
|
var ort_kurzbz=event.target.getAttribute("ort_kurzbz");
|
|
|
|
var attributes="?type="+type+"&datum="+datum+"&stunde="+stunde+"&ort_kurzbz="+encodeURIComponent(ort_kurzbz)+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe+"&ort_kurzbz="+encodeURIComponent(ort_kurzbz);
|
|
//alert(attributes);
|
|
//debug('stpl-week-overlay onStplDetail Attribute:'+attributes);
|
|
attributes+=idList;
|
|
var url = "<?php echo APP_ROOT; ?>rdf/lehrstunde.rdf.php";
|
|
url+=attributes;
|
|
//alert('first:'+window.parent.STPLlastDetailUrl);
|
|
window.parent.STPLlastDetailUrl = url;
|
|
//alert(url+' - '+window.parent.STPLlastDetailUrl);
|
|
var treeStplDetails=parent.document.getElementById('treeStplDetails');
|
|
treeStplDetails.setAttribute('datasources',url);
|
|
}
|
|
|
|
|
|
// ****
|
|
// * oeffnet einen Dialog zum Bearbeiten der StundenplanDetails
|
|
// ****
|
|
function STPLDetailEdit()
|
|
{
|
|
tree = document.getElementById('treeStplDetails');
|
|
var col = tree.columns ? tree.columns["stundenplan_id"] : "stundenplan_id";
|
|
if(tree.currentIndex!=-1)
|
|
{
|
|
var id = tree.view.getCellText(tree.currentIndex,col);
|
|
}
|
|
else
|
|
{
|
|
alert('Bitte zuerst einen Eintrag markieren!');
|
|
return false;
|
|
}
|
|
|
|
window.open('<?php echo APP_ROOT; ?>content/lvplanung/stpl-details-dialog.xul.php?id='+id,'Details', 'height=400,width=350,left=100,top=100,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
|
|
}
|
|
|
|
// ****
|
|
// * Speichert die Stundenplan-Detail-Daten
|
|
// ****
|
|
function STPLDetailSave(dialog)
|
|
{
|
|
var id = dialog.getElementById('stpl-details-dialog-textbox-id').value;
|
|
var unr = dialog.getElementById('stpl-details-dialog-textbox-unr').value;
|
|
var verband = dialog.getElementById('stpl-details-dialog-textbox-verband').value;
|
|
var gruppe = dialog.getElementById('stpl-details-dialog-textbox-gruppe').value;
|
|
var gruppe_kurzbz = dialog.getElementById('stpl-details-dialog-menulist-gruppe_kurzbz').value;
|
|
var ort_kurzbz = dialog.getElementById('stpl-details-dialog-menulist-ort_kurzbz').value;
|
|
var datum = dialog.getElementById('stpl-details-dialog-box-datum').value;
|
|
var stunde = dialog.getElementById('stpl-details-dialog-menulist-stunde').value;
|
|
var titel = dialog.getElementById('stpl-details-dialog-textbox-titel').value;
|
|
var anmerkung = dialog.getElementById('stpl-details-dialog-textbox-anmerkung').value;
|
|
var fix = dialog.getElementById('stpl-details-dialog-checkbox-fix').checked;
|
|
var mitarbeiter_uid = dialog.getElementById('stpl-details-dialog-menulist-lektor').value;
|
|
|
|
var url = '<?php echo APP_ROOT ?>content/tempusDBDML.php';
|
|
var req = new phpRequest(url,'','');
|
|
|
|
req.add('type', 'savestundenplaneintrag');
|
|
|
|
req.add('stundenplan_id', id);
|
|
req.add('unr', unr);
|
|
req.add('verband', verband);
|
|
req.add('gruppe', gruppe);
|
|
req.add('gruppe_kurzbz', gruppe_kurzbz);
|
|
req.add('ort_kurzbz', ort_kurzbz);
|
|
req.add('datum', ConvertDateToISO(datum));
|
|
req.add('stunde', stunde);
|
|
req.add('titel', titel);
|
|
req.add('anmerkung', anmerkung);
|
|
req.add('stundenplan_id', id);
|
|
req.add('fix', fix);
|
|
req.add('mitarbeiter_uid', mitarbeiter_uid);
|
|
|
|
var response = req.executePOST();
|
|
|
|
var val = new ParseReturnValue(response)
|
|
|
|
if (!val.dbdml_return)
|
|
{
|
|
if(val.dbdml_errormsg=='')
|
|
alert(response)
|
|
else
|
|
alert(val.dbdml_errormsg)
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
|
|
var treeStplDetails=parent.document.getElementById('treeStplDetails');
|
|
//alert('url'+STPLlastDetailUrl);
|
|
treeStplDetails.setAttribute('datasources', '');
|
|
treeStplDetails.setAttribute('datasources', STPLlastDetailUrl);
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
// ****
|
|
// * Loescht den Eintrag der im Detailfenster markiert ist aus der Stundenplantabelle
|
|
// ****
|
|
function STPLDetailDelete()
|
|
{
|
|
//alert('url'+STPLlastDetailUrl);
|
|
//return false;
|
|
|
|
tree = document.getElementById('treeStplDetails');
|
|
var col = tree.columns ? tree.columns["stundenplan_id"] : "stundenplan_id";
|
|
|
|
if(tree.currentIndex!=-1)
|
|
{
|
|
var stundenplanid = tree.view.getCellText(tree.currentIndex,col);
|
|
}
|
|
else
|
|
{
|
|
alert('Bitte zuerst einen Eintrag markieren!');
|
|
return false;
|
|
}
|
|
|
|
if(confirm('Wollen Sie diesen Datensatz wirklich loeschen?'))
|
|
{
|
|
var url = '<?php echo APP_ROOT ?>content/tempusDBDML.php';
|
|
var req = new phpRequest(url,'','');
|
|
|
|
req.add('type', 'deletestundenplaneintrag');
|
|
|
|
req.add('stundenplan_id', stundenplanid);
|
|
|
|
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
|
|
{
|
|
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
|
|
|
var treeStplDetails=parent.document.getElementById('treeStplDetails');
|
|
//alert('url'+STPLlastDetailUrl);
|
|
treeStplDetails.setAttribute('datasources', '');
|
|
treeStplDetails.setAttribute('datasources', STPLlastDetailUrl);
|
|
}
|
|
}
|
|
}
|
|
|
|
// ****
|
|
// * Speichert die aktuelle Scrollposition der Wochenuebersicht.
|
|
// * Nach dem neuladen der Uebersicht, kann die Scrollposition mit setScrollpositionTimeTableWeek wieder gesetzt werden
|
|
// ****
|
|
function saveScrollPositionTimeTableWeek()
|
|
{
|
|
|
|
var sbox = document.getElementById('timetable-week-scrollbox');
|
|
if(sbox)
|
|
{
|
|
var xpcomInterface = sbox.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject);
|
|
var x={};
|
|
var y={};
|
|
xpcomInterface.getPosition(x, y);
|
|
window.parent.TimeTableWeekPositionX=x.value;
|
|
window.parent.TimeTableWeekPositionY=y.value;
|
|
}
|
|
}
|
|
|
|
// ****
|
|
// * Setzt die Scrollposition wieder auf den Stand zurueck der zuvor mittels saveScrollPositionTimeTableWeek gespeichert wurde
|
|
// ****
|
|
function setScrollpositionTimeTableWeek()
|
|
{
|
|
var sbox = document.getElementById('timetable-week-scrollbox');
|
|
if(sbox)
|
|
{
|
|
var xpcomInterface = sbox.boxObject.QueryInterface(Components.interfaces.nsIScrollBoxObject);
|
|
xpcomInterface.scrollTo(window.parent.TimeTableWeekPositionX, window.parent.TimeTableWeekPositionY);
|
|
}
|
|
}
|