Files
ROC/modules/node/handler/blog_handler.e
Dario Bösch 4dd980963a Moved filter of nodes of type blog to the node storage layer.
This is more efficient because the result set from the query will be smaller and it will be easier to implement the pagination
2015-05-21 14:06:08 +02:00

101 lines
2.7 KiB
Plaintext

note
description: "Request handler related to /blogs."
author: "Dario Bösch <daboesch@student.ethz.ch"
date: "$Date: 2015-05-18 13:49:99 +0100 (lun., 18 mai 2015) $"
revision: "$966167$"
class
BLOG_HANDLER
inherit
NODES_HANDLER
redefine
do_get
end
create
make
feature -- Settings
entries_per_page : INTEGER
-- The numbers of posts that are shown on one page. If there are more post a pagination is generated
do
-- For test reasons this is 2, so we don't have to create a lot of blog entries.
-- TODO: Set to bigger constant or load from global configuration file.
Result := 2
end
feature -- HTTP Methods
do_get (req: WSF_REQUEST; res: WSF_RESPONSE)
-- <Precursor>
local
l_page: CMS_RESPONSE
s: STRING
n: CMS_NODE
lnk: CMS_LOCAL_LINK
hdate: HTTP_DATE
do
-- At the moment the template is hardcoded, but we can
-- get them from the configuration file and load them into
-- the setup class.
create {GENERIC_VIEW_CMS_RESPONSE} l_page.make (req, res, api)
l_page.add_variable (node_api.nodes, "nodes")
-- NOTE: for development purposes we have the following hardcode output.
create s.make_from_string ("<h2>Blog</h2>")
if attached node_api.blogs_order_created_desc as lst then
-- Filter out blog entries from all nodes
--if n.content_type.is_equal ("blog") then
s.append ("<ul class=%"cms-blog-nodes%">%N")
across
lst as ic
loop
n := ic.item
lnk := node_api.node_link (n)
s.append ("<li class=%"cms_type_"+ n.content_type +"%">")
-- Post date (creation)
if attached n.creation_date as l_modified then
create hdate.make_from_date_time (l_modified)
s.append (hdate.yyyy_mmm_dd_string)
s.append (" ")
end
-- Author
if attached n.author as l_author then
s.append ("by ")
s.append (l_author.name)
end
-- Title with link
s.append (l_page.link (lnk.title, lnk.location, Void))
-- Summary
if attached n.summary as l_summary then
s.append ("<p class=%"blog_list_summary%">")
if attached api.format (n.format) as f then
s.append (f.formatted_output (l_summary))
else
s.append (l_page.formats.default_format.formatted_output (l_summary))
end
s.append ("<br />")
s.append (l_page.link ("See more...", lnk.location, Void))
s.append ("</p>")
end
s.append ("</li>%N")
end
s.append ("</ul>%N")
--end
end
l_page.set_main_content (s)
l_page.add_block (create {CMS_CONTENT_BLOCK}.make ("nodes_warning", Void, "/blogs/ is not yet fully implemented<br/>", Void), "highlighted")
l_page.execute
end
end