aboutsummaryrefslogtreecommitdiff
path: root/src/Routes
diff options
context:
space:
mode:
authorfrosty <gabriel@bwaaa.monster>2026-03-30 10:37:46 +0300
committerfrosty <gabriel@bwaaa.monster>2026-03-30 10:37:46 +0300
commitc3ed9017385342944badec46de263560c6ab07c8 (patch)
treed7f7e86e26ebffd9f277fc340b74a1681eb707d7 /src/Routes
parent9e6e76306471b3cc139ae68c0363ec95616d1b23 (diff)
downloadomnisearch-c3ed9017385342944badec46de263560c6ab07c8.tar.gz
feat: begin adding settings menu, move theme to settings
Diffstat (limited to 'src/Routes')
-rw-r--r--src/Routes/Home.c5
-rw-r--r--src/Routes/Images.c8
-rw-r--r--src/Routes/Search.c8
-rw-r--r--src/Routes/Settings.c30
-rw-r--r--src/Routes/Settings.h8
-rw-r--r--src/Routes/SettingsSave.c28
-rw-r--r--src/Routes/SettingsSave.h8
7 files changed, 93 insertions, 2 deletions
diff --git a/src/Routes/Home.c b/src/Routes/Home.c
index 4526a9d..c857663 100644
--- a/src/Routes/Home.c
+++ b/src/Routes/Home.c
@@ -1,14 +1,19 @@
#include "Home.h"
+#include "../Utility/Utility.h"
#include <stdlib.h>
int home_handler(UrlParams *params) {
(void)params;
+ char *theme = get_theme("");
+
TemplateContext ctx = new_context();
+ context_set(&ctx, "theme", theme);
char *rendered_html = render_template("home.html", &ctx);
send_response(rendered_html);
free(rendered_html);
free_context(&ctx);
+ free(theme);
return 0;
}
diff --git a/src/Routes/Images.c b/src/Routes/Images.c
index 0f8ff1e..03eb280 100644
--- a/src/Routes/Images.c
+++ b/src/Routes/Images.c
@@ -1,6 +1,7 @@
#include "Images.h"
#include "../Scraping/ImageScraping.h"
#include "../Utility/Unescape.h"
+#include "../Utility/Utility.h"
#include "Config.h"
int images_handler(UrlParams *params) {
@@ -29,6 +30,11 @@ int images_handler(UrlParams *params) {
snprintf(two_prev_str, sizeof(two_prev_str), "%d", page > 2 ? page - 2 : 0);
snprintf(two_next_str, sizeof(two_next_str), "%d", page + 2);
context_set(&ctx, "query", raw_query);
+
+ char *theme = get_theme("");
+ context_set(&ctx, "theme", theme);
+ free(theme);
+
context_set(&ctx, "page", page_str);
context_set(&ctx, "prev_page", prev_str);
context_set(&ctx, "next_page", next_str);
@@ -39,7 +45,7 @@ int images_handler(UrlParams *params) {
context_set(&ctx, "query", display_query);
if (!raw_query || strlen(raw_query) == 0) {
- send_response("<h1>No query provided</h1>");
+ send_redirect("/");
if (display_query)
free(display_query);
free_context(&ctx);
diff --git a/src/Routes/Search.c b/src/Routes/Search.c
index 5f89752..81e43d4 100644
--- a/src/Routes/Search.c
+++ b/src/Routes/Search.c
@@ -7,6 +7,7 @@
#include "../Scraping/Scraping.h"
#include "../Utility/Display.h"
#include "../Utility/Unescape.h"
+#include "../Utility/Utility.h"
#include "Config.h"
#include <ctype.h>
#include <pthread.h>
@@ -401,12 +402,17 @@ int results_handler(UrlParams *params) {
}
context_set(&ctx, "query", raw_query);
+
+ char *theme = get_theme("");
+ context_set(&ctx, "theme", theme);
+ free(theme);
+
char page_str[16];
snprintf(page_str, sizeof(page_str), "%d", page);
context_set(&ctx, "page", page_str);
if (!raw_query || strlen(raw_query) == 0) {
- send_response("<h1>No query provided</h1>");
+ send_redirect("/");
free_context(&ctx);
return -1;
}
diff --git a/src/Routes/Settings.c b/src/Routes/Settings.c
new file mode 100644
index 0000000..05edc56
--- /dev/null
+++ b/src/Routes/Settings.c
@@ -0,0 +1,30 @@
+#include "Settings.h"
+#include "../Utility/Utility.h"
+#include <stdlib.h>
+#include <string.h>
+
+int settings_handler(UrlParams *params) {
+ const char *query = "";
+ if (params) {
+ for (int i = 0; i < params->count; i++) {
+ if (strcmp(params->params[i].key, "q") == 0) {
+ query = params->params[i].value;
+ break;
+ }
+ }
+ }
+
+ char *theme = get_theme("system");
+
+ TemplateContext ctx = new_context();
+ context_set(&ctx, "query", query);
+ context_set(&ctx, "theme", theme);
+ char *rendered_html = render_template("settings.html", &ctx);
+ send_response(rendered_html);
+
+ free(rendered_html);
+ free(theme);
+ free_context(&ctx);
+
+ return 0;
+}
diff --git a/src/Routes/Settings.h b/src/Routes/Settings.h
new file mode 100644
index 0000000..269c085
--- /dev/null
+++ b/src/Routes/Settings.h
@@ -0,0 +1,8 @@
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#include <beaker.h>
+
+int settings_handler(UrlParams *params);
+
+#endif
diff --git a/src/Routes/SettingsSave.c b/src/Routes/SettingsSave.c
new file mode 100644
index 0000000..d286507
--- /dev/null
+++ b/src/Routes/SettingsSave.c
@@ -0,0 +1,28 @@
+#include "SettingsSave.h"
+#include <stdlib.h>
+#include <string.h>
+
+int settings_save_handler(UrlParams *params) {
+ const char *theme = "";
+ const char *query = "";
+
+ if (params) {
+ for (int i = 0; i < params->count; i++) {
+ if (strcmp(params->params[i].key, "theme") == 0) {
+ theme = params->params[i].value;
+ } else if (strcmp(params->params[i].key, "q") == 0) {
+ query = params->params[i].value;
+ }
+ }
+ }
+
+ if (strlen(theme) > 0) {
+ set_cookie("theme", theme, "Fri, 31 Dec 2038 23:59:59 GMT", "/", false, false);
+ }
+
+ char redirect_url[512];
+ snprintf(redirect_url, sizeof(redirect_url), "/settings?q=%s", query);
+ send_redirect(redirect_url);
+
+ return 0;
+}
diff --git a/src/Routes/SettingsSave.h b/src/Routes/SettingsSave.h
new file mode 100644
index 0000000..e10cc2f
--- /dev/null
+++ b/src/Routes/SettingsSave.h
@@ -0,0 +1,8 @@
+#ifndef SETTINGS_SAVE_H
+#define SETTINGS_SAVE_H
+
+#include <beaker.h>
+
+int settings_save_handler(UrlParams *params);
+
+#endif