Commit Graph

39 Commits

Author SHA1 Message Date
Alexandre Alapetite
833007f586 Upgrade to PHP_CodeSniffer 4 (#7993)
https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki/Version-4.0-User-Upgrade-Guide
A couple of rules have changed name. Exclusion paths have slightly changed behaviour.
Main change is that it was unhappy with our i18n header comments, so minor edit there, since that rule kind of makes sense the rest of the time
2025-09-22 22:02:59 +02:00
beerisgood
f0388f64ac Update German (#7833)
* Update sub.php

German translation added.

* Update gen.php

German translation added

* make fix-all

* Update conf.php

* make fix-all

* Update index.php

* make fix-all

* Update admin.php

* Update feedback.php

* Update app/i18n/de/index.php

* make fix-all

* Apply suggestions from code review

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>

* Update app/i18n/de/index.php

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>

* Update app/i18n/de/feedback.php

Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>

* Icon

* make fix-all

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: maTh <1645099+math-GH@users.noreply.github.com>
Co-authored-by: Alexis Degrugillier <aledeg@users.noreply.github.com>
2025-09-21 13:45:12 +02:00
Inverle
f85333e98a Require current password when setting new password (#7763)
* Require current password when setting new password

* i18n: fr

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-07-31 09:24:37 +02:00
Inverle
7915abd833 Implement custom feed favicons (#7646)
Closes #3789, #6503

Icon setting when no custom icon is set yet:

![image](https://github.com/user-attachments/assets/28b07dd0-7dac-4c76-b1d7-77035f91a87a)

- `Change...` button opens a file dialog, and after selecting a file shows the chosen icon in the preview on the left. `Submit` must be clicked after selecting the icon.
- `Reset to default` changes the preview icon to the default one, and also requires `Submit` to be clicked to apply the changes.

Full list of changes:
- CSP now includes `blob:` in `img-src` for
   - `indexAction()` and `feedAction()` in `subscriptionController.php`
   - all of the view actions in `indexController.php`
- Introduce new attribute `customFavicon (boolean)` for feeds that indicates if the feed has a custom favicon
   - `hashFavicon()` in `Feed.php` is dependent on this attribute
      - `hashFavicon()` has a new parameter called `skipCache (boolean)` that allows the reset of the favicon hash for the Feed object
      - `resetFaviconHash()` just calls `hashFavicon(skipCache: true)`
- `f.php` URLs now have the format of `/f.php?h=XXXXX&t=cachebuster`, where the `t` parameter is only used for serving custom favicons
   - if `t` parameter is set, `f.php` returns a `Cache-Control: immutable` header
- `stripos` and `strpos` were changed to `str_contains` in various places (refactor)
- JS for handling the custom favicon configuration logic is in `extra.js` inside `init_update_feed()` which is called when feed configuration is opened from the aside or when the subscription management page with the feed is loaded
   - Server-side code for uploading the icon in `subscriptionController.php` under `feedAction()`
   - Errors that may occur during the setting of a custom favicon:
      - Unsupported image file type (handled only server-side with `isImgMime()`)
      - When the file is bigger than 1 MiB (default), handled both client-side and server-side
      - Standard feed error when `updateFeed()` fails
- JS vars `javascript_vars.phtml` are no longer escaped with `htmlspecialchars()`, instead with json encoding,
- CSS for disabled buttons was added
- Max favicon file size is configurable with the `max_favicon_upload_size` option in `config.php` (not exposed via UI)
- Custom favicons are currently deleted only when they are either reset to the default icon, or the feed gets deleted. They do not get deleted when the user deletes their account without removing their feeds first.
- ` faviconPrepare()` and `faviconRebuild()` are not allowed to be called when the `customFavicon` attribute is `true`
- New i18n strings:
   - `'sub.feed.icon' => 'Icon'`
   - `'sub.feed.change_favicon' => 'Change…'`
   - `'sub.feed.reset_favicon' => 'Reset to default'`
   - `'sub.feed.favicon_changed_by_ext' => 'The icon has been set by the <b>%s</b> extension.'`
   - `'feedback.sub.feed.favicon.too_large' => 'Uploaded icon is too large. The maximum file size is <em>%s</em>.'`
   - `'feedback.sub.feed.favicon.unsupported_format' => 'Unsupported image file format!'`
- Extension hook `custom_favicon_hash`
   - `setCustomFavicon()` method
   - `resetCustomFavicon()` method
   - `customFaviconExt` and `customFaviconDisallowDel` attributes
   - example of usage: https://github.com/FreshRSS/Extensions/pull/337
- Extension hook `custom_favicon_btn_url`
   - Allows extensions to implement a button for setting a custom favicon for individual feeds by providing an URL. The URL will be sent a POST request with the `extAction` field set to either `query_icon_info` or `update_icon`, along with an `id` field which describes the feed's ID.
2025-06-30 12:01:56 +02:00
Stefan
51298cd6bc Exposed the reading modes for extensions through Minz (#7668)
* + Exposed the reading modes for extensions through Minz. Now extensions can add a custom view mode. Graceful fallback to normal view in case the extension was disabled without resetting the view_mode through the uninstall method. In that case the user will be informed via Minz_Request::setBadNotification that the view has been reset to normal.
+ Added translation strings for de, en and en-us for the notification

* + Added missing, generated translations

* Simplify indexAction, performance

* Minor settings htmlspecialchars

* i18n: fr

* Minor wording

* Doc

* Fix i18n

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2025-06-22 00:36:32 +02:00
maTh
5a14ff3135 i18n: de (#6313)
* Update admin.php

* Update conf.php

* Update conf.php

* Update feedback.php

* Update index.php

* Update conf.php

* Update sub.php

* Update sub.php

* Update sub.php
2024-04-19 12:44:01 +02:00
Alexandre Alapetite
70e71b8364 Auto-label (#5954)
Add labels automatically to incoming articles
fix https://github.com/FreshRSS/FreshRSS/issues/2380
fix https://github.com/FreshRSS/FreshRSS/issues/2420
fix https://github.com/FreshRSS/FreshRSS/issues/3279
fix https://github.com/FreshRSS/FreshRSS/discussions/4947
fix https://github.com/FreshRSS/FreshRSS/issues/5728
fix https://github.com/FreshRSS/FreshRSS/issues/5599
2024-01-03 11:23:06 +01:00
robertdahlem
83cf7301f4 Do not update feeds after import (#5629)
* Add checkbox to not update feeds after import to avoid duplicate feeds when importing multiple files.

* Import without updating feeds, but now unconditionally

* Added hint to click "Update feeds" to all translations

* Update app/i18n/fr/feedback.php

* Fix i18n

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2023-10-22 19:03:51 +02:00
Luc SANCHEZ
aa30635f97 phpstan level 7 for importExportController.php (#5361)
* phpstan level 7 for importExportController.php

* Update app/Controllers/importExportController.php

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

* Update app/Controllers/importExportController.php

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

* Update app/Controllers/importExportController.php

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

* Update app/Controllers/importExportController.php

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

* phpstan level 7 for importExportController.php

* phpstan level 7 for importExportController.php

* phpstan level 7 for importExportController.php

* A few edits

---------

Co-authored-by: Luc <sanchezluc+freshrss@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2023-05-04 21:20:32 +02:00
maTh
45f6d84b69 Fixed: "tag" -> "label" (#4770)
* tag -> label (all english texts)

* tag -> label (German)

* marked as DIRTY

* Update app/i18n/nl/feedback.php

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

* Update app/i18n/nl/conf.php

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

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2022-10-25 00:23:01 +02:00
Alexandre Alapetite
8333dd972b i18n typographic quotes (#4714)
* i18n typographic quotes

* Missing whitespace

* Update app/i18n/nl/conf.php

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

* Fix German-style typographic quotes

* Fix missing closing ”

* Fix Dutch quotes

* French typography

* <em>lazy load</em>

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2022-10-13 08:56:22 +02:00
maTh
9cd9e9a093 fix error message force feed (#4145)
* CZ

* the other languages

* fix DE
2022-01-11 23:30:59 +01:00
Alexis Degrugillier
127b7f0a3a Change i18n process (#4131)
Before, the ignore info were stored in a different file which was a bit cumbersome
for new comers. Now, this info is stored directly in the translation file as a
comment.

Before, there was no way of telling translators that a previously translated string
was in need of a new translation. Now, the dirty information is there to convey that
info.
2022-01-08 14:00:26 +01:00
Alexandre Alapetite
fe295f50d0 Lint i18n files (#3841)
Translations had quite a lot of cleaning in late:
* Removed some unused keys
* Added some ignores
* Applied a `cli/manipulate.translation.php -a format`
2021-09-12 11:37:15 +02:00
rom-1
82a2a6f023 Updated German Translation (#3379)
* Updated German Translation

completed german translation, as of now 100%.

* changing the word display -> filter

The whole interface is a little mess, but I guess this might be fitting a bit better

* Fix ignore

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2021-01-17 18:29:21 +01:00
Alexis Degrugillier
e93675e036 Fix tag management translation (#3292)
Before, feedback messages were not translated.
Now, they are.
2020-12-28 13:08:38 +01:00
Fake4d
c2e3bc7cab i18n update for German - added missing de translations (#3237)
* Add DE Translation

* i18n update for German

* i18n update for German

* i18n update for German

* Fix ignore

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-11-01 19:12:58 +01:00
Nico Kaiser
5389dd5ddb i18n update for German (#3175)
This adds and improves some German translations.
2020-09-10 18:20:22 +02:00
Frans de Jonge
5cee45922b [i18n] Update en-UK grammar and style (#3068)
Taken from <https://github.com/FreshRSS/FreshRSS/pull/3060>
2020-07-23 20:36:49 +02:00
Alexis Degrugillier
8c4d71da2e Add missing translations (#3034)
* Add missing translations

* Add a simple way to check if an i18n key exists

There is a rule in the makefile to access it directly
2020-06-05 20:16:04 +02:00
Marien Fressinaud
8487fa6248 Reformat i18n correctly (#2976)
* Ignore i18n gen.dir key

* Add a makefile target to update an i18n key

* Mark some i18n keys to ignore

* Reformat i18n files correctly

* Make i18n keys sort case-sensitive

Calling `make i18n-format` was always inverting 4 lines:

- gen.date.dec with gen.date.Dec
- and gen.date.nov with gen.date.Nov

I don't know why these particular lines and not the others, but it
appeared the sort function was case insensitive due to the
`SORT_FLAG_CASE` flag passed to the `ksort` function. Removing this flag
makes the calls to the formatter idempotent and more reliable.

Unfortunately it moves a lot of lines since the `_` character is
considered differently.

* Check i18n files are correctly formatted on Travis
2020-05-15 17:31:21 +02:00
Julien-Pierre Avérous
d30ac40772 Enhance content path feature (#2778)
- Add a maintenance section to be able to clear cache and force reload a feed.
- Add an icon next to path field to show a pop-up with the result of the content path.

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Co-authored-by: Marien Fressinaud <dev@marienfressinaud.fr>
2020-02-13 18:22:35 +01:00
Alexis Degrugillier
3e49b44839 Update i18n cli tools (#2673)
* Update i18n cli tools

Few things were bugging me when using the cli tool for i18n. So I've modified
the tools to be easier to use.

First, the tool automatically adds missing keys to all languages. This way, we
always have all keys in all languages.
Second, the tool detects all untranslated keys and adds automatically the todo
comment after the value.
Third, when adding a new key, the key is pushed to all languages at once. There
is no need to duplicate it manually. Thus making the duplication process obsolete.
Fourth, translation and ignore keys are manipulated at the same time. Thus we
don't have obsolete ignored strings anymore.

* Add i18n rules

I find that having the common rules in the Makefile is easier to use,
as long as you know they are here. As it is self documented, people
will see the new rules when using make.

* Use long parameters in Makefile

I find that using long parameters in scripts makes it easier to understand
what's going on. So I've switched all short parameters to long one.

* Format all i18n files

I've used the updated version of the cli tools to have some output
that can be consistently formated. This commit is a huge formating
commit. Nothing was added but some comments were removed in the
process.
2019-12-04 08:27:39 +01:00
Marien Fressinaud
d0f1f9f141 Separate the update API password endpoint (#2675)
* Extract hashPassword method from userController

* Extract and refactor fever key-related methods

* Move update of API password to dedicated action

* Simplify the controller by refactoring feverUtil

* Add locales
2019-12-03 23:11:06 +01:00
Patrick Crandol
16a131380b I18n standardization (#2138)
* i18n Admin standardization

cz - moved items incorrectly placed in system array to extensions array
nl - remove registration array in user array that doesn't appear in any other translations - possibly from an old version that didn't get removed?
oc - reordered list to standardize order with other translation files.

* Alphabetize extensions Array

* Standardize conf.php

he - removed options not appearing in other i18n files, added missing strings

* Standardize feedback.php

he - removed line not found in other translation files
nl - removed line not found in other translation files

* Standardize gen.php

* Standardize index.php

Major sorting of oc.
Added tags to several languages

* Standardize install.php

ru - added missing strings
it - remove extra string not found in other config files
he - add missing strings, remove strings not found in other languages
oc - reorganize

* Standardize sub.php

* Standardize and fix TODOs

use format  "//TODO - Translation" for easier searching

* Fix whitespace
2018-11-18 11:37:22 +01:00
Twilek-de
5964a5c85b Fixed the TODOs (#2072)
* Fixed the TODOs

* Remove trailing whitespace
2018-10-23 22:51:23 +02:00
Alexandre Alapetite
d3f5bd840d Add mark-as-unread (#1995)
* Add mark-as-unread

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

* Change sentence

https://github.com/FreshRSS/FreshRSS/pull/1995#discussion_r214515954

* Enable mark-as-unread only when unread articles are shown

In order to prevent erroneous marking-as-unread.
We might find a better logic later.

* Disable instead of hide mark-as-unread option

To make it easier to discover
2018-09-03 20:48:04 +02:00
Bartłomiej Cieszkowski
1cba18e3ef Typo: FressRSS -> FreshRSS (#1908)
@bartlomiejcieszkowski 81e014d096
2018-05-30 09:22:04 +02:00
Frans de Jonge
967dc041a7 [i18n] Add hint about adding #force_feed to URL (#1879)
Fixes #1878
2018-05-20 11:57:46 +02:00
Kevin Papst
7c39c8024d [i18n] latest german translations (#1856) 2018-04-01 15:40:04 +02:00
Alexis Degrugillier
ac3e38359b Allow admin user to reset passwords (#1765)
See #960
2018-02-14 22:15:34 +01:00
Alexandre Alapetite
20d1301b46 Do not require write access to check new version
Do not require write access to check if new ZIP version is available
https://github.com/FreshRSS/FreshRSS/issues/1450
2017-05-25 14:27:31 +02:00
Alexandre Alapetite
1b8eb6c7e7 CLI import ZIP/OPML/JSON for user
https://github.com/FreshRSS/FreshRSS/issues/1095
https://github.com/FreshRSS/FreshRSS/issues/851
2016-10-23 01:46:14 +02:00
Alexandre Alapetite
c1548e732d Remove Mozilla Persona login
https://github.com/FreshRSS/FreshRSS/issues/1052
2016-07-31 14:58:19 +02:00
Alexis Degrugillier
269c6b88c4 Add a system configuration page
It allows to modify system configuration from the interface. At the moment, only limits are modifiable. The user limit was removed from the user page and added here along with categories and feeds limits.
2015-08-22 09:33:58 -04:00
Marien Fressinaud
d1c1a63580 Add translations for German and Czech
Fix https://github.com/FreshRSS/FreshRSS/issues/930
2015-07-29 22:43:50 +02:00
Marien Fressinaud
1ad36c420e Fix translations for feedback
See https://github.com/FreshRSS/FreshRSS/issues/679
2015-07-22 23:27:22 +02:00
thomasE1993
70f0fc8d61 Update feedback.php 2015-05-16 19:24:13 +02:00
ealdraed
3a5fcb6519 Add German translation 2015-01-22 07:13:57 +01:00