mirror of
				https://github.com/searxng/searxng.git
				synced 2025-11-03 19:17:07 -05:00 
			
		
		
		
	[enh] themes: display the engine descriptions
This commit is contained in:
		
							parent
							
								
									bfd24d1226
								
							
						
					
					
						commit
						2f1384f198
					
				
							
								
								
									
										23
									
								
								searx/static/themes/oscar/src/js/preferences.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								searx/static/themes/oscar/src/js/preferences.js
									
									
									
									
									
										Normal file
									
								
							@ -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'] + ': ' + description[1] + '</i>)';
 | 
				
			||||||
 | 
					                        element.innerHTML = description[0] + source;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (document.querySelector('body[class="preferences_endpoint"]')) {
 | 
				
			||||||
 | 
					        $('[data-engine-name]').hover(function() {
 | 
				
			||||||
 | 
					            load_engine_descriptions();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -25,6 +25,7 @@ input.cursor-text {
 | 
				
			|||||||
    font-size: 14px;
 | 
					    font-size: 14px;
 | 
				
			||||||
    font-weight: normal;
 | 
					    font-weight: normal;
 | 
				
			||||||
    z-index: 1000000; 
 | 
					    z-index: 1000000; 
 | 
				
			||||||
 | 
					    max-width: 40rem;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
td:hover .engine-tooltip, th:hover .engine-tooltip, .engine-tooltip:hover {
 | 
					td:hover .engine-tooltip, th:hover .engine-tooltip, .engine-tooltip:hover {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										27
									
								
								searx/static/themes/simple/src/js/main/searx_preferences.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								searx/static/themes/simple/src/js/main/searx_preferences.js
									
									
									
									
									
										Normal file
									
								
							@ -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'] + ': ' + 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);
 | 
				
			||||||
@ -108,6 +108,18 @@
 | 
				
			|||||||
      width: 100%;
 | 
					      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) {
 | 
					@media screen and (max-width: 75em) {
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,7 @@
 | 
				
			|||||||
{% if search_engine.about is defined or stats[search_engine.name]['result_count'] > 0 %}
 | 
					{% if search_engine.about is defined or stats[search_engine.name]['result_count'] > 0 %}
 | 
				
			||||||
{% set about = search_engine.about %}
 | 
					{% set about = search_engine.about %}
 | 
				
			||||||
<div class="engine-tooltip" role="tooltip" id="{{ id }}">{{- "" -}}
 | 
					<div class="engine-tooltip" role="tooltip" id="{{ id }}">{{- "" -}}
 | 
				
			||||||
 | 
					    <p class="description"></p>
 | 
				
			||||||
    {% if search_engine.about is defined %}
 | 
					    {% if search_engine.about is defined %}
 | 
				
			||||||
        <h5><a href="{{about.website}}" rel="noreferrer">{{about.website}}</a></h5>
 | 
					        <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 -%}
 | 
					        {%- 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">
 | 
					                                        <td class="onoff-checkbox">
 | 
				
			||||||
                                        {{- checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) -}}
 | 
					                                        {{- checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) -}}
 | 
				
			||||||
                                        </td>
 | 
					                                        </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 -%}
 | 
					                                            {%- if search_engine.enable_http %}{{ icon('exclamation-sign', 'No HTTPS') }}{% endif -%}
 | 
				
			||||||
                                            {{- search_engine.name -}}</span>
 | 
					                                            {{- search_engine.name -}}</span>
 | 
				
			||||||
                                            {{- engine_about(search_engine, 'tooltip_' + categ + '_' + search_engine.name) -}}
 | 
					                                            {{- 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]['safesearch']) }}</td>
 | 
				
			||||||
                                        <td>{{ support_toggle(supports[search_engine.name]['supports_selected_language']) }}</td>
 | 
					                                        <td>{{ support_toggle(supports[search_engine.name]['supports_selected_language']) }}</td>
 | 
				
			||||||
                                        <td>{{ shortcuts[search_engine.name] }}</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">
 | 
					                                        <td class="onoff-checkbox">
 | 
				
			||||||
                                        {{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
 | 
					                                        {{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
 | 
				
			||||||
                                        </td>
 | 
					                                        </td>
 | 
				
			||||||
 | 
				
			|||||||
@ -22,6 +22,7 @@
 | 
				
			|||||||
{% if search_engine.about is defined %}
 | 
					{% if search_engine.about is defined %}
 | 
				
			||||||
{% set about = search_engine.about %}
 | 
					{% set about = search_engine.about %}
 | 
				
			||||||
<div class="engine-tooltip" role="tooltip">{{- "" -}}
 | 
					<div class="engine-tooltip" role="tooltip">{{- "" -}}
 | 
				
			||||||
 | 
					    <p class="engine-description"></p>
 | 
				
			||||||
    <p><a href="{{about.website}}" rel="noreferrer">{{about.website}}</a></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 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 -%}
 | 
					    {%- 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(' ', '_') %}
 | 
					      {% set engine_id = 'engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_') %}
 | 
				
			||||||
      <tr>
 | 
					      <tr>
 | 
				
			||||||
        <td class="engine_checkbox">{{ checkbox_onoff(engine_id, (search_engine.name, categ) in disabled_engines) }}</td>
 | 
					        <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 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 + '_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>
 | 
					        <td>{{ checkbox(engine_id + '_safesearch', supports[search_engine.name]['safesearch'], true, true) }}</td>
 | 
				
			||||||
 | 
				
			|||||||
@ -394,7 +394,9 @@ def image_proxify(url):
 | 
				
			|||||||
def get_translations():
 | 
					def get_translations():
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
        # when there is autocompletion
 | 
					        # 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'),
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user