aboutsummaryrefslogtreecommitdiff
path: root/src/guff/views/html/test/blog.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/guff/views/html/test/blog.cr')
-rw-r--r--src/guff/views/html/test/blog.cr75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/guff/views/html/test/blog.cr b/src/guff/views/html/test/blog.cr
new file mode 100644
index 0000000..5f7372f
--- /dev/null
+++ b/src/guff/views/html/test/blog.cr
@@ -0,0 +1,75 @@
+require "html"
+require "ecr/macros"
+require "../page"
+
+class Guff::TestBlogHTMLView
+ TITLE = "Guff Blog Test"
+
+ POST_SETS = [{
+ id: "draft",
+ name: "Drafts",
+
+ actions: [{
+ id: "posted",
+ name: "Post",
+ }, {
+ id: "deleted",
+ name: "Delete",
+ }],
+ }, {
+ id: "posted",
+ name: "Posted",
+
+ actions: [{
+ id: "draft",
+ name: "Draft",
+ }, {
+ id: "deleted",
+ name: "Delete",
+ }],
+ }, {
+ id: "deleted",
+ name: "Deleted Posts",
+
+ actions: [{
+ id: "draft",
+ name: "Draft",
+ }],
+ }]
+
+ def self.run(models, context : HTTP::Server::Context)
+ new(models).run(context)
+ end
+
+ def initialize(@models : Models)
+ @posts = {} of String => Results(Post)
+ end
+
+ def run(context)
+ page = PageHTMLView.new(TITLE, self.to_s)
+ context.response.content_type = page.content_type
+ context.response.puts page
+ end
+
+ private def posts(state : String)
+ @posts[state] ||= @models.post.get_posts(
+ tags: [["_blog"]],
+ filters: { state: state }
+ )
+ end
+
+ SET_TITLE_FORMAT = "%s (%d posts)"
+
+ private def set_name(set)
+ "%s (%d posts)" % [
+ set[:name] as String,
+ posts(set[:id] as String).num_rows
+ ]
+ end
+
+ def h(s : String)
+ HTML.escape(s || "")
+ end
+
+ ECR.def_to_s("./src/guff/views/ecrs/test/blog.ecr")
+end