From dbced4e37133196e8ea771bd6e92e1d50c9abb39 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sun, 9 Jan 2022 17:05:04 +0100 Subject: [PATCH] Updated the engine and fixed compile. It still needs changes to work again though. --- HEADS | 2 +- app/assignments/assignment_controller.cpp | 12 +- app/assignments/assignment_controller.h | 6 +- app/buildings/building_controller.cpp | 18 +-- app/buildings/building_controller.h | 6 +- app/html_macros.h | 4 +- ...mourne_application.cpp => mourne_root.cpp} | 122 ++++++++++++------ app/{mourne_application.h => mourne_root.h} | 39 +++--- app/mourne_user_controller.cpp | 30 ++++- app/mourne_user_controller.h | 2 + app/mourne_user_model.cpp | 30 ----- app/mourne_user_model.h | 23 ---- app/weather/weather_controller.cpp | 12 +- app/weather/weather_controller.h | 6 +- main.cpp | 49 ++----- 15 files changed, 177 insertions(+), 184 deletions(-) rename app/{mourne_application.cpp => mourne_root.cpp} (70%) rename app/{mourne_application.h => mourne_root.h} (60%) delete mode 100644 app/mourne_user_model.cpp delete mode 100644 app/mourne_user_model.h diff --git a/HEADS b/HEADS index 1610794..1533138 100644 --- a/HEADS +++ b/HEADS @@ -1 +1 @@ -{"engine": {"master": "f9dcd088d0af77ac83ff3fb629131d254d2d2f9f"}} \ No newline at end of file +{"engine": {"master": "0c6c20bd64ebe3a9fe798af793f3181aeb3fd0e5"}} \ No newline at end of file diff --git a/app/assignments/assignment_controller.cpp b/app/assignments/assignment_controller.cpp index 74d6949..35aecc7 100644 --- a/app/assignments/assignment_controller.cpp +++ b/app/assignments/assignment_controller.cpp @@ -68,11 +68,11 @@ void AssignmentController::admin_render_assignment_list(Request *request) { HTMLBuilder b; - b.div("back")->f()->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); + b.div("back")->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); b.br(); b.fdiv("Assignment Editor", "top_menu"); b.br(); - b.div("top_menu")->f()->fa(request->get_url_root("new"), "Create New")->cdiv(); + b.div("top_menu")->fa(request->get_url_root("new"), "Create New")->cdiv(); b.br(); b.div("list_container"); @@ -93,7 +93,7 @@ void AssignmentController::admin_render_assignment_list(Request *request) { b.fdiv(String::num(assignment->id), "attr_box"); b.fdiv(assignment->description, "name"); - b.div("actionbox")->f()->fa(request->get_url_root("edit/" + String::num(assignment->id)), "Edit")->cdiv(); + b.div("actionbox")->fa(request->get_url_root("edit/" + String::num(assignment->id)), "Edit")->cdiv(); } b.cdiv(); } @@ -114,7 +114,7 @@ void AssignmentController::admin_render_assignment(Request *request, Reff()->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); + b.div("back")->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); b.br(); b.fdiv("Assignment Editor", "top_menu"); b.br(); @@ -159,7 +159,7 @@ void AssignmentController::admin_render_assignment(Request *request, Refdescription, request->get_parameter("description")); - b.div("edit_submit")->f()->input_submit("Save", "submit")->f()->cdiv(); + b.div("edit_submit")->input_submit("Save", "submit")->cdiv(); b.cform(); @@ -178,7 +178,7 @@ AssignmentController *AssignmentController::get_singleton() { } AssignmentController::AssignmentController() : - AdminController() { + AdminNode() { if (_self) { printf("AssignmentController::AssignmentController(): Error! self is not null!/n"); diff --git a/app/assignments/assignment_controller.h b/app/assignments/assignment_controller.h index 1cd8419..020c737 100644 --- a/app/assignments/assignment_controller.h +++ b/app/assignments/assignment_controller.h @@ -4,15 +4,15 @@ #include "core/string.h" #include "core/containers/vector.h" -#include "modules/admin_panel/admin_controller.h" +#include "modules/admin_panel/admin_node.h" #include "assignment.h" class Request; class FormValidator; -class AssignmentController : public AdminController { - RCPP_OBJECT(AssignmentController, AdminController); +class AssignmentController : public AdminNode { + RCPP_OBJECT(AssignmentController, AdminNode); public: void handle_request_default(Request *request); diff --git a/app/buildings/building_controller.cpp b/app/buildings/building_controller.cpp index 2f62c96..dc9fa64 100644 --- a/app/buildings/building_controller.cpp +++ b/app/buildings/building_controller.cpp @@ -68,11 +68,11 @@ void BuildingController::admin_render_building_list(Request *request) { HTMLBuilder b; - b.div("back")->f()->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); + b.div("back")->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); b.br(); b.fdiv("Building Editor", "top_menu"); b.br(); - b.div("top_menu")->f()->fa(request->get_url_root("new"), "Create New")->cdiv(); + b.div("top_menu")->fa(request->get_url_root("new"), "Create New")->cdiv(); b.br(); b.div("list_container"); @@ -95,7 +95,7 @@ void BuildingController::admin_render_building_list(Request *request) { b.fdiv(String::num(building->next_rank), "attr_box"); b.fdiv(building->name, "name"); - b.div("actionbox")->f()->fa(request->get_url_root("edit/" + String::num(building->id)), "Edit")->cdiv(); + b.div("actionbox")->fa(request->get_url_root("edit/" + String::num(building->id)), "Edit")->cdiv(); } b.cdiv(); } @@ -116,7 +116,7 @@ void BuildingController::admin_render_building(Request *request, Ref b HTMLBuilder b; - b.div("back")->f()->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); + b.div("back")->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); b.br(); b.fdiv("Building Editor", "top_menu"); b.br(); @@ -132,7 +132,7 @@ void BuildingController::admin_render_building(Request *request, Ref b b.fdiv("Icon:", "edit_name"); //todo I'm not sure yet how this worked originally //b.div("edit_input")->f()->input_image("icon", building->icon)->f()->cdiv(); - b.div("edit_input")->f()->w("TODO")->cdiv(); + b.div("edit_input")->w("TODO")->cdiv(); b.cdiv(); ADMIN_EDIT_INPUT_TEXT("Rank:", "rank", show_post, String::num(building->rank), request->get_parameter("rank")); @@ -189,7 +189,7 @@ void BuildingController::admin_render_building(Request *request, Ref b b.div("row_edit"); b.fdiv("Ability:", "edit_name"); - b.div("edit_input")->f()->w("TODO")->cdiv(); + b.div("edit_input")->w("TODO")->cdiv(); b.cdiv(); ADMIN_EDIT_LINE_SPACER(); @@ -219,7 +219,7 @@ void BuildingController::admin_render_building(Request *request, Ref b b.div("row_edit"); b.fdiv("Creates:", "edit_name"); - b.div("edit_input")->f()->w("TODO")->cdiv(); + b.div("edit_input")->w("TODO")->cdiv(); b.cdiv(); ADMIN_EDIT_LINE_SPACER(); @@ -267,7 +267,7 @@ void BuildingController::admin_render_building(Request *request, Ref b //TODO ADMIN_EDIT_INPUT_TEXT("Secondary Technology Group:", "tech_secondary_group", show_post, String::num(building->tech_secondary_group), request->get_parameter("tech_secondary_group")); - b.div("edit_submit")->f()->input_submit("Save", "submit")->f()->cdiv(); + b.div("edit_submit")->input_submit("Save", "submit")->cdiv(); b.cform(); @@ -286,7 +286,7 @@ BuildingController *BuildingController::get_singleton() { } BuildingController::BuildingController() : - AdminController() { + AdminNode() { if (_self) { printf("BuildingController::BuildingController(): Error! self is not null!/n"); diff --git a/app/buildings/building_controller.h b/app/buildings/building_controller.h index 588c19a..979a3aa 100644 --- a/app/buildings/building_controller.h +++ b/app/buildings/building_controller.h @@ -4,15 +4,15 @@ #include "core/string.h" #include "core/containers/vector.h" -#include "modules/admin_panel/admin_controller.h" +#include "modules/admin_panel/admin_node.h" #include "building.h" class Request; class FormValidator; -class BuildingController : public AdminController { - RCPP_OBJECT(BuildingController, AdminController); +class BuildingController : public AdminNode { + RCPP_OBJECT(BuildingController, AdminNode); public: void handle_request_default(Request *request); diff --git a/app/html_macros.h b/app/html_macros.h index 05cbc3f..125b524 100644 --- a/app/html_macros.h +++ b/app/html_macros.h @@ -4,13 +4,13 @@ #define ADMIN_EDIT_INPUT_TEXT(p_edit_name, p_var_name, p_show_post, p_var, p_request_var) \ b.div("row_edit"); \ b.fdiv(p_edit_name, "edit_name"); \ - b.div("edit_input")->f()->input_text(p_var_name, p_show_post ? p_request_var : p_var, "", "input")->f()->cdiv(); \ + b.div("edit_input")->input_text(p_var_name, p_show_post ? p_request_var : p_var, "", "input")->cdiv(); \ b.cdiv(); #define ADMIN_EDIT_INPUT_TEXTAREA(p_edit_name, p_var_name, p_show_post, p_var, p_request_var) \ b.div("row_edit_textbox"); \ b.fdiv(p_edit_name, "edit_name"); \ - b.div("edit_input")->f()->ftextarea(p_var_name, p_show_post ? p_request_var : p_var, "textarea")->cdiv(); \ + b.div("edit_input")->ftextarea(p_var_name, p_show_post ? p_request_var : p_var, "textarea")->cdiv(); \ b.cdiv(); #define ADMIN_EDIT_LINE_SPACER() \ diff --git a/app/mourne_application.cpp b/app/mourne_root.cpp similarity index 70% rename from app/mourne_application.cpp rename to app/mourne_root.cpp index 6742f87..b9ab561 100644 --- a/app/mourne_application.cpp +++ b/app/mourne_root.cpp @@ -1,4 +1,4 @@ -#include "mourne_application.h" +#include "mourne_root.h" #include "core/http/request.h" @@ -6,7 +6,8 @@ #include "core/file_cache.h" -#include "core/http/handler_instance.h" +#include "core/os/platform.h" +#include "core/os/arg_parser.h" #include "core/database/database_manager.h" @@ -18,13 +19,41 @@ #include "modules/users/user.h" #include "modules/users/user_controller.h" +#include "mourne_user_controller.h" + +#include "assignments/assignment_initializer.h" #include "buildings/building_initializer.h" #include "village/village_initializer.h" -#include "assignments/assignment_initializer.h" #include "weather/weather_initializer.h" -bool MourneApplication::is_logged_in(Request *request) { - if (!request->session) { +void MourneRoot::handle_request_main(Request *request) { + if (process_middlewares(request)) { + return; + } + + if (try_send_wwwroot_file(request)) { + return; + } + + // this is a hack, until I have a simple index node, or port contentcontroller. + if (request->get_path_segment_count() == 0) { + index(request); + return; + } + + WebNode *handler = get_request_handler_child(request); + + if (!handler) { + request->send_error(404); + return; + } + + add_menu(request, MENUENTRY_NEWS); + handler->handle_request_main(request); +} + +bool MourneRoot::is_logged_in(Request *request) { + if (!request->session.is_valid()) { return false; } @@ -33,7 +62,7 @@ bool MourneApplication::is_logged_in(Request *request) { return u.is_valid(); } -void MourneApplication::index(Object *instance, Request *request) { +void MourneRoot::index(Request *request) { ENSURE_LOGIN(request); add_menu(request, MENUENTRY_NEWS); @@ -56,15 +85,12 @@ void MourneApplication::index(Object *instance, Request *request) { */ - //dynamic_cast(instance)->index(request); + // dynamic_cast(instance)->index(request); request->body += "test"; request->compile_and_send_body(); } -void MourneApplication::session_middleware_func(Object *instance, Request *request) { -} - -void MourneApplication::add_menu(Request *request, const MenuEntries index) { +void MourneRoot::add_menu(Request *request, const MenuEntries index) { request->head += menu_head; HTMLBuilder b; @@ -73,7 +99,7 @@ void MourneApplication::add_menu(Request *request, const MenuEntries index) { int userlevel = 0; - if (request->session) { + if (request->session.is_valid()) { Ref user = request->reference_data["user"]; if (user.is_valid()) { @@ -109,7 +135,7 @@ void MourneApplication::add_menu(Request *request, const MenuEntries index) { { b.a()->href("/mail/inbox"); b.w("Mails"); - //if ($newmail) echo '!'; + // if ($newmail) echo '!'; b.ca(); } b.cdiv(); @@ -125,7 +151,7 @@ void MourneApplication::add_menu(Request *request, const MenuEntries index) { b.div()->cls("menu_village"); { b.a()->href("/village/selected"); - b.w("Village"); //villagename + b.w("Village"); // villagename b.ca(); } b.cdiv(); @@ -221,57 +247,63 @@ void MourneApplication::add_menu(Request *request, const MenuEntries index) { request->footer = footer; } -void MourneApplication::village_page_func(Object *instance, Request *request) { +void MourneRoot::village_page_func(Request *request) { add_menu(request, MENUENTRY_VILLAGE); - //dynamic_cast(instance)->index(request); + // dynamic_cast(instance)->index(request); request->body += "test"; request->compile_and_send_body(); } -void MourneApplication::user_page_func(Object *instance, Request *request) { +void MourneRoot::user_page_func(Request *request) { if (is_logged_in(request)) { add_menu(request, MENUENTRY_SETTINGS); } - UserController::get_singleton()->handle_request_default(request); + UserController::get_singleton()->handle_request_main(request); } -void MourneApplication::admin_page_func(Object *instance, Request *request) { +void MourneRoot::admin_page_func(Request *request) { AdminPanel::get_singleton()->handle_request_main(request); } -void MourneApplication::setup_routes() { - DWebApplication::setup_routes(); - - index_func = HandlerInstance(index); - main_route_map["village"] = HandlerInstance(village_page_func); - main_route_map["user"] = HandlerInstance(user_page_func); - main_route_map["admin"] = HandlerInstance(admin_page_func); +void MourneRoot::setup_routes() { + // index_func = HandlerInstance(index); + // main_route_map["village"] = HandlerInstance(village_page_func); + // main_route_map["user"] = HandlerInstance(user_page_func); + // main_route_map["admin"] = HandlerInstance(admin_page_func); } -void MourneApplication::setup_middleware() { - middlewares.push_back(HandlerInstance(::SessionManager::session_setup_middleware)); - middlewares.push_back(HandlerInstance(::UserController::user_session_setup_middleware)); - - DWebApplication::setup_middleware(); +void MourneRoot::setup_middleware() { + _middlewares.push_back(Ref(new SessionSetupMiddleware())); + _middlewares.push_back(Ref(new UserSessionSetupMiddleware())); } -void MourneApplication::migrate() { +void MourneRoot::migrate() { BuildingController::get_singleton()->migrate(); VillageController::get_singleton()->migrate(); AssignmentController::get_singleton()->migrate(); WeatherController::get_singleton()->migrate(); + + if (Platform::get_singleton()->arg_parser.has_arg("-u")) { + printf("Creating test users.\n"); + _user_controller->create_test_users(); + } + + if (Platform::get_singleton()->arg_parser.has_arg("-d")) { + printf("Adding data.\n"); + add_default_data(); + } } -void MourneApplication::add_default_data() { +void MourneRoot::add_default_data() { BuildingController::get_singleton()->add_default_data(); VillageController::get_singleton()->add_default_data(); AssignmentController::get_singleton()->add_default_data(); WeatherController::get_singleton()->add_default_data(); } -void MourneApplication::compile_menu() { +void MourneRoot::compile_menu() { HTMLBuilder bh; bh.meta()->charset_utf_8(); @@ -301,8 +333,8 @@ void MourneApplication::compile_menu() { footer = bf.result; } -MourneApplication::MourneApplication() : - DWebApplication() { +MourneRoot::MourneRoot() : + WebRoot() { BuildingInitializer::allocate_all(); VillageInitializer::allocate_all(); @@ -310,10 +342,18 @@ MourneApplication::MourneApplication() : WeatherInitializer::allocate_all(); _admin_panel = new AdminPanel(); + _admin_panel->set_uri_segment("admin"); _admin_panel->register_admin_controller("buildings", BuildingController::get_singleton()); _admin_panel->register_admin_controller("assignments", AssignmentController::get_singleton()); _admin_panel->register_admin_controller("weather", WeatherController::get_singleton()); + _user_controller = new MourneUserController(); + _user_controller->set_uri_segment("user"); + // user_manager->set_path("./users/"); + add_child(_user_controller); + + add_child(_admin_panel); + HTMLBuilder b; b.link()->rel("stylesheet")->type("text/css")->href("/css/base.css")->f()->f(); @@ -330,15 +370,13 @@ MourneApplication::MourneApplication() : compile_menu(); } -MourneApplication::~MourneApplication() { - delete _admin_panel; - +MourneRoot::~MourneRoot() { VillageInitializer::free_all(); BuildingInitializer::free_all(); AssignmentInitializer::free_all(); WeatherInitializer::free_all(); } -String MourneApplication::menu_head = ""; -String MourneApplication::admin_headers = ""; -String MourneApplication::footer = ""; +String MourneRoot::menu_head = ""; +String MourneRoot::admin_headers = ""; +String MourneRoot::footer = ""; diff --git a/app/mourne_application.h b/app/mourne_root.h similarity index 60% rename from app/mourne_application.h rename to app/mourne_root.h index e49a372..4454a60 100644 --- a/app/mourne_application.h +++ b/app/mourne_root.h @@ -1,10 +1,10 @@ -#ifndef RDN_APPLICATION_H -#define RDN_APPLICATION_H +#ifndef MOURNE_ROOT_H +#define MOURNE_ROOT_H //#include "core/http/web_application.h" +#include "core/http/web_root.h" #include "core/object.h" #include "core/string.h" -#include "modules/drogon/web_application.h" #include "modules/list_page/list_page.h" #include "modules/message_page/message_page.h" @@ -12,6 +12,11 @@ #include "modules/paged_list/paged_list.h" class AdminPanel; +class RBACController; +class RBACModel; +class UserController; +class MenuNode; +class MourneUserController; #define ENSURE_LOGIN(request) \ if (!is_logged_in(request)) { \ @@ -19,7 +24,9 @@ class AdminPanel; return; \ } -class MourneApplication : public DWebApplication { +class MourneRoot : public WebRoot { + RCPP_OBJECT(MourneRoot, WebRoot); + public: enum MenuEntries { MENUENTRY_NEWS = 0, @@ -38,18 +45,16 @@ public: }; public: - static bool is_logged_in(Request *request); + void handle_request_main(Request *request); - static void index(Object *instance, Request *request); + bool is_logged_in(Request *request); - static void session_middleware_func(Object *instance, Request *request); + void add_menu(Request *request, const MenuEntries index); - static void add_menu(Request *request, const MenuEntries index); - - static void village_page_func(Object *instance, Request *request); - static void user_page_func(Object *instance, Request *request); - - static void admin_page_func(Object *instance, Request *request); + void index(Request *request); + void village_page_func(Request *request); + void user_page_func(Request *request); + void admin_page_func(Request *request); virtual void setup_routes(); virtual void setup_middleware(); @@ -59,10 +64,12 @@ public: void compile_menu(); - MourneApplication(); - ~MourneApplication(); + MourneRoot(); + ~MourneRoot(); - AdminPanel *_admin_panel; + AdminPanel *_admin_panel; + MourneUserController *_user_controller; + MenuNode *_menu; static String menu_head; static String admin_headers; diff --git a/app/mourne_user_controller.cpp b/app/mourne_user_controller.cpp index b8f6f97..bf40d8c 100644 --- a/app/mourne_user_controller.cpp +++ b/app/mourne_user_controller.cpp @@ -6,7 +6,6 @@ #include "core/http/http_session.h" #include "core/http/request.h" #include "core/http/session_manager.h" -#include "modules/users/user_model.h" void MourneUserController::render_login_request_default(Request *request, LoginRequestData *data) { HTMLBuilder b; @@ -26,7 +25,7 @@ void MourneUserController::render_login_request_default(Request *request, LoginR b.div()->cls("login"); { - //todo href path helper + // todo href path helper b.form()->method("POST")->href("/user/login"); { b.w("Username"); @@ -75,7 +74,7 @@ void MourneUserController::render_register_request_default(Request *request, Reg b.div()->cls("register"); { - //todo href path helper + // todo href path helper b.form()->method("POST")->href("/user/register"); { b.w("Username"); @@ -101,7 +100,7 @@ void MourneUserController::render_register_request_default(Request *request, Reg b.input()->type("password")->name("password_check"); b.cinput(); b.br(); - + b.input()->type("submit")->value("Register"); b.cinput(); } @@ -144,7 +143,7 @@ void MourneUserController::render_settings_request(Ref &user, Request *req b.div()->cls("settings"); { - //todo href path helper + // todo href path helper b.form()->method("POST")->href("/user/settings"); { b.w("Username"); @@ -183,6 +182,27 @@ void MourneUserController::render_settings_request(Ref &user, Request *req request->compile_and_send_body(); } +void MourneUserController::create_test_users() { + Ref user; + user = create_user(); + + user->rank = 6; + user->name_user_input = "admin"; + user->email_user_input = "admin@admin.com"; + + create_password(user, "Password"); + db_save_user(user); + + user = create_user(); + + user->rank = 1; + user->name_user_input = "user"; + user->email_user_input = "user@user.com"; + + create_password(user, "Password"); + db_save_user(user); +} + MourneUserController::MourneUserController() : UserController() { } diff --git a/app/mourne_user_controller.h b/app/mourne_user_controller.h index 2393b10..ea33793 100644 --- a/app/mourne_user_controller.h +++ b/app/mourne_user_controller.h @@ -18,6 +18,8 @@ public: void render_already_logged_in_error(Request *request); void render_settings_request(Ref &user, Request *request, SettingsRequestData *data); + virtual void create_test_users(); + MourneUserController(); ~MourneUserController(); }; diff --git a/app/mourne_user_model.cpp b/app/mourne_user_model.cpp deleted file mode 100644 index 10e0523..0000000 --- a/app/mourne_user_model.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include "mourne_user_model.h" - -void MourneUserModel::create_test_users() { - Ref user; - user = UserModel::get_singleton()->create_user(); - - user->rank = 6; - user->name_user_input = "admin"; - user->email_user_input = "admin@admin.com"; - - create_password(user, "Password"); - save_user(user); - - - user = UserModel::get_singleton()->create_user(); - - user->rank = 1; - user->name_user_input = "user"; - user->email_user_input = "user@user.com"; - - create_password(user, "Password"); - save_user(user); -} - -MourneUserModel::MourneUserModel() : - UserModel() { -} - -MourneUserModel::~MourneUserModel() { -} diff --git a/app/mourne_user_model.h b/app/mourne_user_model.h deleted file mode 100644 index a9011f4..0000000 --- a/app/mourne_user_model.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef MOURNE_USER_MODEL_H -#define MOURNE_USER_MODEL_H - -#include "core/string.h" -#include "core/containers/vector.h" - -#include "modules/users/user_model.h" - -#include "modules/users/user.h" - -class MourneUserModel : public UserModel { - RCPP_OBJECT(MourneUserModel, UserModel); - -public: - virtual void create_test_users(); - - MourneUserModel(); - ~MourneUserModel(); - -protected: -}; - -#endif \ No newline at end of file diff --git a/app/weather/weather_controller.cpp b/app/weather/weather_controller.cpp index 25dc84d..67335de 100644 --- a/app/weather/weather_controller.cpp +++ b/app/weather/weather_controller.cpp @@ -68,11 +68,11 @@ void WeatherController::admin_render_weather_list(Request *request) { HTMLBuilder b; - b.div("back")->f()->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); + b.div("back")->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); b.br(); b.fdiv("Weather Editor", "top_menu"); b.br(); - b.div("top_menu")->f()->fa(request->get_url_root("new"), "Create New")->cdiv(); + b.div("top_menu")->fa(request->get_url_root("new"), "Create New")->cdiv(); b.br(); b.div("list_container"); @@ -93,7 +93,7 @@ void WeatherController::admin_render_weather_list(Request *request) { b.fdiv(String::num(weather->id), "attr_box"); b.fdiv(weather->name, "name"); - b.div("actionbox")->f()->fa(request->get_url_root("edit/" + String::num(weather->id)), "Edit")->cdiv(); + b.div("actionbox")->fa(request->get_url_root("edit/" + String::num(weather->id)), "Edit")->cdiv(); } b.cdiv(); } @@ -114,7 +114,7 @@ void WeatherController::admin_render_weather(Request *request, Ref weat HTMLBuilder b; - b.div("back")->f()->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); + b.div("back")->fa(request->get_url_root_parent(), "<--- Back")->cdiv(); b.br(); b.fdiv("Weather Editor", "top_menu"); b.br(); @@ -149,7 +149,7 @@ void WeatherController::admin_render_weather(Request *request, Ref weat ADMIN_EDIT_INPUT_TEXT("Mod Percent Iron:", "mod_percent_iron", show_post, String::num(weather->mod_percent_iron), request->get_parameter("mod_percent_iron")); ADMIN_EDIT_INPUT_TEXT("Mod Percent Mana:", "mod_percent_mana", show_post, String::num(weather->mod_percent_mana), request->get_parameter("mod_percent_mana")); - b.div("edit_submit")->f()->input_submit("Save", "submit")->f()->cdiv(); + b.div("edit_submit")->input_submit("Save", "submit")->cdiv(); b.cform(); @@ -168,7 +168,7 @@ WeatherController *WeatherController::get_singleton() { } WeatherController::WeatherController() : - AdminController() { + AdminNode() { if (_self) { printf("WeatherController::WeatherController(): Error! self is not null!/n"); diff --git a/app/weather/weather_controller.h b/app/weather/weather_controller.h index ad4d2a5..9e076f5 100644 --- a/app/weather/weather_controller.h +++ b/app/weather/weather_controller.h @@ -4,15 +4,15 @@ #include "core/string.h" #include "core/containers/vector.h" -#include "modules/admin_panel/admin_controller.h" +#include "modules/admin_panel/admin_node.h" #include "weather.h" class Request; class FormValidator; -class WeatherController : public AdminController { - RCPP_OBJECT(WeatherController, AdminController); +class WeatherController : public AdminNode { + RCPP_OBJECT(WeatherController, AdminNode); public: void handle_request_default(Request *request); diff --git a/main.cpp b/main.cpp index 3973f4b..72a9265 100644 --- a/main.cpp +++ b/main.cpp @@ -2,25 +2,23 @@ #include #include -#include "core/bry_http/http_server.h" #include "core/file_cache.h" -#include "core/http/web_application.h" +#include "core/http/web_root.h" -#include "app/mourne_application.h" +#include "app/mourne_root.h" #include "database/db_init.h" -#include "core/settings.h" +#include "core/settings/settings.h" +#include "core/settings/db_settings.h" #include "core/http/session_manager.h" -#include "modules/drogon/web_application.h" +#include "modules/drogon/drogon_web_server.h" //Backends #include "backends/hash_hashlib/setup.h" -#include "app/mourne_user_controller.h" -#include "app/mourne_user_model.h" #include "modules/users/user.h" #include "core/os/platform.h" @@ -49,13 +47,8 @@ int main(int argc, char **argv, char **envp) { ::SessionManager *session_manager = new ::SessionManager(); - //todo init these in the module automatically - MourneUserController *user_controller = new MourneUserController(); - MourneUserModel *user_model = new MourneUserModel(); - //user_manager->set_path("./users/"); - - Settings *settings = new Settings(true); - //settings->parse_file("settings.json"); + DBSettings *settings = new DBSettings(true); + // settings->parse_file("settings.json"); FileCache *file_cache = new FileCache(true); file_cache->wwwroot = "./www"; @@ -65,18 +58,17 @@ int main(int argc, char **argv, char **envp) { create_databases(); - MourneApplication *app = new MourneApplication(); - - app->load_settings(); - app->setup_routes(); - app->setup_middleware(); + DrogonWebServer *app = new DrogonWebServer(); + MourneRoot *app_root = new MourneRoot(); + app_root->setup(); bool migrate = Platform::get_singleton()->arg_parser.has_arg("-m"); if (!migrate) { - printf("Initialized!\n"); + settings->load(); session_manager->load_sessions(); + printf("Initialized!\n"); app->add_listener("127.0.0.1", 8080); LOG_INFO << "Server running on 127.0.0.1:8080"; @@ -84,28 +76,15 @@ int main(int argc, char **argv, char **envp) { } else { printf("Running migrations.\n"); + settings->migrate(); session_manager->migrate(); - user_model->migrate(); - - if (Platform::get_singleton()->arg_parser.has_arg("-u")) { - printf("Creating test users.\n"); - user_model->create_test_users(); - } - - app->migrate(); - - if (Platform::get_singleton()->arg_parser.has_arg("-d")) { - printf("Adding data.\n"); - app->add_default_data(); - } + app_root->migrate(); } delete app; delete dbm; delete file_cache; delete settings; - delete user_controller; - delete user_model; delete session_manager; PlatformInitializer::free_all();