diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html index da88cd755..fe344a2ea 100644 --- a/searx/templates/oscar/preferences.html +++ b/searx/templates/oscar/preferences.html @@ -348,7 +348,11 @@ {{ _("Allow") }} {% endif %} - {% for search_engine in engines_by_category[categ] %} + {% for group, engines in engines_by_category[categ] | group_engines_in_tab %} + {% if loop.length > 1 %} + {{_(group)}} + {% endif %} + {% for search_engine in engines %} {% if not search_engine.private %} {% if not rtl %} @@ -382,6 +386,7 @@ {% endif %} {% endif %} + {% endfor %} {% endfor %} diff --git a/searx/templates/simple/preferences.html b/searx/templates/simple/preferences.html index 5f289c580..1d565c238 100644 --- a/searx/templates/simple/preferences.html +++ b/searx/templates/simple/preferences.html @@ -289,7 +289,11 @@ {{ _("Max time") }} {{ _("Reliability") }} - {% for search_engine in engines_by_category[categ] %} + {% for group, engines in engines_by_category[categ] | group_engines_in_tab %} + {% if loop.length > 1 %} + {{_(group)}} + {% endif %} + {% for search_engine in engines %} {% if not search_engine.private %} {% set engine_id = 'engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_') %} @@ -305,6 +309,7 @@ {% endif %} {% endfor %} + {% endfor %} {{ tab_footer() }} diff --git a/searx/webapp.py b/searx/webapp.py index f884c35ef..9ce7b9d5a 100755 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -59,9 +59,11 @@ from searx.settings_defaults import OUTPUT_FORMATS from searx.settings_loader import get_default_settings_path from searx.exceptions import SearxParameterException from searx.engines import ( + DEFAULT_GROUP_NAME, categories, engines, engine_shortcuts, + group_engines_in_tab, ) from searx.webutils import ( UnicodeWriter, @@ -152,6 +154,7 @@ app = Flask(__name__, static_folder=settings['ui']['static_path'], template_fold app.jinja_env.trim_blocks = True app.jinja_env.lstrip_blocks = True app.jinja_env.add_extension('jinja2.ext.loopcontrols') # pylint: disable=no-member +app.jinja_env.filters['group_engines_in_tab'] = group_engines_in_tab # pylint: disable=no-member app.secret_key = settings['server']['secret_key'] babel = Babel(app) @@ -169,6 +172,16 @@ _category_names = ( gettext('map'), gettext('onions'), gettext('science'), + # non-tab categories + gettext('apps'), + gettext('dictionaries'), + gettext('lyrics'), + gettext('packages'), + gettext('q&a'), + gettext('repos'), + gettext('software wikis'), + gettext('web'), + gettext(DEFAULT_GROUP_NAME), ) _simple_style = (gettext('auto'), gettext('light'), gettext('dark'))