create folder

This commit is contained in:
Nazar Kanaev 2020-07-02 17:47:14 +01:00
parent 8ed55fe1e7
commit 07310cbc8f
4 changed files with 38 additions and 12 deletions

View File

@ -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)
}
}

View File

@ -152,13 +152,15 @@
</div>
</div>
<div class="mt-5">
<form action="" @submit.prevent="createFolder(event)">
<label for="settings-new-folder">New Folder</label>
<div class="input-group">
<input id="settings-new-folder" type="text" class="form-control" v-model="newFolderTitle">
<input id="settings-new-folder" type="text" class="form-control" name="title">
<div class="input-group-append">
<button class="btn btn-outline-secondary" @click="newFolderCreate()">Add</button>
<button class="btn btn-outline-secondary" type="submit">Add</button>
</div>
</div>
</form>
</div>
</div>
<div v-else-if="settings=='import'">

View File

@ -29,6 +29,9 @@
list: function() {
return api('get', '/api/folders').then(json)
},
create: function(data) {
return api('post', '/api/folders', data).then(json)
},
}
}
})()

View File

@ -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) {