diff options
| -rw-r--r-- | app/node_modules/okadminview/index.js | 15 | ||||
| -rw-r--r-- | app/node_modules/okresource/index.js | 12 | ||||
| -rw-r--r-- | themes/okadmin/templates/resource.liquid | 4 |
3 files changed, 26 insertions, 5 deletions
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js index 987fe51..a376df5 100644 --- a/app/node_modules/okadminview/index.js +++ b/app/node_modules/okadminview/index.js @@ -175,6 +175,21 @@ function OKAdminView(options) { } }); + router.delete('/:type/:id/', function deleteResource(req, res, next) { + var type = req.params.type; + var id = req.params.id; + var resource = resourceCache.get(type, id); + if (!resource) { + errorHandler(req, res)(new Error('No such resource ' + type)); + } else { + meta.get().then(function(metadata) { + resource.destroy(id).then(function() { + res.redirect(303, '../..'); + }).fail(errorHandler(req, res)); + }).fail(errorHandler(req, res)); + } + }); + return router; } } diff --git a/app/node_modules/okresource/index.js b/app/node_modules/okresource/index.js index febd1d5..0e8498f 100644 --- a/app/node_modules/okresource/index.js +++ b/app/node_modules/okresource/index.js @@ -91,14 +91,16 @@ OKResource.prototype.create = function(data) { }); }; -OKResource.prototype.destroy = function(data) { - data = data || {}; - var id = data[this.idField]; +OKResource.prototype.destroy = function(id) { + var db = this._db; + var type = this.type; + var query = {}; + query[this.idField] = id; return Q.promise(function(resolve, reject) { if (!id) { - reject(new Error('Data does not contain ID property')); + reject(new Error('No ID given')); } else { - this._db.remove(this.type, data.id, data).then(resolve).fail(reject); + db.remove(type, query).then(resolve).fail(reject); } }); }; diff --git a/themes/okadmin/templates/resource.liquid b/themes/okadmin/templates/resource.liquid index c0d348d..48e3ef2 100644 --- a/themes/okadmin/templates/resource.liquid +++ b/themes/okadmin/templates/resource.liquid @@ -14,6 +14,10 @@ <label> </label><button type="submit">Save</button> <div class="clear"></div> </form> + <form action="." method="POST"> + <input type="hidden" name="_method" value="DELETE"> + <button type="submit">Delete</button> + </form> </section> {% include 'partials/tail' %} |
