Commit Graph
792 Commits
Author SHA1 Message Date
Alexandre Alapetite 635748342c Fix init system (#3328)
#fix https://github.com/FreshRSS/FreshRSS/issues/3323
System would crash when no `FRESHRSS_ENV` environment was set, due to

https://github.com/FreshRSS/FreshRSS/blob/31cb07ac1acf7bad8c1bf6bbef45a17f4e0edbf3/lib/Minz/FrontController.php#L116-L119
2021-01-03 12:57:42 +01:00
Alexandre Alapetite 9c6682e7ed Avoid manual initialisations of system or user configuration (#3070)
* Avoid manual intialisations of system or user configuration

More consistent use of Context

* Simplify FreshRSS_Context::initUser

* Remove a few manual get_user_configuration

* A bit of debugging

* Fix context user init

* Fix install

* Fix concurrency

Concurrent requests could lead to bad race condition

* Fix actualize cron

Fix case when system i initialised several times
2021-01-02 21:20:19 +01:00
Alexandre Alapetite 5ca961b8d5 Fix bugs in anomymous mode (#3305)
* Fix bugs in anomymous mode

Login bug (submit button not working) and refresh bug (JS null
exception, and then 403).

* Take advantage of existing variable
2020-12-31 00:13:29 +01:00
Alexandre Alapetite 48e0464e4b Prevent login before extra.js is loaded (#3275)
Disable submit button until extra.js with its crypto functions is
loaded.
2020-12-22 17:36:50 +01:00
thamerxandFrans de Jonge c700fd370c Fixes a minor jaggy motion of the sidebar. (#3266)
* Fixes a minor jaggy motion of the sidebar.

Fixes jaggy motion of the sidebar while scrolling on mobile clients.

I didn't try many values aside from %200 cause it worked very well from the first time. I was using a Galaxy S8+

* Update p/themes/base-theme/template.css

this one also works just as fine

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2020-11-26 20:53:03 +01:00
Alexandre Alapetite 6887ba0592 API fix continuation type (#3250)
#fix https://github.com/FreshRSS/FreshRSS/issues/3247
2020-11-12 09:36:33 +01:00
Prashant TholiaandAlexandre Alapetite 6f23999c7b Remember open categories (#3185)
* feature(normal) - Remember opened categories in the left menu

Session storage based implementation to remember opened categories in left menu

Issue Ref: #2248

* lib_phpQuery updates

* Updates covering feedback points and functionality fixes

* Feedback updates

* Revert "lib_phpQuery updates"

This reverts commit dcd23b9418.

* First review

Change variable name to "remember" instead of "open".
Start using localStorage instead of sessionStorage.
Simplify code.

* Simplify remember categories init function

Replace 'session' with 'local' in function names and comment

Set open categories CSS as same as when category is opened in 'active' unfold mode

* Remove URLSearchParams check in remember categories init function

* Delete open categories on login and logout

* JSHint check fix

* Second review

* Make new mode the default for new users
* Always open active category
* Reduce / simplify code

* i18n French

* Revert default value

Wait a bit more for this decision / change

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-11-02 12:03:16 +01:00
Alexandre Alapetite a69a7531b6 Remember sidebar position (#3231)
#fix https://github.com/FreshRSS/FreshRSS/issues/3209
Extracted from https://github.com/FreshRSS/FreshRSS/pull/3185
2020-10-19 11:38:27 +02:00
Alexandre Alapetite 191cda42e6 Misc. minor
Whitespace...
2020-10-11 10:59:43 +02:00
Alexandre Alapetite 0319cc9d23 Minz allow parallel sessions (#3096)
* Minz allow parallel sessions

#fix https://github.com/FreshRSS/FreshRSS/issues/3093

* Array optimisation

* Array optimisation missing

* Reduce direct access to $_SESSION except in install process

* Fix session start headers warning

* Use cookie only the first time the session is started:
`PHP Warning:  session_start(): Cannot start session when headers
already sent in /var/www/FreshRSS/lib/Minz/Session.php on line 39`

* New concept of volatile session for API calls

Optimisation: do not use cookies or local storage at all for API calls
without a Web session
Fix warning:

```
PHP Warning:  session_destroy(): Trying to destroy uninitialized session
in Unknown on line 0
```

* Only call Minz_Session::init once in our index

It was called twice (once indirectly via FreshRSS->init())

* Whitespace

* Mutex for notifications

Implement mutex for notifications
https://github.com/FreshRSS/FreshRSS/pull/3208#discussion_r499509809

* Typo

* Install script is not ready for using Minz_Session
2020-10-06 23:19:45 +02:00
Andrew Rabert e65544d39e Optimize images (#3184)
Used `oxipng --zopfli --opt max --strip all`
2020-10-03 13:42:18 +02:00
flo0627 6e610e501d Add toggle password visibility button on login form (#3205)
* Add password observer for login view and update Origine theme

* Update Alternative-Dark style

* Update BlueLagoon theme

* Update Dark theme

* Update Flat theme

* Update Screwdriver theme

* Update Origine-compact theme

* Update Pafat theme

* Coding style
2020-10-03 13:35:49 +02:00
Frans de Jonge faca82962c Silence new stylelint complaint (#3197)
Cf. https://github.com/FreshRSS/FreshRSS/pull/3196#issuecomment-699928812

```
p/themes/Ansum/_layout.scss
 42:4  ✖  Unexpected empty line before rule   rule-empty-line-before
p/themes/Mapco/_layout.scss
 42:4  ✖  Unexpected empty line before rule   rule-empty-line-before
```
2020-09-29 11:38:23 +02:00
Frans de Jonge b93f42e951 [fix] Add text color to base theme (#3196) 2020-09-28 12:26:19 +02:00
Alexandre Alapetite f1fe2147a1 Readme + Travis 2020-09-16 01:02:45 +02:00
Alexandre Alapetite 6fac0e40c4 Fix tag in user query (#3168)
* Fix tag in user query

#fix https://github.com/FreshRSS/FreshRSS/issues/3163

* Fix Travis
2020-09-02 08:55:43 +02:00
Alexandre Alapetite b7fd6d2d94 Show feed name inside the article (#3081)
* Show feed name inside the article

#fix https://github.com/FreshRSS/FreshRSS/issues/3079

* Normal view add date in subtitle

#fix
https://github.com/FreshRSS/FreshRSS/issues/3079#issuecomment-650109551
2020-07-13 15:46:50 +02:00
Alexandre Alapetite f98a092566 Dropdown menu max-height (#3102)
Reduce it on big screens
2020-07-11 13:23:10 +02:00
Marien FressinaudandAlexandre Alapetite 8619cf6fa6 Add a migration system (#2760)
* Add a Minz_Migrator class

Until now, we updated the database structure somewhere in the code but
it wasn't always consistent and somehow complicated to find. Also, this
code was always checked for nothing.

The Migrator aims to improve and ease the creation of migrations. It
should improve the way we apply the updates, making the update server
almost useless.

References:

- example of migration (before Migrator): https://github.com/FreshRSS/FreshRSS/commit/cc0db9af4f980829faa4bf0960617807b32fb4fa#diff-11a53443fa81512b128c66b065df0679R10
- update server: https://github.com/FreshRSS/update.freshrss.org
- PR moving the code of the update server to the core: https://github.com/FreshRSS/FreshRSS/pull/1760

* Automatically apply migrations

For now, administrators are used to have nothing to do during an update
else than getting the new code. I suggest to keep this behaviour and
automatically apply migrations if we detect new ones.

Another solution would be to create a CLI command and ask admins to call
it after getting the new code. It could hide migrations errors to end
users, but admin can forget to apply migrations since there are not used
to it.

* Add documentation for Minz Migrator

* Execute migrations even if next ones are applied

* Change mechanism to prevent multiple update at once

* Use mkdir to create the lock and to test it exists

Reference: https://stackoverflow.com/a/731634

* Append .lock to applied_migrations_path

There are no needs to define another file to serve as a lock.

* Change migrations naming convention

* Apply suggestions from code review

Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr>

* Perform a low-cost migration versions comparaison

* Clarify version numbers concerning the migration system

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-07-08 12:11:55 +02:00
Alexandre Alapetite 5bb47918e3 API Compatbility Reeder (#3073)
#fix
https://github.com/FreshRSS/FreshRSS/issues/3031#issuecomment-646973334
Reeder sends e.g. `feed/feed/247`
2020-06-20 22:46:27 +02:00
Alexandre Alapetite a0256023a1 API discard common Path Info errors (#3061)
Some apps auto-complete `/api/greader.php` while some do not.
Discard common errors instead of failing, to be more user-friendly.
E.g. if the user types the full API URL in Readrops https://github.com/FreshRSS/FreshRSS/issues/3059#issuecomment-644149548
2020-06-19 23:01:51 +02:00
Alexis Degrugillier caeb660f29 Add a way to disable/enable users (#3056)
If you want to block users without deleting their account, you can now
disable them from the interface.
2020-06-14 19:50:09 +02:00
Petra Lamborn 7a748e25ab Fix inline code tag contrast in ansum.css (#3050)
* Remove line from ansum.css, fixing contrast

As with #3047 #3048, current behavior produces very pale-on-white text in inline code tags

* Update CREDITS.md

#3048 and related
2020-06-13 00:22:14 +02:00
Alexandre Alapetite e6105fdf61 Fix API quickadd (#3051)
* Fix API quickadd

#fix https://github.com/FreshRSS/FreshRSS/issues/3049

* Response query, streamName
2020-06-13 00:21:35 +02:00
Petra f34f1ff8f1 Edit mapco.css (#3048)
Otherwise end up with (almost) white-on-white
2020-06-10 23:08:02 +02:00
138d9ca658 Return the correct Content-Type for SVG favicons (#3032)
* Return the correct Content-Type for SVG favicons

* Use mime_content_type to check file type

* Use tab instead of spaces

* Remove extra blank lines

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Update f.php

* Better obey HTTP/1.1 304 Not Modified rules about headers https://tools.ietf.org/html/rfc2616#section-10.3.5
* Do not fail if the optional `fileinfo` is not available
* Handle more cases such as PNG, GIF, BMP...

* Add Content-Type for default favicon

* Do not repeat HTTP headers in HTTP 304 response

According to https://tools.ietf.org/html/rfc2616#section-10.3.5 it is better not to repeat HTTP headers in a HTTP 304 Not Modified response

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-06-06 23:29:46 +02:00
Alexis Degrugillier dc68783fc8 Add controls on media (#3036)
Now, there is a shortcut to play or pause media available from an
entry. If there is more than one media available, only the first
one will be targeted.

See #1952
2020-06-05 23:37:05 +02:00
Alexis DegrugillierandAlexandre Alapetite d4554fa087 Change add feed action (#3027)
* Docker Alpine 3.12 (#3025)

https://alpinelinux.org/posts/Alpine-3.12.0-released.html
With PHP 7.3.18 (from 7.3.17) (and Apache 2.4.43 unchanged).
No other significant change spotted

* Ensure feed attributes are used before load

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-06-05 10:09:31 +02:00
Alexis Degrugillier 27f0b61418 Fix form layout (#3028)
The login form layout was broken for BlueLagoon and Screwdriver themes. The 'about' link was
displayed next to the form since the later didn't have a height. I removed completely the
rule since it seems that it has no effect, except the one aforementioned.
2020-06-03 19:17:17 +02:00
Alexandre Alapetite 17baf9970f Fix alert-warn background (#3015)
Fix minor CSS regression from
https://github.com/FreshRSS/FreshRSS/pull/2990
2020-05-30 14:36:46 +02:00
Alexandre Alapetite 0d74cb8a42 Fix JS show password in install (#2999)
The button for showing the password was not working in the install.
Updated JavaScript file to ES6 at the same time.
2020-05-25 19:03:42 +02:00
Alexandre Alapetite 4b2698ff55 Alternative-Dark theme use common template (#3000)
* Alternative-Dark theme use common template

#fix https://github.com/FreshRSS/FreshRSS/issues/2883

* Lint
2020-05-25 19:03:10 +02:00
Marien Fressinaud a0f6e66e28 fix: Fix .stick class for older Webkit versions (#2995)
It looks like inputs had a light margin on older Webkit versions, making
the inputs slightly smaller than buttons in a .stick container.

Reference: https://github.com/FreshRSS/FreshRSS/pull/2938#issuecomment-632429861
2020-05-22 10:54:22 +02:00
Alexandre Alapetite 3bef867a44 Better hide spinner (#2990)
Fix https://github.com/FreshRSS/FreshRSS/issues/2986#issuecomment-631396735
By CSS, and also by JS
https://framagit.org/nicofrand/xextension-threepanesview/-/issues/10
2020-05-21 12:17:21 +02:00
Alexandre Alapetite 533ac05f4e Fix Dark load (#2987)
#fix https://github.com/FreshRSS/FreshRSS/issues/2986 😈😛
2020-05-20 12:02:01 +02:00
Alexandre Alapetite 0442243037 Fix nav_menu mark-as-read (#2909)
* Fix nav_menu mark-as-read

#Fix https://github.com/FreshRSS/FreshRSS/issues/2905
Fix regression from https://github.com/FreshRSS/FreshRSS/pull/2588

We need info about the first item (id_max) before being able to output
nav_menu. Before https://github.com/FreshRSS/FreshRSS/pull/2588 we used
to output everything in memory before starting to produce an output. Now
that we stream the output, we need a temporary buffer until we have
received the first item/article.

* Repair loading page

* Simplify CSS

Make it work in Chrome as well

* Lint

* Partial revert

* Base max_id solely on current time
2020-05-18 18:45:47 +02:00
Alexandre Alapetite 83b5944dcb Stream instead of memory copy of SimplePie entries (#2972)
* Stream instead of memory copy of SimplePie entries

https://github.com/FreshRSS/FreshRSS/issues/2952

* Undo lines delete

* Typo

* Remove unaccessible code

https://github.com/FreshRSS/FreshRSS/pull/2972/files#r425624163

* Back-compatibility for Feed->entries

https://github.com/FreshRSS/FreshRSS/pull/2972/files#r425631913
2020-05-17 00:04:51 +02:00
Alexandre Alapetite bba9535626 jQuery 3.5.1 (#2982)
Minor version
https://blog.jquery.com/2020/05/04/jquery-3-5-1-released-fixing-a-regression/
2020-05-16 16:44:15 +02:00
Alexandre Alapetite 17539668ea Fix bad relogging clients (#2961)
* Fix bad relogging clients

Some clients (like EasyRSS) are still using the old HTTP Authorization
header after having logged to log in with another user.
We should not attempt to process Authorization headers during a login
request

* Typo

* A bit safer

Avoid null exception
2020-05-08 21:54:45 +02:00
Alexandre Alapetite 0fc71fdf42 API relaxed detection of short/long item ID forms (#2957)
#Fix https://github.com/FreshRSS/FreshRSS/issues/2956
Bug/feature introduced by https://github.com/FreshRSS/FreshRSS/pull/2947 (which was following the specification better)

The original code `strpos($e_id, '/') !== null` was wrong (it can never be null, only false or integer), but the idea was to check whether the client was sending a short form (decimal) or long form of the ID (hexadecimal with prefixes including slashes). Since it has not given problem until my recent typo fix, this means that the short form is apparently not used by the clients we tested. But now that we are back to following the specification better, it looks like a client such as Reeder 4 is sending an hexadecimal form without a prefix, which breaks the detection.

This patch changes the detection, which should work in all known cases AND comply with the specification

https://feedhq.readthedocs.io/en/latest/api/terminology.html#items
2020-05-07 18:33:40 +02:00
Marien Fressinaudandtriatic cc7a784cbe Add/mobile feed configuration (#2938)
* Show subscription management button on mobile

* Show aside box-shadow on Origine only when opened

* Reduce padding of Origine posts on mobile

* Shrink stick component with long input

* Show Origine configure icons on mobile

* Show the slider full width on mobile

* Improve the look of forms on mobile

* Fix Ansum theme

* Fix BlueLagoon theme

* Fix Dark theme

* Fix Flat theme

* Fix Mapco theme

* Fix Origine-compact theme

* Fix Pafat theme

* Fix Screwdriver theme

* Fix Swage theme

* Fix Alternative-Dark theme

* Apply RTL script on themes

Co-authored-by: triatic <42704418+triatic@users.noreply.github.com>
2020-05-06 19:55:45 +02:00
Alexandre Alapetite 5e18ca8408 Fix warning with FeedReader (#2947)
FeedReader 2.10.0 sends something like
`T=cd3421a73e8a09f955449d02beaf9593b0c0265cZZZZZZZZZZZZZZZZZ&r=user/-/state/com.google/read&i=-/tag%3Agoogle.com&i=-/2005%3Areader/item/0005a4b97779db22`
to `/api/greader.php/reader/api/0/edit-tag`

The first `i=-/tag/google.com` is wrong and cannot be converted to an entry ID.
This resulted in:

> PHP Warning:  gmp_init(): Unable to convert variable to GMP - string is not an integer in /var/www/FreshRSS/p/api/greader.php on line 35
2020-05-05 17:13:18 +02:00
Alexandre Alapetite b1aac20839 Fever integer type for numbers (#2946)
* Fever integer type for feed ID

#Fix
https://github.com/FreshRSS/FreshRSS/issues/2940#issuecomment-623022435

* Fix feed_id

* Ensure string for entry ID

To be compatible with 32-bit platforms.
Before, the type was inconsistent depending on architecture + database

* Integer for entry count functions
2020-05-03 13:39:16 +02:00
Alexandre Alapetite 1bb4c75db7 Fever integer type for last_refreshed_on_time (#2944)
#Fix https://github.com/FreshRSS/FreshRSS/issues/2940
https://feedafever.com/api
2020-05-02 20:04:51 +02:00
Alexandre Alapetite f0db70dcb0 API Use string type for Usec (#2935)
#Fix https://github.com/FreshRSS/FreshRSS/issues/2934
2020-04-30 23:17:46 +02:00
Julien-Pierre Avérous acca89505b Enhance the way help elements are displayed (#2911)
* - Always display help under the targeted element.
- Use same help place for HTTP authentication in 'add' feed view than in 'update' feed view.
- Move help under input field in register view, as all other places (homogeneity).

* - Don't use "!important" as suggested by @Alkarex.
2020-04-20 23:27:17 +02:00
Alexandre Alapetite e9213e89f4 Fix CSS Edge glitch in archiving options (#2906)
With Edge, only setting `.hidden = true` does not make the element and
sub-elements properly visible.
Should not make any difference for other browser.
2020-04-18 11:50:35 +02:00
Alexandre Alapetite bdc4da6ad0 Expose podcast in API (#2898)
* Expose podcast in API

Expose RSS enclosures in our API, e.g. for clients supporting podcasts

* PHP CS?

* Annoying linter

* Light optimisation
2020-04-16 18:11:26 +02:00
Alexandre Alapetite f2e0f051aa Fix JS for statistics repartition select form (#2896)
* Fix JS for statistics repartition select form

Error was: `s.form is null in extra.js:166:7`
At the same time, disable the form and clears the value while waiting
for the next page to load, to better understand what is happening.

* Whitespace
2020-04-12 16:40:06 +02:00
Alexandre Alapetite 14fa3f2781 jQuery 3.5.0 (#2895)
https://blog.jquery.com/2020/04/10/jquery-3-5-0-released/
2020-04-12 11:37:50 +02:00