can choose themes in config

This commit is contained in:
Alexandar Mechev 2020-10-05 16:00:33 +02:00
parent 6a9e53b121
commit 2f3f5ef035
No known key found for this signature in database
GPG Key ID: 1B754EA636091772
2 changed files with 151 additions and 132 deletions

View File

@ -1,3 +1,6 @@
import os
class Config: class Config:
# Derived from here: # Derived from here:
# https://sites.google.com/site/tomihasa/google-language-codes#searchlanguage # https://sites.google.com/site/tomihasa/google-language-codes#searchlanguage
@ -297,6 +300,9 @@ class Config:
{'name': 'Zimbabwe', 'value': 'countryZW'} {'name': 'Zimbabwe', 'value': 'countryZW'}
] ]
THEMES = list(set([theme_name.split('-')[0]
for theme_name in os.listdir('app/static/css/themes/')]))
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.url = '' self.url = ''
self.lang_search = '' self.lang_search = ''
@ -306,6 +312,7 @@ class Config:
self.dark = False self.dark = False
self.nojs = False self.nojs = False
self.near = '' self.near = ''
self.theme = None
self.alts = False self.alts = False
self.new_tab = False self.new_tab = False
self.get_only = False self.get_only = False

View File

@ -1,137 +1,149 @@
<html> <html>
<head>
<link rel="apple-touch-icon" sizes="57x57" href="/static/img/favicon/apple-icon-57x57.png"> <head>
<link rel="apple-touch-icon" sizes="60x60" href="/static/img/favicon/apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="57x57" href="/static/img/favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="72x72" href="/static/img/favicon/apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="60x60" href="/static/img/favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="76x76" href="/static/img/favicon/apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="72x72" href="/static/img/favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="/static/img/favicon/apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="76x76" href="/static/img/favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="120x120" href="/static/img/favicon/apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="114x114" href="/static/img/favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="144x144" href="/static/img/favicon/apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="120x120" href="/static/img/favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="152x152" href="/static/img/favicon/apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="144x144" href="/static/img/favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="180x180" href="/static/img/favicon/apple-icon-180x180.png"> <link rel="apple-touch-icon" sizes="152x152" href="/static/img/favicon/apple-icon-152x152.png">
<link rel="icon" type="image/png" sizes="192x192" href="/static/img/favicon/android-icon-192x192.png"> <link rel="apple-touch-icon" sizes="180x180" href="/static/img/favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/img/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="192x192" href="/static/img/favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="96x96" href="/static/img/favicon/favicon-96x96.png"> <link rel="icon" type="image/png" sizes="32x32" href="/static/img/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/img/favicon/favicon-16x16.png"> <link rel="icon" type="image/png" sizes="96x96" href="/static/img/favicon/favicon-96x96.png">
<link rel="manifest" href="/static/img/favicon/manifest.json"> <link rel="icon" type="image/png" sizes="16x16" href="/static/img/favicon/favicon-16x16.png">
<meta name="referrer" content="no-referrer"> <link rel="manifest" href="/static/img/favicon/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff"> <meta name="referrer" content="no-referrer">
<meta name="msapplication-TileImage" content="/static/img/favicon/ms-icon-144x144.png"> <meta name="msapplication-TileColor" content="#ffffff">
<script type="text/javascript" src="/static/js/autocomplete.js"></script> <meta name="msapplication-TileImage" content="/static/img/favicon/ms-icon-144x144.png">
<script type="text/javascript" src="/static/js/controller.js"></script> <script type="text/javascript" src="/static/js/autocomplete.js"></script>
<link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Whoogle Search"> <script type="text/javascript" src="/static/js/controller.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="search" href="/opensearch.xml" type="application/opensearchdescription+xml" title="Whoogle Search">
<link rel="stylesheet" href="/static/css/{{ 'search-dark' if config.dark else 'search' }}.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/static/css/main.css"> <link rel="stylesheet" href="/static/css/{{ 'search-dark' if config.dark else 'search' }}.css">
{% if config.dark %} <link rel="stylesheet" href="/static/css/main.css">
<link rel="stylesheet" href="/static/css/dark-theme.css"/> {% if config.dark %}
{% endif %} <link rel="stylesheet" href="/static/css/dark-theme.css"/>
<title>Whoogle Search</title> {% endif %}
</head> <title>Whoogle Search</title>
<body id="main" style="display: none; background-color: {{ '#000' if config.dark else '#fff' }}"> </head>
<div class="search-container"> <body id="main" style="display: none; background-color: {{ '#ECEFF4' if config.dark else '#fff' }}">
<img class="logo" src="/static/img/logo.png"> <div class="search-container">
<form id="search-form" action="/search" method="{{ 'get' if config.get_only else 'post' }}"> <img class="logo" src="/static/img/logo.png">
<div class="search-fields"> <form id="search-form" action="/search" method="{{ 'get' if config.get_only else 'post' }}">
<div class="autocomplete"> <div class="search-fields">
<input type="text" name="q" id="search-bar" autofocus="autofocus" autocomplete="off"> <div class="autocomplete">
<input type="text" name="q" id="search-bar" autofocus="autofocus" autocomplete="off">
</div>
<input type="submit" id="search-submit" value="Search">
</div>
</form>
<br/>
<button id="config-collapsible" class="collapsible">Configuration</button>
<div class="content">
<div class="config-fields">
<form id="config-form" action="/config" method="post">
<div class="config-div">
<label for="config-ctry">Filter Results by Country: </label>
<select name="ctry" id="config-ctry">
{% for ctry in countries %}
<option value="{{ ctry.value }}"
{% if ctry.value in config.ctry %}
selected
{% endif %}>
{{ ctry.name }}
</option>
{% endfor %}
</select>
<div><span class="info-text"> — Note: If enabled, a website will only appear in the results if it is *hosted* in the selected country.</span></div>
</div> </div>
<input type="submit" id="search-submit" value="Search"> <div class="config-div">
</div> <label for="config-lang-interface">Interface Language: </label>
</form> <select name="lang_interface" id="config-lang-interface">
<br/> {% for lang in languages %}
<button id="config-collapsible" class="collapsible">Configuration</button> <option value="{{ lang.value }}"
<div class="content"> {% if lang.value in config.lang_interface %}
<div class="config-fields"> selected
<form id="config-form" action="/config" method="post"> {% endif %}>
<div class="config-div"> {{ lang.name }}
<label for="config-ctry">Filter Results by Country: </label> </option>
<select name="ctry" id="config-ctry"> {% endfor %}
{% for ctry in countries %} </select>
<option value="{{ ctry.value }}" </div>
{% if ctry.value in config.ctry %} <div class="config-div">
selected <label for="config-lang-search">Search Language: </label>
{% endif %}> <select name="lang_search" id="config-lang-search">
{{ ctry.name }} {% for lang in languages %}
</option> <option value="{{ lang.value }}"
{% endfor %} {% if lang.value in config.lang_search %}
</select> selected
<div><span class="info-text"> — Note: If enabled, a website will only appear in the results if it is *hosted* in the selected country.</span></div> {% endif %}>
</div> {{ lang.name }}
<div class="config-div"> </option>
<label for="config-lang-interface">Interface Language: </label> {% endfor %}
<select name="lang_interface" id="config-lang-interface"> </select>
{% for lang in languages %} </div>
<option value="{{ lang.value }}" <div class="config-div">
{% if lang.value in config.lang_interface %} <label for="config-near">Near: </label>
selected <input type="text" name="near" id="config-near" placeholder="City Name">
{% endif %}> </div>
{{ lang.name }} <div class="config-div">
</option> <label for="config-theme">Theme: </label>
{% endfor %} <select name="theme" id="config-theme">
</select> {% for theme in themes %}
</div> <option value="{{ theme }}" {% if theme in config.theme %} selected {% endif %}>
<div class="config-div"> {{ theme }}
<label for="config-lang-search">Search Language: </label> </option>
<select name="lang_search" id="config-lang-search"> {% endfor %}
{% for lang in languages %} </select>
<option value="{{ lang.value }}" </div>
{% if lang.value in config.lang_search %} <div class="config-div">
selected <label for="config-nojs">Show NoJS Links: </label>
{% endif %}> <input type="checkbox" name="nojs" id="config-nojs">
{{ lang.name }} </div>
</option> <div class="config-div">
{% endfor %} <label for="config-dark">Dark Mode: </label>
</select> <input type="checkbox" name="dark" id="config-dark">
</div> </div>
<div class="config-div"> <div class="config-div">
<label for="config-near">Near: </label> <label for="config-safe">Safe Search: </label>
<input type="text" name="near" id="config-near" placeholder="City Name"> <input type="checkbox" name="safe" id="config-safe">
</div> </div>
<div class="config-div"> <div class="config-div">
<label for="config-nojs">Show NoJS Links: </label> <label class="tooltip" for="config-alts">Replace Social Media Links: </label>
<input type="checkbox" name="nojs" id="config-nojs"> <input type="checkbox" name="alts" id="config-alts">
</div> <div><span class="info-text"> — Replaces Twitter/YouTube/Instagram links
<div class="config-div">
<label for="config-dark">Dark Mode: </label>
<input type="checkbox" name="dark" id="config-dark">
</div>
<div class="config-div">
<label for="config-safe">Safe Search: </label>
<input type="checkbox" name="safe" id="config-safe">
</div>
<div class="config-div">
<label class="tooltip" for="config-alts">Replace Social Media Links: </label>
<input type="checkbox" name="alts" id="config-alts">
<div><span class="info-text"> — Replaces Twitter/YouTube/Instagram links
with Nitter/Invidious/Bibliogram links.</span></div> with Nitter/Invidious/Bibliogram links.</span></div>
</div> </div>
<div class="config-div"> <div class="config-div">
<label for="config-new-tab">Open Links in New Tab: </label> <label for="config-new-tab">Open Links in New Tab: </label>
<input type="checkbox" name="new_tab" id="config-new-tab"> <input type="checkbox" name="new_tab" id="config-new-tab">
</div> </div>
<div class="config-div"> <div class="config-div">
<label for="config-get-only">GET Requests Only: </label> <label for="config-get-only">GET Requests Only: </label>
<input type="checkbox" name="get_only" id="config-get-only"> <input type="checkbox" name="get_only" id="config-get-only">
</div> </div>
<div class="config-div"> <div class="config-div">
<label for="config-url">Root URL: </label> <label for="config-url">Root URL: </label>
<input type="text" name="url" id="config-url" value=""> <input type="text" name="url" id="config-url" value="">
</div> </div>
<div class="config-div"> <div class="config-div">
<input type="submit" id="config-load" onclick="loadConfig(event)" value="Load">&nbsp; <input type="submit" id="config-load" onclick="loadConfig(event)" value="Load">&nbsp;
<input type="submit" id="config-submit" value="Apply">&nbsp; <input type="submit" id="config-submit" value="Apply">&nbsp;
<input type="submit" id="config-submit" onclick="saveConfig(event)" value="Save As..."> <input type="submit" id="config-submit" onclick="saveConfig(event)" value="Save As...">
</div> </div>
</form> </form>
</div>
</div> </div>
</div> </div>
<footer> </div>
<p style="color: {{ '#fff' if config.dark else '#000' }};"> <footer>
Whoogle Search v{{ version_number }} || <p style="color: {{ '#ECEFF4' if config.dark else '#000' }};">
<a style="color: #685e79" href="https://github.com/benbusby/whoogle-search">View on GitHub</a> Whoogle Search v{{ version_number }} ||
</p> <a style="color: #685e79" href="https://github.com/benbusby/whoogle-search">View on GitHub</a>
</footer> </p>
</body> </footer>
</html> </body>
</html>