, * Andreas Oesterreicher and * Rudolf Hangl . * Gerald Simane-Sequens . */ require_once('../../config/vilesci.config.inc.php'); ?> // Stunde die zuletzt markiert wurde var TimeTableWeekLastMarkedItem=''; // 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); } // Liefert die Sortierreihenfolge der Lehrstunden function LehrstundeGetSortOrder() { var toolbar = document.getElementById('toolbarTimeTableSort'); var tbbuttons = toolbar.getElementsByTagName('toolbarbutton'); for each(var button in tbbuttons) { if(button.getAttribute('checked')=='true') { return button.getAttribute('value'); } } return 'stundenDESC'; } // LVA-Panel filtern function onLVASort(item) { var vorher=''; var nachher=''; var order=item.getAttribute('value'); //Sortiermarkierung von allen entfernen var toolbar = document.getElementById('toolbarTimeTableSort'); var tbbuttons = toolbar.getElementsByTagName('toolbarbutton'); for each(var button in tbbuttons) { if(button.id) button.setAttribute('checked','false'); } //Element als gedrueckt markieren item.setAttribute('checked','true'); // 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 = "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 = "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 = "content/lvplanung/timetable-week.xul.php"; url+=attributes; if (url) contentFrame.setAttribute('src', url); } function onLVAdoStpl(evt) { saveScrollPositionTimeTableWeek(); 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 = "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 = "content/lvplanung/timetable-week.xul.php"; url+=attributes; //alert(url); if (url) location.href=url; } // **** // * Markiert einen LV-Plan Eintrag // * item ... Element das markiert werden soll // * Wenn kein Item uebergeben wird, dann werden alle markierungen geloescht // **** function TimeTableWeekMarkiere(item) { if(!item) { items = document.getElementsByTagName('button'); for each(var button in items) { if(button.id && button.id.startsWith('buttonSTPL')) { button.setAttribute('marked','false'); button.style.color='black'; //button.style.fontStyle='normal'; //button.style.fontWeight='normal'; button.style.border = "1px solid transparent"; button.style.MozBorderTopColors='transparent'; button.style.MozBorderLeftColors='transparent'; button.style.MozBorderBottomColors='transparent'; button.style.MozBorderRightColors='transparent'; } } TimeTableWeekLastMarkedItem=''; } else { item.setAttribute('marked','true'); item.style.color='darkred'; //item.style.fontStyle='italic'; //item.style.fontWeight='bold'; item.style.border = "1px solid darkred"; item.style.MozBorderTopColors='darkred'; item.style.MozBorderLeftColors='darkred'; item.style.MozBorderBottomColors='darkred'; item.style.MozBorderRightColors='darkred'; TimeTableWeekLastMarkedItem=item; } } // **** // * Liefert die IdList der Markierten Stunden // **** function TimeTableWeekGetMarkedIdList() { var items = document.getElementsByTagName('button'); var myidlist = ''; var i=0; for each(var button in items) { if(button.id && button.id.startsWith('buttonSTPL')) { marked = button.getAttribute('marked'); if(marked=='true') { myidlist = myidlist+button.getAttribute('idList').replace(/&/g,"&x"+i); i++; } } } return myidlist; } // **** // * Klick auf eine Stunde im LV-Plan // **** function TimeTableWeekClick(event) { if(event.ctrlKey) { //Wenn mit Strg auf die Stunde geklickt wird, dann wird diese Stunde zur Markierung hinzugefuegt TimeTableWeekMarkiere(event.target); } else if(event.shiftKey) { //Wenn mit Shift auf eine Stunde geklickt wird, dann werden alle Stunden markiert, //die zwischen der zuletzt markierten und dieser Stunde liegen start = parseInt(TimeTableWeekLastMarkedItem.id.substring('buttonSTPL'.length)); ende = parseInt(event.target.id.substring('buttonSTPL'.length)); if(start>ende) { hlp = ende; ende = start; start = hlp; } for(var i=start;i<=ende;i++) { item = document.getElementById('buttonSTPL'+i); TimeTableWeekMarkiere(item); } } else { //alle markierungen entfernen TimeTableWeekMarkiere(); //aktuellen Eintrag markieren TimeTableWeekMarkiere(event.target); //Details anzeigen onStplDetail(event); } } // **** // * Doppelklick auf eine Stunde im LV-Plan // * Markiert alle Stunden mit der selben UNR an diesem Tag // **** function TimeTableWeekDblClick(event) { var items = document.getElementsByTagName('button'); var unr = event.target.getAttribute('unr'); var wochentag = event.target.getAttribute('wochentag'); for each(var button in items) { if(button.id && button.id.startsWith('buttonSTPL')) { buttonunr=button.getAttribute('unr'); buttonwochentag=button.getAttribute('wochentag'); if(buttonunr==unr && buttonwochentag==wochentag) { TimeTableWeekMarkiere(button); } } } } // **** // * Laedt die Details zu einer Stunde // **** 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 = "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'); if(tree.currentIndex==-1) { alert('Bitte zuerst einen Eintrag markieren!'); return false; } var col = tree.columns ? tree.columns["stundenplan_id"] : "stundenplan_id"; var id = tree.view.getCellText(tree.currentIndex,col); var col = tree.columns ? tree.columns["stpl-details-overlay-lehrstunde-reservierung"] : "stpl-details-overlay-lehrstunde-reservierung"; var reservierung = tree.view.getCellText(tree.currentIndex,col); if(reservierung=='true') alert('Reservierungen koennen hier nicht editiert werden'); else window.open('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 = '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'); if(tree.currentIndex==-1) { alert('Bitte zuerst einen Eintrag markieren!'); return false; } var col = tree.columns ? tree.columns["stundenplan_id"] : "stundenplan_id"; var stundenplanid = tree.view.getCellText(tree.currentIndex,col); var col = tree.columns ? tree.columns["stpl-details-overlay-lehrstunde-reservierung"] : "stpl-details-overlay-lehrstunde-reservierung"; var reservierung = tree.view.getCellText(tree.currentIndex,col); if(confirm('Wollen Sie diesen Datensatz wirklich loeschen?')) { var url = 'content/tempusDBDML.php'; var req = new phpRequest(url,'',''); if(reservierung=='true') { req.add('type', 'deletereservierung'); req.add('reservierung_id', stundenplanid); } else { 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() { if(window.TimeTableWeek) var sbox = window.TimeTableWeek.document.getElementById('timetable-week-scrollbox'); else 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); TimeTableWeekPositionX=x.value; TimeTableWeekPositionY=y.value; 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); } } // **** // * Loescht alle markierten Stunden // **** function TimetableDeleteEntries() { saveScrollPositionTimeTableWeek(); var contentFrame=document.getElementById('iframeTimeTableWeek'); if(window.TimeTableWeek) var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData'); else 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 doIt=true; var aktion='stpl_delete_single'; 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+="&aktion="+aktion; var url = "content/lvplanung/timetable-week.xul.php"; url+=attributes; //IDs der Stunden dazuhaengen idList = TimeTableWeekGetMarkedIdList(); url+=idList if (url && doIt) location.href=url; }