Files
FHC-Core/content/dragboard.js.php
T
oesi 525bd30b61 - Fehler behoben bei dem die STPL Details im Tempus nicht korrekt aktualisiert wurden
- Fehler behoben bei dem das Anmerkungs Icon im Tempus nicht immer angezeigt wurde
2015-06-09 08:09:35 +02:00

729 lines
20 KiB
PHP

<?php
/* Copyright (C) 2006 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>.
*/
include('../config/vilesci.config.inc.php');
?>
function lehrstunde(id,idList)
{
this.id=id;
this.idList=idList;
}
var lehrstunden=new Array();
/***** Drag Observer fuer Lehrveranstaltungen *****/
//zum verplanen der LVAs im Stundenplan
var lvaObserver=
{
onDragStart: function (evt,transferData,action)
{
var idList=evt.target.getAttribute("idList");
var aktion=evt.target.getAttribute("aktion");
aktion+="_set";
var paramList="?aktion="+aktion+"&lva_ids="+idList;
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-lehrveranstaltung",paramList);
//alert("test");
}
};
/***** Drag Observer fuer Gruppen *****/
var lvbgrpDDObserver=
{
onDragStart: function (evt,transferData,action)
{
var tree = document.getElementById('tree-verband')
var row = { }
var col = { }
var child = { }
//Index der Quell-Row ermitteln
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
//Beim Scrollen soll kein DnD gemacht werden
if(col.value==null)
return false;
//Daten ermitteln
col = tree.columns ? tree.columns["stg_kz"] : "stg_kz";
stg_kz=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["sem"] : "sem";
sem=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["ver"] : "ver";
ver=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["grp"] : "grp";
grp=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["gruppe"] : "gruppe";
gruppe=tree.view.getCellText(row.value,col);
var paramList= stg_kz+'&'+sem+'&'+ver+'&'+grp+'&'+gruppe;
//debug('param:'+paramList);
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-lvbgruppe",paramList);
}
};
/***** Drag Observer fuer Studenten *****/
var studentDDObserver=
{
onDragStart: function (evt,transferData,action)
{
var tree = document.getElementById('student-tree')
var row = { }
var col = { }
var child = { }
//Index der Quell-Row ermitteln
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
//Beim Scrollen soll kein DnD gemacht werden
if(col.value==null)
return false;
var start = new Object();
var end = new Object();
var numRanges = tree.view.selection.getRangeCount();
var paramList= '';
for (var t = 0; t < numRanges; t++)
{
tree.view.selection.getRangeAt(t,start,end);
for (var v = start.value; v <= end.value; v++)
{
col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
uid = tree.view.getCellText(v,col);
if(uid=='')
{
alert('Es koennen nur Personen mit UID (Studenten/Mitarbeiter) verschoben werden');
return false;
}
paramList += ';'+uid;
}
}
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-student",paramList);
}
};
// ****
// * Observer fuer den Gruppen Tree im Lehreinheiten-Modul
// ****
var LeLvbgrpDDObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-lvbgruppe");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
},
onDragExit: function (evt,flavour,session)
{
},
onDragOver: function(evt,flavour,session)
{
evt.preventDefault();
},
onDrop: function (evt,dropdata,session)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
var ds = dragservice_ds;
var ses = ds.getCurrentSession()
var sourceNode = ses.sourceNode
var lehreinheit_id = document.getElementById('lehrveranstaltung-detail-textbox-lehreinheit_id').value;
var row = { }
var col = { }
var child = { }
if(lehreinheit_id=='')
{
alert('Eine Gruppe kann nur zu einer Lehreinheit hinzugefügt werden. Nicht aber zu einer Lehrveranstaltung');
return false;
}
quell_gruppe=dropdata.data;
var arr = quell_gruppe.split("&");
var stg_kz = arr[0];
var sem = arr[1];
var ver = arr[2];
var grp = arr[3];
var gruppe = arr[4];
//alert("stg: "+stg_kz+" sem: "+sem+" ver: "+ver+" grp: "+grp+" gruppe: "+gruppe+" TO Lehreinheit:"+lehreinheit_id);
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
neu = document.getElementById('lehrveranstaltung-detail-checkbox-new').checked;
req.add('type','lehreinheit_gruppe_add');
req.add('lehreinheit_id', lehreinheit_id);
req.add('studiengang_kz', stg_kz);
req.add('semester', sem);
req.add('verband', ver);
req.add('gruppe', grp);
req.add('gruppe_kurzbz', gruppe);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg);
}
else
{
//GruppenTree Refreshen
LeDetailGruppeTreeRefresh();
LvTreeRefresh();
}
}
};
/***** Drag Observer fuer Lektoren *****/
var mitarbeiterDDObserver=
{
onDragStart: function (evt,transferData,action)
{
var tree = document.getElementById('tree-lektor')
var row = { }
var col = { }
var child = { }
//Index der Quell-Row ermitteln
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
//Beim Scrollen soll kein DnD gemacht werden
if(col.value==null)
return false;
//Daten ermitteln
col = tree.columns ? tree.columns["uid"] : "uid";
uid=tree.view.getCellText(row.value,col);
var paramList= uid;
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-mitarbeiter",paramList);
}
};
// ****
// * Observer fuer Drop eines Lektors auf einen Studiengang
// ****
var LektorFunktionDDObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-mitarbeiter");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
},
onDragExit: function (evt,flavour,session)
{
},
onDragOver: function(evt,flavour,session)
{
evt.preventDefault();
},
onDrop: function (evt,dropdata,session)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
var ds = dragservice_ds;
var tree = document.getElementById('tree-lektor')
var row = { }
var col = { }
var child = { }
//Index der Quell-Row ermitteln
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
//Beim Scrollen soll kein DnD gemacht werden
if(col.value==null)
return false;
//Daten ermitteln
col = tree.columns ? tree.columns["studiengang_kz"] : "studiengang_kz";
var stg=tree.view.getCellText(row.value,col);
if(stg=='')
{
alert('Mitarbeiter kann nur auf einen Studiengang gezogen werden');
return false;
}
uid=dropdata.data;
var req = new phpRequest('tempusDBDML.php','','');
req.add('type', 'addFunktionToMitarbeiter');
req.add('uid', uid);
req.add('studiengang_kz', stg);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg)
}
else
{
//Tree Refreshen
//keine Ahnung warum ich da ein setTimeout brauche
//aber wenns nicht da ist dann stuerzt Mozilla ab?!
//mit seamonkey funktionierts auch ohne!
LektorTreeOpenStudiengang = stg;
window.setTimeout(RefreshLektorTree,10);
}
}
};
// ****
// * Observer fuer Lektor-Tree bei Lehreinheit-Modul
// * Bei OnDrop eines mitarbeiters wird dieser der
// * Lehreinheit zugeordnet
// ****
var LeLektorDDObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-mitarbeiter");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
},
onDragExit: function (evt,flavour,session)
{
},
onDragOver: function(evt,flavour,session)
{
evt.preventDefault();
},
onDrop: function (evt,dropdata,session)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
var ds = dragservice_ds;
var ses = ds.getCurrentSession()
var sourceNode = ses.sourceNode
var lehreinheit_id = document.getElementById('lehrveranstaltung-detail-textbox-lehreinheit_id').value;
var row = { }
var col = { }
var child = { }
if(lehreinheit_id=='')
return false;
uid=dropdata.data;
//alert("uid: "+uid);
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
neu = document.getElementById('lehrveranstaltung-detail-checkbox-new').checked;
req.add('type','lehreinheit_mitarbeiter_add');
req.add('lehreinheit_id', lehreinheit_id);
req.add('mitarbeiter_uid', uid);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg)
}
else
{
//LektorTree Refreshen
LeLektorTreeRefresh();
}
}
};
/***** Drag Observer fuer STPL-Verschiebung *****/
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;
idList = TimeTableWeekGetMarkedIdList();
paramList = paramList+idList;
//die Buttons die verschoben werden grau einfaerben
var styleNow=evt.target.getAttribute("style");
evt.target.setAttribute("style",styleNow+"color:gray;");
var items = document.getElementsByTagName('button');
for each(var button in items)
{
if(button.id && button.id.startsWith('buttonSTPL'))
{
marked = button.getAttribute('marked');
if(marked=='true')
{
var styleNow=button.getAttribute("style");
button.setAttribute("style",styleNow+"color:gray;");
}
}
}
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-lehrstunde",paramList);
}
};
/***** Board Observer fuer STPL- und LVA-Verschiebung *****/
var boardObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-lehrveranstaltung");
flavours.appendFlavour("application/tempus-lehrstunde");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
if(typeof evt.target.getAttribute == 'function')
{
var styleNow=evt.target.getAttribute("style");
if (evt.target.tagName=="label")
{
evt.target.setAttribute("style","background-color:#AAFFAA;");
var tagesinfo = evt.target.parentNode.getElementsByClassName('stplweek_tagesinfo');
if(typeof tagesinfo[0]!='undefined')
{
var Tagesinfostyle = tagesinfo[0].getAttribute("style");
tagesinfo[0].setAttribute("style",Tagesinfostyle+";visibility:visible;");
}
}
else
{
evt.target.setAttribute("style",styleNow+";border:1px dashed black;");
var tagesinfo = evt.target.getElementsByClassName('stplweek_tagesinfo');
if(typeof tagesinfo[0]!='undefined')
{
var Tagesinfostyle = tagesinfo[0].getAttribute("style");
tagesinfo[0].setAttribute("style",Tagesinfostyle+";visibility:visible;");
}
}
}
},
onDragExit: function (evt,flavour,session)
{
if(typeof evt.target.getAttribute == 'function')
{
var styleNow=evt.target.getAttribute("style");
if (evt.target.tagName=="label")
{
evt.target.setAttribute("style","");
var tagesinfo = evt.target.parentNode.getElementsByClassName('stplweek_tagesinfo');
if(typeof tagesinfo[0]!='undefined')
{
var Tagesinfostyle = tagesinfo[0].getAttribute("style");
tagesinfo[0].setAttribute("style",Tagesinfostyle+";visibility:hidden;");
}
}
else
{
evt.target.setAttribute("style",styleNow+";border:1px solid black;");
var tagesinfo = evt.target.getElementsByClassName('stplweek_tagesinfo');
if(typeof tagesinfo[0]!='undefined')
{
var Tagesinfostyle = tagesinfo[0].getAttribute("style");
tagesinfo[0].setAttribute("style",Tagesinfostyle+";visibility:hidden;");
}
}
}
},
onDragOver: function(evt,flavour,session)
{
evt.preventDefault();
},
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("ort_kurzbz");
var kollisionsanzahl=evt.target.getAttribute("kollision");
}
else if(evt.target.tagName=="button")
{
if(getvariable('allow_lehrstunde_drop')=='true')
{
// Wenn direkt auf die Stunde gezogen wird, wird der Raum uebernommen und die unr gleich gesetzt
ort=evt.target.getAttribute("ort_kurzbz");
var new_unr=evt.target.getAttribute("unr");
var new_ort=ort;
// zusaetzlich wird diese zu allen Stunden (gesamter Block) dazugebucht
var new_blockung=getNewBlockung(evt.target);
}
else
{
alert('Bitte waehlen Sie einen Ort oder aktivieren Sie die Option allow_lehrstunde_drop');
return false;
}
}
else
{
if (dropdata.flavour.contentType=="application/tempus-lehrveranstaltung")
{
var new_ort=ort;
var kollisionsanzahl=0;
}
}
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";
if(new_unr)
url+="&new_unr="+new_unr;
if(new_blockung)
url+="&new_blockung="+new_blockung;
url+="&mime="+dropdata.flavour.contentType;
//IDs der Stunden die verschoben werden dazuhaengen
//idList = TimeTableWeekGetMarkedIdList();
//url+=idList;
//alert("url:"+url);
if(new_ort=='' && ort=='')
{
alert('Es muss ein Ort gewaehlt werden');
}
else
{
location.href=url;
}
}
}
};
// Holt die Anzahl der Bloecke nach dem uebergebenen mit der selben unr
function getNewBlockung(item)
{
var items = document.getElementsByTagName('button');
var unr = item.getAttribute('unr');
var stunde = item.getAttribute('stunde');
var wochentag = item.getAttribute('wochentag');
var blockung=1;
for each(var button in items)
{
if(button.id && button.id.startsWith('buttonSTPL'))
{
buttonunr=button.getAttribute('unr');
buttonwochentag=button.getAttribute('wochentag');
buttonstunde=button.getAttribute('stunde');
if(buttonunr==unr && buttonwochentag==wochentag && buttonstunde>stunde)
{
blockung=blockung+1;
}
}
}
return blockung;
}
// ****
// * Observer fuer den Lehrverbandstree
// ****
var verbandtreeDDObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-student");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
},
onDragExit: function (evt,flavour,session)
{
},
onDragOver: function(evt,flavour,session)
{
evt.preventDefault();
},
onDrop: function (evt,dropdata,session)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
var ds = dragservice_ds;
var tree = document.getElementById('tree-verband')
var row = { }
var col = { }
var child = { }
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
if(row.value!=-1) //Drop on Row
{
//Ziel holen
col = tree.columns ? tree.columns["gruppe"] : "gruppe";
gruppe_kurzbz=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["stg_kz"] : "stg_kz";
stg_kz=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["sem"] : "sem";
sem=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["ver"] : "ver";
ver=tree.view.getCellText(row.value,col);
col = tree.columns ? tree.columns["grp"] : "grp";
grp=tree.view.getCellText(row.value,col);
}
else
return false;
if(gruppe_kurzbz=='' && sem=='')
{
alert('Zuteilung ist nur zu Spezial- oder Lehrverbandsgruppen moeglich');
return false;
}
uid=dropdata.data;
var req = new phpRequest('student/studentDBDML.php','','');
req.add('type','gruppenzuteilung');
req.add('uid', uid);
req.add('gruppe_kurzbz', gruppe_kurzbz);
req.add('stg_kz', stg_kz);
req.add('semester', sem);
req.add('verband', ver);
req.add('gruppe', grp);
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
{
StudentTreeRefresh();
}
}
};