From e2af75eecabe09842ef20bc6195ae1dc9c221c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 11 May 2007 09:44:43 +0000 Subject: [PATCH] =?UTF-8?q?Zuordnung=20zu=20Spezialgruppen=20per=20DD=20un?= =?UTF-8?q?d=20loeschen=20aus=20SpezGrp=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/dragboard.js.php | 119 +++++++++++++++++++++++ content/fasoverlay.xul.php | 4 + content/student/studentDBDML.php | 100 +++++++++++++++++-- content/student/studentenoverlay.xul.php | 9 +- content/student/studentoverlay.js.php | 70 ++++++++++++- include/benutzergruppe.class.php | 39 +++++++- 6 files changed, 328 insertions(+), 13 deletions(-) diff --git a/content/dragboard.js.php b/content/dragboard.js.php index be3793575..996f2096e 100644 --- a/content/dragboard.js.php +++ b/content/dragboard.js.php @@ -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(); + } + } }; \ No newline at end of file diff --git a/content/fasoverlay.xul.php b/content/fasoverlay.xul.php index 6a0f06f8a..9914d5f90 100644 --- a/content/fasoverlay.xul.php +++ b/content/fasoverlay.xul.php @@ -31,6 +31,10 @@ echo '';*/ 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)" > diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 5a46344b6..8c9617d65 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -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 = ''; } } diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index def8b71dc..39a09d332 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -44,6 +44,11 @@ echo ' + + + + @@ -59,13 +64,15 @@ echo ' - 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 {