summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2021-09-18 11:01:39 +0200
committerAlexandre Flament <alex@al-f.net>2021-09-24 20:38:05 +0200
commit2f1384f1989ddcdeba96d3e0f300510db235b851 (patch)
tree504e6e0f457097869d5e8a92a90f8cc7afcb98bd
parentbfd24d1226ccdd1a9c7b07ff240a2198ab4d655b (diff)
downloadsearxng-2f1384f1989ddcdeba96d3e0f300510db235b851.tar.gz
searxng-2f1384f1989ddcdeba96d3e0f300510db235b851.zip
[enh] themes: display the engine descriptions
-rw-r--r--searx/static/themes/oscar/src/js/preferences.js23
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/preferences.less1
-rw-r--r--searx/static/themes/simple/src/js/main/searx_preferences.js27
-rw-r--r--searx/static/themes/simple/src/less/preferences.less12
-rw-r--r--searx/templates/oscar/preferences.html5
-rw-r--r--searx/templates/simple/preferences.html3
-rwxr-xr-xsearx/webapp.py4
7 files changed, 71 insertions, 4 deletions
diff --git a/searx/static/themes/oscar/src/js/preferences.js b/searx/static/themes/oscar/src/js/preferences.js
new file mode 100644
index 000000000..25aac052f
--- /dev/null
+++ b/searx/static/themes/oscar/src/js/preferences.js
@@ -0,0 +1,23 @@
+$(document).ready(function(){
+ let engine_descriptions = null;
+ function load_engine_descriptions() {
+ if (engine_descriptions == null) {
+ $.ajax("engine_descriptions.json", dataType="json").done(function(data) {
+ engine_descriptions = data;
+ for (const [engine_name, description] of Object.entries(data)) {
+ let elements = $('[data-engine-name="' + engine_name + '"] .description');
+ for(const element of elements) {
+ let source = ' (<i>' + searx.translations['Source'] + ':&nbsp;' + description[1] + '</i>)';
+ element.innerHTML = description[0] + source;
+ }
+ }
+ });
+ }
+ }
+
+ if (document.querySelector('body[class="preferences_endpoint"]')) {
+ $('[data-engine-name]').hover(function() {
+ load_engine_descriptions();
+ });
+ }
+});
diff --git a/searx/static/themes/oscar/src/less/logicodev/preferences.less b/searx/static/themes/oscar/src/less/logicodev/preferences.less
index 32e230413..2d716e966 100644
--- a/searx/static/themes/oscar/src/less/logicodev/preferences.less
+++ b/searx/static/themes/oscar/src/less/logicodev/preferences.less
@@ -25,6 +25,7 @@ input.cursor-text {
font-size: 14px;
font-weight: normal;
z-index: 1000000;
+ max-width: 40rem;
}
td:hover .engine-tooltip, th:hover .engine-tooltip, .engine-tooltip:hover {
diff --git a/searx/static/themes/simple/src/js/main/searx_preferences.js b/searx/static/themes/simple/src/js/main/searx_preferences.js
new file mode 100644
index 000000000..136d9f03e
--- /dev/null
+++ b/searx/static/themes/simple/src/js/main/searx_preferences.js
@@ -0,0 +1,27 @@
+(function (w, d, searx) {
+ 'use strict';
+
+ searx.ready(function() {
+ let engine_descriptions = null;
+ function load_engine_descriptions() {
+ if (engine_descriptions == null) {
+ searx.http("GET", "engine_descriptions.json").then(function(content) {
+ engine_descriptions = JSON.parse(content);
+ for (const [engine_name, description] of Object.entries(engine_descriptions)) {
+ let elements = d.querySelectorAll('[data-engine-name="' + engine_name + '"] .engine-description');
+ for(const element of elements) {
+ let source = ' (<i>' + searx.translations['Source'] + ':&nbsp;' + description[1] + '</i>)';
+ element.innerHTML = description[0] + source;
+ }
+ }
+ });
+ }
+ }
+
+ if (d.querySelector('body[class="preferences_endpoint"]')) {
+ for(const el of d.querySelectorAll('[data-engine-name]')) {
+ searx.on(el, 'mouseenter', load_engine_descriptions);
+ }
+ }
+ });
+})(window, document, window.searx);
diff --git a/searx/static/themes/simple/src/less/preferences.less b/searx/static/themes/simple/src/less/preferences.less
index 034102e66..0be6f9023 100644
--- a/searx/static/themes/simple/src/less/preferences.less
+++ b/searx/static/themes/simple/src/less/preferences.less
@@ -108,6 +108,18 @@
width: 100%;
}
}
+
+ th.name {
+ .engine-tooltip {
+ margin-top: 1.8rem;
+ left: 20rem;
+ max-width: 40rem;
+
+ .engine-description {
+ margin-top: 0.5rem;
+ }
+ }
+ }
}
@media screen and (max-width: 75em) {
diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html
index ba861a68e..4b06b9614 100644
--- a/searx/templates/oscar/preferences.html
+++ b/searx/templates/oscar/preferences.html
@@ -4,6 +4,7 @@
{% if search_engine.about is defined or stats[search_engine.name]['result_count'] > 0 %}
{% set about = search_engine.about %}
<div class="engine-tooltip" role="tooltip" id="{{ id }}">{{- "" -}}
+ <p class="description"></p>
{% if search_engine.about is defined %}
<h5><a href="{{about.website}}" rel="noreferrer">{{about.website}}</a></h5>
{%- if about.wikidata_id -%}<p><a href="https://www.wikidata.org/wiki/{{about.wikidata_id}}" rel="noreferrer">wikidata.org/wiki/{{about.wikidata_id}}</a></p>{%- endif -%}
@@ -343,7 +344,7 @@
<td class="onoff-checkbox">
{{- checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) -}}
</td>
- <th scope="row"><span aria-labelledby="{{ 'tooltip_' + categ + '_' + search_engine.name }}">
+ <th scope="row" data-engine-name="{{ search_engine.name }}"><span aria-labelledby="{{ 'tooltip_' + categ + '_' + search_engine.name }}">
{%- if search_engine.enable_http %}{{ icon('exclamation-sign', 'No HTTPS') }}{% endif -%}
{{- search_engine.name -}}</span>
{{- engine_about(search_engine, 'tooltip_' + categ + '_' + search_engine.name) -}}
@@ -363,7 +364,7 @@
<td>{{ support_toggle(supports[search_engine.name]['safesearch']) }}</td>
<td>{{ support_toggle(supports[search_engine.name]['supports_selected_language']) }}</td>
<td>{{ shortcuts[search_engine.name] }}</td>
- <th scope="row"><span>{% if search_engine.enable_http %}{{ icon('exclamation-sign', 'No HTTPS') }}{% endif %}{{ search_engine.name }}</span>{{ engine_about(search_engine) }}</th>
+ <th scope="row" data-engine-name="{{ search_engine.name }}"><span>{% if search_engine.enable_http %}{{ icon('exclamation-sign', 'No HTTPS') }}{% endif %}{{ search_engine.name }}</span>{{ engine_about(search_engine) }}</th>
<td class="onoff-checkbox">
{{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
</td>
diff --git a/searx/templates/simple/preferences.html b/searx/templates/simple/preferences.html
index 1164bd04f..190fefe99 100644
--- a/searx/templates/simple/preferences.html
+++ b/searx/templates/simple/preferences.html
@@ -22,6 +22,7 @@
{% if search_engine.about is defined %}
{% set about = search_engine.about %}
<div class="engine-tooltip" role="tooltip">{{- "" -}}
+ <p class="engine-description"></p>
<p><a href="{{about.website}}" rel="noreferrer">{{about.website}}</a></p>
{%- if about.wikidata_id -%}<p><a href="https://www.wikidata.org/wiki/{{about.wikidata_id}}" rel="noreferrer">wikidata.org/wiki/{{about.wikidata_id}}</a></p>{%- endif -%}
{%- if search_engine.enable_http %}<p>{{ icon('exclamation-sign', 'No HTTPS') }}{{ _('No HTTPS')}}</p>{% endif -%}
@@ -262,7 +263,7 @@
{% set engine_id = 'engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_') %}
<tr>
<td class="engine_checkbox">{{ checkbox_onoff(engine_id, (search_engine.name, categ) in disabled_engines) }}</td>
- <th class="name">{% if search_engine.enable_http %}{{ icon('warning', 'No HTTPS') }}{% endif %} {{ search_engine.name }} {{ engine_about(search_engine) }}</th>
+ <th class="name" data-engine-name="{{ search_engine.name }}">{% if search_engine.enable_http %}{{ icon('warning', 'No HTTPS') }}{% endif %} {{ search_engine.name }} {{ engine_about(search_engine) }}</th>
<td class="shortcut">{{ shortcuts[search_engine.name] }}</td>
<td>{{ checkbox(engine_id + '_supported_languages', supports[search_engine.name]['supports_selected_language'], true, true) }}</td>
<td>{{ checkbox(engine_id + '_safesearch', supports[search_engine.name]['safesearch'], true, true) }}</td>
diff --git a/searx/webapp.py b/searx/webapp.py
index 7209e3a57..21b00188c 100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -394,7 +394,9 @@ def image_proxify(url):
def get_translations():
return {
# when there is autocompletion
- 'no_item_found': gettext('No item found')
+ 'no_item_found': gettext('No item found'),
+ # /preferences: the source of the engine description (wikipedata, wikidata, website)
+ 'Source': gettext('Source'),
}