X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FEditAlbumAjaxPage.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fajax%2FEditAlbumAjaxPage.kt;h=cf12b3354490b126f731c2bed1eb70938bc1eb3d;hp=0000000000000000000000000000000000000000;hb=47dc11af1a7bbca09c04239edee33f83d6539b81;hpb=b6dc376162d13042d430c0cdccc7e53c92e4a690 diff --git a/src/main/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPage.kt new file mode 100644 index 0000000..cf12b33 --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/web/ajax/EditAlbumAjaxPage.kt @@ -0,0 +1,45 @@ +package net.pterodactylus.sone.web.ajax + +import net.pterodactylus.sone.text.TextFilter +import net.pterodactylus.sone.utils.headers +import net.pterodactylus.sone.utils.ifTrue +import net.pterodactylus.sone.utils.parameters +import net.pterodactylus.sone.web.WebInterface +import net.pterodactylus.sone.web.page.FreenetRequest + +/** + * Page that stores a user’s album modifications. + */ +class EditAlbumAjaxPage(webInterface: WebInterface) : JsonPage("editAlbum.ajax", webInterface) { + + override fun createJsonObject(request: FreenetRequest) = + request.parameters["album"]!! + .let(webInterface.core::getAlbum) + ?.let { album -> + album.sone.isLocal.ifTrue { + when { + request.parameters["moveLeft"] == "true" -> createSuccessJsonObject().apply { + put("sourceAlbumId", album.id) + put("destinationAlbumId", album.parent.moveAlbumUp(album).id) + } + request.parameters["moveRight"] == "true" -> createSuccessJsonObject().apply { + put("sourceAlbumId", album.id) + put("destinationAlbumId", album.parent.moveAlbumDown(album).id) + } + else -> try { + album.modify() + .setTitle(request.parameters["title"]) + .setDescription(TextFilter.filter(request.headers["Host"], request.parameters["description"])) + .update() + createSuccessJsonObject() + .put("albumId", album.id) + .put("title", album.title) + .put("description", album.description) + } catch (e: IllegalStateException) { + createErrorJsonObject("invalid-album-title") + } + } + } ?: createErrorJsonObject("not-authorized") + } ?: createErrorJsonObject("invalid-album-id") + +}