From 8499810bc8fef32defbf2919ee9380aebfd25b93 Mon Sep 17 00:00:00 2001 From: Nazar Kanaev Date: Thu, 2 Jul 2020 18:43:41 +0100 Subject: [PATCH] delete folder --- server/handlers.go | 9 +++++ template/index.html | 65 ++++++++++++++++++------------ template/static/javascripts/api.js | 3 ++ template/static/javascripts/app.js | 28 +++++++++---- 4 files changed, 72 insertions(+), 33 deletions(-) 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 + +
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