diff --git a/server/handlers.go b/server/handlers.go
index dded911..64e9ff0 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -77,6 +77,15 @@ func FolderListHandler(rw http.ResponseWriter, req *http.Request) {
}
func FolderHandler(rw http.ResponseWriter, req *http.Request) {
+ if req.Method == "DELETE" {
+ id, err := strconv.ParseInt(Vars(req)["id"], 10, 64)
+ if err != nil {
+ rw.WriteHeader(http.StatusBadRequest)
+ return
+ }
+ db(req).DeleteFolder(id)
+ rw.WriteHeader(http.StatusNoContent)
+ }
}
type NewFeed struct {
diff --git a/template/index.html b/template/index.html
index 4607397..6857555 100644
--- a/template/index.html
+++ b/template/index.html
@@ -117,37 +117,50 @@
-
{{ folder.title || "Uncategorized" }}
+
+
{{ folder.title || "Uncategorized" }}
+
+
+
+
+
+ Rename
+
+
+ Delete
+
+
+
+
{{ feed.title }}
-
-
-
-
-
- Rename
-
- Move to...
-
- {{ folder.title }}
-
-
- Uncategorized
-
-
-
- Delete
-
-
-
+
+
+
+
+ Rename
+
+ Move to...
+
+ {{ folder.title }}
+
+
+ Uncategorized
+
+
+
+ Delete
+
+
diff --git a/template/static/javascripts/api.js b/template/static/javascripts/api.js
index 1351a49..e6f0240 100644
--- a/template/static/javascripts/api.js
+++ b/template/static/javascripts/api.js
@@ -32,6 +32,9 @@
create: function(data) {
return api('post', '/api/folders', data).then(json)
},
+ delete: function(id) {
+ return api('delete', '/api/folders/' + id)
+ },
}
}
})()
diff --git a/template/static/javascripts/app.js b/template/static/javascripts/app.js
index f390635..36d94b4 100644
--- a/template/static/javascripts/app.js
+++ b/template/static/javascripts/app.js
@@ -9,13 +9,7 @@ var FILTERS = [
var vm = new Vue({
el: '#app',
created: function() {
- var vm = this
- Promise
- .all([api.folders.list(), api.feeds.list()])
- .then(function(values) {
- vm.folders = values[0]
- vm.feeds = values[1]
- })
+ this.refresh()
},
data: function() {
return {
@@ -65,6 +59,15 @@ var vm = new Vue({
},
},
methods: {
+ refresh: function() {
+ var vm = this
+ Promise
+ .all([api.folders.list(), api.feeds.list()])
+ .then(function(values) {
+ vm.folders = values[0]
+ vm.feeds = values[1]
+ })
+ },
toggleFolderExpanded: function(folder) {
folder.is_expanded = !folder.is_expanded
},
@@ -83,6 +86,17 @@ var vm = new Vue({
vm.folders.push(result)
})
},
+ renameFolder: function(folder) {
+
+ },
+ deleteFolder: function(folder) {
+ var vm = this
+ if (confirm('Are you sure you want to delete ' + folder.title + '?')) {
+ api.folders.delete(folder.id).then(function() {
+ vm.refresh()
+ })
+ }
+ },
renameFeed: function(feed) {
var newTitle = prompt('Enter new title', feed.title)
feed.title = newTitle