diff --git a/app/page_manager/page_manager.cpp b/app/page_manager/page_manager.cpp index 6dc0ff4..d2c2603 100644 --- a/app/page_manager/page_manager.cpp +++ b/app/page_manager/page_manager.cpp @@ -38,11 +38,11 @@ void PageManager::admin_handle_request_main(Request *request) { } else if (seg == "new_entry") { request->push_path(); - admin_handle_new_menuentry(request); + admin_handle_new_page(request); } else if (seg == "edit_entry") { request->push_path(); - admin_handle_edit_menuentry(request); + admin_handle_edit_page(request); } else if (seg == "up") { request->push_path(); @@ -109,40 +109,42 @@ void PageManager::admin_render_page_list(Request *request) { } -void PageManager::admin_handle_new_menuentry(Request *request) { - /* +void PageManager::admin_handle_new_page(Request *request) { if (request->get_method() == HTTP_METHOD_POST) { - Ref entry; + Ref entry; entry.instance(); entry->name = request->get_parameter("name"); entry->url = request->get_parameter("url"); - entry->sort_order = _data->entries.size() + 1; + entry->page_type = PAGE_TYPE_PAGE; + entry->deleted = 0; - db_save_menu_entry(entry); + db_save_page(entry); - _data->entries.push_back(entry); + invalidate_cache(); + //this should probably go back to the list itself. TODO request->send_redirect(request->get_url_root_parent() + "edit_entry/" + String::num(entry->id)); return; } - MenudminEntryViewData data; - render_menuentry_view(request, &data); - */ + PageAdminEntryViewData data; + render_page_view(request, &data); } -void PageManager::admin_handle_edit_menuentry(Request *request) { - /* +void PageManager::admin_handle_edit_page(Request *request) { String seg = request->get_current_path_segment(); int id = seg.to_int(); - Ref entry; + Ref entry; - for (int i = 0; i < _data->entries.size(); ++i) { - Ref e = _data->entries[i]; + //todo only get the relevant from the db + Vector > pages = db_get_pages(); + + for (int i = 0; i < pages.size(); ++i) { + Ref e = pages[i]; if (e->id == id) { entry = e; @@ -156,36 +158,32 @@ void PageManager::admin_handle_edit_menuentry(Request *request) { return; } - MenudminEntryViewData data; + PageAdminEntryViewData data; data.entry = entry; if (request->get_method() == HTTP_METHOD_POST) { entry->name = request->get_parameter("name"); entry->url = request->get_parameter("url"); - db_save_menu_entry(entry); + db_save_page(entry); + + invalidate_cache(); data.messages.push_back("Save Success!"); } - render_menuentry_view(request, &data); - */ + render_page_view(request, &data); } -void PageManager::render_menuentry_view(Request *request, MenudminEntryViewData *data) { - /* +void PageManager::render_page_view(Request *request, PageAdminEntryViewData *data) { int id = 0; String name = ""; String url = ""; - int sort_order = 0; - bool editing = false; if (data->entry.is_valid()) { id = data->entry->id; name = data->entry->name; url = data->entry->url; - sort_order = data->entry->sort_order; - editing = true; } HTMLBuilder b; @@ -215,18 +213,12 @@ void PageManager::render_menuentry_view(Request *request, MenudminEntryViewData b.w("URL:")->br(); b.input_text("url", url)->br(); - if (!editing) { - b.w("Create Page?"); - b.input_checkbox("create_page", "create_page", true)->br(); - } - b.br(); b.input()->type("submit")->value("Save"); } b.cform(); request->body += b.result; - */ } void PageManager::admin_handle_up(Request *request) { @@ -386,6 +378,10 @@ void PageManager::admin_add_section_links(Vector *links) { links->push_back(AdminSectionLinkInfo("Editor", "")); } +void PageManager::invalidate_cache() { + +} + // DB Vector > PageManager::db_get_pages() { @@ -394,6 +390,7 @@ Vector > PageManager::db_get_pages() { Ref qb = get_query_builder(); qb->select("id,name,url,page_type,deleted")->from(_table); + qb->where()->wp("deleted", 0); Ref res = qb->run(); while (res->next_row()) { diff --git a/app/page_manager/page_manager.h b/app/page_manager/page_manager.h index 65da84e..5f840fe 100644 --- a/app/page_manager/page_manager.h +++ b/app/page_manager/page_manager.h @@ -16,6 +16,10 @@ class PageManager : public AdminNode { RCPP_OBJECT(PageManager, AdminNode); public: + enum PageType { + PAGE_TYPE_PAGE = 0, + }; + void _handle_request_main(Request *request); void create_validators(); @@ -26,19 +30,21 @@ public: void admin_render_page_list(Request *request); - struct MenudminEntryViewData { - //Ref entry; + struct PageAdminEntryViewData { + Ref entry; Vector messages; }; - void admin_handle_new_menuentry(Request *request); - void admin_handle_edit_menuentry(Request *request); - void render_menuentry_view(Request *request, MenudminEntryViewData *data); + void admin_handle_new_page(Request *request); + void admin_handle_edit_page(Request *request); + void render_page_view(Request *request, PageAdminEntryViewData *data); void admin_handle_up(Request *request); void admin_handle_down(Request *request); void admin_handle_delete(Request *request); + void invalidate_cache(); + //void invalidate_cache(String page); //Page -> owner (PageManager*) -> when changes