Commit Graph

815 Commits

Author SHA1 Message Date
Alexandre Alapetite
97ba6261a8 git update auto change to edge branch (#3589)
* git update auto change to edge branch
For existing installations using automatic git update, checkout *edge* branch if it was still using *master* or *dev*.

* One more prune

* Fix several small issues

* theirs does not work here

* Use migration mechanism

* Better handling of Migration errors

* Test details

* Fix tests

* Do not use new migration system for now
2021-05-15 21:33:43 +02:00
berumuron
cc6c529562 tec: Remove data/do-install.txt (#3555)
* Remove file data/do-install.txt

This file was painful during update because we had to remember to delete
it each time. It added a security issue by allowing an attacker to
reinstall FreshRSS during the update process.

The (more powerful) file data/applied_migrations.txt has been introduced
in 8619cf6fa to replace do-install.txt. We had to wait for at least one
release in order to make sure existing instances of FreshRSS created the
migration file. It should be ok now.

* Replace i18n install.not_deleted key

* Update documentation to update FreshRSS
2021-03-26 19:41:33 +01:00
Alexandre Alapetite
06fa514483 Compatibility ORIG_PATH_INFO (#3560)
#fix https://github.com/FreshRSS/FreshRSS/issues/3542
2021-03-24 18:39:26 +01:00
berumuron
2c4f169f0a Hide advanced options in new feed form (#3516)
* Hide new feed advanced options in a details tag

The form was huge and hard to process for beginners. Most of the fields
are optional 99% of time, there is no need to have them so proeminently.

* Remove sub.feed.auth.configuration i18n key

* Sync RTL css files

* Fix stylelint

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Fix "for" attributes in add feed form

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2021-03-13 18:55:43 +01:00
Alexandre Alapetite
51ed59dcc6 jQuery 3.6.0 (#3501)
https://blog.jquery.com/2021/03/02/jquery-3-6-0-released/
2021-03-07 12:54:17 +01:00
Alexandre Alapetite
947e918f05 Travis: Enforce phpcs line length + whitespace (#3488)
* Update Travis line length

* Also check whitespace in CSS files

* Fix line length ext.php

* More syntax, string templates

* Fix exclude-pattern

* Test JS files as well
2021-02-28 12:26:24 +01:00
Myuki
7b4c544579 Optimize some themes for mobile view (#3491)
* Optimize some themes for mobile view

* Fix syntax
2021-02-28 12:12:26 +01:00
Myuki
064288ed62 Optimize theme Pafat for the mobile view (#3480)
* Optimize theme Pafat for mobile view

* Change min-width in @media

* Better backward compatibility

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Better backward compatibility

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2021-02-27 12:16:29 +01:00
Alexis Degrugillier
a127f7dae3 Display dropdown menu in BlueLagoon and Screwdriver themes (#3485)
See #3447
2021-02-26 23:19:04 +01:00
Alexis Degrugillier
0ce798d40b Add support for extension user files (#3433)
Extension user files can be stored easily in the user folder instead of the static folder.
2021-02-26 18:42:10 +01:00
Alexandre Alapetite
4a87f34bcf API implement OPML import/export (#3424)
#fix https://github.com/FreshRSS/FreshRSS/issues/3421
2021-02-06 12:43:30 +01:00
Martin
934f032c19 Better error message on failure (#3407)
* bump default logout from 30 to 365 days

* * Change cookie duration to constant
* Change cookie duration to three months

* use class

* use 90 days (otherwise login form says 91.3 days)

* change class

* also this works now

* Better error message

* inconsistent dot with the other message

* Better error message

* add errorMessage()

* fix style

* html escape the error title

* also html escape error message

* remove spaces before parentheses

* rework the error message

* Minz-friendly

* Update message

Do not advise running this script as wrong user

* Update lib/lib_rss.php

Co-authored-by: Martin <spleefer90@gmail.com>

Co-authored-by: Martin Rys <martin@rys.pw>
Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2021-02-05 21:59:21 +01:00
Alexis Degrugillier
d7cfea155f Fix extension file search (#3413)
Before, it was possible to retrieve only the files from extensions. Thus
making core extension files unreachable.
Now, the selected file is search through all extensions folders.
2021-02-02 14:27:34 +01:00
Alexis Degrugillier
bed710b260 Refactor extension file script (#3399) 2021-02-02 00:00:51 +01:00
Alexandre Alapetite
d061e63fa5 GReader API add canonical information (#3391)
For fluent-reader
#fix https://github.com/FreshRSS/FreshRSS/issues/3389
Better compatibility InoReader
https://www.inoreader.com/developers/stream-contents
2021-01-22 21:56:54 +01:00
Alexis Degrugillier
5c18c64afb Change integration configuration page (#3372)
I've refactored the user query code to be able to use it also on the
integration configuration page. Now, items can be re-organized as in
the user query list.
2021-01-16 22:11:30 +01:00
Alexis Degrugillier
c5da4e56a6 Add a query configuration page (#3366)
* Add a query configuration page

Before, there was no way to modify a user query. Thus you need to
create a new one and delete the old one afterward.
Now, every user query can be modified if needed. They have their
own configuration page on which it can be modified or deleted.

* Change drag and drop action on queries

Before, the drag and drop action needed to be validated by submitting
the form to be persisted.
Now, it's done automatically after the query is dropped to its final
location.
2021-01-15 00:14:53 +01:00
Alexis Degrugillier
e3457f7d7b Add drag & drop marker on user query list (#3355)
Before, it was nearly impossible to know exactly where the dragged
item will land when dropping it.
Now, there is a visual marker to show the drop location.

An HR tag is inserted dynamically in the DOM. It's possible to style
it if needed.
2021-01-13 20:34:45 +01:00
Alexis Degrugillier
fd82587756 Add filters on images and video (#3356)
As this theme is a dark theme, I figured that it would be better
to filter images and videos to ease reading when bright elements
are included.
2021-01-11 22:36:06 +01:00
Alexis Degrugillier
896f9d3363 Add user query manual sorting (#3346)
* Add user query manual sorting

Before, to change the user query order, you'll have to delete them
and recreate them. It was not really efficient.
Now, you can drag and drop them to ease reordering.

See #2216 and #2015

* Remove cancel action on user query configuration

Before, the cancel action was useless since it was not wired.
Now, there is no cancel action.

See #2015
2021-01-09 01:47:20 +01:00
Clemens Neubauer
ef458992c1 two new hooks (#3342)
* add two new hooks

I develop a new extension and i need 2 new hooks for it

* update EN documentation

* Correct typing errors

* Update app/views/helpers/javascript_vars.phtml

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2021-01-07 21:45:48 +01:00
Alexis Degrugillier
46c8f6e77b Add clipboard sharing (#3330)
When the discussion #3327 started, I thought that the clipboard share
is a good idea. It never occurred to me because I do not use a
smartphone.
It might need some polishing but it seems pretty usable as-is.

See #3327
2021-01-03 18:20:15 +01:00
Alexandre Alapetite
0567e38947 API more BazQux compatibility (#3320)
Implement compatibility fix, to allow the streamID / inclusion criteria
to be given as `&s=` parameter instead of in the URL path.
https://github.com/bazqux/bazqux-api#fetching-streams
This form of request is apparently sometimes used by FeedMe:

```

/api/greader.php/reader/api/0/stream/contents?output=json&n=100&xt=user%2F-%2Fstate%2Fcom.google%2Fread&ot=0&s=user%2F-%2Flabel%2FBlogs
```
2021-01-03 18:13:11 +01:00
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

31cb07ac1a/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
thamerx
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 Tholia
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 Fressinaud
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): cc0db9af4f (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
Pablo Caro
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