aboutsummaryrefslogtreecommitdiff
path: root/src/guff/views
diff options
context:
space:
mode:
Diffstat (limited to 'src/guff/views')
-rw-r--r--src/guff/views/ecrs/test.ecr167
-rw-r--r--src/guff/views/html/test.cr33
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