Files
FHC-Core/content/lvplanung/stpl-week-overlay.js.php
T
Andreas Österreicher 88409c6532 - Übersicht über die LVs mit Plätzen für Incoming
- 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
2010-05-11 06:44:50 +00:00

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);
}
}