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