X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FEditProfileFieldPage.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FEditProfileFieldPage.kt;h=8109e3a5d72838d22e194337ff528a1dcedcf4e2;hb=e280cbaa00df256a60277ed8b3443126a9865b6e;hp=0000000000000000000000000000000000000000;hpb=27dc3e3ab6c7185779581169f25d848ed35a1a2b;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/web/pages/EditProfileFieldPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/pages/EditProfileFieldPage.kt new file mode 100644 index 0000000..8109e3a --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/pages/EditProfileFieldPage.kt @@ -0,0 +1,40 @@ +package net.pterodactylus.sone.web.pages + +import net.pterodactylus.sone.utils.isPOST +import net.pterodactylus.sone.web.WebInterface +import net.pterodactylus.sone.web.page.FreenetRequest +import net.pterodactylus.util.template.Template +import net.pterodactylus.util.template.TemplateContext + +/** + * Page that lets the user edit the name of a profile field. + */ +class EditProfileFieldPage(template: Template, webInterface: WebInterface): + SoneTemplatePage("editProfileField.html", template, "Page.EditProfileField.Title", webInterface, true) { + + override fun handleRequest(request: FreenetRequest, templateContext: TemplateContext) { + sessionProvider.getCurrentSone(request.toadletContext)!!.let { currentSone -> + currentSone.profile.let { profile -> + val field = profile.getFieldById(request.httpRequest.getPartAsStringFailsafe("field", 36)) ?: throw RedirectException("invalid.html") + if (request.isPOST) { + if (request.httpRequest.getPartAsStringFailsafe("cancel", 4) == "true") { + throw RedirectException("editProfile.html#profile-fields") + } + request.httpRequest.getPartAsStringFailsafe("name", 256).let { name -> + try { + if (name != field.name) { + field.name = name + currentSone.profile = profile + } + throw RedirectException("editProfile.html#profile-fields") + } catch (e: IllegalArgumentException) { + templateContext["duplicateFieldName"] = true + } + } + } + templateContext["field"] = field + } + } + } + +}