From 4defe7cbe32c7f423a4ac8024bd6e3387f88c592 Mon Sep 17 00:00:00 2001 From: JAJames Date: Sun, 21 Feb 2016 19:15:22 -0500 Subject: [PATCH] Added next/previous buttons to profiles. --- RenX.Ladder.Web/RenX_Ladder_Web.cpp | 33 +++++++++++++++++++++++++---- RenX.Ladder.Web/RenX_Ladder_Web.h | 4 +++- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/RenX.Ladder.Web/RenX_Ladder_Web.cpp b/RenX.Ladder.Web/RenX_Ladder_Web.cpp index 0609b4f..46c192d 100644 --- a/RenX.Ladder.Web/RenX_Ladder_Web.cpp +++ b/RenX.Ladder.Web/RenX_Ladder_Web.cpp @@ -77,9 +77,15 @@ int RenX_Ladder_WebPlugin::OnRehash() 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::min_search_name_length = Jupiter::IRC::Client::Config->getInt(RenX_Ladder_WebPlugin::name, "MinSearchNameLength"_jrs, 3); RenX_Ladder_WebPlugin::entry_table_row = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "EntryTableRow"_jrs, R"html({RANK}{NAME}{SCORE}{SPM}{GAMES}{WINS}{LOSSES}{WLR}{KILLS}{DEATHS}{KDR})html"_jrs); + RenX_Ladder_WebPlugin::entry_profile_previous = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "EntryProfilePrevious"_jrs, R"html(
)html"_jrs); + RenX_Ladder_WebPlugin::entry_profile_next = Jupiter::IRC::Client::Config->get(RenX_Ladder_WebPlugin::name, "EntryProfileNext"_jrs, R"html(
)html"_jrs); + RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_table_row); + RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_profile_previous); + RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_profile_next); RenX_Ladder_WebPlugin::header.erase(); RenX_Ladder_WebPlugin::footer.erase(); @@ -207,11 +213,11 @@ Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupit for (size_t index = 0; index != query_params.size(); ++index) { pair = query_params.getPair(index); - if (pair->getKey().equalsi("database") == false) + if (pair->getKey().equalsi("id")) { - result += R"database-search(getValue(); - result += R"database-search("/>)database-search"_jrs; + result += R"html("/>)html"_jrs; } } @@ -374,6 +380,25 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDataba Jupiter::String profile_data(RenX_Ladder_WebPlugin::entry_profile); RenX::processTags(profile_data, *entry); result->concat(profile_data); + + result->concat("
"_jrs); + if (entry->prev != nullptr) + { + profile_data = RenX_Ladder_WebPlugin::entry_profile_previous; + profile_data.replace(RenX::tags->INTERNAL_OBJECT_TAG, db->getName()); + profile_data.replace(RenX::tags->INTERNAL_WEAPON_TAG, Jupiter::StringS::Format("%llu", entry->prev->steam_id)); + RenX::processTags(profile_data, *entry->prev); + result->concat(profile_data); + } + if (entry->next != nullptr) + { + profile_data = RenX_Ladder_WebPlugin::entry_profile_next; + profile_data.replace(RenX::tags->INTERNAL_OBJECT_TAG, db->getName()); + profile_data.replace(RenX::tags->INTERNAL_VICTIM_STEAM_TAG, Jupiter::StringS::Format("%llu", entry->next->steam_id)); + RenX::processTags(profile_data, *entry->next); + result->concat(profile_data); + } + result->concat("
"_jrs); } result->concat(RenX_Ladder_WebPlugin::footer); @@ -453,7 +478,7 @@ Jupiter::ReadableString *handle_search_page(const Jupiter::ReadableString &query if (db == nullptr) return generate_no_db_page(html_form_response.table); - if (name.isEmpty()) // Generate ladder page when no name specified + if (name.size() < pluginInstance.getMinSearchNameLength()) // Generate ladder page when no name specified return handle_ladder_page(query_string); return pluginInstance.generate_search_page(db, name, html_form_response.table); diff --git a/RenX.Ladder.Web/RenX_Ladder_Web.h b/RenX.Ladder.Web/RenX_Ladder_Web.h index b8a5df6..d9d6448 100644 --- a/RenX.Ladder.Web/RenX_Ladder_Web.h +++ b/RenX.Ladder.Web/RenX_Ladder_Web.h @@ -37,6 +37,7 @@ public: 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; } + inline size_t getMinSearchNameLength() const { return this->min_search_name_length; }; RenX_Ladder_WebPlugin(); ~RenX_Ladder_WebPlugin(); @@ -50,6 +51,7 @@ private: /** Configuration variables */ size_t entries_per_page; + size_t min_search_name_length; 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; @@ -59,7 +61,7 @@ private: Jupiter::CStringS web_ladder_table_header_filename; Jupiter::CStringS web_ladder_table_footer_filename; - Jupiter::StringS entry_table_row, entry_profile; + Jupiter::StringS entry_table_row, entry_profile, entry_profile_previous, entry_profile_next; }; Jupiter::ReadableString *handle_ladder_page(const Jupiter::ReadableString ¶meters);