diff --git a/modules/node/handler/node_page_builder.e b/modules/node/handler/node_page_builder.e new file mode 100644 index 0000000..f6f7715 --- /dev/null +++ b/modules/node/handler/node_page_builder.e @@ -0,0 +1,37 @@ +note + description: "Summary description for {NODE_PAGE_BUILDER}." + author: "" + date: "$Date$" + revision: "$Revision$" + +class + NODE_PAGE_BUILDER + +inherit + + PAGE_BUILDER [CMS_NODE] + rename + make as page_make + end +create + + make + +feature {NONE} -- Initialization + + make (a_api: CMS_API; a_module_api: CMS_NODE_API) + do + page_make (a_api, a_module_api) + limit := 5 + offset := 0 + end + +feature -- Pager + + list: LIST[CMS_NODE] + do + create {ARRAYED_LIST[CMS_NODE]}Result.make (0) + Result := node_api.recent_nodes (offset.as_integer_32, limit.as_integer_32) + end + +end diff --git a/modules/node/handler/nodes_handler.e b/modules/node/handler/nodes_handler.e index 18462d2..6f33259 100644 --- a/modules/node/handler/nodes_handler.e +++ b/modules/node/handler/nodes_handler.e @@ -41,6 +41,9 @@ feature -- HTTP Methods s: STRING n: CMS_NODE lnk: CMS_LOCAL_LINK + pager: NODE_PAGE_BUILDER + number_of_pages: INTEGER_64 + current_page: INTEGER do -- At the moment the template is hardcoded, but we can -- get them from the configuration file and load them into @@ -49,10 +52,68 @@ feature -- HTTP Methods create {GENERIC_VIEW_CMS_RESPONSE} l_page.make (req, res, api) l_page.add_variable (node_api.nodes, "nodes") + create pager.make (api, node_api) + number_of_pages := (node_api.nodes_count // pager.limit) + 1 + + -- Size:limit + if + attached {WSF_STRING} req.query_parameter ("size") as l_size and then + l_size.is_integer + then + pager.set_limit (l_size.integer_value.to_natural_32) + end + + + + --Page:offset + if + attached {WSF_STRING} req.query_parameter ("page") as ll_page and then + ll_page.is_integer + then + current_page := ll_page.integer_value + if current_page > 1 then + pager.set_offset (((current_page-1)*(pager.limit.to_integer_32)).to_natural_32) + end + else + current_page := 1 + end + + -- NOTE: for development purposes we have the following hardcode output. create s.make_from_string ("
Nodes:
") - if attached node_api.nodes as lst then + + s.append ("Current Page:" + current_page.out + " of " + number_of_pages.out + " pages
" ) + -- pager + s.append ("