- Projekttasks können per klick im Tree erledigt werden

- RDF Klasse Erweiterung für verschachtelte Sequenzen
- Projektphase RDF wird jetzt über RDF Klasse erzeugt
This commit is contained in:
Andreas Österreicher
2011-09-26 15:04:15 +00:00
parent eaed72af40
commit e19eef5fc6
12 changed files with 333 additions and 334 deletions
+2 -1
View File
@@ -291,7 +291,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
{
//Workaround damit das Resize des Trees funktioniert
var tree = document.getAnonymousElementByAttribute(this.notiz ,'anonid', 'tree-notiz');
tree.columns.restoreNaturalOrder();
if(tree.columns)
tree.columns.restoreNaturalOrder();
}
});
+3 -4
View File
@@ -45,7 +45,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/bestellung.overlay.xul.php
<!-- <?php echo APP_ROOT; ?>rdf/projektphase.rdf.php?foo=<?php echo time(); ?> -->
<tree id="tree-projektmenue" onselect="treeProjektmenueSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
datasources="<?php echo APP_ROOT; ?>rdf/projektphase.rdf.php?foo=<?php echo time(); ?>" ref="http://www.technikum-wien.at/projektphase/alle-projektphasen"
datasources="<?php echo APP_ROOT; ?>rdf/projektphase.rdf.php?foo=<?php echo time(); ?>" ref="http://www.technikum-wien.at/projektphase"
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,lvbgrpDDObserver);"
ondragdrop="nsDragAndDrop.drop(event,verbandtreeDDObserver)"
@@ -108,22 +108,21 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/bestellung.overlay.xul.php
<tab id="tab-projekt" label="Projekte" />
<tab id="tab-projektphase" label="Phasen" />
<tab id="tab-projekttask" label="Tasks" selected="true" />
<tab id="tab-notiz" label="Notizen" />
<tab id="tab-dokumente" label="Dokumente" />
<tab id="tab-bestellung" label="Bestellungen" />
<tab id="tab-ressource" label="Ressourcen" />
<tab id="tab-gantt" label="Gantt" />
<tab id="tab-notiz" label="Eigene Notizen" />
</tabs>
<tabpanels id="tabpanels-main" flex="1">
<vbox id="box-projekt" />
<vbox id="box-projektphase" />
<vbox id="box-projekttask" />
<vbox id="box-notiz" />
<vbox id="box-dokumente" />
<vbox id="box-bestellung" />
<vbox id="box-ressource" />
<vbox id="box-gantt" />
<vbox id="LehrveranstaltungEditor" />
<vbox id="box-notiz" />
</tabpanels>
</tabbox>
</vbox>
+1 -1
View File
@@ -101,7 +101,7 @@ function onselectTreeProjektphase()
var response = req.execute();
// Datasource holen
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/projektphase/alle-projektphasen');
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/projektphase');
dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource);
+47 -1
View File
@@ -556,4 +556,50 @@ function clb_saveProjekttaskMantis(respObj)
return;
}
}
// ****
// * Aktualisiert den Erledigt Status eines Projekttasks
// ****
function ProjekttaskUpdateErledigt(event)
{
var row = new Object();
var col = new Object();
var childElt = new Object();
//Tree holen
var tree = event.currentTarget;
//Treecol ermitteln in die geklickt wurde
tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, childElt);
//abbrechen wenn auf Header oder Scrollbar geklickt wurde
if(!col.value)
return 0;
var val = tree.view.getCellValue(row.value, col.value);
var text = tree.view.getCellText(row.value, col.value);
col = tree.columns ? tree.columns['projekttask-treecol-projekttask_id'] : 'projekttask-treecol-projekttask_id';
var id = tree.view.getCellText(row.value, col);
if(text=='erledigt')
{
var soapBody = new SOAPObject("setErledigt");
soapBody.appendChild(new SOAPObject("projekttask_id")).val(id);
soapBody.appendChild(new SOAPObject("erledigt")).val(val);
var sr = new SOAPRequest("setErledigt",soapBody);
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
SOAPClient.SendRequest(sr,function (respObj)
{
try
{
var id = respObj.Body[0].setErledigtResponse[0].message[0].Text;
}
catch(e)
{
var fehler = respObj.Body[0].Fault[0].faultstring[0].Text;
alert('Fehler: '+fehler);
return;
}
});
}
}
+10 -4
View File
@@ -62,12 +62,13 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/mantisdetail.overlay.xul.p
<!-- ************* -->
<!-- Bem.: style="visibility:collapse" versteckt eine Spalte -->
<tree id="projekttask-tree" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/projekttask/alle-projekttasks"
datasources="rdf:null" ref="http://www.technikum-wien.at/projekttask"
style="margin:0px;" enableColumnDrag="true"
onselect="onselectProjekttask(this);"
onclick="ProjekttaskUpdateErledigt(event);"
persist="height"
flags="dont-build-content"
context="projekttask-tree-popup"
editable="true"
>
<treecols>
<treecol id="projekttask-treecol-bezeichnung" label="Bezeichnung" flex="5" hidden="false" primary="true" persist="hidden, width, ordinal"
@@ -88,11 +89,15 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/mantisdetail.overlay.xul.p
<splitter class="tree-splitter"/>
<treecol id="projekttask-treecol-aufwand" label="Aufwand" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/projekttask/rdf#sprache" />
sort="rdf:http://www.technikum-wien.at/projekttask/rdf#aufwand" />
<splitter class="tree-splitter"/>
<treecol id="projekttask-treecol-mantis_id" label="MantisID" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/projekttask/rdf#ects" />
sort="rdf:http://www.technikum-wien.at/projekttask/rdf#mantis_id" />
<splitter class="tree-splitter"/>
<treecol id="projekttask-treecol-erledigt" label="Erledigt" flex="2" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator" editable="true" type="checkbox"
sort="rdf:http://www.technikum-wien.at/projekttask/rdf#erledigt" />
<splitter class="tree-splitter"/>
</treecols>
@@ -106,6 +111,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/mantisdetail.overlay.xul.p
<treecell label="rdf:http://www.technikum-wien.at/projekttask/rdf#beschreibung"/>
<treecell label="rdf:http://www.technikum-wien.at/projekttask/rdf#aufwand"/>
<treecell label="rdf:http://www.technikum-wien.at/projekttask/rdf#mantis_id"/>
<treecell label="erledigt" value="rdf:http://www.technikum-wien.at/projekttask/rdf#erledigt"/>
</treerow>
</treeitem>
</treechildren>
+25 -124
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2007 Technikum-Wien
/* Copyright (C) 2011 FH 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
@@ -15,7 +15,8 @@
* 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>
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
*/
/**
* Klasse projekttask
@@ -29,18 +30,18 @@ class projekttask extends basis_db
public $result = array(); // adresse Objekt
//Tabellenspalten
public $projekttask_id; //integer
public $projektphase_id; //integer
public $bezeichnung; //string
public $beschreibung; //string
public $aufwand; //string
public $projekttask_id; // integer
public $projektphase_id;// integer
public $bezeichnung; // string
public $beschreibung; // string
public $aufwand; // string
public $mantis_id; // integer
//public $beginn; //date
//public $ende; //date
public $insertamum; // timestamp
public $insertvon; // bigint
public $insertvon; // string
public $updateamum; // timestamp
public $updatevon; // bigint
public $updatevon; // string
public $erledigt; // boolean
public $projekttask_fk; // integer
/**
@@ -84,6 +85,8 @@ class projekttask extends basis_db
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->erledigt = ($row->erledigt=='t'?true:false);
$this->projekttask_fk = $row->projekttask_fk;
return true;
}
@@ -109,9 +112,9 @@ class projekttask extends basis_db
public function getProjekttasks($projektphase_id,$projekt_kurzbz=null)
{
if (!is_null($projektphase_id))
$qry = 'SELECT * FROM fue.tbl_projekttask WHERE projektphase_id='.$projektphase_id.';';
else
$qry='';
$qry = 'SELECT * FROM fue.tbl_projekttask WHERE projektphase_id='.$projektphase_id.';';
else
$qry='';
if($this->db_query($qry))
{
@@ -131,6 +134,8 @@ class projekttask extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->erledigt = ($row->erledigt=='t'?true:false);
$obj->projekttask_fk = $row->projekttask_fk;
$this->result[] = $obj;
}
@@ -185,13 +190,15 @@ class projekttask extends basis_db
{
//Neuen Datensatz einfuegen
$qry='BEGIN; INSERT INTO fue.tbl_projekttask (projektphase_id, bezeichnung, beschreibung, aufwand, mantis_id, insertamum,
$qry='BEGIN; INSERT INTO fue.tbl_projekttask (projektphase_id, bezeichnung, beschreibung, aufwand, mantis_id, projekttask_fk, erledigt, insertamum,
insertvon, updateamum, updatevon) VALUES('.
$this->addslashes($this->projektphase_id).', '.
$this->addslashes($this->bezeichnung).', '.
$this->addslashes($this->beschreibung).', '.
$this->addslashes($this->aufwand).', '.
$this->addslashes($this->mantis_id).',
$this->addslashes($this->mantis_id).','.
$this->addslashes($this->projekttask_fk).','.
($this->erledigt?'true':'false').',
now(), '.
$this->addslashes($this->insertvon).',
now(), '.
@@ -205,6 +212,8 @@ class projekttask extends basis_db
'beschreibung='.$this->addslashes($this->beschreibung).', '.
'aufwand='.$this->addslashes($this->aufwand).', '.
'mantis_id='.$this->addslashes($this->mantis_id).', '.
'projekttask_fk='.$this->addslashes($this->projekttask_fk).', '.
'erledigt='.($this->erledigt?'true':'false').', '.
'updateamum= now(), '.
'updatevon='.$this->addslashes($this->updatevon).' '.
'WHERE projekttask_id='.$this->addslashes($this->projekttask_id).';';
@@ -273,113 +282,5 @@ class projekttask extends basis_db
return false;
}
}
/**
* Laedt alle Projektarbeiten eines Studenten
* @param student_uid
* @return true wenn ok, false wenn Fehler
*/
public function getProjektarbeit($student_uid)
{
$qry = "SELECT * FROM lehre.tbl_projektarbeit WHERE student_uid='".addslashes($student_uid)."'";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new projektarbeit();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projekttyp_kurzbz = $row->projekttyp_kurzbz;
$obj->titel = $row->titel;
$obj->titel_english = $row->titel_english;
$obj->lehreinheit_id = $row->lehreinheit_id;
$obj->student_uid = $row->student_uid;
$obj->firma_id = $row->firma_id;
$obj->note = $row->note;
$obj->punkte = $row->punkte;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->faktor = $row->faktor;
$obj->freigegeben = ($row->freigegeben=='t'?true:false);
$obj->gesperrtbis = $row->gesperrtbis;
$obj->stundensatz = $row->stundensatz;
$obj->gesamtstunden = $row->gesamtstunden;
$obj->themenbereich = $row->themenbereich;
$obj->anmerkung = $row->anmerkung;
$obj->ext_id = $row->ext_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt alle Projektarbeiten eines Studienganges/Studiensemesters
* @param studiengang_kz, studiensemester_kurzbz
* @return true wenn ok, false wenn Fehler
*/
public function getProjektarbeitStudiensemester($studiengang_kz, $studiensemester_kurzbz)
{
$qry = "SELECT
tbl_projektarbeit.*
FROM
lehre.tbl_projektarbeit, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
WHERE
tbl_projektarbeit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id AND
tbl_lehrveranstaltung.studiengang_kz='".addslashes($studiengang_kz)."' AND
tbl_lehreinheit.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new projektarbeit();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projekttyp_kurzbz = $row->projekttyp_kurzbz;
$obj->titel = $row->titel;
$obj->titel_english = $row->titel_english;
$obj->lehreinheit_id = $row->lehreinheit_id;
$obj->student_uid = $row->student_uid;
$obj->firma_id = $row->firma_id;
$obj->note = $row->note;
$obj->punkte = $row->punkte;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->faktor = $row->faktor;
$obj->freigegeben = ($row->freigegeben=='t'?true:false);
$obj->gesperrtbis = $row->gesperrtbis;
$obj->stundensatz = $row->stundensatz;
$obj->gesamtstunden = $row->gesamtstunden;
$obj->themenbereich = $row->themenbereich;
$obj->anmerkung = $row->anmerkung;
$obj->ext_id = $row->ext_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+104 -19
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
/* Copyright (C) 2011 FH 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
@@ -15,26 +15,34 @@
* 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>
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Österreicher <andreas.oesterreicher@technikum-wien.at>
*/
/**
* RDF Klasse
*
* Hilfsfunktionen für die Generierung von RDF-Dateien
*
*/
class rdf
{
// Header Variablen
public $content_type='Content-type: application/xhtml+xml'; // string
public $xml_header='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; // string
public $xml_ns; // string
protected $rdf_url; // string
protected $rdf_url; // string
protected static $rdf_text;
protected static $nl="\n";
protected static $tb="\t";
// Objekt Variablen
protected $counter=0; // int
public $obj_id; // string
protected $counter=0;
public $obj_id;
public $obj = array();
public $attr = array(); // string
public $attr = array();
protected $childs = array();
protected $sequence = array();
/**
* Konstruktor - Uebergibt die Connection und laedt optional eine Reservierung
* @param $reservierung_id
@@ -46,11 +54,10 @@ class rdf
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
* Erstellt ein neues RDF Description Objekt
*
* @return index des neuen Objekts
*/
public function newObjekt($id)
{
$this->obj[$this->counter] = new rdf();
@@ -58,12 +65,21 @@ class rdf
return $this->counter-1;
}
/**
* Setzt die ID eines Objektes
*
* @param $id
*/
public function setObjID($id)
{
$this->obj_id=$id;
return true;
}
/**
* Sendet die HTTP-Header der RDF Datei
* @param $cache
*/
public function sendHeader($cache=false)
{
@@ -82,6 +98,12 @@ class rdf
return true;
}
/**
* Setzt die Werte
* @param $name
* @param $value
* @param $cdata
*/
public function setAttribut($name,$value,$cdata=true)
{
$this->attr[$this->counter]->name=$name;
@@ -92,30 +114,93 @@ class rdf
return true;
}
/**
* Erzeugt den RDF Header aus den bestehenden Daten
*/
public function createRdfHeader()
{
$this->rdf_text="\n".'<RDF:RDF'."\n\t"
.'xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n\t".'xmlns:'.$this->xml_ns.'="'.$this->rdf_url.'/rdf#"'."\n".'>'."\n\t"
.'<RDF:Seq about="'.$this->rdf_url.'">'."\n";
.'xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n\t".'xmlns:'.$this->xml_ns.'="'.$this->rdf_url.'/rdf#"'."\n".'>'."\n\t";
}
/**
* Erzeugt die Descriptions aus den bestehenden Daten
*/
public function createRdfData()
{
foreach ($this->obj as $obj)
{
$this->rdf_text.="\n\t".'<RDF:li>'
."\n\t\t".'<RDF:Description id="'.$obj->obj_id.'" about="'.$this->rdf_url.'/'.$obj->obj_id.'" >';
$this->rdf_text.="\n\t\t".'<RDF:Description id="'.$obj->obj_id.'" about="'.$this->rdf_url.'/'.$obj->obj_id.'" >';
foreach ($obj->attr as $attr)
$this->rdf_text.="\n\t\t\t<".$this->xml_ns.':'.$attr->name.'><![CDATA['.$attr->value.']]></'.$this->xml_ns.':'.$attr->name.'>';
$this->rdf_text.="\n\t\t".'</RDF:Description>'."\n\t".'</RDF:li>';
$this->rdf_text.="\n\t\t".'</RDF:Description>';
}
}
/**
* Fuegt ein Objekt zur Sequence hinzu
* Wenn eine Parent_id uebergeben wird, wird das Objekt unterhalb dieses Eintrags
* angehängt
*
* @param $id
* @param $parent_id
*/
public function addSequence($id, $parent_id=null)
{
if(!is_null($parent_id))
{
$this->childs[$parent_id][]=$id;
}
else
{
$this->sequence[]=$id;
}
}
/**
* Erzeugt die Sequenz
* Wenn eine ID uebergeben wird, wird nur die Sequenz unterhalb dieser ID erzeugt
*
* @param $id
*/
function createRDFSequence($id=null)
{
if(is_null($id))
{
$this->rdf_text.='<RDF:Seq about="'.$this->rdf_url.'">'."\n";
foreach ($this->sequence as $id)
{
$this->createRDFSequence($id);
}
$this->rdf_text.='</RDF:Seq>'."\n";
}
else
{
$this->rdf_text.="\n\t".'<RDF:li RDF:resource="'.$this->rdf_url.'/'.$id.'" >';
if(isset($this->childs[$id]))
{
$this->rdf_text.='<RDF:Seq about="'.$this->rdf_url.'/'.$id.'">'."\n";
foreach($this->childs[$id] as $childid)
{
$this->createRDFSequence($childid);
}
$this->rdf_text.='</RDF:Seq>'."\n";
}
$this->rdf_text.='</RDF:li>';
}
}
/**
* Generiert den RDF Footer
*/
public function createRdfFooter()
{
$this->rdf_text.='</RDF:Seq>'."\n".'</RDF:RDF>'."\n\t";
$this->rdf_text.='</RDF:RDF>'."\n\t";
}
/**
* Generiert das RDF
*/
public function sendRdfText()
{
//echo $this->rdf_text;
@@ -123,7 +208,7 @@ class rdf
{
$this->createRdfHeader();
$this->createRdfData();
//$this->createRdfSequence();
$this->createRdfSequence();
$this->createRdfFooter();
}
echo $this->rdf_text;
+2
View File
@@ -34,6 +34,8 @@ if($db->db_query($qry))
//$oRdf->obj[$i]->setAttribut('id',$row->betreuerart_kurzbz,false);
$oRdf->obj[$i]->setAttribut('betreuerart_kurzbz',$row->betreuerart_kurzbz,true);
$oRdf->obj[$i]->setAttribut('beschreibung',$row->beschreibung,true);
$oRdf->addSequence($row->betreuerart_kurzbz);
}
}
$oRdf->sendRdfText();
+72 -133
View File
@@ -17,21 +17,15 @@
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>
*/
header("Content-type: application/xhtml+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/projekt.class.php');
require_once('../include/projektphase.class.php');
require_once('../include/rdf.class.php');
$rdf_url='http://www.technikum-wien.at/projektphase/';
echo '
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:PROJEKTPHASE="'.$rdf_url.'rdf#"
>';
$oRdf = new rdf('PROJEKTPHASE','http://www.technikum-wien.at/projektphase');
$oRdf->sendHeader();
if(isset($_GET['projektphase_id']))
{
@@ -39,22 +33,22 @@ if(isset($_GET['projektphase_id']))
$phase->load($_GET['projektphase_id']);
echo '
<RDF:Description RDF:about="'.$rdf_url.$phase->projektphase_id.'" >
<PROJEKTPHASE:projektphase_id><![CDATA['.$phase->projektphase_id.']]></PROJEKTPHASE:projektphase_id>
<PROJEKTPHASE:projekt_kurzbz><![CDATA['.$phase->projekt_kurzbz.']]></PROJEKTPHASE:projekt_kurzbz>
<PROJEKTPHASE:projektphase_fk><![CDATA['.$phase->projektphase_fk.']]></PROJEKTPHASE:projektphase_fk>
<PROJEKTPHASE:bezeichnung><![CDATA['.$phase->bezeichnung.']]></PROJEKTPHASE:bezeichnung>
<PROJEKTPHASE:beschreibung><![CDATA['.$phase->beschreibung.']]></PROJEKTPHASE:beschreibung>
<PROJEKTPHASE:start><![CDATA['.$phase->start.']]></PROJEKTPHASE:start>
<PROJEKTPHASE:ende><![CDATA['.$phase->ende.']]></PROJEKTPHASE:ende>
<PROJEKTPHASE:budget><![CDATA['.$phase->budget.']]></PROJEKTPHASE:budget>
<PROJEKTPHASE:personentage><![CDATA['.$phase->personentage.']]></PROJEKTPHASE:personentage>
</RDF:Description>'."\n";
$i=$oRdf->newObjekt($phase->projektphase_id);
echo '<RDF:Seq about="'.$rdf_url.'alle-projektphasen">
<RDF:li RDF:resource="'.$rdf_url.$phase->projektphase_id.'" />
</RDF:Seq>'."\n";
$oRdf->obj[$i]->setAttribut('projektphase_id',$phase->projektphase_id);
$oRdf->obj[$i]->setAttribut('projekt_kurzbz',$phase->projekt_kurzbz);
$oRdf->obj[$i]->setAttribut('projektphase_fk',$phase->projektphase_fk);
$oRdf->obj[$i]->setAttribut('bezeichnung',$phase->bezeichnung);
$oRdf->obj[$i]->setAttribut('beschreibung',$phase->beschreibung);
$oRdf->obj[$i]->setAttribut('start',$phase->start);
$oRdf->obj[$i]->setAttribut('ende',$phase->ende);
$oRdf->obj[$i]->setAttribut('budget',$phase->budget);
$oRdf->obj[$i]->setAttribut('personentage',$phase->personentage);
if($phase->projektphase_fk!='')
$oRdf->addSequence($phase->projektphase_id, $phase->projektphase_fk);
else
$oRdf->addSequence($phase->projektphase_id);
}
else
{
@@ -75,31 +69,40 @@ else
$projekt=$projekt_obj->result[$i];
// Bin ich schon in der naechsten OE? Oder vielleicht in der ersten?
if ($lastOE!=$currentOE || $i==0)
$descr.='<RDF:Description RDF:about="'.$rdf_url.$projekt->oe_kurzbz.'" >
<PROJEKTPHASE:bezeichnung>'.$projekt->oe_kurzbz.'</PROJEKTPHASE:bezeichnung>
<PROJEKTPHASE:oe_kurzbz>'.$projekt->oe_kurzbz.'</PROJEKTPHASE:oe_kurzbz>
<PROJEKTPHASE:projekt_kurzbz></PROJEKTPHASE:projekt_kurzbz>
<PROJEKTPHASE:projekt_phase></PROJEKTPHASE:projekt_phase>
<PROJEKTPHASE:projekt_phase_id></PROJEKTPHASE:projekt_phase_id>
<PROJEKTPHASE:nummer></PROJEKTPHASE:nummer>
<PROJEKTPHASE:titel></PROJEKTPHASE:titel>
<PROJEKTPHASE:beschreibung></PROJEKTPHASE:beschreibung>
<PROJEKTPHASE:beginn></PROJEKTPHASE:beginn>
<PROJEKTPHASE:ende></PROJEKTPHASE:ende>
</RDF:Description>'."\n";
$descr.='<RDF:Description RDF:about="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'" >
<PROJEKTPHASE:bezeichnung><![CDATA['.$projekt->titel.']]></PROJEKTPHASE:bezeichnung>
<PROJEKTPHASE:oe_kurzbz><![CDATA['.$projekt->oe_kurzbz.']]></PROJEKTPHASE:oe_kurzbz>
<PROJEKTPHASE:projekt_kurzbz><![CDATA['.$projekt->projekt_kurzbz.']]></PROJEKTPHASE:projekt_kurzbz>
<PROJEKTPHASE:projekt_phase></PROJEKTPHASE:projekt_phase>
<PROJEKTPHASE:projekt_phase_id></PROJEKTPHASE:projekt_phase_id>
<PROJEKTPHASE:nummer><![CDATA['.$projekt->nummer.']]></PROJEKTPHASE:nummer>
<PROJEKTPHASE:titel><![CDATA['.$projekt->titel.']]></PROJEKTPHASE:titel>
<PROJEKTPHASE:beschreibung><![CDATA['.$projekt->beschreibung.']]></PROJEKTPHASE:beschreibung>
<PROJEKTPHASE:beginn><![CDATA['.$projekt->beginn.']]></PROJEKTPHASE:beginn>
<PROJEKTPHASE:ende><![CDATA['.$projekt->ende.']]></PROJEKTPHASE:ende>
</RDF:Description>'."\n";
{
$idx=$oRdf->newObjekt($projekt->oe_kurzbz);
$oRdf->obj[$idx]->setAttribut('bezeichnung',$projekt->oe_kurzbz);
$oRdf->obj[$idx]->setAttribut('oe_kurzbz',$projekt->oe_kurzbz);
$oRdf->obj[$idx]->setAttribut('projekt_kurzbz','');
$oRdf->obj[$idx]->setAttribut('projekt_phase','');
$oRdf->obj[$idx]->setAttribut('projekt_phase_id','');
$oRdf->obj[$idx]->setAttribut('nummer','');
$oRdf->obj[$idx]->setAttribut('titel','');
$oRdf->obj[$idx]->setAttribut('beschreibung','');
$oRdf->obj[$idx]->setAttribut('beginn','');
$oRdf->obj[$idx]->setAttribut('ende','');
$oRdf->addSequence($projekt->oe_kurzbz);
$lastOE=$currentOE;
}
$idx=$oRdf->newObjekt($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz);
$oRdf->obj[$idx]->setAttribut('bezeichnung',$projekt->titel);
$oRdf->obj[$idx]->setAttribut('oe_kurzbz',$projekt->oe_kurzbz);
$oRdf->obj[$idx]->setAttribut('projekt_kurzbz',$projekt->projekt_kurzbz);
$oRdf->obj[$idx]->setAttribut('projekt_phase','');
$oRdf->obj[$idx]->setAttribut('projekt_phase_id','');
$oRdf->obj[$idx]->setAttribut('nummer',$projekt->nummer);
$oRdf->obj[$idx]->setAttribut('titel',$projekt->titel);
$oRdf->obj[$idx]->setAttribut('beschreibung',$projekt->beschreibung);
$oRdf->obj[$idx]->setAttribut('beginn',$projekt->beginn);
$oRdf->obj[$idx]->setAttribut('ende',$projekt->ende);
$oRdf->addSequence($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz, $projekt->oe_kurzbz);
$projektphase_obj->getProjektphasen($projekt->projekt_kurzbz);
$tmpStr='';
for ($j=0;$j<count($projektphase_obj->result);$j++)
@@ -107,92 +110,28 @@ else
$projektphase=$projektphase_obj->result[$j];
//var_dump($projektphase);
$descr.='<RDF:Description RDF:about="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id.'" >
<PROJEKTPHASE:bezeichnung><![CDATA['.$projektphase->bezeichnung.']]></PROJEKTPHASE:bezeichnung>
<PROJEKTPHASE:oe_kurzbz><![CDATA['.$projekt->oe_kurzbz.']]></PROJEKTPHASE:oe_kurzbz>
<PROJEKTPHASE:projekt_kurzbz><![CDATA['.$projektphase->projekt_kurzbz.']]></PROJEKTPHASE:projekt_kurzbz>
<PROJEKTPHASE:projekt_phase><![CDATA['.$projektphase->bezeichnung.']]></PROJEKTPHASE:projekt_phase>
<PROJEKTPHASE:projekt_phase_id><![CDATA['.$projektphase->projektphase_id.']]></PROJEKTPHASE:projekt_phase_id>
<PROJEKTPHASE:nummer><![CDATA[]]></PROJEKTPHASE:nummer>
<PROJEKTPHASE:titel><![CDATA['.$projektphase->bezeichnung.']]></PROJEKTPHASE:titel>
<PROJEKTPHASE:beschreibung><![CDATA['.$projektphase->beschreibung.']]></PROJEKTPHASE:beschreibung>
<PROJEKTPHASE:beginn><![CDATA['.$projektphase->start.']]></PROJEKTPHASE:beginn>
<PROJEKTPHASE:ende><![CDATA['.$projektphase->ende.']]></PROJEKTPHASE:ende>
<PROJEKTPHASE:budget><![CDATA['.$projektphase->budget.']]></PROJEKTPHASE:budget>
<PROJEKTPHASE:personentage><![CDATA['.$projektphase->personentage.']]></PROJEKTPHASE:personentage>
'."\n";
$idx=$oRdf->newObjekt($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id);
$oRdf->obj[$idx]->setAttribut('bezeichnung',$projektphase->bezeichnung);
$oRdf->obj[$idx]->setAttribut('oe_kurzbz',$projekt->oe_kurzbz);
$oRdf->obj[$idx]->setAttribut('projekt_kurzbz',$projektphase->projekt_kurzbz);
$oRdf->obj[$idx]->setAttribut('projekt_phase',$projektphase->bezeichnung);
$oRdf->obj[$idx]->setAttribut('projekt_phase_id',$projektphase->projektphase_id);
$oRdf->obj[$idx]->setAttribut('nummer','');
$oRdf->obj[$idx]->setAttribut('titel',$projektphase->bezeichnung);
$oRdf->obj[$idx]->setAttribut('beschreibung',$projektphase->beschreibung);
$oRdf->obj[$idx]->setAttribut('beginn',$projektphase->start);
$oRdf->obj[$idx]->setAttribut('ende',$projekt->ende);
$oRdf->obj[$idx]->setAttribut('budget',$projektphase->budget);
$oRdf->obj[$idx]->setAttribut('personentage',$projektphase->personentage);
$descr.='</RDF:Description>'."\n";
if (is_null($projektphase->projektphase_fk))
{
if ($j==0)
$tmpStr=' <RDF:li>
<RDF:Seq RDF:about="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'">'."\n";
$tmpStr.=' <RDF:li RDF:resource="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id.'" />'."\n";
$tmpStr.=check_subprojektphasen(&$projekt,&$projektphase_obj,$projektphase->projektphase_id);
if ($j==count($projektphase_obj->result)-1)
$tmpStr.=' </RDF:Seq>
</RDF:li>'."\n";
$sequenzProjektphase[$projekt->projekt_kurzbz]=$tmpStr;
}
if (!is_null($projektphase->projektphase_fk))
$oRdf->addSequence($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id, $projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_fk);
else
$oRdf->addSequence($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id, $projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz);
}
//var_dump($sequenzProjektphase);
if ($lastOE!=$currentOE)
{
$sequenz.=' <RDF:li RDF:resource="'.$rdf_url.$projekt->oe_kurzbz.'" />
<RDF:li>
<RDF:Seq RDF:about="'.$rdf_url.$projekt->oe_kurzbz.'" >'."\n";
}
// Neue OE oder letzter Datensatz? Dann muss Sequenz geschlossen werden.
if ($nextOE!=$currentOE || $i==count($projekt_obj->result)-1)
{
$sequenz.=' <RDF:li RDF:resource="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'" />'."\n";
if (isset($sequenzProjektphase[$projekt->projekt_kurzbz]))
$sequenz.=$sequenzProjektphase[$projekt->projekt_kurzbz];
$sequenz.=' </RDF:Seq>
</RDF:li>'."\n";
}
elseif ($lastOE==$currentOE || $nextOE==$currentOE || count($projekt_obj->result)==1)
{
$sequenz.='<RDF:li RDF:resource="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'" />'."\n";
if (isset($sequenzProjektphase[$projekt->projekt_kurzbz]))
$sequenz.=$sequenzProjektphase[$projekt->projekt_kurzbz];
}
$lastOE=$currentOE;
}
$sequenz='<RDF:Seq about="'.$rdf_url.'alle-projektphasen">'."\n\t".$sequenz.'
</RDF:Seq>'."\n";
echo $descr."\n";
echo $sequenz;
}
function check_subprojektphasen($projekt,$projektphase_obj,$projektphase_id)
{
global $rdf_url;
$tmpStr='';
$i=0;
for ($j=0;$j<count($projektphase_obj->result);$j++)
{
$projektphase=$projektphase_obj->result[$j];
if ($projektphase->projektphase_fk==$projektphase_id)
{
//var_dump($projektphase);
if ($i==0)
{
$tmpStr=' <RDF:li>
<RDF:Seq RDF:about="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase_id.'">'."\n";
}
$tmpStr.=' <RDF:li RDF:resource="'.$rdf_url.$projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id.'" />'."\n";
$i++;
}
}
if ($i>0)
{
$tmpStr.=' </RDF:Seq>
</RDF:li>'."\n";
}
return $tmpStr;
}
}
$oRdf->sendRdfText();
?>
</RDF:RDF>
+18 -47
View File
@@ -17,14 +17,11 @@
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>
*/
header("Content-type: application/xhtml+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/projekttask.class.php');
$rdf_url='http://www.technikum-wien.at/projekttask/';
require_once('../include/rdf.class.php');
$projekttask_obj = new projekttask();
@@ -41,53 +38,27 @@ if(isset($_GET['projekttask_id']))
$projekttask_obj->result[] = $projekttask_obj;
}
$oRdf = new rdf('PROJEKTTASK','http://www.technikum-wien.at/projekttask');
$oRdf->sendHeader();
//var_dump($projekttask_obj);
?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:PROJEKTTASK="<?php echo $rdf_url; ?>rdf#"
>
<?php
$descr='';
$sequenz='';
$lastPT=null;
for ($i=0;$i<count($projekttask_obj->result);$i++)
foreach($projekttask_obj->result as $projekttask)
{
$projekttask=$projekttask_obj->result[$i];
$currentPT=$projekttask->projekttask_id;
$nextPT=(($i<count($projekttask_obj->result)-1)?$projekttask_obj->result[$i+1]->projekttask_id:null);
$i=$oRdf->newObjekt($projekttask->projekttask_id);
$descr.='<RDF:Description RDF:about="'.$rdf_url.$projekttask->projekttask_id.'" >
<PROJEKTTASK:projekttask_id>'.$projekttask->projekttask_id.'</PROJEKTTASK:projekttask_id>
<PROJEKTTASK:projektphase_id>'.$projekttask->projektphase_id.'</PROJEKTTASK:projektphase_id>
<PROJEKTTASK:bezeichnung>'.$projekttask->bezeichnung.'</PROJEKTTASK:bezeichnung>
<PROJEKTTASK:beschreibung>'.$projekttask->beschreibung.'</PROJEKTTASK:beschreibung>
<PROJEKTTASK:aufwand>'.$projekttask->aufwand.'</PROJEKTTASK:aufwand>
<PROJEKTTASK:mantis_id>'.$projekttask->mantis_id.'</PROJEKTTASK:mantis_id>
</RDF:Description>'."\n";
$oRdf->obj[$i]->setAttribut('projekttask_id',$projekttask->projekttask_id);
$oRdf->obj[$i]->setAttribut('projektphase_id',$projekttask->projektphase_id);
$oRdf->obj[$i]->setAttribut('bezeichnung',$projekttask->bezeichnung);
$oRdf->obj[$i]->setAttribut('beschreibung',$projekttask->beschreibung);
$oRdf->obj[$i]->setAttribut('aufwand',$projekttask->aufwand);
$oRdf->obj[$i]->setAttribut('mantis_id',$projekttask->mantis_id);
$oRdf->obj[$i]->setAttribut('erledigt',$projekttask->erledigt);
$oRdf->obj[$i]->setAttribut('projekttask_fk',$projekttask->projekttask_fk);
if ($lastPT!=$currentPT)
$sequenz.=' <RDF:li RDF:resource="'.$rdf_url.$projekttask->projekttask_id.'" />
<RDF:li>
<RDF:Seq RDF:about="'.$rdf_url.$projekttask->projekttask_id.'" >'."\n";
// Neue OE oder letzter Datensatz? Dann muss Sequenz geschlossen werden.
if ($nextPT!=$currentPT || $i==count($projekttask_obj->result)-1)
{
$sequenz.=' <RDF:li RDF:resource="'.$rdf_url.$projekttask->projekttask_id.'" />'."\n";
$sequenz.=' </RDF:Seq>
</RDF:li>'."\n";
}
elseif ($lastPT==$currentPT || $nextPT==$currentPT || count($projekttask_obj->result)==1)
$sequenz.='<RDF:li RDF:resource="'.$rdf_url.$projekttask->projekttask_id.'" />'."\n";
$lastPT=$currentPT;
if($projekttask->projekttask_fk!='')
$oRdf->addSequence($projekttask->projekttask_id, $projekttask->projekttask_fk);
else
$oRdf->addSequence($projekttask->projekttask_id);
}
$sequenz='<RDF:Seq about="'.$rdf_url.'alle-projekttasks">'."\n\t".$sequenz.'
</RDF:Seq>'."\n";
echo $descr."\n";
echo $sequenz;
$oRdf->sendRdfText();
?>
</RDF:RDF>
+28
View File
@@ -36,6 +36,7 @@ $SOAPServer = new SoapServer(APP_ROOT."/soap/projekttask.wsdl.php?".microtime())
$SOAPServer->addFunction("saveProjekttask");
$SOAPServer->addFunction("deleteProjekttask");
$SOAPServer->addFunction("saveMantis");
$SOAPServer->addFunction("setErledigt");
$SOAPServer->handle();
// WSDL Chache auf aus
@@ -151,6 +152,33 @@ function saveMantis($projekttask_id, $mantis_id, $issue_summary, $issue_descript
return new SoapFault("Server", 'Fehler:'.$mantis->errormsg);
}
}
/**
*
* Setzt den Erledigt Status
* @param $projekttask_id
* @param $erledigt
*/
function setErledigt($projekttask_id, $erledigt)
{
$projekttask = new projekttask();
if($projekttask->load($projekttask_id))
{
$projekttask->new = false;
$projekttask->erledigt=$erledigt;
if($projekttask->save())
{
return $projekttask->projekttask_id;
}
else
return new SoapFault("Server", $projekttask->errormsg);
}
else
return new SoapFault("Server", "Fehler beim Laden");
}
?>
+21
View File
@@ -33,6 +33,14 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:part name="message" type="xsd:string"></wsdl:part>
</wsdl:message>
<wsdl:message name="setErledigtRequest">
<wsdl:part name="projekttask_id" type="xsd:string"></wsdl:part>
<wsdl:part name="erledigt" type="xsd:boolean"></wsdl:part>
</wsdl:message>
<wsdl:message name="setErledigtResponse">
<wsdl:part name="message" type="xsd:string"></wsdl:part>
</wsdl:message>
<wsdl:message name="SaveMantisRequest">
<wsdl:part name="projekttask_id" type="xsd:string"></wsdl:part>
<wsdl:part name="mantis_id" type="xsd:string"></wsdl:part>
@@ -85,6 +93,10 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:input message="tns:SaveMantisRequest"></wsdl:input>
<wsdl:output message="tns:SaveMantisResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="setErledigt">
<wsdl:input message="tns:setErledigtRequest"></wsdl:input>
<wsdl:output message="tns:setErledigtResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ConfigBinding" type="tns:ConfigPortType">
@@ -116,6 +128,15 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:body use="encoded" namespace="http://localhost/soap/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="setErledigt">
<soap:operation soapAction="<?php echo APP_ROOT."soap/setErledigt";?>" />
<wsdl:input>
<soap:body use="encoded" namespace="http://localhost/soap/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</wsdl:input>
<wsdl:output>
<soap:body use="encoded" namespace="http://localhost/soap/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Projekttask">