1
0
mirror of https://github.com/searxng/searxng.git synced 2024-08-24 07:00:15 +02:00

Merge branch 'master' into about-opensearch

This commit is contained in:
Markus Heiser 2020-06-09 08:29:48 +00:00 committed by GitHub
commit 2b1f73ad49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 106 additions and 48 deletions

View File

@ -24,6 +24,12 @@ ui:
default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
theme_args : theme_args :
oscar_style : logicodev # default style of oscar oscar_style : logicodev # default style of oscar
# categories_order :
# - general
# - files
# - map
# - it
# - science
# searx supports result proxification using an external service: https://github.com/asciimoo/morty # searx supports result proxification using an external service: https://github.com/asciimoo/morty
# uncomment below section if you have running morty proxy # uncomment below section if you have running morty proxy

File diff suppressed because one or more lines are too long

View File

@ -741,3 +741,7 @@ color: @color-font-light;
transition: opacity 1s ease; transition: opacity 1s ease;
opacity: 0.8; opacity: 0.8;
} }
pre code {
white-space: pre-wrap;
}

View File

@ -172,7 +172,7 @@ input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not
.result-videos, .result-videos,
.result-map { .result-map {
clear: both; clear: both;
padding: 2px 4px; padding: 0.5em 4px;
} }
.result-default:hover, .result-default:hover,
.result-code:hover, .result-code:hover,

File diff suppressed because one or more lines are too long

View File

@ -145,7 +145,7 @@ input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not
.result-videos, .result-videos,
.result-map { .result-map {
clear: both; clear: both;
padding: 2px 4px; padding: 0.5em 4px;
} }
.result-default:hover, .result-default:hover,
.result-code:hover, .result-code:hover,

File diff suppressed because one or more lines are too long

View File

@ -78,7 +78,13 @@ if(searx.autocompleter) {
} }
$(document).ready(function(){ $(document).ready(function(){
var original_search_value = '';
if(searx.autocompleter) { if(searx.autocompleter) {
$("#q").on('keydown', function(e) {
if(e.which == 13) {
original_search_value = $('#q').val();
}
});
$('#q').typeahead(null, { $('#q').typeahead(null, {
name: 'search-results', name: 'search-results',
displayKey: function(result) { displayKey: function(result) {
@ -87,6 +93,9 @@ $(document).ready(function(){
source: searx.searchResults.ttAdapter() source: searx.searchResults.ttAdapter()
}); });
$('#q').bind('typeahead:selected', function(ev, suggestion) { $('#q').bind('typeahead:selected', function(ev, suggestion) {
if(original_search_value) {
$('#q').val(original_search_value);
}
$("#search_form").submit(); $("#search_form").submit();
}); });
} }

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,13 @@ if(searx.autocompleter) {
} }
$(document).ready(function(){ $(document).ready(function(){
var original_search_value = '';
if(searx.autocompleter) { if(searx.autocompleter) {
$("#q").on('keydown', function(e) {
if(e.which == 13) {
original_search_value = $('#q').val();
}
});
$('#q').typeahead(null, { $('#q').typeahead(null, {
name: 'search-results', name: 'search-results',
displayKey: function(result) { displayKey: function(result) {
@ -34,6 +40,9 @@ $(document).ready(function(){
source: searx.searchResults.ttAdapter() source: searx.searchResults.ttAdapter()
}); });
$('#q').bind('typeahead:selected', function(ev, suggestion) { $('#q').bind('typeahead:selected', function(ev, suggestion) {
if(original_search_value) {
$('#q').val(original_search_value);
}
$("#search_form").submit(); $("#search_form").submit();
}); });
} }

View File

@ -64,7 +64,7 @@
// default formating of results // default formating of results
.result-default, .result-code, .result-torrent, .result-videos, .result-map { .result-default, .result-code, .result-torrent, .result-videos, .result-map {
clear: both; clear: both;
padding: 2px 4px; padding: 0.5em 4px;
&:hover{ &:hover{
background-color: @dim-gray; background-color: @dim-gray;
} }

View File

@ -1,15 +1,18 @@
{ {
"devDependencies": { "devDependencies": {
"grunt": "~0.4.5", "grunt": "^0.4.5",
"grunt-contrib-uglify": "~0.6.0",
"grunt-contrib-watch": "~0.6.1",
"grunt-contrib-concat": "~0.5.0", "grunt-contrib-concat": "~0.5.0",
"grunt-contrib-jshint": "~0.10.0", "grunt-contrib-jshint": "~0.10.0",
"grunt-contrib-less": "~0.11.0" "grunt-contrib-less": "~0.11.0",
"grunt-contrib-uglify": "~0.6.0",
"grunt-contrib-watch": "~0.6.1"
}, },
"scripts": { "scripts": {
"build": "npm install && grunt", "build": "npm install && grunt",
"start": "grunt watch", "start": "grunt watch",
"test": "grunt" "test": "grunt"
},
"dependencies": {
"grunt-cli": "^1.3.2"
} }
} }

View File

@ -1,4 +1,4 @@
/*! searx | 06-08-2019 | https://github.com/asciimoo/searx */ /*! searx | 04-06-2020 | */
/* /*
* searx, A privacy-respecting, hackable metasearch engine * searx, A privacy-respecting, hackable metasearch engine
* *
@ -2171,6 +2171,9 @@ article.result-images[data-vim-selected]::before {
overflow: inherit; overflow: inherit;
} }
} }
pre code {
white-space: pre-wrap;
}
#search_submit { #search_submit {
left: 1px; left: 1px;
right: auto; right: auto;

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/*! searx | 06-08-2019 | https://github.com/asciimoo/searx */ /*! searx | 04-06-2020 | */
/* /*
* searx, A privacy-respecting, hackable metasearch engine * searx, A privacy-respecting, hackable metasearch engine
* *
@ -2171,3 +2171,6 @@ article.result-images[data-vim-selected]::before {
overflow: inherit; overflow: inherit;
} }
} }
pre code {
white-space: pre-wrap;
}

File diff suppressed because one or more lines are too long

View File

@ -719,3 +719,7 @@ article.result-images[data-vim-selected]::before {
} }
} }
pre code {
white-space: pre-wrap;
}

View File

@ -29,7 +29,7 @@
searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %}; searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %};
</script> </script>
</head> </head>
<body> <body class="{{ endpoint }}_endpoint" >
<div id="container"> <div id="container">
{% block content %} {% block content %}
{% endblock %} {% endblock %}

View File

@ -98,6 +98,7 @@
<table class="engine-table"> <table class="engine-table">
<tr> <tr>
<th>{{ _('Engine name') }}</th> <th>{{ _('Engine name') }}</th>
<th>{{ _('Shortcut') }}</th>
<th>{{ _('Category') }}</th> <th>{{ _('Category') }}</th>
<th>{{ _('Allow') }} / {{ _('Block') }}</th> <th>{{ _('Allow') }} / {{ _('Block') }}</th>
</tr> </tr>
@ -106,7 +107,8 @@
{% if not search_engine.private %} {% if not search_engine.private %}
<tr> <tr>
<td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td> <td>{{ search_engine.name }}</td>
<td>{{ shortcuts[search_engine.name] }}</td>
<td>{{ _(categ) }}</td> <td>{{ _(categ) }}</td>
<td class="engine_checkbox"> <td class="engine_checkbox">
<input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} /> <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />

View File

@ -1,4 +1,4 @@
<div class="result {{ result.class }}"> <div class="result {{ result.class }}{% for e in result.engines %} {{ e }}{% endfor %}">
<h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3> <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
{% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %} {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
<p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p> <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>

View File

@ -1,4 +1,4 @@
<div class="result {{ result.class }}"> <div class="result {{ result.class }}{% for e in result.engines %} {{ e }}{% endfor %}">
{% if "icon_"~result.engine~".ico" in favicons %} {% if "icon_"~result.engine~".ico" in favicons %}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" /> <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />

View File

@ -1,4 +1,4 @@
<div class="image_result"> <div class="image_result{% for e in result.engines %} {{ e }}{% endfor %}">
<p> <p>
<a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a> <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
<span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span> <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span>

View File

@ -1,4 +1,4 @@
<div class="result"> <div class="result{% for e in result.engines %} {{ e }}{% endfor %}">
<table> <table>
{% for key, value in result.items() %} {% for key, value in result.items() %}
{% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %} {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %}

View File

@ -1,4 +1,4 @@
<div class="result {{ result.class }}"> <div class="result {{ result.class }}{% for e in result.engines %} {{ e }}{% endfor %}">
{% if "icon_"~result.engine~".ico" in favicons %} {% if "icon_"~result.engine~".ico" in favicons %}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" /> <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />

View File

@ -1,4 +1,4 @@
<div class="result torrent_result"> <div class="result torrent_result{% for e in result.engines %} {{ e }}{% endfor %}">
{% if "icon_"~result.engine~".ico" in favicons %} {% if "icon_"~result.engine~".ico" in favicons %}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" /> <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
{% endif %} {% endif %}

View File

@ -1,4 +1,4 @@
<div class="result"> <div class="result{% for e in result.engines %} {{ e }}{% endfor %}">
{% if "icon_"~result.engine~".ico" in favicons %} {% if "icon_"~result.engine~".ico" in favicons %}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" /> <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
{% endif %} {% endif %}

View File

@ -20,7 +20,7 @@
<link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/> <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
{% endblock %} {% endblock %}
</head> </head>
<body> <body class="{{ endpoint }}_endpoint" >
<div id="container"> <div id="container">
{% block content %} {% block content %}
{% endblock %} {% endblock %}

View File

@ -95,6 +95,7 @@
<table> <table>
<tr> <tr>
<th>{{ _('Engine name') }}</th> <th>{{ _('Engine name') }}</th>
<th>{{ _('Shortcut') }}</th>
<th>{{ _('Category') }}</th> <th>{{ _('Category') }}</th>
<th>{{ _('Allow') }} / {{ _('Block') }}</th> <th>{{ _('Allow') }} / {{ _('Block') }}</th>
</tr> </tr>
@ -103,7 +104,8 @@
{% if not search_engine.private %} {% if not search_engine.private %}
<tr> <tr>
<td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td> <td>{{ search_engine.name }}</td>
<td>{{ shortcuts[search_engine.name] }}</td>
<td>{{ _(categ) }}</td> <td>{{ _(categ) }}</td>
<td class="engine_checkbox"> <td class="engine_checkbox">
<input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} /> <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />

View File

@ -1,4 +1,4 @@
<div class="result {{ result.class }}"> <div class="result {{ result.class }}{% for e in result.engines %} {{ e }}{% endfor %}">
<h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3> <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
<p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a></p> <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a></p>
{% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %} {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}

View File

@ -1,4 +1,4 @@
<div class="result {{ result.class }}"> <div class="result {{ result.class }}{% for e in result.engines %} {{ e }}{% endfor %}">
<h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3> <h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
<p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a> <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a>
{% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p> {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>

View File

@ -1,4 +1,4 @@
<div class="image_result"> <div class="image_result{% for e in result.engines %} {{ e }}{% endfor %}">
<p> <p>
<a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a> <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a>
<span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span> <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span>

View File

@ -1,4 +1,4 @@
<table class="result-table"> <table class="result-table{% for e in result.engines %} {{ e }}{% endfor %}">
{% for key, value in result.items() %} {% for key, value in result.items() %}
{% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %} {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %}
{% continue %} {% continue %}

View File

@ -1,4 +1,4 @@
<div class="result {{ result.class }}"> <div class="result {{ result.class }}{% for e in result.engines %} {{ e }}{% endfor %}">
{% if "icon_"~result.engine~".ico" in favicons %} {% if "icon_"~result.engine~".ico" in favicons %}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" /> <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />

View File

@ -1,4 +1,4 @@
<div class="result torrent_result"> <div class="result torrent_result{% for e in result.engines %} {{ e }}{% endfor %}">
{% if "icon_"~result.engine~".ico" in favicons %} {% if "icon_"~result.engine~".ico" in favicons %}
<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" /> <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
{% endif %} {% endif %}

View File

@ -1,4 +1,4 @@
<div class="result"> <div class="result{% for e in result.engines %} {{ e }}{% endfor %}">
<h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3> <h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
{% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span><br />{% endif %} {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span><br />{% endif %}
<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a> <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>

View File

@ -47,7 +47,7 @@
</style> </style>
</noscript> </noscript>
</head> </head>
<body> <body class="{{ endpoint }}_endpoint" >
{% include 'oscar/navbar.html' %} {% include 'oscar/navbar.html' %}
<div class="container"> <div class="container">

View File

@ -16,7 +16,11 @@
{%- if attribute.image -%} {%- if attribute.image -%}
<td><img class="img-responsive" src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td> <td><img class="img-responsive" src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td>
{%- else -%} {%- else -%}
<td><bdi>{{ attribute.value }}</bdi></td> {% if attribute.label == 'Instance of' %}
<td><bdi><a href="https://wikidata.org/wiki/{{ attribute.value.id }}">{{ attribute.value.id }}</a></bdi></td>
{% else %}
<td><bdi>{{ attribute.value }}</bdi></td>
{%- endif -%}
{%- endif -%} {%- endif -%}
</tr> </tr>
{% endfor -%} {% endfor -%}

View File

@ -72,6 +72,8 @@
</form> </form>
{% endfor %} {% endfor %}
<div class="clearfix"></div> <div class="clearfix"></div>
<br /><label><a href="{{ search_url() }}&amp;format=rss">{{ _('RSS subscription') }}</a></label>
<div class="clearfix"></div>
</div> </div>
</div> </div>
</div><!-- /#sidebar_results --> </div><!-- /#sidebar_results -->
@ -100,7 +102,7 @@
{%- endif %} {%- endif %}
{% for result in results -%} {% for result in results -%}
<div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}"> <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}{% for e in result.engines %} {{ e }}{% endfor %}">
{%- set index = loop.index -%} {%- set index = loop.index -%}
{%- if result.template -%} {%- if result.template -%}
{% include get_result_template('oscar', result['template']) %} {% include get_result_template('oscar', result['template']) %}

View File

@ -32,7 +32,7 @@
{% endblock %} {% endblock %}
<link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" /> <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" />
</head> </head>
<body> <body class="{{ endpoint }}_endpoint" >
<main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}"> <main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}">
{% if errors %} {% if errors %}
<div class="dialog-error" role="alert"> <div class="dialog-error" role="alert">

View File

@ -26,7 +26,7 @@
<!-- Draw result header --> <!-- Draw result header -->
{% macro result_header(result, favicons, image_proxify) -%} {% macro result_header(result, favicons, image_proxify) -%}
<article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}"> <article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}{% for e in result.engines %} {{ e }}{% endfor %}">
{%- if result.img_src %}{{ result_open_link(result.url) }}<img class="image" src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" class="image" />{{ result_close_link() }}{% endif -%} {%- if result.img_src %}{{ result_open_link(result.url) }}<img class="image" src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" class="image" />{{ result_close_link() }}{% endif -%}
{%- if result.thumbnail %}{{ result_open_link(result.url) }}<img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/>{{ result_close_link() }}{% endif -%} {%- if result.thumbnail %}{{ result_open_link(result.url) }}<img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/>{{ result_close_link() }}{% endif -%}
<h3>{{ result_link(result.url, result.title|safe) }}</h3> <h3>{{ result_link(result.url, result.title|safe) }}</h3>

View File

@ -355,17 +355,12 @@ def render(template_name, override_theme=None, **kwargs):
if (engine_name, category) not in disabled_engines) if (engine_name, category) not in disabled_engines)
if 'categories' not in kwargs: if 'categories' not in kwargs:
kwargs['categories'] = ['general'] kwargs['categories'] = [x for x in
kwargs['categories'].extend(x for x in _get_ordered_categories()
sorted(categories.keys()) if x in enabled_categories]
if x != 'general'
and x in enabled_categories)
if 'all_categories' not in kwargs: if 'all_categories' not in kwargs:
kwargs['all_categories'] = ['general'] kwargs['all_categories'] = _get_ordered_categories()
kwargs['all_categories'].extend(x for x in
sorted(categories.keys())
if x != 'general')
if 'selected_categories' not in kwargs: if 'selected_categories' not in kwargs:
kwargs['selected_categories'] = [] kwargs['selected_categories'] = []
@ -430,6 +425,7 @@ def render(template_name, override_theme=None, **kwargs):
kwargs['brand'] = brand kwargs['brand'] = brand
kwargs['scripts'] = set() kwargs['scripts'] = set()
kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint
for plugin in request.user_plugins: for plugin in request.user_plugins:
for script in plugin.js_dependencies: for script in plugin.js_dependencies:
kwargs['scripts'].add(script) kwargs['scripts'].add(script)
@ -443,6 +439,17 @@ def render(template_name, override_theme=None, **kwargs):
'{}/{}'.format(kwargs['theme'], template_name), **kwargs) '{}/{}'.format(kwargs['theme'], template_name), **kwargs)
def _get_ordered_categories():
ordered_categories = []
if 'categories_order' not in settings['ui']:
ordered_categories = ['general']
ordered_categories.extend(x for x in sorted(categories.keys()) if x != 'general')
return ordered_categories
ordered_categories = settings['ui']['categories_order']
ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories)
return ordered_categories
@app.before_request @app.before_request
def pre_request(): def pre_request():
request.start_time = time() request.start_time = time()