aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJohannes Zellner <johannes@nebulon.de>2016-03-01 16:07:44 +0100
committerJohannes Zellner <johannes@nebulon.de>2016-03-01 16:07:44 +0100
commit9138d7d40ba6570347dd21fc95d03641360c7461 (patch)
tree8325ddba776f10c22a5fa12c1afb28c8f710e409
parent537bfb042b9f97e3a0ab8d6391b3519111073067 (diff)
downloadSurfer-9138d7d40ba6570347dd21fc95d03641360c7461.tar.gz
Surfer-9138d7d40ba6570347dd21fc95d03641360c7461.tar.zst
Surfer-9138d7d40ba6570347dd21fc95d03641360c7461.zip
Implement file deletion
-rw-r--r--app/index.html20
-rw-r--r--app/js/app.js27
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">&times;</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
104function delAsk(entry) {
105 $('#modalDelete').modal('show');
106 app.deleteData = entry;
107}
108
109function 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
104var app = new Vue({ 126var 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