From 424653b67cb1be3516bb920d7ebe0517798bcce8 Mon Sep 17 00:00:00 2001 From: joshuaboud Date: Wed, 26 May 2021 12:52:45 -0300 Subject: [PATCH] implement adding files and directories --- navigator/navigator.css | 1 + navigator/navigator.html | 4 +++- navigator/navigator.js | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/navigator/navigator.css b/navigator/navigator.css index 72754cb..c343425 100644 --- a/navigator/navigator.css +++ b/navigator/navigator.css @@ -143,4 +143,5 @@ display: flex; flex-flow: row nowrap; justify-content: flex-end; + align-items: flex-start; } \ No newline at end of file diff --git a/navigator/navigator.html b/navigator/navigator.html index 07605c2..f6bb570 100644 --- a/navigator/navigator.html +++ b/navigator/navigator.html @@ -42,7 +42,9 @@ /current/dir
- + +
+
diff --git a/navigator/navigator.js b/navigator/navigator.js index 8b7b6ff..578175f 100644 --- a/navigator/navigator.js +++ b/navigator/navigator.js @@ -377,6 +377,42 @@ class NavWindow { await this.selected_entry.rm().catch(/*ignore, caught in rm*/); this.refresh(); } + async mkdir() { + var new_dir_name = window.prompt("Directory Name: "); + if(new_dir_name === null) + return; + if(new_dir_name.includes("/")){ + window.alert("Directory name can't contain `/`."); + return; + } + var proc = cockpit.spawn( + ["mkdir", this.pwd().path_str() + "/" + new_dir_name], + {superuser: "try", err:"out"} + ); + proc.fail((e, data) => { + window.alert(data); + }); + await proc; + this.refresh(); + } + async touch() { + var new_file_name = window.prompt("File Name: "); + if(new_file_name === null) + return; + if(new_file_name.includes("/")){ + window.alert("File name can't contain `/`."); + return; + } + var proc = cockpit.spawn( + ["touch", this.pwd().path_str() + "/" + new_file_name], + {superuser: "try", err:"out"} + ); + proc.fail((e, data) => { + window.alert(data); + }); + await proc; + this.refresh(); + } } let nav_window = new NavWindow(); @@ -384,6 +420,8 @@ let nav_window = new NavWindow(); function set_up_buttons() { document.getElementById("nav-up-dir-btn").addEventListener("click", nav_window.up.bind(nav_window)); document.getElementById("nav-refresh-btn").addEventListener("click", nav_window.refresh.bind(nav_window)); + document.getElementById("nav-mkdir-btn").addEventListener("click", nav_window.mkdir.bind(nav_window)); + document.getElementById("nav-touch-btn").addEventListener("click", nav_window.touch.bind(nav_window)); document.getElementById("nav-delete-btn").addEventListener("click", nav_window.delete_selected.bind(nav_window)); document.getElementById("nav-edit-properties-btn").addEventListener("click", nav_window.show_edit_selected.bind(nav_window)); document.getElementById("nav-cancel-edit-btn").addEventListener("click", nav_window.hide_edit_selected.bind(nav_window));