Zuordnung zu Spezialgruppen per DD und loeschen aus SpezGrp hinzugefügt

This commit is contained in:
Andreas Österreicher
2007-05-11 09:44:43 +00:00
parent 028ccba480
commit e2af75eeca
6 changed files with 328 additions and 13 deletions
+119
View File
@@ -84,6 +84,44 @@ var lvbgrpDDObserver=
}
};
/***** 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);
paramList += ';'+uid;
}
}
transferData.data=new TransferData();
transferData.data.addDataForFlavour("application/tempus-student",paramList);
}
};
// ****
// * Observer fuer den Gruppen Tree im Lehreinheiten-Modul
@@ -496,4 +534,85 @@ var boardObserver=
//BoxTimeTableWeek.scrollTo(ScrollX,ScrollY);
}
}
};
// ****
// * 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)
{
},
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);
}
else
return false;
if(gruppe_kurzbz=='')
{
alert('Zuteilung derzeit nur zu Spezialgruppen 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);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg)
}
else
{
StudentTreeRefresh();
}
}
};
+4
View File
@@ -31,6 +31,10 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,lvbgrpDDObserver);"
datasources="../rdf/lehrverbandsgruppe.rdf.php" ref="http://www.technikum-wien.at/lehrverbandsgruppe/alle-verbaende"
ondragdrop="nsDragAndDrop.drop(event,verbandtreeDDObserver)"
ondragover="nsDragAndDrop.dragOver(event,verbandtreeDDObserver)"
ondragenter="nsDragAndDrop.dragEnter(event,verbandtreeDDObserver)"
ondragexit="nsDragAndDrop.dragExit(event,verbandtreeDDObserver)"
>
<treecols>
<treecol id="bez" label="Bezeichnung" flex="15" primary="true" />
+94 -6
View File
@@ -32,6 +32,7 @@
require_once('../../vilesci/config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/benutzergruppe.class.php');
require_once('../../include/log.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
@@ -50,6 +51,7 @@ $errormsg = 'unknown';
$data = '';
$error = false;
loadVariables($conn, $user);
//Berechtigungen laden
$rechte = new benutzerberechtigung($conn);
$rechte->getBerechtigungen($user);
@@ -137,7 +139,7 @@ if(!$error)
if(isset($_POST['type']) && $_POST['type']=='savestudent')
{
//Studentendaten Speichern
if(!$error)
{
$student = new student($conn, null, true);
@@ -184,9 +186,28 @@ if(!$error)
{
if($student->save())
{
$return = true;
$error=false;
$data = $student->uid;
$student_lvb = new student($conn);
$student_lvb->uid = $_POST['uid'];
$student_lvb->studiensemester_kurzbz = $semester_aktuell;
$student_lvb->studiengang_kz = $_POST['studiengang_kz'];
$student_lvb->semester = $_POST['semester'];
$student_lvb->verband = ($_POST['verband']==''?' ':$_POST['verband']);
$student_lvb->gruppe = ($_POST['gruppe']==''?' ':$_POST['gruppe']);
$student_lvb->updateamum = date('Y-m-d H:i:s');
$student_lvb->updatevon = $user;
if($student_lvb->save_studentlehrverband(false))
{
$return = true;
$error=false;
$data = $student->uid;
}
else
{
$error = true;
$errormsg = $student_lvb->errormsg;
$return = false;
}
}
else
{
@@ -198,7 +219,7 @@ if(!$error)
}
}
}
if(isset($_POST['type']) && $_POST['type']=='saveperson')
elseif(isset($_POST['type']) && $_POST['type']=='saveperson')
{
//Personendaten Speichern
@@ -545,10 +566,77 @@ if(!$error)
}
}
}
elseif(isset($_POST['type']) && $_POST['type']=='gruppenzuteilung')
{
if(isset($_POST['uid']) && isset($_POST['gruppe_kurzbz']))
{
$benutzergruppe = new benutzergruppe($conn);
$uids = explode(';',$_POST['uid']);
$errormsg = '';
foreach ($uids as $uid)
{
if($uid!='')
{
if(!$benutzergruppe->load($uid, $_POST['gruppe_kurzbz']))
{
$benutzergruppe->uid = $uid;
$benutzergruppe->gruppe_kurzbz = $_POST['gruppe_kurzbz'];
$benutzergruppe->studiensemester_kurzbz = $semester_aktuell;
$benutzergruppe->insertamum = date('Y-m-d H:i:s');
$benutzergruppe->insertvon = $user;
$benutzergruppe->new = true;
if(!$benutzergruppe->save())
{
$errormsg .= "$uid konnte nicht hinzugefuegt werden\n";
}
}
else
$errormsg .= "Der Student $uid ist bereits in dieser Gruppe\n";
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='deleteGruppenzuteilung')
{
if(isset($_POST['uid']) && isset($_POST['gruppe_kurzbz']))
{
$uids = explode(';',$_POST['uid']);
$errormsg = '';
foreach ($uids as $uid)
{
$benutzergruppe = new benutzergruppe($conn);
if(!$benutzergruppe->delete($uid, $_POST['gruppe_kurzbz']))
{
$errormsg .= "$uid konnte nicht aus der Gruppe geloescht werden\n";
}
}
if($errormsg=='')
$return = true;
else
$return = false;
}
else
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
else
{
$return = false;
$errormsg = 'Unkown type: '.$_POST['type'];
$errormsg = 'Unkown type: "'.$_POST['type'].'"';
$data = '';
}
}
+8 -1
View File
@@ -44,6 +44,11 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/student/studentdetailoverlay.xul.p
<!-- * Studenten * -->
<!-- *************** -->
<vbox id="studentenEditor" persist="height">
<popupset>
<popup id="student-tree-popup">
<menuitem label="Student aus dieser Gruppe Entfernen" oncommand="StudentGruppeDel();" id="student-tree-popup-gruppedel" hidden="false"/>
</popup>
</popupset>
<hbox>
<toolbox flex="1">
<toolbar id="nav-toolbar">
@@ -59,13 +64,15 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/student/studentdetailoverlay.xul.p
<!-- ************* -->
<!-- * Auswahl * -->
<!-- ************* -->
<tree id="student-tree" seltype="single" hidecolumnpicker="false" flex="1"
<tree id="student-tree" seltype="multi" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/student/alle"
onselect="StudentAuswahl();"
flags="dont-build-content"
enableColumnDrag="true"
style="margin:0px;"
persist="hidden, height"
ondraggesture="nsDragAndDrop.startDrag(event,studentDDObserver);"
context="student-tree-popup"
>
<treecols>
<treecol id="student-treecol-uid" label="UID" flex="1" primary="false"
+69 -1
View File
@@ -157,7 +157,7 @@ function StudentDelete()
try
{
//Ausgewaehlte Lehreinheit holen
//Ausgewaehlte UID holen
var col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid";
var uid=tree.view.getCellText(tree.currentIndex,col);
if(uid=='')
@@ -189,6 +189,74 @@ function StudentDelete()
}
}
// ****
// * Loescht einen Studenten aus einer Spezialgruppe
// ****
function StudentGruppeDel()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('student-tree');
var tree_vb = document.getElementById('tree-verband');
if (tree.currentIndex==-1)
return;
var start = new Object();
var end = new Object();
var numRanges = tree.view.selection.getRangeCount();
var paramList= '';
var anzahl=0;
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);
uids += uid;
anzahl++;
}
}
try
{
//Ausgewaehlte Gruppe holen
var col = tree_vb.columns ? tree_vb.columns["gruppe"] : "gruppe";
var gruppe_kurzbz=tree_vb.view.getCellText(tree_vb.currentIndex,col);
if(gruppe_kurzbz=='')
{
alert('Studenten koennen nur aus Spezialgruppen entfernt werden');
return false
}
}
catch(e)
{
alert(e);
return false;
}
//Abfrage ob wirklich geloescht werden soll
if (confirm(anzahl+' Student(en) wirklich aus Gruppe '+gruppe_kurzbz+' entfernen?'))
{
//Script zum loeschen aufrufen
var req = new phpRequest('student/studentDBDML.php','','');
req.add('type','deleteGruppenzuteilung');
req.add('uid',uids);
req.add('gruppe_kurzbz', gruppe_kurzbz);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if(!val.dbdml_return)
alert(val.dbdml_errormsg)
StudentTreeRefresh();
StudentDetailReset();
}
}
// ****
// * Leert alle Eingabe- und Auswahlfelder
// ****
+34 -5
View File
@@ -34,6 +34,7 @@ class benutzergruppe
var $updatevon; // varchar(16)
var $insertamum; // timestamp
var $insertvon; // varchar(16)
var $studiensemester_kurzbz; // varchar(16)
// *************************************************************************
// * Konstruktor - Uebergibt die Connection und laedt optional eine BenutzerGruppe
@@ -64,12 +65,39 @@ class benutzergruppe
// *********************************************************
// * Laedt die BenutzerGruppe
// * @param gruppe_kurzbz
// * @param uid, gruppe_kurzbz, studiensemester_kurzbz
// * @return true wenn ok, false im Fehlerfall
// *********************************************************
function load($uid, $gruppe_kurzbz)
function load($uid, $gruppe_kurzbz, $studiensemester_kurzbz=null)
{
$qry = "SELECT * FROM public.tbl_benutzergruppe WHERE uid='".addslashes($uid)."' AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'";
if($studiensemester_kurzbz!=null)
$qry.=" AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'";
return false;
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->uid = $row->uid;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
return true;
}
else
{
$this->errormsg = 'Es wurde keine Datensatz gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim laden des Datensatzes';
return false;
}
}
// *******************************************
@@ -131,13 +159,14 @@ class benutzergruppe
if($new)
{
$qry = 'INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, updateamum, updatevon, insertamum, insertvon)
$qry = 'INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, updateamum, updatevon, insertamum, insertvon, studiensemester_kurzbz)
VALUES('.$this->addslashes($this->uid).','.
$this->addslashes($this->gruppe_kurzbz).','.
$this->addslashes($this->updateamum).','.
$this->addslashes($this->updatevon).','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).');';
$this->addslashes($this->insertvon).','.
$this->addslashes($this->studiensemester_kurzbz).');';
}
else
{