From 763785e7771b478be177abf8a2a47ef9c2462f6c Mon Sep 17 00:00:00 2001 From: Johnny Kalajdzic Date: Mon, 14 May 2018 18:15:10 +0200 Subject: [PATCH 001/146] Initial commit --- .gitignore | 1 + README.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3da4d0386..b622a2614 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ setup.cfg node_modules/ .tx/ +.idea diff --git a/README.rst b/README.rst index 35d14d1b4..783a88c17 100644 --- a/README.rst +++ b/README.rst @@ -18,7 +18,7 @@ Installation ~~~~~~~~~~~~ - clone source: - ``git clone https://github.com/asciimoo/searx.git && cd searx`` + ``git clone hhttps://gitlab.eelo.io/Johnny/my-spot.git && cd my-spot`` - install dependencies: ``./manage.sh update_packages`` - edit your `settings.yml `__ -- GitLab From 96cbb946c4c2fc99cbd0b4c3617fa847835c091c Mon Sep 17 00:00:00 2001 From: Johnny Kalajdzic Date: Mon, 14 May 2018 21:26:26 +0200 Subject: [PATCH 002/146] Add ten images in results in category "general" --- searx/templates/oscar/results.html | 11 ++ searx/webapp.py | 190 +++++++++++------------------ 2 files changed, 82 insertions(+), 119 deletions(-) diff --git a/searx/templates/oscar/results.html b/searx/templates/oscar/results.html index ee1052dba..1bca1c847 100644 --- a/searx/templates/oscar/results.html +++ b/searx/templates/oscar/results.html @@ -36,6 +36,17 @@ {% endfor %} {% endif %} + {% for result in results_image %} +
+ {% set index = loop.index %} + {% if result.template %} + {% include get_result_template('oscar', result['template']) %} + {% else %} + {% include 'oscar/result_templates/default.html' %} + {% endif %} +
+ {% endfor %} + {% for result in results %}
{% set index = loop.index %} diff --git a/searx/webapp.py b/searx/webapp.py index 7145caca9..63f22667e 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -16,10 +16,12 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. (C) 2013- by Adam Tauber, ''' +from searx.results import ResultContainer if __name__ == '__main__': from sys import path from os.path import realpath, dirname + path.append(realpath(dirname(realpath(__file__)) + '/../')) import hashlib @@ -31,6 +33,7 @@ import sys import requests from searx import logger + logger = logger.getChild('webapp') try: @@ -40,6 +43,7 @@ try: except: logger.critical("cannot import dependency: pygments") from sys import exit + exit(1) from cgi import escape from datetime import datetime, timedelta @@ -63,7 +67,7 @@ from searx.utils import ( from searx.version import VERSION_STRING from searx.languages import language_codes as languages from searx.search import SearchWithPlugins, get_search_query_from_webapp -from searx.query import RawTextQuery +from searx.query import RawTextQuery, SearchQuery from searx.autocomplete import searx_bang, backends as autocomplete_backends from searx.plugins import plugins from searx.plugins.oa_doi_rewrite import get_doi_resolver @@ -85,7 +89,6 @@ try: except: from io import StringIO - if sys.version_info[0] == 3: unicode = str PY3 = True @@ -94,6 +97,7 @@ else: # serve pages with HTTP/1.1 from werkzeug.serving import WSGIRequestHandler + WSGIRequestHandler.protocol_version = "HTTP/{}".format(settings['server'].get('http_protocol_version', '1.0')) # about static @@ -126,8 +130,8 @@ app.jinja_env.lstrip_blocks = True app.secret_key = settings['server']['secret_key'] if not searx_debug \ - or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \ - or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None: + or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \ + or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None: initialize_engines(settings['engines']) babel = Babel(app) @@ -157,12 +161,12 @@ def get_locale(): if request.preferences.get_value('locale') != '': locale = request.preferences.get_value('locale') - if 'locale' in request.args\ - and request.args['locale'] in settings['locales']: + if 'locale' in request.args \ + and request.args['locale'] in settings['locales']: locale = request.args['locale'] - if 'locale' in request.form\ - and request.form['locale'] in settings['locales']: + if 'locale' in request.form \ + and request.form['locale'] in settings['locales']: locale = request.form['locale'] if locale == 'zh_TW': @@ -195,9 +199,8 @@ def code_highlighter(codelines, language=None): line_code_start = line # new codeblock is detected - if last_line is not None and\ - last_line + 1 != line: - + if last_line is not None and \ + last_line + 1 != line: # highlight last codepart formatter = HtmlFormatter(linenos='inline', linenostart=line_code_start) @@ -288,7 +291,6 @@ def proxify(url): def image_proxify(url): - if url.startswith('//'): url = 'https:' + url @@ -433,29 +435,33 @@ def pre_request(): or plugin.id in allowed_plugins): request.user_plugins.append(plugin) +def config_results(results, query): + for result in results: + if 'content' in result and result['content']: + result['content'] = highlight_content(escape(result['content'][:1024]), query) + result['title'] = highlight_content(escape(result['title'] or u''), query) + result['pretty_url'] = prettify_url(result['url']) -def index_error(output_format, error_message): - if output_format == 'json': - return Response(json.dumps({'error': error_message}), - mimetype='application/json') - elif output_format == 'csv': - response = Response('', mimetype='application/csv') - cont_disp = 'attachment;Filename=searx.csv' - response.headers.add('Content-Disposition', cont_disp) - return response - elif output_format == 'rss': - response_rss = render( - 'opensearch_response_rss.xml', - results=[], - q=request.form['q'] if 'q' in request.form else '', - number_of_results=0, - base_url=get_base_url(), - error_message=error_message, - override_theme='__common__', - ) - return Response(response_rss, mimetype='text/xml') - else: - # html + # TODO, check if timezone is calculated right + if 'publishedDate' in result: + try: # test if publishedDate >= 1900 (datetime module bug) + result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z') + except ValueError: + result['publishedDate'] = None + else: + if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1): + timedifference = datetime.now() - result['publishedDate'].replace(tzinfo=None) + minutes = int((timedifference.seconds / 60) % 60) + hours = int(timedifference.seconds / 60 / 60) + if hours == 0: + result['publishedDate'] = gettext(u'{minutes} minute(s) ago').format(minutes=minutes) + else: + result['publishedDate'] = gettext(u'{hours} hour(s), {minutes} minute(s) ago').format( + hours=hours, minutes=minutes) # noqa + else: + result['publishedDate'] = format_date(result['publishedDate']) + +def index_error(): request.errors.append(gettext('search error')) return render( 'index.html', @@ -465,30 +471,19 @@ def index_error(output_format, error_message): @app.route('/search', methods=['GET', 'POST']) @app.route('/', methods=['GET', 'POST']) def index(): - """Render index page. - - Supported outputs: html, json, csv, rss. - """ - - # output_format - output_format = request.form.get('format', 'html') - if output_format not in ['html', 'csv', 'json', 'rss']: - output_format = 'html' - # check if there is query if request.form.get('q') is None: - if output_format == 'html': - return render( - 'index.html', - ) - else: - return index_error(output_format, 'No query'), 400 + return render( + 'index.html', + ) # search search_query = None result_container = None + results_images = [] try: search_query = get_search_query_from_webapp(request.preferences, request.form) + # search = Search(search_query) # without plugins search = SearchWithPlugins(search_query, request.user_plugins, request) result_container = search.search() @@ -498,9 +493,27 @@ def index(): # is it an invalid input parameter or something else ? if (issubclass(e.__class__, SearxParameterException)): - return index_error(output_format, e.message), 400 + return index_error(), 400 else: - return index_error(output_format, gettext('search error')), 500 + return index_error(), 500 + + # serarch images + if search_query.categories == ['general'] and search_query.pageno == 1: + search_images_engines = [] + disabled_engines = request.preferences.engines.get_disabled() + for engine in categories['images']: + if (engine.name, 'images') not in disabled_engines: + search_images_engines.append({'category': 'images', 'name': engine.name}) + images_search_query = SearchQuery(search_query.query, search_images_engines, ['images'], search_query.lang, + search_query.safesearch, 1, search_query.time_range) + results_images_big = SearchWithPlugins(images_search_query, request.user_plugins, + request).search().get_ordered_results() + to_ten = 0 + for image in results_images_big: + to_ten+=1 + if to_ten > 10: + break + results_images.append(image) # results results = result_container.get_ordered_results() @@ -512,70 +525,8 @@ def index(): advanced_search = request.form.get('advanced_search', None) # output - for result in results: - if output_format == 'html': - if 'content' in result and result['content']: - result['content'] = highlight_content(escape(result['content'][:1024]), search_query.query) - result['title'] = highlight_content(escape(result['title'] or u''), search_query.query) - else: - if result.get('content'): - result['content'] = html_to_text(result['content']).strip() - # removing html content and whitespace duplications - result['title'] = ' '.join(html_to_text(result['title']).strip().split()) - - result['pretty_url'] = prettify_url(result['url']) - - # TODO, check if timezone is calculated right - if 'publishedDate' in result: - try: # test if publishedDate >= 1900 (datetime module bug) - result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z') - except ValueError: - result['publishedDate'] = None - else: - if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1): - timedifference = datetime.now() - result['publishedDate'].replace(tzinfo=None) - minutes = int((timedifference.seconds / 60) % 60) - hours = int(timedifference.seconds / 60 / 60) - if hours == 0: - result['publishedDate'] = gettext(u'{minutes} minute(s) ago').format(minutes=minutes) - else: - result['publishedDate'] = gettext(u'{hours} hour(s), {minutes} minute(s) ago').format(hours=hours, minutes=minutes) # noqa - else: - result['publishedDate'] = format_date(result['publishedDate']) - - if output_format == 'json': - return Response(json.dumps({'query': search_query.query.decode('utf-8'), - 'number_of_results': number_of_results, - 'results': results, - 'answers': list(result_container.answers), - 'corrections': list(result_container.corrections), - 'infoboxes': result_container.infoboxes, - 'suggestions': list(result_container.suggestions), - 'unresponsive_engines': list(result_container.unresponsive_engines)}, - default=lambda item: list(item) if isinstance(item, set) else item), - mimetype='application/json') - elif output_format == 'csv': - csv = UnicodeWriter(StringIO()) - keys = ('title', 'url', 'content', 'host', 'engine', 'score') - csv.writerow(keys) - for row in results: - row['host'] = row['parsed_url'].netloc - csv.writerow([row.get(key, '') for key in keys]) - csv.stream.seek(0) - response = Response(csv.stream.read(), mimetype='application/csv') - cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query) - response.headers.add('Content-Disposition', cont_disp) - return response - elif output_format == 'rss': - response_rss = render( - 'opensearch_response_rss.xml', - results=results, - q=request.form['q'], - number_of_results=number_of_results, - base_url=get_base_url(), - override_theme='__common__', - ) - return Response(response_rss, mimetype='text/xml') + config_results(results, search_query.query) + config_results(results_images, search_query.query) return render( 'results.html', @@ -595,6 +546,7 @@ def index(): current_language=match_language(search_query.lang, LANGUAGE_CODES, fallback=settings['search']['language']), + results_image=results_images, base_url=get_base_url(), theme=get_current_theme_name(), favicons=global_favicons[themes.index(get_current_theme_name())] @@ -846,9 +798,9 @@ def config(): 'paging': engine.paging, 'language_support': engine.language_support, 'supported_languages': - engine.supported_languages.keys() - if isinstance(engine.supported_languages, dict) - else engine.supported_languages, + engine.supported_languages.keys() + if isinstance(engine.supported_languages, dict) + else engine.supported_languages, 'safesearch': engine.safesearch, 'time_range_support': engine.time_range_support, 'timeout': engine.timeout} -- GitLab From f0fe98db1396c15c53e5e265a29da01bb854c6cf Mon Sep 17 00:00:00 2001 From: "Daniel J. Ramirez" Date: Tue, 15 May 2018 21:58:18 -0500 Subject: [PATCH 003/146] First steps towards the eelo theme. Removed bootstrap dependency, there are many many things, but it is worth it. --- .gitignore | 5 +- searx/settings.yml | 6 +- searx/static/themes/eelo/README.rst | 17 + searx/static/themes/eelo/css/eelo.css | 348 ++++++++++++++++++ searx/static/themes/eelo/css/eelo.min.css | Bin 0 -> 5191 bytes searx/static/themes/eelo/css/leaflet.min.css | Bin 0 -> 8027 bytes searx/static/themes/eelo/gruntfile.js | 94 +++++ searx/static/themes/eelo/img/favicon.png | Bin 0 -> 2573 bytes searx/static/themes/eelo/img/icons/1337x.png | Bin 0 -> 1229 bytes searx/static/themes/eelo/img/icons/README.md | 2 + searx/static/themes/eelo/img/icons/amazon.png | Bin 0 -> 4129 bytes .../themes/eelo/img/icons/dailymotion.png | Bin 0 -> 3963 bytes .../themes/eelo/img/icons/deviantart.png | Bin 0 -> 3790 bytes .../static/themes/eelo/img/icons/facebook.png | Bin 0 -> 3685 bytes searx/static/themes/eelo/img/icons/flickr.png | Bin 0 -> 3751 bytes searx/static/themes/eelo/img/icons/github.png | Bin 0 -> 4315 bytes .../static/themes/eelo/img/icons/kickass.png | Bin 0 -> 4527 bytes .../themes/eelo/img/icons/openstreetmap.png | Bin 0 -> 5184 bytes searx/static/themes/eelo/img/icons/photon.png | Bin 0 -> 4177 bytes .../themes/eelo/img/icons/searchcode code.png | Bin 0 -> 4241 bytes .../themes/eelo/img/icons/searchcode doc.png | Bin 0 -> 4241 bytes .../themes/eelo/img/icons/soundcloud.png | Bin 0 -> 3820 bytes .../themes/eelo/img/icons/stackoverflow.png | Bin 0 -> 3990 bytes .../static/themes/eelo/img/icons/twitter.png | Bin 0 -> 3790 bytes searx/static/themes/eelo/img/icons/vimeo.png | Bin 0 -> 3894 bytes .../themes/eelo/img/icons/wikipedia.png | Bin 0 -> 1028 bytes .../static/themes/eelo/img/icons/youtube.png | Bin 0 -> 4137 bytes searx/static/themes/eelo/img/loader.gif | Bin 0 -> 8314 bytes searx/static/themes/eelo/img/logo.png | Bin 0 -> 1856 bytes searx/static/themes/eelo/img/logo.svg | Bin 0 -> 19480 bytes searx/static/themes/eelo/img/logo_searx_a.png | Bin 0 -> 16463 bytes .../static/themes/eelo/img/logo_searx_a_n.png | Bin 0 -> 9704 bytes .../static/themes/eelo/img/map/layers-2x.png | Bin 0 -> 1763 bytes searx/static/themes/eelo/img/map/layers.png | Bin 0 -> 1142 bytes .../eelo/img/map/marker-icon-2x-green.png | Bin 0 -> 3753 bytes .../eelo/img/map/marker-icon-2x-orange.png | Bin 0 -> 3691 bytes .../eelo/img/map/marker-icon-2x-red.png | Bin 0 -> 3692 bytes .../themes/eelo/img/map/marker-icon-2x.png | Bin 0 -> 4033 bytes .../themes/eelo/img/map/marker-icon-green.png | Bin 0 -> 1696 bytes .../eelo/img/map/marker-icon-orange.png | Bin 0 -> 1714 bytes .../themes/eelo/img/map/marker-icon-red.png | Bin 0 -> 1690 bytes .../themes/eelo/img/map/marker-icon.png | Bin 0 -> 1747 bytes .../themes/eelo/img/map/marker-shadow.png | Bin 0 -> 797 bytes searx/static/themes/eelo/img/searx_logo.png | Bin 0 -> 10611 bytes .../themes/eelo/js/leaflet-0.7.3.min.js | Bin 0 -> 125410 bytes searx/static/themes/eelo/js/searx.min.js | Bin 0 -> 4585 bytes .../eelo/js/searx_src/00_requirejs_config.js | 23 ++ .../themes/eelo/js/searx_src/autocompleter.js | 37 ++ .../eelo/js/searx_src/element_modifiers.js | 99 +++++ .../themes/eelo/js/searx_src/leaflet_map.js | 167 +++++++++ searx/static/themes/eelo/less/eelo/base.less | 99 +++++ searx/static/themes/eelo/less/eelo/eelo.less | 8 + .../static/themes/eelo/less/eelo/footer.less | 9 + .../static/themes/eelo/less/eelo/layout.less | 46 +++ .../static/themes/eelo/less/eelo/navbar.less | 25 ++ .../themes/eelo/less/eelo/preferences.less | 85 +++++ .../static/themes/eelo/less/eelo/results.less | 68 ++++ .../static/themes/eelo/less/eelo/search.less | 80 ++++ .../themes/eelo/less/eelo/variables.less | 32 ++ searx/static/themes/eelo/package.json | 16 + searx/templates/eelo/404.html | 9 + searx/templates/eelo/about.html | 5 + searx/templates/eelo/advanced.html | 16 + searx/templates/eelo/base.html | 116 ++++++ searx/templates/eelo/categories.html | 6 + searx/templates/eelo/icons.html | 7 + searx/templates/eelo/index.html | 7 + searx/templates/eelo/infobox.html | 36 ++ searx/templates/eelo/languages.html | 11 + searx/templates/eelo/macros.html | 85 +++++ searx/templates/eelo/messages/first_time.html | 8 + searx/templates/eelo/messages/no_cookies.html | 5 + .../eelo/messages/no_data_available.html | 5 + searx/templates/eelo/messages/no_results.html | 17 + .../messages/save_settings_successfull.html | 9 + .../templates/eelo/messages/unknow_error.html | 9 + searx/templates/eelo/navbar.html | 11 + searx/templates/eelo/preferences.html | 221 +++++++++++ .../templates/eelo/result_templates/code.html | 18 + .../eelo/result_templates/default.html | 31 ++ .../eelo/result_templates/images.html | 39 ++ .../templates/eelo/result_templates/map.html | 72 ++++ .../eelo/result_templates/torrent.html | 25 ++ .../eelo/result_templates/videos.html | 27 ++ searx/templates/eelo/results.html | 115 ++++++ searx/templates/eelo/search.html | 3 + searx/templates/eelo/search_full.html | 11 + searx/templates/eelo/stats.html | 33 ++ searx/templates/eelo/time-range.html | 17 + searx/webapp.py | 53 ++- 90 files changed, 2281 insertions(+), 12 deletions(-) create mode 100644 searx/static/themes/eelo/README.rst create mode 100644 searx/static/themes/eelo/css/eelo.css create mode 100644 searx/static/themes/eelo/css/eelo.min.css create mode 100644 searx/static/themes/eelo/css/leaflet.min.css create mode 100644 searx/static/themes/eelo/gruntfile.js create mode 100644 searx/static/themes/eelo/img/favicon.png create mode 100644 searx/static/themes/eelo/img/icons/1337x.png create mode 100644 searx/static/themes/eelo/img/icons/README.md create mode 100644 searx/static/themes/eelo/img/icons/amazon.png create mode 100644 searx/static/themes/eelo/img/icons/dailymotion.png create mode 100644 searx/static/themes/eelo/img/icons/deviantart.png create mode 100644 searx/static/themes/eelo/img/icons/facebook.png create mode 100644 searx/static/themes/eelo/img/icons/flickr.png create mode 100644 searx/static/themes/eelo/img/icons/github.png create mode 100644 searx/static/themes/eelo/img/icons/kickass.png create mode 100644 searx/static/themes/eelo/img/icons/openstreetmap.png create mode 100644 searx/static/themes/eelo/img/icons/photon.png create mode 100644 searx/static/themes/eelo/img/icons/searchcode code.png create mode 100644 searx/static/themes/eelo/img/icons/searchcode doc.png create mode 100644 searx/static/themes/eelo/img/icons/soundcloud.png create mode 100644 searx/static/themes/eelo/img/icons/stackoverflow.png create mode 100644 searx/static/themes/eelo/img/icons/twitter.png create mode 100644 searx/static/themes/eelo/img/icons/vimeo.png create mode 100644 searx/static/themes/eelo/img/icons/wikipedia.png create mode 100644 searx/static/themes/eelo/img/icons/youtube.png create mode 100644 searx/static/themes/eelo/img/loader.gif create mode 100644 searx/static/themes/eelo/img/logo.png create mode 100644 searx/static/themes/eelo/img/logo.svg create mode 100644 searx/static/themes/eelo/img/logo_searx_a.png create mode 100644 searx/static/themes/eelo/img/logo_searx_a_n.png create mode 100644 searx/static/themes/eelo/img/map/layers-2x.png create mode 100644 searx/static/themes/eelo/img/map/layers.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-2x-green.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-2x-orange.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-2x-red.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-2x.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-green.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-orange.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon-red.png create mode 100644 searx/static/themes/eelo/img/map/marker-icon.png create mode 100644 searx/static/themes/eelo/img/map/marker-shadow.png create mode 100644 searx/static/themes/eelo/img/searx_logo.png create mode 100644 searx/static/themes/eelo/js/leaflet-0.7.3.min.js create mode 100644 searx/static/themes/eelo/js/searx.min.js create mode 100644 searx/static/themes/eelo/js/searx_src/00_requirejs_config.js create mode 100644 searx/static/themes/eelo/js/searx_src/autocompleter.js create mode 100644 searx/static/themes/eelo/js/searx_src/element_modifiers.js create mode 100644 searx/static/themes/eelo/js/searx_src/leaflet_map.js create mode 100644 searx/static/themes/eelo/less/eelo/base.less create mode 100644 searx/static/themes/eelo/less/eelo/eelo.less create mode 100644 searx/static/themes/eelo/less/eelo/footer.less create mode 100644 searx/static/themes/eelo/less/eelo/layout.less create mode 100644 searx/static/themes/eelo/less/eelo/navbar.less create mode 100644 searx/static/themes/eelo/less/eelo/preferences.less create mode 100644 searx/static/themes/eelo/less/eelo/results.less create mode 100644 searx/static/themes/eelo/less/eelo/search.less create mode 100644 searx/static/themes/eelo/less/eelo/variables.less create mode 100644 searx/static/themes/eelo/package.json create mode 100644 searx/templates/eelo/404.html create mode 100644 searx/templates/eelo/about.html create mode 100644 searx/templates/eelo/advanced.html create mode 100644 searx/templates/eelo/base.html create mode 100644 searx/templates/eelo/categories.html create mode 100644 searx/templates/eelo/icons.html create mode 100644 searx/templates/eelo/index.html create mode 100644 searx/templates/eelo/infobox.html create mode 100644 searx/templates/eelo/languages.html create mode 100644 searx/templates/eelo/macros.html create mode 100644 searx/templates/eelo/messages/first_time.html create mode 100644 searx/templates/eelo/messages/no_cookies.html create mode 100644 searx/templates/eelo/messages/no_data_available.html create mode 100644 searx/templates/eelo/messages/no_results.html create mode 100644 searx/templates/eelo/messages/save_settings_successfull.html create mode 100644 searx/templates/eelo/messages/unknow_error.html create mode 100644 searx/templates/eelo/navbar.html create mode 100644 searx/templates/eelo/preferences.html create mode 100644 searx/templates/eelo/result_templates/code.html create mode 100644 searx/templates/eelo/result_templates/default.html create mode 100644 searx/templates/eelo/result_templates/images.html create mode 100644 searx/templates/eelo/result_templates/map.html create mode 100644 searx/templates/eelo/result_templates/torrent.html create mode 100644 searx/templates/eelo/result_templates/videos.html create mode 100644 searx/templates/eelo/results.html create mode 100644 searx/templates/eelo/search.html create mode 100644 searx/templates/eelo/search_full.html create mode 100644 searx/templates/eelo/stats.html create mode 100644 searx/templates/eelo/time-range.html diff --git a/.gitignore b/.gitignore index b622a2614..b4260dd10 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,9 @@ setup.cfg *~ node_modules/ +yarn.lock +yarn-error.log .tx/ -.idea + +.vscode diff --git a/searx/settings.yml b/searx/settings.yml index 988076f8a..0d33a8166 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -1,6 +1,6 @@ general: - debug : False # Debug mode, only for development - instance_name : "searx" # displayed name + debug : debug # Debug mode, only for development + instance_name : "eelo" # displayed name search: safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict @@ -18,7 +18,7 @@ server: ui: static_path : "" # Custom static path - leave it blank if you didn't change templates_path : "" # Custom templates path - leave it blank if you didn't change - default_theme : oscar # ui theme + default_theme : eelo # ui theme default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section # searx supports result proxification using an external service: https://github.com/asciimoo/morty diff --git a/searx/static/themes/eelo/README.rst b/searx/static/themes/eelo/README.rst new file mode 100644 index 000000000..e7daa8719 --- /dev/null +++ b/searx/static/themes/eelo/README.rst @@ -0,0 +1,17 @@ +install dependencies +~~~~~~~~~~~~~~~~~~~~ + +run this command in the directory ``searx/static/themes/oscar`` + +``npm install`` + +compile sources +~~~~~~~~~~~~~~~ + +run this command in the directory ``searx/static/themes/oscar`` + +``grunt`` + +or in the root directory: + +``make grunt`` diff --git a/searx/static/themes/eelo/css/eelo.css b/searx/static/themes/eelo/css/eelo.css new file mode 100644 index 000000000..02a6c3476 --- /dev/null +++ b/searx/static/themes/eelo/css/eelo.css @@ -0,0 +1,348 @@ +#pagination { + display: flex; + justify-content: space-between; +} +.container { + max-width: 1100px; + padding-left: 16px; + padding-right: 16px; + display: flex; + justify-content: space-between; +} +.container > :first-child { + max-width: 600px; + width: 600px; +} +.container > :last-child:not(:first-child) { + max-width: 400px; + width: 400px; +} +#index { + max-width: 600px; + margin: auto; +} +#index img { + width: 300px; + display: block; + margin: auto; + margin-top: 64px; + margin-bottom: 64px; +} +.inline { + display: flex; + flex-direction: row; +} +.rtl { + flex-direction: row-reverse; +} +html { + position: relative; + min-height: 100%; + color: #60686f; +} +body { + /* Margin bottom by footer height */ + margin: 0px; + padding: 0px; + font-size: 16px; + margin-bottom: 80px; + background-color: white; +} +body, +body * { + font-family: 'Roboto', "Cantarell", Helvetica, Arial, sans-serif; +} +a { + color: #3889f4; +} +input, +select { + box-shadow: none !important; +} +.text-muted { + color: rgba(0, 0, 0, 0.4); +} +.danger, +.btn.danger { + color: #e06572; +} +a, +a:hover, +a:focus, +a:active, +select:hover, +select:focus, +select:active { + outline: none; + text-decoration: none; +} +.btn { + text-transform: uppercase; + padding: 8px 14px; + background-color: transparent; + border: 2px solid rgba(0, 0, 0, 0.2); + border-radius: 8px; + text-align: center; + font-size: 16px; + font-weight: bold; + color: #5c6469; +} +.btn.btn-block, +.block { + display: block; + width: 100%; + box-sizing: border-box; +} +.btn.primary, +input.btn[type="submit"] { + color: #5068dd; +} +.btn.btn-flat { + border: none; + border-radius: 0; +} +.btn.btn-flat:hover { + background-color: transparent; + color: blue; +} +.hidden, +#icons { + display: none; +} +.custom-select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + font-weight: normal; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ +cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn +sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8 +6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0 +ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w +Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb +7jwaAAAAAElFTkSuQmCC) 96% no-repeat; +} +nav { + height: 48px; + display: flex; + align-items: center; + justify-content: space-between; + padding-left: 16px; + padding-right: 16px; + text-transform: capitalize; + margin-bottom: 24px; +} +nav a { + color: #868686; + transition: color 0.2s ease-in-out; + text-decoration: none; +} +nav a:hover { + text-decoration: none; + color: #5068dd; +} +#eelo_links > * { + margin-right: 32px; +} +footer { + position: absolute; + bottom: 0; + width: 100%; + height: auto; + text-align: center; + color: #c1c1c1; + padding-bottom: 16px; +} +#q { + border: 2px solid rgba(0, 0, 0, 0.3); + border-radius: 50px; + height: 42px; + line-height: 42px; + width: 100%; + padding-left: 16px; + font-size: 16px; +} +#search_input_container { + position: relative; + display: flex; + align-items: center; +} +#search_input_container button[type="submit"] { + position: absolute; + right: 10px; + height: 24px; + border: none; + background: none; +} +#search_input_container .icon { + width: 20px; +} +#search_params { + display: flex; + justify-content: space-between; + font-size: 11px; + margin-bottom: 16px; + margin-top: 16px; +} +.search_categories, +#categories { + text-transform: capitalize; + display: flex; + flex-wrap: wrap; + flex-flow: row wrap; + align-content: stretch; + align-items: center; +} +.search_categories label, +#categories label { + flex-grow: 1; + flex-basis: auto; + font-size: 14px; + font-weight: normal; + margin-right: 16px; +} +.search_categories input[type="checkbox"]:checked + label, +#categories input[type="checkbox"]:checked + label { + color: #5068dd; + font-weight: bold; +} +#logo_link { + position: absolute; + left: 6px; +} +#logo, +#logo_link { + height: 32px; +} +.inline-search #q { + padding-left: 56px; +} +#main-logo { + margin-top: 12vh; + margin-bottom: 25px; +} +#main-logo > img { + max-width: 250px; + width: 80%; +} +.result.result-default { + margin-bottom: 32px; +} +.result_header { + margin-bottom: 8px; +} +.result_header .favicon { + width: 16px; + height: 16px; +} +.result-content { + margin-bottom: 2px; +} +.external-link { + color: #39a441; +} +.infobox { + border-radius: 8px; +} +.infobox .panel-heading { + background-color: transparent; + border: none; + padding-top: 16px; + padding-bottom: 0px; +} +.infobox img { + margin-top: 18px; + width: 100%; +} +.infobox .panel-title { + font-size: 22px; + color: #5c6469; +} +.extras { + margin-top: 48px; +} +.result-images { + display: inline; +} +#default_images_container { + display: flex; + flex-wrap: wrap; + align-items: flex-end; +} +#default_images_container > .result.result-images { + flex: 20%; +} +.img-thumbnail { + border: none; +} +#preferences h1 { + margin-bottom: 32px; +} +#preferences .nav-tabs { + margin-bottom: 32px; +} +#preferences .options { + margin-top: 32px; +} +#preferences label { + color: #5c6469; +} +#preferences div.row.form-group { + margin-bottom: 24px; +} +#preferences div.tab-content { + margin-bottom: 48px; +} +#preferences #notice { + margin-bottom: 32px; +} +#preferences .tab-content { + display: none; +} +#preferences input.tab-radio[type="radio"] { + display: none; +} +#preferences input.tab-radio[type="radio"]:checked + .tab-content { + display: block; +} +#preferences .preference { + margin-bottom: 16px; +} +#preferences .preference.inline { + justify-content: space-between; +} +#preferences #tabs { + margin-bottom: 32px; +} +#preferences #tabs > * { + margin-right: 32px; +} +#preferences #controls { + display: flex; + flex-direction: column-reverse; + justify-content: flex-end; +} +#preferences section { + margin-bottom: 32px; +} +#preferences ul > li { + margin-bottom: 8px; +} +#preferences fieldset { + border: none; + padding: 0px; +} +#preferences #cookies_list .cookie-value { + word-wrap: break-word; +} +#preferences #action_buttons { + margin-top: 48px; +} +#preferences #action_buttons > div { + margin-bottom: 24px; +} +#preferences #action_buttons > div > * { + margin-bottom: 8px; +} diff --git a/searx/static/themes/eelo/css/eelo.min.css b/searx/static/themes/eelo/css/eelo.min.css new file mode 100644 index 0000000000000000000000000000000000000000..02f9cc4a9e243206b2d23153d27676f78e51fd28 GIT binary patch literal 5191 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/gruntfile.js b/searx/static/themes/eelo/gruntfile.js new file mode 100644 index 000000000..bfcdb1aa2 --- /dev/null +++ b/searx/static/themes/eelo/gruntfile.js @@ -0,0 +1,94 @@ +module.exports = function(grunt) { + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + concat: { + options: { + separator: ';' + }, + dist: { + src: ['js/searx_src/*.js'], + dest: 'js/searx.js' + } + }, + uglify: { + options: { + banner: '/*! eelo/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + }, + dist: { + files: { + 'js/searx.min.js': ['<%= concat.dist.dest %>'] + } + } + }, + jshint: { + files: ['gruntfile.js', 'js/searx_src/*.js'], + options: { + reporterOutput: "", + // options here to override JSHint defaults + globals: { + jQuery: true, + console: true, + module: true, + document: true + } + } + }, + less: { + development: { + options: { + paths: ["less/logicodev", "less/eelo"] + //banner: '/*! less/eelo/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' + }, + files: {"css/logicodev.css": "less/logicodev-dark/oscar.less", + "css/eelo.css": "less/eelo/eelo.less"} + }, + production: { + options: { + paths: ["less/logicodev", "less/eelo"], + //banner: '/*! less/eelo/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n', + cleancss: true + }, + files: {"css/logicodev.min.css": "less/logicodev/oscar.less", + "css/eelo.min.css": "less/eelo/eelo.less"} + }, + /* + // built with ./manage.sh styles + bootstrap: { + options: { + paths: ["less/bootstrap"], + cleancss: true + }, + files: {"css/bootstrap.min.css": "less/bootstrap/bootstrap.less"} + }, + */ + }, + watch: { + scripts: { + files: ['<%= jshint.files %>'], + tasks: ['jshint', 'concat', 'uglify'] + }, + eelo_styles: { + files: ['less/eelo/**/*.less'], + tasks: ['less:development', 'less:production'] + }, + bootstrap_styles: { + files: ['less/bootstrap/**/*.less'], + tasks: ['less:bootstrap'] + } + } + }); + + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-less'); + + grunt.registerTask('test', ['jshint']); + + grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less']); + + grunt.registerTask('styles', ['less']); + +}; diff --git a/searx/static/themes/eelo/img/favicon.png b/searx/static/themes/eelo/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e96a90efdfb53f6de81922e93d0118d674a720 GIT binary patch literal 2573 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/README.md b/searx/static/themes/eelo/img/icons/README.md new file mode 100644 index 000000000..0e3ad1c03 --- /dev/null +++ b/searx/static/themes/eelo/img/icons/README.md @@ -0,0 +1,2 @@ +Source: http://www.iconspedia.com/pack/flat-gradient-social-icons-4384/ +License: Free for non commercial use. diff --git a/searx/static/themes/eelo/img/icons/amazon.png b/searx/static/themes/eelo/img/icons/amazon.png new file mode 100644 index 0000000000000000000000000000000000000000..b4abf7d815518227d114d7edf75965c6e5a543cc GIT binary patch literal 4129 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/dailymotion.png b/searx/static/themes/eelo/img/icons/dailymotion.png new file mode 100644 index 0000000000000000000000000000000000000000..88e4801b6637c1647ba13bc2ff49dacdf2d914d2 GIT binary patch literal 3963 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 VwoJzJEA;>X002ovPDHLkV1jX)b#MRx literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/deviantart.png b/searx/static/themes/eelo/img/icons/deviantart.png new file mode 100644 index 0000000000000000000000000000000000000000..cec53bcea1c8aae035de4b9d9a914bb60abd7228 GIT binary patch literal 3790 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 Eg2eD09{>OV literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/facebook.png b/searx/static/themes/eelo/img/icons/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5a5949359aed0775058fa583d3f7eea88ce4fc GIT binary patch literal 3685 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 R91Z{g002ovPDHLkV1gj}4=n%y literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/github.png b/searx/static/themes/eelo/img/icons/github.png new file mode 100644 index 0000000000000000000000000000000000000000..9463a828a6d8ee61295af42863d6937b8f062005 GIT binary patch literal 4315 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 JPDHLkV1lpRCFcMD literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/kickass.png b/searx/static/themes/eelo/img/icons/kickass.png new file mode 100644 index 0000000000000000000000000000000000000000..567d1039ff8e74b4ef68634cf5d04d80f271aa0d GIT binary patch literal 4527 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 bd~N>^`Vwhdsyj>#00000NkvXXu0mjfi0{r{ literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/searchcode code.png b/searx/static/themes/eelo/img/icons/searchcode code.png new file mode 100644 index 0000000000000000000000000000000000000000..517434af0228ed7f0c39ca1a914504e181c0d1e7 GIT binary patch literal 4241 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/twitter.png b/searx/static/themes/eelo/img/icons/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..f71c1973aae899651c91c0041332a9c2d43631c3 GIT binary patch literal 3790 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/vimeo.png b/searx/static/themes/eelo/img/icons/vimeo.png new file mode 100644 index 0000000000000000000000000000000000000000..0238d24d2487a0931f26da64aec2fceacaa0718c GIT binary patch literal 3894 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 Eg5E+zZ2$lO literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/icons/wikipedia.png b/searx/static/themes/eelo/img/icons/wikipedia.png new file mode 100644 index 0000000000000000000000000000000000000000..844bd57533c84ad9eb89af8e24f63eee3db2ac18 GIT binary patch literal 1028 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 B%Fh4* literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/logo_searx_a.png b/searx/static/themes/eelo/img/logo_searx_a.png new file mode 100644 index 0000000000000000000000000000000000000000..00a42fe5986fab5de1c051a6b5103a371df66c7f GIT binary patch literal 16463 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/logo_searx_a_n.png b/searx/static/themes/eelo/img/logo_searx_a_n.png new file mode 100644 index 0000000000000000000000000000000000000000..5b24aea8c495cc7d87dd234b7f34c6c0579d7842 GIT binary patch literal 9704 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/map/layers.png b/searx/static/themes/eelo/img/map/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..4297fd9ee035ce8063e91e34c6e6629c4c2b22b8 GIT binary patch literal 1142 zcmX9+2~bm46b(gc5TdwYr76w;P8^X%P`e1F#V~~`30obQ4k8L-Ym1N{lCW5|1P}-* z2ni%KIv^v934|p;u!OKAh6J!JA|ybFIzaB_)7N zCbOWRfW=~!m6btQQ&Uq{R|llAu@O)p5cKx;0%>b&8y_DB-qqDbB9R~?kw~OcDUhL| zA-P-*M5$CxOiWBpP6D5vo}QhZ)#-GLi;HHn*3}(U+Dl02N zDu=_VuCC_scp$aDz8<iL$cV^|qbeK8FJb4`H2gr+m))1q9$P5(r|GlTF^{>_`Emk)-AyPontoM`=PL2i4ovz^1`fIE%J zAJhu>Ss#!XpZ1c4o3&mavL3oyVO(AK9$Hg_Pi(SA?C0W&X(LA`;b&C{ZZyTGd)cu@ zM2XJXO~l3E&nPsEh$FZ5hT_+CyuyL{)+dJO)DqfM5|x_t!r$f9Va49HkL4}#H^vgR zj^)3Mj709A5%-=k#kH3Iz49{7l+Sp5{WNyM3+rvk*0OiejpXeF6Q=LCOGb5~?y9MO zs@8!vGWp~B*kgfaZEdB+X?1!PciP+L;r7jICjUnWt44Q+fXN}!l!f1&vp>h78zepK xr0i literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/map/marker-icon-2x-green.png b/searx/static/themes/eelo/img/map/marker-icon-2x-green.png new file mode 100644 index 0000000000000000000000000000000000000000..7446bb031c89e6332c17133db99b3c14552ca237 GIT binary patch literal 3753 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 JPDHLkV1k7n3itp3 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/map/marker-icon-2x-red.png b/searx/static/themes/eelo/img/map/marker-icon-2x-red.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2e197c645f015344f6471c90b8cbd68b0608d7 GIT binary patch literal 3692 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 KMNUMnLSTZ2%@Obb literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/map/marker-icon-2x.png b/searx/static/themes/eelo/img/map/marker-icon-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0015b6495fa458ad39d51cb4b913430016f48d33 GIT binary patch literal 4033 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/map/marker-icon.png b/searx/static/themes/eelo/img/map/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e9f757f515ded172e6f72c3ce55bbe15579649 GIT binary patch literal 1747 zcmV;^1}yoBP)P001cn1^@s6z>|W`000J>NklgF+#9zZY7a#;@J(5X0e&McXK2n7+jhR}<0i-1U5t`>D@ zJSJ*^swjdwq0keUf9!BETXZhVyjqS4&z|?2HdJnOU-HYF_xSyu=XsCkdtVv=(53>u zME@3F*5J;OHwJNJdWK(ivQ??rr&t7M)1yRas=d_yYH>g+p#{( zm+NoyW%|8bNfUkAMrabri(FY#Dqr5%zhZA&e^iALHXiJOFYA7Qt##L_a?_z6SW{&J zVeyp#G&snW>SO{*%d9CGVM}xic~V`MU$)*JU1Nbw2YX?ywi}|VZ4g;$g)p^+DoLHR zZ^Zr$S_=f^oU`+!4K^?NsU;H{;bhhex#H7(!s52U&FJ}OHQf-VvVd?Btj2MhF|zQI z%l~jBr~6T7^_WIHC1>8j&bv`c18g|Z3*l-jgeoml1{oh++Y75JI)RgU>LEY<%)C)X zI2rZ2kb>s^4cZuYeq3!A}DS`X~>Nd;+A$4e;ZwyD<1@2!8$ZKJ3w%!6)+sCALy+bKwyk zqKCS6qEGWmJ)97b-QXY|`<0lS5THkEtGgjE>ojOvuftfM&Ugd-rQg9C+|FdGM)HXs z(IxsA$&r(xg_j^4=hC;>s;1UF*Wp1I-2~sEF zZYgb?&`4bM1qjM*hR`yr3qJ(;L>Kj2XpBUy+)t((6z;bIr@-ihFNVAl4<#?{TWIaQ zIi>;YjXS_iIfNb?!N1t-!Y6vZvW5ZXE{%l7imzV9NvV4nf#G`Pcex;#@}?EINwsk7 z>UC=SlJC*b5a>-mgHP%q2+qF;cbNx ztCV@{s&fPsSt#;i@#G-m$as&$gLaG}ebOrtS5*22&glbhMH_fz8(~qVVN!VIVCKzg z1$U9^93(E%Ur9v_R*h#!t)Ce+#)+m(q^zCq%g&L-!E zC&et9WrT(49pl0S`?=DK7=`+;`CB!wP3ta97b)XdJ8K=@`DXOk0Q0};7zNT!`k4t@ z+)=9S)4p(jEGm5!qq)PDTmXiw3qDM19|fiylc@LtiQ=}Kfb#w&ckv^7tBj;cfwtY$q?IdliYlg zqh@4;IyW)OFPQPw4z|JsAEb7`+@yA@Q8SXQT#;upV`QNJ59Bg5m(jci3`0T4X-&^GU6)x7$Vi0XMWB(2hrdK^!hq0 zt!bDg$Hh)-9L62h`&{0PBf%7vM>69o`k4~kx^Wc)?lG!}=WgV2x-rq?HN#jMr^B0; p5zMeb2q5MEX5{g&Aa%N&e*pr!t%ZZ}>w*9P002ovPDHLkV1gpUS8xCT literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/img/map/marker-shadow.png b/searx/static/themes/eelo/img/map/marker-shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e773c715a9b508ebea055c4bb4b0a2ad7f6e52 GIT binary patch literal 797 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�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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/js/searx.min.js b/searx/static/themes/eelo/js/searx.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d714149f66aca5d23ca1258c870cd64c767a3565 GIT binary patch literal 4585 zcmb_g?Q-L`75(3*pb=LlBMP)P({4+d_9SV3G;wCzWYbLR@$7&kNJ1tFE&*Eh%6g!_ zMxU$)peRwYy-sI3JG&x@i;Hv5{lo@e9ywAatPK=r?LDnTO&7{}bWZ;`J3F1dIX!!e zmqP1Cg+Y)DU34)`WEC)#2vJGd?{mHke%JDkooM+&VZF{o?yh2{_%Cf45*jGYv`7M7 z@QSOTKXIXm-!NUMaK)MiQZ&FXS+7062g5ooaaL1u&D+Vu?Z29Tlj0|?x>BpC=1b?B zQp&WDU7fnClA*KJhl(Em1vuR8+@PCWl($J>Y3Ht#n2 zEw7~J#=bqMmmj0w|NWQme)=cbnz9F)idtyFN+5JS&p&oknRFGewMSdd(g!!|>O>1! zyWZ+qCXQY5#Yf^%{m^h$V2fLKW$CYKRsl_a)~xLrB7Q1VQ?iF2_(Ql=%)C|0b=TGo zTl-3OZNkI;sC}ebf1R=h^t;{~e?E`Z!lH(X37Q4T8Bl$W<&vViP@w1z20t2;p6xvp<3<< z&Ivh+A~u=W-x%RHC@+}$wq#1VWB>%cmk7iUg|5o2dh_BMkAi#z8S`T=d`&3!nK8F# zz$zGacw-{8%=3~v6b8P`g*Bf{2W>k_5(EAPCQ26ba+dOpA-f=xY|Yv2?`3)nu)HTK zd6ppKfvvJvDT@8%b&3-3_!33i?>)HQOCv_dpDjIGY?~;ncq-Velq}`#%gpXms#%+J z!er z%P0BL2mWi$o)4IJ!MpDpL^m<t4f&qNk%hhHudR;;;N!zbqMKzn z?PYK_*hYr!0e{}MEh+mE3FrTYdW$lNw*3L*v<^Z2;u1knUoAryY^7$7{#lgmf}{JBs;)0mxqFIEWdgx?VywuU5{uU! zxC2Z^j@v1DUd8n6v%Xw!dbWv@-ErfdRXBSy9LAbYjc__z{fd2KN*p$}bCyUiu$`FWny0RUfD+?l3<0!p|-L z32|4LVYqkCE$#(quXVH{?|%N#kXDOZ65g)oSLVM`bSq1w0UW8^+7_$#5~aw`CzC6R V6#E`2W(pki*#$c_?$;ME@Lv{8`%3@- literal 0 HcmV?d00001 diff --git a/searx/static/themes/eelo/js/searx_src/00_requirejs_config.js b/searx/static/themes/eelo/js/searx_src/00_requirejs_config.js new file mode 100644 index 000000000..e7c2abdac --- /dev/null +++ b/searx/static/themes/eelo/js/searx_src/00_requirejs_config.js @@ -0,0 +1,23 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, + */ + +requirejs.config({ + baseUrl: './static/themes/oscar/js', + paths: { + app: '../app' + } +}); diff --git a/searx/static/themes/eelo/js/searx_src/autocompleter.js b/searx/static/themes/eelo/js/searx_src/autocompleter.js new file mode 100644 index 000000000..1a24aa9a0 --- /dev/null +++ b/searx/static/themes/eelo/js/searx_src/autocompleter.js @@ -0,0 +1,37 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, + */ + +if(searx.autocompleter) { + searx.searchResults = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + remote: './autocompleter?q=%QUERY' + }); + searx.searchResults.initialize(); +} + +$(document).ready(function(){ + if(searx.autocompleter) { + $('#q').typeahead(null, { + name: 'search-results', + displayKey: function(result) { + return result; + }, + source: searx.searchResults.ttAdapter() + }); + } +}); diff --git a/searx/static/themes/eelo/js/searx_src/element_modifiers.js b/searx/static/themes/eelo/js/searx_src/element_modifiers.js new file mode 100644 index 000000000..f18e36f2d --- /dev/null +++ b/searx/static/themes/eelo/js/searx_src/element_modifiers.js @@ -0,0 +1,99 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, + */ + +$(document).ready(function(){ + /** + * focus element if class="autofocus" and id="q" + */ + $('#q.autofocus').focus(); + + /** + * select full content on click if class="select-all-on-click" + */ + $(".select-all-on-click").click(function () { + $(this).select(); + }); + + /** + * change text during btn-collapse click if possible + */ + $('.btn-collapse').click(function() { + var btnTextCollapsed = $(this).data('btn-text-collapsed'); + var btnTextNotCollapsed = $(this).data('btn-text-not-collapsed'); + + if(btnTextCollapsed !== '' && btnTextNotCollapsed !== '') { + if($(this).hasClass('collapsed')) { + new_html = $(this).html().replace(btnTextCollapsed, btnTextNotCollapsed); + } else { + new_html = $(this).html().replace(btnTextNotCollapsed, btnTextCollapsed); + } + $(this).html(new_html); + } + }); + + /** + * change text during btn-toggle click if possible + */ + $('.btn-toggle .btn').click(function() { + var btnClass = 'btn-' + $(this).data('btn-class'); + var btnLabelDefault = $(this).data('btn-label-default'); + var btnLabelToggled = $(this).data('btn-label-toggled'); + if(btnLabelToggled !== '') { + if($(this).hasClass('btn-default')) { + new_html = $(this).html().replace(btnLabelDefault, btnLabelToggled); + } else { + new_html = $(this).html().replace(btnLabelToggled, btnLabelDefault); + } + $(this).html(new_html); + } + $(this).toggleClass(btnClass); + $(this).toggleClass('btn-default'); + }); + + /** + * change text during btn-toggle click if possible + */ + $('.media-loader').click(function() { + var target = $(this).data('target'); + var iframe_load = $(target + ' > iframe'); + var srctest = iframe_load.attr('src'); + if(srctest === undefined || srctest === false){ + iframe_load.attr('src', iframe_load.data('src')); + } + }); + + /** + * Select or deselect every categories on double clic + */ + $(".btn-sm").dblclick(function() { + var btnClass = 'btn-' + $(this).data('btn-class'); // primary + if($(this).hasClass('btn-default')) { + $(".btn-sm > input").attr('checked', 'checked'); + $(".btn-sm > input").prop("checked", true); + $(".btn-sm").addClass(btnClass); + $(".btn-sm").addClass('active'); + $(".btn-sm").removeClass('btn-default'); + } else { + $(".btn-sm > input").attr('checked', ''); + $(".btn-sm > input").removeAttr('checked'); + $(".btn-sm > input").checked = false; + $(".btn-sm").removeClass(btnClass); + $(".btn-sm").removeClass('active'); + $(".btn-sm").addClass('btn-default'); + } + }); +}); diff --git a/searx/static/themes/eelo/js/searx_src/leaflet_map.js b/searx/static/themes/eelo/js/searx_src/leaflet_map.js new file mode 100644 index 000000000..44360433b --- /dev/null +++ b/searx/static/themes/eelo/js/searx_src/leaflet_map.js @@ -0,0 +1,167 @@ +/** + * searx is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * searx is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with searx. If not, see < http://www.gnu.org/licenses/ >. + * + * (C) 2014 by Thomas Pointhuber, + */ + +$(document).ready(function(){ + $(".searx_overpass_request").on( "click", function( event ) { + var overpass_url = "https://overpass-api.de/api/interpreter?data="; + var query_start = overpass_url + "[out:json][timeout:25];("; + var query_end = ");out meta;"; + + var osm_id = $(this).data('osm-id'); + var osm_type = $(this).data('osm-type'); + var result_table = $(this).data('result-table'); + var result_table_loadicon = "#" + $(this).data('result-table-loadicon'); + + // tags which can be ignored + var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ]; + + if(osm_id && osm_type && result_table) { + result_table = "#" + result_table; + var query = null; + switch(osm_type) { + case 'node': + query = query_start + "node(" + osm_id + ");" + query_end; + break; + case 'way': + query = query_start + "way(" + osm_id + ");" + query_end; + break; + case 'relation': + query = query_start + "relation(" + osm_id + ");" + query_end; + break; + default: + break; + } + if(query) { + //alert(query); + var ajaxRequest = $.ajax( query ) + .done(function( html) { + if(html && html.elements && html.elements[0]) { + var element = html.elements[0]; + var newHtml = $(result_table).html(); + for (var row in element.tags) { + if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) { + newHtml += "" + row + ""; + switch(row) { + case "phone": + case "fax": + newHtml += "" + element.tags[row] + ""; + break; + case "email": + newHtml += "" + element.tags[row] + ""; + break; + case "website": + case "url": + newHtml += "" + element.tags[row] + ""; + break; + case "wikidata": + newHtml += "" + element.tags[row] + ""; + break; + case "wikipedia": + if(element.tags[row].indexOf(":") != -1) { + newHtml += "" + element.tags[row] + ""; + break; + } + /* jshint ignore:start */ + default: + /* jshint ignore:end */ + newHtml += element.tags[row]; + break; + } + newHtml += ""; + } + } + $(result_table).html(newHtml); + $(result_table).removeClass('hidden'); + $(result_table_loadicon).addClass('hidden'); + } + }) + .fail(function() { + $(result_table_loadicon).html($(result_table_loadicon).html() + "

could not load data!

"); + }); + } + } + + // this event occour only once per element + $( this ).off( event ); + }); + + $(".searx_init_map").on( "click", function( event ) { + var leaflet_target = $(this).data('leaflet-target'); + var map_lon = $(this).data('map-lon'); + var map_lat = $(this).data('map-lat'); + var map_zoom = $(this).data('map-zoom'); + var map_boundingbox = $(this).data('map-boundingbox'); + var map_geojson = $(this).data('map-geojson'); + + require(['leaflet-0.7.3.min'], function(leaflet) { + if(map_boundingbox) { + southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); + northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]); + map_bounds = L.latLngBounds(southWest, northEast); + } + + // TODO hack + // change default imagePath + L.Icon.Default.imagePath = "./static/themes/oscar/img/map"; + + // init map + var map = L.map(leaflet_target); + + // create the tile layer with correct attribution + var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var osmMapnikAttrib='Map data © OpenStreetMap contributors'; + var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); + + var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; + var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © OpenStreetMap contributors'; + var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); + + // init map view + if(map_bounds) { + // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021 + setTimeout(function () { + map.fitBounds(map_bounds, { + maxZoom:17 + }); + }, 0); + } else if (map_lon && map_lat) { + if(map_zoom) + map.setView(new L.LatLng(map_lat, map_lon),map_zoom); + else + map.setView(new L.LatLng(map_lat, map_lon),8); + } + + map.addLayer(osmMapnik); + + var baseLayers = { + "OSM Mapnik": osmMapnik/*, + "OSM Wikimedia": osmWikimedia*/ + }; + + L.control.layers(baseLayers).addTo(map); + + + if(map_geojson) + L.geoJson(map_geojson).addTo(map); + /*else if(map_bounds) + L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/ + }); + + // this event occour only once per element + $( this ).off( event ); + }); +}); diff --git a/searx/static/themes/eelo/less/eelo/base.less b/searx/static/themes/eelo/less/eelo/base.less new file mode 100644 index 000000000..df9008acd --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/base.less @@ -0,0 +1,99 @@ + +html { + position: relative; + min-height: 100%; + color: @text-color; +} + +body { + /* Margin bottom by footer height */ + margin: 0px; + padding: 0px; + font-size: @fontsize_medium; + margin-bottom: 80px; + background-color: white; +} + +body, body * { + font-family: 'Roboto', "Cantarell", Helvetica, Arial, sans-serif; +} + +a { color: @link-color; } + + +input, select { + box-shadow: none !important; +} + + +.text-muted { + color: rgba(0, 0, 0, 0.4); +} + +.danger, .btn.danger { + color: @color_danger; +} + + +a, a:hover, a:focus, a:active, select:hover, select:focus, select:active { + outline: none; + text-decoration: none; +} + + +.btn { + text-transform: uppercase; + padding: 8px 14px; + background-color: transparent; + border: 2px solid rgba(0, 0, 0, .2); + border-radius: @corner-radius; + text-align: center; + font-size: @fontsize_medium; + font-weight: bold; + color: @color_base-text-hl; +} +.btn.btn-block, .block { + display: block; + width: 100%; + box-sizing: border-box; +} +.btn.primary, input.btn[type="submit"] { + // border-color: @color_accent; + color: @color_accent; +} +.btn.btn-flat { + border: none; + border-radius: 0; +} +.btn.btn-flat:hover { + background-color: transparent; + color: blue; +} + +// .btn.danger { +// border-color: @color_danger; +// } + + +.hidden, #icons { + display: none; +} + + +.custom-select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + + border: none; + + font-weight: normal; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ +cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn +sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8 +6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0 +ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w +Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb +7jwaAAAAAElFTkSuQmCC) 96% no-repeat; +} \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/eelo.less b/searx/static/themes/eelo/less/eelo/eelo.less new file mode 100644 index 000000000..c5a08f3ba --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/eelo.less @@ -0,0 +1,8 @@ +@import "variables.less"; +@import "layout.less"; +@import "base.less"; +@import "navbar.less"; +@import "footer.less"; +@import "search.less"; +@import "results.less"; +@import "preferences.less"; \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/footer.less b/searx/static/themes/eelo/less/eelo/footer.less new file mode 100644 index 000000000..e0c1f23d5 --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/footer.less @@ -0,0 +1,9 @@ +footer { + position: absolute; + bottom: 0; + width: 100%; + height: auto; + text-align: center; + color: #c1c1c1; + padding-bottom: 16px; +} \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/layout.less b/searx/static/themes/eelo/less/eelo/layout.less new file mode 100644 index 000000000..52e7e5491 --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/layout.less @@ -0,0 +1,46 @@ + +#pagination { + display: flex; + justify-content: space-between; +} + +.container { + max-width: 1100px; + padding-left: @spacing_large; + padding-right: @spacing_large; + + display: flex; + justify-content: space-between; + + >:first-child { + max-width: 600px; + width: 600px; + } + >:last-child:not(:first-child) { + max-width: 400px; + width: 400px; + } +} + +#index { + max-width: 600px; + margin: auto; + + img { + width: 300px; + display: block; + margin: auto; + margin-top: 64px; + margin-bottom: 64px; + } +} + + +.inline { + display: flex; + flex-direction: row; +} + +.rtl { + flex-direction: row-reverse; +} \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/navbar.less b/searx/static/themes/eelo/less/eelo/navbar.less new file mode 100644 index 000000000..8f96df44d --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/navbar.less @@ -0,0 +1,25 @@ +nav { + height: 48px; + display: flex; + align-items: center; + justify-content: space-between; + padding-left: 16px; + padding-right: 16px; + + text-transform: capitalize; + + margin-bottom: 24px; +} +nav a { + color: #868686; + transition: color .2s ease-in-out; + text-decoration: none; +} +nav a:hover { + text-decoration: none; + color: @color_accent; +} + +#eelo_links > * { + margin-right: 32px; +} \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/preferences.less b/searx/static/themes/eelo/less/eelo/preferences.less new file mode 100644 index 000000000..a4248e2b8 --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/preferences.less @@ -0,0 +1,85 @@ +#preferences { + h1 { + margin-bottom: 32px; + } + + .nav-tabs { + margin-bottom: 32px; + } + + .options { + margin-top: 32px; + } + + label { + color: @text-color-hl; + } + + div.row.form-group { + margin-bottom: 24px; + } + + div.tab-content { + margin-bottom: 48px; + } + + #notice { + margin-bottom: 32px; + } + + .tab-content { + display: none; + } + + input.tab-radio[type="radio"] { + display: none; + } + input.tab-radio[type="radio"]:checked + .tab-content { + display: block; + } + + .preference { + margin-bottom: @spacing_large; + } + .preference.inline { + justify-content: space-between; + } + + #tabs { + margin-bottom: @spacing_xx-large; + } + #tabs > * { + margin-right: @spacing_xx-large; + } + + #controls { + display: flex; + flex-direction: column-reverse; + justify-content: flex-end; + } + + + section { + margin-bottom: @spacing_xx-large; + } + + ul > li { + margin-bottom: @spacing_medium; + } + + + fieldset { + border: none; + padding: 0px; + } + + #cookies_list { + } + #cookies_list .cookie-value { + word-wrap: break-word; + } + + #action_buttons { margin-top: @spacing_x-huge; } + #action_buttons > div { margin-bottom: @spacing_x-large; } + #action_buttons > div > * { margin-bottom: @spacing_medium; } +} \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/results.less b/searx/static/themes/eelo/less/eelo/results.less new file mode 100644 index 000000000..8a8e01959 --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/results.less @@ -0,0 +1,68 @@ +.result.result-default { + margin-bottom: 32px; +} + +.result_header { + margin-bottom: 8px; + + a { + + } + + .favicon { + width: 16px; + height: 16px; + } +} +.result-content { + margin-bottom: 2px; +} + +.external-link { + color: #39a441; +} + +.infobox { + + border-radius: @corner-radius; + + .panel-heading { + background-color: transparent; + border: none; + padding-top: 16px; + padding-bottom: 0px; + } + + img { + margin-top: 18px; + width: 100%; + } + + .panel-title { + font-size: 22px; + color: @text-color-hl; + } +} + +.extras { + margin-top: 48px; +} + + +.result-images { + display: inline; +} + + +#default_images_container { + display: flex; + flex-wrap: wrap; + align-items: flex-end; +} +#default_images_container > .result.result-images { + flex: 20%; +} + +.img-thumbnail { + border: none; +} diff --git a/searx/static/themes/eelo/less/eelo/search.less b/searx/static/themes/eelo/less/eelo/search.less new file mode 100644 index 000000000..8a390437d --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/search.less @@ -0,0 +1,80 @@ +#q { + border: 2px solid rgba(0, 0, 0, 0.3); + border-radius: 50px; + + height: 42px; + line-height: 42px; + width: 100%; + padding-left: @spacing_large; + font-size: @fontsize_medium; +} +#search_input_container { + position: relative; + display: flex; + align-items: center; + + button[type="submit"] { + position: absolute; + right: 10px; + height: 24px; + border: none; + background: none; + } + + .icon { + width: 20px; + } +} + +#search_params { + display: flex; + justify-content: space-between; + font-size: @fontsize_x-small; + margin-bottom: @spacing_large; + margin-top: @spacing_large; +} + +.search_categories, #categories { + text-transform: capitalize; + display: flex; + flex-wrap: wrap; + flex-flow: row wrap; + align-content: stretch; + align-items: center; + + label { + flex-grow: 1; + flex-basis: auto; + font-size: @fontsize_small; + font-weight: normal; + margin-right: @spacing_large; + } + + input[type="checkbox"]:checked + label { + color: @color_accent; + font-weight: bold; + } +} + + +// inline search form +#logo_link { + position: absolute; + left: 6px; +} +#logo, #logo_link { + height: 32px; +} +.inline-search #q { + padding-left: 56px; +} + + +#main-logo{ + margin-top: 12vh; + margin-bottom: 25px; +} +#main-logo > img { + max-width: 250px; + width: 80%; +} \ No newline at end of file diff --git a/searx/static/themes/eelo/less/eelo/variables.less b/searx/static/themes/eelo/less/eelo/variables.less new file mode 100644 index 000000000..1aeaaa35a --- /dev/null +++ b/searx/static/themes/eelo/less/eelo/variables.less @@ -0,0 +1,32 @@ +@black: #020f16; +@text-color: #60686f; +@text-color-hl: #5c6469; +@link-color: #3889f4; + +@color_accent: #5068dd; +@color_primary: blue; +@color_base: blue; +@color_base-text-hl: #5c6469; + +@color_danger: #e06572; + +@corner-radius: 8px; + + +@fontsize_xx-small: 8px; +@fontsize_x-small: 11px; +@fontsize_small: 14px; +@fontsize_medium: 16px; +@fontsize_large: 18px; +@fontsize_x-large: 22px; +@fontsize_xx-large: 22px; + +@spacing_xx-small: 2px; +@spacing_x-small: 4px; +@spacing_small: 6px; +@spacing_medium: 8px; +@spacing_large: 16px; +@spacing_x-large: 24px; +@spacing_xx-large: 32px; +@spacing_huge: 38px; +@spacing_x-huge: 48px; diff --git a/searx/static/themes/eelo/package.json b/searx/static/themes/eelo/package.json new file mode 100644 index 000000000..7eae9df2b --- /dev/null +++ b/searx/static/themes/eelo/package.json @@ -0,0 +1,16 @@ +{ + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-uglify": "~0.6.0", + "grunt-contrib-watch" : "~0.6.1", + "grunt-contrib-concat" : "~0.5.0", + "grunt-contrib-jshint" : "~0.10.0", + "grunt-contrib-less" : "~0.11.0" + }, + + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + } +} diff --git a/searx/templates/eelo/404.html b/searx/templates/eelo/404.html new file mode 100644 index 000000000..afa42a8f3 --- /dev/null +++ b/searx/templates/eelo/404.html @@ -0,0 +1,9 @@ +{% extends "eelo/base.html" %} +{% block content %} +
+

{{ _('Page not found') }}

+ {% autoescape false %} +

{{ _('Go to %(search_page)s.', search_page=unicode('{}').format(url_for('index'), _('search page'))) }}

+ {% endautoescape %} +
+{% endblock %} diff --git a/searx/templates/eelo/about.html b/searx/templates/eelo/about.html new file mode 100644 index 000000000..b8012e128 --- /dev/null +++ b/searx/templates/eelo/about.html @@ -0,0 +1,5 @@ +{% extends "eelo/base.html" %} +{% block title %}{{ _('about') }} - {% endblock %} +{% block content %} +{% include '__common__/about.html' %} +{% endblock %} diff --git a/searx/templates/eelo/advanced.html b/searx/templates/eelo/advanced.html new file mode 100644 index 000000000..880542214 --- /dev/null +++ b/searx/templates/eelo/advanced.html @@ -0,0 +1,16 @@ + + +
+ {% include 'eelo/categories.html' %} +
+
+ {% include 'eelo/time-range.html' %} +
+
+ {% include 'eelo/languages.html' %} +
+
+
diff --git a/searx/templates/eelo/base.html b/searx/templates/eelo/base.html new file mode 100644 index 000000000..66c020a25 --- /dev/null +++ b/searx/templates/eelo/base.html @@ -0,0 +1,116 @@ +{% from 'eelo/macros.html' import icon %} + + + + + + + + + + + {% block meta %}{% endblock %} + {% block title %}{% endblock %}{{ instance_name }} + + + + + + + {% for css in styles %} + + {% endfor %} + + + + + + + {% block styles %} + {% endblock %} + {% block head %} + {% endblock %} + + + + + + + + + + {% include 'eelo/icons.html' %} + {% include 'eelo/navbar.html' %} + + {% set inline_search_form = true %} +
+ {% if errors %} + + {% endif %} + + {% block site_alert_error %} + {% endblock %} + {% block site_alert_warning %} + {% endblock %} + {% block site_alert_info %} + {% endblock %} + {% block site_alert_success %} + {% endblock %} + + {% block content %} + {% endblock %} + +
+ + + + + {% if autocomplete %}{% endif %} + + + {% for script in scripts %} + + {% endfor %} + + + diff --git a/searx/templates/eelo/categories.html b/searx/templates/eelo/categories.html new file mode 100644 index 000000000..2cace863b --- /dev/null +++ b/searx/templates/eelo/categories.html @@ -0,0 +1,6 @@ +
+{% for category in categories %} + + +{% endfor %} +
diff --git a/searx/templates/eelo/icons.html b/searx/templates/eelo/icons.html new file mode 100644 index 000000000..5e936c995 --- /dev/null +++ b/searx/templates/eelo/icons.html @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/searx/templates/eelo/index.html b/searx/templates/eelo/index.html new file mode 100644 index 000000000..ecd030162 --- /dev/null +++ b/searx/templates/eelo/index.html @@ -0,0 +1,7 @@ +{% extends "eelo/base.html" %} +{% block content %} +
+ searx logo + {% include 'eelo/search.html' %} +
+{% endblock %} diff --git a/searx/templates/eelo/infobox.html b/searx/templates/eelo/infobox.html new file mode 100644 index 000000000..1b18a81c4 --- /dev/null +++ b/searx/templates/eelo/infobox.html @@ -0,0 +1,36 @@ +{% from 'eelo/macros.html' import result_link with context %} +
+
+

{{ infobox.infobox }}

+ {{infobox.engine}} +
+ {% if infobox.img_src %}{{ infobox.infobox }}{% endif %} +
+ {% if infobox.content %}

{{ infobox.content }}

{% endif %} + + {% if infobox.attributes %} + + {% for attribute in infobox.attributes %} + + + {% if attribute.image %} + + {% else %} + + {% endif %} + + {% endfor %} +
{{ attribute.label }}{{ attribute.image.alt }}{{ attribute.value }}
+ {% endif %} + + {% if infobox.urls %} +
+ + {% for url in infobox.urls %} +

{{ result_link(url.url, url.title) }}

+ {% endfor %} +
+
+ {% endif %} +
+
diff --git a/searx/templates/eelo/languages.html b/searx/templates/eelo/languages.html new file mode 100644 index 000000000..649e1e06a --- /dev/null +++ b/searx/templates/eelo/languages.html @@ -0,0 +1,11 @@ +{% if preferences %} + +{% endif %} + {% for lang_id, lang_name, country_name, english_name in language_codes | sort(attribute=1) %} + + {% endfor %} + diff --git a/searx/templates/eelo/macros.html b/searx/templates/eelo/macros.html new file mode 100644 index 000000000..eaf6344ad --- /dev/null +++ b/searx/templates/eelo/macros.html @@ -0,0 +1,85 @@ + +{% macro icon(action) -%} + + + +{%- endmacro %} + + + +{% macro search_bar(value="", inline=false) -%} + +{%- endmacro %} + + + +{% macro draw_favicon(favicon) -%} + {{ favicon }} +{%- endmacro %} + +{%- macro result_link(url, title, classes='') -%} +{{ title }} +{%- endmacro -%} + + +{% macro result_header(result, favicons) -%} +

{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }} {% endif %}{{ result_link(result.url, result.title|safe) }}

+{%- endmacro %} + + +{% macro result_sub_header(result) -%} + {% if result.publishedDate %}{% endif %} + {% if result.magnetlink %} • {{ result_link(result.magnetlink, icon('magnet') + _('magnet link'), "magnetlink") }}{% endif %} + {% if result.torrentfile %} • {{ result_link(result.torrentfile, icon('download-alt') + _('torrent file'), "torrentfile") }}{% endif %} +{%- endmacro %} + + +{% macro result_footer(result) -%} + + +{%- endmacro %} + + +{% macro result_footer_rtl(result) -%} +
+ {% for engine in result.engines %} + {{ engine }} + {% endfor %} + {{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }} + {% if proxify %} + {{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }} + {% endif %} + +{%- endmacro %} + +{% macro checkbox_toggle(id, blocked) -%} + + + + +{%- endmacro %} + +{% macro support_toggle(supports) -%} + {% if supports %} + + {{ _("supported") }} + + {% else %} + + {{ _("not supported") }} + + {% endif %} +{%- endmacro %} diff --git a/searx/templates/eelo/messages/first_time.html b/searx/templates/eelo/messages/first_time.html new file mode 100644 index 000000000..38db62bdf --- /dev/null +++ b/searx/templates/eelo/messages/first_time.html @@ -0,0 +1,8 @@ + diff --git a/searx/templates/eelo/messages/no_cookies.html b/searx/templates/eelo/messages/no_cookies.html new file mode 100644 index 000000000..3058e0147 --- /dev/null +++ b/searx/templates/eelo/messages/no_cookies.html @@ -0,0 +1,5 @@ +{% from 'eelo/macros.html' import icon %} + diff --git a/searx/templates/eelo/messages/no_data_available.html b/searx/templates/eelo/messages/no_data_available.html new file mode 100644 index 000000000..ec980cd99 --- /dev/null +++ b/searx/templates/eelo/messages/no_data_available.html @@ -0,0 +1,5 @@ +{% from 'eelo/macros.html' import icon %} + diff --git a/searx/templates/eelo/messages/no_results.html b/searx/templates/eelo/messages/no_results.html new file mode 100644 index 000000000..23b84d014 --- /dev/null +++ b/searx/templates/eelo/messages/no_results.html @@ -0,0 +1,17 @@ +{% from 'eelo/macros.html' import icon %} +{% if unresponsive_engines %} + +{% else %} + +{% endif %} diff --git a/searx/templates/eelo/messages/save_settings_successfull.html b/searx/templates/eelo/messages/save_settings_successfull.html new file mode 100644 index 000000000..4b0420cca --- /dev/null +++ b/searx/templates/eelo/messages/save_settings_successfull.html @@ -0,0 +1,9 @@ +{% from 'eelo/macros.html' import icon %} + diff --git a/searx/templates/eelo/messages/unknow_error.html b/searx/templates/eelo/messages/unknow_error.html new file mode 100644 index 000000000..f03d4c431 --- /dev/null +++ b/searx/templates/eelo/messages/unknow_error.html @@ -0,0 +1,9 @@ +{% from 'eelo/macros.html' import icon %} + diff --git a/searx/templates/eelo/navbar.html b/searx/templates/eelo/navbar.html new file mode 100644 index 000000000..ce8230a81 --- /dev/null +++ b/searx/templates/eelo/navbar.html @@ -0,0 +1,11 @@ + diff --git a/searx/templates/eelo/preferences.html b/searx/templates/eelo/preferences.html new file mode 100644 index 000000000..e741e01db --- /dev/null +++ b/searx/templates/eelo/preferences.html @@ -0,0 +1,221 @@ +{% from 'eelo/macros.html' import checkbox_toggle, support_toggle %} +{% extends "eelo/base.html" %} +{% block title %}{{ _('preferences') }} - {% endblock %} +{% block content %} + +{% macro preferences_item(info, label, rtl) -%} +
+
+ +
{{ info }}
+
+
+ {{ caller() }} +
+
+{% endmacro -%} + + +
+

{{ _('Preferences') }}

+
+ +
+ +
+ +
+
+ {% set language_label = _('Search language') %} + {% set language_info = _('What language do you prefer for search?') %} + {% call preferences_item(language_info, language_label, rtl) %} + {% include 'eelo/languages.html' %} + {% endcall %} + + {% set locale_label = _('Interface language') %} + {% set locale_info = _('Change the language of the layout') %} + {% call preferences_item(locale_info, locale_label, rtl) %} + + {% endcall %} + + {% set autocomplete_label = _('Autocomplete') %} + {% set autocomplete_info = _('Find stuff as you type') %} + {% call preferences_item(autocomplete_info, autocomplete_label, rtl) %} + + {% endcall %} + + {% set image_proxy_label = _('Image proxy') %} + {% set image_proxy_info = _('Proxying image results through searx') %} + {% call preferences_item(image_proxy_info, image_proxy_label, rtl) %} + + {% endcall %} + + {% set safesearch_label = _('SafeSearch') %} + {% set safesearch_info = _('Filter content') %} + {% call preferences_item(safesearch_info, safesearch_label, rtl) %} + + {% endcall %} + + {% set label = _('Results on new tabs') %} + {% set info = _('Open result links on new browser tabs') %} + {% call preferences_item(info, label, rtl) %} + + {% endcall %} +
+
+ + + +
+ {% macro support_text(supports, text) -%} + {% if not supports %} + {{ caller() }} + {% endif %} + {%- endmacro %} + + {% for categ in all_categories %} + +
+

{{categ}}

+ {% for search_engine in engines_by_category[categ] %} + {% if not search_engine.private %} +
+
+ {{ checkbox_toggle('engine_' + search_engine.name | replace(' ', '_') + '__' + categ | replace(' ', '_'), not ((search_engine.name, categ) in disabled_engines)) }} + + {{ search_engine.name }} {{_("Shortcuts")}} {{ shortcuts[search_engine.name] }} + +
+ {% call support_text(stats[search_engine.name].supports_selected_language) %} {{locales[current_locale]}} {{_("not supported")}} {% endcall %} + {% call support_text(search_engine.safesearch == True) %}{{_("No safe search")}}{% endcall %} + {% call support_text(not(stats[search_engine.name]['warn_time'] or stats[search_engine.name]['warn_timeout'])) %} + {{_("Slow")}} + {% endcall %} +
+
+
+ {% endif %} + {% endfor %} +
+ {% endfor %} +
+ + + +
+
+

{{_("Plugins")}}

+
+
    + {% for plugin in plugins %} +
  • +
    + {{ checkbox_toggle('plugin_' + plugin.id, plugin.id not in allowed_plugins) }} + {{ _(plugin.name) }} +
    +

    {{ _(plugin.description) }}

    +
  • + {% endfor %} +
+
+
+ + {% if answerers %} +
+

{{ _('Answerers') }}

+

{{ _('This is the list of searx\'s instant answering modules.') }}

+
    + {% for answerer in answerers %} +
  • +

    {{ answerer.info.name }} {{ _('Keywords') }}: {{ answerer.keywords|join(', ') }}

    +

    {{ answerer.info.description }}

    +
    + {{ _('Examples') }} +

    {{ answerer.info.examples|join(', ') }}

    +
    +
  • + {% endfor %} +
+
+ {% endif %} + +
+

{{ _('Cookies') }}

+

+ {{ _('This is the list of cookies and their values searx is storing on your computer.') }}
+ {{ _('With that list, you can assess searx transparency.') }}
+

+ {% if cookies %} +
    + {% for cookie in cookies %} +
  • + {{ cookie }}: {{ cookies[cookie] }} +
  • + {% endfor %} +
+ {% else %} + {% include 'eelo/messages/no_cookies.html' %} + {% endif %} +
+
+ + +
+ + + +
+ + + +
+ + +
+
+

{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }} +
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }} +

+
+ +
+

{{ _('Search URL of the currently saved preferences') }} ({{ _('Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites.') }}):

+ +
+ +
+ + {{ _('Reset defaults') }} +
+
+
+{% endblock %} \ No newline at end of file diff --git a/searx/templates/eelo/result_templates/code.html b/searx/templates/eelo/result_templates/code.html new file mode 100644 index 000000000..0c04c65bf --- /dev/null +++ b/searx/templates/eelo/result_templates/code.html @@ -0,0 +1,18 @@ +{% from 'eelo/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %} + +{{ result_header(result, favicons) }} +{{ result_sub_header(result) }} + +{% if result.content %}

{{ result.content|safe }}

{% endif %} + +{% if result.repository %}

{{ icon('file') }} {{ result.repository }}

{% endif %} + +
+{{ result.codelines|code_highlighter(result.code_language)|safe }} +
+ +{% if rtl %} +{{ result_footer_rtl(result) }} +{% else %} +{{ result_footer(result) }} +{% endif %} diff --git a/searx/templates/eelo/result_templates/default.html b/searx/templates/eelo/result_templates/default.html new file mode 100644 index 000000000..a783a0cc7 --- /dev/null +++ b/searx/templates/eelo/result_templates/default.html @@ -0,0 +1,31 @@ +{% from 'eelo/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon with context %} + +{{ result_header(result, favicons) }} +{{ result_sub_header(result) }} + +{% if result.embedded %} + +{% endif %} + +{% if result.embedded %} +
+ {{ result.embedded|safe }} +
+{% endif %} + +{% if result.img_src %} +
+
+{{ result.title|striptags }} +{% if result.content %}

{{ result.content|safe }}

{% endif %} +
+
+{% else %} +{% if result.content %}

{{ result.content|safe }}

{% endif %} +{% endif %} + +{% if rtl %} +{{ result_footer_rtl(result) }} +{% else %} +{{ result_footer(result) }} +{% endif %} diff --git a/searx/templates/eelo/result_templates/images.html b/searx/templates/eelo/result_templates/images.html new file mode 100644 index 000000000..52d77963c --- /dev/null +++ b/searx/templates/eelo/result_templates/images.html @@ -0,0 +1,39 @@ +{% from 'eelo/macros.html' import draw_favicon %} + + + {{ result.title|striptags }} + + + diff --git a/searx/templates/eelo/result_templates/map.html b/searx/templates/eelo/result_templates/map.html new file mode 100644 index 000000000..e5eb67e7b --- /dev/null +++ b/searx/templates/eelo/result_templates/map.html @@ -0,0 +1,72 @@ +{% from 'eelo/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %} + +{{ result_header(result, favicons) }} +{{ result_sub_header(result) }} + +{% if (result.latitude and result.longitude) or result.boundingbox %} + +{% endif %} + +{% if result.osm and (result.osm.type and result.osm.id) %} + +{% endif %} + +{# {% if (result.latitude and result.longitude) %} + +{% endif %} #} + +
+ +{% if result.address %} +

+ {% if result.address.name %} + {{ result.address.name }}
+ {% endif %} + {% if result.address.road %} + + {% if result.address.house_number %}{{ result.address.house_number }}, {% endif %} + {{ result.address.road }} +
+ {% endif %} + {% if result.address.locality %} + {{ result.address.locality }} + {% if result.address.postcode %}, {{ result.address.postcode }}{% endif %} +
+ {% endif %} + {% if result.address.country %} + {{ result.address.country }} + {% endif %} +

+{% endif %} + +{% if result.osm and (result.osm.type and result.osm.id) %} +
+
Loading ...
+ + + +
+{% endif %} + +{# {% if (result.latitude and result.longitude) %} +
+ Longitude: {{ result.longitude }}
+ Latitude: {{ result.latitude }} +
+{% endif %} #} + +{% if result.content %}

{{ result.content|safe }}

{% endif %} + +
+ +{% if (result.latitude and result.longitude) or result.boundingbox %} +
+
+
+{% endif %} + +{% if rtl %} +{{ result_footer_rtl(result) }} +{% else %} +{{ result_footer(result) }} +{% endif %} diff --git a/searx/templates/eelo/result_templates/torrent.html b/searx/templates/eelo/result_templates/torrent.html new file mode 100644 index 000000000..61d158f12 --- /dev/null +++ b/searx/templates/eelo/result_templates/torrent.html @@ -0,0 +1,25 @@ +{% from 'eelo/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %} + +{{ result_header(result, favicons) }} +{{ result_sub_header(result) }} + +

{{ icon('transfer') }} {{ _('Seeder') }} {{ result.seed }} • {{ _('Leecher') }} {{ result.leech }} +{% if result.filesize %}
{{ icon('floppy-disk') }} {{ _('Filesize') }} + + {% if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }} + {% elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} {{ _('kiB') }} + {% elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} {{ _('MiB') }} + {% elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} {{ _('GiB') }} + {% else %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif %} + {% endif %} +{% if result.files %}
{{ icon('file') }} {{ _('Number of Files') }} {{ result.files }}{% endif %} + +{% if result.content %}
{{ result.content|safe }}{% endif %} + +

+ +{% if rtl %} +{{ result_footer_rtl(result) }} +{% else %} +{{ result_footer(result) }} +{% endif %} diff --git a/searx/templates/eelo/result_templates/videos.html b/searx/templates/eelo/result_templates/videos.html new file mode 100644 index 000000000..4fe7ce60f --- /dev/null +++ b/searx/templates/eelo/result_templates/videos.html @@ -0,0 +1,27 @@ +{% from 'eelo/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %} + +{{ result_header(result, favicons) }} +{{ result_sub_header(result) }} + +{% if result.embedded %} + +{% endif %} + +{% if result.embedded %} +
+ {{ result.embedded|safe }} +
+{% endif %} + +
+
+ {{ result.title|striptags }} {{ result.engine }} + {% if result.content %}

{{ result.content|safe }}

{% endif %} +
+
+ +{% if rtl %} +{{ result_footer_rtl(result) }} +{% else %} +{{ result_footer(result) }} +{% endif %} diff --git a/searx/templates/eelo/results.html b/searx/templates/eelo/results.html new file mode 100644 index 000000000..fa7f944aa --- /dev/null +++ b/searx/templates/eelo/results.html @@ -0,0 +1,115 @@ +{% extends "eelo/base.html" %} +{% macro search_form_attrs(pageno) -%} + {% for category in selected_categories %}{% endfor %} + + + + +{%- endmacro %} +{%- macro search_url() %}{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&pageno={{ pageno }}{% endif %}{% if time_range %}&time_range={{ time_range }}{% endif %}{% if current_language != 'all' %}&language={{ current_language }}{% endif %}{% endmacro -%} + +{% macro put_results(results_slice) -%} +{%- for result in results_slice %} +
+ {% set index = loop.index %} + {% if result.template %} + {% include get_result_template('eelo', result['template']) %} + {% else %} + {% include 'eelo/result_templates/default.html' %} + {% endif %} +
+{%- endfor %} +{%- endmacro %} + +{% block title %}{{ q|e }} - {% endblock %} +{% block meta %}{% endblock %} +{% block content %} + +
+
+ {% include 'eelo/search_full.html' %} +
+
+ +
+
+ + {% if corrections %} +
+ {{ _('Try searching for:') }} + {% for correction in corrections %} + + {% endfor %} +
+ {% endif %} + + + {% if answers %} + {% for answer in answers %} +
+ {{ answer }} +
+ {% endfor %} + {% endif %} + + + {% if not results and not answers %} + {% include 'eelo/messages/no_results.html' %} + {% else %} + + {{ put_results(results[:3]) }} + + {% if image_results %} +

images

+
+ {{ put_results(image_results) }} +
+ {% endif %} + + {{ put_results(results[4:]) }} + + {% if paging %} + + {% endif %} + + {% endif %} + +
+ +
+ {% if infoboxes %} + {% for infobox in infoboxes %} + {% include 'eelo/infobox.html' %} + {% endfor %} + {% endif %} + + {% if suggestions %} +
+
+

{{ _('Suggestions') }}

+
+
+ {% for suggestion in suggestions %} + + {% endfor %} +
+
+ {% endif %} +
+
+{% endblock %} diff --git a/searx/templates/eelo/search.html b/searx/templates/eelo/search.html new file mode 100644 index 000000000..bab6075e8 --- /dev/null +++ b/searx/templates/eelo/search.html @@ -0,0 +1,3 @@ +{% from 'eelo/macros.html' import search_bar %} + +{% call search_bar(q) %}{% endcall %} \ No newline at end of file diff --git a/searx/templates/eelo/search_full.html b/searx/templates/eelo/search_full.html new file mode 100644 index 000000000..5e1d677d2 --- /dev/null +++ b/searx/templates/eelo/search_full.html @@ -0,0 +1,11 @@ +{% from 'eelo/macros.html' import search_bar %} + +{% call search_bar(q, true) %} +
+ {% include 'eelo/categories.html' %} + + {% include 'eelo/time-range.html' %} + {% include 'eelo/languages.html' %} + +
+{% endcall %} diff --git a/searx/templates/eelo/stats.html b/searx/templates/eelo/stats.html new file mode 100644 index 000000000..dc904d6c3 --- /dev/null +++ b/searx/templates/eelo/stats.html @@ -0,0 +1,33 @@ +{% extends "eelo/base.html" %} +{% block title %}{{ _('stats') }} - {% endblock %} +{% block content %} +
+

{{ _('Engine stats') }}

+
+ {% for stat_name,stat_category in stats %} +
+

{{ stat_name }}

+
+ {% for engine in stat_category %} +
+
{{ engine.name }}
+
+
+
+ {{ '%.02f'|format(engine.avg) }} +
+
+
+
+ {% endfor %} + {% if not stat_category %} +
+ {% include 'eelo/messages/no_data_available.html' %} +
+ {% endif %} +
+
+ {% endfor %} +
+
+{% endblock %} diff --git a/searx/templates/eelo/time-range.html b/searx/templates/eelo/time-range.html new file mode 100644 index 000000000..d5efe9182 --- /dev/null +++ b/searx/templates/eelo/time-range.html @@ -0,0 +1,17 @@ + diff --git a/searx/webapp.py b/searx/webapp.py index 63f22667e..a3e500310 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -16,7 +16,6 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >. (C) 2013- by Adam Tauber, ''' -from searx.results import ResultContainer if __name__ == '__main__': from sys import path @@ -75,6 +74,7 @@ from searx.preferences import Preferences, ValidationException, LANGUAGE_CODES from searx.answerers import answerers from searx.url_utils import urlencode, urlparse, urljoin from searx.utils import new_hmac +from searx.results import ResultContainer # check if the pyopenssl package is installed. # It is needed for SSL connection without trouble, see #298 @@ -480,7 +480,6 @@ def index(): # search search_query = None result_container = None - results_images = [] try: search_query = get_search_query_from_webapp(request.preferences, request.form) @@ -498,6 +497,7 @@ def index(): return index_error(), 500 # serarch images + results_images = [] if search_query.categories == ['general'] and search_query.pageno == 1: search_images_engines = [] disabled_engines = request.preferences.engines.get_disabled() @@ -508,11 +508,8 @@ def index(): search_query.safesearch, 1, search_query.time_range) results_images_big = SearchWithPlugins(images_search_query, request.user_plugins, request).search().get_ordered_results() - to_ten = 0 - for image in results_images_big: - to_ten+=1 - if to_ten > 10: - break + + for image in results_images_big[:min(5, len(results_images_big))]: results_images.append(image) # results @@ -528,6 +525,46 @@ def index(): config_results(results, search_query.query) config_results(results_images, search_query.query) + output_format = request.form.get('format', 'html') + if output_format not in ['html', 'csv', 'json', 'rss']: + output_format = 'html' + + if output_format == 'json': + return Response(json.dumps({'query': search_query.query.decode('utf-8'), + 'number_of_results': number_of_results, + 'results': results, + 'answers': list(result_container.answers), + 'corrections': list(result_container.corrections), + 'infoboxes': result_container.infoboxes, + 'suggestions': list(result_container.suggestions), + 'unresponsive_engines': list(result_container.unresponsive_engines)}, + default=lambda item: list(item) if isinstance(item, set) else item), + mimetype='application/json') + elif output_format == 'csv': + csv = UnicodeWriter(StringIO()) + keys = ('title', 'url', 'content', 'host', 'engine', 'score') + csv.writerow(keys) + for row in results: + row['host'] = row['parsed_url'].netloc + csv.writerow([row.get(key, '') for key in keys]) + csv.stream.seek(0) + response = Response(csv.stream.read(), mimetype='application/csv') + cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query) + response.headers.add('Content-Disposition', cont_disp) + return response + elif output_format == 'rss': + response_rss = render( + 'opensearch_response_rss.xml', + results=results, + q=request.form['q'], + number_of_results=number_of_results, + base_url=get_base_url(), + override_theme='__common__', + ) + return Response(response_rss, mimetype='text/xml') + + + return render( 'results.html', results=results, @@ -546,7 +583,7 @@ def index(): current_language=match_language(search_query.lang, LANGUAGE_CODES, fallback=settings['search']['language']), - results_image=results_images, + image_results=results_images, base_url=get_base_url(), theme=get_current_theme_name(), favicons=global_favicons[themes.index(get_current_theme_name())] -- GitLab From dba1c30a7ed31e67a2aa51a759947bb4c821792d Mon Sep 17 00:00:00 2001 From: "Daniel J. Ramirez" Date: Thu, 17 May 2018 11:57:28 -0500 Subject: [PATCH 004/146] Basic image view modal --- searx/static/themes/eelo/css/eelo.css | 24 +++++++++ searx/static/themes/eelo/css/eelo.min.css | Bin 5191 -> 5534 bytes searx/static/themes/eelo/gruntfile.js | 10 ++-- searx/static/themes/eelo/js/searx.min.js | Bin 4585 -> 4584 bytes searx/static/themes/eelo/less/eelo/base.less | 30 +++++++++++ searx/templates/eelo/base.html | 51 +++++++++++++++--- .../eelo/result_templates/images.html | 39 ++------------ 7 files changed, 106 insertions(+), 48 deletions(-) diff --git a/searx/static/themes/eelo/css/eelo.css b/searx/static/themes/eelo/css/eelo.css index 02a6c3476..dfba9fbba 100644 --- a/searx/static/themes/eelo/css/eelo.css +++ b/searx/static/themes/eelo/css/eelo.css @@ -109,6 +109,30 @@ input.btn[type="submit"] { #icons { display: none; } +body.lock { + overflow: hidden; +} +#image_view_modal { + position: absolute; + top: 0; + width: 100%; + height: 100vh; + background-color: rgba(0, 0, 0, 0.7); +} +#image_view_modal .card-container { + display: flex; + height: 100%; +} +#image_view_modal #image_view_card { + margin: auto; + max-width: 600px; + max-height: 80vh; +} +#image_view_modal #image_view_image { + display: block; + max-width: 100%; + max-height: 100%; +} .custom-select { appearance: none; -webkit-appearance: none; diff --git a/searx/static/themes/eelo/css/eelo.min.css b/searx/static/themes/eelo/css/eelo.min.css index 02f9cc4a9e243206b2d23153d27676f78e51fd28..d60482f792986a091428450cdc12c079d40c4136 100644 GIT binary patch delta 339 zcmaiw!D_-l5Qa~l1)=mRh+wG++e2;HeHfX|Zg&SanXuU;N+>>qc<(b5`Vf7sx=}FV zq0D9GFyH^p{4TzpzgMHZB(+N&Wt)x~?LQo~+@eyt_?%%5Mz0&x?K&p~t}Cg+fK+gh z6}dWS5vb%$w5WpRFO1EF)o5&pePe}$Y-2ptg-SAV%F4Li1-05=g22W~rAd$m1IZLe=E4Tf8!M&fv{=xNkcT0s;>0rlY{LTQ` O-x(7IfABhAC diff --git a/searx/static/themes/eelo/gruntfile.js b/searx/static/themes/eelo/gruntfile.js index bfcdb1aa2..1caaba90f 100644 --- a/searx/static/themes/eelo/gruntfile.js +++ b/searx/static/themes/eelo/gruntfile.js @@ -37,20 +37,18 @@ module.exports = function(grunt) { less: { development: { options: { - paths: ["less/logicodev", "less/eelo"] + paths: ["less/eelo"] //banner: '/*! less/eelo/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n' }, - files: {"css/logicodev.css": "less/logicodev-dark/oscar.less", - "css/eelo.css": "less/eelo/eelo.less"} + files: {"css/eelo.css": "less/eelo/eelo.less"} }, production: { options: { - paths: ["less/logicodev", "less/eelo"], + paths: ["less/eelo"], //banner: '/*! less/eelo/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n', cleancss: true }, - files: {"css/logicodev.min.css": "less/logicodev/oscar.less", - "css/eelo.min.css": "less/eelo/eelo.less"} + files: {"css/eelo.min.css": "less/eelo/eelo.less"} }, /* // built with ./manage.sh styles diff --git a/searx/static/themes/eelo/js/searx.min.js b/searx/static/themes/eelo/js/searx.min.js index d714149f66aca5d23ca1258c870cd64c767a3565..e465ff18266b7c52a053540cf55920efbb54f820 100644 GIT binary patch delta 91 zcmaE<{6bktUrSLTH8m$+zc@9qs6sC{Gfyw8SfNJ2&|KHRRM*JB&|;%<1S^}Op`xvA u^5#a?b1VY7hPJkudYO4CsTKZd8Y!Ba9UDpj delta 110 zcmaE%{8Cw2UrSLTzc@LuNWVBWv8X~XH#1K!t5~5%!N5${&_LJ7z|ef7QUohovZAf6 zqT%KS)^jWZnR=OdDXA6yX&Nb-wzj&4o8!19F-j%rl_aJYN2kQXWtFUyG!;SeTs-$! E0cO=9NdN!< diff --git a/searx/static/themes/eelo/less/eelo/base.less b/searx/static/themes/eelo/less/eelo/base.less index df9008acd..4fbfe08d7 100644 --- a/searx/static/themes/eelo/less/eelo/base.less +++ b/searx/static/themes/eelo/less/eelo/base.less @@ -80,6 +80,36 @@ a, a:hover, a:focus, a:active, select:hover, select:focus, select:active { } +body.lock { + overflow: hidden; +} + +#image_view_modal { + position: absolute; + top: 0; + width: 100%; + height: 100vh; + background-color: rgba(0, 0, 0, .7); + + .card-container { + display: flex; + height: 100%; + } + + #image_view_card { + margin: auto; + max-width: 600px; // TODO: move to var + max-height: 80vh; + } + + #image_view_image { + display: block; + max-width: 100%; + max-height: 100%; + } +} + + .custom-select { appearance: none; -webkit-appearance: none; diff --git a/searx/templates/eelo/base.html b/searx/templates/eelo/base.html index 66c020a25..b8bd43d40 100644 --- a/searx/templates/eelo/base.html +++ b/searx/templates/eelo/base.html @@ -85,6 +85,19 @@ {% block content %} {% endblock %} + +