diff --git a/server/handlers.go b/server/handlers.go
index 9ae6cf4..dded911 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -47,11 +47,32 @@ func StatusHandler(rw http.ResponseWriter, req *http.Request) {
})
}
+type NewFolder struct {
+ Title string `json:"title"`
+}
+
func FolderListHandler(rw http.ResponseWriter, req *http.Request) {
if req.Method == "GET" {
list := db(req).ListFolders()
fmt.Println(list)
json.NewEncoder(rw).Encode(list)
+ } else if req.Method == "POST" {
+ var body NewFolder
+ if err := json.NewDecoder(req.Body).Decode(&body); err != nil {
+ log.Print(err)
+ rw.WriteHeader(http.StatusBadRequest)
+ return
+ }
+ if len(body.Title) == 0 {
+ rw.WriteHeader(http.StatusBadRequest)
+ writeJSON(rw, map[string]string{"error": "Folder title missing."})
+ return
+ }
+ folder := db(req).CreateFolder(body.Title)
+ rw.WriteHeader(http.StatusCreated)
+ json.NewEncoder(rw).Encode(folder)
+ } else {
+ rw.WriteHeader(http.StatusMethodNotAllowed)
}
}
diff --git a/template/index.html b/template/index.html
index c44a16e..4607397 100644
--- a/template/index.html
+++ b/template/index.html
@@ -152,13 +152,15 @@
diff --git a/template/static/javascripts/api.js b/template/static/javascripts/api.js
index 244542b..1351a49 100644
--- a/template/static/javascripts/api.js
+++ b/template/static/javascripts/api.js
@@ -29,6 +29,9 @@
list: function() {
return api('get', '/api/folders').then(json)
},
+ create: function(data) {
+ return api('post', '/api/folders', data).then(json)
+ },
}
}
})()
diff --git a/template/static/javascripts/app.js b/template/static/javascripts/app.js
index 7b4eec3..f390635 100644
--- a/template/static/javascripts/app.js
+++ b/template/static/javascripts/app.js
@@ -27,7 +27,6 @@ var vm = new Vue({
'items': [],
'itemSelected': null,
'settings': 'manage',
- 'newFolderTitle': null,
'loading': {newfeed: 0},
}
},
@@ -76,11 +75,12 @@ var vm = new Vue({
moveFeed: function(feed, folder) {
feed.folder_id = folder ? folder.id : null
},
- newFolderCreate: function() {
- this.folders.push({
- id: Math.random() * 10000,
- title: this.newFolderTitle,
- is_expanded: true,
+ createFolder: function(event) {
+ var form = event.target
+ var data = {'title': form.querySelector('input[name=title]').value}
+ var vm = this
+ api.folders.create(data).then(function(result) {
+ vm.folders.push(result)
})
},
renameFeed: function(feed) {