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 '
+
+ ';
+ }
+ else
+ {
+ $command = str_replace('STATUSGRUNDID','',$command);
+ echo '';
+ }
+ }
+ // Statusgruende laden
+ $statusgrund = new statusgrund();
+ $statusgrund->getAll(true);
+ $gruende=array();
+ foreach($statusgrund->result as $row)
+ {
+ $gruende[$row->status_kurzbz][] = array(
+ 'statusgrund_id'=>$row->statusgrund_id,
+ 'bezeichnung'=>$row->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE],
+ 'beschreibung'=>$row->beschreibung[DEFAULT_LANGUAGE]
+ );
+ }
+
+ printStatuswechselMenuitem($gruende, 'Abbrecher', 'student-toolbar-abbrecher', 'Abbrecher', "StudentAddRolle('Abbrecher','0',undefined,'STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Unterbrecher', 'student-toolbar-unterbrecher', 'Unterbrecher', "StudentAddRolle('Unterbrecher','0',undefined,'STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Student', 'student-toolbar-student', 'Student', "StudentUnterbrecherZuStudent('STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Diplomand', 'student-toolbar-diplomand', 'Diplomand', "StudentAddRolle('Diplomand',undefined,undefined,'STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Absovlent', 'student-toolbar-absolvent', 'Absolvent', "StudentAddRolle('Absolvent',undefined,undefined,'STATUSGRUNDID')");
+
+ printStatuswechselMenuitem($gruende, 'Bewerber', 'interessent-toolbar-zubewerber', 'Bewerber', "InteressentzuBewerber('STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Aufgenommener', 'interessent-toolbar-aufgenommener', 'Aufgenommener', "InteressentAddRolle('Aufgenommener','STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Student', 'interessent-toolbar-zustudent', 'Student', "InteressentzuStudent('STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Warteliste', 'interessent-toolbar-warteliste', 'Wartender', "InteressentAddRolle('Wartender','STATUSGRUNDID')");
+ printStatuswechselMenuitem($gruende, 'Absage', 'interessent-toolbar-absage', 'Abgewiesener', "InteressentAddRolle('Abgewiesener','STATUSGRUNDID')");
+
+ ?>
+
+
+
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