From 286bf4f0ccb63c6874fd8bbd6362b7a1a4ce08be Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 17 Feb 2017 16:38:47 +0100 Subject: [PATCH] =?UTF-8?q?Statusgr=C3=BCnde=20k=C3=B6nnen=20im=20FAS=20be?= =?UTF-8?q?im=20Statuswechsel=20angegeben=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/student/interessentoverlay.js.php | 22 +++--- content/student/studentDBDML.php | 4 ++ content/student/studentenoverlay.xul.php | 81 +++++++++++++++++++---- content/student/studentoverlay.js.php | 10 +-- content/student/studentrolledialog.js.php | 6 +- include/statusgrund.class.php | 47 +++++++++++++ rdf/statusgrund.rdf.php | 22 ++++++ 7 files changed, 164 insertions(+), 28 deletions(-) diff --git a/content/student/interessentoverlay.js.php b/content/student/interessentoverlay.js.php index e252f3344..06c219b2c 100644 --- a/content/student/interessentoverlay.js.php +++ b/content/student/interessentoverlay.js.php @@ -38,7 +38,7 @@ function InteressentNeu() } catch(e) {} - + window.open('vilesci/personen/import/interessentenimport.php?studiengang_kz='+stg_kz,'Interessent anlegen', 'height=768,width=1024,resizable=yes,status=yes,scrollbars=yes,toolbar=yes,location=yes,menubar=yes'); } @@ -49,7 +49,7 @@ function InteressentNeu() // * - Hakerl "zum Reihungstest angetreten" muss angekreuzt sein // * Wenn die Voraussetzungen erfuellt sind wird die Rolle Bewerber hinzugefuegt // **** -function InteressentzuBewerber() +function InteressentzuBewerber(statusgrund_id) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree = document.getElementById('student-tree'); @@ -84,6 +84,8 @@ function InteressentzuBewerber() req.add('prestudent_id', paramList); req.add('status_kurzbz', 'Bewerber'); + if(typeof(statusgrund_id)!='undefined') + req.add('statusgrund_id', statusgrund_id); var response = req.executePOST(); @@ -114,7 +116,7 @@ function InteressentzuBewerber() // * Wenn die Voraussetzungen erfuellt sind, dann wird die Matrikelnr // * und UID generiert und der Studentendatensatz angelegt. // **** -function InteressentzuStudent() +function InteressentzuStudent(statusgrund_id) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree = document.getElementById('student-tree'); @@ -139,13 +141,15 @@ function InteressentzuStudent() anzahl = anzahl+1; } } - + var url = 'content/student/studentDBDML.php'; var req = new phpRequest(url,'',''); req.add('type', 'BewerberZuStudent'); req.add('prestudent_id', paramList); + if(typeof(statusgrund_id)!='undefined') + req.add('statusgrund_id', statusgrund_id); var response = req.executePOST(); @@ -170,13 +174,13 @@ function InteressentzuStudent() // **** // * Fuegt eine Rolle zu einem Interessenten hinzu // **** -function InteressentAddRolle(rolle) +function InteressentAddRolle(rolle, statusgrund_id) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var tree = document.getElementById('student-tree'); if (tree.currentIndex==-1) return; - + //Alle markierten Personen holen var start = new Object(); var end = new Object(); @@ -199,7 +203,7 @@ function InteressentAddRolle(rolle) conf = 'Diese '+anzahl+' Studenten'; else conf = 'Diesen Studenten'; - + if(confirm(conf+' zum '+rolle+' machen?')) { var url = 'content/student/studentDBDML.php'; @@ -209,6 +213,8 @@ function InteressentAddRolle(rolle) req.add('prestudent_id', paramList); req.add('status_kurzbz', rolle); + if(typeof(statusgrund_id)!='undefined') + req.add('statusgrund_id', statusgrund_id); var response = req.executePOST(); @@ -223,7 +229,7 @@ function InteressentAddRolle(rolle) StudentTreeRefresh(); } else - { + { StudentTreeRefresh(); SetStatusBarText('Rolle hinzugefuegt'); } diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 6de0ef10c..3967ef151 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -679,6 +679,8 @@ if(!$error) $prestd_neu->insertvon = $user; $prestd_neu->bestaetigtam = date('Y-m-d'); $prestd_neu->bestaetigtvon = $user; + if(isset($_POST['statusgrund_id'])) + $prestd_neu->statusgrund_id = $_POST['statusgrund_id']; $prestd_neu->new = true; if($prestd_neu->save_rolle()) @@ -1462,6 +1464,8 @@ if(!$error) $rolle->insertvon = $user; $rolle->bestaetigtam = date('Y-m-d'); $rolle->bestaetigtvon = $user; + if(isset($_POST['statusgrund_id'])) + $rolle->statusgrund_id = $_POST['statusgrund_id']; $rolle->new = true; if($rolle->save_rolle()) diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index 7593dfcaa..d813df988 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -30,6 +30,7 @@ require_once('../../config/vilesci.config.inc.php'); require_once('../../config/global.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/statusgrund.class.php'); $user = get_uid(); $rechte = new benutzerberechtigung(); @@ -93,20 +94,74 @@ else - - + /** + * Erstellt den Menuepunkt fuer den Statuswechsel + * Wenn ein Statusgrund vorhanden ist wird ein Submenue angezeigt fuer die Auswahl + * des Statusgrund. Wenn keine Statusgruende vorhanden sind wird nur ein normaler + * Menuepuntk angezeigt + * + * @param $gruende Array mit Statusgruenden + * @param $status_kurzbz Status + * @param $id HTML id des Menueeintrags + * @param $label HTML Label des Menueeintrages + * @param $command JS Funktion die aufgerufen werden soll + */ + function printStatuswechselMenuitem($gruende, $status_kurzbz, $id, $label, $command) + { + if(isset($gruende[$status_kurzbz]) && count($gruende[$status_kurzbz])>0) + { + + echo ' + + '; + foreach($gruende[$status_kurzbz] as $row) + { + $commandWithID = str_replace('STATUSGRUNDID',$row['statusgrund_id'],$command); + echo ''; + } + echo ' + + + '; + } + else + { + $command = str_replace('STATUSGRUNDID','',$command); + echo ' rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&ts'+gettimestamp(); + url='rdf/statusgrund.rdf.php?status_kurzbz='+status_kurzbz+'&include_id='+statusgrund_id+'&ts'+gettimestamp(); try { diff --git a/include/statusgrund.class.php b/include/statusgrund.class.php index 1c0f16eb1..aa084b8c6 100644 --- a/include/statusgrund.class.php +++ b/include/statusgrund.class.php @@ -91,6 +91,7 @@ class statusgrund extends basis_db * Laedt die Gruende fuer einen Status * * @param $status_kurzbz Status zu dem die Gruende geladen werden sollen + * @param boolean $aktiv Gibt an ob nur aktive Eintraege geladen werden sollen */ public function getFromStatus($status_kurzbz, $aktiv=null) { @@ -132,5 +133,51 @@ class statusgrund extends basis_db return true; } + + /** + * Laedt die Statusgruende + * + * @param boolean $aktiv Wenn true werden nur aktive geladen. + */ + public function getAll($aktiv=null) + { + $sprache = new sprache(); + $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + $qry = " + SELECT + *,".$bezeichnung_mehrsprachig.",".$beschreibung." + FROM + public.tbl_status_grund + "; + + if(!is_null($aktiv)) + $qry.="WHERE aktiv=".($aktiv?'true':'false'); + $qry.=" ORDER BY status_kurzbz, bezeichnung_mehrsprachig[0]"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new statusgrund(); + + $obj->statusgrund_id = $row->statusgrund_id; + $obj->status_kurzbz = $row->status_kurzbz; + $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + + return true; + } } ?> diff --git a/rdf/statusgrund.rdf.php b/rdf/statusgrund.rdf.php index 81f08029a..a45e4e6c0 100644 --- a/rdf/statusgrund.rdf.php +++ b/rdf/statusgrund.rdf.php @@ -43,8 +43,17 @@ $oRdf->obj[$i]->setAttribut('beschreibung','-- keine Auswahl --',true); $oRdf->obj[$i]->setAttribut('bezeichnung_mehrsprachig','-- keine Auswahl --',true); $oRdf->addSequence(''); +$include_id_found=false; +$include_id = ''; +if(isset($_GET['include_id'])) +{ + $include_id = $_GET['include_id']; +} foreach($statusgrund->result as $row) { + if($include_id==$row->statusgrund_id) + $include_id_found=true; + $i=$oRdf->newObjekt($row->statusgrund_id); $oRdf->obj[$i]->setAttribut('statusgrund_id',$row->statusgrund_id,true); $oRdf->obj[$i]->setAttribut('status_kurzbz',$row->status_kurzbz,true); @@ -54,5 +63,18 @@ foreach($statusgrund->result as $row) $oRdf->addSequence($row->statusgrund_id); } +if(!$include_id_found && $include_id!='') +{ + $statusgrund->load($include_id); + + $i=$oRdf->newObjekt($statusgrund->statusgrund_id); + $oRdf->obj[$i]->setAttribut('statusgrund_id',$statusgrund->statusgrund_id,true); + $oRdf->obj[$i]->setAttribut('status_kurzbz',$statusgrund->status_kurzbz,true); + $oRdf->obj[$i]->setAttribut('beschreibung',$statusgrund->beschreibung[DEFAULT_LANGUAGE],true); + $oRdf->obj[$i]->setAttribut('bezeichnung_mehrsprachig',$statusgrund->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE],true); + + $oRdf->addSequence($statusgrund->statusgrund_id); +} + $oRdf->sendRdfText(); ?> \ No newline at end of file