aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2016-07-27 21:42:17 -0400
committerPaul Duncan <pabs@pablotron.org>2016-07-27 21:42:17 -0400
commit385c421b160e9bb7515066ec8ff7205c5c95cfbc (patch)
tree2c6f90b2b5aded79dd14f67d24f74ee778faaa3e
parentd17ca8a92f5c7b79061296eaed5d73d3837cb9b6 (diff)
downloadguff-385c421b160e9bb7515066ec8ff7205c5c95cfbc.tar.bz2
guff-385c421b160e9bb7515066ec8ff7205c5c95cfbc.zip
use theme templates for blog-list
-rw-r--r--src/guff/handlers.cr11
-rw-r--r--src/guff/models/site.cr19
-rw-r--r--src/guff/views/blog/list.cr37
-rw-r--r--src/views/blog/list.ecr4
-rw-r--r--src/views/page.ecr4
-rw-r--r--src/views/project.ecr4
6 files changed, 59 insertions, 20 deletions
diff --git a/src/guff/handlers.cr b/src/guff/handlers.cr
index efdf6e0..f0a8571 100644
--- a/src/guff/handlers.cr
+++ b/src/guff/handlers.cr
@@ -496,21 +496,22 @@ module Guff::Handlers
$}x
def call(context : HTTP::Server::Context)
- if r = find(context.request)
+ site_id, r = find(context.request)
+ if site_id && r
# TODO: render page
context.response.headers["x-frame-options"] = "SAMEORIGIN"
context.response.content_type = "text/html; charset=utf-8"
context.response.status_code = 200
- Views::Blog::ListView.new(@context, r).to_s(context.response)
+ Views::Blog::ListView.new(@context, site_id, r).to_s(context.response)
else
# unknown page
call_next(context)
end
end
- private def find(request : HTTP::Request) : PagedResultSet?
- r = nil
+ private def find(request : HTTP::Request)
+ site_id, r = nil, nil
if request.method == "GET"
if md = PATH_RE.match(request.path.not_nil!)
@@ -530,7 +531,7 @@ module Guff::Handlers
end
# return result
- r
+ {site_id, r}
end
end
diff --git a/src/guff/models/site.cr b/src/guff/models/site.cr
index 99c09dd..431911d 100644
--- a/src/guff/models/site.cr
+++ b/src/guff/models/site.cr
@@ -47,6 +47,21 @@ class Guff::Models::SiteModel < Guff::Models::Model
ORDER BY LOWER(name)
",
+
+ get: "
+ SELECT a.site_id,
+ a.name,
+ a.is_active,
+ a.is_default,
+ a.theme_id,
+ b.theme_slug
+
+ FROM sites a
+
+ JOIN themes b
+ ON (b.theme_id = a.theme_id)
+ WHERE a.site_id = ?
+ "
}
def get_id(host : String?) : Int64?
@@ -70,4 +85,8 @@ class Guff::Models::SiteModel < Guff::Models::Model
rows
end
+
+ def get(site_id : Int64)
+ @context.dbs.ro.row(SQL[:get], [site_id.to_s]).not_nil!
+ end
end
diff --git a/src/guff/views/blog/list.cr b/src/guff/views/blog/list.cr
index 0b26f98..a98131e 100644
--- a/src/guff/views/blog/list.cr
+++ b/src/guff/views/blog/list.cr
@@ -1,20 +1,33 @@
+require "../template-html"
+
#
# TODO: add y/m/d/page
#
-class Guff::Views::Blog::ListView < Guff::Views::HTMLView
+class Guff::Views::Blog::ListView < Guff::Views::TemplateHTMLView
TITLE = "Blog List"
- def initialize(context : Context, @results : PagedResultSet)
- super(context)
- end
+ def initialize(
+ context : Context,
+ site_id : Int64,
+ results : PagedResultSet
+ )
+ # get site details
+ site = context.models.site.get(site_id)
- def posts
- String.build do |io|
- @results.rows.each do |row|
- ListItemView.new(@context, row).to_s(io)
- end
- end
+ super(
+ context: context,
+ theme_id: site["theme_id"].as(Int64).to_i32,
+ theme_slug: site["theme_slug"].as(String),
+ template_id: "blog-list.html",
+ data: {
+ "name" => TITLE,
+ "body" => String.build do |io|
+ # render items
+ results.rows.each do |row|
+ ListItemView.new(context, row).to_s(io)
+ end
+ end,
+ },
+ )
end
-
- ECR.def_to_s("src/views/blog/list.ecr")
end
diff --git a/src/views/blog/list.ecr b/src/views/blog/list.ecr
index d0a35ca..240a384 100644
--- a/src/views/blog/list.ecr
+++ b/src/views/blog/list.ecr
@@ -1,4 +1,6 @@
-<!DOCTYPE html>
+<%
+ # deprecated: replaced with theme templates
+%><!DOCTYPE html>
<html lang='en-US'>
<head>
<meta charset="utf-8"/>
diff --git a/src/views/page.ecr b/src/views/page.ecr
index 54f4c7b..a2dca05 100644
--- a/src/views/page.ecr
+++ b/src/views/page.ecr
@@ -1,4 +1,6 @@
-<!DOCTYPE html>
+<%
+ # deprecated: replaced with theme templates
+%><!DOCTYPE html>
<html lang='en-US'>
<head>
<meta charset="utf-8"/>
diff --git a/src/views/project.ecr b/src/views/project.ecr
index 9b1d21b..aba2f91 100644
--- a/src/views/project.ecr
+++ b/src/views/project.ecr
@@ -1,4 +1,6 @@
-<!DOCTYPE html>
+<%
+ # deprecated: replaced with theme templates
+%><!DOCTYPE html>
<html lang='en-US'>
<head>
<meta charset="utf-8"/>