mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
Remove theme choice: move searx/templates/simple to searx/templates
This commit is contained in:
parent
641e39b0df
commit
31bb938126
44 changed files with 69 additions and 89 deletions
|
@ -290,7 +290,7 @@ class PluginsSetting(BooleanChoices):
|
||||||
class Preferences:
|
class Preferences:
|
||||||
"""Validates and saves preferences to cookies"""
|
"""Validates and saves preferences to cookies"""
|
||||||
|
|
||||||
def __init__(self, themes: List[str], categories: List[str], engines: Dict[str, Engine], plugins: Iterable[Plugin]):
|
def __init__(self, categories: List[str], engines: Dict[str, Engine], plugins: Iterable[Plugin]):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.key_value_settings: Dict[str, Setting] = {
|
self.key_value_settings: Dict[str, Setting] = {
|
||||||
|
@ -340,11 +340,6 @@ class Preferences:
|
||||||
'2': 2
|
'2': 2
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
'theme': EnumStringSetting(
|
|
||||||
settings['ui']['default_theme'],
|
|
||||||
locked=is_locked('theme'),
|
|
||||||
choices=themes
|
|
||||||
),
|
|
||||||
'results_on_new_tab': MapSetting(
|
'results_on_new_tab': MapSetting(
|
||||||
settings['ui']['results_on_new_tab'],
|
settings['ui']['results_on_new_tab'],
|
||||||
locked=is_locked('results_on_new_tab'),
|
locked=is_locked('results_on_new_tab'),
|
||||||
|
|
|
@ -91,8 +91,6 @@ ui:
|
||||||
query_in_title: false
|
query_in_title: false
|
||||||
# infinite_scroll: When true, automatically loads the next page when scrolling to bottom of the current page.
|
# infinite_scroll: When true, automatically loads the next page when scrolling to bottom of the current page.
|
||||||
infinite_scroll: false
|
infinite_scroll: false
|
||||||
# ui theme
|
|
||||||
default_theme: simple
|
|
||||||
# center the results ?
|
# center the results ?
|
||||||
center_alignment: false
|
center_alignment: false
|
||||||
# Default interface locale - leave blank to detect from browser information or
|
# Default interface locale - leave blank to detect from browser information or
|
||||||
|
|
|
@ -180,7 +180,6 @@ SCHEMA = {
|
||||||
'static_path': SettingsDirectoryValue(str, os.path.join(searx_dir, 'static')),
|
'static_path': SettingsDirectoryValue(str, os.path.join(searx_dir, 'static')),
|
||||||
'static_use_hash': SettingsValue(bool, False),
|
'static_use_hash': SettingsValue(bool, False),
|
||||||
'templates_path': SettingsDirectoryValue(str, os.path.join(searx_dir, 'templates')),
|
'templates_path': SettingsDirectoryValue(str, os.path.join(searx_dir, 'templates')),
|
||||||
'default_theme': SettingsValue(str, 'simple'),
|
|
||||||
'default_locale': SettingsValue(str, ''),
|
'default_locale': SettingsValue(str, ''),
|
||||||
'theme_args': {
|
'theme_args': {
|
||||||
'simple_style': SettingsValue(SIMPLE_STYLE, 'auto'),
|
'simple_style': SettingsValue(SIMPLE_STYLE, 'auto'),
|
||||||
|
|
|
@ -145,7 +145,7 @@ module.exports = function (grunt) {
|
||||||
svgo: ['--config', 'svg4web.svgo.js']
|
svgo: ['--config', 'svg4web.svgo.js']
|
||||||
},
|
},
|
||||||
files: {
|
files: {
|
||||||
'<%= _templates %>/simple/searxng-wordmark.min.svg': '<%= _brand %>/searxng-wordmark.svg',
|
'<%= _templates %>/searxng-wordmark.min.svg': '<%= _brand %>/searxng-wordmark.svg',
|
||||||
'img/searxng.svg': '<%= _brand %>/searxng.svg',
|
'img/searxng.svg': '<%= _brand %>/searxng.svg',
|
||||||
'img/img_load_error.svg': '<%= _brand %>/img_load_error.svg'
|
'img/img_load_error.svg': '<%= _brand %>/img_load_error.svg'
|
||||||
}
|
}
|
||||||
|
@ -192,7 +192,7 @@ module.exports = function (grunt) {
|
||||||
'heart-outline': 'node_modules/ionicons/dist/svg/heart-outline.svg',
|
'heart-outline': 'node_modules/ionicons/dist/svg/heart-outline.svg',
|
||||||
'information-circle-outline': 'src/svg/information-circle-outline.svg',
|
'information-circle-outline': 'src/svg/information-circle-outline.svg',
|
||||||
},
|
},
|
||||||
dest: '../../../templates/simple/icons.html',
|
dest: '../../../templates/icons.html',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{% extends "simple/base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<h1>{{ _('Page not found') }}</h1>
|
<h1>{{ _('Page not found') }}</h1>
|
|
@ -28,7 +28,7 @@
|
||||||
<link rel="icon" href="{{ url_for('static', filename='img/favicon.svg') }}" type="image/svg+xml">
|
<link rel="icon" href="{{ url_for('static', filename='img/favicon.svg') }}" type="image/svg+xml">
|
||||||
</head>
|
</head>
|
||||||
<body class="{{ endpoint }}_endpoint" >
|
<body class="{{ endpoint }}_endpoint" >
|
||||||
<main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}" class="{{body_class}}">
|
<main id="main_{{ self._TemplateReference__context.name|replace(".html", "") }}" class="{{body_class}}">
|
||||||
{% if errors %}
|
{% if errors %}
|
||||||
<div class="dialog-error" role="alert">
|
<div class="dialog-error" role="alert">
|
||||||
<a href="#" class="close" aria-label="close" title="close">×</a>
|
<a href="#" class="close" aria-label="close" title="close">×</a>
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<nav id="links_on_top">
|
<nav id="links_on_top">
|
||||||
{%- from 'simple/icons.html' import icon_big -%}
|
{%- from 'icons.html' import icon_big -%}
|
||||||
{%- block linkto_about -%}
|
{%- block linkto_about -%}
|
||||||
<a href="{{ url_for('info', pagename='about') }}" class="link_on_top_about">{{ icon_big('information-circle-outline') }}<span>{{ _('About') }}</span></a>
|
<a href="{{ url_for('info', pagename='about') }}" class="link_on_top_about">{{ icon_big('information-circle-outline') }}<span>{{ _('About') }}</span></a>
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/icons.html' import icon_big %}
|
{% from 'icons.html' import icon_big %}
|
||||||
{%- set category_icons = {
|
{%- set category_icons = {
|
||||||
'general': 'search-outline',
|
'general': 'search-outline',
|
||||||
'images': 'image-outline',
|
'images': 'image-outline',
|
8
searx/templates/index.html
Normal file
8
searx/templates/index.html
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% from 'icons.html' import icon_big %}
|
||||||
|
{% block content %}
|
||||||
|
<div class="index">
|
||||||
|
<div class="title"><h1>SearXNG</h1></div>
|
||||||
|
{% include 'simple_search.html' %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -1,4 +1,4 @@
|
||||||
{% extends 'simple/page_with_header.html' %}
|
{% extends 'page_with_header.html' %}
|
||||||
{% block title %}{{ active_page.title }} - {% endblock %}
|
{% block title %}{{ active_page.title }} - {% endblock %}
|
||||||
{% block linkto_about %}{% endblock %}
|
{% block linkto_about %}{% endblock %}
|
||||||
{% block linkto_donate %}{% endblock %}
|
{% block linkto_donate %}{% endblock %}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/icons.html' import icon_small %}
|
{% from 'icons.html' import icon_small %}
|
||||||
|
|
||||||
<!-- Draw favicon -->
|
<!-- Draw favicon -->
|
||||||
{% macro draw_favicon(favicon) -%}
|
{% macro draw_favicon(favicon) -%}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/icons.html' import icon %}
|
{% from 'icons.html' import icon %}
|
||||||
<div class="alert alert-info fade in" role="alert">
|
<div class="alert alert-info fade in" role="alert">
|
||||||
<strong class="lead">{{ icon('info-sign') }} {{ _('Information!') }}</strong>
|
<strong class="lead">{{ icon('info-sign') }} {{ _('Information!') }}</strong>
|
||||||
{{ _('currently, there are no cookies defined.') }}
|
{{ _('currently, there are no cookies defined.') }}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/icons.html' import icon_big %}
|
{% from 'icons.html' import icon_big %}
|
||||||
{% if unresponsive_engines %}
|
{% if unresponsive_engines %}
|
||||||
<div class="dialog-error" role="alert">
|
<div class="dialog-error" role="alert">
|
||||||
{{ icon_big('warning') }}
|
{{ icon_big('warning') }}
|
|
@ -1,5 +1,5 @@
|
||||||
{% set body_class = "page_with_header" %}
|
{% set body_class = "page_with_header" %}
|
||||||
{% extends "simple/base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<a href="{{ url_for('index') }}"><img class="logo" src="{{ url_for('static', filename='img/searxng.png') }}" alt="SearXNG"></a>
|
<a href="{{ url_for('index') }}"><img class="logo" src="{{ url_for('static', filename='img/searxng.png') }}" alt="SearXNG"></a>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -1,7 +1,7 @@
|
||||||
{% from 'simple/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
|
{% from 'macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
|
||||||
{% from 'simple/icons.html' import icon_big %}
|
{% from 'icons.html' import icon_big %}
|
||||||
|
|
||||||
{% extends "simple/page_with_header.html" %}
|
{% extends "page_with_header.html" %}
|
||||||
|
|
||||||
{%- macro plugin_preferences(section) -%}
|
{%- macro plugin_preferences(section) -%}
|
||||||
{%- for plugin in plugins -%}
|
{%- for plugin in plugins -%}
|
||||||
|
@ -107,7 +107,7 @@
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{ _('Default categories') }}</legend>
|
<legend>{{ _('Default categories') }}</legend>
|
||||||
{% set display_tooltip = false %}
|
{% set display_tooltip = false %}
|
||||||
{% include 'simple/categories.html' %}
|
{% include 'categories.html' %}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if 'language' not in locked_preferences %}
|
{% if 'language' not in locked_preferences %}
|
||||||
|
@ -191,17 +191,6 @@
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if 'theme' not in locked_preferences %}
|
{% if 'theme' not in locked_preferences %}
|
||||||
<fieldset>
|
|
||||||
<legend id="pref_theme">{{ _('Theme') }}</legend>
|
|
||||||
<p class="value">
|
|
||||||
<select name="theme" aria-labelledby="pref_theme">
|
|
||||||
{%- for name in themes -%}
|
|
||||||
<option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
|
|
||||||
{%- endfor -%}
|
|
||||||
</select>
|
|
||||||
</p>
|
|
||||||
<div class="description">{{ _('Change SearXNG layout') }}</div>
|
|
||||||
</fieldset>
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend id="pref_simple_style">{{ _('Theme style') }}</legend>
|
<legend id="pref_simple_style">{{ _('Theme style') }}</legend>
|
||||||
<p class="value">
|
<p class="value">
|
||||||
|
@ -409,7 +398,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include 'simple/messages/no_cookies.html' %}
|
{% include 'messages/no_cookies.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h4>{{ _('Search URL of the currently saved preferences') }} :</h4>
|
<h4>{{ _('Search URL of the currently saved preferences') }} :</h4>
|
||||||
<div class="selectable_url">
|
<div class="selectable_url">
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
{% from 'macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
||||||
|
|
||||||
{{ result_header(result, favicons, image_proxify) -}}
|
{{ result_header(result, favicons, image_proxify) -}}
|
||||||
{{- result_sub_header(result) -}}
|
{{- result_sub_header(result) -}}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
{% from 'macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
||||||
|
|
||||||
{{ result_header(result, favicons, image_proxify) -}}
|
{{ result_header(result, favicons, image_proxify) -}}
|
||||||
{{- result_sub_header(result) -}}
|
{{- result_sub_header(result) -}}
|
|
@ -1,5 +1,5 @@
|
||||||
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
{% from 'macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
||||||
{% from 'simple/icons.html' import icon_small %}
|
{% from 'icons.html' import icon_small %}
|
||||||
|
|
||||||
{{ result_header(result, favicons, image_proxify) -}}
|
{{ result_header(result, favicons, image_proxify) -}}
|
||||||
{{- result_sub_header(result) -}}
|
{{- result_sub_header(result) -}}
|
14
searx/templates/result_templates/products.html
Normal file
14
searx/templates/result_templates/products.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_footer_rtl with context %}
|
||||||
|
|
||||||
|
{{ result_header(result, favicons, image_proxify) -}}
|
||||||
|
{{- result_sub_header(result) -}}
|
||||||
|
{% if result.price %}<div class="result_price">{{ result.price }}</div></br>{% endif %}
|
||||||
|
{% if result.shipping %}<div class="result_shipping">{{ result.shipping }}</div></br>{% endif %}
|
||||||
|
{% if result.source_country %}<div class="result_source_country">{{ result.source_country }}</div></br>{% endif %}
|
||||||
|
{%- if result.content %}
|
||||||
|
<p class="content">
|
||||||
|
{{ result.content }}
|
||||||
|
</p>
|
||||||
|
{% endif -%}
|
||||||
|
{{- result_sub_footer(result, proxify) -}}
|
||||||
|
{{- result_footer(result) }}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_link with context %}
|
{% from 'macros.html' import result_header, result_sub_header, result_sub_footer, result_footer, result_link with context %}
|
||||||
|
|
||||||
{{ result_header(result, favicons, image_proxify) -}}
|
{{ result_header(result, favicons, image_proxify) -}}
|
||||||
{{- result_sub_header(result) -}}
|
{{- result_sub_header(result) -}}
|
|
@ -1,4 +1,4 @@
|
||||||
{% from 'simple/macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
{% from 'macros.html' import result_header, result_sub_header, result_sub_footer, result_footer with context %}
|
||||||
|
|
||||||
{{ result_header(result, favicons, image_proxify) }}
|
{{ result_header(result, favicons, image_proxify) }}
|
||||||
{{ result_sub_header(result) }}
|
{{ result_sub_header(result) }}
|
|
@ -1,5 +1,5 @@
|
||||||
{% extends "simple/base.html" %}
|
{% extends "base.html" %}
|
||||||
{% from 'simple/icons.html' import icon, icon_big, icon_small %}
|
{% from 'icons.html' import icon, icon_big, icon_small %}
|
||||||
{% macro engine_data_form(engine_data) -%}
|
{% macro engine_data_form(engine_data) -%}
|
||||||
{% for engine_name, kv_data in engine_data.items() %}
|
{% for engine_name, kv_data in engine_data.items() %}
|
||||||
{% for k, v in kv_data.items() %}
|
{% for k, v in kv_data.items() %}
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
{% block title %}{% if query_in_title %}{{- q|e }} - {% endif %}{% endblock %}
|
{% block title %}{% if query_in_title %}{{- q|e }} - {% endif %}{% endblock %}
|
||||||
{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&categories={{ selected_categories|join(",") | replace(' ','+') }}&pageno={{ pageno }}&time_range={{ time_range }}&language={{ current_language }}&safesearch={{ safesearch }}&format=rss">{% endblock %}
|
{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&categories={{ selected_categories|join(",") | replace(' ','+') }}&pageno={{ pageno }}&time_range={{ time_range }}&language={{ current_language }}&safesearch={{ safesearch }}&format=rss">{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% include 'simple/search.html' %}
|
{% include 'search.html' %}
|
||||||
|
|
||||||
{% if results and results|map(attribute='template')|unique|list|count == 1 %}
|
{% if results and results|map(attribute='template')|unique|list|count == 1 %}
|
||||||
{% set only_template = 'only_template_' + results[0]['template']|default('default')|replace('.html', '') %}
|
{% set only_template = 'only_template_' + results[0]['template']|default('default')|replace('.html', '') %}
|
||||||
|
@ -58,7 +58,7 @@
|
||||||
{% if infoboxes %}
|
{% if infoboxes %}
|
||||||
<div id="infoboxes">
|
<div id="infoboxes">
|
||||||
{% for infobox in infoboxes -%}
|
{% for infobox in infoboxes -%}
|
||||||
{% include 'simple/infobox.html' %}
|
{% include 'infobox.html' %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
{% if result.close_group and not only_template %}</div>{% endif %}
|
{% if result.close_group and not only_template %}</div>{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if not results and not answers %}
|
{% if not results and not answers %}
|
||||||
{% include 'simple/messages/no_results.html' %}
|
{% include 'messages/no_results.html' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div id="backToTop">
|
<div id="backToTop">
|
|
@ -2,7 +2,7 @@
|
||||||
<div id="search_header">
|
<div id="search_header">
|
||||||
<a id="search_logo" href="{{ url_for('index') }}" tabindex="0" title="{{ _('Display the front page') }}">
|
<a id="search_logo" href="{{ url_for('index') }}" tabindex="0" title="{{ _('Display the front page') }}">
|
||||||
<span hidden>SearXNG</span>
|
<span hidden>SearXNG</span>
|
||||||
{% include 'simple/searxng-wordmark.min.svg' without context %}
|
{% include 'searxng-wordmark.min.svg' without context %}
|
||||||
</a>
|
</a>
|
||||||
<div id="search_view">
|
<div id="search_view">
|
||||||
<div class="search_box">
|
<div class="search_box">
|
||||||
|
@ -12,12 +12,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% set display_tooltip = true %}
|
{% set display_tooltip = true %}
|
||||||
{% include 'simple/categories.html' %}
|
{% include 'categories.html' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="search_filters">
|
<div class="search_filters">
|
||||||
{% include 'simple/filters/languages.html' %}
|
{% include 'filters/languages.html' %}
|
||||||
{% include 'simple/filters/time_range.html' %}
|
{% include 'filters/time_range.html' %}
|
||||||
{% include 'simple/filters/safesearch.html' %}
|
{% include 'filters/safesearch.html' %}
|
||||||
</div>
|
</div>
|
||||||
<input type="hidden" name="theme" value="{{ theme }}" >
|
<input type="hidden" name="theme" value="{{ theme }}" >
|
||||||
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}
|
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" >{% endif %}
|
Before Width: | Height: | Size: 711 B After Width: | Height: | Size: 711 B |
|
@ -1,8 +0,0 @@
|
||||||
{% extends "simple/base.html" %}
|
|
||||||
{% from 'simple/icons.html' import icon_big %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="index">
|
|
||||||
<div class="title"><h1>SearXNG</h1></div>
|
|
||||||
{% include 'simple/simple_search.html' %}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% from 'simple/icons.html' import icon_big %}
|
{% from 'icons.html' import icon_big %}
|
||||||
{% from 'simple/new_issue.html' import new_issue with context %}
|
{% from 'new_issue.html' import new_issue with context %}
|
||||||
|
|
||||||
{% extends "simple/page_with_header.html" %}
|
{% extends "page_with_header.html" %}
|
||||||
|
|
||||||
{%- macro th_sort(column_order, column_name) -%}
|
{%- macro th_sort(column_order, column_name) -%}
|
||||||
{% if selected_engine_name %}
|
{% if selected_engine_name %}
|
|
@ -73,7 +73,6 @@ from searx.webutils import (
|
||||||
highlight_content,
|
highlight_content,
|
||||||
get_static_files,
|
get_static_files,
|
||||||
get_result_templates,
|
get_result_templates,
|
||||||
get_themes,
|
|
||||||
prettify_url,
|
prettify_url,
|
||||||
new_hmac,
|
new_hmac,
|
||||||
is_hmac_of,
|
is_hmac_of,
|
||||||
|
@ -138,9 +137,7 @@ static_files = get_static_files(settings['ui']['static_path'])
|
||||||
|
|
||||||
# about templates
|
# about templates
|
||||||
logger.debug('templates directory is %s', settings['ui']['templates_path'])
|
logger.debug('templates directory is %s', settings['ui']['templates_path'])
|
||||||
default_theme = settings['ui']['default_theme']
|
|
||||||
templates_path = settings['ui']['templates_path']
|
templates_path = settings['ui']['templates_path']
|
||||||
themes = get_themes(templates_path)
|
|
||||||
result_templates = get_result_templates(templates_path)
|
result_templates = get_result_templates(templates_path)
|
||||||
|
|
||||||
STATS_SORT_PARAMETERS = {
|
STATS_SORT_PARAMETERS = {
|
||||||
|
@ -299,9 +296,7 @@ def custom_url_for(endpoint: str, **values):
|
||||||
if endpoint == 'static' and values.get('filename'):
|
if endpoint == 'static' and values.get('filename'):
|
||||||
file_hash = static_files.get(values['filename'])
|
file_hash = static_files.get(values['filename'])
|
||||||
if not file_hash:
|
if not file_hash:
|
||||||
# try file in the current theme
|
filename_with_theme = "themes/simple/" + values['filename']
|
||||||
theme_name = request.preferences.get_value('theme')
|
|
||||||
filename_with_theme = "themes/{}/{}".format(theme_name, values['filename'])
|
|
||||||
file_hash = static_files.get(filename_with_theme)
|
file_hash = static_files.get(filename_with_theme)
|
||||||
if file_hash:
|
if file_hash:
|
||||||
values['filename'] = filename_with_theme
|
values['filename'] = filename_with_theme
|
||||||
|
@ -489,7 +484,7 @@ def render(template_name: str, **kwargs):
|
||||||
kwargs['styles'].add(css)
|
kwargs['styles'].add(css)
|
||||||
|
|
||||||
start_time = default_timer()
|
start_time = default_timer()
|
||||||
result = render_template('{}/{}'.format(kwargs['theme'], template_name), **kwargs)
|
result = render_template(template_name, **kwargs)
|
||||||
request.render_time += default_timer() - start_time # pylint: disable=assigning-non-slot
|
request.render_time += default_timer() - start_time # pylint: disable=assigning-non-slot
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
@ -502,7 +497,7 @@ def pre_request():
|
||||||
request.timings = [] # pylint: disable=assigning-non-slot
|
request.timings = [] # pylint: disable=assigning-non-slot
|
||||||
request.errors = [] # pylint: disable=assigning-non-slot
|
request.errors = [] # pylint: disable=assigning-non-slot
|
||||||
|
|
||||||
preferences = Preferences(themes, list(categories.keys()), engines, plugins) # pylint: disable=redefined-outer-name
|
preferences = Preferences(list(categories.keys()), engines, plugins) # pylint: disable=redefined-outer-name
|
||||||
user_agent = request.headers.get('User-Agent', '').lower()
|
user_agent = request.headers.get('User-Agent', '').lower()
|
||||||
if 'webkit' in user_agent and 'android' in user_agent:
|
if 'webkit' in user_agent and 'android' in user_agent:
|
||||||
preferences.key_value_settings['method'].value = 'GET'
|
preferences.key_value_settings['method'].value = 'GET'
|
||||||
|
@ -1083,7 +1078,6 @@ def preferences():
|
||||||
disabled_engines = disabled_engines,
|
disabled_engines = disabled_engines,
|
||||||
autocomplete_backends = autocomplete_backends,
|
autocomplete_backends = autocomplete_backends,
|
||||||
shortcuts = {y: x for x, y in engine_shortcuts.items()},
|
shortcuts = {y: x for x, y in engine_shortcuts.items()},
|
||||||
themes = themes,
|
|
||||||
plugins = plugins,
|
plugins = plugins,
|
||||||
doi_resolvers = settings['doi_resolvers'],
|
doi_resolvers = settings['doi_resolvers'],
|
||||||
current_doi_resolver = get_doi_resolver(request.preferences),
|
current_doi_resolver = get_doi_resolver(request.preferences),
|
||||||
|
@ -1301,9 +1295,8 @@ def opensearch():
|
||||||
|
|
||||||
@app.route('/favicon.ico')
|
@app.route('/favicon.ico')
|
||||||
def favicon():
|
def favicon():
|
||||||
theme = request.preferences.get_value("theme")
|
|
||||||
return send_from_directory(
|
return send_from_directory(
|
||||||
os.path.join(app.root_path, settings['ui']['static_path'], 'themes', theme, 'img'),
|
os.path.join(app.root_path, settings['ui']['static_path'], 'themes/simple/img'),
|
||||||
'favicon.png',
|
'favicon.png',
|
||||||
mimetype='image/vnd.microsoft.icon',
|
mimetype='image/vnd.microsoft.icon',
|
||||||
)
|
)
|
||||||
|
@ -1358,7 +1351,6 @@ def config():
|
||||||
'default_locale': settings['ui']['default_locale'],
|
'default_locale': settings['ui']['default_locale'],
|
||||||
'autocomplete': settings['search']['autocomplete'],
|
'autocomplete': settings['search']['autocomplete'],
|
||||||
'safe_search': settings['search']['safe_search'],
|
'safe_search': settings['search']['safe_search'],
|
||||||
'default_theme': settings['ui']['default_theme'],
|
|
||||||
'version': VERSION_STRING,
|
'version': VERSION_STRING,
|
||||||
'brand': {
|
'brand': {
|
||||||
'PRIVACYPOLICY_URL': get_setting('general.privacypolicy_url'),
|
'PRIVACYPOLICY_URL': get_setting('general.privacypolicy_url'),
|
||||||
|
|
|
@ -51,11 +51,6 @@ class UnicodeWriter:
|
||||||
self.writerow(row)
|
self.writerow(row)
|
||||||
|
|
||||||
|
|
||||||
def get_themes(templates_path):
|
|
||||||
"""Returns available themes list."""
|
|
||||||
return os.listdir(templates_path)
|
|
||||||
|
|
||||||
|
|
||||||
def get_hash_for_file(file: pathlib.Path) -> str:
|
def get_hash_for_file(file: pathlib.Path) -> str:
|
||||||
m = hashlib.sha1()
|
m = hashlib.sha1()
|
||||||
with file.open('rb') as f:
|
with file.open('rb') as f:
|
||||||
|
|
|
@ -105,7 +105,7 @@ def get_search_query(
|
||||||
"language": args.lang,
|
"language": args.lang,
|
||||||
"time_range": args.timerange,
|
"time_range": args.timerange,
|
||||||
}
|
}
|
||||||
preferences = searx.preferences.Preferences(['simple'], engine_categories, searx.engines.engines, [])
|
preferences = searx.preferences.Preferences(engine_categories, searx.engines.engines, [])
|
||||||
preferences.key_value_settings['safesearch'].parse(args.safesearch)
|
preferences.key_value_settings['safesearch'].parse(args.safesearch)
|
||||||
|
|
||||||
search_query = searx.webadapter.get_search_query_from_webapp(preferences, form)[0]
|
search_query = searx.webadapter.get_search_query_from_webapp(preferences, form)[0]
|
||||||
|
|
|
@ -24,7 +24,6 @@ server:
|
||||||
ui:
|
ui:
|
||||||
static_path: ""
|
static_path: ""
|
||||||
templates_path: ""
|
templates_path: ""
|
||||||
default_theme: simple
|
|
||||||
|
|
||||||
preferences:
|
preferences:
|
||||||
lock: []
|
lock: []
|
||||||
|
|
|
@ -27,7 +27,6 @@ server:
|
||||||
ui:
|
ui:
|
||||||
static_path: ""
|
static_path: ""
|
||||||
templates_path: ""
|
templates_path: ""
|
||||||
default_theme: simple
|
|
||||||
default_locale: ""
|
default_locale: ""
|
||||||
theme_args:
|
theme_args:
|
||||||
simple_style: auto
|
simple_style: auto
|
||||||
|
|
|
@ -122,7 +122,7 @@ class TestPreferences(SearxTestCase):
|
||||||
def test_encode(self):
|
def test_encode(self):
|
||||||
from searx.preferences import Preferences
|
from searx.preferences import Preferences
|
||||||
|
|
||||||
pref = Preferences(['simple'], ['general'], {}, [])
|
pref = Preferences(['general'], {}, [])
|
||||||
url_params = (
|
url_params = (
|
||||||
'eJx1Vk1z4zYM_TXxRZNMd7eddg8-pe21nWnvGoiEJEQkofDDtvzrC1qSRdnbQxQTBA'
|
'eJx1Vk1z4zYM_TXxRZNMd7eddg8-pe21nWnvGoiEJEQkofDDtvzrC1qSRdnbQxQTBA'
|
||||||
'Hw8eGRCiJ27AnDsUOHHszBgOsSdHjU-Pr7HwfDCkweHCBFVmxHgxGPB7LiU4-eL9Px'
|
'Hw8eGRCiJ27AnDsUOHHszBgOsSdHjU-Pr7HwfDCkweHCBFVmxHgxGPB7LiU4-eL9Px'
|
||||||
|
|
|
@ -30,14 +30,14 @@ class ValidateQueryCase(SearxTestCase):
|
||||||
searx.search.initialize(TEST_ENGINES)
|
searx.search.initialize(TEST_ENGINES)
|
||||||
|
|
||||||
def test_query_private_engine_without_token(self):
|
def test_query_private_engine_without_token(self):
|
||||||
preferences = Preferences(['simple'], ['general'], engines, [])
|
preferences = Preferences(['general'], engines, [])
|
||||||
valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences)
|
valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences)
|
||||||
self.assertEqual(len(valid), 0)
|
self.assertEqual(len(valid), 0)
|
||||||
self.assertEqual(len(unknown), 0)
|
self.assertEqual(len(unknown), 0)
|
||||||
self.assertEqual(len(invalid_token), 1)
|
self.assertEqual(len(invalid_token), 1)
|
||||||
|
|
||||||
def test_query_private_engine_with_incorrect_token(self):
|
def test_query_private_engine_with_incorrect_token(self):
|
||||||
preferences_with_tokens = Preferences(['simple'], ['general'], engines, [])
|
preferences_with_tokens = Preferences(['general'], engines, [])
|
||||||
preferences_with_tokens.parse_dict({'tokens': 'bad-token'})
|
preferences_with_tokens.parse_dict({'tokens': 'bad-token'})
|
||||||
valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens)
|
valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens)
|
||||||
self.assertEqual(len(valid), 0)
|
self.assertEqual(len(valid), 0)
|
||||||
|
@ -45,7 +45,7 @@ class ValidateQueryCase(SearxTestCase):
|
||||||
self.assertEqual(len(invalid_token), 1)
|
self.assertEqual(len(invalid_token), 1)
|
||||||
|
|
||||||
def test_query_private_engine_with_correct_token(self):
|
def test_query_private_engine_with_correct_token(self):
|
||||||
preferences_with_tokens = Preferences(['simple'], ['general'], engines, [])
|
preferences_with_tokens = Preferences(['general'], engines, [])
|
||||||
preferences_with_tokens.parse_dict({'tokens': 'my-token'})
|
preferences_with_tokens.parse_dict({'tokens': 'my-token'})
|
||||||
valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens)
|
valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens)
|
||||||
self.assertEqual(len(valid), 1)
|
self.assertEqual(len(valid), 1)
|
||||||
|
|
|
@ -8,8 +8,8 @@ STATIC_BUILT_PATHS=(
|
||||||
'searx/static/themes/simple/js'
|
'searx/static/themes/simple/js'
|
||||||
'searx/static/themes/simple/src/generated/pygments.less'
|
'searx/static/themes/simple/src/generated/pygments.less'
|
||||||
'searx/static/themes/simple/img'
|
'searx/static/themes/simple/img'
|
||||||
'searx/templates/simple/searxng-wordmark.min.svg'
|
'searx/templates/searxng-wordmark.min.svg'
|
||||||
'searx/templates/simple/icons.html'
|
'searx/templates/icons.html'
|
||||||
)
|
)
|
||||||
|
|
||||||
static_help(){
|
static_help(){
|
||||||
|
|
Loading…
Add table
Reference in a new issue