9 Commits

Author SHA1 Message Date
Markus Heiser
65c970bdf4 [build] /static 2024-12-16 11:39:38 +01:00
Bnyro
d4e3a5f2f2 [refactor] webapp.py: reuse get_client_settings() method to unify preference handling before render 2024-12-16 11:39:38 +01:00
Markus Heiser
1604a00b89 Revert "[weblate] add dummy string to trigger weblate.push.translations in CI"
This reverts commit 899edee5ec.
2024-12-16 09:27:19 +01:00
Markus Heiser
899edee5ec [weblate] add dummy string to trigger weblate.push.translations in CI
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2024-12-16 08:41:57 +01:00
Bnyro
523df1d7f4 [build] /static 2024-12-16 08:36:48 +01:00
Bnyro
c8e932647b [fix] settings: javascript crash when entering due to missing search form 2024-12-16 08:36:48 +01:00
Zhijie He
8d2c01e4ce [chore] cleanup 2024-12-16 08:32:35 +01:00
Zhijie He
12c27f416f [enh] add engine- prefix, replace blank space to - 2024-12-16 08:32:35 +01:00
Zhijie He
e90fa48018 [fix]: fix engine name may break some css style, contains "right", "left", "center" 2024-12-16 08:32:35 +01:00
5 changed files with 33 additions and 35 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -43,11 +43,11 @@
createClearButton(qinput); createClearButton(qinput);
// autocompleter // autocompleter
if (searxng.settings.autocomplete_provider) { if (searxng.settings.autocomplete) {
searxng.autocomplete = AutoComplete.call(w, { searxng.autocomplete = AutoComplete.call(w, {
Url: "./autocompleter", Url: "./autocompleter",
EmptyMessage: searxng.settings.translations.no_item_found, EmptyMessage: searxng.settings.translations.no_item_found,
HttpMethod: searxng.settings.http_method, HttpMethod: searxng.settings.method,
HttpHeaders: { HttpHeaders: {
"Content-type": "application/x-www-form-urlencoded", "Content-type": "application/x-www-form-urlencoded",
"X-Requested-With": "XMLHttpRequest" "X-Requested-With": "XMLHttpRequest"
@@ -186,20 +186,22 @@
// override form submit action to update the actually selected categories // override form submit action to update the actually selected categories
const form = d.querySelector("#search"); const form = d.querySelector("#search");
searxng.on(form, 'submit', (event) => { if (form != null) {
event.preventDefault(); searxng.on(form, 'submit', (event) => {
const categoryValuesInput = d.querySelector("#selected-categories"); event.preventDefault();
if (categoryValuesInput) { const categoryValuesInput = d.querySelector("#selected-categories");
let categoryValues = []; if (categoryValuesInput) {
for (let categoryButton of categoryButtons) { let categoryValues = [];
if (categoryButton.classList.contains("selected")) { for (let categoryButton of categoryButtons) {
categoryValues.push(categoryButton.name.replace("category_", "")); if (categoryButton.classList.contains("selected")) {
categoryValues.push(categoryButton.name.replace("category_", ""));
}
} }
categoryValuesInput.value = categoryValues.join(",");
} }
categoryValuesInput.value = categoryValues.join(","); form.submit();
} });
form.submit(); }
});
}); });
})(window, document, window.searxng); })(window, document, window.searxng);

View File

@@ -19,7 +19,7 @@
<!-- Draw result header --> <!-- Draw result header -->
{% macro result_header(result, favicons, image_proxify) -%} {% macro result_header(result, favicons, image_proxify) -%}
<article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}{% for e in result.engines %} {{ e }}{% endfor %}"> <article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}">
{{- result_open_link(result.url, "url_header") -}} {{- result_open_link(result.url, "url_header") -}}
{%- if favicon_resolver != "" %} {%- if favicon_resolver != "" %}
<div class="favicon"><img loading="lazy" src="{{ favicon_url(result.parsed_url.netloc) }}"></div> <div class="favicon"><img loading="lazy" src="{{ favicon_url(result.parsed_url.netloc) }}"></div>

View File

@@ -357,29 +357,40 @@ def get_pretty_url(parsed_url: urllib.parse.ParseResult):
def get_client_settings(): def get_client_settings():
req_pref = request.preferences req_pref = request.preferences
return { return {
'autocomplete_provider': req_pref.get_value('autocomplete'), 'autocomplete': req_pref.get_value('autocomplete'),
'autocomplete_min': get_setting('search.autocomplete_min'), 'autocomplete_min': get_setting('search.autocomplete_min'),
'http_method': req_pref.get_value('method'), 'method': req_pref.get_value('method'),
'infinite_scroll': req_pref.get_value('infinite_scroll'), 'infinite_scroll': req_pref.get_value('infinite_scroll'),
'translations': get_translations(), 'translations': get_translations(),
'search_on_category_select': req_pref.get_value('search_on_category_select'), 'search_on_category_select': req_pref.get_value('search_on_category_select'),
'hotkeys': req_pref.get_value('hotkeys'), 'hotkeys': req_pref.get_value('hotkeys'),
'url_formatting': req_pref.get_value('url_formatting'), 'url_formatting': req_pref.get_value('url_formatting'),
'theme_static_path': custom_url_for('static', filename='themes/simple'), 'theme_static_path': custom_url_for('static', filename='themes/simple'),
'results_on_new_tab': req_pref.get_value('results_on_new_tab'),
'favicon_resolver': req_pref.get_value('favicon_resolver'),
'advanced_search': req_pref.get_value('advanced_search'),
'query_in_title': req_pref.get_value('query_in_title'),
'safesearch': str(req_pref.get_value('safesearch')),
'theme': req_pref.get_value('theme'),
'doi_resolver': get_doi_resolver(req_pref),
} }
def render(template_name: str, **kwargs): def render(template_name: str, **kwargs):
# values from the preferences
# pylint: disable=too-many-statements # pylint: disable=too-many-statements
client_settings = get_client_settings()
kwargs['client_settings'] = str( kwargs['client_settings'] = str(
base64.b64encode( base64.b64encode(
bytes( bytes(
json.dumps(get_client_settings()), json.dumps(client_settings),
encoding='utf-8', encoding='utf-8',
) )
), ),
encoding='utf-8', encoding='utf-8',
) )
kwargs['preferences'] = request.preferences
kwargs.update(client_settings)
# values from the HTTP requests # values from the HTTP requests
kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint
@@ -387,20 +398,6 @@ def render(template_name: str, **kwargs):
kwargs['errors'] = request.errors kwargs['errors'] = request.errors
kwargs['link_token'] = link_token.get_token() kwargs['link_token'] = link_token.get_token()
# values from the preferences
kwargs['preferences'] = request.preferences
kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
kwargs['favicon_resolver'] = request.preferences.get_value('favicon_resolver')
kwargs['infinite_scroll'] = request.preferences.get_value('infinite_scroll')
kwargs['search_on_category_select'] = request.preferences.get_value('search_on_category_select')
kwargs['hotkeys'] = request.preferences.get_value('hotkeys')
kwargs['url_formatting'] = request.preferences.get_value('url_formatting')
kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
kwargs['advanced_search'] = request.preferences.get_value('advanced_search')
kwargs['query_in_title'] = request.preferences.get_value('query_in_title')
kwargs['safesearch'] = str(request.preferences.get_value('safesearch'))
kwargs['theme'] = request.preferences.get_value('theme')
kwargs['method'] = request.preferences.get_value('method')
kwargs['categories_as_tabs'] = list(settings['categories_as_tabs'].keys()) kwargs['categories_as_tabs'] = list(settings['categories_as_tabs'].keys())
kwargs['categories'] = get_enabled_categories(settings['categories_as_tabs'].keys()) kwargs['categories'] = get_enabled_categories(settings['categories_as_tabs'].keys())
kwargs['DEFAULT_CATEGORY'] = DEFAULT_CATEGORY kwargs['DEFAULT_CATEGORY'] = DEFAULT_CATEGORY
@@ -440,7 +437,6 @@ def render(template_name: str, **kwargs):
kwargs['proxify_results'] = settings['result_proxy']['proxify_results'] kwargs['proxify_results'] = settings['result_proxy']['proxify_results']
kwargs['cache_url'] = settings['ui']['cache_url'] kwargs['cache_url'] = settings['ui']['cache_url']
kwargs['get_result_template'] = get_result_template kwargs['get_result_template'] = get_result_template
kwargs['doi_resolver'] = get_doi_resolver(request.preferences)
kwargs['opensearch_url'] = ( kwargs['opensearch_url'] = (
url_for('opensearch') url_for('opensearch')
+ '?' + '?'