diff options
author | Johannes Zellner <johannes@nebulon.de> | 2016-03-01 16:07:44 +0100 |
---|---|---|
committer | Johannes Zellner <johannes@nebulon.de> | 2016-03-01 16:07:44 +0100 |
commit | 9138d7d40ba6570347dd21fc95d03641360c7461 (patch) | |
tree | 8325ddba776f10c22a5fa12c1afb28c8f710e409 | |
parent | 537bfb042b9f97e3a0ab8d6391b3519111073067 (diff) | |
download | Surfer-9138d7d40ba6570347dd21fc95d03641360c7461.tar.gz Surfer-9138d7d40ba6570347dd21fc95d03641360c7461.tar.zst Surfer-9138d7d40ba6570347dd21fc95d03641360c7461.zip |
Implement file deletion
-rw-r--r-- | app/index.html | 20 | ||||
-rw-r--r-- | app/js/app.js | 27 |
2 files changed, 45 insertions, 2 deletions
diff --git a/app/index.html b/app/index.html index 721ec25..bc9ac22 100644 --- a/app/index.html +++ b/app/index.html | |||
@@ -31,6 +31,24 @@ | |||
31 | </div> | 31 | </div> |
32 | </nav> | 32 | </nav> |
33 | 33 | ||
34 | <div class="modal fade" tabindex="-1" role="dialog" id="modalDelete"> | ||
35 | <div class="modal-dialog"> | ||
36 | <div class="modal-content"> | ||
37 | <div class="modal-header"> | ||
38 | <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> | ||
39 | </div> | ||
40 | <div class="modal-body"> | ||
41 | <h5 v-show="deleteData.isFile">Really delete <span style="font-weight: bold;">{{ deleteData.filePath }}</span>?</h5> | ||
42 | <h5 v-show="deleteData.isDirectory">Really delete directory <span style="font-weight: bold;">{{ deleteData.filePath }}</span> and all its content?</h5> | ||
43 | </div> | ||
44 | <div class="modal-footer"> | ||
45 | <button type="button" class="btn btn-default" data-dismiss="modal">No</button> | ||
46 | <button type="button" class="btn btn-danger" v-on:click="del(deleteData)">Yes</button> | ||
47 | </div> | ||
48 | </div> | ||
49 | </div> | ||
50 | </div> | ||
51 | |||
34 | <div class="container" v-show="busy" v-cloak> | 52 | <div class="container" v-show="busy" v-cloak> |
35 | <div class="row"> | 53 | <div class="row"> |
36 | <div class="col-lg-12"> | 54 | <div class="col-lg-12"> |
@@ -102,7 +120,7 @@ | |||
102 | <th>{{ entry.filePath }}</th> | 120 | <th>{{ entry.filePath }}</th> |
103 | <th>{{ entry.size }}</th> | 121 | <th>{{ entry.size }}</th> |
104 | <th>{{ entry.mtime }}</th> | 122 | <th>{{ entry.mtime }}</th> |
105 | <th style="text-align: right;"><button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i></button></th> | 123 | <th style="text-align: right;"><button class="btn btn-sm btn-danger" v-on:click.stop="delAsk(entry)"><i class="fa fa-trash"></i></button></th> |
106 | </tr> | 124 | </tr> |
107 | </tbody> | 125 | </tbody> |
108 | </table> | 126 | </table> |
diff --git a/app/js/app.js b/app/js/app.js index e2fe621..823e4f7 100644 --- a/app/js/app.js +++ b/app/js/app.js | |||
@@ -101,6 +101,28 @@ function upload() { | |||
101 | app.$els.upload.click(); | 101 | app.$els.upload.click(); |
102 | } | 102 | } |
103 | 103 | ||
104 | function delAsk(entry) { | ||
105 | $('#modalDelete').modal('show'); | ||
106 | app.deleteData = entry; | ||
107 | } | ||
108 | |||
109 | function del(entry) { | ||
110 | app.busy = true; | ||
111 | |||
112 | var path = encode(sanitize(app.path + '/' + entry.filePath)); | ||
113 | |||
114 | superagent.del('/api/files' + path).query({ username: app.session.username, password: app.session.password, recursive: true }).end(function (error, result) { | ||
115 | app.busy = false; | ||
116 | |||
117 | if (error) return console.error(error); | ||
118 | if (result.statusCode !== 200) return console.error('Error deleting file: ', result.statusCode); | ||
119 | |||
120 | refresh(); | ||
121 | |||
122 | $('#modalDelete').modal('hide'); | ||
123 | }); | ||
124 | } | ||
125 | |||
104 | var app = new Vue({ | 126 | var app = new Vue({ |
105 | el: '#app', | 127 | el: '#app', |
106 | data: { | 128 | data: { |
@@ -111,6 +133,7 @@ var app = new Vue({ | |||
111 | valid: false | 133 | valid: false |
112 | }, | 134 | }, |
113 | loginData: {}, | 135 | loginData: {}, |
136 | deleteData: {}, | ||
114 | entries: [] | 137 | entries: [] |
115 | }, | 138 | }, |
116 | methods: { | 139 | methods: { |
@@ -119,7 +142,9 @@ var app = new Vue({ | |||
119 | loadDirectory: loadDirectory, | 142 | loadDirectory: loadDirectory, |
120 | open: open, | 143 | open: open, |
121 | up: up, | 144 | up: up, |
122 | upload: upload | 145 | upload: upload, |
146 | delAsk: delAsk, | ||
147 | del: del | ||
123 | } | 148 | } |
124 | }); | 149 | }); |
125 | 150 | ||