svn: /pear2/BugManager/trunk/ src/BugManager/Issue.php src/BugManager/Site/PEAR/IssueManager.php www/jsonrpc.php www/pearworm/source/class/pearworm/BugController.js www/pearworm/source/class/pearworm/HistoryController.js www/pearworm/source/class/pearworm/MainWindow.js www/pearworm/source/class/pearworm/model/Issue.js www/pearworm/source/class/pearworm/view/ReportIssue.js
[email protected] (Greg Beaver) Sat, 11 Sep 2010 15:11:26 +0000
| Newsgroups | php.pear.cvs,php.pear.core |
|---|---|
| Message-ID | <[email protected]> |
cellog Sat, 11 Sep 2010 15:11:26 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=303276
Log:
hallelujah, adding a new bug works fully! Now just have to implement search and we are ready to do the finer-grained stuff like user login detection and login form
Changed paths:
U pear2/BugManager/trunk/src/BugManager/Issue.php
U pear2/BugManager/trunk/src/BugManager/Site/PEAR/IssueManager.php
U pear2/BugManager/trunk/www/jsonrpc.php
U pear2/BugManager/trunk/www/pearworm/source/class/pearworm/BugController.js
U pear2/BugManager/trunk/www/pearworm/source/class/pearworm/HistoryController.js
U pear2/BugManager/trunk/www/pearworm/source/class/pearworm/MainWindow.js
U pear2/BugManager/trunk/www/pearworm/source/class/pearworm/model/Issue.js
U pear2/BugManager/trunk/www/pearworm/source/class/pearworm/view/ReportIssue.js
svn-diffs-303276.txt
(text/x-diff, 13.5 KB)
Modified: pear2/BugManager/trunk/src/BugManager/Issue.php
===================================================================
--- pear2/BugManager/trunk/src/BugManager/Issue.php 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/src/BugManager/Issue.php 2010-09-11 15:11:26 UTC (rev 303276)
@@ -123,6 +123,9 @@
$val = $this->$name;
if (is_array($val)) {
foreach ($val as $i => $item) {
+ if (!is_object($item)) {
+ var_dump($item);exit;
+ }
$val[$i] = $item->toJson();
}
} elseif ($val instanceof ContextContainer) {
@@ -140,6 +143,9 @@
if ($ret['modifiedtimestamp'] === null) {
$ret['modifiedtimestamp'] = 'Never';
}
+ if (!is_array($ret['assigned'])) {
+ $ret['assigned'] = array();
+ }
$ret['assignedsummary'] = implode(',', array_map(function($a){return $a['handle'];},
$ret['assigned']));
$this->startDecorators();
@@ -489,6 +495,7 @@
$this->retrieve();
} else {
$this->reporter = \PEAR2\BugManager\Main::site()->defaultActorManager()->loggedinUser();
+ $this->status = "Open";
}
$errs = new \PEAR2\MultiErrors;
if (isset($input['phpversion'])) {
@@ -578,6 +585,10 @@
throw new ValidationException('Errors in form', 0, null, $errs);
}
$this->save();
+ $bug = new self;
+ $bug->id = $this->id;
+ $bug->retrieve();
+ return $bug->toJson();
}
static function listStatuses($asis = false)
Modified: pear2/BugManager/trunk/src/BugManager/Site/PEAR/IssueManager.php
===================================================================
--- pear2/BugManager/trunk/src/BugManager/Site/PEAR/IssueManager.php 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/src/BugManager/Site/PEAR/IssueManager.php 2010-09-11 15:11:26 UTC (rev 303276)
@@ -224,8 +224,21 @@
$this->esc($value) . '"';
} elseif ($contextname == 'packageversion') {
Issue::addEscaper($this->escaper);
+ // first determine if there are any releases at all
$sql = 'SELECT COUNT(*) as count FROM packages p, releases r
WHERE p.name=' . $bug->context['packagename']->value() . ' AND
+ r.package=p.id';
+ $result = $this->mysqli->query($sql);
+ if ($result === false) {
+ throw new BugManager\UnexpectedValueException('Database error: '.$this->mysqli->error);
+ }
+ $ret = $result->fetch_assoc();
+ if (!$ret['count']) {
+ return $value === null || $value === "";
+ }
+
+ $sql = 'SELECT COUNT(*) as count FROM packages p, releases r
+ WHERE p.name=' . $bug->context['packagename']->value() . ' AND
r.package=p.id AND
r.version="' . $this->esc($value) . '"';
} else {
Modified: pear2/BugManager/trunk/www/jsonrpc.php
===================================================================
--- pear2/BugManager/trunk/www/jsonrpc.php 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/www/jsonrpc.php 2010-09-11 15:11:26 UTC (rev 303276)
@@ -14,8 +14,10 @@
if ($exception instanceof JsonRpcException) {
if ($exception->getPrevious() instanceof PEAR2\BugManager\ValidationException) {
$message = $exception->getMessage();
- foreach ($exception->getPrevious()->getPrevious() as $err) {
- $message .= "\n" . $err->getMessage();
+ if ($exception->getPrevious()->getPrevious() instanceof PEAR2\MultiErrors) {
+ foreach ($exception->getPrevious()->getPrevious() as $err) {
+ $message .= "\n" . $err->getMessage();
+ }
}
} else {
$message = $exception->getMessage();
Modified: pear2/BugManager/trunk/www/pearworm/source/class/pearworm/BugController.js
===================================================================
--- pear2/BugManager/trunk/www/pearworm/source/class/pearworm/BugController.js 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/www/pearworm/source/class/pearworm/BugController.js 2010-09-11 15:11:26 UTC (rev 303276)
@@ -22,7 +22,8 @@
extend : qx.core.Object,
events: {
- "buglistUpdated" : "qx.event.type.Data"
+ "buglistUpdated" : "qx.event.type.Data",
+ "reloadTables" : "qx.event.type.Data"
},
members : {
@@ -33,6 +34,7 @@
for (var i = 0; i < this._bugs.length; i++) {
if (this._bugs[i].issue == null) {
delete this._bugs[i].issue;
+ delete this._bugs[i];
}
}
alert("Could not load bug: " + result.getData().message);
@@ -50,6 +52,7 @@
removeBug: function(id, doevent, removepane)
{
if (!this._bugs[id]) {
+ delete this._bugs[id];
return;
}
if (removepane) {
@@ -95,10 +98,17 @@
},
handleSelection: function(e)
{
+ if (!e.getData().length) {
+ this._bugs = {};
+ this.fireDataEvent("buglistUpdated", null);
+ return;
+ }
var id = e.getData()[0].getIssue().getId();
- var temp = this._bugs[id];
- delete this._bugs[id];
- this._bugs[id] = temp;
+ if (this._bugs[id]) {
+ var temp = this._bugs[id];
+ delete this._bugs[id];
+ this._bugs[id] = temp;
+ }
this.fireDataEvent("buglistUpdated", null);
},
displayBug: function(id, view, data)
@@ -150,6 +160,7 @@
myview.addListener("newbug", function(e) {
this.removeBug(-1, false, true);
this.displayBug(e.getData().id, "bug", e.getData());
+ this.fireDataEvent("reloadTables", null);
}, this);
}
this._pane.add(myview);
Modified: pear2/BugManager/trunk/www/pearworm/source/class/pearworm/HistoryController.js
===================================================================
--- pear2/BugManager/trunk/www/pearworm/source/class/pearworm/HistoryController.js 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/www/pearworm/source/class/pearworm/HistoryController.js 2010-09-11 15:11:26 UTC (rev 303276)
@@ -121,6 +121,18 @@
if (select) {
this._bugcontroller.selectBug(-1);
}
+ },
+
+ startWork: function()
+ {
+ // initial state retrieval
+ var state = qx.bom.History.getInstance().getState();
+ this.setApplicationState(state);
+ },
+
+ setupReloader: function(func, context)
+ {
+ this._bugcontroller.addListener("reloadTables", func, context);
}
},
construct : function(leftpane, rightpane)
@@ -132,9 +144,6 @@
this._bugcontroller = new pearworm.BugController(this._right);
this._bugcontroller.addListener("buglistUpdated", this.saveState, this);
- // initial state retrieval
- var state = qx.bom.History.getInstance().getState();
- this.setApplicationState(state);
qx.bom.History.getInstance().addListener("request", function(e)
{
var state = e.getData();
Modified: pear2/BugManager/trunk/www/pearworm/source/class/pearworm/MainWindow.js
===================================================================
--- pear2/BugManager/trunk/www/pearworm/source/class/pearworm/MainWindow.js 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/www/pearworm/source/class/pearworm/MainWindow.js 2010-09-11 15:11:26 UTC (rev 303276)
@@ -24,6 +24,9 @@
statics: {
HISTORY: null
},
+ events: {
+ "bugOK" : "qx.event.type.Data"
+ },
construct : function()
{
this.base(arguments, "vertical");
@@ -31,15 +34,25 @@
unused.listStatuses();
unused.listPackages();
unused.listPhpversions();
- var subpane = new qx.ui.splitpane.Pane("horizontal");
-
- var start = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)),
+ unused.addListener("dataLoaded", function() {
+ this._dataLoaded++;
+ if (this._dataLoaded == 3) {
+ this.fireDataEvent("bugOK", null);
+ }
+ }, this);
+ this.addListener("bugOK", function() {
+ pearworm.MainWindow.HISTORY.startWork();
+ });
+ var subpane = new qx.ui.splitpane.Pane("horizontal"),
+ start = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)),
table = new qx.ui.table.Table(),
tablemodel = new pearworm.RemoteTable(),
detail = new qx.ui.tabview.TabView("top"),
columns = table.getTableColumnModel(),
historymanager = new pearworm.HistoryController(table, detail);
pearworm.MainWindow.HISTORY = historymanager;
+ this._tablemodel = tablemodel;
+ historymanager.setupReloader(this.reloadTableData, this);
tablemodel.setColumns(["Id", "Date", "Last Modified", "Type", "Summary", "Site", "Reporter", "Assigned"],
["id", "createtimestamp", "modifiedtimestamp", "type", "summary", "primarycategory",
@@ -71,5 +84,13 @@
newbug.addListener("execute", function() {
historymanager.displayReportBug(true);
});
+ },
+ members: {
+ _dataLoaded: 0,
+ _tablemodel: null,
+ reloadTableData: function()
+ {
+ this._tablemodel.reloadData();
+ }
}
});
Modified: pear2/BugManager/trunk/www/pearworm/source/class/pearworm/model/Issue.js
===================================================================
--- pear2/BugManager/trunk/www/pearworm/source/class/pearworm/model/Issue.js 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/www/pearworm/source/class/pearworm/model/Issue.js 2010-09-11 15:11:26 UTC (rev 303276)
@@ -24,6 +24,7 @@
events: {
"dirty" : "qx.event.type.Data",
"clean" : "qx.event.type.Data",
+ "newbug" : "qx.event.type.Data",
"dataLoaded" : "qx.event.type.Data"
},
@@ -68,7 +69,8 @@
event: "changeAttachments"
},
packagename : {
- event: "changePackagename"
+ event: "changePackagename",
+ init: ""
},
packageversion : {
event: "changePackageversion",
Modified: pear2/BugManager/trunk/www/pearworm/source/class/pearworm/view/ReportIssue.js
===================================================================
--- pear2/BugManager/trunk/www/pearworm/source/class/pearworm/view/ReportIssue.js 2010-09-11 15:02:10 UTC (rev 303275)
+++ pear2/BugManager/trunk/www/pearworm/source/class/pearworm/view/ReportIssue.js 2010-09-11 15:11:26 UTC (rev 303276)
@@ -48,6 +48,8 @@
var form = new qx.ui.form.Form();
var manager = form.getValidationManager();
var formcontroller = new qx.data.controller.Form(this._issue);
+ this._formcontroller = formcontroller;
+ this._form = form;
var pvmodel = this._issue.listPhpversions();
var packagemodel = this._issue.listPackages();
var typemodel = qx.data.marshal.Json.createModel([
@@ -155,6 +157,7 @@
typecontroller.setTarget(typefield);
var packagecontroller = new qx.data.controller.List();
+ this._packagecontroller = packagecontroller;
packagecontroller.setModel(packagemodel);
packagecontroller.setLabelPath("name");
var packagefield = new qx.ui.form.SelectBox().set({
@@ -163,25 +166,25 @@
});
packagecontroller.setTarget(packagefield);
- if (packagemodel === null) {
- this._issue.addListener("dataLoaded", function(e) {
- if (e.getData() == "packages") {
- var p = this._issue.listPackages();
- packagecontroller.setModel(p);
- this._issue.setPackagename(p.getItem(0).getName());
- }
- }, this);
- }
-
var packageversioncontroller = new qx.data.controller.List();
+ this._packageversioncontroller = packageversioncontroller;
packagecontroller.bind("selection[0].versions", packageversioncontroller, "model");
packageversioncontroller.setLabelPath("name");
var packageversionfield = new qx.ui.form.SelectBox().set({
minWidth: 150
});
packageversioncontroller.setTarget(packageversionfield);
+ packageversioncontroller.addListener("changeModel", function(e) {
+ var model = e.getData();
+ if (model.getLength()) {
+ this.setPackageversion(model.getItem(0).getName());
+ } else {
+ this.setPackageversion(null);
+ }
+ }, this._issue);
var pvcontroller = new qx.data.controller.List();
+ this._pvcontroller = pvcontroller;
pvcontroller.setModel(pvmodel);
pvcontroller.setLabelPath("name");
var pvfield = new qx.ui.form.SelectBox().set({
@@ -190,14 +193,6 @@
});
pvcontroller.setTarget(pvfield);
- if (pvmodel === null) {
- this._issue.addListener("dataLoaded", function(e) {
- if (e.getData() == "phpversion") {
- pvcontroller.setModel(this._issue.listPhpversions());
- }
- }, this);
- }
-
var summaryfield = new qx.ui.form.TextField("").set({
minWidth: 400,
required: true
@@ -243,7 +238,12 @@
});
scroller.add(renderer);
return scroller;
- }
+ },
+ _formcontroller: null,
+ _form: null,
+ _packagecontroller: null,
+ _pvcontroller: null,
+ _packageversioncontroller: null
},
construct : function(issue) {
this.base(arguments);
@@ -266,6 +266,7 @@
issue.setSecondarycategories("");
issue.setNewcomment("");
issue.setDescription("");
+ issue.setPackageversion(null);
issue.setAssigned([]); // todo: add 3 assigned dropdowns
issue.setAttachments([]);
}