#ifndef LIST_PAGE_H #define LIST_PAGE_H #include "core/containers/vector.h" #include "core/string.h" #include "core/http/web_node.h" #include "core/http/request.h" // This class will load and generate pages from a folder of md files. It supports pagination, // it will put entry_per_page md files per page. It generates html on enter tree, and caches everything. // Each md file gets rendered into a div with a class of "list_entry" // HTML (If there are entries): // render_menu() //
// Set the class via the main_div_class property //
md file 1
// Set the class via the entry_div_class property //
md file 2
// ... // //
// HTML (If there are no entries): // render_menu() //
// Set the class via the main_div_class property //
No content yet!
// Set the class via the empty_div_class property, text via placeholder_text property //
class ListPage : public WebNode { RCPP_OBJECT(ListPage, WebNode); public: void handle_request_main(Request *request); void load(); virtual void render_entries(const Vector &list_entries); virtual String render_page(const int page_index, const int page_count, const Vector &list_entries, const int efrom, const int eto); virtual String render_entry(const String &list_entry); virtual void render_no_entries_response(); void _notification(const int what); ListPage(); ~ListPage(); bool paginate; int max_visible_navigation_links; int entry_per_page; String folder; String main_div_class; String entry_div_class; String empty_div_class; String placeholder_text; protected: Vector _pages; String _no_entries_response; }; #endif