diff options
Diffstat (limited to 'src/guff/views/html/test')
-rw-r--r-- | src/guff/views/html/test/blog.cr | 75 |
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 |