added blog handler that lists all blog entries

This commit is contained in:
Dario Bösch
2015-05-18 14:36:24 +02:00
parent 29ef17226b
commit c65265b025
3 changed files with 117 additions and 13 deletions

View File

@@ -8,11 +8,14 @@ class
inherit
CMS_MODULE
rename
module_api as node_api
redefine
register_hooks,
initialize,
is_installed,
install
install,
node_api
end
CMS_HOOK_MENU_SYSTEM_ALTER
@@ -36,18 +39,19 @@ feature {CMS_API} -- Module Initialization
-- <Precursor>
local
ct: CMS_BLOG_NODE_TYPE
l_node_api: like node_api
do
Precursor (api)
create l_node_api.make (api)
node_api := l_node_api
if attached {CMS_NODE_API} api.module_api ({NODE_MODULE}) as l_node_api then
create ct
l_node_api.add_content_type (ct)
l_node_api.add_content_type_webform_manager (create {CMS_BLOG_NODE_TYPE_WEBFORM_MANAGER}.make (ct))
-- Add support for CMS_BLOG, which requires a storage extension to store the optional "tags" value
-- For now, we only have extension based on SQL statement.
if attached {CMS_NODE_STORAGE_SQL} l_node_api.node_storage as l_sql_node_storage then
l_sql_node_storage.register_node_storage_extension (create {CMS_NODE_STORAGE_SQL_BLOG_EXTENSION}.make (l_sql_node_storage))
end
create ct
l_node_api.add_content_type (ct)
l_node_api.add_content_type_webform_manager (create {CMS_BLOG_NODE_TYPE_WEBFORM_MANAGER}.make (ct))
-- Add support for CMS_BLOG, which requires a storage extension to store the optional "tags" value
-- For now, we only have extension based on SQL statement.
if attached {CMS_NODE_STORAGE_SQL} l_node_api.node_storage as l_sql_node_storage then
l_sql_node_storage.register_node_storage_extension (create {CMS_NODE_STORAGE_SQL_BLOG_EXTENSION}.make (l_sql_node_storage))
end
end
@@ -82,12 +86,45 @@ CREATE TABLE "blog_post_nodes"(
end
end
feature {CMS_API} -- Access: API
node_api: detachable CMS_NODE_API
-- <Precursor>
feature -- Access: router
setup_router (a_router: WSF_ROUTER; a_api: CMS_API)
-- <Precursor>
local
l_node_api: like node_api
do
a_router.handle_with_request_methods ("/blogs/", create {WSF_URI_AGENT_HANDLER}.make (agent handle_blogs (?,?, a_api)), a_router.methods_get)
l_node_api := node_api
if l_node_api = Void then
create l_node_api.make (a_api)
node_api := l_node_api
end
configure_web (a_api, l_node_api, a_router)
end
--feature -- Access: router
--setup_router (a_router: WSF_ROUTER; a_api: CMS_API)
-- <Precursor>
-- do
-- a_router.handle_with_request_methods ("/blogs/", create {WSF_URI_AGENT_HANDLER}.make (agent handle_blogs (?,?, a_api)), a_router.methods_get)
-- end
configure_web (a_api: CMS_API; a_node_api: CMS_NODE_API; a_router: WSF_ROUTER)
local
l_blog_handler: BLOG_HANDLER
l_uri_mapping: WSF_URI_MAPPING
do
-- TODO: for now, focused only on web interface, add REST api later. [2015-May-18]
--create l_blog_handler.make (a_api, a_node_api)
--create l_uri_mapping.make_trailing_slash_ignored ("/blogs", l_blog_handler)
--a_router.map_with_request_methods (l_uri_mapping, a_router.methods_get)
--a_router.handle_with_request_methods ("/node/{id}", l_node_handler, a_router.methods_get)
end
feature -- Hooks