mirror of
https://github.com/nkanaev/yarr.git
synced 2025-07-08 16:00:11 +00:00
delete folder
This commit is contained in:
parent
07310cbc8f
commit
8499810bc8
@ -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 {
|
||||
|
@ -117,37 +117,50 @@
|
||||
</div>
|
||||
<div v-else-if="settings=='manage'">
|
||||
<div v-for="folder in foldersWithFeeds" class="mb-4">
|
||||
<div><strong>{{ folder.title || "Uncategorized" }}</strong></div>
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="w-100"><b>{{ folder.title || "Uncategorized" }}</b></div>
|
||||
<div class="flex-shrink-0" v-if="folder.id">
|
||||
<b-dropdown right no-caret lazy="true" variant="link" class="settings-dropdown" toggle-class="text-decoration-none">
|
||||
<template v-slot:button-content>
|
||||
<img src="./static/images/more-vertical.svg">
|
||||
</template>
|
||||
<b-dropdown-item @click.prevent="renameFolder(folder)">Rename</b-dropdown-item>
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-item class="dropdown-danger"
|
||||
@click.prevent="deleteFolder(folder)">
|
||||
Delete
|
||||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
<div v-for="feed in folder.feeds" class="d-flex align-items-center">
|
||||
<div class="w-100">
|
||||
{{ feed.title }}
|
||||
</div>
|
||||
<div class="flex-shrink-0">
|
||||
<div class="dropdown d-inline-block">
|
||||
<b-dropdown right no-caret lazy="true" variant="link" class="settings-dropdown" toggle-class="text-decoration-none">
|
||||
<template v-slot:button-content>
|
||||
<img src="./static/images/more-vertical.svg">
|
||||
</template>
|
||||
<b-dropdown-item @click.prevent="renameFeed(feed)">Rename</b-dropdown-item>
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-header>Move to...</b-dropdown-header>
|
||||
<b-dropdown-item
|
||||
v-if="folder.id != feed.folder_id"
|
||||
v-for="folder in folders"
|
||||
@click.prevent="moveFeed(feed, folder)">
|
||||
{{ folder.title }}
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
@click.prevent="moveFeed(feed, null)" v-if="feed.folder_id">
|
||||
Uncategorized
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-item class="dropdown-danger"
|
||||
@click.prevent="deleteFeed(feed)">
|
||||
Delete
|
||||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
<b-dropdown right no-caret lazy="true" variant="link" class="settings-dropdown" toggle-class="text-decoration-none">
|
||||
<template v-slot:button-content>
|
||||
<img src="./static/images/more-vertical.svg">
|
||||
</template>
|
||||
<b-dropdown-item @click.prevent="renameFeed(feed)">Rename</b-dropdown-item>
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-header>Move to...</b-dropdown-header>
|
||||
<b-dropdown-item
|
||||
v-if="folder.id != feed.folder_id"
|
||||
v-for="folder in folders"
|
||||
@click.prevent="moveFeed(feed, folder)">
|
||||
{{ folder.title }}
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-item
|
||||
@click.prevent="moveFeed(feed, null)" v-if="feed.folder_id">
|
||||
Uncategorized
|
||||
</b-dropdown-item>
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-item class="dropdown-danger"
|
||||
@click.prevent="deleteFeed(feed)">
|
||||
Delete
|
||||
</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -32,6 +32,9 @@
|
||||
create: function(data) {
|
||||
return api('post', '/api/folders', data).then(json)
|
||||
},
|
||||
delete: function(id) {
|
||||
return api('delete', '/api/folders/' + id)
|
||||
},
|
||||
}
|
||||
}
|
||||
})()
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user