Move web pages to their own package
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / web / pages / BookmarksPage.kt
diff --git a/src/main/kotlin/net/pterodactylus/sone/web/pages/BookmarksPage.kt b/src/main/kotlin/net/pterodactylus/sone/web/pages/BookmarksPage.kt
new file mode 100644 (file)
index 0000000..757ae75
--- /dev/null
@@ -0,0 +1,25 @@
+package net.pterodactylus.sone.web.pages
+
+import net.pterodactylus.sone.data.Post
+import net.pterodactylus.sone.web.pages.SoneTemplatePage
+import net.pterodactylus.sone.web.WebInterface
+import net.pterodactylus.sone.web.page.FreenetRequest
+import net.pterodactylus.util.collection.Pagination
+import net.pterodactylus.util.template.Template
+import net.pterodactylus.util.template.TemplateContext
+
+/**
+ * Page that lets the user browse all his bookmarked posts.
+ */
+class BookmarksPage(template: Template, webInterface: WebInterface): SoneTemplatePage("bookmarks.html", template, "Page.Bookmarks.Title", webInterface) {
+
+       override fun handleRequest(request: FreenetRequest, templateContext: TemplateContext) {
+               webInterface.core.bookmarkedPosts.let { posts ->
+                       val pagination = Pagination<Post>(posts.filter { it.isLoaded }.sortedByDescending { it.time }, webInterface.core.preferences.postsPerPage)
+                       templateContext["pagination"] = pagination
+                       templateContext["posts"] = pagination.items
+                       templateContext["postsNotLoaded"] = posts.any { !it.isLoaded }
+               }
+       }
+
+}