mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
create folder
This commit is contained in:
parent
8ed55fe1e7
commit
07310cbc8f
@ -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) {
|
func FolderListHandler(rw http.ResponseWriter, req *http.Request) {
|
||||||
if req.Method == "GET" {
|
if req.Method == "GET" {
|
||||||
list := db(req).ListFolders()
|
list := db(req).ListFolders()
|
||||||
fmt.Println(list)
|
fmt.Println(list)
|
||||||
json.NewEncoder(rw).Encode(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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,13 +152,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-5">
|
<div class="mt-5">
|
||||||
<label for="settings-new-folder">New Folder</label>
|
<form action="" @submit.prevent="createFolder(event)">
|
||||||
<div class="input-group">
|
<label for="settings-new-folder">New Folder</label>
|
||||||
<input id="settings-new-folder" type="text" class="form-control" v-model="newFolderTitle">
|
<div class="input-group">
|
||||||
<div class="input-group-append">
|
<input id="settings-new-folder" type="text" class="form-control" name="title">
|
||||||
<button class="btn btn-outline-secondary" @click="newFolderCreate()">Add</button>
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-outline-secondary" type="submit">Add</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="settings=='import'">
|
<div v-else-if="settings=='import'">
|
||||||
|
@ -29,6 +29,9 @@
|
|||||||
list: function() {
|
list: function() {
|
||||||
return api('get', '/api/folders').then(json)
|
return api('get', '/api/folders').then(json)
|
||||||
},
|
},
|
||||||
|
create: function(data) {
|
||||||
|
return api('post', '/api/folders', data).then(json)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
|
@ -27,7 +27,6 @@ var vm = new Vue({
|
|||||||
'items': [],
|
'items': [],
|
||||||
'itemSelected': null,
|
'itemSelected': null,
|
||||||
'settings': 'manage',
|
'settings': 'manage',
|
||||||
'newFolderTitle': null,
|
|
||||||
'loading': {newfeed: 0},
|
'loading': {newfeed: 0},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -76,11 +75,12 @@ var vm = new Vue({
|
|||||||
moveFeed: function(feed, folder) {
|
moveFeed: function(feed, folder) {
|
||||||
feed.folder_id = folder ? folder.id : null
|
feed.folder_id = folder ? folder.id : null
|
||||||
},
|
},
|
||||||
newFolderCreate: function() {
|
createFolder: function(event) {
|
||||||
this.folders.push({
|
var form = event.target
|
||||||
id: Math.random() * 10000,
|
var data = {'title': form.querySelector('input[name=title]').value}
|
||||||
title: this.newFolderTitle,
|
var vm = this
|
||||||
is_expanded: true,
|
api.folders.create(data).then(function(result) {
|
||||||
|
vm.folders.push(result)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
renameFeed: function(feed) {
|
renameFeed: function(feed) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user