diff --git a/SConstruct b/SConstruct index 41502f3..ea502a2 100644 --- a/SConstruct +++ b/SConstruct @@ -34,8 +34,8 @@ import traceback folders = [ 'app', 'app/menu', - #'app/page_manager', - #'app/page_manager/content', + 'app/page_manager', + 'app/page_manager/content', ] module_folders = [ diff --git a/app/page_manager/page.cpp b/app/page_manager/page.cpp new file mode 100644 index 0000000..036501a --- /dev/null +++ b/app/page_manager/page.cpp @@ -0,0 +1,13 @@ +#include "page.h" + + +Page::Page() : + Resource() { + + rank_id = 0; + sort_order = 0; + permissions = 0; +} + +Page::~Page() { +} diff --git a/app/page_manager/page.h b/app/page_manager/page.h new file mode 100644 index 0000000..16380e0 --- /dev/null +++ b/app/page_manager/page.h @@ -0,0 +1,22 @@ +#ifndef PAGE_H +#define PAGE_H + +#include "core/string.h" + +#include "core/resource.h" + +class Page : public Resource { + RCPP_OBJECT(Page, Resource); + +public: + int rank_id; + String name; + String url; + int sort_order; + int permissions; + + Page(); + ~Page(); +}; + +#endif \ No newline at end of file diff --git a/app/page_manager/page_manager.cpp b/app/page_manager/page_manager.cpp index d2d98e5..3ebf18d 100644 --- a/app/page_manager/page_manager.cpp +++ b/app/page_manager/page_manager.cpp @@ -15,6 +15,9 @@ #include "core/database/query_result.h" #include "core/database/table_builder.h" +#include "page_content.h" +#include "page.h" + void PageManager::create_validators() { } @@ -48,6 +51,7 @@ void PageManager::admin_handle_request_main(Request *request) { } void PageManager::admin_handle_new_menuentry(Request *request) { + /* if (request->get_method() == HTTP_METHOD_POST) { Ref entry; entry.instance(); @@ -67,9 +71,11 @@ void PageManager::admin_handle_new_menuentry(Request *request) { MenudminEntryViewData data; render_menuentry_view(request, &data); + */ } void PageManager::admin_handle_edit_menuentry(Request *request) { + /* String seg = request->get_current_path_segment(); int id = seg.to_int(); @@ -104,9 +110,11 @@ void PageManager::admin_handle_edit_menuentry(Request *request) { } render_menuentry_view(request, &data); + */ } void PageManager::render_menuentry_view(Request *request, MenudminEntryViewData *data) { + /* int id = 0; String name = ""; String url = ""; @@ -159,9 +167,11 @@ void PageManager::render_menuentry_view(Request *request, MenudminEntryViewData b.cform(); request->body += b.result; + */ } void PageManager::admin_handle_up(Request *request) { + /* String pid = request->get_parameter("id"); if (!pid.is_int()) { @@ -210,9 +220,11 @@ void PageManager::admin_handle_up(Request *request) { //_data->write_unlock() request->send_redirect(request->get_url_root_parent()); + */ } void PageManager::admin_handle_down(Request *request) { + /* String pid = request->get_parameter("id"); if (!pid.is_int()) { @@ -261,9 +273,11 @@ void PageManager::admin_handle_down(Request *request) { //_data->write_unlock() request->send_redirect(request->get_url_root_parent()); + */ } void PageManager::admin_handle_delete(Request *request) { + /* String pid = request->get_parameter("id"); if (!pid.is_int()) { @@ -302,6 +316,7 @@ void PageManager::admin_handle_delete(Request *request) { //_data->write_unlock() request->send_redirect(request->get_url_root_parent()); + */ } String PageManager::admin_get_section_name() { @@ -313,6 +328,7 @@ void PageManager::admin_add_section_links(Vector *links) { } void PageManager::admin_render_menuentry_list(Request *request) { + /* HTMLBuilder b; b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4(); @@ -388,24 +404,13 @@ void PageManager::admin_render_menuentry_list(Request *request) { b.ca(); request->body += b.result; -} - -void PageManager::initialize() { - _data = db_load(); -} - -Ref PageManager::get_data() { - return _data; -} - -bool PageManager::continue_on_missing_default_rank() { - // todo, add setting - return false; + */ } // DB -Ref PageManager::db_load() { +Vector > PageManager::db_load() { + /* Ref data; data.instance(); @@ -429,17 +434,24 @@ Ref PageManager::db_load() { data->sort_entries(); return data; + */ + + return Vector >(); } -void PageManager::db_save(const Ref &menu) { +void PageManager::db_save(const Ref &page) { + + /* + //only save the page itself for (int i = 0; i < menu->entries.size(); ++i) { Ref entry = menu->entries[i]; db_save_menu_entry(entry); - } + }*/ } -void PageManager::db_save_menu_entry(const Ref &entry) { +void PageManager::db_save_page_content(const Ref &entry) { + /* Ref qb = get_query_builder(); if (entry->id == 0) { @@ -465,9 +477,10 @@ void PageManager::db_save_menu_entry(const Ref &entry) { qb->run_query(); // qb->print(); } + */ } -void PageManager::db_delete_menu_entry(const int id) { +void PageManager::db_delete_page(const int id) { Ref qb = get_query_builder(); qb->del(_table)->where()->wp("id", id); @@ -502,6 +515,16 @@ void PageManager::migrate() { void PageManager::create_default_entries() { } +void PageManager::initialize() { + _table = _table_prefix; + + if (_table.size() > 0) { + _table += '_'; + } + + _table += "pages"; +} + void PageManager::_notification(int what) { if (what == Node::NOTIFICATION_ENTER_TREE) { initialize(); @@ -510,8 +533,6 @@ void PageManager::_notification(int what) { PageManager::PageManager() : AdminNode() { - - _table = "menu"; } PageManager::~PageManager() { diff --git a/app/page_manager/page_manager.h b/app/page_manager/page_manager.h index 25cf517..f26f223 100644 --- a/app/page_manager/page_manager.h +++ b/app/page_manager/page_manager.h @@ -9,6 +9,9 @@ class Request; class FormValidator; +class Page; +class PageContent; + class PageManager : public AdminNode { RCPP_OBJECT(PageManager, AdminNode); @@ -22,7 +25,7 @@ public: void admin_render_menuentry_list(Request *request); struct MenudminEntryViewData { - Ref entry; + //Ref entry; Vector messages; }; @@ -34,36 +37,34 @@ public: void admin_handle_down(Request *request); void admin_handle_delete(Request *request); - void initialize(); - - Ref get_data(); - - String &get_redirect_url(); - - bool continue_on_missing_default_rank(); + //void invalidate_cache(String page); + //Page -> owner (PageManager*) -> when changes //db - virtual Ref db_load(); + virtual Vector > db_load(); - virtual void db_save(const Ref &menu); - virtual void db_save_menu_entry(const Ref &entry); - virtual void db_delete_menu_entry(const int id); + virtual void db_save(const Ref &page); + virtual void db_save_page_content(const Ref &entry); + virtual void db_delete_page(const int id); void create_table(); void drop_table(); void migrate(); void create_default_entries(); + virtual void initialize(); void _notification(int what); PageManager(); ~PageManager(); protected: + String _table_prefix; String _table; - Ref _data; + //rwlock _cache_lock; + //map _page_cache; }; #endif \ No newline at end of file