Added page manager to the web root. Also switched to the new menu rendering style.

This commit is contained in:
Relintai 2022-01-13 22:59:48 +01:00
parent a1a5e2cd08
commit b35a5fa051
4 changed files with 28 additions and 20 deletions

2
HEADS
View File

@ -1 +1 @@
{"engine": {"master": "f498628ee1d76781a62d72e7fd9bfdbd211ad95d"}}
{"engine": {"master": "127219fe342c8d6cc2a10ab5ba78d9519c052105"}}

View File

@ -9,9 +9,9 @@
#include "core/database/database_manager.h"
#include "core/html/html_builder.h"
#include "core/http/csrf_token.h"
#include "core/http/http_session.h"
#include "core/http/session_manager.h"
#include "core/http/csrf_token.h"
#include "modules/users/user.h"
//#include "modules/users/user_controller.h"
@ -37,41 +37,31 @@ void CCMSRoot::handle_request_main(Request *request) {
// this is a hack, until I have a simple index node, or port contentcontroller.
if (request->get_path_segment_count() == 0) {
_handle_request_main(request);
_page_manager->handle_request_main(request);
return;
}
WebNode *handler = get_request_handler_child(request);
if (!handler) {
request->send_error(404);
// request->send_error(404);
_page_manager->handle_request_main(request);
return;
}
add_menu(request);
handler->handle_request_main(request);
}
void CCMSRoot::_handle_request_main(Request *request) {
// ENSURE_LOGIN(request);
add_menu(request);
_render_menu(request);
request->body += "test";
request->compile_and_send_body();
}
bool CCMSRoot::is_logged_in(Request *request) {
if (!request->session.is_valid()) {
return false;
}
Ref<User> u = request->reference_data["user"];
return u.is_valid();
}
void CCMSRoot::add_menu(Request *request) {
void CCMSRoot::_render_menu(Request *request) {
request->head += menu_head;
_menu->render(request);
@ -82,10 +72,19 @@ void CCMSRoot::add_menu(Request *request) {
b.write_tag();
request->body += b.result;
request->footer = footer;
}
bool CCMSRoot::is_logged_in(Request *request) {
if (!request->session.is_valid()) {
return false;
}
Ref<User> u = request->reference_data["user"];
return u.is_valid();
}
void CCMSRoot::setup_middleware() {
_middlewares.push_back(Ref<SessionSetupMiddleware>(new SessionSetupMiddleware()));
// _middlewares.push_back(Ref<UserSessionSetupMiddleware>(new UserSessionSetupMiddleware()));
@ -141,6 +140,10 @@ void CCMSRoot::compile_menu() {
CCMSRoot::CCMSRoot() :
WebRoot() {
_page_manager = new PageManager();
_page_manager->set_uri_segment("/");
add_child(_page_manager);
_user_controller = new CCMSUserController();
_user_controller->set_uri_segment("user");
// user_manager->set_path("./users/");
@ -155,6 +158,7 @@ CCMSRoot::CCMSRoot() :
_admin_panel->set_uri_segment("admin");
_admin_panel->register_admin_controller("rbac", _rbac_controller);
_admin_panel->register_admin_controller("menu", _menu);
_admin_panel->register_admin_controller("page_manager", _page_manager);
_admin_panel->add_child(_rbac_controller);
_admin_panel->add_child(_menu);

View File

@ -12,12 +12,14 @@
#include "modules/message_page/message_page.h"
#include "modules/paged_article/paged_article.h"
#include "modules/paged_list/paged_list.h"
#include "page_manager/page_manager.h"
class AdminPanel;
class RBACController;
class RBACModel;
class UserController;
class MenuNode;
class PageManager;
#define ENSURE_LOGIN(request) \
if (!is_logged_in(request)) { \
@ -32,9 +34,9 @@ public:
void handle_request_main(Request *request);
void _handle_request_main(Request *request);
bool is_logged_in(Request *request);
void _render_menu(Request *request);
void add_menu(Request *request);
bool is_logged_in(Request *request);
void setup_middleware();
void migrate();
@ -48,6 +50,7 @@ public:
RBACController *_rbac_controller;
UserController *_user_controller;
MenuNode *_menu;
PageManager *_page_manager;
static std::string menu_head;
static std::string footer;

View File

@ -20,6 +20,7 @@
#include "page.h"
void PageManager::_handle_request_main(Request *request) {
render_menu(request);
request->body += "PageManagerTest";
request->compile_and_send_body();