From 2ac02688ab8244f80b35049e69057f6e9ac92bc9 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Sat, 22 Aug 2020 03:23:24 +0200 Subject: [PATCH] More buttons --- app/src/main/kotlin/controllers/SettingsController.kt | 8 +++++++- app/src/main/kotlin/views/SettingView.kt | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/controllers/SettingsController.kt b/app/src/main/kotlin/controllers/SettingsController.kt index c387305..23a4195 100644 --- a/app/src/main/kotlin/controllers/SettingsController.kt +++ b/app/src/main/kotlin/controllers/SettingsController.kt @@ -50,10 +50,16 @@ class SettingsController( } fun export(request: Request, jwtPayload: JwtPayload): Response { + val isDownload = request.form("download") != null val json = userService.export(jwtPayload.userId) - return Response(Status.OK).body(json).header("Content-Type", "application/json") + val res = Response(Status.OK).body(json).header("Content-Type", "application/json") + return if (isDownload) res.header("Content-Disposition", + "attachment; filename=\"simplenotes-export-${sanitizeFilename(jwtPayload.username)}.json\"") + else res } + private fun sanitizeFilename(inputName: String): String = inputName.replace("[^a-zA-Z0-9-_.]".toRegex(), "_") + private fun Request.deleteForm(jwtPayload: JwtPayload) = DeleteForm(jwtPayload.username, form("password"), form("checked") != null) } diff --git a/app/src/main/kotlin/views/SettingView.kt b/app/src/main/kotlin/views/SettingView.kt index 2d3a5d8..6a348cf 100644 --- a/app/src/main/kotlin/views/SettingView.kt +++ b/app/src/main/kotlin/views/SettingView.kt @@ -32,7 +32,8 @@ class SettingView(staticFileResolver: StaticFileResolver) : View(staticFileResol } form(method = FormMethod.post, action = "/export") { - button(classes = "btn btn-teal block", type = submit) { +"Export my data" } + button(name = "display", classes = "btn btn-teal block", type = submit) { +"Display my data" } + button(name = "download", classes = "btn btn-green block mt-2", type = submit) { +"Download my data" } } }