Commit Graph

42 Commits

Author SHA1 Message Date
Markus Heiser 580815a9a5 [fix] stop less grunt runner on missing files
The less grunt runner silently ignore missing files and continue with the build[1]::

    Running "less:production" (less) task
    >> Destination css/searxng.min.css not written because no source files were found.
    >> 1 stylesheet created.
    >> 1 sourcemap created.

Add filter function that calls grunt.fail() if the scr file does not exists.

[1] https://github.com/searxng/searxng/pull/750#discussion_r784357031
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-01-14 13:16:24 +01:00
mrpaulblack 414f1039d2 [fix] theme: build `img_load_error.svg` as svg 2021-12-18 21:24:59 +01:00
Markus Heiser f287787c44 [simple theme] activate - SearXNG JavaScript Style Guide
Add the 'SearXNG JavaScript Style Guide' as one quality gate in the build chain
of the simple theme::

    make themes.simple
    make themes.simple.test

In the github CI the `themes.all` target enforce a `themes.simple`.

BTW: Remove 'jshint' left overs from 0ee316f3d

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-14 07:50:53 +01:00
Markus Heiser 34f5e9c7a3 [fix] eslint --fix
automatically fix some of the problems reported by eslint rules::

    $ ./manage nvm.bash
    nvm-env$ npm --prefix searx/static/themes/simple run eslint-fix

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-14 07:31:58 +01:00
Markus Heiser 32cf24a272 [mod] eslint: add gruntfile.js to the files to lint
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-14 07:26:41 +01:00
Markus Heiser 06730588a6 [mod] SearXNG JavaScript Style Guide (eslint:recommended)
The SearXNG JavaScript Style Guide is a set of eslint rules [1] based on the
eslint:recommended [2] rules.

    "extends": "eslint:recommended"

The additional rules adopted from the JavaScript Standard Style [3][4].

[1] https://eslint.org/docs/rules/
[2] https://github.com/kunalgolani/eslint-config/tree/master/packages/recommended
[3] https://standardjs.com/rules.html#javascript-standard-style
[4] https://github.com/standard/eslint-config-standard/blob/master/.eslintrc.json

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-14 06:50:26 +01:00
Markus Heiser 7d6a15a612 [fix] simple theme: make LESS sources available on non build hosts
Include the LESS source files directly in the `.map` files [1].

Drawback: `.map` files grow up in size, but this should not bother, because the
files are only loaded in debug mode.

[1] https://github.com/gruntjs/grunt-contrib-less#outputsourcefiles
[2] https://github.com/searxng/searxng/pull/575#issuecomment-984058868

Suggested-by: @dalf [2]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-04 11:22:40 +01:00
Markus Heiser f54460a805 [fix] simple theme: make JS sources available on non build hosts
Include the source files directly in the `.map` files [1] for two reasons:

1. In the simple theme, modules from `./node_modules` are only available on
   developer's build host (a `make node.env` is needed to get the sources).  By
   example; in the `searxng.min.js.map` file, the `autocomplete.js` is linked at
   URL:

      ../node_modules/autocomplete-js/dist/autocomplete.js

2. Later, when client sources has been moved out of the `./static` URL [2] to
   the `<repo-roo>/src` folder, all JS sources are no longer available.

Drawback: `.map` files grow up in size, but this should not bother, because the
files are only loaded in debug mode.

[1] https://github.com/gruntjs/grunt-contrib-uglify#sourcemapincludesources
[2] https://github.com/searxng/searxng/issues/141

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-01 21:09:26 +01:00
Markus Heiser 82125862c6 [fix] simple theme: remove static files no longer needed
remove:

    searx/static/themes/simple/js/searxng.js
    searx/static/themes/simple/js/searxng.head.js
    searx/static/themes/simple/css/searxng-rtl.css
    searx/static/themes/simple/css/searxng.css

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-12-01 10:38:41 +01:00
Alexandre Flament 28b22a0f98 [mod] simple theme: smaller build
remove:
* searx/static/themes/simple/js/searxng.head.js
* searx/static/themes/simple/js/searxng.js
* searx/static/themes/simple/css/searxng-rtl.css
* searx/static/themes/simple/css/searxng.css

These files are never used.
About the js files: the .map files references the sources instead of the concated version.
2021-11-30 23:04:37 +01:00
Markus Heiser eff0884498 [simple] ImageLayout.watch: `img_load_error.svg` if img load fails
Show default image `img/img_load_error.svg` when image can't be loaded.

----
Some words about class ImageLayout:

The https://github.com/searxng/searxng/blob/master/searx/static/themes/simple/js/searxng.js is build by a grunt task ..

d0e21a01b4/searx/static/themes/simple/gruntfile.js (L91-L93)

The `/__common__/js/*.js` concats also https://github.com/searxng/searxng/blob/master/searx/static/themes/__common__/js/image_layout.js where a modified copy of the of the "Google-image-layout" (`ImageLayout`) is implemented [1][2][3].

[1] https://ptgamr.github.io/2014-09-12-google-image-layout/
[2] https://ptgamr.github.io/google-image-layout/src/google-image-layout.js
[3] https://github.com/ptgamr/google-image-layout/tree/master
----

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-29 21:10:13 +01:00
Markus Heiser 944b73511a [enh] add SVG favicon href="favicon.svg" type="image/svg+xml"
Add link::

    <link rel="icon" href="favicon.png" sizes="any">
    <link rel="icon" href="favicon.svg" type="image/svg+xml">

Modern browsers should request::

    INFO  werkzeug   : 127.0.0.1 - - [28/Nov/2021 17:03:07] "GET /static/themes/simple/img/favicon.svg HTTP/1.1" 200 -

[1] https://github.com/audreyfeldroy/favicon-cheat-sheet#svg-file
[2] https://dev.to/masakudamatsu/favicon-nightmare-how-to-maintain-sanity-3al7

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-29 20:36:31 +01:00
Markus Heiser 9349c71c54 [mod] themes/simple/img/searxng.svg -> src/brand/searxng.svg
* move `searx/static/themes/simple/img/searxng.svg` to `src/brand/searxng.svg`

* README.rst can use it without a reference to a theme.

* the simple theme can create `searx/static/themes/simple/img/searxng.png` using
  the svg2png task

Suggested-by: @dalf https://github.com/searxng/searxng/pull/561#issuecomment-981747902
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-29 19:53:28 +01:00
Alexandre Flament 59f4c792b4 [mod] simple theme: use sharp instead of convert to create .png from .svg
define a custom grunt task, since grunt-sharp is too old (it can't be installed).
in gruntfile.js, the image tasks are moved at the end the build chain.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-28 20:05:37 +01:00
Markus Heiser 8c4c4259d4 [mod] gruntfile: do some polish (no functional change)
- remove unused 'path' constant
- fix indentation
- Put all image tasks at the end, where it is easy to list which image is processed.

Suggested -by: @dalf https://github.com/searxng/searxng/pull/541#discussion_r756247157
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-28 20:04:10 +01:00
Markus Heiser 4330d7cf5d [mod] gruntfile.js - define grunt.template _brand & _templates
[1] https://gruntjs.com/api/grunt.template

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-20 10:49:21 +01:00
Markus Heiser c68c53acd8 [brand] initial - folder src/brand for searxng-wordmark
Folder src/brand is intended to place logo, wordmark and more in.  This commit
moves the origin (source) of searxng-wordmark.svg from the simple theme into
this folder

About the new created src/ folder:

On the long term we can move all the files from static/themes/<name>/src/* into
a src/themes/<name>/* folder.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-20 10:14:55 +01:00
Markus Heiser 15758f1ac2 [fix] eslint - option configFile changed to overrideConfigFile
https://github.com/sindresorhus/grunt-eslint/pull/171

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-17 20:17:47 +01:00
Markus Heiser b07884c958 [fix] Optimize SVG for WEB usage / CSP 'style-src self'
- Replace grunt-contrib-htmlmin by grunt-image [1].

- Activate svgo's [2] convertStyleToAttrs to make the HTML inline SVGs
  compoliant to the CSP policy [3]::

    Content-Security-Policy: style-src self;

[1] https://www.npmjs.com/package/grunt-image
[2] https://github.com/svg/svgo
[3] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src

Closes: https://github.com/searxng/searxng/issues/502

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-15 14:51:55 +01:00
Markus Heiser b369ff4425 [fix] delete trailing whitespace
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-13 15:51:08 +01:00
MrPaulBlack 566dfe3330 [simple theme] update to ion icons 5 and drop webfont
* update from ionicons-npm to ionicons ver.5
* drop the webfont built by grunt for icons
* built icons.html template for inlining icons with jinja2 into html
* update icon to use mostly the outline version
* add icons to categories and do not display them on mobile to save space
* remove all legacy ion icon font files from simple theme
* icons.html is added in this commit since make statc.build.restore requires git to know the file already
* cleanup error-dialog
2021-11-13 10:42:07 +01:00
Markus Heiser bf52353a5c [enh] minify searxng-wordmark.svg (HTMLMinifier)
Command::

  ./node_modules/.bin/html-minifier \
      --remove-comments \
      --collapse-whitespace \
      src/svg/searxng-wordmark.svg \
      -o ../../../templates/__common__/searxng-wordmark.min.svg

- html-minifier: https://github.com/kangax/html-minifier
  - onilne: https://kangax.github.io/html-minifier
  - grunt: https://www.npmjs.com/package/grunt-contrib-htmlmin
  - grunt-contrib-htmlmin: https://github.com/gruntjs/grunt-contrib-htmlmin
  - npm: https://www.npmjs.com/package/html-minifier

To test, rebuild your node environment::

  make node.env

Alternatives:

- pretty-data: https://github.com/vkiryukhin/pretty-data
  - grunt: https://www.npmjs.com/package/grunt-xmlmin
  - grunt-xmlming: https://github.com/dtrunk90/grunt-xmlmin
  - npm: https://www.npmjs.com/package/grunt-xmlmin

- minify-xml: https://github.com/kristian/minify-xml
  - no grunt package available
  - npm: https://www.npmjs.com/package/minify-xml

src/svg/searxng-wordmark.svg':
'../../../templates/__common__/searxng-wordmark.min.svg'

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-11-13 09:05:20 +01:00
Alexandre Flament 74b0830362 SearXNG: simple theme 2021-10-01 18:06:55 +02:00
Alexandre Flament 0ee316f3d1 eslint: grunt integration 2021-08-31 12:20:23 +02:00
Markus Heiser 2948a99b6e [mod] simple theme - add ESLint
[1] https://eslint.org/
[2] https://eslint.org/docs/user-guide/configuring/
[3] https://eslint.org/docs/user-guide/command-line-interface

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-08-31 12:20:23 +02:00
Markus Heiser 76a066d4a3 [mod] themes: remove banner generated by grunt
The banner is useless and responsible for unwanted diff.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-06-28 10:38:44 +02:00
Markus Heiser a3f58a3a3d [emacs] .dir-locals.el: add setup for js-mode
- move jshint option from gruntfile to .jshintrc
- remove trailing-whitespace from gruntfile and
- add jshint esversion: 6
- .dir-locals.el add locals for js-mode to use JSHint from the simple theme

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-06-24 13:27:21 +02:00
Markus Heiser dfc5c3bc15 [mod] add stylelint process to target themes.simple
Before build, do lint the LESS files using stylelint [1].  The configuration
'stylelint-config-standard' [2] is added to the root of the simple theme [3].

[1] https://stylelint.io/
[2] https://github.com/stylelint/stylelint-config-standard
[3] https://stylelint.io/user-guide/configure

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-06-24 13:27:21 +02:00
Alexandre Flament dca3bcca9e [mod] simple theme: include fonts
"npm run webfont" to build the fonts directory.
It requires fontforge and ttfautohint distro packages.

partial revert of commit 7137d2893f
2021-06-22 08:15:17 +02:00
Alexandre Flament 7137d2893f [mod] simple theme: remove src/less/ion.less
This file is generated by webfont.
* It is now generated as searx/static/themes/simple/ion.less
* It is generated before the .less compilation.
* .gitignore includes this file

Add two new package depedencies: fontforge ttfautohint
See utils/searx.sh
2021-06-16 14:30:09 +02:00
Alexandre Flament e3ebfd41d7 [mod] simple theme: autocomplete-js becomes a packages.json dependency
Update to version 2.7.1
2021-06-16 12:44:07 +02:00
Alexandre Flament b4a47cacd8 [mod] simple theme: leaflet becomes a packages.json dependency
the build of the themes updates:
* js/leaflet.js ( was leaflet/leaflet.js )
* css/leaflet.css ( was leaflet/leaflet.css )
* css/images ( was leaflet/images )
2021-06-16 12:44:07 +02:00
Alexandre Flament 6288b549e2 [mod] simple theme: move magnet.svg to src/fonts
see https://github.com/searx/searx/pull/1109
2021-06-16 12:44:07 +02:00
Alexandre Flament 6b80c57a3c [mod] simple theme: move source files to the src directory 2021-06-16 12:38:06 +02:00
Markus Heiser 965817f294 [fix] simple theme - generate missing sourceMap file
C&P from searx/static/themes/oscar/gruntfile.js

Suggested-by: @dalf in commit 1204e4f0
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2021-05-17 17:41:22 +02:00
Alexandre Flament 7a0fbdecc4 [enh] oscar: image thumbnail layout
Adjust thumbnail sizes to fill the container width
2021-04-05 11:29:17 +02:00
Markus Heiser 757ebb5d9f [fix] brands: add variables from build env to grunt process
We have some variables in the build environment which are also needed in the
grunt process when building themes.  Theses variables are relavant if one
creates a fork with its own branding.  We treat these variables under the term
'brands'.

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2020-03-25 14:09:47 +01:00
Dalf 6fbba63c83 oscar and simple themes: no inline script (allow A+ Content-Security-Policy) 2019-08-06 12:14:11 +02:00
Alex 3ba0d0516e simple theme update
- npm package update
- apply #1226
- implement vim help dialog
- display cookies and search URL with preferences
- allow to enable / disable Open Access DOI rewrite
- add a clear text button on the left of the search button
- implement #1011 : the HTML title page is not set when using POST
- remove searx/static/themes/simple/img/loader.gif
- use full width when only there are only images as result
2018-08-14 17:21:30 +02:00
Dalf 9babe06a0e [mod] simple theme: add the license to different files. 2017-11-26 14:33:11 +01:00
Alexandre Flament 57dc6b625f [fix] travis build : various fix about grunt builds 2017-08-13 13:41:59 +02:00
Alexandre Flament 10a24bdc2c [enh] add simple theme (WIP) 2017-08-06 16:04:21 +02:00