diff --git a/app/menu/menu_node.cpp b/app/menu/menu_node.cpp
index 664dd09..509cc18 100644
--- a/app/menu/menu_node.cpp
+++ b/app/menu/menu_node.cpp
@@ -15,7 +15,20 @@
#include "core/database/query_result.h"
#include "core/database/table_builder.h"
-void MenuNode::handle_request_main(Request *request) {
+void MenuNode::render(Request *request) {
+ /*
+
+ */
}
void MenuNode::create_validators() {
@@ -25,109 +38,97 @@ void MenuNode::admin_handle_request_main(Request *request) {
String seg = request->get_current_path_segment();
if (seg == "") {
- admin_render_rank_list(request);
+ admin_render_menuentry_list(request);
return;
- } else if (seg == "new_rank") {
+ } else if (seg == "new_entry") {
request->push_path();
- admin_handle_new_rank(request);
- } else if (seg == "edit_rank") {
+ admin_handle_new_menuentry(request);
+ } else if (seg == "edit_entry") {
request->push_path();
- admin_handle_edit_rank(request);
- } else if (seg == "permission_editor") {
- request->push_path();
-
- admin_permission_editor(request);
+ admin_handle_edit_menuentry(request);
}
}
-void MenuNode::admin_handle_new_rank(Request *request) {
+void MenuNode::admin_handle_new_menuentry(Request *request) {
+ if (request->get_method() == HTTP_METHOD_POST) {
+ Ref entry;
+ entry.instance();
- /*
- if (request->get_method() == HTTP_METHOD_POST) {
- Ref rank;
- rank.instance();
+ entry->name = request->get_parameter("name");
+ entry->url = request->get_parameter("url");
+ entry->sort_order = _data->entries.size() + 1;
- rank->name = request->get_parameter("name");
- rank->name_internal = request->get_parameter("name_internal");
- rank->settings = request->get_parameter("settings");
+ db_save_menu_entry(entry);
- RBACModel::get_singleton()->save_rank(rank);
+ _data->entries.push_back(entry);
- _ranks[rank->id] = rank;
+ request->send_redirect(request->get_url_root_parent() + "edit_entry/" + String::num(entry->id));
- request->send_redirect(request->get_url_root_parent() + "edit_rank/" + String::num(rank->id));
- return;
- }
+ return;
+ }
- RBACAdminRankViewData data;
- render_rank_view(request, &data);
- */
+ MenudminEntryViewData data;
+ render_menuentry_view(request, &data);
}
-void MenuNode::admin_handle_edit_rank(Request *request) {
- /*
+void MenuNode::admin_handle_edit_menuentry(Request *request) {
String seg = request->get_current_path_segment();
- //check whether it's numeric
- //if (!seg.is)
-
int id = seg.to_int();
- if (id == 0) {
- RLOG_MSG("MenuNode::admin_handle_edit_rank: id == 0!\n");
+ Ref entry;
+
+ for (int i = 0; i < _data->entries.size(); ++i) {
+ Ref e = _data->entries[i];
+
+ if (e->id == id) {
+ entry = e;
+ break;
+ }
+ }
+
+ if (!entry.is_valid()) {
+ RLOG_MSG("MenuNode::admin_handle_edit_menuentry: !entry.is_valid()\n");
request->send_redirect(request->get_url_root_parent());
return;
}
- Ref rank = _ranks[id];
-
- if (!rank.is_valid()) {
- RLOG_MSG("MenuNode::admin_handle_edit_rank: !rank.is_valid()\n");
- request->send_redirect(request->get_url_root_parent());
- return;
- }
-
- RBACAdminRankViewData data;
- data.rank = rank;
+ MenudminEntryViewData data;
+ data.entry = entry;
if (request->get_method() == HTTP_METHOD_POST) {
- rank->name = request->get_parameter("name");
- rank->name_internal = request->get_parameter("name_internal");
- rank->settings = request->get_parameter("settings");
+ entry->name = request->get_parameter("name");
+ entry->url = request->get_parameter("url");
- RBACModel::get_singleton()->save_rank(rank);
+ db_save_menu_entry(entry);
data.messages.push_back("Save Success!");
}
- render_rank_view(request, &data);
- */
+ render_menuentry_view(request, &data);
}
-void MenuNode::render_rank_view(Request *request, RBACAdminRankViewData *data) {
- /*
+void MenuNode::render_menuentry_view(Request *request, MenudminEntryViewData *data) {
int id = 0;
String name = "";
- String name_internal = "";
- String settings = "";
- int base_permissions = 0;
- int rank_permissions = 0;
+ String url = "";
+ int sort_order = 0;
+ bool editing = false;
- if (data->rank.is_valid()) {
- id = data->rank->id;
- name = data->rank->name;
- name_internal = data->rank->name_internal;
- settings = data->rank->settings;
- base_permissions = data->rank->base_permissions;
- rank_permissions = data->rank->rank_permissions;
+ 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;
- b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
- b.h4()->f()->w("RBAC Editor")->ch4();
+ b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
+ b.h4()->f()->w("Menu Editor")->ch4();
b.div()->cls("messages");
for (int i = 0; i < data->messages.size(); ++i) {
@@ -135,21 +136,30 @@ void MenuNode::render_rank_view(Request *request, RBACAdminRankViewData *data) {
}
b.cdiv();
- b.form()->method("POST")->action(request->get_url_root() + String::num(id));
+ String aurl = request->get_url_root();
+
+ if (id != 0) {
+ aurl += String::num(id);
+ }
+
+ b.form()->method("POST")->action(aurl);
{
- //b.input()->type("hidden")->name("id")->value(String::num(id))->f()->cinput();
b.w("Name:")->br();
- b.input()->type("text")->name("name")->value(name)->f()->br();
- b.w("Name (Internal):")->br();
- b.input()->type("text")->name("name_internal")->value(name_internal)->f()->cinput()->br();
- b.w("Custom Settings:")->br();
- b.input()->type("text")->name("settings")->value(settings)->f()->cinput()->br();
+ b.input_text("name", name)->f()->br();
+
+ b.w("URL:")->br();
+ b.input_text("url", url)->f()->br();
+
+ if (!editing) {
+ b.w("Create Page?");
+ b.input_checkbox("create_page", "create_page")->checked()->f()->br();
+ }
+
b.input()->type("submit")->value("Save");
}
b.cform();
request->body += b.result;
- */
}
void MenuNode::admin_permission_editor(Request *request) {
@@ -239,7 +249,7 @@ void MenuNode::admin_render_permission_editor_main_view(Request *request, RBACAd
Ref rank = data->rank;
- b.h4()->f()->a()->href(request->get_url_root_parent(2))->f()->w("<- Back")->ca()->ch4();
+ b.h4()->f()->a()->href(request->get_url_root_parent(2))->f()->w("<- Back")->ca()->ch4();
b.h4()->f()->w("RBAC Editor")->ch4();
b.div()->cls("heading");
@@ -298,7 +308,7 @@ void MenuNode::admin_render_permission_editor_entry_edit_create_view(Request *re
permissions = perm->permissions;
}
- b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
+ b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
b.h4()->f()->w("RBAC Editor")->ch4();
b.br();
@@ -367,45 +377,6 @@ bool MenuNode::admin_process_permission_editor_entry_edit_create_post(Request *r
return true;
}
-void MenuNode::admin_render_rank_list(Request *request) {
- /*
- HTMLBuilder b;
-
- b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
- b.h4()->f()->w("RBAC Editor")->ch4();
-
- for (std::map >::iterator p = _ranks.begin(); p != _ranks.end(); p++) {
- Ref r = p->second;
-
- if (!r.is_valid()) {
- continue;
- }
-
- b.div()->cls("row");
- {
- b.a()->href(request->get_url_root("permission_editor/") + String::num(r->id));
- b.w("[ Id ]: ")->wn(r->id)->w(", [ Name ]: ")->w(r->name)->w(", [ Name Internal ]: ")->w(r->name_internal);
- b.ca();
-
- b.w(" - ");
-
- b.a()->href(request->get_url_root("edit_rank/") + String::num(r->id));
- b.w("[ Edit ]");
- b.ca();
- }
- b.cdiv();
- }
-
- b.br();
-
- b.a()->href(request->get_url_root("new_rank"));
- b.w("New Rank");
- b.ca();
-
- request->body += b.result;
- */
-}
-
void MenuNode::admin_render_rank_editor(Request *request) {
}
@@ -417,6 +388,76 @@ void MenuNode::admin_add_section_links(Vector *links) {
links->push_back(AdminSectionLinkInfo("Editor", ""));
}
+void MenuNode::admin_render_menuentry_list(Request *request) {
+ HTMLBuilder b;
+
+ b.h4()->f()->a()->href(request->get_url_root_parent())->f()->w("<- Back")->ca()->ch4();
+ b.h4()->f()->w("Menu Editor")->ch4();
+ b.style()->f()->w("li { display: inline-block; }")->cstyle();
+
+ for (int i = 0; i < _data->entries.size(); ++i) {
+ Ref e = _data->entries[i];
+
+ if (!e.is_valid()) {
+ continue;
+ }
+
+ b.div()->cls("row")->f()->ul();
+ {
+ b.li();
+ b.a()->href(request->get_url_root("edit_entry/") + String::num(e->id));
+ b.w("id: ")->wn(e->id)->w(" name: ")->w(e->name)->w(" url: ")->w(e->url);
+ b.ca();
+ b.cli();
+
+ b.li();
+ /*
+ @if ($i != 0)
+ {!! Form::open(array('url' => 'admin/menu_editor/up')) !!}
+ {!! Form::hidden('id', $menuentries[$i]->id) !!}
+ {!! Form::submit(trans('admin.up')) !!}
+ {!! Form::close() !!}
+ @else
+ {{ trans('admin.up') }}
+ @endif
+ */
+ b.cli();
+
+ b.li();
+
+ /*
+ @if ($i + 1 != count($menuentries))
+ {!! Form::open(array('url' => 'admin/menu_editor/down')) !!}
+ {!! Form::hidden('id', $menuentries[$i]->id) !!}
+ {!! Form::submit(trans('admin.down')) !!}
+ {!! Form::close() !!}
+ @else
+ {{ trans('admin.down') }}
+ @endif
+ */
+ b.cli();
+
+ b.li();
+ /*
+ {!! Form::open(array('url' => 'admin/menu_editor/delete')) !!}
+ {!! Form::hidden('id', $menuentries[$i]->id) !!}
+ {!! Form::submit(trans('admin.delete')) !!}
+ {!! Form::close() !!}
+ */
+ b.cli();
+ }
+ b.cul()->cdiv();
+ }
+
+ b.br();
+
+ b.a()->href(request->get_url_root("new_entry"));
+ b.w("New Menu Entry");
+ b.ca();
+
+ request->body += b.result;
+}
+
void MenuNode::initialize() {
_data = db_load();
}
@@ -522,6 +563,12 @@ void MenuNode::migrate() {
void MenuNode::create_default_entries() {
}
+void MenuNode::_notification(int what) {
+ if (what == Node::NOTIFICATION_ENTER_TREE) {
+ initialize();
+ }
+}
+
MenuNode::MenuNode() :
AdminNode() {
diff --git a/app/menu/menu_node.h b/app/menu/menu_node.h
index ac1b03c..5a84129 100644
--- a/app/menu/menu_node.h
+++ b/app/menu/menu_node.h
@@ -16,27 +16,24 @@ class MenuNode : public AdminNode {
RCPP_OBJECT(MenuNode, AdminNode);
public:
- void handle_request_main(Request *request);
+ virtual void render(Request *request);
+
void create_validators();
void admin_handle_request_main(Request *request);
String admin_get_section_name();
void admin_add_section_links(Vector *links);
- struct RBACAdminRankViewData {
- Ref rank;
- Vector messages;
+ void admin_render_menuentry_list(Request *request);
- int id = 0;
- String name = "";
- String name_internal = "";
- String settings = "";
- int rank_permissions = 0;
+ struct MenudminEntryViewData {
+ Ref entry;
+ Vector messages;
};
- void admin_handle_new_rank(Request *request);
- void admin_handle_edit_rank(Request *request);
- void render_rank_view(Request *request, RBACAdminRankViewData *data);
+ void admin_handle_new_menuentry(Request *request);
+ void admin_handle_edit_menuentry(Request *request);
+ void render_menuentry_view(Request *request, MenudminEntryViewData *data);
struct RBACAdminEditPermissionView {
Ref rank;
@@ -52,7 +49,6 @@ public:
void admin_render_permission_editor_entry_edit_create_view(Request *request, RBACAdminEditPermissionView *data);
bool admin_process_permission_editor_entry_edit_create_post(Request *request, RBACAdminEditPermissionView *data);
- void admin_render_rank_list(Request *request);
void admin_render_rank_editor(Request *request);
void initialize();
@@ -75,6 +71,8 @@ public:
void migrate();
void create_default_entries();
+ void _notification(int what);
+
MenuNode();
~MenuNode();