Files
FHC-Core/content/dragboard.js.php
T
oesi 8512a6a899 Bug behoben bei dem im Tempus beim Ziehen einer Stunde der Hintergrund weiss wird
Bug behoben bei dem in der neuen Seamonkey Version die Anzeige bei aktivierten Kollissionscheck und Stundenplan-Tabelle nicht rot wird
Bug behoben bei dem das Kontextmenü bei den Stundenplandetails transparent angezeigt wurde
2015-04-14 10:10:52 +02:00

638 lines
18 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)
{
var styleNow=evt.target.getAttribute("style");
if (evt.target.tagName=="label")
evt.target.setAttribute("style","background-color:#AAFFAA;");
else
evt.target.setAttribute("style",styleNow+";border:1px dashed black;");
},
onDragExit: function (evt,flavour,session)
{
var styleNow=evt.target.getAttribute("style");
if (evt.target.tagName=="label")
evt.target.setAttribute("style","");
else
evt.target.setAttribute("style",styleNow+";border:1px solid black;");
},
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 (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";
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;
}
}
}
};
// ****
// * 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();
}
}
};