diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0265e11fb..d99ba9156 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -8,13 +8,6 @@ updates: day: "friday" open-pull-requests-limit: 5 target-branch: "master" - - package-ecosystem: "npm" - directory: "/searx/static/themes/oscar" - schedule: - interval: "weekly" - day: "friday" - open-pull-requests-limit: 5 - target-branch: "master" - package-ecosystem: "npm" directory: "/searx/static/themes/simple" schedule: diff --git a/Makefile b/Makefile index 1e75f7bee..fe28e0f47 100644 --- a/Makefile +++ b/Makefile @@ -87,7 +87,7 @@ MANAGE += pyenv pyenv.install pyenv.uninstall MANAGE += pypi.upload pypi.upload.test MANAGE += format.python MANAGE += test.yamllint test.pylint test.pyright test.black test.pybabel test.unit test.coverage test.robot test.rst test.clean -MANAGE += themes.all themes.oscar themes.simple themes.simple.test pygments.less +MANAGE += themes.all themes.simple themes.simple.test pygments.less MANAGE += static.build.commit static.build.drop static.build.restore MANAGE += nvm.install nvm.clean nvm.status nvm.nodejs diff --git a/docs/admin/api.rst b/docs/admin/api.rst index 21d1a8626..7bf465404 100644 --- a/docs/admin/api.rst +++ b/docs/admin/api.rst @@ -24,7 +24,7 @@ Sample response "images", ], "default_locale": "", - "default_theme": "oscar", + "default_theme": "simple", "engines": [ { "categories": [ diff --git a/docs/admin/engines/nosql-engines.rst b/docs/admin/engines/nosql-engines.rst index 36a7c6713..a50b9c367 100644 --- a/docs/admin/engines/nosql-engines.rst +++ b/docs/admin/engines/nosql-engines.rst @@ -18,9 +18,8 @@ All of the engines above are just commented out in the :origin:`settings.yml dependencies before using them. By default, the engines use the ``key-value`` template for displaying results / -see :origin:`oscar <searx/templates/oscar/result_templates/key-value.html>` & -:origin:`simple <searx/templates/simple/result_templates/key-value.html>` -themes. If you are not satisfied with the original result layout, you can use +see :origin:`simple <searx/templates/simple/result_templates/key-value.html>` +theme. If you are not satisfied with the original result layout, you can use your own template, set ``result_template`` attribute to ``{template_name}`` and place the templates at:: diff --git a/docs/admin/engines/sql-engines.rst b/docs/admin/engines/sql-engines.rst index 147087786..d91383214 100644 --- a/docs/admin/engines/sql-engines.rst +++ b/docs/admin/engines/sql-engines.rst @@ -30,9 +30,8 @@ engines, e.g. ``database:`` ... query_str: ... By default, the engines use the ``key-value`` template for displaying results / -see :origin:`oscar <searx/templates/oscar/result_templates/key-value.html>` & -:origin:`simple <searx/templates/simple/result_templates/key-value.html>` -themes. If you are not satisfied with the original result layout, you can use +see :origin:`simple <searx/templates/simple/result_templates/key-value.html>` +theme. If you are not satisfied with the original result layout, you can use your own template, set ``result_template`` attribute to ``{template_name}`` and place the templates at:: diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst index ce7237677..761c96303 100644 --- a/docs/dev/search_api.rst +++ b/docs/dev/search_api.rst @@ -75,8 +75,8 @@ Parameters Filter search results of engines which support safe search. See if an engine supports safe search in the preferences page of an instance. -``theme`` : default ``oscar`` - [ ``oscar``, ``simple`` ] +``theme`` : default ``simple`` + [ ``simple`` ] Theme of instance. @@ -84,16 +84,6 @@ Parameters instance administrator deleted, created or renamed themes on their instance. See the available options in the preferences page of the instance. -``oscar-style`` : default ``logicodev`` - [ ``pointhi``, ``logicodev`` ] - - Style of Oscar theme. It is only parsed if the theme of an instance is - ``oscar``. - - Please note, available styles depend on an instance. It is possible that an - instance administrator deleted, created or renamed styles on their - instance. See the available options in the preferences page of the instance. - ``enabled_plugins`` : optional List of enabled plugins. diff --git a/manage b/manage index 79ee6a7a9..9428e8381 100755 --- a/manage +++ b/manage @@ -115,7 +115,6 @@ test.: clean : clean intermediate test stuff themes.: all : build all themes - oscar : build oscar theme simple : build simple theme pygments.: less : build LESS files for pygments @@ -554,9 +553,6 @@ node.env() { nodejs.ensure ( set -e - build_msg INSTALL "searx/static/themes/oscar/package.json" - npm --prefix searx/static/themes/oscar install - build_msg INSTALL "searx/static/themes/simple/package.json" npm --prefix searx/static/themes/simple install ) @@ -576,7 +572,6 @@ node.clean() { fi build_msg CLEAN "themes -- locally installed npm dependencies" ( set -e - npm --prefix searx/static/themes/oscar run clean npm --prefix searx/static/themes/simple run clean ) dump_return $? @@ -762,7 +757,6 @@ themes.all() { ( set -e pygments.less node.env - themes.oscar themes.simple ) dump_return $? @@ -771,14 +765,14 @@ themes.all() { themes.live() { local LIVE_THEME="${LIVE_THEME:-${1}}" case "${LIVE_THEME}" in - simple|oscar) + simple) theme="searx/static/themes/${LIVE_THEME}" ;; '') die_caller 42 "missing theme argument" ;; *) - die_caller 42 "unknown theme '${LIVE_THEME}' // [simple|oscar]'" + die_caller 42 "unknown theme '${LIVE_THEME}' // [simple]'" ;; esac build_msg GRUNT "theme: $1 (live build)" @@ -792,12 +786,6 @@ themes.live() { | grep -E --ignore-case --color 'error[s]?[:]? |warning[s]?[:]? |' } -themes.oscar() { - build_msg GRUNT "theme: oscar" - npm --prefix searx/static/themes/oscar run build - dump_return $? -} - themes.simple() { ( set -e build_msg GRUNT "theme: simple" diff --git a/searx/preferences.py b/searx/preferences.py index e493dadc0..cd943af66 100644 --- a/searx/preferences.py +++ b/searx/preferences.py @@ -362,11 +362,6 @@ class Preferences: locked=is_locked('doi_resolver'), choices=DOI_RESOLVERS ), - 'oscar-style': EnumStringSetting( - settings['ui']['theme_args']['oscar_style'], - locked=is_locked('oscar-style'), - choices=['', 'logicodev', 'logicodev-dark', 'pointhi'] - ), 'simple_style': EnumStringSetting( settings['ui']['theme_args']['simple_style'], locked=is_locked('simple_style'), diff --git a/searx/settings.yml b/searx/settings.yml index c476b1321..6e5556d0c 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -86,8 +86,6 @@ ui: # Open result links in a new tab by default # results_on_new_tab: false theme_args: - # default style of oscar - oscar_style: logicodev # style of simple theme: auto, light, dark simple_style: auto diff --git a/searx/settings_defaults.py b/searx/settings_defaults.py index e3efb8544..7110fce93 100644 --- a/searx/settings_defaults.py +++ b/searx/settings_defaults.py @@ -18,7 +18,6 @@ searx_dir = abspath(dirname(__file__)) logger = logging.getLogger('searx') OUTPUT_FORMATS = ['html', 'csv', 'json', 'rss'] LANGUAGE_CODES = ['all'] + list(l[0] for l in languages) -OSCAR_STYLE = ('logicodev', 'logicodev-dark', 'pointhi') SIMPLE_STYLE = ('auto', 'light', 'dark') CATEGORIES_AS_TABS = { 'general': {}, @@ -181,7 +180,6 @@ SCHEMA = { 'default_theme': SettingsValue(str, 'simple'), 'default_locale': SettingsValue(str, ''), 'theme_args': { - 'oscar_style': SettingsValue(OSCAR_STYLE, 'logicodev'), 'simple_style': SettingsValue(SIMPLE_STYLE, 'auto'), }, 'results_on_new_tab': SettingsValue(bool, False), diff --git a/searx/templates/oscar/messages/no_cookies.html b/searx/templates/simple/messages/no_cookies.html similarity index 82% rename from searx/templates/oscar/messages/no_cookies.html rename to searx/templates/simple/messages/no_cookies.html index 9bebc8ad1..a9898b4e3 100644 --- a/searx/templates/oscar/messages/no_cookies.html +++ b/searx/templates/simple/messages/no_cookies.html @@ -1,4 +1,4 @@ -{% from 'oscar/macros.html' import icon %} +{% from 'simple/icons.html' import icon %} <div class="alert alert-info fade in" role="alert"> <strong class="lead">{{ icon('info-sign') }} {{ _('Information!') }}</strong> {{ _('currently, there are no cookies defined.') }} diff --git a/searx/templates/simple/preferences.html b/searx/templates/simple/preferences.html index fef003d5e..2278237b5 100644 --- a/searx/templates/simple/preferences.html +++ b/searx/templates/simple/preferences.html @@ -399,7 +399,7 @@ {% endfor %} </table> {% else %} - {% include 'oscar/messages/no_cookies.html' %} + {% include 'simple/messages/no_cookies.html' %} {% endif %} <h4>{{ _('Search URL of the currently saved preferences') }} :</h4> <div class="selectable_url"> diff --git a/searxng_extra/update/update_pygments.py b/searxng_extra/update/update_pygments.py index 68aaad0f7..ca14868a2 100755 --- a/searxng_extra/update/update_pygments.py +++ b/searxng_extra/update/update_pygments.py @@ -17,75 +17,6 @@ from pygments.token import Comment, Error, Generic, Keyword, Literal, Name, Oper from searx import searx_dir - -class LogicodevStyle(Style): # pylint: disable=R0903 - """Logicodev style - based on https://github.com/searx/searx/blob/2a5c39e33c3306ca17e09211fbf5a0f785cb10c8/searx/static/themes/oscar/less/logicodev/code.less - """ # pylint: disable=C0301 - - background_color = '#282C34' - - styles = { - # fmt: off - Comment: "#556366 italic", - Comment.Multiline: "#556366 italic", - Comment.Preproc: "#BC7A00", - Comment.Single: "#556366 italic", - Comment.Special: "#556366 italic", - Error: "border:#ff0000", - Generic.Deleted: "#A00000", - Generic.Emph: "italic", - Generic.Error: "#FF0000", - Generic.Heading: "#000080 bold", - Generic.Inserted: "#00A000", - Generic.Output: "#888888", - Generic.Prompt: "#000080 bold", - Generic.Strong: "bold", - Generic.Subheading: "#800080 bold", - Generic.Traceback: "#0044DD", - Keyword: "#BE74D5 bold", - Keyword.Constant: "#BE74D5 bold", - Keyword.Declaration: "#BE74D5 bold", - Keyword.Namespace: "#BE74D5 bold", - Keyword.Pseudo: "#BE74D5", - Keyword.Reserved: "#BE74D5 bold", - Keyword.Type: "#D46C72", - Literal.Number: "#D19A66", - Literal.String: "#86C372", - Literal.String.Backtick: "#86C372", - Literal.String.Char: "#86C372", - Literal.String.Doc: "#86C372 italic", - Literal.String.Double: "#86C372", - Literal.String.Escape: "#BB6622 bold", - Literal.String.Heredoc: "#86C372", - Literal.String.Interpol: "#BB6688 bold", - Literal.String.Other: "#BE74D5", - Literal.String.Regex: "#BB6688", - Literal.String.Single: "#86C372", - Literal.String.Symbol: "#DFC06F", - Name.Attribute: "#7D9029", - Name.Builtin: "#BE74D5", - Name.Builtin.Pseudo: "#BE74D5", - Name.Class: "#61AFEF bold", - Name.Constant: "#D19A66", - Name.Decorator: "#AA22FF", - Name.Entity: "#999999 bold", - Name.Exception: "#D2413A bold", - Name.Function: "#61AFEF", - Name.Label: "#A0A000", - Name.Namespace: "#61AFEF bold", - Name.Tag: "#BE74D5 bold", - Name.Variable: "#DFC06F", - Name.Variable.Class: "#DFC06F", - Name.Variable.Global: "#DFC06F", - Name.Variable.Instance: "#DFC06F", - Operator: "#D19A66", - Operator.Word: "#AA22FF bold", - Text.Whitespace: "#D7DAE0", - # fmt: on - } - - CSSCLASS = '.code-highlight' RULE_CODE_LINENOS = """ .linenos { -webkit-touch-callout: none; @@ -128,16 +59,6 @@ def get_css(cssclass, style): def main(): - fname = 'static/themes/oscar/src/generated/pygments-logicodev.less' - print("update: %s" % fname) - with open(get_output_filename(fname), 'w') as f: - f.write(get_css(CSSCLASS, LogicodevStyle)) - - fname = 'static/themes/oscar/src/generated/pygments-pointhi.less' - print("update: %s" % fname) - with open(get_output_filename(fname), 'w') as f: - f.write(get_css(CSSCLASS, 'default')) - fname = 'static/themes/simple/src/generated/pygments.less' print("update: %s" % fname) with open(get_output_filename(fname), 'w') as f: diff --git a/tests/robot/settings_robot.yml b/tests/robot/settings_robot.yml index 226704803..f2c38a7cf 100644 --- a/tests/robot/settings_robot.yml +++ b/tests/robot/settings_robot.yml @@ -24,7 +24,7 @@ server: ui: static_path: "" templates_path: "" - default_theme: oscar + default_theme: simple preferences: lock: [] diff --git a/tests/robot/test_webapp.py b/tests/robot/test_webapp.py index cc1550c36..1009c6b70 100644 --- a/tests/robot/test_webapp.py +++ b/tests/robot/test_webapp.py @@ -10,7 +10,7 @@ url = "http://localhost:11111/" def test_index(browser): # Visit URL browser.visit(url) - assert browser.is_text_present('about') + assert browser.is_text_present('searxng') def test_404(browser): @@ -21,54 +21,54 @@ def test_404(browser): def test_about(browser): browser.visit(url) - browser.click_link_by_text('about') + browser.click_link_by_text('searxng') assert browser.is_text_present('Why use it?') def test_preferences(browser): browser.visit(url) - browser.click_link_by_text('preferences') + browser.click_link_by_href('/preferences') assert browser.is_text_present('Preferences') - assert browser.is_text_present('Cookies') + assert browser.is_text_present('COOKIES') assert browser.is_element_present_by_xpath('//label[@for="checkbox_dummy"]') def test_preferences_engine_select(browser): browser.visit(url) - browser.click_link_by_text('preferences') + browser.click_link_by_href('/preferences') - assert browser.is_element_present_by_xpath('//a[@href="#tab_engine"]') - browser.find_by_xpath('//a[@href="#tab_engine"]').first.click() + assert browser.is_element_present_by_xpath('//label[@for="tab-engines"]') + browser.find_by_xpath('//label[@for="tab-engines"]').first.click() assert not browser.find_by_xpath('//input[@id="engine_general_dummy__general"]').first.checked browser.find_by_xpath('//label[@for="engine_general_dummy__general"]').first.check() - browser.find_by_xpath('//input[@value="save"]').first.click() + browser.find_by_xpath('//input[@type="submit"]').first.click() # waiting for the redirect - without this the test is flaky.. sleep(1) browser.visit(url) - browser.click_link_by_text('preferences') - browser.find_by_xpath('//a[@href="#tab_engine"]').first.click() + browser.click_link_by_href('/preferences') + browser.find_by_xpath('//label[@for="tab-engines"]').first.click() assert browser.find_by_xpath('//input[@id="engine_general_dummy__general"]').first.checked def test_preferences_locale(browser): browser.visit(url) - browser.click_link_by_text('preferences') + browser.click_link_by_href('/preferences') - browser.find_by_xpath('//a[@href="#tab_ui"]').first.click() - browser.select('locale', 'hu') - browser.find_by_xpath('//input[@value="save"]').first.click() + browser.find_by_xpath('//label[@for="tab-ui"]').first.click() + browser.select('locale', 'fr') + browser.find_by_xpath('//input[@type="submit"]').first.click() # waiting for the redirect - without this the test is flaky.. sleep(1) browser.visit(url) - browser.click_link_by_text('beállítások') - browser.is_text_present('Beállítások') + browser.click_link_by_href('/preferences') + browser.is_text_present('Préférences') def test_search(browser): diff --git a/tests/unit/test_preferences.py b/tests/unit/test_preferences.py index 40cfd006b..4fc6007d9 100644 --- a/tests/unit/test_preferences.py +++ b/tests/unit/test_preferences.py @@ -119,17 +119,32 @@ class TestPreferences(SearxTestCase): def test_encode(self): from searx.preferences import Preferences - pref = Preferences(['oscar', 'simple'], ['general'], {}, []) + pref = Preferences(['simple'], ['general'], {}, []) url_params = ( - 'eJx1VMmO2zAM_Zr6YrTocujJh6JF0QEKzKAz7VVgJNohLIseUU7ivy-VcWy5yyGOTVGP73GLKJNPYjiYgGeT4NB8BS9YOSY' - 'TUdifMDYM-vmGY1d5CN0EHTYOK88W_PXNkcDBozOjnzoK0vyi4bWnHs2RU4-zvHr_-RF9a-5Cy3GARByy7X7EkKMoBeMp9CuPQ-SzYMx' - '8Vr9P1qKI-XJ_p1fOkRJWNCgVM0a-zAttmBJbHkaPSZlNts-_jiuBFgUh2mPztkpHHLBhsRArDHvm356eHh5vATS0Mqagr0ZsZO_V8hT' - 'B9srt54_v6jewJugqL4Nn_hYSdhxnI-jRpi05GDQCStOT7UGVmJY8ZnltRKyF23SGiLWjqNcygKGkpyeGZIywJfD1gI5AjRTAmBM55Aw' - 'Q0Tn626lj7jzWo4e5hnEsIlprX6dTgdBRpyRBFKTDgBF8AasVyT4gvSTEoXRpXWRyG3CYQYld65I_V6lboILTMAlZY65_ejRDcHgp0Tv' - 'EPtGAsqTiBf3m76g7pP9B84mwjPvuUtASRDei1nDF2ix_JXW91UJkXrPh6RAhznVmKyQl7dwJdMJ6bz1QOmgzYlrEzHDMcEUuo44AgS1' - 'CvkjaOb2Q2AyY5oGDTs_OLXE_c2I5cg9hk3kEJZ0fu4SuktsIA2RhuJwP86AdripThCBeO9uVUejyPGmFSxPrqEYcuWi25zOEXV9tc1m' - '_KP1nafYtdfv6Q9hKfWmGm9A_3G635UwiVndLGdFCiLWkONk0xUxGLGGweGWTa2nZYZ0fS1YKlE3Uuw8fPl52E5U8HJYbC7sbjXUsrnT' - 'XHXRbELfO-1fGSqskiGnMK7B0dV3t8Lq08pbdtYpuVdoKWA2Yjuyah_vHp2rZWjo0zXL8Gw8DTj0=' + 'eJx1Vk1z4zYM_TXxRZNMd7eddg8-pe21nWnvGoiEJEQkofDDtvzrC1qSRdnbQxQTBA' + 'Hw8eGRCiJ27AnDsUOHHszBgOsSdHjU-Pr7HwfDCkweHCBFVmxHgxGPB7LiU4-eL9Px' + 'TzABDxZjz_r491___HsI0GJA8Ko__nSIPVo8BspLDx5DMjHU7GqH5zpCsyzXTLVMsj' + 'mhPzLI8I19d5iX1SFOUkUu4QD6BE6hrpcE8_LPhH6qydWRonjORnItOYqyXHk2Zs1E' + 'ARojAdB15GTrMA6VJe_Z13VLBsPL1_ccmk5YUajrBRqxNhSbpAaMdU1Rxkqp13iq6x' + 'Np5LxMI15RwtgUSOWx7iqNtyqI3S4Wej6TrmsWfHx2lcD5r-PSa7NWN8glxPxf5r5c' + 'ikGrPedw6wZaj1gFbuMZPFaaPKrIAtFceOvJDQSqCNBRJ7BAiGX6TtCEZt0ta2zQd8' + 'uwY-4MVqOBqYJxDFvucsbyiXLVd4i6kbUuMeqh8ZA_S1yyutlgIQfFYnLykziFH9vW' + 'kB8Uet5iDKQGCEWBhiSln6q80UDlBDch4psPSy1wNZMnVYR2o13m3ASwreQRnceRi2' + 'AjSNqOwsqWmbAZxSp_7kcBFnJBeHez4CKpKqieDQgsQREK5fNcBB_H3HrFIUUeJo4s' + 'Wx7Abekn6HnHpTM10348UMM8hEejdKbY8ncxfCaO-OgVOHn1ZJX2DRSf8px4eqj6y7' + 'dvv162anXS6LYjC3h1YEt_yx-IQ2lxcMo82gw-NVOHdj28EdHH1GDBFYuaQFIMQsrz' + 'GZtiyicrqlAYznyhgd2bHFeYHLvJYlHfy_svL7995bOjofp4ef_55fv36zRANbIJA2' + 'FX0C_v34oE3Es9oHtQIOFFZcilS5WdV_J5YUHRoeAvdCrZ0IDTCuy4sTOvHvMe96rl' + 'usfxs5rcrLuTv1lmOApYmqip6_bEz4eORSyR2xA8tmWxKnkvP3fM0Hgi4bpstFisWR' + 'TWV31adSdvSkPc7SkKbtOOTxgny05ALE6pNdL5vhQ5dFQKhYxjbpJZ0ChuSWcN22nh' + 'rGpPwC32HXSL7Qm8xf6Dzu6XfLfk19dFoZ4li1sRD9fJVVnWYOmiDCe97Uw0RGi4am' + 'o-JJA7IMMYUO7fIvM6N6ZG4ILlotrPhyjXSbSQqQZj7i2d-2pzGntRIHefJS8viwaK' + '-iW6NN9uyTSuTP88CwtKrG-GPaSz6Qn92fwEtGxVk4QMrAhMdev7m6yMBLMOF86iZN' + 'JIe_xEadXAQuzW8HltyDCkJrmYVqVOI_oU7ijL64W03LLC81jcA8kFuQpDX1R90-b9' + '_iZOD2J1t9xfE0BGSJ5PqHA7kUUudYuG7HFjz12C2Mz3zNhD8eQgFa_sdiy3InNWHg' + 'pV9OCCkWPUZRivRfA2g3DytC3fnlajSaJs4Zihvrwto7eeQxRVR3noCSDzhbZzYKjn' + 'd-DZy7PtaVp2WgvPBpzCXUL_J1OGex48RVmOXzBU8_N3kqekkefRDzxNK2_Klp9mBJ' + 'wsUnXyRqq1mScHuYalUY7_AZTCR4s=&q=' ) pref.parse_encoded_data(url_params) self.assertEqual( diff --git a/utils/lib_static.sh b/utils/lib_static.sh index 2a5efeda0..c8a379fb3 100755 --- a/utils/lib_static.sh +++ b/utils/lib_static.sh @@ -4,10 +4,6 @@ STATIC_BUILD_COMMIT="[build] /static" STATIC_BUILT_PATHS=( - 'searx/static/themes/oscar/css' - 'searx/static/themes/oscar/js' - 'searx/static/themes/oscar/src/generated/pygments-logicodev.less' - 'searx/static/themes/oscar/src/generated/pygments-pointhi.less' 'searx/static/themes/simple/css' 'searx/static/themes/simple/js' 'searx/static/themes/simple/src/generated/pygments.less'