From 7f5ac600a82e60bd4113ee73440986e1d8889e9e Mon Sep 17 00:00:00 2001 From: Torsten Schulz Date: Sat, 17 Feb 2024 14:52:08 +0100 Subject: [PATCH] Added links page --- CMakeLists.txt | 1 + docroot/links.csv | 2 ++ src/app.cpp | 24 +++++++++++++++++++++++- src/app.h | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 docroot/links.csv diff --git a/CMakeLists.txt b/CMakeLists.txt index 35e05d3..b295252 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ add_executable(${PROJECT_NAME} src/app.h src/app.cpp docroot/text.xml docroot/ads.txt + docroot/links.csv ) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20) diff --git a/docroot/links.csv b/docroot/links.csv new file mode 100644 index 0000000..3b98f18 --- /dev/null +++ b/docroot/links.csv @@ -0,0 +1,2 @@ +"Page Name","url" +"Webtoolkit","https://www.webtoolkit.eu" diff --git a/src/app.cpp b/src/app.cpp index 0edeb6a..0311152 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include #include @@ -590,9 +592,13 @@ Wt::WWebWidget* App::createTextElement(const std::string& writer, const std::str void App::createImprintContainer(Wt::WVBoxLayout *containerLayout) { auto imprintContainer = containerLayout->addNew(); - imprintContainer->setContentAlignment(Wt::AlignmentFlag::Right); + imprintContainer->setContentAlignment(Wt::AlignmentFlag::Justify); imprintContainer->setPadding(Wt::WLength(0.5, Wt::LengthUnit::FontEm)); + auto partnerPagesButton = imprintContainer->addNew("Partners"); + partnerPagesButton->clicked().connect(this, &App::showPartnerSites); + partnerPagesButton->setFloatSide(Wt::Side::Left); auto imprintButton = imprintContainer->addNew("Imprint"); + imprintButton->setFloatSide(Wt::Side::Right); Wt::WCssDecorationStyle imprintButtonDecorationStyle; imprintButtonDecorationStyle.setForegroundColor(Wt::StandardColor::White); imprintButtonDecorationStyle.setBackgroundColor(Wt::WColor(0x42, 0x90, 0x43)); @@ -1059,6 +1065,22 @@ void App::addTimeoutView() { timeoutRemainingTimer_->start(); } +void App::showPartnerSites() { + contentContainer_->clear(); + contentContainer_->setOverflow(Wt::Overflow::Auto); + auto linkContainer = contentContainer_->addNew(); + auto contentLayout = linkContainer->setLayout(std::make_unique()); + rapidcsv::Document doc("../docroot/links.csv"); + for (size_t i = 0; i < doc.GetRowCount(); ++i) { + auto url = doc.GetCell(1, i); + auto name = doc.GetCell(0, i); + std::cout << url << std::endl; + auto link = Wt::WLink(url); + link.setTarget(Wt::LinkTarget::NewWindow); + contentLayout->addNew(link, name); + } +} + void App::itemChanged(Wt::WCheckBox *item, Wt::WContainerWidget *dropDownContainer, Wt::WPushButton *openButton, std::unordered_set *saveItems) { saveItems->clear(); bool unselect = (item->text() == "All" && item->isChecked()); diff --git a/src/app.h b/src/app.h index f5088cc..b4a85fb 100644 --- a/src/app.h +++ b/src/app.h @@ -203,6 +203,7 @@ private: void connectionTimedOut(); void addLoginTimeView(); void addTimeoutView(); + void showPartnerSites(); }; #endif // APP_H