diff --git a/RenX.Commands/RenX_Commands.cpp b/RenX.Commands/RenX_Commands.cpp index 4715928..62468ee 100644 --- a/RenX.Commands/RenX_Commands.cpp +++ b/RenX.Commands/RenX_Commands.cpp @@ -2207,7 +2207,7 @@ void AddBanIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c else flags |= RenX::BanDatabase::Entry::FLAG_USE_RDNS; - RenX::banDatabase->add(name, ip, prefix_length, steamid, rdns, banner, reason, duration); + RenX::banDatabase->add(name, ip, prefix_length, steamid, rdns, banner, reason, duration, flags); RenX::getCore()->banCheck(); source->sendMessage(channel, Jupiter::StringS::Format("Ban added to the database with ID #%u", RenX::banDatabase->getEntries().size() - 1)); } diff --git a/RenX.Ladder.Web/RenX_Ladder_Web.cpp b/RenX.Ladder.Web/RenX_Ladder_Web.cpp index f8a5aa7..435726e 100644 --- a/RenX.Ladder.Web/RenX_Ladder_Web.cpp +++ b/RenX.Ladder.Web/RenX_Ladder_Web.cpp @@ -76,7 +76,8 @@ int RenX_Ladder_WebPlugin::OnRehash() RenX_Ladder_WebPlugin::web_profile_filename = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "ProfileFilename"_jrs, "RenX.Ladder.Web.Profile.html"_jrs); RenX_Ladder_WebPlugin::web_ladder_table_header_filename = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "LadderTableHeaderFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Header.html"_jrs); RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.html"_jrs); - + RenX_Ladder_WebPlugin::entries_per_page = Jupiter::IRC::Client::Config->getInt(RenX_Ladder_WebPlugin::name, "EntriesPerPage"_jrs, 50); + RenX_Ladder_WebPlugin::entry_table_row = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "EntryTableRow"_jrs, "{RANK}{NAME}{SCORE}{SPM}{KILLS}{DEATHS}{KDR}{NODGAMES}{NODWINS}{NODLOSSES}{NWLR}{GDIGAMES}{GDIWINS}{GDILOSSES}{GWLR}"_jrs); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_table_row); @@ -150,12 +151,15 @@ int RenX_Ladder_WebPlugin::OnRehash() return 0; } +// Plugin instantiation and entry point. +RenX_Ladder_WebPlugin pluginInstance; + /** Search bar */ Jupiter::String generate_search(RenX::LadderDatabase *db) { Jupiter::String result(256); - result = R"database-search()database-search"_jrs; + result += R"database-search()database-search"_jrs; return result; } @@ -211,7 +215,40 @@ Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupit } } - result += R"database-select()database-select"_jrs; + result += R"database-select()database-select"_jrs; + return result; +} + +/** Page buttons */ +Jupiter::String generate_page_buttons(RenX::LadderDatabase *db) +{ + Jupiter::String result(256); + size_t entry_count = db->getEntries(); + size_t entries_per_page = pluginInstance.getEntriesPerPage(); + + result = R"html(
)html"_jrs; + + size_t entry_index = 0, page_index = 1; + while (entry_index < entry_count) + { + // Add page + result += R"html(getName(); + } + result += R"html(">)html"_jrs; + result += Jupiter::StringS::Format("%u", page_index); + result += R"html()html"_jrs; + + // Increment indexes + entry_index += entries_per_page; + ++page_index; + } + + result += R"html(
)html"_jrs; return result; } @@ -254,6 +291,10 @@ Jupiter::String RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase // table footer result += RenX_Ladder_WebPlugin::ladder_table_footer; + + // search buttons + result += generate_page_buttons(db); + return result; } @@ -337,9 +378,6 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDataba return result; } -// Plugin instantiation and entry point. -RenX_Ladder_WebPlugin pluginInstance; - /** Content functions */ Jupiter::ReadableString *generate_no_db_page(const Jupiter::INIFile::Section &query_params) @@ -361,12 +399,12 @@ Jupiter::ReadableString *handle_ladder_page(const Jupiter::ReadableString &query { Jupiter::HTTP::HTMLFormResponse html_form_response(query_string); RenX::LadderDatabase *db = RenX::default_ladder_database; - size_t start_index = 0, count = 50; + size_t start_index = 0, count = pluginInstance.getEntriesPerPage(); if (html_form_response.table.size() != 0) { - start_index = static_cast(html_form_response.table.getInt("start"_jrs, 0)); - count = static_cast(html_form_response.table.getInt("count"_jrs, 50)); + start_index = static_cast(html_form_response.table.getInt("start"_jrs, start_index)); + count = static_cast(html_form_response.table.getInt("count"_jrs, count)); const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs); if (db_name.isNotEmpty()) diff --git a/RenX.Ladder.Web/RenX_Ladder_Web.h b/RenX.Ladder.Web/RenX_Ladder_Web.h index 16cb156..b8a5df6 100644 --- a/RenX.Ladder.Web/RenX_Ladder_Web.h +++ b/RenX.Ladder.Web/RenX_Ladder_Web.h @@ -36,6 +36,7 @@ public: Jupiter::String *generate_ladder_page(RenX::LadderDatabase *db, size_t start_index, size_t count, const Jupiter::INIFile::Section &query_params); Jupiter::String *generate_search_page(RenX::LadderDatabase *db, const Jupiter::ReadableString &name, const Jupiter::INIFile::Section &query_params); Jupiter::String *generate_profile_page(RenX::LadderDatabase *db, uint64_t steam_id, const Jupiter::INIFile::Section &query_params); + inline size_t getEntriesPerPage() const { return this->entries_per_page; } RenX_Ladder_WebPlugin(); ~RenX_Ladder_WebPlugin(); @@ -48,6 +49,7 @@ private: STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.Ladder.Web"); /** Configuration variables */ + size_t entries_per_page; Jupiter::StringS ladder_page_name, search_page_name, profile_page_name, ladder_table_header, ladder_table_footer; Jupiter::StringS web_hostname; Jupiter::StringS web_path;