diff --git a/cmd/users.go b/cmd/users.go index c985d827..ade7e388 100644 --- a/cmd/users.go +++ b/cmd/users.go @@ -27,13 +27,14 @@ var usersCmd = &cobra.Command{ func printUsers(usrs []*users.User) { w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) - fmt.Fprintln(w, "ID\tUsername\tScope\tLocale\tV. Mode\tS.Click\tAdmin\tExecute\tCreate\tRename\tModify\tDelete\tShare\tDownload\tPwd Lock") + fmt.Fprintln(w, "ID\tUsername\tScope\tTrash Dir\tLocale\tV. Mode\tS.Click\tAdmin\tExecute\tCreate\tRename\tModify\tDelete\tShare\tDownload\tPwd Lock") for _, u := range usrs { - fmt.Fprintf(w, "%d\t%s\t%s\t%s\t%s\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t\n", + fmt.Fprintf(w, "%d\t%s\t%s\t%s\t%s\t%s\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t%t\t\n", u.ID, u.Username, u.Scope, + u.TrashDir, u.Locale, u.ViewMode, u.SingleClick, @@ -74,6 +75,7 @@ func addUserFlags(flags *pflag.FlagSet) { flags.Bool("lockPassword", false, "lock password") flags.StringSlice("commands", nil, "a list of the commands a user can execute") flags.String("scope", ".", "scope for users") + flags.String("trashDir", "", "trash directory path for users") flags.String("locale", "en", "locale for users") flags.String("viewMode", string(users.ListViewMode), "view mode for users") flags.Bool("singleClick", false, "use single clicks only") @@ -93,6 +95,8 @@ func getUserDefaults(flags *pflag.FlagSet, defaults *settings.UserDefaults, all switch flag.Name { case "scope": defaults.Scope = mustGetString(flags, flag.Name) + case "trashDir": + defaults.TrashDir = mustGetString(flags, flag.Name) case "locale": defaults.Locale = mustGetString(flags, flag.Name) case "viewMode": diff --git a/cmd/users_update.go b/cmd/users_update.go index 822bb6dc..3d8e5da0 100644 --- a/cmd/users_update.go +++ b/cmd/users_update.go @@ -42,6 +42,7 @@ options you want to change.`, defaults := settings.UserDefaults{ Scope: user.Scope, + TrashDir: user.TrashDir, Locale: user.Locale, ViewMode: user.ViewMode, SingleClick: user.SingleClick, @@ -51,6 +52,7 @@ options you want to change.`, } getUserDefaults(flags, &defaults, false) user.Scope = defaults.Scope + user.TrashDir = defaults.TrashDir user.Locale = defaults.Locale user.ViewMode = defaults.ViewMode user.SingleClick = defaults.SingleClick diff --git a/frontend/src/api/files.js b/frontend/src/api/files.js index cda31978..efbb92ae 100644 --- a/frontend/src/api/files.js +++ b/frontend/src/api/files.js @@ -49,8 +49,8 @@ async function resourceAction(url, method, content) { } } -export async function remove(url) { - return resourceAction(url, "DELETE"); +export async function remove(url, skipTrash = true) { + return resourceAction(`${url}?skip_trash=${skipTrash}`, "DELETE"); } export async function put(url, content = "") { diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index eec4e444..5e607a9d 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -33,6 +33,18 @@ +
+ + delete + {{ $t("sidebar.trashBin") }} + +
+
signup, version: () => version, disableExternal: () => disableExternal, + trashDir: () => trashDir, noAuth: () => noAuth, authMethod: () => authMethod, authLogoutURL: () => authLogoutURL, diff --git a/frontend/src/components/prompts/Delete.vue b/frontend/src/components/prompts/Delete.vue index d74c527c..e4488ad1 100644 --- a/frontend/src/components/prompts/Delete.vue +++ b/frontend/src/components/prompts/Delete.vue @@ -7,6 +7,10 @@

{{ $t("prompts.deleteMessageMultiple", { count: selectedCount }) }}

+

+ + {{ $t("prompts.skipTrashMessage") }} +