diff options
Diffstat (limited to 'src/guff/views')
-rw-r--r-- | src/guff/views/ecrs/test.ecr | 167 | ||||
-rw-r--r-- | src/guff/views/html/test.cr | 33 |
2 files changed, 200 insertions, 0 deletions
diff --git a/src/guff/views/ecrs/test.ecr b/src/guff/views/ecrs/test.ecr new file mode 100644 index 0000000..d36b62c --- /dev/null +++ b/src/guff/views/ecrs/test.ecr @@ -0,0 +1,167 @@ +<h1><%= h(TITLE) %></h1> + +<% + [{ + id: "draft", + name: "Draft Posts", + + 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", + }], + }].each do |kind| +%> + <h2><%= + h(kind[:name] as String) + %></h2> + + <table> + <thead> + <tr> + <th>ID</th> + <th>Created At</th> + <th>Name</th> + <th>Body</th> + <th colspan='2'>Actions</th> + </tr> + </thead> + + <tbody><% posts(kind[:id] as String).rows.each do |post| %> + <tr> + <td><%= + h(post.row["post_id"].to_s) + %></td> + + <td><%= + h(post.row["created_at"].to_s) + %></td> + + <td><%= + h(post.row["name"].to_s) + %></td> + + <td><%= + post.row["body"].to_s + %></td> + + <% (kind[:actions] as Array(Hash(Symbol, String))).each do |a| %> + <td> + <form + method='post' + action='/test/set_state' + > + <input + type='hidden' + name='post_id' + value='<%= h(post.row["post_id"].to_s) %>' + /> + + <input + type='hidden' + name='state' + value='<%= a[:id] %>' + </input> + + <input + type='submit' + title='Set post to <%= h(a[:id]) %>..' + value='<%= h(a[:name]) %>' + /> + </form> + </td> + <% end %> + </tr> + <% end %></tbody> + </table> +<% end %> + +<div class='section'> + <form + method='post' + action='/test/add_post' + > + <label for='post-name'> + Name + </label><br/> + + <input + type='text' + id='post-name' + name='name' + title='Enter post title' + placeholder='Post Title' + value='' + /> + + <br/> + + <label for='post-slug'> + Slug + </label><br/> + + <input + type='text' + id='post-slug' + name='slug' + title='Enter post slug' + placeholder='post-slug' + value='' + /> + + <br/> + + <label for='post-body'> + Post Body + </label><br/> + + <textarea + id='post-body' + name='body' + ></textarea> + + <br/> + + <label for='post-tags'> + Tags (space-delimited) + </label><br/> + + <input + type='text' + id='post-tags' + name='tags' + title='Enter post tags' + placeholder='some post tags' + value='' + /> + + <br/> + + <input + type='submit' + title='Create new post.' + value='Add Post' + /> + </form> +</div> diff --git a/src/guff/views/html/test.cr b/src/guff/views/html/test.cr new file mode 100644 index 0000000..e31ebdb --- /dev/null +++ b/src/guff/views/html/test.cr @@ -0,0 +1,33 @@ +require "html" +require "ecr/macros" +require "./page" + +class Guff::TestHTMLView + TITLE = "Guff Tests" + + def self.run(models, context : HTTP::Server::Context) + new(models).run(context) + end + + def initialize(@models : Models) + 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) + @models.post.get_posts( + tags: [["_blog"]], + filters: { state: state } + ) + end + + def h(s : String) + HTML.escape(s || "") + end + + ECR.def_to_s("./src/guff/views/ecrs/test.ecr") +end |