[mod] preferences: implement drop-down menu for hotkeys (default, vim)

Replace the on/off checkbox of the vim-hotkeys in the preferences by a drop-down
menu.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2023-09-16 17:14:18 +02:00 committed by Markus Heiser
parent 09935e2897
commit 317db5b04f
6 changed files with 30 additions and 12 deletions

View File

@ -1,10 +0,0 @@
from flask_babel import gettext
name = gettext('Vim-like hotkeys')
description = gettext(
'Navigate search results with Vim-like hotkeys '
'(JavaScript required). '
'Press "h" key on main or result page to get help.'
)
default_on = False
preference_section = 'ui'

View File

@ -465,6 +465,10 @@ class Preferences:
settings['ui']['search_on_category_select'], settings['ui']['search_on_category_select'],
locked=is_locked('search_on_category_select') locked=is_locked('search_on_category_select')
), ),
'hotkeys': EnumStringSetting(
'default',
choices=['default', 'vim']
),
# fmt: on # fmt: on
} }

View File

@ -215,7 +215,6 @@ outgoing:
# # these plugins are disabled if nothing is configured .. # # these plugins are disabled if nothing is configured ..
# - 'Hostname replace' # see hostname_replace configuration below # - 'Hostname replace' # see hostname_replace configuration below
# - 'Open Access DOI rewrite' # - 'Open Access DOI rewrite'
# - 'Vim-like hotkeys'
# - 'Tor check plugin' # - 'Tor check plugin'
# # Read the docs before activate: auto-detection of the language could be # # Read the docs before activate: auto-detection of the language could be
# # detrimental to users expectations / users can activate the plugin in the # # detrimental to users expectations / users can activate the plugin in the

View File

@ -200,6 +200,7 @@
{%- if 'search_on_category_select' not in locked_preferences -%} {%- if 'search_on_category_select' not in locked_preferences -%}
{%- include 'simple/preferences/search_on_category_select.html' -%} {%- include 'simple/preferences/search_on_category_select.html' -%}
{%- endif -%} {%- endif -%}
{%- include 'simple/preferences/hotkeys.html' -%}
{{- plugin_preferences('ui') -}} {{- plugin_preferences('ui') -}}
{{- tab_footer() -}} {{- tab_footer() -}}

View File

@ -0,0 +1,23 @@
<fieldset>{{- '' -}}
<legend id="pref_hotkeys">{{- _('Hotkeys') -}}</legend>{{- '' -}}
<div class="value">{{- '' -}}
<select name="hotkeys" aria-labelledby="pref_hotkeys">{{- '' -}}
<option value="default"
{%- if hotkeys == 'default' %} selected="selected"
{%- endif -%}>
SearXNG{{- '' -}}
</option>{{- '' -}}
<option value="vim"
{%- if hotkeys == 'vim' %} selected="selected"
{%- endif -%}>
{{- _('Vim-like') -}}
</option>{{- '' -}}
</select>{{- '' -}}
</div>{{- '' -}}
<div class="description">
{{- _(
'Navigate search results with hotkeys (JavaScript required). '
'Press "h" key on main or result page to get help.'
) -}}
</div>{{- '' -}}
</fieldset>{{- '' -}}

View File

@ -362,7 +362,7 @@ def get_client_settings():
'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('searx.plugins.search_on_category_select'), 'search_on_category_select': req_pref.get_value('searx.plugins.search_on_category_select'),
'hotkeys': req_pref.plugins.choices['searx.plugins.vim_hotkeys'], 'hotkeys': req_pref.get_value('hotkeys'),
'theme_static_path': custom_url_for('static', filename='themes/simple'), 'theme_static_path': custom_url_for('static', filename='themes/simple'),
} }
@ -390,6 +390,7 @@ def render(template_name: str, **kwargs):
kwargs['autocomplete'] = request.preferences.get_value('autocomplete') kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
kwargs['infinite_scroll'] = request.preferences.get_value('infinite_scroll') kwargs['infinite_scroll'] = request.preferences.get_value('infinite_scroll')
kwargs['search_on_category_select'] = request.preferences.get_value('search_on_category_select') kwargs['search_on_category_select'] = request.preferences.get_value('search_on_category_select')
kwargs['hotkeys'] = request.preferences.get_value('hotkeys')
kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab') kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
kwargs['advanced_search'] = request.preferences.get_value('advanced_search') kwargs['advanced_search'] = request.preferences.get_value('advanced_search')
kwargs['query_in_title'] = request.preferences.get_value('query_in_title') kwargs['query_in_title'] = request.preferences.get_value('query_in_title')