- {% for categ in categories %}
+ {% for categ in all_categories %}
{% for search_engine in engines_by_category[categ] %}
{% if not search_engine.private %}
diff --git a/searx/templates/default/preferences.html b/searx/templates/default/preferences.html
index 0afe9f7d0..90006c029 100644
--- a/searx/templates/default/preferences.html
+++ b/searx/templates/default/preferences.html
@@ -89,7 +89,7 @@
{{ _('Category') }}
{{ _('Allow') }} / {{ _('Block') }}
- {% for categ in categories %}
+ {% for categ in all_categories %}
{% for search_engine in engines_by_category[categ] %}
{% if not search_engine.private %}
diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html
index ee4e6ab57..6adb43523 100644
--- a/searx/templates/oscar/preferences.html
+++ b/searx/templates/oscar/preferences.html
@@ -117,7 +117,7 @@
- {% for categ in categories %}
+ {% for categ in all_categories %}
- {% for categ in categories %}
+ {% for categ in all_categories %}
diff --git a/searx/webapp.py b/searx/webapp.py
index 8587d546a..dbcbb4c0d 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -279,6 +279,12 @@ def render(template_name, override_theme=None, **kwargs):
if x != 'general'
and x in nonblocked_categories)
+ if 'all_categories' not in kwargs:
+ kwargs['all_categories'] = ['general']
+ kwargs['all_categories'].extend(x for x in
+ sorted(categories.keys())
+ if x != 'general')
+
if 'selected_categories' not in kwargs:
kwargs['selected_categories'] = []
for arg in request.args:
@@ -286,11 +292,13 @@ def render(template_name, override_theme=None, **kwargs):
c = arg.split('_', 1)[1]
if c in categories:
kwargs['selected_categories'].append(c)
+
if not kwargs['selected_categories']:
cookie_categories = request.cookies.get('categories', '').split(',')
for ccateg in cookie_categories:
if ccateg in categories:
kwargs['selected_categories'].append(ccateg)
+
if not kwargs['selected_categories']:
kwargs['selected_categories'] = ['general']