mirror of
https://github.com/nkanaev/yarr.git
synced 2025-07-09 00:10:09 +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) {
|
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 {
|
type NewFeed struct {
|
||||||
|
@ -117,37 +117,50 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-else-if="settings=='manage'">
|
<div v-else-if="settings=='manage'">
|
||||||
<div v-for="folder in foldersWithFeeds" class="mb-4">
|
<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 v-for="feed in folder.feeds" class="d-flex align-items-center">
|
||||||
<div class="w-100">
|
<div class="w-100">
|
||||||
{{ feed.title }}
|
{{ feed.title }}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-shrink-0">
|
<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">
|
||||||
<b-dropdown right no-caret lazy="true" variant="link" class="settings-dropdown" toggle-class="text-decoration-none">
|
<template v-slot:button-content>
|
||||||
<template v-slot:button-content>
|
<img src="./static/images/more-vertical.svg">
|
||||||
<img src="./static/images/more-vertical.svg">
|
</template>
|
||||||
</template>
|
<b-dropdown-item @click.prevent="renameFeed(feed)">Rename</b-dropdown-item>
|
||||||
<b-dropdown-item @click.prevent="renameFeed(feed)">Rename</b-dropdown-item>
|
<b-dropdown-divider></b-dropdown-divider>
|
||||||
<b-dropdown-divider></b-dropdown-divider>
|
<b-dropdown-header>Move to...</b-dropdown-header>
|
||||||
<b-dropdown-header>Move to...</b-dropdown-header>
|
<b-dropdown-item
|
||||||
<b-dropdown-item
|
v-if="folder.id != feed.folder_id"
|
||||||
v-if="folder.id != feed.folder_id"
|
v-for="folder in folders"
|
||||||
v-for="folder in folders"
|
@click.prevent="moveFeed(feed, folder)">
|
||||||
@click.prevent="moveFeed(feed, folder)">
|
{{ folder.title }}
|
||||||
{{ folder.title }}
|
</b-dropdown-item>
|
||||||
</b-dropdown-item>
|
<b-dropdown-item
|
||||||
<b-dropdown-item
|
@click.prevent="moveFeed(feed, null)" v-if="feed.folder_id">
|
||||||
@click.prevent="moveFeed(feed, null)" v-if="feed.folder_id">
|
Uncategorized
|
||||||
Uncategorized
|
</b-dropdown-item>
|
||||||
</b-dropdown-item>
|
<b-dropdown-divider></b-dropdown-divider>
|
||||||
<b-dropdown-divider></b-dropdown-divider>
|
<b-dropdown-item class="dropdown-danger"
|
||||||
<b-dropdown-item class="dropdown-danger"
|
@click.prevent="deleteFeed(feed)">
|
||||||
@click.prevent="deleteFeed(feed)">
|
Delete
|
||||||
Delete
|
</b-dropdown-item>
|
||||||
</b-dropdown-item>
|
</b-dropdown>
|
||||||
</b-dropdown>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -32,6 +32,9 @@
|
|||||||
create: function(data) {
|
create: function(data) {
|
||||||
return api('post', '/api/folders', data).then(json)
|
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({
|
var vm = new Vue({
|
||||||
el: '#app',
|
el: '#app',
|
||||||
created: function() {
|
created: function() {
|
||||||
var vm = this
|
this.refresh()
|
||||||
Promise
|
|
||||||
.all([api.folders.list(), api.feeds.list()])
|
|
||||||
.then(function(values) {
|
|
||||||
vm.folders = values[0]
|
|
||||||
vm.feeds = values[1]
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
data: function() {
|
data: function() {
|
||||||
return {
|
return {
|
||||||
@ -65,6 +59,15 @@ var vm = new Vue({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
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) {
|
toggleFolderExpanded: function(folder) {
|
||||||
folder.is_expanded = !folder.is_expanded
|
folder.is_expanded = !folder.is_expanded
|
||||||
},
|
},
|
||||||
@ -83,6 +86,17 @@ var vm = new Vue({
|
|||||||
vm.folders.push(result)
|
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) {
|
renameFeed: function(feed) {
|
||||||
var newTitle = prompt('Enter new title', feed.title)
|
var newTitle = prompt('Enter new title', feed.title)
|
||||||
feed.title = newTitle
|
feed.title = newTitle
|
||||||
|
Loading…
x
Reference in New Issue
Block a user