From 8394a4b6d5456627fa75aaa8548060bb5239c375 Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 7 Jan 2022 23:35:11 +0100 Subject: [PATCH] Also implemented the delete button. --- HEADS | 2 +- app/menu/menu_node.cpp | 55 ++++++++++++++++++++++++++++++++---------- app/menu/menu_node.h | 1 + 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/HEADS b/HEADS index 05f4d16..a3c2bfa 100644 --- a/HEADS +++ b/HEADS @@ -1 +1 @@ -{"engine": {"master": "d9c36d0a4e62644ce964c0761961f2b7120ba800"}} \ No newline at end of file +{"engine": {"master": "f2458084e67b1df3830a4081c3b35d3e5bfe1c93"}} \ No newline at end of file diff --git a/app/menu/menu_node.cpp b/app/menu/menu_node.cpp index ae2f64a..1bb19b8 100644 --- a/app/menu/menu_node.cpp +++ b/app/menu/menu_node.cpp @@ -166,7 +166,8 @@ void MenuNode::render_menuentry_view(Request *request, MenudminEntryViewData *da b.w("Create Page?"); b.input_checkbox("create_page", "create_page")->checked()->f()->br(); } - + + b.br(); b.input()->type("submit")->value("Save"); } b.cform(); @@ -277,24 +278,45 @@ void MenuNode::admin_handle_down(Request *request) { } void MenuNode::admin_handle_delete(Request *request) { - /* - $id = $request->input('id'); + String pid = request->get_parameter("id"); - if (!$id || !is_numeric($id)) - { - return redirect()->back(); + if (!pid.is_int()) { + request->send_redirect(request->get_url_root_parent()); + return; + } + + int id = pid.to_int(); + + // TODO + // Also lock everywhere else + //_data->write_lock() + + for (int i = 0; i < _data->entries.size(); ++i) { + Ref e = _data->entries[i]; + + if (e->id == id) { + int sort_order = e->sort_order; + + for (int j = 0; j < _data->entries.size(); ++j) { + Ref be = _data->entries[j]; + + if (be->sort_order > sort_order) { + be->sort_order -= 1; + db_save_menu_entry(be); + break; + } } - $current = Menu::findOrFail($id); + db_delete_menu_entry(e->id); - Log::info('MenuEntry deleted! Json: ' . $current->toJson()); + _data->entries.remove_keep_order(i); - $current->delete(); + break; + } + } - Menu::where('sort_order', '>', $current->sort_order)->decrement('sort_order', 1); - - return redirect()->back(); - */ + //_data->write_unlock() + request->send_redirect(request->get_url_root_parent()); } String MenuNode::admin_get_section_name() { @@ -457,6 +479,13 @@ void MenuNode::db_save_menu_entry(const Ref &entry) { } } +void MenuNode::db_delete_menu_entry(const int id) { + Ref qb = get_query_builder(); + + qb->del(_table)->where()->wp("id", id); + qb->run_query(); +} + void MenuNode::create_table() { Ref tb = get_table_builder(); diff --git a/app/menu/menu_node.h b/app/menu/menu_node.h index 392ff16..c54a6cb 100644 --- a/app/menu/menu_node.h +++ b/app/menu/menu_node.h @@ -53,6 +53,7 @@ public: 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); void create_table(); void drop_table();