This commit is contained in:
2026-06-03 18:02:39 +01:00
52 changed files with 3318 additions and 601 deletions

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="{{__locale_id}}" dir="{{__locale_direction}}">
<head>
<meta charset="UTF-8">
@@ -8,7 +8,8 @@
OmniSearch
</title>
<link rel="stylesheet" href="static/main.css">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="stylesheet" href="static/themes/{{theme}}.css">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="search"
type="application/opensearchdescription+xml"
title="OmniSearch" href="/opensearch.xml">
@@ -22,19 +23,24 @@
</h1>
<form action="/search" class="home-search-form">
<div class="search-input-wrapper">
<input name="q" type="text" class="search-box" placeholder="Search the web..."
<input name="q" type="text" class="search-box" placeholder="{{l("search_placeholder")}}"
autofocus autocomplete="off">
</div>
<div class="buttons">
<button type="submit" class="btn-primary">
Search
{{l("search_button")}}
</button>
<button type="submit" name="btnI" value="1" class="btn-secondary">
Surprise me
</div>
{{l("surprise_me_button")}}
</button>
</div>
</form>
</div>
</div>
<a href="/settings" class="home-settings-btn" title="{{l("settings_tab")}}"></a>
<footer class="home-footer">
<a href="{{git_remote}}" class="version-link" target="_blank" rel="noopener noreferrer">{{version}}</a>
</footer>
</body>
</html>

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="{{__locale_id}}" dir="{{__locale_direction}}">
<head>
<meta charset="UTF-8">
@@ -7,27 +7,32 @@
<title>
OmniSearch Images - {{query}}
</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="stylesheet" href="static/main.css">
<link rel="stylesheet" href="static/themes/{{theme}}.css">
</head>
<body class="images-view">
<header>
<h1>
<a id="header-icon" href="/"><span>Void</span>arc</a>
</h1>
<a href="/" class="logo-link"><h1>
Omni<span>Search</span>
</h1></a>
<form action="/images" method="GET" class="search-form">
<input name="q" autocomplete="off"="text" class="search-box" placeholder="Search for images..."
<input name="q" autocomplete="off"="text" class="search-box" placeholder="{{l("search_placeholder")}}"
value="{{query}}">
</form>
<a href="/settings?q={{query}}" class="nav-settings-icon" title="{{l("settings_tab")}}"></a>
</header>
<nav class="nav-tabs">
<div class="nav-container">
<a href="/search?q={{query}}">
All
{{l("all_tab")}}
</a>
<a href="/images?q={{query}}" class="active">
Images
{{l("images_tab")}}
</a>
<a href="/settings?q={{query}}" class="nav-settings-link">
{{l("settings_tab")}}
</a>
</div>
</nav>
@@ -40,10 +45,10 @@
<div class="image-overlay">
<div class="overlay-buttons">
<a href="{{img[3]}}" target="_blank" class="overlay-btn primary">
View Image
{{l("view_image")}}
</a>
<a href="{{img[2]}}" target="_blank" class="overlay-btn secondary">
Visit Site
{{l("visit_site")}}
</a>
</div>
</div>
@@ -59,49 +64,16 @@
</div>
{{endfor}}
</div>
<nav class="pagination">
<a class="pagination-btn prev" href="/images?q={{query}}&p={{prev_page}}">
&larr;
</a>
{{if two_prev_page != 0}}
<a class="pagination-btn prev" href="/images?q={{query}}&p={{two_prev_page}}">
{{two_prev_page}}
</a>
{{endif}}
{{if prev_page != 0}}
<a class="pagination-btn prev" href="/images?q={{query}}&p={{prev_page}}">
{{prev_page}}
</a>
{{endif}}
<a class="pagination-current" href="/images?q={{query}}&p={{page}}">
{{page}}
</a>
<a class="pagination-btn next" href="/images?q={{query}}&p={{next_page}}">
{{next_page}}
</a>
<a class="pagination-btn next" href="/images?q={{query}}&p={{two_next_page}}">
{{two_next_page}}
</a>
{{if prev_page == 0}}
<a class="pagination-btn prev" href="/images?q={{query}}&p=4">
4
</a>
{{endif}}
{{if two_prev_page == 0}}
<a class="pagination-btn prev" href="/images?q={{query}}&p=5">
5
</a>
{{endif}}
<a class="pagination-btn next" href="/images?q={{query}}&p={{next_page}}">
&rarr;
</a>
</nav>
{{if exists pagination_links}}
<nav class="pagination">
{{for link in pagination_links}}
<a class="{{link[2]}}" href="{{link[0]}}">
{{link[1]}}
</a>
{{endfor}}
</nav>
{{endif}}
</main>
</body>
</html>
</html>

View File

@@ -4,7 +4,7 @@
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>OmniSearch</ShortName>
<Description>Lightweight metasearch engine</Description>
<Url type="text/html" method="get" template="{{domain}}/search?q={searchTerms}"/>
<Url type="text/html" method="get" template="{{scheme}}://{{domain}}/search?q={searchTerms}"/>
<InputEncoding>UTF-8</InputEncoding>
<OutputEncoding>UTF-8</OutputEncoding>
<moz:SearchForm>{{domain}}/</moz:SearchForm>

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en">
<html lang="{{__locale_id}}" dir="{{__locale_direction}}">
<head>
<meta charset="UTF-8">
@@ -8,7 +8,8 @@
OmniSearch - {{query}}
</title>
<link rel="stylesheet" href="static/main.css">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="stylesheet" href="static/themes/{{theme}}.css">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="search"
type="application/opensearchdescription+xml"
title="OmniSearch" href="/opensearch.xml">
@@ -16,21 +17,26 @@
<body class="results-view">
<header>
<h1>
<a id="header-icon" href="/"><span>Void</span>arc</a>
</h1>
<a href="/" class="logo-link"><h1>
Omni<span>Search</span>
</h1></a>
<form action="/search" method="GET" class="search-form">
<input name="q" type="text" class="search-box" autocomplete="off" placeholder="Search the web..."
<input name="engine" type="hidden" value="{{selected_engine}}">
<input name="q" type="text" class="search-box" autocomplete="off" placeholder="{{l("search_placeholder")}}"
value="{{query}}">
</form>
<a href="/settings?q={{query}}" class="nav-settings-icon" title="{{l("settings_tab")}}"></a>
</header>
<nav class="nav-tabs">
<div class="nav-container">
<a href="/search?q={{query}}" class="active">
All
<a href="{{search_href}}" class="active">
{{l("all_tab")}}
</a>
<a href="/images?q={{query}}">
Images
{{l("images_tab")}}
</a>
<a href="/settings?q={{query}}" class="nav-settings-link">
{{l("settings_tab")}}
</a>
</div>
</nav>
@@ -38,6 +44,16 @@
<aside class="sidebar-spacer">
</aside>
<main class="results-container">
{{if exists engine_filters}}
<nav class="engine-filter-list">
{{for filter in engine_filters}}
<a href="{{filter[0]}}" class="{{filter[2]}}">
{{filter[1]}}
</a>
{{endfor}}
</nav>
{{endif}}
{{if exists engine_warnings}}
<section class="engine-warning-list">
{{for warning in engine_warnings}}
@@ -55,9 +71,15 @@
{{for result in results}}
<div class="result">
<span class="url">
{{result[1]}}
<div class="result-header">
<div class="result-favicon"
style="background-image: url('/proxy?url=https://{{result[4]}}/favicon.ico'), url('/proxy?url=https://{{result[4]}}/favicon.png');">
</div>
<span class="url">
{{result[1]}}
</span>
</span>
</div>
<a href="{{result[0]}}">
{{result[2]}}
</a>
@@ -65,53 +87,20 @@
{{result[3]}}
</p>
<span>
<a class="cached" href="https://web.archive.org/web/{{result[0]|safe}}">View Cached</a>
<a class="cached" href="https://web.archive.org/web/{{result[0]|safe}}">{{l("view_cached")}}</a>
</span>
</div>
{{endfor}}
{{if exists pagination_links}}
<nav class="pagination">
<a class="pagination-btn prev" href="/search?q={{query}}&p={{prev_page}}">
&larr;
</a>
{{if two_prev_page != 0}}
<a class="pagination-btn prev" href="/search?q={{query}}&p={{two_prev_page}}">
{{two_prev_page}}
</a>
{{endif}}
{{if prev_page != 0}}
<a class="pagination-btn prev" href="/search?q={{query}}&p={{prev_page}}">
{{prev_page}}
</a>
{{endif}}
<a class="pagination-current" href="/search?q={{query}}&p={{page}}">
{{page}}
</a>
<a class="pagination-btn next" href="/search?q={{query}}&p={{next_page}}">
{{next_page}}
</a>
<a class="pagination-btn next" href="/search?q={{query}}&p={{two_next_page}}">
{{two_next_page}}
</a>
{{if prev_page == 0}}
<a class="pagination-btn prev" href="/search?q={{query}}&p=4">
4
</a>
{{endif}}
{{if two_prev_page == 0}}
<a class="pagination-btn prev" href="/search?q={{query}}&p=5">
5
</a>
{{endif}}
<a class="pagination-btn next" href="/search?q={{query}}&p={{next_page}}">
&rarr;
{{for link in pagination_links}}
<a class="{{link[2]}}" href="{{link[0]}}">
{{link[1]}}
</a>
{{endfor}}
</nav>
{{endif}}
</main>
<aside class="infobox-sidebar">
{{if exists infoboxes}}
@@ -126,10 +115,12 @@
<img src="{{info[1]}}" alt="{{info[0]}}" class="infobox-image">
<div class="infobox-content"> <p class="infobox-summary">
{{info[2]|safe}}
</p>
</p>
{{if info[3] != "#"}}
<a class="read-more" href="{{info[3]}}">
Read More
{{l("read_more")}}
</a>
{{endif}}
</div>
</div>
</section>

99
templates/settings.html Normal file
View File

@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html lang="{{__locale_id}}" dir="{{__locale_direction}}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
<title>
OmniSearch - {{l("settings_title")}}
</title>
<link rel="stylesheet" href="static/main.css">
<link rel="stylesheet" href="static/themes/{{theme}}.css">
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<link rel="search"
type="application/opensearchdescription+xml"
title="OmniSearch" href="/opensearch.xml">
</head>
<body class="settings-view">
<header>
<a href="/" class="logo-link"><h1>
Omni<span>Search</span>
</h1></a>
{{if query != ""}}
<form action="/search" method="GET" class="search-form">
<input name="q" type="text" class="search-box" autocomplete="off" placeholder="{{l("search_placeholder")}}"
value="{{query}}">
</form>
{{endif}}
{{if query != ""}}
<a href="/search?q={{query}}" class="nav-settings-icon active" title="{{l("settings_tab")}}"></a>
{{else}}
<a href="/" class="nav-settings-icon active" title="{{l("settings_tab")}}"></a>
{{endif}}
</header>
{{if query != ""}}
<nav class="nav-tabs">
<div class="nav-container">
<a href="/search?q={{query}}">
{{l("all_tab")}}
</a>
<a href="/images?q={{query}}">
{{l("images_tab")}}
</a>
<a href="/settings" class="active nav-settings-link">
{{l("settings_tab")}}
</a>
</div>
</nav>
{{endif}}
<div class="settings-layout">
<main class="settings-container">
<form action="/save_settings" method="GET">
<input type="hidden" name="q" value="{{query}}">
<section class="settings-section">
<h3 class="settings-section-title">{{l("theme_label")}}</h3>
<p class="settings-section-desc">{{l("theme_desc")}}</p>
<div class="settings-field">
<label class="settings-label" for="theme">{{l("theme_label")}}</label>
<select id="theme" name="theme" class="settings-select">
{{for t in themes}}
<option value="{{t[0]}}" {{if theme == t[0]}}selected{{endif}}>{{t[1]}}</option>
{{endfor}}
</select>
</div>
</section>
<section class="settings-section">
<h3 class="settings-section-title">{{l("language_label")}}</h3>
<p class="settings-section-desc">{{l("language_desc")}}</p>
<div class="settings-field">
<label class="settings-label" for="locale">{{l("display_language_label")}}</label>
<select id="locale" name="locale" class="settings-select">
{{for loc in locales}}
<option value="{{loc[0]}}" {{if __locale_id == loc[0]}}selected{{endif}}>{{loc[1]}}</option>
{{endfor}}
</select>
</div>
</section>
{{if has_enabled_engines}}
<section class="settings-section">
<h3 class="settings-section-title">{{l("engines_label")}}</h3>
<p class="settings-section-desc">{{l("engines_desc")}}</p>
<input type="hidden" name="engines_present" value="1">
{{for eng in enabled_engines}}
<div class="settings-field">
<label class="settings-label" for="engine_{{eng[0]}}">{{eng[1]}}</label>
<input type="checkbox" id="engine_{{eng[0]}}" name="engine_{{eng[0]}}" value="1" class="settings-checkbox" {{eng[2]}}>
</div>
{{endfor}}
</section>
{{endif}}
<div class="settings-actions">
<button type="submit" class="btn-primary">{{l("save_settings_button")}}</button>
</div>
</form>
</main>
</div>
</body>
</html>