Browse Source

[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>
Markus Heiser 1 year ago
parent
commit
317db5b04f

+ 0 - 10
searx/plugins/vim_hotkeys.py

@@ -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'

+ 4 - 0
searx/preferences.py

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

+ 0 - 1
searx/settings.yml

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

+ 1 - 0
searx/templates/simple/preferences.html

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

+ 23 - 0
searx/templates/simple/preferences/hotkeys.html

@@ -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>{{- '' -}}

+ 2 - 1
searx/webapp.py

@@ -362,7 +362,7 @@ def get_client_settings():
         'infinite_scroll': req_pref.get_value('infinite_scroll'),
         'translations': get_translations(),
         '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'),
     }
 
@@ -390,6 +390,7 @@ def render(template_name: str, **kwargs):
     kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
     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['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')