mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
- Scrollposition im Tempus bleibt erhalten
- Raumvorschlag zeigt nun auch Räume mit Kollisionen an (steuerbar über max_kollision) - Semesterplan zeigt nun auch die Zeitsperren der Lektoren an - Markieren von mehreren Stunden im Tempus unterstützt jetzt STRG und SHIFT - Löschen von mehreren (markierten) Lehreinheiten möglich - CSV Export für Uniflow Drucksystem - SQL Injection Fixes
This commit is contained in:
Binary file not shown.
+65
-103
@@ -403,35 +403,28 @@ var listObserver=
|
||||
{
|
||||
onDragStart: function (evt,transferData,action)
|
||||
{
|
||||
var type=evt.target.getAttribute("stpltype");
|
||||
var dragdatum=evt.target.getAttribute("datum");
|
||||
var pers_uid=evt.target.getAttribute("pers_uid");
|
||||
var idList=evt.target.getAttribute("idList");
|
||||
var stg_kz=evt.target.getAttribute("stg_kz");
|
||||
var sem=evt.target.getAttribute("sem");
|
||||
var ver=evt.target.getAttribute("ver");
|
||||
var grp=evt.target.getAttribute("grp");
|
||||
var einheit=evt.target.getAttribute("einheit");
|
||||
var old_ort=evt.target.getAttribute("ort");
|
||||
var aktion=evt.target.getAttribute("aktion");
|
||||
aktion+="_set";
|
||||
var paramList="?dragtype="+type+"&dragdatum="+dragdatum+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit+"&old_ort="+old_ort+idList+"&aktion="+aktion;
|
||||
//var transferObjekt=new lehrstunde(type,dragdatum,pers_uid,stg_kz,sem,ver,grp,einheit,old_ort,idList);
|
||||
transferData.data=new TransferData();
|
||||
transferData.data.addDataForFlavour("application/tempus-lehrstunde",paramList);
|
||||
var type=evt.target.getAttribute("stpltype");
|
||||
var dragdatum=evt.target.getAttribute("datum");
|
||||
var pers_uid=evt.target.getAttribute("pers_uid");
|
||||
var idList=evt.target.getAttribute("idList");
|
||||
var stg_kz=evt.target.getAttribute("stg_kz");
|
||||
var sem=evt.target.getAttribute("sem");
|
||||
var ver=evt.target.getAttribute("ver");
|
||||
var grp=evt.target.getAttribute("grp");
|
||||
var einheit=evt.target.getAttribute("einheit");
|
||||
var old_ort=evt.target.getAttribute("ort");
|
||||
var aktion=evt.target.getAttribute("aktion");
|
||||
aktion+="_set";
|
||||
var paramList="?dragtype="+type+"&dragdatum="+dragdatum+"&pers_uid="+pers_uid+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&einheit="+einheit+"&old_ort="+old_ort+idList+"&aktion="+aktion;
|
||||
|
||||
var styleOrig=evt.target.getAttribute("styleOrig");
|
||||
evt.target.setAttribute("style",styleOrig+"color:red;font-style:italic;");
|
||||
transferData.data=new TransferData();
|
||||
transferData.data.addDataForFlavour("application/tempus-lehrstunde",paramList);
|
||||
}
|
||||
};
|
||||
|
||||
/***** Board Observer fuer STPL- und LVA-Verschiebung *****/
|
||||
var boardObserver=
|
||||
{
|
||||
/*canHandleMultipleItems : function()
|
||||
{
|
||||
var canHandleMultipleItems=false;
|
||||
},*/
|
||||
getSupportedFlavours : function ()
|
||||
{
|
||||
var flavours = new FlavourSet();
|
||||
@@ -446,7 +439,6 @@ var boardObserver=
|
||||
evt.target.setAttribute("style","background-color:#AAFFAA;");
|
||||
else
|
||||
evt.target.setAttribute("style",styleNow+"border:1px dashed black;");
|
||||
|
||||
},
|
||||
onDragExit: function (evt,flavour,session)
|
||||
{
|
||||
@@ -458,93 +450,63 @@ var boardObserver=
|
||||
},
|
||||
onDragOver: function(evt,flavour,session)
|
||||
{
|
||||
// Mehrfachauswahl von Lehrstunden mit CTRL bzw. ALT-Taste
|
||||
if ((evt.ctrlKey || evt.altKey) && flavour.contentType=="application/tempus-lehrstunde" && evt.target.tagName=="button")
|
||||
{
|
||||
var idList=evt.target.getAttribute("idList");
|
||||
var id=evt.target.getAttribute("id");
|
||||
var styleOrig=evt.target.getAttribute("styleOrig");
|
||||
// Ist Element schon vorhanden und an welcher stelle im Array?
|
||||
var gesetzt=null;
|
||||
for (var i=0;i<lehrstunden.length;i++)
|
||||
if (lehrstunden[i].id==id)
|
||||
gesetzt=i;
|
||||
// User will Element anhaengen?
|
||||
if (gesetzt==null && evt.ctrlKey)
|
||||
{
|
||||
var ls=new lehrstunde(id,idList);
|
||||
lehrstunden.push(ls);
|
||||
evt.target.setAttribute("style",styleOrig+"color:red;font-style:italic;");
|
||||
}
|
||||
else
|
||||
// User will Element entfernen?
|
||||
if (gesetzt!=null && evt.altKey)
|
||||
{
|
||||
// Element aus Array loeschen
|
||||
if (gesetzt==0)
|
||||
lehrstunden.shift();
|
||||
else
|
||||
if (gesetzt==lehrstunden.length)
|
||||
lehrstunden.pop();
|
||||
else
|
||||
{
|
||||
var tmpArray=new array();
|
||||
tmpArray.concat(lehrstunden.slice(0,gesetzt-1));
|
||||
tmpArray.concat(lehrstunden.slice(gesetzt+1,lehrstunden.length));
|
||||
lehrstunden=tmpArray;
|
||||
}
|
||||
evt.target.setAttribute("style",styleOrig+"color:black;font-style:normal;");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
onDrop: function (evt,dropdata,session)
|
||||
{
|
||||
if (dropdata.data!="")
|
||||
{
|
||||
saveScrollPositionTimeTableWeek();
|
||||
var stplData=document.getElementById('TimeTableWeekData');
|
||||
var datum=stplData.getAttribute("datum");
|
||||
var type=stplData.getAttribute("stpl_type");
|
||||
var stg_kz=stplData.getAttribute("stg_kz");
|
||||
var sem=stplData.getAttribute("sem");
|
||||
var ver=stplData.getAttribute("ver");
|
||||
var grp=stplData.getAttribute("grp");
|
||||
var pers_uid=stplData.getAttribute("pers_uid");
|
||||
var ort=stplData.getAttribute("ort");
|
||||
var einheit=stplData.getAttribute("gruppe");
|
||||
|
||||
var stunde=evt.target.getAttribute("stunde");
|
||||
var new_datum=evt.target.getAttribute("datum");
|
||||
if (evt.target.tagName=="label")
|
||||
var new_ort=evt.target.getAttribute("value");
|
||||
else
|
||||
if (dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
|
||||
var new_ort=ort;
|
||||
if (dropdata.data!="")
|
||||
{
|
||||
saveScrollPositionTimeTableWeek();
|
||||
var stplData=document.getElementById('TimeTableWeekData');
|
||||
var datum=stplData.getAttribute("datum");
|
||||
var type=stplData.getAttribute("stpl_type");
|
||||
var stg_kz=stplData.getAttribute("stg_kz");
|
||||
var sem=stplData.getAttribute("sem");
|
||||
var ver=stplData.getAttribute("ver");
|
||||
var grp=stplData.getAttribute("grp");
|
||||
var pers_uid=stplData.getAttribute("pers_uid");
|
||||
var ort=stplData.getAttribute("ort");
|
||||
var einheit=stplData.getAttribute("gruppe");
|
||||
|
||||
var url="<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
||||
url+=dropdata.data+"&new_stunde="+stunde+"&new_datum="+new_datum;
|
||||
url+="&type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid;
|
||||
url+="&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+einheit;
|
||||
if (evt.target.tagName=="label" || dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
|
||||
url+="&new_ort="+new_ort;
|
||||
else
|
||||
url+="&aktion=stpl_move";
|
||||
url+="&mime="+dropdata.flavour.contentType;
|
||||
var stunde=evt.target.getAttribute("stunde");
|
||||
var new_datum=evt.target.getAttribute("datum");
|
||||
if (evt.target.tagName=="label")
|
||||
{
|
||||
var new_ort=evt.target.getAttribute("ort_kurzbz");
|
||||
var kollisionsanzahl=evt.target.getAttribute("kollision");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
|
||||
{
|
||||
var new_ort=ort;
|
||||
var kollisionsanzahl=0;
|
||||
}
|
||||
}
|
||||
|
||||
// Mehrfachauswahl anhaengen
|
||||
for (var i=0;i<lehrstunden.length;i++)
|
||||
url+=lehrstunden[i].idList.replace(/&/g,"&x"+i);
|
||||
//alert(url);
|
||||
//var BoxTimeTableWeek=document.getElementById('boxTimeTableWeek');
|
||||
//var ScrollX=BoxTimeTableWeek.contentWindow.scrollX;
|
||||
//var ScrollY=BoxTimeTableWeek.contentWindow.scrollY;
|
||||
//alert('X:'+ScrollX+' Y:'+ScrollY);
|
||||
//alert(url);
|
||||
var url="<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
||||
url+=dropdata.data+"&new_stunde="+stunde+"&new_datum="+new_datum;
|
||||
url+="&type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid;
|
||||
url+="&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+einheit;
|
||||
if (evt.target.tagName=="label" || dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
|
||||
url+="&new_ort="+new_ort+"&kollisionsanzahl="+kollisionsanzahl;
|
||||
else
|
||||
url+="&aktion=stpl_move";
|
||||
url+="&mime="+dropdata.flavour.contentType;
|
||||
|
||||
//IDs der Stunden die verschoben werden dazuhaengen
|
||||
idList = TimeTableWeekGetMarkedIdList();
|
||||
url+=idList;
|
||||
if(new_ort=='' && ort=='')
|
||||
{
|
||||
alert('Es muss ein Ort gewaehlt werden');
|
||||
}
|
||||
else
|
||||
{
|
||||
location.href=url;
|
||||
//BoxTimeTableWeek=document.getElementById('boxTimeTableWeek');
|
||||
//BoxTimeTableWeek.scrollTo(ScrollX,ScrollY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
*/
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
?>
|
||||
|
||||
// Stunde die zuletzt markiert wurde
|
||||
var TimeTableWeekLastMarkedItem='';
|
||||
|
||||
// LVA-Panel aktualisieren
|
||||
function onLVARefresh()
|
||||
@@ -168,6 +169,7 @@ function onJumpDateRel(evt)
|
||||
|
||||
function onLVAdoStpl(evt)
|
||||
{
|
||||
saveScrollPositionTimeTableWeek();
|
||||
var contentFrame=document.getElementById('iframeTimeTableWeek');
|
||||
var daten=window.TimeTableWeek.document.getElementById('TimeTableWeekData');
|
||||
var datum=parseInt(daten.getAttribute("datum"));
|
||||
@@ -239,33 +241,149 @@ function StplSearchRoom(target)
|
||||
location.href=url;
|
||||
}
|
||||
|
||||
function onStplDelete(aktion)
|
||||
// ****
|
||||
// * Markiert einen LV-Plan Eintrag
|
||||
// * item ... Element das markiert werden soll
|
||||
// * Wenn kein Item uebergeben wird, dann werden alle markierungen geloescht
|
||||
// ****
|
||||
function TimeTableWeekMarkiere(item)
|
||||
{
|
||||
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;
|
||||
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");
|
||||
@@ -435,14 +553,18 @@ function STPLDetailDelete()
|
||||
// ****
|
||||
function saveScrollPositionTimeTableWeek()
|
||||
{
|
||||
|
||||
var sbox = document.getElementById('timetable-week-scrollbox');
|
||||
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;
|
||||
}
|
||||
@@ -460,3 +582,41 @@ function setScrollpositionTimeTableWeek()
|
||||
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 = "<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php";
|
||||
url+=attributes;
|
||||
|
||||
//IDs der Stunden dazuhaengen
|
||||
idList = TimeTableWeekGetMarkedIdList();
|
||||
url+=idList
|
||||
|
||||
if (url && doIt)
|
||||
location.href=url;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-details-overlay.xul
|
||||
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
|
||||
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js.php"/>
|
||||
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/lvplanung/stpl-week-overlay.js.php"/>
|
||||
|
||||
<hbox id="hboxTimeTableWeek">
|
||||
<vbox id="vboxTimeTableWeek" flex="30">
|
||||
<toolbox>
|
||||
@@ -86,6 +85,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-details-overlay.xul
|
||||
/>
|
||||
</toolbar>
|
||||
</toolbox>
|
||||
|
||||
<iframe id="iframeTimeTableWeek" name="TimeTableWeek" flex="5"
|
||||
src="<?php echo APP_ROOT; ?>content/lvplanung/timetable-week.xul.php" />
|
||||
<splitter collapse="after" persist="state">
|
||||
|
||||
@@ -51,6 +51,7 @@ if(!$rechte->isBerechtigt('lehre/lvplan'))
|
||||
die('Sie haben keine Berechtigung fuer diese Seite');
|
||||
|
||||
$error_msg='';
|
||||
$kollision_msg='';
|
||||
|
||||
// Benutzerdefinierte Variablen laden
|
||||
loadVariables($uid);
|
||||
@@ -83,6 +84,10 @@ if (isset($_GET['old_ort']))
|
||||
$old_ort=$_GET['old_ort'];
|
||||
if (isset($_GET['new_ort']))
|
||||
$new_ort=$_GET['new_ort'];
|
||||
if (isset($_GET['kollisionsanzahl']))
|
||||
$kollisionsanzahl=$_GET['kollisionsanzahl'];
|
||||
else
|
||||
$kollisionsanzahl=0;
|
||||
if (isset($_GET['ort']))
|
||||
$ort=$_GET['ort'];
|
||||
else
|
||||
@@ -140,6 +145,10 @@ else
|
||||
?>
|
||||
<scrollbox id="timetable-week-scrollbox" flex="1" style="overflow:auto;" orient="vertical">
|
||||
<vbox id="boxTimeTableWeek" flex="5">
|
||||
<keyset>
|
||||
<key id="timetable-week-key-delete" keycode="VK_DELETE" oncommand="TimetableDeleteEntries();"/>
|
||||
</keyset>
|
||||
|
||||
<?php
|
||||
$user=NULL;
|
||||
|
||||
@@ -229,8 +238,8 @@ if ($aktion=='stpl_move' || $aktion=='stpl_set')
|
||||
$lehrstunde->ort_kurzbz=$new_ort;
|
||||
$kollision=$lehrstunde->kollision($db_stpl_table);
|
||||
if ($kollision && !$ignore_kollision)
|
||||
$error_msg.=$lehrstunde->errormsg;
|
||||
if (!$kollision || $ignore_kollision)
|
||||
$kollision_msg.=$lehrstunde->errormsg;
|
||||
if (!$kollision || $ignore_kollision || $kollisionsanzahl>0)
|
||||
{
|
||||
if(!$lehrstunde->save($uid,$db_stpl_table))
|
||||
$error_msg.=$lehrstunde->errormsg;
|
||||
@@ -255,8 +264,8 @@ if ($aktion=='stpl_move' || $aktion=='stpl_set')
|
||||
$lehrstunde->ort_kurzbz=$new_ort;
|
||||
$kollision=$lehrstunde->kollision($db_stpl_table);
|
||||
if ($kollision && !$ignore_kollision)
|
||||
$error_msg.=$lehrstunde->errormsg;
|
||||
if (!$kollision || $ignore_kollision)
|
||||
$kollision_msg.=$lehrstunde->errormsg;
|
||||
if (!$kollision || $ignore_kollision || $kollisionsanzahl>0)
|
||||
{
|
||||
if(!$lehrstunde->save($uid,$db_stpl_table))
|
||||
$error_msg.=$lehrstunde->errormsg;
|
||||
@@ -267,7 +276,7 @@ if ($aktion=='stpl_move' || $aktion=='stpl_set')
|
||||
}
|
||||
|
||||
//UNDO Befehl schreiben
|
||||
if($undo!='' && $error_msg=='')
|
||||
if($undo!='' && $error_msg=='' && $sql!='')
|
||||
{
|
||||
$log = new log();
|
||||
$log->executetime = date('Y-m-d H:i:s');
|
||||
@@ -285,6 +294,7 @@ elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block')
|
||||
{
|
||||
$lehrstunde=new lehrstunde();
|
||||
|
||||
//Einzelne Stunden entfernen
|
||||
if(isset($stpl_id))
|
||||
{
|
||||
foreach ($stpl_id as $stundenplan_id)
|
||||
@@ -294,6 +304,16 @@ elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block')
|
||||
}
|
||||
}
|
||||
|
||||
//Loeschen von mehreren Stunden
|
||||
if(isset($stpl_idx))
|
||||
{
|
||||
foreach ($stpl_idx as $stundenplan_id)
|
||||
{
|
||||
$lehrstunde->delete($stundenplan_id,$db_stpl_table);
|
||||
$error_msg.=$lehrstunde->errormsg;
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($res_id))
|
||||
{
|
||||
$reservierung=new reservierung();
|
||||
@@ -315,7 +335,7 @@ elseif ($aktion=='lva_single_set')
|
||||
//$error_msg.='test'.$le_id.($lva[$i]->errormsg).($lva[$i]->stundenblockung);
|
||||
for ($j=0;$j<$lva[$z]->stundenblockung && $error_msg=='';$j++)
|
||||
if (!$lva[$z]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
|
||||
$error_msg.=$lva[$z]->errormsg;
|
||||
$kollision_msg.=$lva[$z]->errormsg."\n";
|
||||
$z++;
|
||||
}
|
||||
for ($i=0;$i<$z && $error_msg=='';$i++)
|
||||
@@ -419,7 +439,7 @@ elseif ($aktion=='lva_multi_set')
|
||||
$lva[$i]->loadLE($lva_id[$i]);
|
||||
for ($j=0;$j<$block;$j++)
|
||||
if (!$lva[$i]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
|
||||
$error_msg.=$lva[$i]->errormsg;
|
||||
$kollision_msg.=$lva[$i]->errormsg;
|
||||
}
|
||||
// LVAs setzen
|
||||
for ($i=0;$i<$anz_lvas && $error_msg=='';$i++)
|
||||
@@ -465,10 +485,16 @@ elseif ($aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
|
||||
$error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
|
||||
}
|
||||
|
||||
if ($error_msg=='')
|
||||
if ($error_msg=='' && ($kollision_msg=='' || $kollisionsanzahl>0))
|
||||
{
|
||||
$db->db_query('COMMIT;');
|
||||
if($kollisionsanzahl>0)
|
||||
$error_msg.="\nStunden wurden verplant\n";
|
||||
}
|
||||
else
|
||||
$db->db_query('ROLLBACK;');
|
||||
|
||||
$error_msg.=$kollision_msg;
|
||||
|
||||
// Stundenplan erstellen
|
||||
$stdplan=new wochenplan($type);
|
||||
@@ -494,23 +520,6 @@ $stdplan->user=$user;
|
||||
// aktueller Benutzer
|
||||
$stdplan->user_uid=$uid;
|
||||
|
||||
// Zeitwuensche laden falls benoetigt
|
||||
$zeitwunsch=null;
|
||||
if ($type=='lektor' || $aktion=='lva_single_search' || $aktion=='lva_multi_search')
|
||||
{
|
||||
$wunsch=new zeitwunsch();
|
||||
if ($type=='lektor')
|
||||
if ($wunsch->loadPerson($pers_uid,$datum))
|
||||
$zeitwunsch=$wunsch->zeitwunsch;
|
||||
else
|
||||
$error_msg.=$wunsch->errormsg;
|
||||
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
|
||||
if ($wunsch->loadZwLE($lva_id,$datum))
|
||||
$zeitwunsch=$wunsch->zeitwunsch;
|
||||
else
|
||||
$error_msg.=$wunsch->errormsg;
|
||||
}
|
||||
|
||||
// Zusaetzliche Daten laden
|
||||
if (! $stdplan->load_data($type,$pers_uid,$ort,$stg_kz,$sem,$ver,$grp,$gruppe) && $error_msg!='')
|
||||
$error_msg.=$stdplan->errormsg;
|
||||
@@ -524,6 +533,23 @@ while ($begin<=$ende)
|
||||
$datum=$begin;
|
||||
$begin+=604800; // eine Woche
|
||||
|
||||
// Zeitwuensche laden falls benoetigt
|
||||
$zeitwunsch=null;
|
||||
if ($type=='lektor' || $aktion=='lva_single_search' || $aktion=='lva_multi_search')
|
||||
{
|
||||
$wunsch=new zeitwunsch();
|
||||
if ($type=='lektor')
|
||||
if ($wunsch->loadPerson($pers_uid,$datum))
|
||||
$zeitwunsch=$wunsch->zeitwunsch;
|
||||
else
|
||||
$error_msg.=$wunsch->errormsg;
|
||||
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
|
||||
if ($wunsch->loadZwLE($lva_id,$datum))
|
||||
$zeitwunsch=$wunsch->zeitwunsch;
|
||||
else
|
||||
$error_msg.=$wunsch->errormsg;
|
||||
}
|
||||
|
||||
// Stundenplan einer Woche laden
|
||||
if (! $stdplan->load_week($datum,$db_stpl_table))
|
||||
$error_msg.=$stdplan->errormsg;
|
||||
@@ -546,7 +572,7 @@ while ($begin<=$ende)
|
||||
}
|
||||
|
||||
// Stundenplan der Woche drucken
|
||||
$stdplan->draw_week_xul($semesterplan,$uid,$zeitwunsch, $ignore_kollision, $kollision_student);
|
||||
$stdplan->draw_week_xul($semesterplan,$uid,$zeitwunsch, $ignore_kollision, $kollision_student, $max_kollision);
|
||||
|
||||
}
|
||||
|
||||
@@ -559,7 +585,7 @@ while ($begin<=$ende)
|
||||
<script type="application/x-javascript">
|
||||
<?php
|
||||
if ($error_msg!='')
|
||||
echo "alert('".str_replace("'",'"',str_replace(chr(10),'',htmlspecialchars($error_msg)))."');";
|
||||
echo "alert('".str_replace("'",'"',str_replace(chr(10),'\n',htmlspecialchars($error_msg)))."');";
|
||||
?>
|
||||
|
||||
top.document.getElementById("statusbarpanel-text").setAttribute("label","<?php echo str_replace(chr(10),' ',htmlspecialchars($PHP_SELF.$error_msg)); ?>");
|
||||
|
||||
+44
-34
@@ -105,36 +105,13 @@ function loadURL(event)
|
||||
|
||||
if (url) contentFrame.setAttribute('src', url);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Aendert die Stundenplantabelle
|
||||
// ****
|
||||
function stpltableChange(db_stpl_table)
|
||||
{
|
||||
// Request absetzen
|
||||
|
||||
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
|
||||
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
req.add('type', 'variablechange');
|
||||
req.add('name', 'db_stpl_table');
|
||||
req.add('wert', db_stpl_table);
|
||||
|
||||
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
|
||||
{
|
||||
//Statusbar setzen
|
||||
document.getElementById("statusbarpanel-text").label = "Tabelle erfolgreich geaendert";
|
||||
document.getElementById("statusbarpanel-db_table").label = db_stpl_table;
|
||||
}
|
||||
updatedbstpltable();
|
||||
variableChange('db_stpl_table', null, db_stpl_table);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -219,6 +196,22 @@ function studiensemesterChange(stsem, wert)
|
||||
return true;
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Oeffnet ein Fenster zum Aendern eines Variablenwertes
|
||||
// ****
|
||||
function variableChangeValue(variable)
|
||||
{
|
||||
var variablevalue = getvariable(variable);
|
||||
|
||||
if(variablevalue = prompt('Bitte geben Sie den neuen Wert fuer '+variable+' ein', variablevalue))
|
||||
{
|
||||
variableChange(variable, '', variablevalue);
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Aendert den Wert der Variable IgnoreKollision
|
||||
// ****
|
||||
function toggleIgnoreKollision()
|
||||
{
|
||||
if(getvariable('ignore_kollision')=='true')
|
||||
@@ -227,6 +220,9 @@ function toggleIgnoreKollision()
|
||||
variableChange('ignore_kollision','menu-prefs-ignore_kollision', 'true');
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Sendet einen Request zum Aendern einer Variable
|
||||
// ****
|
||||
function variableChange(variable, id, wert)
|
||||
{
|
||||
item = document.getElementById(id);
|
||||
@@ -269,14 +265,19 @@ function variableChange(variable, id, wert)
|
||||
if(variable=='ignore_kollision')
|
||||
updateignorekollision();
|
||||
if(variable=='db_stpl_table')
|
||||
updateidbstpltable();
|
||||
{
|
||||
document.getElementById("statusbarpanel-db_table").label = wert;
|
||||
updatedbstpltable();
|
||||
}
|
||||
//Statusbar setzen
|
||||
document.getElementById("statusbarpanel-text").label = "Variable erfolgreich geaendert";
|
||||
}
|
||||
}
|
||||
|
||||
// Aktualisiert die IngnoreKollision Anzeige
|
||||
// sowohl in der Toolbar als auch im Menue
|
||||
// ****
|
||||
// * Aktualisiert die IngnoreKollision Anzeige
|
||||
// * sowohl in der Toolbar als auch im Menue
|
||||
// ****
|
||||
function updateignorekollision()
|
||||
{
|
||||
var panel = document.getElementById('statusbarpanel-ignore_kollision');
|
||||
@@ -294,21 +295,27 @@ function updateignorekollision()
|
||||
}
|
||||
}
|
||||
|
||||
// markiert den eintrag in der statusleiste rot wenn auf die
|
||||
// echte stpl tabelle zugegriffen wird
|
||||
// ****
|
||||
// * Markiert den Eintrag in der Statusleiste rot wenn auf die
|
||||
// * echte stpl tabelle zugegriffen wird
|
||||
// ****
|
||||
function updatedbstpltable()
|
||||
{
|
||||
var panel = document.getElementById('statusbarpanel-db_table');
|
||||
|
||||
if(panel.label=='stundenplan')
|
||||
{
|
||||
panel.style.backgroundColor='red';
|
||||
}
|
||||
else
|
||||
{
|
||||
panel.style.backgroundColor='';
|
||||
panel.style.backgroundColor='transparent';
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Laedt den Wert einer Variable aus der DB
|
||||
// ****
|
||||
function getvariable(variable)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
@@ -340,6 +347,9 @@ function getvariable(variable)
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Liefert das eingestellte Studiensemester
|
||||
// ****
|
||||
function getStudiensemesterVariable()
|
||||
{
|
||||
if(stsem = getvariable('semester_aktuell'))
|
||||
|
||||
@@ -50,6 +50,7 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
|
||||
<command id="menu-prefs-ignore_zeitsperre:command" oncommand="variableChange('ignore_zeitsperre','menu-prefs-ignore_zeitsperre');"/>
|
||||
<command id="menu-prefs-ignore_reservierung:command" oncommand="variableChange('ignore_reservierung','menu-prefs-ignore_reservierung');"/>
|
||||
<command id="menu-prefs-kollision_student:command" oncommand="variableChange('kollision_student','menu-prefs-kollision_student');"/>
|
||||
<command id="menu-prefs-max_kollision:command" oncommand="variableChangeValue('max_kollision');"/>
|
||||
<command id="menu-extras-kollisionstudent:command" oncommand="KollisionStudentShow();"/>
|
||||
<command id="menu-extras-lvplanwartung:command" oncommand="LVPlanWartungShow();"/>
|
||||
<command id="menu-extras-rescheck:command" oncommand="ResCheckShow();"/>
|
||||
@@ -184,6 +185,14 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
|
||||
checkbox ="true"
|
||||
checked ="<?php echo $kollision_student;?>"
|
||||
/>
|
||||
<menuitem
|
||||
id ="menu-prefs-max_kollision"
|
||||
key ="menu-prefs-max_kollision:key"
|
||||
label ="&menu-prefs-max_kollision.label;"
|
||||
command ="menu-prefs-max_kollision:command"
|
||||
accesskey ="&menu-prefs-max_kollision.accesskey;"
|
||||
value ="<?php echo $max_kollision;?>"
|
||||
/>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -295,6 +295,12 @@ function loadVariables($user)
|
||||
$kollision_student='false';
|
||||
}
|
||||
|
||||
if (!isset($max_kollision))
|
||||
{
|
||||
global $max_kollision;
|
||||
$max_kollision='0';
|
||||
}
|
||||
|
||||
if (!isset($ignore_zeitsperre))
|
||||
{
|
||||
global $ignore_zeitsperre;
|
||||
@@ -324,6 +330,13 @@ function writeCISlog($stat, $rm = '')
|
||||
');
|
||||
}
|
||||
|
||||
function Debuglog($entry)
|
||||
{
|
||||
$handle = fopen(LOG_PATH.'debug.log','a');
|
||||
fwrite($handle, $entry);
|
||||
fclose($handle);
|
||||
}
|
||||
|
||||
// ***************************************************************
|
||||
// * Liefert das Studiensemester in dem sich
|
||||
// * das uebergebene Datum befindet
|
||||
|
||||
@@ -598,11 +598,11 @@ public function loadVeranstaltung($veranstaltungskategorie_kurzbz="",$veranstalt
|
||||
// Suche nach einer einzigen Veranstaltung_id
|
||||
if (!is_array($this->veranstaltung_id) && !empty($this->veranstaltung_id) )
|
||||
{
|
||||
$qry.=" AND ".$this->schemaSQL.".tbl_veranstaltung.veranstaltung_id=".$this->veranstaltung_id." ";
|
||||
$qry.=" AND ".$this->schemaSQL.".tbl_veranstaltung.veranstaltung_id=".addslashes($this->veranstaltung_id)." ";
|
||||
}
|
||||
elseif (is_array($this->veranstaltung_id) && count($this->veranstaltung_id)>0 )
|
||||
{
|
||||
$qry.=" AND ".$this->schemaSQL.".tbl_veranstaltung.veranstaltung_id in (".implode(",",$this->veranstaltung_id).") ";
|
||||
$qry.=" AND ".$this->schemaSQL.".tbl_veranstaltung.veranstaltung_id in (".addslashes(implode(",",$this->veranstaltung_id)).") ";
|
||||
}
|
||||
|
||||
// Suche nach einer einzigen Veranstaltungskategorie_kurzbz
|
||||
@@ -627,44 +627,44 @@ public function loadVeranstaltung($veranstaltungskategorie_kurzbz="",$veranstalt
|
||||
}
|
||||
|
||||
if (!empty($this->start_jahr) && empty($this->ende_jahr))
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYY')='".$this->start_jahr."'";
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYY')='".addslashes($this->start_jahr)."'";
|
||||
elseif (empty($this->start_jahr) && !empty($this->ende_jahr) )
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYY')='".$this->ende_jahr."'";
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYY')='".addslashes($this->ende_jahr)."'";
|
||||
elseif (empty($this->start_jahr) && !empty($this->ende_jahr) )
|
||||
{
|
||||
$qry.=" AND '".$this->start_jahr."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYY') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYY') ";
|
||||
$qry.=" AND '".$this->ende_jahr."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYY') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYY') ";
|
||||
$qry.=" AND '".addslashes($this->start_jahr)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYY') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYY') ";
|
||||
$qry.=" AND '".addslashes($this->ende_jahr)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYY') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYY') ";
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!empty($this->start_jahr_monat) && empty($this->ende_jahr_monat) )
|
||||
$qry.=" AND '".$this->start_jahr_monat."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM')";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_monat)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM')";
|
||||
elseif (empty($this->start_jahr_monat) && !empty($this->ende_jahr_monat) )
|
||||
$qry.=" AND '".$this->start_jahr_monat."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM')";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_monat)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM')";
|
||||
elseif (!empty($this->start_jahr_monat) && !empty($this->ende_jahr_monat) )
|
||||
{
|
||||
$qry.=" AND '".$this->start_jahr_monat."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM') ";
|
||||
$qry.=" AND '".$this->ende_jahr_monat."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM') ";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_monat)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM') ";
|
||||
$qry.=" AND '".addslashes($this->ende_jahr_monat)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMM') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMM') ";
|
||||
}
|
||||
|
||||
if (!empty($this->start_jahr_woche) && empty($this->ende_jahr_woche) )
|
||||
$qry.=" AND '".$this->start_jahr_woche."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'')";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_woche)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'')";
|
||||
elseif (empty($this->start_jahr_woche) && !empty($this->ende_jahr_woche) )
|
||||
$qry.=" AND '".$this->start_jahr_woche."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'')";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_woche)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') and to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'')";
|
||||
elseif (!empty($this->start_jahr_woche) && !empty($this->ende_jahr_woche) )
|
||||
{
|
||||
$qry.=" AND '".$this->start_jahr_woche."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'') ";
|
||||
$qry.=" AND '".$this->ende_jahr_woche."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'') ";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_woche)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'') ";
|
||||
$qry.=" AND '".addslashes($this->ende_jahr_woche)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYIW'') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYIW'') ";
|
||||
}
|
||||
|
||||
if (!empty($this->start_jahr_monat_tag) && empty($this->ende_jahr_monat_tag) )
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMMDD')>='".$this->start_jahr_monat_tag."'";
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMMDD')>='".addslashes($this->start_jahr_monat_tag)."'";
|
||||
elseif (empty($this->start_jahr_monat_tag) && !empty($this->ende_jahr_monat_tag) )
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMMDD')<='".$this->ende_jahr_monat_tag."'";
|
||||
$qry.=" AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMMDD')<='".addslashes($this->ende_jahr_monat_tag)."'";
|
||||
elseif (!empty($this->start_jahr_monat_tag) && !empty($this->ende_jahr_monat_tag) )
|
||||
{
|
||||
$qry.=" AND '".$this->start_jahr_monat_tag."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMMDD') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMMDD') ";
|
||||
$qry.=" AND '".$this->ende_jahr_monat_tag."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMMDD') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMMDD') ";
|
||||
$qry.=" AND '".addslashes($this->start_jahr_monat_tag)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMMDD') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMMDD') ";
|
||||
$qry.=" AND '".addslashes($this->ende_jahr_monat_tag)."' between to_char(".$this->schemaSQL.".tbl_veranstaltung.start, 'YYYYMMDD') AND to_char(".$this->schemaSQL.".tbl_veranstaltung.ende, 'YYYYMMDD') ";
|
||||
}
|
||||
|
||||
if ($this->suchtext)
|
||||
@@ -672,10 +672,10 @@ public function loadVeranstaltung($veranstaltungskategorie_kurzbz="",$veranstalt
|
||||
$this->suchtext='%'.$this->suchtext.'%';
|
||||
$this->suchtext=str_replace(' ','%',$this->suchtext);
|
||||
$this->suchtext=str_replace('%%','%',addslashes($this->suchtext));
|
||||
$qry.=" AND ( ".$this->schemaSQL.".tbl_veranstaltungskategorie.veranstaltungskategorie_kurzbz like '".$this->suchtext."'
|
||||
OR ".$this->schemaSQL.".tbl_veranstaltungskategorie.bezeichnung like '".$this->suchtext."'
|
||||
OR ".$this->schemaSQL.".tbl_veranstaltung.beschreibung like '".$this->suchtext."'
|
||||
OR ".$this->schemaSQL.".tbl_veranstaltung.inhalt like '".$this->suchtext."' ) ";
|
||||
$qry.=" AND ( ".$this->schemaSQL.".tbl_veranstaltungskategorie.veranstaltungskategorie_kurzbz like '".addslashes($this->suchtext)."'
|
||||
OR ".$this->schemaSQL.".tbl_veranstaltungskategorie.bezeichnung like '".addslashes($this->suchtext)."'
|
||||
OR ".$this->schemaSQL.".tbl_veranstaltung.beschreibung like '".addslashes($this->suchtext)."'
|
||||
OR ".$this->schemaSQL.".tbl_veranstaltung.inhalt like '".addslashes($this->suchtext)."' ) ";
|
||||
}
|
||||
|
||||
// Entscheiden welche Daten angezeigt werden Public oder fuer Mitarbeiter alles
|
||||
|
||||
@@ -590,7 +590,7 @@ class lehreinheit extends basis_db
|
||||
else
|
||||
{
|
||||
$row=$this->db_fetch_row($erg_stpl);
|
||||
$this->errormsg="Kollision mit StundenplanID($stpl_table.$stpl_id): $row[0]";
|
||||
$this->errormsg="Kollision mit StundenplanID($stpl_id): $row[0] | $datum | $ort";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,6 +261,9 @@ class variable extends basis_db
|
||||
|
||||
if (!isset($this->variable->kollision_student))
|
||||
$this->variable->kollision_student='false';
|
||||
|
||||
if (!isset($this->variable->max_kollision))
|
||||
$this->variable->max_kollision='0';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+153
-46
@@ -137,7 +137,6 @@ class wochenplan extends basis_db
|
||||
*/
|
||||
public function load_data($type, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe=NULL)
|
||||
{
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// Parameter Checken
|
||||
// Typ des Stundenplans
|
||||
if ($type=='student' || $type=='lektor' || $type=='verband' || $type=='gruppe' || $type=='ort')
|
||||
@@ -191,7 +190,6 @@ class wochenplan extends basis_db
|
||||
$this->gruppe_kurzbz=$gruppe;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// Zusaetzliche Daten ermitteln
|
||||
//personendaten
|
||||
if ($this->type=='student' || $this->type=='lektor')
|
||||
@@ -848,7 +846,7 @@ class wochenplan extends basis_db
|
||||
* @param datum Datum eines Tages in der angeforderten Woche
|
||||
* @return true oder false
|
||||
*/
|
||||
public function draw_week_xul($semesterplan, $uid, $wunsch=null, $ignore_kollision=false, $kollision_student=false)
|
||||
public function draw_week_xul($semesterplan, $uid, $wunsch=null, $ignore_kollision=false, $kollision_student=false, $max_kollision=0)
|
||||
{
|
||||
//echo $wunsch;
|
||||
global $cfgStdBgcolor;
|
||||
@@ -866,7 +864,7 @@ class wochenplan extends basis_db
|
||||
echo '<popupset>
|
||||
<popup id="stplPopupMenue">
|
||||
<menuitem label="Raumvorschlag" oncommand="StplSearchRoom(document.popupNode);" />
|
||||
<menuitem label="Entfernen" oncommand="onStplDelete(\'stpl_delete_single\');" />
|
||||
<menuitem label="Entfernen" oncommand="TimeTableWeekMarkiere(document.popupNode);TimetableDeleteEntries()" />
|
||||
</popup>
|
||||
</popupset>';
|
||||
|
||||
@@ -1087,6 +1085,7 @@ class wochenplan extends basis_db
|
||||
$z=0;
|
||||
$reservierung=false;
|
||||
foreach ($this->std_plan[$i][$j] as $lehrstunde)
|
||||
{
|
||||
if ($lehrstunde->unr==$unr)
|
||||
{
|
||||
// Lektoren
|
||||
@@ -1123,7 +1122,7 @@ class wochenplan extends basis_db
|
||||
$titel=htmlspecialchars($lehrstunde->titel);
|
||||
$anmerkung=htmlspecialchars($lehrstunde->anmerkung);
|
||||
}
|
||||
|
||||
}
|
||||
// Lektoren
|
||||
//if ($this->type!='lektor')
|
||||
$lektor=array_unique($lektor);
|
||||
@@ -1186,28 +1185,31 @@ class wochenplan extends basis_db
|
||||
$stg_obj->load($stg_kz);
|
||||
|
||||
// Ausgabe
|
||||
echo '<button id="buttonSTPL'.$count++.'"
|
||||
echo '<button id="buttonSTPL'.$count.'"
|
||||
tooltiptext="('.$updatevonam.') '.$titel.' - '.$anmerkung.'"
|
||||
style="border-width:1px;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').';"
|
||||
styleOrig="border-width:1px;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').';" ';
|
||||
style="border:1px solid transparent;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').';"
|
||||
styleOrig="border:1px solid transparent;'.((isset($farbe) && $farbe!='')?'background-color:#'.$farbe:'').';" ';
|
||||
if ($berechtigung->isBerechtigt('lehre/lvplan',$stg_obj->oe_kurzbz,'uid'))
|
||||
echo ' context="stplPopupMenue" ';
|
||||
if ($berechtigung->isBerechtigt('lehre/lvplan',$stg_obj->oe_kurzbz,'u'))
|
||||
echo 'ondraggesture="nsDragAndDrop.startDrag(event,listObserver)" ';
|
||||
//onclick="return onStplSearchRoom(event, event.target);"
|
||||
echo 'ondragdrop="nsDragAndDrop.drop(event,boardObserver)"
|
||||
ondragover="nsDragAndDrop.dragOver(event,boardObserver)"
|
||||
onclick="return onStplSearchRoom(event, event.target);"
|
||||
oncommand="onStplDetail(event);"
|
||||
oncommand="TimeTableWeekClick(event)"
|
||||
ondblclick="TimeTableWeekDblClick(event)"
|
||||
aktion="stpl"
|
||||
unr="'.$unr.'"
|
||||
markiert="false"
|
||||
elem="stundenplan'.$i.$j.'"
|
||||
idList="'.$paramList.'" stpltype="'.$this->type.'"
|
||||
stg_kz="'.$this->stg_kz.'" sem="'.$this->sem.'" ver="'.$this->ver.'"
|
||||
grp="'.$this->grp.'" gruppe="'.$this->gruppe_kurzbz.'"
|
||||
datum="'.date("Y-m-d",$datum).'" stunde="'.$j.'"
|
||||
datum="'.date("Y-m-d",$datum).'" stunde="'.$j.'" wochentag="'.$i.'"
|
||||
pers_uid="'.$this->pers_uid.'" ort_kurzbz="'.$this->ort_kurzbz.'">';
|
||||
|
||||
echo '<label align="center">'.$blink_ein;
|
||||
|
||||
$count++;
|
||||
//echo $lf;
|
||||
echo mb_substr($lf, 0,-strlen('<html:br />'));
|
||||
if($titel!='' && !$reservierung)
|
||||
@@ -1227,19 +1229,35 @@ class wochenplan extends basis_db
|
||||
}
|
||||
}
|
||||
if (isset($this->std_plan[$i][$j][0]->frei_orte))
|
||||
foreach ($this->std_plan[$i][$j][0]->frei_orte as $f_ort)
|
||||
{
|
||||
//orte sortieren => AnzahlKollisionen ASC, Ort_kurzbz ASC
|
||||
$keys=array();
|
||||
$values=array();
|
||||
foreach ($this->std_plan[$i][$j][0]->frei_orte as $key=>$value)
|
||||
{
|
||||
echo '<label value="'.$f_ort.'"
|
||||
styleOrig=""
|
||||
ondragenter="nsDragAndDrop.dragEnter(event,boardObserver)"
|
||||
ondragexit="nsDragAndDrop.dragExit(event,boardObserver)"
|
||||
ondragdrop="nsDragAndDrop.drop(event,boardObserver)"
|
||||
datum="'.date("Y-m-d",$datum).'" stunde="'.$j.'"
|
||||
stg_kz="'.$this->stg_kz.'" sem="'.$this->sem.'" ver="'.$this->ver.'"
|
||||
grp="'.$this->grp.'" gruppe="'.$this->gruppe_kurzbz.'"
|
||||
stpltype="'.$this->type.'"
|
||||
/>';
|
||||
$keys[]=$key;
|
||||
$values[]=$value;
|
||||
}
|
||||
array_multisort($values, SORT_ASC, $keys, SORT_ASC, $this->std_plan[$i][$j][0]->frei_orte);
|
||||
|
||||
foreach ($this->std_plan[$i][$j][0]->frei_orte as $f_ort=>$anzahl)
|
||||
{
|
||||
if($anzahl<=$max_kollision)
|
||||
{
|
||||
echo '<label value="'.$f_ort.($anzahl>0?'('.$anzahl.')':'').'"
|
||||
styleOrig=""
|
||||
ondragenter="nsDragAndDrop.dragEnter(event,boardObserver)"
|
||||
ondragexit="nsDragAndDrop.dragExit(event,boardObserver)"
|
||||
ondragdrop="nsDragAndDrop.drop(event,boardObserver)"
|
||||
datum="'.date("Y-m-d",$datum).'" stunde="'.$j.'"
|
||||
stg_kz="'.$this->stg_kz.'" sem="'.$this->sem.'" ver="'.$this->ver.'"
|
||||
grp="'.$this->grp.'" gruppe="'.$this->gruppe_kurzbz.'"
|
||||
stpltype="'.$this->type.'" ort_kurzbz="'.$f_ort.'" kollision="'.$anzahl.'"
|
||||
'.($anzahl>0?'tooltiptext="'.$anzahl.' Kollision(en)"':'').'
|
||||
/>';
|
||||
}
|
||||
}
|
||||
}
|
||||
echo '</vbox>'.$this->crlf;
|
||||
}
|
||||
echo "</row>";
|
||||
@@ -1440,16 +1458,62 @@ class wochenplan extends basis_db
|
||||
|
||||
// freie Plaetze in den Stundenplan eintragen.
|
||||
for ($t=1;$t<=TAGE_PRO_WOCHE;$t++)
|
||||
{
|
||||
for ($s=1;$s<=$max_stunde;$s++)
|
||||
if (!$raster[$t][$s]->kollision && ($s+$block)<=($max_stunde+1))
|
||||
{
|
||||
if (($s+$block)<=($max_stunde+1))
|
||||
{
|
||||
if (count($raster[$t][$s]->ort)>0)
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array_diff($orte,$raster[$t][$s]->ort);
|
||||
else
|
||||
$this->std_plan[$t][$s][0]->frei_orte=$orte;
|
||||
// Alle infrage kommenden Orte zuweisen
|
||||
foreach($orte as $ort)
|
||||
{
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]:0);
|
||||
}
|
||||
|
||||
// Besetzte Raueme eintragen
|
||||
foreach($raster[$t][$s]->ort as $ort)
|
||||
{
|
||||
if(in_array($ort, $orte))
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
|
||||
// Gruppenkollision eintragen
|
||||
if($raster[$t][$s]->kollision)
|
||||
{
|
||||
foreach($this->std_plan[$t][$s][0]->frei_orte as $ort=>$value)
|
||||
{
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
}
|
||||
|
||||
// Blockung beruecksichtigen
|
||||
for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++)
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s+$b]->ort);
|
||||
{
|
||||
if(!$raster[$t][$s+$b]->kollision)
|
||||
{
|
||||
//Wenn keine Gruppenkollision vorhanden ist, nur die Raumkollision eintragen
|
||||
foreach($raster[$t][$s+$b]->ort as $ort)
|
||||
{
|
||||
if(in_array($ort, $orte))
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Bei Gruppenkollision kollidieren alle Raeume
|
||||
foreach($this->std_plan[$t][$s][0]->frei_orte as $ort=>$value)
|
||||
{
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Wenn sich die Stunden mit der Blockung nicht ausgehen, dann keine Raeume anzeigen
|
||||
$this->std_plan[$t][$s][0]->frei_orte = array();
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1629,7 +1693,7 @@ class wochenplan extends basis_db
|
||||
// Raeume die in Frage kommen aufgrund der Raumtypen
|
||||
$sql_query="SELECT DISTINCT ort_kurzbz, hierarchie FROM public.tbl_ort
|
||||
JOIN public.tbl_ortraumtyp USING (ort_kurzbz) WHERE ($rtype) AND aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY hierarchie,ort_kurzbz"; //
|
||||
//echo $sql_query;
|
||||
//die($sql_query);
|
||||
if(!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
@@ -1664,6 +1728,7 @@ class wochenplan extends basis_db
|
||||
{
|
||||
// Raster vorbereiten
|
||||
for ($t=1;$t<=TAGE_PRO_WOCHE;$t++)
|
||||
{
|
||||
for ($s=$min_stunde;$s<=$max_stunde;$s++)
|
||||
{
|
||||
if (isset($raster[$t][$s]))
|
||||
@@ -1671,7 +1736,8 @@ class wochenplan extends basis_db
|
||||
$raster[$t][$s]->ort=array();
|
||||
$raster[$t][$s]->kollision=false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Stundenplanabfrage bauen (Wo ist Kollision?)
|
||||
$sql_query="SELECT DISTINCT datum, stunde FROM $stpl_table
|
||||
WHERE datum>='".addslashes($datum_begin)."' AND datum<'".addslashes($datum_end)."' AND
|
||||
@@ -1720,32 +1786,73 @@ class wochenplan extends basis_db
|
||||
$jahr=mb_substr($row->datum, 0,4);
|
||||
$tag=date("w",mktime(12,0,0,$month,$mtag,$jahr));
|
||||
$raster[$tag][$row->stunde]->ort[]=$row->ort_kurzbz;
|
||||
//if ($row->ort_kurzbz=='EDV6.10' && $tag==2 && $row->stunde==8)
|
||||
// $this->errormsg.=htmlspecialchars($row->ort_kurzbz).'/'.$mtag.'/'.$month;
|
||||
}
|
||||
|
||||
// freie Plaetze in den Stundenplan eintragen.
|
||||
// Moegliche Orte fuer den Vorschlag in den Stundenplan eintragen.
|
||||
// $this->std_plan[$t][$s][0]->frei_orte ist ein Array mit den in Frage kommenden Orten
|
||||
// der Wert von $this->std_plan[$t][$s][0]->frei_orte[$ort_kurzbz] gibt an, wie viele
|
||||
// kollisionen bei der Zuteilung entstehen
|
||||
for ($t=1;$t<=TAGE_PRO_WOCHE;$t++)
|
||||
{
|
||||
for ($s=1;$s<=$max_stunde;$s++)
|
||||
if (!$raster[$t][$s]->kollision && ($s+$block)<=($max_stunde+1))
|
||||
{
|
||||
//Blockung passt in die Maximalstundenanzahl
|
||||
if (($s+$blck)<=($max_stunde+1))
|
||||
{
|
||||
// Besetzte Orte von den freien abziehen
|
||||
if (count($raster[$t][$s]->ort)>0 && $count==0)
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array_diff($orte,$raster[$t][$s]->ort);
|
||||
elseif ($count==0)
|
||||
$this->std_plan[$t][$s][0]->frei_orte=$orte;
|
||||
elseif (count($raster[$t][$s]->ort)>0)
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s]->ort);
|
||||
if($count==0)
|
||||
{
|
||||
// Freie Orte beim 1. Durchlauf zuteilen
|
||||
foreach($orte as $ort)
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]:0);
|
||||
}
|
||||
|
||||
// Besetzte Orte eintragen
|
||||
foreach ($raster[$t][$s]->ort as $ort)
|
||||
{
|
||||
if(in_array($ort, $orte))
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
|
||||
//Kollision mit Gruppe
|
||||
if($raster[$t][$s]->kollision)
|
||||
{
|
||||
foreach ($this->std_plan[$t][$s][0]->frei_orte as $ort=>$value)
|
||||
{
|
||||
if(in_array($ort, $orte))
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
}
|
||||
|
||||
// Blockung beruecksichtigen
|
||||
for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++)
|
||||
{
|
||||
if (!$raster[$t][$s+$b]->kollision)
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s+$b]->ort);
|
||||
{
|
||||
// Wenn keine Gruppenkollision vorhanden ist, dann die kollidierenden Raeume eintragen
|
||||
foreach ($raster[$t][$s+$b]->ort as $ort)
|
||||
{
|
||||
if(in_array($ort, $orte))
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array();
|
||||
{
|
||||
// Bei Gruppenkollision den Wert bei allen Raumen erhoehen
|
||||
foreach ($this->std_plan[$t][$s][0]->frei_orte as $ort=>$value)
|
||||
{
|
||||
$this->std_plan[$t][$s][0]->frei_orte[$ort]=(isset($this->std_plan[$t][$s][0]->frei_orte[$ort])?$this->std_plan[$t][$s][0]->frei_orte[$ort]+1:1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif($raster[$t][$s]->kollision)
|
||||
else
|
||||
{
|
||||
// Wenn sich die Verplanung mit der Blockung nicht mehr ausgeht, dann keine Raeume vorschlagen
|
||||
$this->std_plan[$t][$s][0]->frei_orte=array();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Variablen abgleichen
|
||||
$rest-=$block;
|
||||
if ($block>$rest)
|
||||
|
||||
@@ -355,9 +355,9 @@ class zeitsperre extends basis_db
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
vondatum<='$datum' AND bisdatum>='$datum' AND
|
||||
(vonstunde<='$stunde' OR vonstunde is null) AND
|
||||
(bisstunde>='$stunde' OR bisstunde is null) AND
|
||||
vondatum<='$datum' AND bisdatum>='$datum' AND
|
||||
((vondatum='$datum' AND vonstunde<='$stunde') OR vonstunde is null OR vondatum<>'$datum') AND
|
||||
((bisdatum='$datum' AND bisstunde>='$stunde') OR bisstunde is null OR bisdatum<>'$datum') AND
|
||||
mitarbeiter_uid='$user'";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
|
||||
@@ -169,7 +169,7 @@ class zeitwunsch extends basis_db
|
||||
// Zeitsperren abfragen
|
||||
$sql="SELECT vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM campus.tbl_zeitsperre
|
||||
WHERE mitarbeiter_uid='".addslashes($uid)."' AND vondatum<='$ende' AND bisdatum>'$start'";
|
||||
WHERE mitarbeiter_uid='".addslashes($uid)."' AND vondatum<='$ende' AND bisdatum>='$start'";
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
@@ -260,7 +260,7 @@ class zeitwunsch extends basis_db
|
||||
// Zeitsperren abfragen
|
||||
$sql="SELECT vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM campus.tbl_zeitsperre
|
||||
WHERE mitarbeiter_uid IN ($sql_query_le) AND vondatum<='$ende' AND bisdatum>'$start'";
|
||||
WHERE mitarbeiter_uid IN ($sql_query_le) AND vondatum<='$ende' AND bisdatum>='$start'";
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
|
||||
@@ -54,6 +54,10 @@
|
||||
<!ENTITY menu-prefs-kollision_student.label "kollision_student">
|
||||
<!ENTITY menu-prefs-kollision_student.accesskey "s">
|
||||
|
||||
<!ENTITY menu-prefs-max_kollision.key "m">
|
||||
<!ENTITY menu-prefs-max_kollision.label "max_kollision">
|
||||
<!ENTITY menu-prefs-max_kollision.accesskey "m">
|
||||
|
||||
<!ENTITY menu-help-about.key "U">
|
||||
<!ENTITY menu-help-about.label "Über FHComplete">
|
||||
<!ENTITY menu-help-about.accesskey "U">
|
||||
|
||||
@@ -75,7 +75,7 @@ $ss->getNearestTillNext();
|
||||
$datum_begin=$ss->start;
|
||||
$datum_ende=$ss->ende;
|
||||
//$datum_begin='2008-01-07';
|
||||
//$datum_ende='2010-07-05'; // $ss->ende
|
||||
$datum_ende='2011-02-05'; // $ss->ende
|
||||
|
||||
// ************* FUNCTIONS **************** //
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/* Copyright (C) 2010 FH 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
|
||||
* Markus Pospischil <markus.pospischil@technikum-wien.at>
|
||||
*/
|
||||
|
||||
/**
|
||||
* CSV Export fuer das UniFlow Drucksystem
|
||||
*/
|
||||
|
||||
require_once('../../config/vilesci.config.inc.php');
|
||||
require_once('../../include/basis_db.class.php');
|
||||
|
||||
header("Content-Type: text/csv");
|
||||
header("Content-Disposition: attachment; filename=uniflow.csv");
|
||||
|
||||
$qry = "SELECT
|
||||
uid, tbl_organisationseinheit.oe_kurzbz, tbl_organisationseinheit.bezeichnung, tbl_organisationseinheit.organisationseinheittyp_kurzbz
|
||||
FROM
|
||||
campus.vw_mitarbeiter
|
||||
JOIN public.tbl_benutzerfunktion USING(uid)
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
WHERE
|
||||
tbl_benutzerfunktion.funktion_kurzbz='oezuordnung'
|
||||
AND vw_mitarbeiter.aktiv=true
|
||||
AND tbl_organisationseinheit.aktiv=true
|
||||
AND (tbl_benutzerfunktion.datum_bis >= now() OR tbl_benutzerfunktion.datum_bis IS NULL)
|
||||
AND (tbl_benutzerfunktion.datum_von <= now() OR tbl_benutzerfunktion.datum_von IS NULL)
|
||||
UNION
|
||||
SELECT
|
||||
uid, tbl_organisationseinheit.oe_kurzbz, tbl_organisationseinheit.bezeichnung, tbl_organisationseinheit.organisationseinheittyp_kurzbz
|
||||
FROM
|
||||
campus.vw_student
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
WHERE
|
||||
tbl_organisationseinheit.aktiv=true
|
||||
AND vw_student.aktiv=true
|
||||
";
|
||||
|
||||
echo "Login;KSTName;KSTBeschreibung;KSTstandard\n";
|
||||
|
||||
$db = new basis_db();
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
echo "$row->uid;$row->oe_kurzbz;$row->organisationseinheittyp_kurzbz $row->bezeichnung;1\n";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user