- Notizen können per klick im Tree erledigt werden

- Bugfix für Tree-Column Resize in XBLs
This commit is contained in:
Andreas Österreicher
2011-09-22 14:34:13 +00:00
parent 5e5b898c39
commit fe2c88c4df
7 changed files with 144 additions and 21 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ function NotizInit(id)
verfasser = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#verfasser_uid" ));
bearbeiter = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bearbeiter_uid" ));
erledigt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#erledigt" ));
if(erledigt=='Ja')
if(erledigt=='true')
erledigt=true;
else
erledigt=false;
+68 -16
View File
@@ -50,46 +50,49 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/notiz/liste"
ondblclick="document.getBindingParent(this).openNotiz(document.getBindingParent(this).value);"
onclick="document.getBindingParent(this).updateErledigt(event);"
editable="true"
>
<xul:treecols>
<xul:treecol anonid="treecol-notiz-titel" label="Titel" flex="5" primary="true" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#titel" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-text" label="Text" flex="2" hidden="false" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#text" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-verfasser" label="Verfasser" flex="2" hidden="false" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#verfasser_uid" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-bearbeiter" label="Bearbeiter" flex="2" hidden="true" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#bearbeiter_uid" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-start" label="Start" flex="2" hidden="false" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#startISO" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-ende" label="Ende" flex="2" hidden="false" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#endeISO" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-erledigt" label="Erledigt" flex="2" hidden="true" persist="hidden width ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#erledigt" />
<xul:treecol anonid="treecol-notiz-erledigt" label="Erledigt" flex="2" hidden="false" persist="hidden width ordinal"
class="sortDirectionIndicator" type="checkbox" editable="true"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#erledigt_boolean" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-notiz_id" label="NotizID" flex="2" hidden="true" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#notiz_id" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-startISO" label="StartISO" flex="2" hidden="true" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#startISO" />
<xul:splitter class="tree-splitter"/>
<xul:treecol anonid="treecol-notiz-ende" label="EndeISO" flex="2" hidden="true" persist="hidden width ordinal"
class="sortDirectionIndicator"
class="sortDirectionIndicator" editable="false"
sort="rdf:http://www.technikum-wien.at/notiz/rdf#endeISO" />
</xul:treecols>
@@ -104,7 +107,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#bearbeiter_uid"/>
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#start"/>
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#ende"/>
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#erledigt"/>
<xul:treecell label="erledigt" value="rdf:http://www.technikum-wien.at/notiz/rdf#erledigt"/>
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#notiz_id"/>
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#startISO"/>
<xul:treecell label="rdf:http://www.technikum-wien.at/notiz/rdf#endeISO"/>
@@ -159,6 +162,52 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
]]>
</body>
</method>
<method name="updateErledigt">
<parameter name="event"/>
<body>
<![CDATA[
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);
var col = tree.columns.getColumnFor(document.getAnonymousElementByAttribute(this ,'anonid', 'treecol-notiz-notiz_id'));
var id = tree.view.getCellText(row.value, col);
if(text=='erledigt')
{
var soapBody = new SOAPObject("setErledigt");
soapBody.appendChild(new SOAPObject("notiz_id")).val(id);
soapBody.appendChild(new SOAPObject("erledigt")).val(val);
var sr = new SOAPRequest("setErledigt",soapBody);
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/notiz.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;
}
});
}
]]>
</body>
</method>
<method name="LoadNotizTree">
<parameter name="projekt_kurzbz"/>
<parameter name="projektphase_id"/>
@@ -234,15 +283,18 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
{ alert("error! " + aErrorMsg); }
});
tree.builder.addListener({
notiz: this,
willRebuild : function(builder)
{
},
didRebuild : function(builder)
{
//debug("didrebuild");
//builder.removeListener(this);
//Workaround damit das Resize des Trees funktioniert
var tree = document.getAnonymousElementByAttribute(this.notiz ,'anonid', 'tree-notiz');
tree.columns.restoreNaturalOrder();
}
});
}
catch(e)
{
@@ -299,7 +351,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
|| uid!='' || person_id!='' || prestudent_id!='' || bestellung_id!='' || user!='')
{
this.LoadNotizTree(projekt_kurzbz,projektphase_id,projekttask_id,uid,person_id,prestudent_id,bestellung_id, user);
}
}
</constructor>
<destructor>
//debug('Notiz Binding Stop');
+5 -1
View File
@@ -298,8 +298,12 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
},
didRebuild : function(builder)
{
var tree = document.getAnonymousElementByAttribute(this.ressource ,'anonid', 'tree-ressource');
//Workaround damit das Resize des Trees funktioniert
tree.columns.restoreNaturalOrder();
//Nach dem Laden alle Subtrees aufklappen
var tree = document.getAnonymousElementByAttribute(this.ressource ,'anonid', 'tree-ressource');
var treeView = tree.treeBoxObject.view;
for (var i = 0; i < treeView.rowCount; i++)
{
+1 -1
View File
@@ -71,7 +71,7 @@ foreach($notiz->result as $row)
<NOTIZ:ende><![CDATA['.$datum_obj->formatDatum($row->ende,'d.m.Y').']]></NOTIZ:ende>
<NOTIZ:startISO><![CDATA['.$row->start.']]></NOTIZ:startISO>
<NOTIZ:endeISO><![CDATA['.$row->ende.']]></NOTIZ:endeISO>
<NOTIZ:erledigt><![CDATA['.($row->erledigt?'Ja':'Nein').']]></NOTIZ:erledigt>
<NOTIZ:erledigt><![CDATA['.($row->erledigt?'true':'false').']]></NOTIZ:erledigt>
<NOTIZ:insertamum><![CDATA['.$row->insertamum.']]></NOTIZ:insertamum>
<NOTIZ:insertvon><![CDATA['.$row->insertvon.']]></NOTIZ:insertvon>
<NOTIZ:updateamum><![CDATA['.$row->updateamum.']]></NOTIZ:updateamum>
+15 -1
View File
@@ -1,5 +1,6 @@
@import url("chrome://global/skin/");
button
{
font-size: x-small;
@@ -46,4 +47,17 @@ treechildren::-moz-tree-row(odd) { background-color: #EEEEEE; }
treechildren::-moz-tree-row(odd, selected) { background-color: #FFFFAA; }
treechildren::-moz-tree-row(even, selected) { background-color: #FFFFAA; }
treechildren::-moz-tree-cell-text(selected) { color: #000000; }
treechildren::-moz-tree-cell-text(odd, selected) { color: #000000; }
treechildren::-moz-tree-cell-text(odd, selected) { color: #000000; }
treechildren::-moz-tree-checkbox
{
/* unchecked checkbox treecells. This style MUST come before treechildren::-moz-tree-checkbox(checked) otherwise it won't take effect. */
list-style-image: url("../skin/images/false_red.png");
}
treechildren::-moz-tree-checkbox(checked)
{
/* css for checked cells. cbox-check.gif isn't available in Firefox 1, 2, and 3 on Mac OS X, so you should specify a URL to an image
in your extension or elsewhere. */
/*list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif");*/
list-style-image: url("../skin/images/true_green.png");
}
+33
View File
@@ -33,6 +33,7 @@ require_once('../include/benutzerberechtigung.class.php');
$SOAPServer = new SoapServer(APP_ROOT."/soap/notiz.wsdl.php?".microtime());
$SOAPServer->addFunction("saveNotiz");
$SOAPServer->addFunction("deleteNotiz");
$SOAPServer->addFunction("setErledigt");
$SOAPServer->handle();
// WSDL Chache auf aus
@@ -134,6 +135,38 @@ function deleteNotiz($notiz_id)
else
return new SoapFault("Server", $projekttask->errormsg);
}
/**
*
* Setzt den erledigt Status
* @param $notiz_id
* @param $erledigt
*/
function setErledigt($notiz_id, $erledigt)
{
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/notiz', null, 'su'))
return new SoapFault("Server", "Sie haben keine Berechtigung zum Speichern von Notizen");
$notiz = new notiz();
if($notiz->load($notiz_id))
{
$notiz->erledigt=$erledigt;
if($notiz->save())
{
return true;
}
else
return new SoapFault("Server", $notiz->errormsg);
}
else
return new SoapFault("Server", "Fehler beim Laden");
}
?>
+21 -1
View File
@@ -40,6 +40,13 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:message name="deleteNotizResponse">
<wsdl:part name="message" type="xsd:string"></wsdl:part>
</wsdl:message>
<wsdl:message name="setErledigtRequest">
<wsdl:part name="notiz_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:portType name="ConfigPortType" >
<wsdl:operation name="saveNotiz">
@@ -50,6 +57,10 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:input message="tns:deleteNotizRequest"></wsdl:input>
<wsdl:output message="tns:deleteNotizResponse"></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">
@@ -71,7 +82,16 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:output>
<soap:body use="encoded" namespace="http://localhost/soap/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</wsdl:output>
</wsdl:operation>
</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="Notiz">