mirror of https://github.com/FreshRSS/FreshRSS.git
Improved markdownlint (#3918)
* Improved markdownlint * Relaxed rules slighlty * `npm run markdownlint` for automatic tests * `npm run markdownlint_fix` for automatic syntax fixing * Applied the fixes on all our Markdown files
This commit is contained in:
parent
dd02c79092
commit
acbba9adb2
|
@ -1,7 +1,5 @@
|
|||
# http://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
|
@ -12,15 +10,16 @@ trim_trailing_whitespace = true
|
|||
indent_style = tab
|
||||
|
||||
[*.{html,php,phtml}]
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
|
||||
[*.js]
|
||||
indent_style = tab
|
||||
|
||||
[*.md]
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
|
||||
[*.xml]
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
|
||||
[*.yml]
|
||||
|
|
|
@ -24,13 +24,13 @@ A clear and concise description of what you expected to happen.
|
|||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Environment information (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. Ubuntu 20.04]
|
||||
- Browser: [e.g. Firefox 86]
|
||||
- FreshRSS version: [e.g. 1.17.1]
|
||||
- Database version: [e.g. Mysql 5.7]
|
||||
- PHP version: [e.g. PHP 7.4]
|
||||
- Installation type: [e.g. Yunohost]
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. Ubuntu 20.04]
|
||||
- Browser: [e.g. Firefox 86]
|
||||
- FreshRSS version: [e.g. 1.17.1]
|
||||
- Database version: [e.g. Mysql 5.7]
|
||||
- PHP version: [e.g. PHP 7.4]
|
||||
- Installation type: [e.g. Yunohost]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
{
|
||||
"default": true,
|
||||
"blanks-around-fences": false,
|
||||
"blanks-around-lists": false,
|
||||
"first-line-heading": false,
|
||||
"line-length": false,
|
||||
"no-hard-tabs": false,
|
||||
"no-inline-html": {
|
||||
"allowed_elements": [ "kbd" ]
|
||||
"allowed_elements": ["br", "kbd"]
|
||||
},
|
||||
"no-multiple-blanks": {
|
||||
"maximum": 2
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
node_modules/
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
# Deploy FreshRSS with Docker
|
||||
|
||||
* See also https://hub.docker.com/r/freshrss/freshrss/
|
||||
* See also <https://hub.docker.com/r/freshrss/freshrss/>
|
||||
|
||||
|
||||
## Install Docker
|
||||
|
@ -122,7 +122,7 @@ docker run -d --restart unless-stopped --log-opt max-size=10m \
|
|||
|
||||
### Complete installation
|
||||
|
||||
Browse to your server https://freshrss.example.net/ to complete the installation via the FreshRSS Web interface,
|
||||
Browse to your server <https://freshrss.example.net/> to complete the installation via the FreshRSS Web interface,
|
||||
or use the command line described below.
|
||||
|
||||
|
||||
|
@ -226,7 +226,7 @@ Remember not pass the `CRON_MIN` environment variable to your Docker run, to avo
|
|||
|
||||
Example on Debian / Ubuntu: Create `/etc/cron.d/FreshRSS` with:
|
||||
|
||||
```
|
||||
```text
|
||||
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
|
||||
```
|
||||
|
||||
|
@ -305,13 +305,13 @@ Require valid-user
|
|||
|
||||
A [docker-compose.yml](docker-compose.yml) file is given as an example, using PostgreSQL. In order to use it, you have to adapt:
|
||||
|
||||
- In the `postgresql` service:
|
||||
* `container_name` directive. Whatever you set this to will be the value you put in the "Host" field during the "Database Configuration" step of installation;
|
||||
* In the `postgresql` service:
|
||||
* `container_name` directive. Whatever you set this to will be the value you put in the "Host" field during the "Database Configuration" step of installation;
|
||||
* the `volumes` section. Be careful to keep the path `/var/lib/postgresql/data` for the container. If the path is wrong, you will not get any error but your db will be gone at the next run;
|
||||
* the `POSTGRES_PASSWORD` in the `.env` file;
|
||||
* the `POSTGRES_DB ` in the `.env` file;
|
||||
* the `POSTGRES_DB` in the `.env` file;
|
||||
* the `POSTGRES_USER` in the `.env` file;
|
||||
- In the `freshrss` service:
|
||||
* In the `freshrss` service:
|
||||
* the `volumes` section;
|
||||
* options under the `labels` section are specific to [Træfik](https://traefik.io/), a reverse proxy. If you are not using it, feel free to delete this section. If you are using it, adapt accordingly to your config, especially the `traefik.frontend.rule` option.
|
||||
* the `environment` section to adapt the strategy to update feeds.
|
||||
|
@ -431,11 +431,11 @@ You need a working SSL configuration and the Apache modules `proxy`, `proxy_http
|
|||
ProxyPreserveHost On
|
||||
|
||||
<Location /freshrss/>
|
||||
ProxyPass http://127.0.0.1:8080/
|
||||
ProxyPassReverse http://127.0.0.1:8080/
|
||||
RequestHeader set X-Forwarded-Prefix "/freshrss"
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
Require all granted
|
||||
Options none
|
||||
ProxyPass http://127.0.0.1:8080/
|
||||
ProxyPassReverse http://127.0.0.1:8080/
|
||||
RequestHeader set X-Forwarded-Prefix "/freshrss"
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
Require all granted
|
||||
Options none
|
||||
</Location>
|
||||
```
|
||||
|
|
70
README.fr.md
70
README.fr.md
|
@ -21,8 +21,8 @@ Enfin, il permet l’ajout d’[extensions](#extensions) pour encore plus de per
|
|||
Les demandes de fonctionnalités, rapports de bugs, et autres contributions sont les bienvenues. Privilégiez pour cela des [demandes sur GitHub](https://github.com/FreshRSS/FreshRSS/issues).
|
||||
Nous sommes une communauté amicale.
|
||||
|
||||
* Site officiel : https://freshrss.org
|
||||
* Démo : http://demo.freshrss.org/
|
||||
* Site officiel : <https://freshrss.org>
|
||||
* Démo : <http://demo.freshrss.org/>
|
||||
* Licence : [GNU AGPL 3](https://www.gnu.org/licenses/agpl-3.0.fr.html)
|
||||
|
||||
![Logo de FreshRSS](docs/img/FreshRSS-logo.png)
|
||||
|
@ -141,15 +141,15 @@ Consultez la documentation de Cron de votre système d’exploitation ([Debian/U
|
|||
C’est une bonne idée d’utiliser le même utilisateur que votre serveur Web (souvent “www-data”).
|
||||
Par exemple, pour exécuter le script toutes les heures :
|
||||
|
||||
```
|
||||
```text
|
||||
8 * * * * php /usr/share/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>&1
|
||||
```
|
||||
|
||||
### Exemple pour Debian / Ubuntu
|
||||
## Exemple pour Debian / Ubuntu
|
||||
|
||||
Créer `/etc/cron.d/FreshRSS` avec :
|
||||
|
||||
```
|
||||
```text
|
||||
7,37 * * * * www-data php -f /usr/share/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>&1
|
||||
```
|
||||
|
||||
|
@ -162,7 +162,7 @@ Créer `/etc/cron.d/FreshRSS` avec :
|
|||
* Le répertoire spécial `./data/users/_/` contient la partie des logs partagés par tous les utilisateurs.
|
||||
|
||||
|
||||
# F.A.Q. :
|
||||
# FAQ
|
||||
|
||||
* La date et l’heure dans la colonne de droite sont celles déclarées par le flux, pas l’heure à laquelle les articles ont été reçus par FreshRSS, et cette colonne n’est pas utilisée pour le tri.
|
||||
* En particulier, lors de l’import d’un nouveau flux, ses articles sont importés en tête de liste.
|
||||
|
@ -172,31 +172,43 @@ Créer `/etc/cron.d/FreshRSS` avec :
|
|||
|
||||
* Il faut conserver vos fichiers `./data/config.php` ainsi que `./data/users/*/config.php`
|
||||
* Vous pouvez exporter votre liste de flux au format OPML soit depuis l’interface Web, soit [en ligne de commande](cli/README.md)
|
||||
* Pour sauvegarder les articles eux-mêmes :
|
||||
* **Dans le cas où vous utilisez MySQL**
|
||||
Vous pouvez utiliser [phpMyAdmin](https://www.phpmyadmin.net) ou les outils de MySQL :
|
||||
```sh
|
||||
mysqldump --skip-comments --disable-keys --user=<db_user> --password --host <db_host> --result-file=freshrss.dump.sql --databases <freshrss_db>
|
||||
```
|
||||
* **Pour toutes les bases supportées**
|
||||
Vous pouvez utiliser la [ligne de commande](cli/README.md) pour exporter votre base de données vers une base de données au format SQLite :
|
||||
```
|
||||
./cli/export-sqlite-for-user.php --user <username> --filename </path/to/db.sqlite>
|
||||
```
|
||||
> Il est impératif que le nom du fichier contenant la base de données ait une extension `sqlite`. Si ce n'est pas le cas, la commande ne fonctionnera pas correctement.
|
||||
|
||||
Vous pouvez encore utiliser la [ligne de commande](cli/README.md) pour importer la base de données au format SQLite dans votre base de données:
|
||||
```
|
||||
./cli/import-sqlite-for-user.php --user <username> --filename </path/to/db.sqlite>
|
||||
```
|
||||
> Encore une fois, il est impératif que le nom du fichier contenant la base de données ait une extension `sqlite`. Si ce n'est pas le cas, la commande ne fonctionnera pas correctement.
|
||||
Pour sauvegarder les articles eux-mêmes :
|
||||
|
||||
Le processus d'import/export à l'aide d'une base de données SQLite est utile quand vous devez :
|
||||
- exporter complètement les données d'un utilisateur,
|
||||
- sauvegarder votre service,
|
||||
- migrer votre service sur un autre serveur,
|
||||
- changer de type de base de données,
|
||||
- corriger des erreurs de base de données.
|
||||
## Dans le cas où vous utilisez MySQL
|
||||
|
||||
Vous pouvez utiliser [phpMyAdmin](https://www.phpmyadmin.net) ou les outils de MySQL :
|
||||
|
||||
```sh
|
||||
mysqldump --skip-comments --disable-keys --user=<db_user> --password --host <db_host> --result-file=freshrss.dump.sql --databases <freshrss_db>
|
||||
```
|
||||
|
||||
## Pour toutes les bases supportées
|
||||
|
||||
Vous pouvez utiliser la [ligne de commande](cli/README.md) pour exporter votre base de données vers une base de données au format SQLite :
|
||||
|
||||
```sh
|
||||
./cli/export-sqlite-for-user.php --user <username> --filename </path/to/db.sqlite>
|
||||
```
|
||||
|
||||
> Il est impératif que le nom du fichier contenant la base de données ait une extension `sqlite`.
|
||||
Si ce n'est pas le cas, la commande ne fonctionnera pas correctement.
|
||||
|
||||
Vous pouvez encore utiliser la [ligne de commande](cli/README.md) pour importer la base de données au format SQLite dans votre base de données:
|
||||
|
||||
```sh
|
||||
./cli/import-sqlite-for-user.php --user <username> --filename </path/to/db.sqlite>
|
||||
```
|
||||
|
||||
> Encore une fois, il est impératif que le nom du fichier contenant la base de données ait une extension `sqlite`. Si ce n'est pas le cas, la commande ne fonctionnera pas correctement.
|
||||
|
||||
Le processus d'import/export à l'aide d'une base de données SQLite est utile quand vous devez :
|
||||
|
||||
* exporter complètement les données d'un utilisateur,
|
||||
* sauvegarder votre service,
|
||||
* migrer votre service sur un autre serveur,
|
||||
* changer de type de base de données,
|
||||
* corriger des erreurs de base de données.
|
||||
|
||||
# Extensions
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ Finally, it supports [extensions](#extensions) for further tuning.
|
|||
Feature requests, bug reports, and other contributions are welcome. The best way to contribute is to [open an issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues).
|
||||
We are a friendly community.
|
||||
|
||||
* Official website: https://freshrss.org
|
||||
* Demo: https://demo.freshrss.org/
|
||||
* Official website: <https://freshrss.org>
|
||||
* Demo: <https://demo.freshrss.org/>
|
||||
* License: [GNU AGPL 3](https://www.gnu.org/licenses/agpl-3.0.html)
|
||||
|
||||
![FreshRSS logo](docs/img/FreshRSS-logo.png)
|
||||
|
@ -90,7 +90,7 @@ More detailed information about installation and server configuration can be fou
|
|||
* The special folder `./data/users/_/` contains the part of the logs that are shared by all users.
|
||||
|
||||
|
||||
# F.A.Q.
|
||||
# FAQ
|
||||
|
||||
* The date and time in the right-hand column is the date declared by the feed, not the time at which the article was received by FreshRSS, and it is not used for sorting.
|
||||
* In particular, when importing a new feed, all of its articles will appear at the top of the feed list regardless of their declared date.
|
||||
|
|
|
@ -95,7 +95,7 @@ Some commands display information on standard error; cron will send an email wit
|
|||
|
||||
To avoid cron sending email on success:
|
||||
|
||||
```sh
|
||||
```text
|
||||
@daily /usr/local/bin/my-command > /var/log/cron-freshrss-stdout.log 2>/var/log/cron-freshrss-stderr.log || cat /var/log/cron-freshrss-stderr.log
|
||||
```
|
||||
|
||||
|
|
|
@ -8,12 +8,11 @@ You need to verify that your server can run FreshRSS before installing it. If yo
|
|||
| ------------- | ----------------------- | ----------------------- |
|
||||
| Web server | **Apache 2** | Nginx, lighttpd |
|
||||
| PHP | **PHP 7+** | |
|
||||
| PHP modules | Required: libxml, cURL, JSON, PDO\_MySQL, PCRE and ctype. <br>Required (32-bit only): GMP <br> Recommended: Zlib, mbstring, iconv, ZipArchive <br> *For the whole modules list see [Dockerfile](https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/Dockerfile-Alpine#L7-L9)* | |
|
||||
| PHP modules | Required: libxml, cURL, JSON, PDO_MySQL, PCRE and ctype.<br />Required (32-bit only): GMP <br />Recommended: Zlib, mbstring, iconv, ZipArchive<br />*For the whole modules list see [Dockerfile](https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/Dockerfile-Alpine#L7-L9)* | |
|
||||
| Database | **MySQL 5.5.3+** | SQLite 3.7.4+, PostgreSQL 9.5+ |
|
||||
| Browser | **Firefox** | Chrome, Opera, Safari, or Edge |
|
||||
|
||||
|
||||
# Getting the appropriate version of FreshRSS
|
||||
## Getting the appropriate version of FreshRSS
|
||||
|
||||
FreshRSS has two different releases. It is better if you spend some time to understand the purpose of each release.
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ Before you begin, make sure that you've read the [prerequisites](02_Prerequisite
|
|||
|
||||
3. Give ownership of the FreshRSS folder to your web server user (often `www-data`). Give group read permissions to all files in `.`[^2], and group write permissions to `./data/`.
|
||||
|
||||
4. Install needed PHP modules. A precise and up-to-date list can be found in [the Dockerfile](https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/Dockerfile#L11-L12).
|
||||
4. Install needed PHP modules. A precise and up-to-date list can be found in [the Dockerfile](https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/Dockerfile#L11-L12).
|
||||
|
||||
5. Create a database for FreshRSS to use. Note the username and password for this database, as it will be needed during installation!
|
||||
|
||||
|
|
|
@ -24,87 +24,76 @@ You may wish to run the cron task or systemd unit (`freshrss.service`) immediate
|
|||
|
||||
**You must have used git to install FreshRSS to use this update method.**
|
||||
|
||||
If your local user doesn't have write access to the FreshRSS folder, use a sudo shell (`sudo -s`), prefix the following commands with `sudo `, or switch to an account that does have write access to the folder.
|
||||
If your local user doesn't have write access to the FreshRSS folder, use a sudo shell (`sudo -s`), prefix the following commands with `sudo`, or switch to an account that does have write access to the folder.
|
||||
|
||||
1. Change to your FreshRSS directory
|
||||
|
||||
```sh
|
||||
cd /usr/share/FreshRSS/
|
||||
```
|
||||
```sh
|
||||
cd /usr/share/FreshRSS/
|
||||
```
|
||||
|
||||
2. Fetch the most recent code from GitHub
|
||||
|
||||
```sh
|
||||
git fetch --all
|
||||
```
|
||||
```sh
|
||||
git fetch --all
|
||||
```
|
||||
|
||||
3. Discard manual changes and delete manual additions
|
||||
```sh
|
||||
git reset --hard
|
||||
git clean -f -d
|
||||
```
|
||||
|
||||
```sh
|
||||
git reset --hard
|
||||
git clean -f -d
|
||||
```
|
||||
|
||||
Note: If you wish to keep your changes, it's better to [create a pull request](https://github.com/FreshRSS/FreshRSS/compare) or [an extension](../developers/03_Backend/05_Extensions.md).
|
||||
Note: If you wish to keep your changes, it's better to [create a pull request](https://github.com/FreshRSS/FreshRSS/compare) or [an extension](../developers/03_Backend/05_Extensions.md).
|
||||
|
||||
4. Update FreshRSS
|
||||
```sh
|
||||
git checkout edge
|
||||
git pull
|
||||
git checkout $(git describe --tags --abbrev=0)
|
||||
```
|
||||
|
||||
```sh
|
||||
git checkout edge
|
||||
git pull
|
||||
git checkout $(git describe --tags --abbrev=0)
|
||||
```
|
||||
|
||||
Note: If you want to use the rolling release, the last command is optional.
|
||||
Note: If you want to use the rolling release, the last command is optional.
|
||||
|
||||
5. (optional) Make sure you use the correct version
|
||||
```sh
|
||||
git status
|
||||
```
|
||||
|
||||
```sh
|
||||
git status
|
||||
```
|
||||
|
||||
The command should tell you the tag that you're using. It must be the same as the one associated with [the latest release on GitHub](https://github.com/FreshRSS/FreshRSS/releases/latest). If you use the rolling release, it should tell you that your `edge` branch is up to date with `origin`.
|
||||
The command should tell you the tag that you're using. It must be the same as the one associated with [the latest release on GitHub](https://github.com/FreshRSS/FreshRSS/releases/latest). If you use the rolling release, it should tell you that your `edge` branch is up to date with `origin`.
|
||||
|
||||
6. Re-set correct permissions so that your web server can access the files
|
||||
|
||||
```sh
|
||||
chown -R :www-data . && chmod -R g+r . && chmod -R g+w ./data/
|
||||
```
|
||||
```sh
|
||||
chown -R :www-data . && chmod -R g+r . && chmod -R g+w ./data/
|
||||
```
|
||||
|
||||
## Using the Zip archive
|
||||
|
||||
If your local user doesn't have write access to the FreshRSS folder, use a sudo shell (`sudo -s`), prefix the following commands with `sudo`, or switch to an account that does have write access to the folder.
|
||||
|
||||
1. Change to your FreshRSS directory
|
||||
|
||||
```sh
|
||||
cd /usr/share/FreshRSS/
|
||||
```
|
||||
```sh
|
||||
cd /usr/share/FreshRSS/
|
||||
```
|
||||
|
||||
2. Get the link to the Zip archive for [the latest release](https://github.com/FreshRSS/FreshRSS/releases/latest): [`https://github.com/FreshRSS/FreshRSS/archive/latest.zip`](https://github.com/FreshRSS/FreshRSS/archive/latest.zip). If you want to use the rolling release, the link is [`https://github.com/FreshRSS/FreshRSS/archive/edge.zip`](https://github.com/FreshRSS/FreshRSS/archive/edge.zip).
|
||||
|
||||
3. Download and unzip the update file
|
||||
```sh
|
||||
wget -O freshrss.zip https://github.com/FreshRSS/FreshRSS/archive/latest.zip
|
||||
unzip freshrss.zip
|
||||
```
|
||||
|
||||
```sh
|
||||
wget -O freshrss.zip https://github.com/FreshRSS/FreshRSS/archive/latest.zip
|
||||
unzip freshrss.zip
|
||||
```
|
||||
4. Overwrite all your existing files with the new ones
|
||||
```sh
|
||||
cp -R FreshRSS-*/* .
|
||||
```
|
||||
|
||||
3. Overwrite all your existing files with the new ones
|
||||
5. Re-set permissions
|
||||
```sh
|
||||
chown -R :www-data . && chmod -R g+r . && chmod -R g+w ./data/
|
||||
```
|
||||
|
||||
```sh
|
||||
cp -R FreshRSS-*/* .
|
||||
```
|
||||
|
||||
4. Re-set permissions
|
||||
|
||||
```sh
|
||||
chown -R :www-data . && chmod -R g+r . && chmod -R g+w ./data/
|
||||
```
|
||||
|
||||
5. Clean up the FreshRSS directory by deleting the downloaded zip, the file forcing the setup wizard and the temporary directory
|
||||
|
||||
```sh
|
||||
rm -f freshrss.zip
|
||||
rm -rf FreshRSS-*/
|
||||
```
|
||||
6. Clean up the FreshRSS directory by deleting the downloaded zip, the file forcing the setup wizard and the temporary directory
|
||||
```sh
|
||||
rm -f freshrss.zip
|
||||
rm -rf FreshRSS-*/
|
||||
```
|
||||
|
|
|
@ -7,6 +7,7 @@ FreshRSS is updated by the `./app/actualize_script.php` script. Knowing this, we
|
|||
**Note:** the following examples assume that FreshRSS is installed to `/usr/share/FreshRSS`. You'll need to modify the FreshRSS path to reflect your own system.
|
||||
|
||||
**Note:** If you cannot configure a local Cronjob, [see an alternative using online cron](../users/03_Main_view.md#online-cron).
|
||||
|
||||
## Cron as a trigger
|
||||
|
||||
You'll need to check the Cron documentation for your specific distribution ([Debian/Ubuntu](https://help.ubuntu.com/community/CronHowto), [Red Hat/Fedora/CentOS](https://fedoraproject.org/wiki/Administration_Guide_Draft/Cron), [Slackware](https://docs.slackware.com/fr:slackbook:process_control?#cron), [Gentoo](https://wiki.gentoo.org/wiki/Cron), [Arch Linux](https://wiki.archlinux.org/index.php/Cron) ...) to make sure you set the Cron job correctly.
|
||||
|
@ -14,10 +15,11 @@ You'll need to check the Cron documentation for your specific distribution ([Deb
|
|||
It's advisable that you run the Cron job as your Web server user (often `www-data`).
|
||||
|
||||
### Example on Debian/Ubuntu
|
||||
|
||||
To run the updater script every hour, and 10 minutes past the hour:
|
||||
|
||||
Run `sudo crontab -e` and copy the following line into the crontab:
|
||||
```
|
||||
```text
|
||||
10 * * * * www-data php -f /usr/share/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>&1
|
||||
```
|
||||
|
||||
|
@ -27,7 +29,7 @@ Some systems can't use a Cron job, but they can use systemd. It's easy to config
|
|||
|
||||
First you need to add a `freshrss.timer` file in `/etc/systemd/system/` with the following content:
|
||||
|
||||
```
|
||||
```ini
|
||||
[Unit]
|
||||
Description=FreshRSS get new content
|
||||
|
||||
|
@ -43,7 +45,7 @@ This timer will start 30 seconds after boot and it will trigger the service ever
|
|||
|
||||
Then you need to add a `freshrss.service` file in the same directory. This will be the description of the service triggered by the aforementioned timer.
|
||||
|
||||
```
|
||||
```ini
|
||||
[Unit]
|
||||
Description=FreshRSS get new content
|
||||
Wants=freshrss.timer
|
||||
|
|
|
@ -4,7 +4,8 @@ FreshRSS offers three methods of Access control: Form Authentication using JavaS
|
|||
|
||||
## Form Authentication
|
||||
|
||||
Form Authentication requires the use of JavaScript. It will work on any supported version of PHP, but version 5.5 or newer is recommended (see footnote 1 in [prerequisites](02_Prerequisites.md) for the reason why).
|
||||
Form Authentication requires the use of JavaScript. It will work on any supported version of PHP,
|
||||
but version 5.5 or newer is recommended (see footnote 1 in [prerequisites](02_Prerequisites.md) for the reason why).
|
||||
|
||||
This option requires nothing more than selecting Form Authentication during installation.
|
||||
|
||||
|
@ -22,7 +23,9 @@ When using auto-registration, you can optionally use the `http_auth_auto_registe
|
|||
variable containing the email address of the authenticated user (e.g. `REMOTE_USER_EMAIL`).
|
||||
|
||||
## No Authentication
|
||||
Not using authentication on your server is dangerous, as anyone with access to your server would be able to make changes as an admin. It is never advisable to not use any form of authentication, but **never** chose this option on a server that is able to be accessed outside of your home network.
|
||||
|
||||
Not using authentication on your server is dangerous, as anyone with access to your server would be able to make changes as an admin.
|
||||
It is never advisable to not use any form of authentication, but **never** chose this option on a server that is able to be accessed outside of your home network.
|
||||
|
||||
## Hints
|
||||
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
# Apache/Nginx Configuration Files
|
||||
|
||||
## Apache configuration
|
||||
|
||||
This is an example Apache virtual hosts configuration file. It covers HTTP and HTTPS configuration.
|
||||
|
||||
```
|
||||
```apache
|
||||
<VirtualHost *:80>
|
||||
DocumentRoot /var/www/html/
|
||||
|
||||
|
@ -62,7 +63,8 @@ This is an example Apache virtual hosts configuration file. It covers HTTP and H
|
|||
This is an example nginx configuration file. It covers HTTP, HTTPS, and php-fpm configuration.
|
||||
|
||||
You can find simpler config file but they may be incompatible with FreshRSS API.
|
||||
```
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
listen 443 ssl;
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
|
||||
**For small theme changes, the official [CustomCSS extension](https://github.com/FreshRSS/Extensions) is recommended.**
|
||||
|
||||
Themes should be installed at `FreshRSS/p/themes/theme-name`. Docker users can use
|
||||
Themes should be installed at `FreshRSS/p/themes/theme-name`. Docker users can use:
|
||||
|
||||
```sh
|
||||
-v /home/you/my-theme/:/var/www/FreshRSS/p/themes/my-theme/
|
||||
```
|
||||
-v /home/you/my-theme/:/var/www/FreshRSS/p/themes/my-theme/
|
||||
```
|
||||
|
||||
or a similar method to add their theme to their FreshRSS instance.
|
||||
or a similar method to add their theme to their FreshRSS instance.
|
||||
|
||||
# Creating themes
|
||||
## Creating themes
|
||||
|
||||
Information on creating themes can be found in [the developer documentation.](../developers/04_Frontend/02_Design.md)
|
||||
|
|
|
@ -27,4 +27,5 @@ Start by creating your development environment. A guide to setting up FreshRSS's
|
|||
* [Design (Themes/Theming)](04_Frontend/02_Design.md)
|
||||
|
||||
## Minz
|
||||
|
||||
Minz is the homemade PHP framework used by FreshRSS. More information can be found [here](Minz/index.md).
|
||||
|
|
|
@ -208,7 +208,7 @@ Please ensure that your code works with the oldest PHP version officially suppor
|
|||
|
||||
## Miscellaneous
|
||||
|
||||
### Operators
|
||||
### Operators on multiple lines
|
||||
|
||||
Operators must be at the end of the line if a condition is split over more than one line.
|
||||
|
||||
|
@ -219,7 +219,7 @@ if ($a == 10 ||
|
|||
}
|
||||
```
|
||||
|
||||
### End of file
|
||||
### End of PHP file
|
||||
|
||||
If the file contains only PHP code, the PHP closing tag must be omitted.
|
||||
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
# Database Schema
|
||||
# Database Schema
|
||||
|
||||
> **TODO**
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
# Accessing the database
|
||||
# Changing the source code
|
||||
|
||||
**TODO**
|
||||
## Accessing the database
|
||||
|
||||
# Writing an action and its related view
|
||||
> **TODO**
|
||||
|
||||
**TODO**
|
||||
## Writing an action and its related view
|
||||
|
||||
# Authentication
|
||||
> **TODO**
|
||||
|
||||
**TODO**
|
||||
## Authentication
|
||||
|
||||
# Logs
|
||||
> **TODO**
|
||||
|
||||
**TODO**
|
||||
## Logs
|
||||
|
||||
> **TODO**
|
||||
|
|
|
@ -38,7 +38,8 @@ Minz relies on and imposes an MVC architecture on projects using it. This archit
|
|||
|
||||
### Routing
|
||||
|
||||
In order to link a URL to a controller, first you have to go through a "routing" phase. In FreshRSS, this is particularly simple because it suffices to specify the name of the controller to load into the URL using a `c` parameter. For example, the address http://exemple.com?c=hello will execute the code contained in the `hello` controller.
|
||||
In order to link a URL to a controller, first you have to go through a "routing" phase. In FreshRSS, this is particularly simple because it suffices to specify the name of the controller to load into the URL using a `c` parameter.
|
||||
For example, the address <http://exemple.com?c=hello> will execute the code contained in the `hello` controller.
|
||||
|
||||
One concept that has not yet been discussed is the "actions" system. An action is executed *on* a controller. Concretely, a controller is represented by a class and its actions by methods. To execute an action, it is necessary to specify an `a` parameter in the URL.
|
||||
|
||||
|
@ -60,9 +61,10 @@ class FreshRSS_hello_Controller extends Minz_ActionController {
|
|||
?>
|
||||
```
|
||||
|
||||
When loading the address http://exemple.com?c=hello&a=world, the `world` action is executed on the `hello` controller.
|
||||
When loading the address <http://exemple.com?c=hello&a=world>, the `world` action is executed on the `hello` controller.
|
||||
|
||||
Note: if `c` or `a` is not specified, the default value for each of these variables is `index`. So the address http://exemple.com?c=hello will execute the `index` action of the `hello` controller.
|
||||
Note: if `c` or `a` is not specified, the default value for each of these variables is `index`.
|
||||
So the address <http://exemple.com?c=hello> will execute the `index` action of the `hello` controller.
|
||||
|
||||
From now on, the `hello/world` naming convention will be used to refer to a controller/action pair.
|
||||
|
||||
|
@ -123,7 +125,7 @@ To take full advantage of the Minz routing system, it is strongly discouraged to
|
|||
</p>
|
||||
```
|
||||
|
||||
If one day it was decided to use a "url rewriting" system to have addresses in a http://exemple.com/controller/action format, all previous addresses would become ineffective!
|
||||
If one day it was decided to use a "url rewriting" system to have addresses in a <http://exemple.com/controller/action> format, all previous addresses would become ineffective!
|
||||
|
||||
So use the `Minz_Url` class and its `display()` method instead. `Minz_Url::display()` takes an array of the following form as its argument:
|
||||
|
||||
|
@ -219,7 +221,7 @@ An extension allows you to easily add functionality to FreshRSS without having t
|
|||
### Make it work in Docker
|
||||
|
||||
When working on an extension, it's easier to see it working directly in its environment. With Docker, you can leverage the use of the ```volume``` option when starting the container. Hopefully, you can use it without Docker-related knowledge by using the Makefile rule:
|
||||
```
|
||||
```sh
|
||||
make start extensions="/full/path/to/extension/1 /full/path/to/extension/2"
|
||||
```
|
||||
|
||||
|
@ -239,13 +241,14 @@ but you should follow our best practice:
|
|||
If you want to write a `HelloWorld` extension, the directory name should be `xExtension-HelloWorld` and the base class name `HelloWorldExtension`.
|
||||
|
||||
In the file `freshrss/extensions/xExtension-HelloWorld/extension.php` you need the structure:
|
||||
```html
|
||||
```php
|
||||
class HelloWorldExtension extends Minz_Extension {
|
||||
public function init() {
|
||||
// your code here
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
There is an example HelloWorld extension that you can download from [our GitHub repo](https://github.com/FreshRSS/xExtension-HelloWorld).
|
||||
|
||||
You may also need additional files or subdirectories depending on your needs:
|
||||
|
@ -254,9 +257,9 @@ You may also need additional files or subdirectories depending on your needs:
|
|||
* A `static/` directory containing CSS and JavaScript files that you will need for your extension (note that if you need to write a lot of CSS it may be more interesting to write a complete theme)
|
||||
* A `Controllers` directory containing additional controllers
|
||||
* An `i18n` directory containing additional translations
|
||||
* `layout` and` views` directories to define new views or to overwrite the current views
|
||||
* `layout` and `views` directories to define new views or to overwrite the current views
|
||||
|
||||
In addition, it is good to have a `LICENSE` file indicating the license under which your extension is distributed and a` README` file giving a detailed description of it.
|
||||
In addition, it is good to have a `LICENSE` file indicating the license under which your extension is distributed and a `README` file giving a detailed description of it.
|
||||
|
||||
### The metadata.json file
|
||||
|
||||
|
@ -266,10 +269,11 @@ The `metadata.json` file defines your extension through a number of important el
|
|||
* `author`: your name, your e-mail address ... but there is no specific format to adopt
|
||||
* `description`: a description of your extension
|
||||
* `version`: the current version number of the extension
|
||||
* `entrypoint`: Indicates the entry point of your extension. It must match the name of the class contained in the file `extension.php` without the suffix` Extension` (so if the entry point is `HelloWorld`, your class will be called` HelloWorldExtension`)
|
||||
* `type`: Defines the type of your extension. There are two types: `system` and` user`. We will study this difference right after.
|
||||
* `entrypoint`: Indicates the entry point of your extension. It must match the name of the class contained in the file `extension.php` without the suffix `Extension`
|
||||
(so if the entry point is `HelloWorld`, your class will be called `HelloWorldExtension`)
|
||||
* `type`: Defines the type of your extension. There are two types: `system` and `user`. We will study this difference right after.
|
||||
|
||||
Only the `name` and` entrypoint` fields are required.
|
||||
Only the `name` and `entrypoint` fields are required.
|
||||
|
||||
### Choosing between `system` and `user`
|
||||
|
||||
|
@ -296,7 +300,7 @@ The `Minz_Extension` abstract class defines a set of methods that can be overrid
|
|||
The `Minz_Extension` abstract class defines another set of methods that should not be overridden:
|
||||
* the `getName`, `getEntrypoint`, `getPath`, `getAuthor`, `getDescription`, `getVersion`, and `getType` methods return the extension internal properties. Those properties are extracted from the `metadata.json` file.
|
||||
* the `getFileUrl` returns the URL of the selected file. The file must exist in the `static` folder of the extension.
|
||||
* the `registerController` method register an extension controller in FreshRSS. The selected controller must be defined in the extension _Controllers_ folder, its file name must be _<name>Controller.php_, and its class name must be *FreshExtension\_<name>\_Controller*.
|
||||
* the `registerController` method register an extension controller in FreshRSS. The selected controller must be defined in the extension _Controllers_ folder, its file name must be _\<name\>Controller.php_, and its class name must be *FreshExtension_\<name\>_Controller*.
|
||||
* the `registerViews` method registers the extension views in FreshRSS.
|
||||
* the `registerTranslates` method registers the extension translation files in FreshRSS.
|
||||
* the `registerHook` method registers hook actions in different part of the application.
|
||||
|
@ -348,4 +352,4 @@ The following events are available:
|
|||
|
||||
When you want to support user configurations for your extension or simply display some information, you have to create the `configure.phtml` file.
|
||||
|
||||
**TODO**
|
||||
> **TODO**
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
# The .phtml files
|
||||
# View files
|
||||
|
||||
**TODO**
|
||||
## The .phtml files
|
||||
|
||||
# Writing a URL
|
||||
> **TODO**
|
||||
|
||||
**TODO**
|
||||
## Writing a URL
|
||||
|
||||
# Displaying an icon
|
||||
> **TODO**
|
||||
|
||||
**TODO**
|
||||
## Displaying an icon
|
||||
|
||||
# Internationalisation
|
||||
> **TODO**
|
||||
|
||||
**TODO**
|
||||
## Internationalisation
|
||||
|
||||
> **TODO**
|
||||
|
|
|
@ -19,7 +19,7 @@ RTL (right-to-left) support for languages such as Hebrew and Arabic is handled t
|
|||
|
||||
## Overriding icons
|
||||
|
||||
To replace the default icons, add an "icons" folder to your theme's folder. Use files with the same name as the default icon to override them.
|
||||
To replace the default icons, add an "icons" folder to your theme's folder. Use files with the same name as the default icon to override them.
|
||||
|
||||
## Template file
|
||||
|
||||
|
@ -27,11 +27,11 @@ To replace the default icons, add an "icons" folder to your theme's folder. Use
|
|||
|
||||
```json
|
||||
{
|
||||
"name": "Theme name",
|
||||
"author": "Theme author",
|
||||
"description": "Theme description",
|
||||
"version": 0.1,
|
||||
"files": ["_template.css", "file1.css", "file2.css"]
|
||||
"name": "Theme name",
|
||||
"author": "Theme author",
|
||||
"description": "Theme description",
|
||||
"version": 0.1,
|
||||
"files": ["_template.css", "file1.css", "file2.css"]
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Preparing the release
|
||||
|
||||
In order to get as much feedback as possible before a release, it's preferable to announce it on GitHub by creating a dedicated ticket ([see examples] (https://github.com/FreshRSS/FreshRSS/search?utf8=%E2%9C%93&q=Call+for+testing&type=Issues)). This should be done **at least one week in advance**.
|
||||
In order to get as much feedback as possible before a release, it's preferable to announce it on GitHub by creating a dedicated ticket
|
||||
([see examples](https://github.com/FreshRSS/FreshRSS/search?utf8=%E2%9C%93&q=Call+for+testing&type=Issues)). This should be done **at least one week in advance**.
|
||||
|
||||
It's also recommended to make the announcement on mailing@freshrss.org.
|
||||
|
||||
|
@ -12,7 +13,7 @@ You must also **make sure that the CHANGELOG file is up to date** with the updat
|
|||
|
||||
## Git process
|
||||
|
||||
```sh
|
||||
```console
|
||||
$ git checkout edge
|
||||
$ git pull
|
||||
$ vim constants.php
|
||||
|
@ -98,7 +99,7 @@ When everything's working, it's time to announce the release to the world!
|
|||
|
||||
## Starting the next development version
|
||||
|
||||
```sh
|
||||
```console
|
||||
$ git checkout edge
|
||||
$ vim constants.php
|
||||
# Update the FRESHRSS_VERSION
|
||||
|
|
|
@ -50,7 +50,7 @@ The following features are not supported:
|
|||
|
||||
If this API does not work as expected in your RSS reader, you can test it manually with a tool like [Postman](https://www.getpostman.com/).
|
||||
|
||||
Configure a POST request to the URL https://freshrss.example.net/api/fever.php?api which should give you the result:
|
||||
Configure a POST request to the URL <https://freshrss.example.net/api/fever.php?api> which should give you the result:
|
||||
```json
|
||||
{
|
||||
"api_version": 3,
|
||||
|
@ -84,15 +84,15 @@ Perfect, you're now authenticated and you can start testing the more advanced fe
|
|||
|
||||
Some basic calls are:
|
||||
|
||||
* https://freshrss.example.net/api/fever.php?api&items
|
||||
* https://freshrss.example.net/api/fever.php?api&feeds
|
||||
* https://freshrss.example.net/api/fever.php?api&groups
|
||||
* https://freshrss.example.net/api/fever.php?api&unread_item_ids
|
||||
* https://freshrss.example.net/api/fever.php?api&saved_item_ids
|
||||
* https://freshrss.example.net/api/fever.php?api&items&since_id=some_id
|
||||
* https://freshrss.example.net/api/fever.php?api&items&max_id=some_id
|
||||
* https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id
|
||||
* https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id
|
||||
* <https://freshrss.example.net/api/fever.php?api&items>
|
||||
* <https://freshrss.example.net/api/fever.php?api&feeds>
|
||||
* <https://freshrss.example.net/api/fever.php?api&groups>
|
||||
* <https://freshrss.example.net/api/fever.php?api&unread_item_ids>
|
||||
* <https://freshrss.example.net/api/fever.php?api&saved_item_ids>
|
||||
* <https://freshrss.example.net/api/fever.php?api&items&since_id=some_id>
|
||||
* <https://freshrss.example.net/api/fever.php?api&items&max_id=some_id>
|
||||
* <https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id>
|
||||
* <https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id>
|
||||
|
||||
Replace `some_id` with a real ID from your `freshrss_username_entry` database.
|
||||
|
||||
|
|
|
@ -5,21 +5,21 @@ Additionally [page about our Fever compatible API](06_Fever_API.md) for another
|
|||
|
||||
## RSS clients
|
||||
|
||||
There are many RSS clients that support the Fever API, but they seem to understand the Fever API a bit differently.
|
||||
There are many RSS clients that support the Fever API, but they might understand the API a bit differently.
|
||||
If your favourite client doesn't work properly with this API, please create an issue and we'll have a look.
|
||||
But we can **only** do that for free clients.
|
||||
|
||||
### Usage & Authentication
|
||||
## Usage & Authentication
|
||||
|
||||
Before you can start using this API, you have to enable and setup API access, which is [documented here](../users/06_Mobile_access.md),
|
||||
and then reset the user’s API password.
|
||||
|
||||
Then point your mobile application to the `greader.php` address (e.g. `https://freshrss.example.net/api/greader.php`).
|
||||
|
||||
# Compatible clients
|
||||
## Compatible clients
|
||||
|
||||
6. On the same FreshRSS API page, note the address given under “Your API address”, like `https://freshrss.example.net/api/greader.php`
|
||||
* Type the API address in a client, together with your FreshRSS username, and the corresponding special API password.
|
||||
1. On the same FreshRSS API page, note the address given under “Your API address”, like `https://freshrss.example.net/api/greader.php`
|
||||
2. Type the API address in a client, together with your FreshRSS username, and the corresponding special API password.
|
||||
|
||||
| App | Platform | License |
|
||||
|:----------------------------------------------------------------------------------:|:-------------------:|:--------------------------------------------------------:|
|
||||
|
@ -34,7 +34,7 @@ Then point your mobile application to the `greader.php` address (e.g. `https://f
|
|||
|[Reeder](https://www.reederapp.com/) |MacOS, iOS |Closed Source |
|
||||
|[FreshRSS-Notify](https://addons.mozilla.org/firefox/addon/freshrss-notify-webextension/) |Firefox |Open Source |
|
||||
|
||||
# Google Reader compatible API
|
||||
## Google Reader compatible API
|
||||
|
||||
Examples of basic queries:
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ If you're convinced that you should be heard, here's how you can go about it.
|
|||
|
||||
GitHub is the ideal platform to submit your requests. It allows us to discuss a problem or suggestion with others and it often generates new ideas. Let's not neglect this "social" aspect!
|
||||
|
||||
1. [Go to the bug ticket manager](https://github.com/FreshRSS/FreshRSS/issues)
|
||||
2. Start by checking if a similar request hasn't already been made. If so, please feel free to add your voice to the request.
|
||||
3. If your request is new, [open a new bug ticket](https://github.com/FreshRSS/FreshRSS/issues/new)
|
||||
4. Finally, write your request. If you're fluent in English, it's the preferred language because it allows for discussion with the largest number of people.
|
||||
5. Please follow the tips below to make it easier to let your ticket be heard.
|
||||
|
||||
1. [Go to the bug ticket manager](https://github.com/FreshRSS/FreshRSS/issues)
|
||||
2. Start by checking if a similar request hasn't already been made. If so, please feel free to add your voice to the request.
|
||||
3. If your request is new, [open a new bug ticket](https://github.com/FreshRSS/FreshRSS/issues/new)
|
||||
4. Finally, write your request. If you're fluent in English, it's the preferred language because it allows for discussion with the largest number of people.
|
||||
5. Please follow the tips below to make it easier to let your ticket be heard.
|
||||
|
||||
## Informal
|
||||
|
||||
Not everyone likes or uses GitHub for a variety of legitimate reasons. That is why you can also contact us in a more informal way.
|
||||
|
@ -59,8 +59,8 @@ So that we understand what you consider to be the problem.
|
|||
|
||||
Remember to give the following information if you know it:
|
||||
|
||||
1. Which browser? Which version?
|
||||
2. Which server: Apache, Nginx? Which version?
|
||||
3. Which version of PHP?
|
||||
4. Which database: SQLite, MySQL, MariaDB, PostgreSQL? Which version?
|
||||
5. Which distribution runs on the server? And... which version?
|
||||
1. Which browser? Which version?
|
||||
2. Which server: Apache, Nginx? Which version?
|
||||
3. Which version of PHP?
|
||||
4. Which database: SQLite, MySQL, MariaDB, PostgreSQL? Which version?
|
||||
5. Which distribution runs on the server? And... which version?
|
||||
|
|
|
@ -37,4 +37,4 @@ Another chance to try out, but not official supported by FreshRSS: The applicati
|
|||
|
||||
## Licence
|
||||
|
||||
FreshRSS is licensed under the GNU Affero General Public License v3.0.
|
||||
FreshRSS is licensed under the GNU Affero General Public License v3.0.
|
||||
|
|
|
@ -48,8 +48,8 @@ You should not have to write the array by yourself and we provide several comman
|
|||
|
||||
If you want to add support for a language which isn't supported by FreshRSS yet, you can run this command:
|
||||
|
||||
```console
|
||||
$ make i18n-add-language lang=[your language code]
|
||||
```sh
|
||||
make i18n-add-language lang=[your language code]
|
||||
```
|
||||
|
||||
You must replace `[your language code]` by the language tag of your language. It must follow the [IETF BCP 47 standard](https://en.wikipedia.org/wiki/IETF_language_tag). For instance, English is `en` and French is `fr`. You can target a specific region with a subtag, for instance `pt-br` for Brazilian Portuguese. If you're not sure of the code, Wikipedia might be a good start to find it or you can ask us for help too.
|
||||
|
@ -62,24 +62,24 @@ You might have noticed some strings are not yet translated from English even tho
|
|||
|
||||
To update a string, you just have to open its file, find the string, and change it (without removing the quotes around it!) You might want to remove the comment at the end of the line, but you should prefer to use the following command:
|
||||
|
||||
```console
|
||||
$ make i18n-format
|
||||
```sh
|
||||
make i18n-format
|
||||
```
|
||||
|
||||
It will remove the comments on the lines that you've changed, and will reformat the file correctly. If you've made any mistakes, it will fix them automatically or it will tell you it can't (well… the command will dramatically fail without any damage, don't worry).
|
||||
|
||||
The strings to translate can be easily found in the translations files thanks to the tag we spoke about at the end of the previous section. Indeed, it indicates to our tools that the strings are not translated yet. This means you can find them with Git. For instance for the Greek language:
|
||||
|
||||
```console
|
||||
$ git grep TODO app/i18n/he
|
||||
```sh
|
||||
git grep TODO app/i18n/he
|
||||
```
|
||||
|
||||
## Acknowledge a false-positive
|
||||
|
||||
Our tool detects if a string needs to be translated if it equals to the English version. For instance, the word “version” is the same in English and French. Thus, our tool would mark the French word to be translated. This is, in fact, the case for the `index.about.version` key. This case is considered as a false-positive because the word _is_ actually translated. To aknowledge such translations, you can run:
|
||||
|
||||
```console
|
||||
$ make i18n-ignore-key lang=fr key=index.about.version
|
||||
```sh
|
||||
make i18n-ignore-key lang=fr key=index.about.version
|
||||
```
|
||||
|
||||
This command adds an entry in the [`cli/i18n/ignore/fr.php` file](/cli/i18n/ignore/fr.php) so the key can be considered as translated.
|
||||
|
@ -88,22 +88,22 @@ This command adds an entry in the [`cli/i18n/ignore/fr.php` file](/cli/i18n/igno
|
|||
|
||||
If you're developping a new part of the application, you might want to declare a new translation key. Your first impulse would be to add the key to each file manually: don't do that, it's very painful. We provide another command:
|
||||
|
||||
```console
|
||||
$ make i18n-add-key key=the.key.to.add value='Your string in English'
|
||||
```sh
|
||||
make i18n-add-key key=the.key.to.add value='Your string in English'
|
||||
```
|
||||
|
||||
This adds the key to all the files. It’ll be in English, waiting for other translators.
|
||||
|
||||
Conversely, you may want to remove a key that is no longer used in the application with:
|
||||
|
||||
```console
|
||||
$ make i18n-remove-key key=the.key.to.remove
|
||||
```sh
|
||||
make i18n-remove-key key=the.key.to.remove
|
||||
```
|
||||
|
||||
Finally, if the English version of a string needs to be changed, you need to consider two cases. If the change doesn't impact the meaning of the sentence, and therefore other languages don't need to change (e.g. to fix a typo), you should make the change manually in the file. In any other case, you should use the following command:
|
||||
|
||||
```console
|
||||
$ make i18n-update-key key=the.key.to.change value='The new string in English'
|
||||
```sh
|
||||
make i18n-update-key key=the.key.to.change value='The new string in English'
|
||||
```
|
||||
|
||||
The key will simply be removed and added back with the new value.
|
||||
|
@ -126,7 +126,7 @@ For instance, the English translation for `gen.auth.keep_logged_in` is `Keep me
|
|||
|
||||
```php
|
||||
<label>
|
||||
<input type="checkbox" name="keep_logged_in" />
|
||||
<?= _t('gen.auth.keep_logged_in', 30) ?>
|
||||
<input type="checkbox" name="keep_logged_in" />
|
||||
<?= _t('gen.auth.keep_logged_in', 30) ?>
|
||||
</label>
|
||||
```
|
||||
|
|
|
@ -2,7 +2,7 @@ FreshRSS has three primary viewing modes: Normal, Global, and Reader view.
|
|||
|
||||
# Normal view
|
||||
|
||||
Normal view will allow you to view articles in a compressed view. They can be separated by category or individual feed, or viewed in the "main stream" containing all feeds. Clicking a feed in the sidebar (mobile users will need to click the folder icon to open it) will open that feed's view.
|
||||
Normal view will allow you to view articles in a compressed view. They can be separated by category or individual feed, or viewed in the "main stream" containing all feeds. Clicking a feed in the sidebar (mobile users will need to click the folder icon to open it) will open that feed's view.
|
||||
|
||||
## Article List
|
||||
|
||||
|
@ -10,13 +10,13 @@ By default, the normal view includes six items per article. From left to right:
|
|||
* **Read status:** An envalope icon to show if the article has been read or not. Closed envalopes are unread, open envalopes are read. Clicking on the icon will toggle the read status.
|
||||
* **Favourite status:** A star icon to show if the article has been favourited or not. Filled stars are favourited, empty stars are not. Clicking on the icon will toggle the favourite status.
|
||||
* **Feed name:** The name of the feed that the article is from. Clicking the feed name will move to that feed's view in normal view.
|
||||
* **Article title:** The title of the article. Clicking will open the article for viewing within FreshRSS.
|
||||
* **Article title:** The title of the article. Clicking will open the article for viewing within FreshRSS.
|
||||
* **Article date/time:** The time the article was posted.
|
||||
* **Link to original article:** A globe icon that can be clicked to go to the article on the original website.
|
||||
|
||||
## Normal View Sidebar
|
||||
|
||||
Clicking the gear icon next to an individual feed will display additional options for that feed.
|
||||
Clicking the gear icon next to an individual feed will display additional options for that feed.
|
||||
* **Filter:** Run the defined filter to mark articles as read
|
||||
* **Statistics:** View statistics about the feed
|
||||
* **See website:** Open the feed's website in another tab
|
||||
|
@ -26,7 +26,7 @@ Clicking the gear icon next to an individual feed will display additional option
|
|||
|
||||
# Global view
|
||||
|
||||
Global view allows quick views of feed's statuses at once. Feeds and categories are shown with the number of unread articles next to them. Clicking a feed's name will open it in a view similar to normal view.
|
||||
Global view allows quick views of feed's statuses at once. Feeds and categories are shown with the number of unread articles next to them. Clicking a feed's name will open it in a view similar to normal view.
|
||||
|
||||
# Reader view
|
||||
|
||||
|
@ -54,27 +54,28 @@ Here is an example to trigger article update every hour.
|
|||
|
||||
Special parameters to configure the script - all parameters can be combined:
|
||||
|
||||
- Parameter "force"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&force=1
|
||||
* Parameter "force"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&force=1>
|
||||
If *force* is set to 1 all feeds will be refreshed at once.
|
||||
|
||||
- Parameter "ajax"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&ajax=1
|
||||
* Parameter "ajax"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&ajax=1>
|
||||
Only a status site is returned and not a complete website. Example: "OK"
|
||||
|
||||
- Parameter "maxFeeds"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&maxFeeds=30
|
||||
* Parameter "maxFeeds"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&maxFeeds=30>
|
||||
If *maxFeeds* is set the configured amount of feeds is refreshed at once. The default setting is "10".
|
||||
|
||||
- Parameter "token"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&token=542345872345734
|
||||
* Parameter "token"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&token=542345872345734>
|
||||
Security parameter to prevent unauthorized refreshes. For detailed Documentation see "Form authentication".
|
||||
|
||||
### Online cron
|
||||
|
||||
If you do not have access to the installation server scheduled task, you can still automate the update process.
|
||||
|
||||
To do so, you need to create a scheduled task, which need to call a specific URL: https://freshrss.example.net/i/?c=feed&a=actualize (it could be different depending on your installation). Depending on your application authentication method, you need to adapt the scheduled task.
|
||||
To do so, you need to create a scheduled task, which need to call a specific URL:
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize> (it could be different depending on your installation). Depending on your application authentication method, you need to adapt the scheduled task.
|
||||
|
||||
#### No authentication
|
||||
|
||||
|
@ -139,6 +140,7 @@ This update occurs on the selected feed only. To trigger it, simply click on the
|
|||
# Filtering articles
|
||||
|
||||
## Purpose
|
||||
|
||||
When the number of articles stored by FreshRSS inevitably grows larger, it's important to use efficient filters to display only a subset of the articles. There are several methods that filter with different criteria. Usually those methods can be combined.
|
||||
|
||||
## How-to filter
|
||||
|
@ -147,17 +149,17 @@ When the number of articles stored by FreshRSS inevitably grows larger, it's imp
|
|||
|
||||
This is the easiest method. You only need to click on the category title in the side panel. There are two special categories at the top of the panel:
|
||||
|
||||
* *Main feed* displays only articles from feeds marked as available in that category
|
||||
* *Favourites* displays only articles marked as favourites
|
||||
* *Main feed* displays only articles from feeds marked as available in that category
|
||||
* *Favourites* displays only articles marked as favourites
|
||||
|
||||
### By feed
|
||||
|
||||
There are several methods to filter articles by feed:
|
||||
|
||||
* by clicking the feed title in the side panel
|
||||
* by clicking the feed title in the article details
|
||||
* by filtering in the feed options from the side panel
|
||||
* by filtering in the feed configuration
|
||||
* by clicking the feed title in the side panel
|
||||
* by clicking the feed title in the article details
|
||||
* by filtering in the feed options from the side panel
|
||||
* by filtering in the feed configuration
|
||||
|
||||
![Feed filter](../img/users/feed.filter.1.png)
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
# Adding a feed
|
||||
|
||||
1. To add a feed, copy the URL of its RSS or Atom file (for instance, the Framablog RSS URL is `https://framablog.org/feed/`). FreshRSS is able to automatically find the address of the feed for websites that are declaring it in a standard way.
|
||||
2. In FreshRSS, click the "**+**" button next to “Subscriptions management”.
|
||||
3. Paste the URL in the “Feed URL” field.
|
||||
4. (optional): You can select the category for your feed. By default, it will be in “Uncategorized”.
|
||||
5. (optional): If the subscription requires credentials, you can enter them in the "HTTP username" and "HTTP password" fields.
|
||||
6. (optional): You can set a timeout for the feed request if the feed requires it.
|
||||
7. (optional): You can choose to ignore SSL certificate errors (such as with self-signed certificates) by setting "Verify SSL security" to "No". This is not recommended, and it is better to either add the root certificate to the FreshRSS server or to fix the SSL certificate problems on the feed hosting server.
|
||||
1. To add a feed, copy the URL of its RSS or Atom file (for instance, the Framablog RSS URL is `https://framablog.org/feed/`). FreshRSS is able to automatically find the address of the feed for websites that are declaring it in a standard way.
|
||||
2. In FreshRSS, click the "**+**" button next to “Subscriptions management”.
|
||||
3. Paste the URL in the “Feed URL” field.
|
||||
4. (optional): You can select the category for your feed. By default, it will be in “Uncategorized”.
|
||||
5. (optional): If the subscription requires credentials, you can enter them in the "HTTP username" and "HTTP password" fields.
|
||||
6. (optional): You can set a timeout for the feed request if the feed requires it.
|
||||
7. (optional): You can choose to ignore SSL certificate errors (such as with self-signed certificates) by setting "Verify SSL security" to "No". This is not recommended, and it is better to either add the root certificate to the FreshRSS server or to fix the SSL certificate problems on the feed hosting server.
|
||||
|
||||
## Subscription management
|
||||
|
||||
The "Subscription management" submenu allows categories and feeds to be configured. Feeds can be moved between categories by drag-and-drop, or in the individual feed's settings. Hovering over a feed/category will cause a gear icon to appear. Clicking the icon will bring up the settings for that item.
|
||||
The "Subscription management" submenu allows categories and feeds to be configured. Feeds can be moved between categories by drag-and-drop, or in the individual feed's settings. Hovering over a feed/category will cause a gear icon to appear. Clicking the icon will bring up the settings for that item.
|
||||
|
||||
## Category Settings
|
||||
|
||||
### Information
|
||||
|
||||
* **Title:** Name of category
|
||||
* **Display position:** Defines the order of categories. Lower numbers get priority, non-numbered items come last, and equally numbered items will sort by alphabetical order.
|
||||
* **Display position:** Defines the order of categories. Lower numbers get priority, non-numbered items come last, and equally numbered items will sort by alphabetical order.
|
||||
|
||||
### Archiving
|
||||
|
||||
|
@ -47,16 +47,19 @@ The "Article CSS selector on original website" corresponds to the "path" consis
|
|||
|
||||
##### Example: Rue89
|
||||
|
||||
To find this path, you have to go to the address of one of the truncated articles (for example, http://www.rue89.com/2013/10/15/prof-maths-jai-atteint-lextase-dihn-pedagogie-inversee-246635). You look have to look for the "block" of HTML that corresponds to article content (in the source code!).
|
||||
To find this path, you have to go to the address of one of the truncated articles.
|
||||
You look have to look for the "block" of HTML that corresponds to article content (in the source code!).
|
||||
|
||||
Here we find that the block that encompasses nothing but the content of the article is ```<div class="content clearfix">```. We'll only use the `.content` class here. Nevertheless, as said above, it's best to start the path with an id. If we go back to the parent block, we find ```<div id="article">``` and that's perfect! The path will be ```#article .content```.
|
||||
|
||||
##### Add the corresponding classes to the article CSS path on the feed configuration page. Examples:
|
||||
##### Add the corresponding classes to the article CSS path on the feed configuration page
|
||||
|
||||
* Rue89: ```#article .content```
|
||||
* PCINpact: ```#actu_content```
|
||||
* Lesnumériques: ```article#body div.text.clearfix```
|
||||
* Phoronix: ```#main .content```
|
||||
Examples:
|
||||
|
||||
* Rue89: ```#article .content```
|
||||
* PCINpact: ```#actu_content```
|
||||
* Lesnumériques: ```article#body div.text.clearfix```
|
||||
* Phoronix: ```#main .content```
|
||||
|
||||
##### Combining CSS Classes
|
||||
|
||||
|
@ -94,20 +97,20 @@ See [SQLite export/import]( https://github.com/FreshRSS/FreshRSS/tree/edge/cli)
|
|||
|
||||
## Export
|
||||
|
||||
1. To export your list of feeds, go to “Subscriptions management”.
|
||||
2. Click on “Import / export”
|
||||
3. You can select for your export:
|
||||
1. the list of feeds
|
||||
2. labelled articles
|
||||
3. favourite articles
|
||||
4. and finally, you can select feeds you want to export (by default, all feeds are selected)
|
||||
4. Click on “export”.
|
||||
1. To export your list of feeds, go to “Subscriptions management”.
|
||||
2. Click on “Import / export”
|
||||
3. You can select for your export:
|
||||
1. the list of feeds
|
||||
2. labelled articles
|
||||
3. favourite articles
|
||||
4. and finally, you can select feeds you want to export (by default, all feeds are selected)
|
||||
4. Click on “export”.
|
||||
|
||||
## Import
|
||||
|
||||
1. Go to the page “Import / export”.
|
||||
2. Click on “Browse” and select your OPML or archive file on your computer.
|
||||
3. Click on “Import”
|
||||
1. Go to the page “Import / export”.
|
||||
2. Click on “Browse” and select your OPML or archive file on your computer.
|
||||
3. Click on “Import”
|
||||
|
||||
> **Important**: you can not import directly a list of feeds from a text file.
|
||||
> You need to convert it beforehand to _OPML_.
|
||||
|
@ -116,11 +119,11 @@ See [SQLite export/import]( https://github.com/FreshRSS/FreshRSS/tree/edge/cli)
|
|||
> * [Pandoc](https://pandoc.org/) available for most systems,
|
||||
> * [OPML generator](https://opml-gen.ovh/) available online,
|
||||
> * [txt2opml](https://alterfiles.com/convert/txt/opml) available online.
|
||||
|
||||
|
||||
## Use bookmarklet
|
||||
|
||||
Bookmarklets are little scripts that you can execute to perform various tasks. FreshRSS offers a bookmarklet for subscribing to newsfeeds.
|
||||
|
||||
1. Open “Subscriptions management”.
|
||||
2. Click on “Subscription tools”.
|
||||
3. Drag the “Subscribe” button to your bookmark toolbar or right click and choose your browser’s “Bookmark link” action.
|
||||
1. Open “Subscriptions management”.
|
||||
2. Click on “Subscription tools”.
|
||||
3. Drag the “Subscribe” button to your bookmark toolbar or right click and choose your browser’s “Bookmark link” action.
|
||||
|
|
|
@ -15,14 +15,14 @@ Available languages are: cz, de, en, es, fr, he, it, ko, nl, oc, pt-br, ru, tr,
|
|||
|
||||
There's no accounting for tastes, which is why FreshRSS offers eight official themes:
|
||||
|
||||
* *Blue Lagoon* by **Mister aiR**
|
||||
* *Dark* by **AD**
|
||||
* *Flat design* by **Marien Fressinaud**
|
||||
* *Origine* by **Marien Fressinaud**
|
||||
* *Origine-compact* by **Kevin Papst**
|
||||
* *Pafat* by **Plopoyop**
|
||||
* *Screwdriver* by **Mister aiR**
|
||||
* *Swage* by **Patrick Crandol**
|
||||
* *Blue Lagoon* by **Mister aiR**
|
||||
* *Dark* by **AD**
|
||||
* *Flat design* by **Marien Fressinaud**
|
||||
* *Origine* by **Marien Fressinaud**
|
||||
* *Origine-compact* by **Kevin Papst**
|
||||
* *Pafat* by **Plopoyop**
|
||||
* *Screwdriver* by **Mister aiR**
|
||||
* *Swage* by **Patrick Crandol**
|
||||
|
||||
If you can't find any themes you like, it's always possible to [create your own](../developers/04_Frontend/02_Design.md).
|
||||
|
||||
|
@ -32,10 +32,10 @@ To select a theme, simply scroll through the themes and select one that strikes
|
|||
|
||||
Some people prefer short lines of text, while others prefer to maximize the available screen space. To satisfy the maximum number of people, it's possible to customize the width of the displayed content. There are four settings available:
|
||||
|
||||
* **Fine** displays content up to a maximum width of 550 pixels
|
||||
* **Medium** displays content up to a maximum width of 800 pixels
|
||||
* **Large** displays content up to a maximum width of 1000 pixels
|
||||
* **No limit** displays the content on 100% of the available space
|
||||
* **Fine** displays content up to a maximum width of 550 pixels
|
||||
* **Medium** displays content up to a maximum width of 800 pixels
|
||||
* **Large** displays content up to a maximum width of 1000 pixels
|
||||
* **No limit** displays the content on 100% of the available space
|
||||
|
||||
## Article icons
|
||||
|
||||
|
@ -68,11 +68,11 @@ If you don't use those buttons because you never browse on mobile or because you
|
|||
|
||||
## Number of articles per page
|
||||
|
||||
This setting defines the number of articles to display at once before needing to load more. In normal and reading view, more articles are loaded automatically. In global view, a button will appear at the bottom of the list.
|
||||
This setting defines the number of articles to display at once before needing to load more. In normal and reading view, more articles are loaded automatically. In global view, a button will appear at the bottom of the list.
|
||||
|
||||
## Articles to display
|
||||
|
||||
The status of articles to display when loading FreshRSS. "Adjust showing" will display only unread articles by default, but will display all articles when there are no unread articles to show.
|
||||
The status of articles to display when loading FreshRSS. "Adjust showing" will display only unread articles by default, but will display all articles when there are no unread articles to show.
|
||||
|
||||
## Use "lazy load" mode to load images
|
||||
|
||||
|
@ -84,9 +84,9 @@ This will set images to load as they are viewed. This can save data, but will ca
|
|||
|
||||
These are the global options for fetching and retaining articles from feeds. They can be overwridden by individual feed's settings.
|
||||
|
||||
## Maintenance
|
||||
## Maintenance
|
||||
|
||||
This allows for purging/optimizing the current user's articles in the database.
|
||||
This allows for purging/optimizing the current user's articles in the database.
|
||||
|
||||
# Sharing
|
||||
|
||||
|
@ -99,16 +99,15 @@ By default, the sharing list is empty.
|
|||
|
||||
To add a new item to the list, please follow the following simple steps:
|
||||
|
||||
1. Select the desired sharing method in the drop-down list.
|
||||
1. Press the ```✚``` button to add it to the list.
|
||||
1. Configure the method in the list. All names can be modified in the display. Some methods need the sharing URL to be able to work properly (ex: Shaarli).
|
||||
1. Submit your changes.
|
||||
1. Select the desired sharing method in the drop-down list.
|
||||
1. Press the ```✚``` button to add it to the list.
|
||||
1. Configure the method in the list. All names can be modified in the display. Some methods need the sharing URL to be able to work properly (ex: Shaarli).
|
||||
1. Submit your changes.
|
||||
|
||||
To remove an item from the list, follow those simple steps:
|
||||
|
||||
1. Press the ```❌``` button next to the share method you want to remove.
|
||||
1. Submit your changes.
|
||||
|
||||
1. Press the ```❌``` button next to the share method you want to remove.
|
||||
1. Submit your changes.
|
||||
|
||||
|
||||
# Shortcuts
|
||||
|
@ -120,10 +119,10 @@ Of course, if you're not satisfied with the key mapping, you can change you conf
|
|||
|
||||
There are 4 types of shortcuts:
|
||||
|
||||
1. Views: they allow switching views with ease.
|
||||
1. Navigation: they allow navigation through articles, feeds, and categories.
|
||||
1. Article actions: they allow interactions with an article, like sharing or opening it on the original web-site.
|
||||
1. Other actions: they allow other interactions with the application, like opening the user queries menu or accessing the documentation.
|
||||
1. Views: they allow switching views with ease.
|
||||
1. Navigation: they allow navigation through articles, feeds, and categories.
|
||||
1. Article actions: they allow interactions with an article, like sharing or opening it on the original web-site.
|
||||
1. Other actions: they allow other interactions with the application, like opening the user queries menu or accessing the documentation.
|
||||
|
||||
It's worth noting that the share article action has two levels. Once you press the shortcut, a menu containing all the share options opens.
|
||||
To choose one share option, you need to select it by its number. When there is only one option, it's selected automatically though.
|
||||
|
@ -142,26 +141,26 @@ At the moment, there is no helper to build a user query from here.
|
|||
|
||||
# Profile
|
||||
|
||||
You can change your email address or password here. The authentication token is required for accessing the aggregated RSS feed for a user. A blank token will disable accessing the RSS feed without being logged in.
|
||||
You can change your email address or password here. The authentication token is required for accessing the aggregated RSS feed for a user. A blank token will disable accessing the RSS feed without being logged in.
|
||||
|
||||
# Extensions
|
||||
|
||||
Extensions can be managed from this menu. Note that while extensions can be removed from the web interface, they cannot be added from it.
|
||||
Extensions can be managed from this menu. Note that while extensions can be removed from the web interface, they cannot be added from it.
|
||||
|
||||
# Users
|
||||
|
||||
**TODO**
|
||||
> **TODO**
|
||||
|
||||
## Authentication methods
|
||||
|
||||
### HTTP Authentication (Apache)
|
||||
|
||||
1. User control is based on the `.htaccess` file.
|
||||
2. It is best practice to place the `.htaccess` file in the `./i/` subdirectory so the API and other third party services can work.
|
||||
3. If you want to limit all access to registered users only, place the file in the FreshRSS directory itself or in a parent directory. Note that WebSub and API will not work!
|
||||
4. Example `.htaccess` file for a user "marie":
|
||||
1. User control is based on the `.htaccess` file.
|
||||
2. It is best practice to place the `.htaccess` file in the `./i/` subdirectory so the API and other third party services can work.
|
||||
3. If you want to limit all access to registered users only, place the file in the FreshRSS directory itself or in a parent directory. Note that WebSub and API will not work!
|
||||
4. Example `.htaccess` file for a user "marie":
|
||||
|
||||
```
|
||||
```apache
|
||||
AuthUserFile /home/marie/repertoire/.htpasswd
|
||||
AuthGroupFile /dev/null
|
||||
AuthName "Chez Marie"
|
||||
|
|
|
@ -13,8 +13,8 @@ See the [page about the Fever compatible API](../developers/06_Fever_API.md.md)
|
|||
|
||||
# Testing
|
||||
|
||||
3. Under the section “Profile”, click on the link like `https://rss.example.net/api/` next to the field “API password”.
|
||||
4. Click on first link “Check full server configuration”:
|
||||
1. Under the section “Profile”, click on the link like `https://rss.example.net/api/` next to the field “API password”.
|
||||
2. Click on first link “Check full server configuration”:
|
||||
* If you get *PASS* then you are done, all is good: you may proceed to step 6.
|
||||
* If you get *Bad Request!* or *Not Found*, then your server probably does not accept slashes `/` that are escaped `%2F`. Proceed to step 5.
|
||||
* If you get any other error message, proceed to step 5.
|
||||
|
@ -22,7 +22,7 @@ See the [page about the Fever compatible API](../developers/06_Fever_API.md.md)
|
|||
|
||||
# Fix server configuration
|
||||
|
||||
5. Click on the second link “Check partial server configuration (without `%2F` support)”:
|
||||
* Click on the second link “Check partial server configuration (without `%2F` support)”:
|
||||
* If you get `PASS`, then the problem is indeed that your server does not accept slashes `/` that are escaped `%2F`.
|
||||
* With Apache, remember the directive [`AllowEncodedSlashes On`](http://httpd.apache.org/docs/trunk/mod/core.html#allowencodedslashes)
|
||||
* Or use a client that does not escape slashes (such as EasyRSS), in which case proceed to step 6.
|
||||
|
|
|
@ -13,7 +13,8 @@ Of course, ```/i``` has a purpose! It's used for performance and usability:
|
|||
|
||||
To increase security, FreshRSS is hosted in two sections. The first section is public (the `./p` folder) and the second section is private (everything else). Therefore the `robots.txt` file is located in the `./p` sub-folder.
|
||||
|
||||
As explained in the [security section](../admins/09_AccessControl.html), it's highly recommended to make only the public section available at the domain level. With that configuration, `./p` is the root folder for http://demo.freshrss.org/, thus making `robots.txt` available at the root of the application.
|
||||
As explained in the [security section](../admins/09_AccessControl.html), it's highly recommended to make only the public section available at the domain level.
|
||||
With that configuration, `./p` is the root folder for <https://demo.freshrss.org/>, thus making `robots.txt` available at the root of the application.
|
||||
|
||||
The same principle applies to `favicon.ico` and `.htaccess`.
|
||||
|
||||
|
|
|
@ -4,11 +4,10 @@ S'il vous manque des informations, n'hésitez pas à fouiller un peu la
|
|||
documentation ou venir nous poser directement vos questions sur [la mailing
|
||||
list des développeurs](https://freshrss.org/mailman/listinfo/dev).
|
||||
|
||||
* Le premier mailing est destiné à l'information générique, il doit être
|
||||
adapté aux utilisateurs. [Rejoignez
|
||||
mailing@freshrss.org](https://freshrss.org/mailman/listinfo/mailing).
|
||||
* Le deuxième mailing s'adresse principalement aux développeurs. [Rejoignez
|
||||
dev@freshrss.org](https://freshrss.org/mailman/listinfo/dev)
|
||||
* Le premier mailing est destiné à l'information générique, il doit être adapté aux utilisateurs.
|
||||
[Rejoignez mailing@freshrss.org](https://freshrss.org/mailman/listinfo/mailing).
|
||||
* Le deuxième mailing s'adresse principalement aux développeurs.
|
||||
[Rejoignez dev@freshrss.org](https://freshrss.org/mailman/listinfo/dev)
|
||||
|
||||
## Signaler un bug
|
||||
|
||||
|
@ -16,47 +15,39 @@ Avez-vous trouvé un bogue ? Ne paniquez pas, voici quelques étapes pour le
|
|||
signaler facilement :
|
||||
|
||||
1. Cherche sur [le bug tracker](https://github.com/FreshRSS/FreshRSS/issues)
|
||||
(n'oubliez pas d'utiliser la barre de recherche).
|
||||
(n'oubliez pas d'utiliser la barre de recherche).
|
||||
2. Si vous constatez un bogue similaire, n'hésitez pas à poster un
|
||||
commentaire pour ajouter de l'importance au ticket correspondant.
|
||||
3. Si vous ne l'avez pas trouvé, [ouvrez un nouveau
|
||||
ticket](https://github.com/FreshRSS/FreshRSS/issues/new).
|
||||
commentaire pour ajouter de l'importance au ticket correspondant.
|
||||
3. Si vous ne l'avez pas trouvé,
|
||||
[ouvrez un nouveau ticket](https://github.com/FreshRSS/FreshRSS/issues/new).
|
||||
|
||||
Si vous devez créer un nouveau ticket, essayez de garder les conseils
|
||||
suivants :
|
||||
|
||||
* Donnez un titre explicite au ticket pour le retrouver plus facilement plus
|
||||
tard.
|
||||
* Soyez aussi exhaustif que possible dans la description : qu'avez-vous fait
|
||||
? Quel est le bogue ? Quelles sont les étapes pour reproduire le bogue ?
|
||||
* Donnez un titre explicite au ticket pour le retrouver plus facilement plus tard.
|
||||
* Soyez aussi exhaustif que possible dans la description : qu'avez-vous fait ?
|
||||
Quel est le bogue ? Quelles sont les étapes pour reproduire le bogue ?
|
||||
|
||||
Nous avons aussi besoin de quelques informations :
|
||||
|
||||
* Votre version de FreshRSS (sur la page A propos) ou le fichier
|
||||
`constants.php`)
|
||||
* Votre version de FreshRSS (sur la page A propos) ou le fichier `constants.php`)
|
||||
* Votre configuration de serveur : type d'hébergement, version PHP
|
||||
* Quelle base de données : SQLite, MySQL, MariaDB, PostgreSQL ? Quelle
|
||||
version ?
|
||||
* Si possible, les logs associés (logs PHP et logs FreshRSS sous
|
||||
`data/users/your_user/log.txt`)
|
||||
* Quelle base de données : SQLite, MySQL, MariaDB, PostgreSQL ? Quelle version ?
|
||||
* Si possible, les logs associés (logs PHP et logs FreshRSS sous `data/users/your_user/log.txt`)
|
||||
|
||||
## Corriger un bogue
|
||||
|
||||
Voulez-vous corriger un bogue ? Pour maintenir une grande coordination entre
|
||||
les collaborateurs, vous devrez suivre ces indications :
|
||||
|
||||
1. Assurez-vous que le bogue est associé à un ticket et indiquez que vous
|
||||
allez travailler sur le bogue.
|
||||
2. [Fork du répertoire de
|
||||
projet](https://help.github.com/articles/fork-a-repo/).
|
||||
3. [Créez une nouvelle
|
||||
branche](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/).
|
||||
Le nom de la branche doit être clair, et idéalement préfixé par
|
||||
l'identifiant du ticket correspondant. Par exemple,
|
||||
`783-contributing-file` pour réparer [ticket
|
||||
#783](https://github.com/FreshRSS/FreshRSS/issues/783).
|
||||
4. Ajoutez vos modifications à votre fork et [ouvrez une demande de pull
|
||||
request](https://help.github.com/articles/using-pull-requests/).
|
||||
1. Assurez-vous que le bogue est associé à un ticket et indiquez que vous allez travailler sur le bogue.
|
||||
2. [Fork du répertoire de projet](https://help.github.com/articles/fork-a-repo/).
|
||||
3. [Créez une nouvelle branche](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/).
|
||||
Le nom de la branche doit être clair, et idéalement préfixé par l'identifiant du ticket correspondant.
|
||||
Par exemple, `783-contributing-file` pour réparer
|
||||
[ticket #783](https://github.com/FreshRSS/FreshRSS/issues/783).
|
||||
4. Ajoutez vos modifications à votre fork et
|
||||
[ouvrez une demande de pull request](https://help.github.com/articles/using-pull-requests/).
|
||||
|
||||
Si vous devez écrire du code, veuillez suivre [nos recommandations de style
|
||||
de codage](developers/01_First_steps.md).
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# Configurer son environnement (Docker)
|
||||
# Premier pas
|
||||
|
||||
## Configurer son environnement (Docker)
|
||||
|
||||
FreshRSS est construit en PHP et utilise le framework Minz. Les
|
||||
dépendancessont directement incluses dans le code source, donc vous n'avez
|
||||
|
@ -27,9 +29,9 @@ Tout d'abord, vous devez installer
|
|||
|
||||
Une fois que c'est fait, clonez le dépôt de code de la manière suivante :
|
||||
|
||||
```console
|
||||
$ git clone https://github.com/FreshRSS/FreshRSS.git
|
||||
$ cd FreshRSS
|
||||
```sh
|
||||
git clone https://github.com/FreshRSS/FreshRSS.git
|
||||
cd FreshRSS
|
||||
```
|
||||
|
||||
Notez que, pour contribuer, vous devrez d'abord « forker » ce dépôt de code
|
||||
|
@ -38,8 +40,8 @@ dépôt. Adaptez les commandes en conséquence.
|
|||
|
||||
Ensuite, la seule commande que vous devez connaître est la suivante :
|
||||
|
||||
```console
|
||||
$ make start
|
||||
```sh
|
||||
make start
|
||||
```
|
||||
|
||||
Cela peut prendre un certain temps pour que Docker télécharge l'image
|
||||
|
@ -51,8 +53,8 @@ commande en la préfixant par `sudo`.
|
|||
|
||||
Vous pouvez arrêter les conteneurs en tapant <kbd>Control</kbd> + <kbd>c</kbd> ou avec la commande suivante, dans un autre terminal:
|
||||
|
||||
```console
|
||||
$ make stop
|
||||
```sh
|
||||
make stop
|
||||
```
|
||||
|
||||
Si la configuration vous intéresse, les commandes `make' sont définies dans
|
||||
|
@ -63,8 +65,8 @@ différent (par défaut `alpine`), vous pouvez surcharger de la manière
|
|||
suivante la variable d'environnement `TAG` au moment de l'exécution de la
|
||||
commande :
|
||||
|
||||
```console
|
||||
$ TAG=arm make start
|
||||
```sh
|
||||
TAG=arm make start
|
||||
```
|
||||
|
||||
Vous pouvez trouver la liste complète des tags disponibles [sur le hub
|
||||
|
@ -73,26 +75,26 @@ Docker](https://hub.docker.com/r/freshrss/freshrss/tags).
|
|||
Si vous voulez construire l'image Docker, vous pouvez lancer la commande
|
||||
suivante :
|
||||
|
||||
```console
|
||||
$ make build
|
||||
$ # ou
|
||||
$ TAG=arm make build
|
||||
```sh
|
||||
make build
|
||||
# ou
|
||||
TAG=arm make build
|
||||
```
|
||||
|
||||
La valeur de la variable `TAG` peut contenir n'importe quelle valeur (par
|
||||
exemple `local`). Vous pouvez cibler une architecture spécifique en ajoutant
|
||||
`-alpine` ou `-arm` à la fin du tag (par exemple `local-arm`).
|
||||
|
||||
# Architecture du projet
|
||||
## Architecture du projet
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
# Extensions
|
||||
## Extensions
|
||||
|
||||
Si vous souhaitez créer votre propre extension FreshRSS, consultez la
|
||||
[documentation de l'extension](03_Backend/05_Extensions.md).
|
||||
|
||||
# Style de codage
|
||||
## Style de codage
|
||||
|
||||
Si vous désirez contribuer au code, il est important de respecter le style
|
||||
de codage suivant. Le code actuel ne le respecte pas entièrement mais il est
|
||||
|
@ -101,12 +103,13 @@ de notre devoir à tous de le changer dès que l'occasion se présente.
|
|||
Aucune nouvelle contribution ne respectant pas ces règles ne sera acceptée
|
||||
tant que les corrections nécessaires ne sont pas appliquées.
|
||||
|
||||
## Espaces, tabulations et autres caractères blancs
|
||||
### Espaces, tabulations et autres caractères blancs
|
||||
|
||||
#### Indentation
|
||||
|
||||
### Indentation
|
||||
L'indentation du code doit être faite impérativement avec des tabulations.
|
||||
|
||||
### Alignement
|
||||
#### Alignement
|
||||
|
||||
Une fois l'indentation faite, il peut être nécessaire de faire un alignement
|
||||
pour simplifier la lecture. Dans ce cas, il faut utiliser les espaces.
|
||||
|
@ -116,7 +119,7 @@ $resultat = une_fonction_avec_un_nom_long($param1, $param2,
|
|||
$param3, $param4);
|
||||
```
|
||||
|
||||
### Fin de ligne
|
||||
#### Fin de ligne
|
||||
|
||||
Le caractère de fin de ligne doit être un saut de ligne (LF) qui est le
|
||||
caractère de fin de ligne des systèmes *NIX. Ce caractère ne doit pas être
|
||||
|
@ -132,15 +135,15 @@ git diff --check
|
|||
git diff --check --cached
|
||||
```
|
||||
|
||||
### Fin de fichier
|
||||
#### Fin de fichier
|
||||
|
||||
Chaque fichier doit se terminer par une ligne vide.
|
||||
|
||||
### Le cas de la virgule, du point et du point-virgule
|
||||
#### Le cas de la virgule, du point et du point-virgule
|
||||
|
||||
Il n'y a pas d'espace avant ces caractères, il y en a un après.
|
||||
|
||||
### Le cas des opérateurs
|
||||
#### Le cas des opérateurs
|
||||
|
||||
Chaque opérateur est entouré d'espaces.
|
||||
|
||||
|
@ -152,7 +155,7 @@ if ($a == 10) {
|
|||
echo $a ? 1 : 0;
|
||||
```
|
||||
|
||||
### Le cas des parenthèses
|
||||
#### Le cas des parenthèses
|
||||
|
||||
Il n'y a pas d'espaces entre des parenthèses. Il n'y a pas d'espaces avant
|
||||
une parenthèse ouvrante sauf si elle est précédée d'un mot-clé. Il n'y a pas
|
||||
|
@ -169,7 +172,7 @@ if ((int)$a == 10) {
|
|||
}
|
||||
```
|
||||
|
||||
### Le cas des fonctions chainées
|
||||
#### Le cas des fonctions chainées
|
||||
|
||||
Ce cas se présente le plus souvent en Javascript. Quand on a des fonctions
|
||||
chainées, des fonctions anonymes ainsi que des fonctions de rappels, il est
|
||||
|
@ -192,7 +195,7 @@ shortcut.add("shift+" + shortcuts.mark_read, function () {
|
|||
});
|
||||
```
|
||||
|
||||
## Longueur des lignes
|
||||
### Longueur des lignes
|
||||
|
||||
Les lignes ne doivent pas dépasser 80 caractères. Il est cependant autorisé
|
||||
exceptionnellement de dépasser cette limite s'il n'est pas possible de la
|
||||
|
@ -209,12 +212,12 @@ function ma_fonction($param_1, $param_2,
|
|||
}
|
||||
```
|
||||
|
||||
## Nommage
|
||||
### Nommage
|
||||
|
||||
L'ensemble des éléments du code (fonctions, classes, méthodes et variables)
|
||||
doivent être nommés de manière à décrire leur usage de façon concise.
|
||||
|
||||
### Fonctions et variables
|
||||
#### Fonctions et variables
|
||||
|
||||
Les fonctions et les variables doivent suivre la convention "snake case".
|
||||
|
||||
|
@ -227,7 +230,7 @@ function nom_de_la_fontion() {
|
|||
$nom_de_la_variable;
|
||||
```
|
||||
|
||||
### Méthodes
|
||||
#### Méthodes
|
||||
|
||||
Les méthodes doivent suivre la convention "lower camel case".
|
||||
|
||||
|
@ -237,7 +240,7 @@ private function nomDeLaMethode() {
|
|||
}
|
||||
```
|
||||
|
||||
### Classes
|
||||
#### Classes
|
||||
|
||||
Les classes doivent suivre la convention "upper camel case".
|
||||
|
||||
|
@ -245,18 +248,19 @@ Les classes doivent suivre la convention "upper camel case".
|
|||
abstract class NomDeLaClasse {}
|
||||
```
|
||||
|
||||
## Encodage
|
||||
### Encodage
|
||||
|
||||
Les fichiers doivent être encodés en UTF-8.
|
||||
|
||||
## Compatibilité PHP
|
||||
### Compatibilité PHP
|
||||
|
||||
Assurez-vous que votre code fonctionne avec une version de PHP aussi
|
||||
ancienne que celle que FreshRSS supporte officiellement.
|
||||
|
||||
## Divers
|
||||
### Divers
|
||||
|
||||
#### Le cas des opérateurs sur plusieurs lignes
|
||||
|
||||
### Le cas des opérateurs
|
||||
Les opérateurs doivent être en fin de ligne dans le cas de conditions sur
|
||||
plusieurs lignes.
|
||||
|
||||
|
@ -267,12 +271,12 @@ if ($a == 10 ||
|
|||
}
|
||||
```
|
||||
|
||||
### Fin de fichier
|
||||
#### Fin de fichier PHP
|
||||
|
||||
Si le fichier ne contient que du PHP, il ne doit pas comporter de balise
|
||||
fermante.
|
||||
|
||||
### Tableaux
|
||||
#### Tableaux
|
||||
|
||||
Lors de l'écriture de tableaux sur plusieurs lignes, tous les éléments
|
||||
doivent être suivis d'une virgule (même le dernier).
|
||||
|
|
|
@ -18,18 +18,18 @@ nous permet de pouvoir discuter à plusieurs sur un problème ou une
|
|||
suggestion et de faire émerger, souvent, des idées nouvelles. Ne négligeons
|
||||
pas cet aspect "social" !
|
||||
|
||||
1. [Rendez-vous sur le gestionnaire de tickets de
|
||||
bugs](https://github.com/FreshRSS/FreshRSS/issues)
|
||||
2. Commencez par rechercher si une demande similaire n'a pas déjà été
|
||||
faite. Si oui, n'hésitez pas à ajouter votre voix à la demande.
|
||||
3. Si votre demande est nouvelle, [ouvrez un nouveau ticket de
|
||||
bug](https://github.com/FreshRSS/FreshRSS/issues/new)
|
||||
4. Rédigez enfin votre demande. Si vous maitrisez l'anglais, c'est la
|
||||
langue à privilégier car cela permet d'ouvrir la discussion à un plus
|
||||
grand nombre de personnes. Sinon, ce n'est pas grave, continuez en
|
||||
français :)
|
||||
5. Merci de bien vouloir suivre les quelques conseils donnés plus bas pour
|
||||
faciliter la prise en compte de votre ticket.
|
||||
1. [Rendez-vous sur le gestionnaire de tickets de
|
||||
bugs](https://github.com/FreshRSS/FreshRSS/issues)
|
||||
2. Commencez par rechercher si une demande similaire n'a pas déjà été
|
||||
faite. Si oui, n'hésitez pas à ajouter votre voix à la demande.
|
||||
3. Si votre demande est nouvelle, [ouvrez un nouveau ticket de
|
||||
bug](https://github.com/FreshRSS/FreshRSS/issues/new)
|
||||
4. Rédigez enfin votre demande. Si vous maitrisez l'anglais, c'est la
|
||||
langue à privilégier car cela permet d'ouvrir la discussion à un plus
|
||||
grand nombre de personnes. Sinon, ce n'est pas grave, continuez en
|
||||
français :)
|
||||
5. Merci de bien vouloir suivre les quelques conseils donnés plus bas pour
|
||||
faciliter la prise en compte de votre ticket.
|
||||
|
||||
## De façon informelle
|
||||
|
||||
|
@ -38,9 +38,9 @@ diverses que légitimes. C'est pourquoi vous pouvez aussi nous contacter de
|
|||
façon plus informelle.
|
||||
|
||||
* Sur [notre chat
|
||||
Mattermost](https://framateam.org/signup_user_complete/?id=e2680d3e3128b9fac8fdb3003b0024ee)
|
||||
Mattermost](https://framateam.org/signup_user_complete/?id=e2680d3e3128b9fac8fdb3003b0024ee)
|
||||
* Sur [les listes de
|
||||
diffusion](https://freshrss.org/announce-of-the-mailing-lists.html)
|
||||
diffusion](https://freshrss.org/announce-of-the-mailing-lists.html)
|
||||
* À des évènements / rencontres autour du Logiciel Libre
|
||||
* Autour d'une bière dans un bar
|
||||
* Etc.
|
||||
|
@ -52,24 +52,24 @@ suggestion :
|
|||
|
||||
|
||||
* **Faites attention à l'orthographe.** même si ce n'est pas toujours
|
||||
facile, faites votre maximum. ;)
|
||||
facile, faites votre maximum. ;)
|
||||
* **Donnez un titre explicite à votre demande**, quitte à ce qu'il soit un
|
||||
peu long. Cela nous aide non seulement à comprendre votre demande, mais
|
||||
aussi à retrouver votre ticket plus tard.
|
||||
peu long. Cela nous aide non seulement à comprendre votre demande, mais
|
||||
aussi à retrouver votre ticket plus tard.
|
||||
* **Une demande = un ticket.** Vous pouvez avoir des tas d'idées mais vous
|
||||
avez peur de spammer le gestionnaire de bugs : ça ne fait rien. Il vaut
|
||||
mieux avoir un peu trop de tickets que trop de demandes dans un seul. On
|
||||
s'occupera de fermer et regrouper les demandes qui le peuvent.
|
||||
avez peur de spammer le gestionnaire de bugs : ça ne fait rien. Il vaut
|
||||
mieux avoir un peu trop de tickets que trop de demandes dans un seul. On
|
||||
s'occupera de fermer et regrouper les demandes qui le peuvent.
|
||||
* Si vous remontez un bug, pensez à nous **fournir les logs de FreshRSS**
|
||||
(accessibles dans les dossier ''data/log/'' de FreshRSS) **et PHP**
|
||||
(l'emplacement peut varier selon les distributions, mais pensez à chercher
|
||||
dans ''/var/log/httpd'' ou ''/var/log/apache'').
|
||||
(accessibles dans les dossier ''data/log/'' de FreshRSS) **et PHP**
|
||||
(l'emplacement peut varier selon les distributions, mais pensez à chercher
|
||||
dans ''/var/log/httpd'' ou ''/var/log/apache'').
|
||||
* Si vous ne trouvez pas les fichiers de logs, précisez-le dans votre ticket
|
||||
afin que nous sachions que vous avez déjà cherché.
|
||||
afin que nous sachions que vous avez déjà cherché.
|
||||
* Tous les bugs ne nécessitent pas les logs, mais si vous doutez, mieux vaut
|
||||
nous les fournir. Les logs sont importants et très utiles pour débugguer !
|
||||
nous les fournir. Les logs sont importants et très utiles pour débugguer !
|
||||
* Il se peut que les logs puissent révéler des informations plus ou moins
|
||||
confidentielles, **faites attention à ne rien divulguer de sensible.**
|
||||
confidentielles, **faites attention à ne rien divulguer de sensible.**
|
||||
|
||||
De plus, face à un bug, je ne peux que vous encourager à suivre le format de
|
||||
message suivant (tiré du [site de Sam &
|
||||
|
@ -97,12 +97,11 @@ Afin que nous comprenions bien où est le problème... au moins selon vous :p
|
|||
|
||||
Pensez à donner les informations suivantes si vous les connaissez :
|
||||
|
||||
1. Quel navigateur ? Quelle version ?
|
||||
2. Quel serveur : Apache, Nginx ? Quelle version ?
|
||||
3. Quelle version de PHP ?
|
||||
4. Quelle base de données : SQLite, MySQL, MariaDB, PostgreSQL ? Quelle
|
||||
version ?
|
||||
5. Quelle distribution sur le serveur ? Et… quelle version ?
|
||||
1. Quel navigateur ? Quelle version ?
|
||||
2. Quel serveur : Apache, Nginx ? Quelle version ?
|
||||
3. Quelle version de PHP ?
|
||||
4. Quelle base de données : SQLite, MySQL, MariaDB, PostgreSQL ? Quelle version ?
|
||||
5. Quelle distribution sur le serveur ? Et… quelle version ?
|
||||
|
||||
## Système de branches
|
||||
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
# Modèles
|
||||
# Minz
|
||||
|
||||
**À FAIRE**
|
||||
## Modèles
|
||||
|
||||
# Contrôleurs et actions
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Contrôleurs et actions
|
||||
|
||||
# Vues
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Vues
|
||||
|
||||
# Routage
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Routage
|
||||
|
||||
# Écriture des URL
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Écriture des URL
|
||||
|
||||
# Internationalisation
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Internationalisation
|
||||
|
||||
# Comprendres les mécanismes internes
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Comprendres les mécanismes internes
|
||||
|
||||
> **À FAIRE**
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
# Accès à la base de données
|
||||
# Éditer le code source
|
||||
|
||||
**À FAIRE**
|
||||
## Accès à la base de données
|
||||
|
||||
# Écrire une action et sa vue associée
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Écrire une action et sa vue associée
|
||||
|
||||
# Gestion de l'authentification
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Gestion de l'authentification
|
||||
|
||||
# Gestion des logs
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Gestion des logs
|
||||
|
||||
> **À FAIRE**
|
||||
|
|
|
@ -14,8 +14,7 @@ FreshRSS est limité dans ses possibilités techniques par différents facteurs
|
|||
|
||||
* La disponibilité des développeurs principaux ;
|
||||
* La volonté d'intégrer certains changements ;
|
||||
* Le niveau de « hack » nécessaire pour intégrer des fonctionnalités à la
|
||||
marge.
|
||||
* Le niveau de « hack » nécessaire pour intégrer des fonctionnalités à la marge.
|
||||
|
||||
Si la première limitation peut, en théorie, être levée par la participation
|
||||
de nouveaux contributeurs au projet, elle est en réalité conditionnée par la
|
||||
|
@ -27,11 +26,10 @@ Une autre solution consiste à passer par un système d'extensions. En
|
|||
permettant à des utilisateurs d'écrire leur propre extension sans avoir à
|
||||
s'intéresser au cœur même du logiciel de base, on permet :
|
||||
|
||||
1. De réduire la quantité de code source à assimiler pour un nouveau
|
||||
contributeur ;
|
||||
1. De réduire la quantité de code source à assimiler pour un nouveau contributeur ;
|
||||
2. De permettre d'intégrer des nouveautés de façon non-officielles ;
|
||||
3. De se passer des développeurs principaux pour d'éventuelles améliorations
|
||||
sans passer par la case « fork ».
|
||||
sans passer par la case « fork ».
|
||||
|
||||
Note : il est tout à fait imaginable que les fonctionnalités d'une extension
|
||||
puissent par la suite être intégrées dans le code initial de FreshRSS de
|
||||
|
@ -57,26 +55,26 @@ Minz repose et impose une architecture MVC pour les projets l'utilisant. On
|
|||
distingue dans cette architecture trois composants principaux :
|
||||
|
||||
* Le Modèle : c'est l'objet de base que l'on va manipuler. Dans FreshRSS,
|
||||
les catégories, les flux et les articles sont des modèles. La partie du
|
||||
code qui permet de les manipuler en base de données fait aussi partie du
|
||||
modèle mais est séparée du modèle de base : on parle de DAO (pour « Data
|
||||
Access Object »). Les modèles sont stockés dans un répertoire `Models`.
|
||||
les catégories, les flux et les articles sont des modèles. La partie du
|
||||
code qui permet de les manipuler en base de données fait aussi partie du
|
||||
modèle mais est séparée du modèle de base : on parle de DAO (pour « Data
|
||||
Access Object »). Les modèles sont stockés dans un répertoire `Models`.
|
||||
* La Vue : c'est ce qui représente ce que verra l'utilisateur. La vue est
|
||||
donc simplement du code HTML que l'on mixe avec du PHP pour afficher les
|
||||
informations dynamiques. Les vues sont stockées dans un répertoire
|
||||
`views`.
|
||||
donc simplement du code HTML que l'on mixe avec du PHP pour afficher les
|
||||
informations dynamiques. Les vues sont stockées dans un répertoire
|
||||
`views`.
|
||||
* Le Contrôleur : c'est ce qui permet de lier modèles et vues entre
|
||||
eux. Typiquement, un contrôleur va charger des modèles à partir de la base
|
||||
de données (une liste d'articles par exemple) pour les « passer » à une
|
||||
vue afin qu'elle les affiche. Les contrôleurs sont stockés dans un
|
||||
répertoire `Controllers`.
|
||||
eux. Typiquement, un contrôleur va charger des modèles à partir de la base
|
||||
de données (une liste d'articles par exemple) pour les « passer » à une
|
||||
vue afin qu'elle les affiche. Les contrôleurs sont stockés dans un
|
||||
répertoire `Controllers`.
|
||||
|
||||
### Routage
|
||||
|
||||
Afin de lier une URL à un contrôleur, on doit passer par une phase dite de «
|
||||
routage ». Dans FreshRSS, cela est particulièrement simple car il suffit
|
||||
d'indiquer le nom du contrôleur à charger dans l'URL à l'aide d'un paramètre
|
||||
`c`. Par exemple, l'adresse http://exemple.com?c=hello va exécuter le code
|
||||
d'indiquer le nom du contrôleur à charger dans l'URL à l'aide d'un paramètre `c`.
|
||||
Par exemple, l'adresse <http://exemple.com?c=hello> va exécuter le code
|
||||
contenu dans le contrôleur `hello`.
|
||||
|
||||
Une notion qui n'a pas encore été évoquée est le système d'« actions ». Une
|
||||
|
@ -102,11 +100,11 @@ class FreshRSS_hello_Controller extends Minz_ActionController {
|
|||
?>
|
||||
```
|
||||
|
||||
Si l'on charge l'adresse http://exemple.com?c=hello&a=world, l'action
|
||||
Si l'on charge l'adresse <http://exemple.com?c=hello&a=world>, l'action
|
||||
`world` va donc être exécutée sur le contrôleur `hello`.
|
||||
|
||||
Note : si `c` ou `a` n'est pas précisée, la valeur par défaut de chacune de
|
||||
ces variables est `index`. Ainsi l'adresse http://exemple.com?c=hello va
|
||||
ces variables est `index`. Ainsi l'adresse <http://exemple.com?c=hello> va
|
||||
exécuter l'action `index` du contrôleur `hello`.
|
||||
|
||||
Plus loin, sera utilisée la convention `hello/world` pour évoquer un couple
|
||||
|
@ -183,7 +181,7 @@ suivante doit être évitée :
|
|||
```
|
||||
|
||||
Si un jour il est décidé d'utiliser un système d'« url rewriting » pour
|
||||
avoir des adresses au format http://exemple.com/controller/action, toutes
|
||||
avoir des adresses au format <http://exemple.com/controller/action>, toutes
|
||||
les adresses précédentes deviendraient ineffectives !
|
||||
|
||||
Préférez donc l'utilisation de la classe `Minz_Url` et de sa méthode
|
||||
|
@ -300,12 +298,9 @@ Français sont situés dans `i18n/fr/`. Il existe sept fichiers différents :
|
|||
* `conf.php` pour l'aspect configuration ;
|
||||
* `feedback.php` contient les traductions des messages de feedback ;
|
||||
* `gen.php` stocke ce qui est global à FreshRSS (gen pour « general ») ;
|
||||
* `index.php` pour la page principale qui liste les flux et la page « À
|
||||
propos » ;
|
||||
* `install.php` contient les phrases relatives à l'installation de FreshRSS
|
||||
;
|
||||
* `sub.php` pour l'aspect gestion des abonnements (sub pour « subscription
|
||||
»).
|
||||
* `index.php` pour la page principale qui liste les flux et la page « À propos » ;
|
||||
* `install.php` contient les phrases relatives à l'installation de FreshRSS ;
|
||||
* `sub.php` pour l'aspect gestion des abonnements (sub pour « subscription »).
|
||||
|
||||
Cette organisation permet de ne pas avoir un unique énorme fichier de
|
||||
traduction.
|
||||
|
@ -377,7 +372,7 @@ FreshRSS sans avoir à toucher au cœur du projet directement.
|
|||
### Travailler dans Docker
|
||||
|
||||
Quand on travaille sur une extension, c'est toujours plus facile de la travailler directement dans son environnement. Avec Docker, on peut exploiter l'option ```volume``` quand on démarre le conteneur. Heureusement, on peut l'utiliser sans avoir de connaissances particulières de Docker en utilisant la règle du Makefile :
|
||||
```
|
||||
```sh
|
||||
make start extensions="/chemin/complet/de/l/extension/1 /chemin/complet/de/l/extension/2"
|
||||
```
|
||||
|
||||
|
@ -394,7 +389,7 @@ Le répertoire principal d'une extension doit comporter au moins deux
|
|||
fichiers **obligatoire** :
|
||||
|
||||
* Un fichier `metadata.json` qui contient une description de l'extension. Ce
|
||||
fichier est écrit en JSON ;
|
||||
fichier est écrit en JSON ;
|
||||
* Un fichier `extension.php` contenant le point d'entrée de l'extension.
|
||||
|
||||
Please note that there is a not a required link between the directory name
|
||||
|
@ -419,17 +414,17 @@ You may also need additional files or subdirectories depending on your
|
|||
needs:
|
||||
|
||||
* `configure.phtml` est le fichier contenant le formulaire pour paramétrer
|
||||
votre extension
|
||||
votre extension
|
||||
* A `static/` directory containing CSS and JavaScript files that you will
|
||||
need for your extension (note that if you need to write a lot of CSS it
|
||||
may be more interesting to write a complete theme)
|
||||
need for your extension (note that if you need to write a lot of CSS it
|
||||
may be more interesting to write a complete theme)
|
||||
* A `Controllers` directory containing additional controllers
|
||||
* An `i18n` directory containing additional translations
|
||||
* `layout` and` views` directories to define new views or to overwrite the
|
||||
current views
|
||||
* `layout` and `views` directories to define new views or to overwrite the
|
||||
current views
|
||||
|
||||
In addition, it is good to have a `LICENSE` file indicating the license
|
||||
under which your extension is distributed and a` README` file giving a
|
||||
under which your extension is distributed and a `README` file giving a
|
||||
detailed description of it.
|
||||
|
||||
### The metadata.json file
|
||||
|
@ -440,15 +435,15 @@ following entries:
|
|||
|
||||
* `name` : le nom de votre extension ;
|
||||
* `author` : votre nom, éventuellement votre adresse mail mais il n'y a pas
|
||||
de format spécifique à adopter ;
|
||||
de format spécifique à adopter ;
|
||||
* `description` : une description de votre extension ;
|
||||
* `version` : le numéro de version actuel de l'extension ;
|
||||
* `entrypoint` : indique le point d'entrée de votre extension. Il doit
|
||||
correspondre au nom de la classe contenue dans le fichier `extension.php`
|
||||
sans le suffixe `Extension` (donc si le point d'entrée est `HelloWorld`,
|
||||
votre classe s'appellera `HelloWorldExtension`) ;
|
||||
correspondre au nom de la classe contenue dans le fichier `extension.php`
|
||||
sans le suffixe `Extension` (donc si le point d'entrée est `HelloWorld`,
|
||||
votre classe s'appellera `HelloWorldExtension`) ;
|
||||
* `type` : définit le type de votre extension. Il existe deux types :
|
||||
`system` et `user`. Nous étudierons cette différence juste après.
|
||||
`system` et `user`. Nous étudierons cette différence juste après.
|
||||
|
||||
Seuls les champs `name` et `entrypoint` sont requis.
|
||||
|
||||
|
@ -463,46 +458,45 @@ A __system__ extension in comparison is enabled for every account.
|
|||
|
||||
This file is the entry point of your extension. It must contain a specific
|
||||
class to function. As mentioned above, the name of the class must be your
|
||||
`entrypoint` suffixed by` Extension` (`HelloWorldExtension` for example).
|
||||
`entrypoint` suffixed by `Extension` (`HelloWorldExtension` for example).
|
||||
In addition, this class must be inherited from the `Minz_Extension` class to
|
||||
benefit from extensions-specific methods.
|
||||
|
||||
Your class will benefit from four methods to redefine:
|
||||
|
||||
* `install()` is called when a user clicks the button to activate your
|
||||
extension. It allows, for example, to update the database of a user in
|
||||
order to make it compatible with the extension. It returns `true` if
|
||||
everything went well or, if not, a string explaining the problem.
|
||||
extension. It allows, for example, to update the database of a user in
|
||||
order to make it compatible with the extension. It returns `true` if
|
||||
everything went well or, if not, a string explaining the problem.
|
||||
* `uninstall()` is called when a user clicks the button to disable your
|
||||
extension. This will allow you to undo the database changes you
|
||||
potentially made in `install ()`. It returns `true` if everything went
|
||||
well or, if not, a string explaining the problem.
|
||||
extension. This will allow you to undo the database changes you
|
||||
potentially made in `install ()`. It returns `true` if everything went
|
||||
well or, if not, a string explaining the problem.
|
||||
* `init()` is called for every page load *if the extension is enabled*. It
|
||||
will therefore initialize the behavior of the extension. This is the most
|
||||
important method.
|
||||
will therefore initialize the behavior of the extension. This is the most
|
||||
important method.
|
||||
* `handleConfigureAction()` is called when a user loads the extension
|
||||
management panel. Specifically, it is called when the
|
||||
`?c=extension&a=configured&e=name-of-your-extension` URL is loaded. You
|
||||
should also write here the behavior you want when validating the form in
|
||||
your `configure.phtml` file.
|
||||
management panel. Specifically, it is called when the
|
||||
`?c=extension&a=configured&e=name-of-your-extension` URL is loaded. You
|
||||
should also write here the behavior you want when validating the form in
|
||||
your `configure.phtml` file.
|
||||
|
||||
In addition, you will have a number of methods directly inherited from
|
||||
`Minz_Extension` that you should not redefine:
|
||||
In addition, you will have a number of methods directly inherited from
|
||||
`Minz_Extension` that you should not redefine:
|
||||
|
||||
* The "getters" first: most are explicit enough not to detail them here -
|
||||
`getName()`, `getEntrypoint()`, `getPath()` (allows you to retrieve the
|
||||
path to your extension), `getAuthor()`, `getDescription()`,
|
||||
`getVersion()`, `getType()`.
|
||||
`getName()`, `getEntrypoint()`, `getPath()` (allows you to retrieve the
|
||||
path to your extension), `getAuthor()`, `getDescription()`,
|
||||
`getVersion()`, `getType()`.
|
||||
* `getFileUrl($filename, $type)` will return the URL to a file in the
|
||||
`static` directory. The first parameter is the name of the file (without
|
||||
`static /`), the second is the type of file to be used (`css` or` js`).
|
||||
`static` directory. The first parameter is the name of the file (without
|
||||
`static /`), the second is the type of file to be used (`css` or `js`).
|
||||
* `registerController($base_name)` will tell Minz to take into account the
|
||||
given controller in the routing system. The controller must be located in
|
||||
your `Controllers` directory, the name of the file must be`
|
||||
<base_name>Controller.php` and the name of the
|
||||
`FreshExtension_<base_name>_Controller` class.
|
||||
given controller in the routing system. The controller must be located in
|
||||
your `Controllers` directory, the name of the file must be `<base_name>Controller.php` and the name of the
|
||||
`FreshExtension_<base_name>_Controller` class.
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
* `registerViews()`
|
||||
* `registerTranslates()`
|
||||
|
@ -529,44 +523,44 @@ class HelloWorldExtension extends Minz_Extension
|
|||
The following events are available:
|
||||
|
||||
* `check_url_before_add` (`function($url) -> Url | null`): will be executed
|
||||
every time a URL is added. The URL itself will be passed as
|
||||
parameter. This way a website known to have feeds which doesn't advertise
|
||||
it in the header can still be automatically supported.
|
||||
every time a URL is added. The URL itself will be passed as
|
||||
parameter. This way a website known to have feeds which doesn't advertise
|
||||
it in the header can still be automatically supported.
|
||||
* `entry_before_display` (`function($entry) -> Entry | null`): will be
|
||||
executed every time an entry is rendered. The entry itself (instance of
|
||||
FreshRSS\_Entry) will be passed as parameter.
|
||||
executed every time an entry is rendered. The entry itself (instance of
|
||||
FreshRSS\_Entry) will be passed as parameter.
|
||||
* `entry_before_insert` (`function($entry) -> Entry | null`): will be
|
||||
executed when a feed is refreshed and new entries will be imported into
|
||||
the database. The new entry (instance of FreshRSS\_Entry) will be passed
|
||||
as parameter.
|
||||
executed when a feed is refreshed and new entries will be imported into
|
||||
the database. The new entry (instance of FreshRSS\_Entry) will be passed
|
||||
as parameter.
|
||||
* `feed_before_actualize` (`function($feed) -> Feed | null`): will be
|
||||
executed when a feed is updated. The feed (instance of FreshRSS\_Feed)
|
||||
will be passed as parameter.
|
||||
executed when a feed is updated. The feed (instance of FreshRSS\_Feed)
|
||||
will be passed as parameter.
|
||||
* `feed_before_insert` (`function($feed) -> Feed | null`): will be executed
|
||||
when a new feed is imported into the database. The new feed (instance of
|
||||
FreshRSS\_Feed) will be passed as parameter.
|
||||
when a new feed is imported into the database. The new feed (instance of
|
||||
FreshRSS\_Feed) will be passed as parameter.
|
||||
* `freshrss_init` (`function() -> none`): will be executed at the end of the
|
||||
initialization of FreshRSS, useful to initialize components or to do
|
||||
additional access checks
|
||||
initialization of FreshRSS, useful to initialize components or to do
|
||||
additional access checks
|
||||
* `menu_admin_entry` (`function() -> string`): add an entry at the end of
|
||||
the "Administration" menu, the returned string must be valid HTML
|
||||
(e.g. `<li class="item active"><a href="url">New entry</a></li>`)
|
||||
the "Administration" menu, the returned string must be valid HTML
|
||||
(e.g. `<li class="item active"><a href="url">New entry</a></li>`)
|
||||
* `menu_configuration_entry` (`function() -> string`): add an entry at the
|
||||
end of the "Configuration" menu, the returned string must be valid HTML
|
||||
(e.g. `<li class="item active"><a href="url">New entry</a></li>`)
|
||||
end of the "Configuration" menu, the returned string must be valid HTML
|
||||
(e.g. `<li class="item active"><a href="url">New entry</a></li>`)
|
||||
* `menu_other_entry` (`function() -> string`): add an entry at the end of
|
||||
the header dropdown menu (i.e. after the "About" entry), the returned
|
||||
string must be valid HTML (e.g. `<li class="item active"><a href="url">New
|
||||
entry</a></li>`)
|
||||
the header dropdown menu (i.e. after the "About" entry), the returned
|
||||
string must be valid HTML (e.g. `<li class="item active"><a href="url">New
|
||||
entry</a></li>`)
|
||||
* `nav_reading_modes` (`function($reading_modes) -> array | null`): **TODO**
|
||||
add documentation
|
||||
add documentation
|
||||
* `post_update` (`function(none) -> none`): **TODO** add documentation
|
||||
* `simplepie_before_init` (`function($simplePie, $feed) -> none`): **TODO**
|
||||
add documentation
|
||||
add documentation
|
||||
|
||||
### Writing your own configure.phtml
|
||||
|
||||
When you want to support user configurations for your extension or simply
|
||||
display some information, you have to create the `configure.phtml` file.
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
# Les fichiers .phtml
|
||||
# Les vues
|
||||
|
||||
**À FAIRE**
|
||||
## Les fichiers .phtml
|
||||
|
||||
# Écrire une URL
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Écrire une URL
|
||||
|
||||
# Afficher une icône
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Afficher une icône
|
||||
|
||||
# Internationalisation
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Internationalisation
|
||||
|
||||
> **À FAIRE**
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
# Fichier modèle
|
||||
# Design
|
||||
|
||||
**À FAIRE**
|
||||
## Fichier modèle
|
||||
|
||||
# Écrire un nouveau thème
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Écrire un nouveau thème
|
||||
|
||||
# Surcharger les icônes
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## Surcharger les icônes
|
||||
|
||||
> **À FAIRE**
|
||||
|
|
|
@ -19,7 +19,7 @@ mises à jour de la version à sortir.
|
|||
|
||||
## Processus Git
|
||||
|
||||
```sh
|
||||
```console
|
||||
$ git checkout edge
|
||||
$ git pull
|
||||
$ vim constants.php
|
||||
|
@ -57,21 +57,21 @@ package FreshRSS (`PACKAGE_URL`). L'URL est de la forme
|
|||
Il existe ensuite 5 fonctions à remplir :
|
||||
|
||||
* `apply_update()` qui se charge de sauvegarder le répertoire contenant les
|
||||
données, de vérifier sa structure, de télécharger le package FreshRSS, de
|
||||
le déployer et de tout nettoyer. Cette fonction est pré-remplie mais des
|
||||
ajustements peuvent être faits si besoin est (ex. réorganisation de la
|
||||
structure de `./data`). Elle retourne `true` si aucun problème n'est
|
||||
survenu ou une chaîne de caractères indiquant un soucis ;
|
||||
données, de vérifier sa structure, de télécharger le package FreshRSS, de
|
||||
le déployer et de tout nettoyer. Cette fonction est pré-remplie mais des
|
||||
ajustements peuvent être faits si besoin est (ex. réorganisation de la
|
||||
structure de `./data`). Elle retourne `true` si aucun problème n'est
|
||||
survenu ou une chaîne de caractères indiquant un soucis ;
|
||||
* `need_info_update()` retourne `true` si l'utilisateur doit intervenir
|
||||
durant la mise à jour ou `false` sinon ;
|
||||
durant la mise à jour ou `false` sinon ;
|
||||
* `ask_info_update()` affiche un formulaire à l'utilisateur si
|
||||
`need_info_update()` a retourné `true` ;
|
||||
`need_info_update()` a retourné `true` ;
|
||||
* `save_info_update()` est chargée de sauvegarder les informations
|
||||
renseignées par l'utilisateur (issues du formulaire de
|
||||
`ask_info_update()`) ;
|
||||
renseignées par l'utilisateur (issues du formulaire de
|
||||
`ask_info_update()`) ;
|
||||
* `do_post_update()` est exécutée à la fin de la mise à jour et prend en
|
||||
compte le code de la nouvelle version (ex. si la nouvelle version modifie
|
||||
l'objet `Minz_Configuration`, vous bénéficierez de ces améliorations).
|
||||
compte le code de la nouvelle version (ex. si la nouvelle version modifie
|
||||
l'objet `Minz_Configuration`, vous bénéficierez de ces améliorations).
|
||||
|
||||
## Mise à jour du fichier de versions
|
||||
|
||||
|
@ -101,11 +101,11 @@ Et voici comment fonctionne cette table :
|
|||
* les versions `x.y.z-dev` sont **toutes** mises à jour vers `edge` ;
|
||||
* les versions stables sont mises à jour vers des versions stables ;
|
||||
* il est possible de sauter plusieurs versions d'un coup à condition que les
|
||||
scripts de mise à jour le prennent en charge ;
|
||||
scripts de mise à jour le prennent en charge ;
|
||||
* il est conseillé d'indiquer la correspondance de la version courante vers
|
||||
sa potentielle future version en précisant que cette version n'existe pas
|
||||
encore. Tant que le script correspondant n'existera pas, rien ne se
|
||||
passera.
|
||||
sa potentielle future version en précisant que cette version n'existe pas
|
||||
encore. Tant que le script correspondant n'existera pas, rien ne se
|
||||
passera.
|
||||
|
||||
Il est **très fortement** indiqué de garder ce fichier rangé selon les
|
||||
numéros de versions en séparant les versions stables et de dev.
|
||||
|
@ -134,16 +134,16 @@ update.freshrss.org :
|
|||
Lorsque tout fonctionne, il est temps d'annoncer la sortie au monde entier !
|
||||
|
||||
* sur GitHub en créant [une nouvelle
|
||||
release](https://github.com/FreshRSS/FreshRSS/releases/new) ;
|
||||
release](https://github.com/FreshRSS/FreshRSS/releases/new) ;
|
||||
* sur le blog de freshrss.org au minimum pour les versions stables (écrire
|
||||
l'article sur
|
||||
[FreshRSS/freshrss.org](https://github.com/FreshRSS/freshrss.org)).
|
||||
l'article sur
|
||||
[FreshRSS/freshrss.org](https://github.com/FreshRSS/freshrss.org)).
|
||||
* sur Twitter (compte [@FreshRSS](https://twitter.com/FreshRSS)) ;
|
||||
* et sur mailing@freshrss.org ;
|
||||
|
||||
## Lancer la prochaine version de développement
|
||||
|
||||
```sh
|
||||
```console
|
||||
$ git checkout edge
|
||||
$ vim constants.php
|
||||
# Mettre à jour le numéro de version de FRESHRSS_VERSION
|
||||
|
|
|
@ -9,29 +9,27 @@ fonctionnalités :
|
|||
|
||||
* Agrégation des flux RSS et Atom.
|
||||
* Utilisez les favoris pour marquer les articles qui vous ont plu ou que
|
||||
vous souhaitez lire plus tard.
|
||||
vous souhaitez lire plus tard.
|
||||
* Le système de filtrage et de recherche permettent de cibler exactement les
|
||||
articles que vous souhaitez lire.
|
||||
articles que vous souhaitez lire.
|
||||
* Les statistiques permettent de savoir en un coup d’œil quels sont les
|
||||
sites qui publient le plus, ou à l’inverse, le moins.
|
||||
sites qui publient le plus, ou à l’inverse, le moins.
|
||||
* Importation / exportation des flux au format OPML.
|
||||
* Multi-thèmes pour changer l’habillage de FreshRSS.
|
||||
* API Google Reader pour pouvoir y brancher des applications Android.
|
||||
* « *Responsive design* » : l’application s’adapte aux petits écrans pour
|
||||
emporter FreshRSS dans votre poche.
|
||||
emporter FreshRSS dans votre poche.
|
||||
* Auto-hébergeable : le code source est libre (AGPL3) et vous pouvez donc
|
||||
l’héberger sur votre propre serveur.
|
||||
* Multi-utilisateurs pour héberger plusieurs personnes sur une même
|
||||
installation.
|
||||
l’héberger sur votre propre serveur.
|
||||
* Multi-utilisateurs pour héberger plusieurs personnes sur une même installation.
|
||||
* Et bien d’autres !
|
||||
|
||||
Cette documentation est divisée en plusieurs parties :
|
||||
|
||||
* La [documentation utilisateurs](./users/02_First_steps.md) pour découvrir
|
||||
les fonctionnalités de FreshRSS.
|
||||
les fonctionnalités de FreshRSS.
|
||||
* La [documentation administrateurs](../en/admins/01_Index.html) (en
|
||||
anglais) pour l’installation et la maintenance de FreshRSS.
|
||||
anglais) pour l’installation et la maintenance de FreshRSS.
|
||||
* La [documentation développeurs](./developers/01_First_steps.md) pour
|
||||
savoir comment contribuer et mieux comprendre le code source de FreshRSS.
|
||||
* Le [guide de contribution](./contributing.md) pour nous aider à développer
|
||||
FreshRSS.
|
||||
savoir comment contribuer et mieux comprendre le code source de FreshRSS.
|
||||
* Le [guide de contribution](./contributing.md) pour nous aider à développer FreshRSS.
|
||||
|
|
|
@ -4,13 +4,13 @@ FreshRSS est un logiciel développé en PHP reposant sur le modèle client - ser
|
|||
|
||||
Il est toutefois de votre responsabilité de vérifier que votre hébergement permettra de faire tourner FreshRSS avant de nous taper dessus. Dans le cas où les informations listées ci-dessous ne seraient pas à jour, vous pourrez.
|
||||
|
||||
| Logiciel | Recommandé | Fonctionne aussi avec |
|
||||
| -------- | ----------- | --------------------- |
|
||||
| Serveur web | **Apache 2** | Nginx |
|
||||
| PHP | **PHP 7+** | |
|
||||
| Modules PHP | Requis : libxml, cURL, JSON, PDO_MySQL, PCRE et ctype<br />Requis (32 bits seulement) : GMP<br />Recommandé : Zlib, mbstring et iconv, ZipArchive<br />*Pour une liste complète des modules nécessaires voir le [Dockerfile](https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/Dockerfile-Alpine#L7-L9)* | |
|
||||
| Base de données | **MySQL 5.5.3+** | SQLite 3.7.4+, PostgreSQL 9.5+ |
|
||||
| Navigateur | **Firefox** | Chrome, Opera, Safari, or Edge |
|
||||
| Logiciel | Recommandé | Fonctionne aussi avec |
|
||||
| -------- | ----------- | --------------------- |
|
||||
| Serveur web | **Apache 2** | Nginx |
|
||||
| PHP | **PHP 7+** | |
|
||||
| Modules PHP | Requis : libxml, cURL, JSON, PDO_MySQL, PCRE et ctype<br />Requis (32 bits seulement) : GMP<br />Recommandé : Zlib, mbstring et iconv, ZipArchive<br />*Pour une liste complète des modules nécessaires voir le [Dockerfile](https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/Dockerfile-Alpine#L7-L9)* | |
|
||||
| Base de données | **MySQL 5.5.3+** | SQLite 3.7.4+, PostgreSQL 9.5+ |
|
||||
| Navigateur | **Firefox** | Chrome, Opera, Safari, or Edge |
|
||||
|
||||
## Choisir la bonne version de FreshRSS
|
||||
|
||||
|
@ -137,4 +137,4 @@ Pour un tutoriel pas à pas, vous pouvez suivre [cet article dédié](http://www
|
|||
|
||||
## Conseils de sécurité
|
||||
|
||||
**TODO**
|
||||
> **TODO**
|
||||
|
|
|
@ -18,11 +18,11 @@ Une fois que vous avez ajouté vos flux à FreshRSS, il est temps de les
|
|||
lire. Pour cela, trois modes de lecture s'offrent à vous :
|
||||
|
||||
1. [La vue normale](03_Main_view.md#la-vue-normale) qui permet de voir et de
|
||||
lire rapidement les nouveaux articles
|
||||
lire rapidement les nouveaux articles
|
||||
2. [La vue globale](03_Main_view.md#la-vue-globale) est destinée à vous
|
||||
offrir un panorama de l'état de vos flux
|
||||
offrir un panorama de l'état de vos flux
|
||||
3. [La vue lecture](03_Main_view.md#la-vue-lecture) est pensée pour vous
|
||||
offrir un meilleur confort de lecture
|
||||
offrir un meilleur confort de lecture
|
||||
|
||||
Bien, vous maitrisez maintenant la vue que vous préférez ? Il est temps de
|
||||
vous offrir un peu plus de confort de lecture. FreshRSS est grandement
|
||||
|
@ -31,16 +31,16 @@ le plus. Voici tout de même quelques pistes pour améliorer votre quotidien
|
|||
sur FreshRSS :
|
||||
|
||||
* [Rangez vos flux dans des
|
||||
catégories](04_Subscriptions.md#organisation_des_flux)
|
||||
catégories](04_Subscriptions.md#organisation_des_flux)
|
||||
* [Configurez votre page
|
||||
d'accueil](05_Configuration.md#personnaliser-la-vue)
|
||||
d'accueil](05_Configuration.md#personnaliser-la-vue)
|
||||
* [Configurez vos options de
|
||||
lecture](05_Configuration.md#options-de-lecture)
|
||||
lecture](05_Configuration.md#options-de-lecture)
|
||||
* [Mettez à jour vos flux](03_Main_view.md#rafraichir-les-flux)
|
||||
* [Filtrez les articles](03_Main_view.md#filtrer-les-articles) pour accéder
|
||||
rapidement à ceux que vous voulez lire en priorité
|
||||
rapidement à ceux que vous voulez lire en priorité
|
||||
* [Retrouvez un article](03_Main_view.md#rechercher-des-articles) qui a été
|
||||
publié il y a quelques jours ou mois
|
||||
publié il y a quelques jours ou mois
|
||||
* [Accédez à vos flux même sur mobile](06_Mobile_access.md)
|
||||
* [Ajoutez quelques extensions](https://github.com/FreshRSS/Extensions)
|
||||
* [Foire aux questions](07_Frequently_Asked_Questions.md)
|
||||
|
|
|
@ -1,27 +1,29 @@
|
|||
# La vue normale
|
||||
# La page principale
|
||||
|
||||
**À FAIRE**
|
||||
## La vue normale
|
||||
|
||||
# La vue globale
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## La vue globale
|
||||
|
||||
# La vue lecture
|
||||
> **À FAIRE**
|
||||
|
||||
**À FAIRE**
|
||||
## La vue lecture
|
||||
|
||||
# Rafraîchir les flux
|
||||
> **À FAIRE**
|
||||
|
||||
## Rafraîchir les flux
|
||||
|
||||
Pour profiter pleinement de FreshRSS, il faut qu’il récupère les nouveaux
|
||||
articles disponibles des flux auxquels vous avez souscrit. Pour cela, il
|
||||
existe plusieurs méthodes.
|
||||
|
||||
## Mise à jour automatique
|
||||
### Mise à jour automatique
|
||||
|
||||
C’est la méthode recommandée car il n’y a pas besoin d’y penser, elle se
|
||||
fait toute seule, à la fréquence que vous avez choisi.
|
||||
|
||||
### Par le script actualize_script.php
|
||||
#### Par le script actualize_script.php
|
||||
|
||||
Cette méthode n’est possible que si vous avez accès aux tâches planifiées de
|
||||
la machine sur laquelle est installée votre instance de FreshRSS.
|
||||
|
@ -43,34 +45,34 @@ toutes les heures.
|
|||
« Paramètres de configuration du script; Ils sont utilisables simultanément
|
||||
: »
|
||||
|
||||
- Parameter "force"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&force=1 If *force* is set
|
||||
* Parameter "force"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&force=1> If *force* is set
|
||||
to 1 all feeds will be refreshed at once.
|
||||
|
||||
- Parameter "ajax" https://freshrss.example.net/i/?c=feed&a=actualize&ajax=1
|
||||
* Parameter "ajax" <https://freshrss.example.net/i/?c=feed&a=actualize&ajax=1>
|
||||
Only a status site is returned and not a complete website. Example: "OK"
|
||||
|
||||
- Parameter "maxFeeds"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&maxFeeds=30 If *maxFeeds*
|
||||
* Parameter "maxFeeds"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&maxFeeds=30> If *maxFeeds*
|
||||
is set the configured amount of feeds is refreshed at once. The default
|
||||
setting is "10".
|
||||
|
||||
- Parameter "token"
|
||||
https://freshrss.example.net/i/?c=feed&a=actualize&token=542345872345734
|
||||
* Parameter "token"
|
||||
<https://freshrss.example.net/i/?c=feed&a=actualize&token=542345872345734>
|
||||
Security parameter to prevent unauthorized refreshes. For detailed
|
||||
Documentation see "Form authentication".
|
||||
|
||||
### Online cron
|
||||
#### Online cron
|
||||
|
||||
If you do not have access to the installation server scheduled task, you can
|
||||
still automate the update process.
|
||||
|
||||
To do so, you need to create a scheduled task, which need to call a specific
|
||||
URL: https://freshrss.example.net/i/?c=feed&a=actualize (it could be
|
||||
URL: <https://freshrss.example.net/i/?c=feed&a=actualize> (it could be
|
||||
different depending on your installation). Depending on your application
|
||||
authentication method, you need to adapt the scheduled task.
|
||||
|
||||
#### Aucune authentification
|
||||
##### Aucune authentification
|
||||
|
||||
C’est le cas le plus simple, puisque votre instance est publique, vous
|
||||
n’avez rien de particulier à préciser :
|
||||
|
@ -79,7 +81,7 @@ n’avez rien de particulier à préciser :
|
|||
0 * * * * curl 'https://freshrss.example.net/i/?c=feed&a=actualize'
|
||||
```
|
||||
|
||||
### Authentification par formulaire
|
||||
##### Authentification par formulaire
|
||||
|
||||
Dans ces cas-là, si vous avez autorisé la lecture anonyme des articles, vous
|
||||
pouvez aussi permettre à n’importe qui de rafraîchir vos flux (« Autoriser
|
||||
|
@ -108,7 +110,7 @@ string, with `&user=insert-username`:
|
|||
0 * * * * curl 'https://freshrss.exemple.net/i/?c=feed&a=actualize&user=quelquun&token=mon-token'
|
||||
```
|
||||
|
||||
### Authentification HTTP
|
||||
##### Authentification HTTP
|
||||
|
||||
Dans ce cas-là, le token et les permissions “anonymes” sont inutilisables et
|
||||
il vous sera nécessaire d’indiquer vos identifiants dans la tâche
|
||||
|
@ -119,13 +121,13 @@ implique que vos identifiants seront visibles en clair !**
|
|||
0 * * * * curl -u alice:motdepasse123 'https://freshrss.exemple.net/i/?c=feed&a=actualize'
|
||||
```
|
||||
|
||||
## Mise à jour manuelle
|
||||
### Mise à jour manuelle
|
||||
|
||||
Si vous ne pouvez pas ou ne voulez pas utiliser la méthode automatique, vous
|
||||
pouvez le faire de façon manuelle. Il existe deux méthodes qui permettent de
|
||||
mettre à jour tout ou partie des flux.
|
||||
|
||||
### Mise à jour complète
|
||||
#### Mise à jour complète
|
||||
|
||||
Cette mise à jour se fait pour l’ensemble des flux de l’instance. Pour
|
||||
initier cette mise à jour, il suffit de cliquer sur le lien de mise à jour
|
||||
|
@ -138,7 +140,7 @@ s’actualise au fur et à mesure de la récupération des articles.
|
|||
|
||||
![Barre de progression](../img/users/refresh.5.png)
|
||||
|
||||
### Mise à jour partielle
|
||||
#### Mise à jour partielle
|
||||
|
||||
Cette mise à jour se fait pour le flux sélectionné uniquement. Pour initier
|
||||
cette mise à jour, il suffit de cliquer sur le lien de mise à jour
|
||||
|
@ -146,36 +148,36 @@ disponible dans le menu du flux.
|
|||
|
||||
![Menu du flux](../img/users/refresh.2.png)
|
||||
|
||||
# Filtrer les articles
|
||||
## Filtrer les articles
|
||||
|
||||
Avec le nombre croissant d’articles stockés par FreshRSS, il devient
|
||||
important d’avoir des filtres efficaces pour n’afficher qu’une partie des
|
||||
articles. Il existe plusieurs méthodes qui filtrent selon des critères
|
||||
différents. Ces méthodes peuvent être combinées dans la plus part des cas.
|
||||
|
||||
## Par catégorie
|
||||
### Par catégorie
|
||||
|
||||
C’est la méthode la plus simple. Il suffit de cliquer sur le titre d’une
|
||||
catégorie dans le panneau latéral. Il existe deux catégories spéciales qui
|
||||
sont placées en haut dudit panneau :
|
||||
|
||||
* *Flux principal* qui affiche uniquement les articles des flux marqués
|
||||
comme visible dans cette catégorie
|
||||
* *Favoris* qui affiche uniquement les articles, tous flux confondus,
|
||||
marqués comme favoris
|
||||
* *Flux principal* qui affiche uniquement les articles des flux marqués
|
||||
comme visible dans cette catégorie
|
||||
* *Favoris* qui affiche uniquement les articles, tous flux confondus,
|
||||
marqués comme favoris
|
||||
|
||||
## Par flux
|
||||
### Par flux
|
||||
|
||||
Il existe plusieurs méthodes pour filtrer les articles par flux :
|
||||
|
||||
* en cliquant sur le titre du flux dans le panneau latéral
|
||||
* en cliquant sur le titre du flux dans le détail de l’article
|
||||
* en filtrant dans les options du flux dans le panneau latéral
|
||||
* en filtrant dans la configuration du flux
|
||||
* en cliquant sur le titre du flux dans le panneau latéral
|
||||
* en cliquant sur le titre du flux dans le détail de l’article
|
||||
* en filtrant dans les options du flux dans le panneau latéral
|
||||
* en filtrant dans la configuration du flux
|
||||
|
||||
![Filtrer par flux](../img/users/feed.filter.1.png)
|
||||
|
||||
## Par statut
|
||||
### Par statut
|
||||
|
||||
Chaque article possède deux attributs qui peuvent être combinés. Le premier
|
||||
attribut indique si l’article a été lu ou non. Le second attribut indique si
|
||||
|
@ -197,12 +199,12 @@ as no filter selected.
|
|||
|
||||
By default, this filter displays only unread articles
|
||||
|
||||
## By content
|
||||
### By content
|
||||
|
||||
It is possible to filter articles by their content by inputting a string in
|
||||
the search field.
|
||||
|
||||
## Grâce au champ de recherche
|
||||
### Grâce au champ de recherche
|
||||
|
||||
Il est possible d’utiliser le champ de recherche pour raffiner les résultats
|
||||
:
|
||||
|
@ -261,5 +263,5 @@ Il est également possible de combiner les mots-clefs pour faire un filtrage
|
|||
encore plus précis, et il est autorisé d’avoir plusieurs instances de :
|
||||
`f:`, `author:`, `intitle:`, `inurl:`, `#`, et texte libre.
|
||||
|
||||
Combiner plusieurs critères implique un *et* logique, mais le mot clef ` OR`
|
||||
Combiner plusieurs critères implique un *et* logique, mais le mot clef `OR`
|
||||
peut être utiliser pour combiner plusieurs critères avec un *ou* logique : `author:Dupont OR author:Dupond`
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# Ajouter un flux
|
||||
|
||||
1. Pour ajouter un flux, copiez le lien vers le fichier RSS ou Atom qui vous intéresse (par exemple, le lien RSS du Framablog est `https://framablog.org/feed/`).
|
||||
2. Sur l’interface de FreshRSS, cliquez sur « Gestion des abonnements ».
|
||||
3. Collez l’URL du flux dans le champ « Ajouter un flux RSS » juste en dessous du titre.
|
||||
4. (facultatif) : Vous pouvez descendre jusqu’à « Catégorie » et sélectionner la catégorie dans laquelle vous souhaitez enregistrer votre flux. Par défaut, le nouveau flux sera dans « Sans catégorie ».
|
||||
1. Pour ajouter un flux, copiez le lien vers le fichier RSS ou Atom qui vous intéresse (par exemple, le lien RSS du Framablog est `https://framablog.org/feed/`).
|
||||
2. Sur l’interface de FreshRSS, cliquez sur « Gestion des abonnements ».
|
||||
3. Collez l’URL du flux dans le champ « Ajouter un flux RSS » juste en dessous du titre.
|
||||
4. (facultatif) : Vous pouvez descendre jusqu’à « Catégorie » et sélectionner la catégorie dans laquelle vous souhaitez enregistrer votre flux. Par défaut, le nouveau flux sera dans « Sans catégorie ».
|
||||
|
||||
## Import et export
|
||||
|
||||
|
@ -11,20 +11,20 @@ Voir [export/import SQLite]( https://github.com/FreshRSS/FreshRSS/tree/edge/cli)
|
|||
|
||||
## Exportation
|
||||
|
||||
1. Pour exporter votre liste d’abonnements, allez dans « Gestion des abonnements ».
|
||||
2. Cliquez ensuite sur « Importer / exporter » dans le menu de gauche.
|
||||
3. Vous pouvez mettre dans votre export :
|
||||
1. la liste des flux
|
||||
2. les articles que vous avez étiquetés
|
||||
3. les articles que vous avez mis en favoris
|
||||
4. et enfin, vous pouvez sélectionner les flux que vous voulez exporter (par défaut tous les flux sont sélectionnés)
|
||||
4. Cliquez sur « Exporter ».
|
||||
1. Pour exporter votre liste d’abonnements, allez dans « Gestion des abonnements ».
|
||||
2. Cliquez ensuite sur « Importer / exporter » dans le menu de gauche.
|
||||
3. Vous pouvez mettre dans votre export :
|
||||
1. la liste des flux
|
||||
2. les articles que vous avez étiquetés
|
||||
3. les articles que vous avez mis en favoris
|
||||
4. et enfin, vous pouvez sélectionner les flux que vous voulez exporter (par défaut tous les flux sont sélectionnés)
|
||||
4. Cliquez sur « Exporter ».
|
||||
|
||||
## Importation
|
||||
|
||||
1. Pour importer un fichier d’abonnement vers votre compte FreshRSS, allez dans l’espace « Importer / exporter » comme ci-dessus
|
||||
2. Cliquez sur « Parcourir » et sélectionnez votre fichier sur votre ordinateur.
|
||||
3. Validez en cliquant sur « Importer ».
|
||||
1. Pour importer un fichier d’abonnement vers votre compte FreshRSS, allez dans l’espace « Importer / exporter » comme ci-dessus
|
||||
2. Cliquez sur « Parcourir » et sélectionnez votre fichier sur votre ordinateur.
|
||||
3. Validez en cliquant sur « Importer ».
|
||||
|
||||
> **Important**: vous ne pouvez pas importer directement depuis un fichier texte.
|
||||
> Vous devez le convertir au format _OPML_ au préalable.
|
||||
|
@ -38,18 +38,18 @@ Voir [export/import SQLite]( https://github.com/FreshRSS/FreshRSS/tree/edge/cli)
|
|||
|
||||
Les « bookmarklets » sont de petits scripts que vous pouvez exécuter pour effectuer des tâches diverses et variées. FreshRSS offre un signet « bookmark » pour s’abonner aux fils de nouvelles.
|
||||
|
||||
1. Ouvrez « Gestion des abonnements ».
|
||||
2. Cliquez sur « Outils d’abonnement ».
|
||||
3. Glissez le bouton « S’abonner » dans la barre d’outils des signets ou
|
||||
cliquez droit et choisissez l’action « Lien vers les signets » de votre navigateur.
|
||||
1. Ouvrez « Gestion des abonnements ».
|
||||
2. Cliquez sur « Outils d’abonnement ».
|
||||
3. Glissez le bouton « S’abonner » dans la barre d’outils des signets ou
|
||||
cliquez droit et choisissez l’action « Lien vers les signets » de votre navigateur.
|
||||
|
||||
## Organisation des flux
|
||||
|
||||
Vous pouvez trier vos flux dans différentes catégories. Un flux ne peut être que dans une seule catégorie.
|
||||
|
||||
1. Ouvrez « Gestion des abonnements ».
|
||||
2. Vous pouvez ajouter une catégorie d’abonnements de cette manière :
|
||||
1. Tapez le nom de votre catégorie dans le champ « Nouvelle catégorie »
|
||||
2. Cliquez ensuite sur le bouton « Valider »
|
||||
3. Ensuite, vous pouvez glisser vos abonnements de catégorie en catégorie
|
||||
4. (facultatif) : Pour qu’un flux s’affiche dans la catégorie, et non pas dans l’onglet principal, dans son paramètre « Visibilité », choisissez « Afficher dans sa catégorie ».
|
||||
1. Ouvrez « Gestion des abonnements ».
|
||||
2. Vous pouvez ajouter une catégorie d’abonnements de cette manière :
|
||||
1. Tapez le nom de votre catégorie dans le champ « Nouvelle catégorie »
|
||||
2. Cliquez ensuite sur le bouton « Valider »
|
||||
3. Ensuite, vous pouvez glisser vos abonnements de catégorie en catégorie
|
||||
4. (facultatif) : Pour qu’un flux s’affiche dans la catégorie, et non pas dans l’onglet principal, dans son paramètre « Visibilité », choisissez « Afficher dans sa catégorie ».
|
||||
|
|
|
@ -23,14 +23,14 @@ pt-br, ru, tr, zh-cn.
|
|||
Les goûts et les couleurs, ça ne se discute pas. C'est pourquoi FreshRSS
|
||||
propose huit thèmes officiels :
|
||||
|
||||
* *Blue Lagoon* par **Mister aiR**
|
||||
* *Dark* par **AD**
|
||||
* *Flat design* par **Marien Fressinaud**
|
||||
* *Origine* par **Marien Fressinaud**
|
||||
* *Origine-compact* par **Kevin Papst**
|
||||
* *Pafat* par **Plopoyop**
|
||||
* *Screwdriver* par **Mister aiR**
|
||||
* *Swage* par **Patrick Crandol**
|
||||
* *Blue Lagoon* par **Mister aiR**
|
||||
* *Dark* par **AD**
|
||||
* *Flat design* par **Marien Fressinaud**
|
||||
* *Origine* par **Marien Fressinaud**
|
||||
* *Origine-compact* par **Kevin Papst**
|
||||
* *Pafat* par **Plopoyop**
|
||||
* *Screwdriver* par **Mister aiR**
|
||||
* *Swage* par **Patrick Crandol**
|
||||
|
||||
Si aucun de ceux proposés ne convient, il est toujours possible de [créer
|
||||
son propre thème](../developers/04_Frontend/02_Design.md).
|
||||
|
@ -46,10 +46,10 @@ maximiser l'espace disponible sur l'écran. Pour satisfaire le maximum de
|
|||
personne, il est possible de choisir la largeur du contenu affiché. Il y a
|
||||
quatre réglages disponibles :
|
||||
|
||||
* **Fine** qui affiche le contenu jusqu'à 550 pixels
|
||||
* **Moyenne** qui affiche le contenu jusqu'à 800 pixels
|
||||
* **Large** qui affiche le contenu jusqu'à 1000 pixels
|
||||
* **Pas de limite** qui affiche le contenu sur 100% de la place disponible
|
||||
* **Fine** qui affiche le contenu jusqu'à 550 pixels
|
||||
* **Moyenne** qui affiche le contenu jusqu'à 800 pixels
|
||||
* **Large** qui affiche le contenu jusqu'à 1000 pixels
|
||||
* **Pas de limite** qui affiche le contenu sur 100% de la place disponible
|
||||
|
||||
## Icônes d'article
|
||||
|
||||
|
@ -88,11 +88,11 @@ you browse with gestures, you can disable them from the interface.
|
|||
|
||||
# Reading
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
# Archivage
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
# Partage
|
||||
|
||||
|
@ -109,17 +109,17 @@ configuration](../img/users/configuration.sharing.png)
|
|||
Pour ajouter un nouvel élément à la liste, veuillez suivre les étapes
|
||||
simples ci-dessous :
|
||||
|
||||
1. Select the desired sharing method in the drop-down list.
|
||||
1. Press the ```✚``` button to add it to the list.
|
||||
1. Configure the method in the list. All names can be modified in the
|
||||
display. Some methods need the sharing URL to be able to work properly
|
||||
(ex: Shaarli).
|
||||
1. Submit your changes.
|
||||
1. Select the desired sharing method in the drop-down list.
|
||||
1. Press the ```✚``` button to add it to the list.
|
||||
1. Configure the method in the list. All names can be modified in the
|
||||
display. Some methods need the sharing URL to be able to work properly
|
||||
(ex: Shaarli).
|
||||
1. Submit your changes.
|
||||
|
||||
To remove an item from the list, follow those simple steps:
|
||||
|
||||
1. Press the ```❌``` button next to the share method you want to remove.
|
||||
1. Submit your changes.
|
||||
1. Press the ```❌``` button next to the share method you want to remove.
|
||||
1. Submit your changes.
|
||||
|
||||
# Raccourcis
|
||||
|
||||
|
@ -132,13 +132,13 @@ configuration to fit your needs.
|
|||
|
||||
There are 4 types of shortcuts:
|
||||
|
||||
1. Views: they allow switching views with ease.
|
||||
1. Navigation: they allow navigation through articles, feeds, and
|
||||
categories.
|
||||
1. Article actions: they allow interactions with an article, like sharing
|
||||
or opening it on the original web-site.
|
||||
1. Other actions: they allow other interactions with the application, like
|
||||
opening the user queries menu or accessing the documentation.
|
||||
1. Views: they allow switching views with ease.
|
||||
1. Navigation: they allow navigation through articles, feeds, and
|
||||
categories.
|
||||
1. Article actions: they allow interactions with an article, like sharing
|
||||
or opening it on the original web-site.
|
||||
1. Other actions: they allow other interactions with the application, like
|
||||
opening the user queries menu or accessing the documentation.
|
||||
|
||||
It's worth noting that the share article action has two levels. Once you
|
||||
press the shortcut, a menu containing all the share options opens. To
|
||||
|
@ -161,21 +161,21 @@ At the moment, there is no helper to build a user query from here.
|
|||
|
||||
# Users
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
## Authentication methods
|
||||
|
||||
### HTTP Authentication (Apache)
|
||||
|
||||
1. User control is based on the `.htaccess` file.
|
||||
2. It is best practice to place the `.htaccess` file in the `./i/`
|
||||
subdirectory so the API and other third party services can work.
|
||||
3. If you want to limit all access to registered users only, place the file
|
||||
in the FreshRSS directory itself or in a parent directory. Note that
|
||||
WebSub and API will not work!
|
||||
4. Example `.htaccess` file for a user "marie":
|
||||
1. User control is based on the `.htaccess` file.
|
||||
2. It is best practice to place the `.htaccess` file in the `./i/`
|
||||
subdirectory so the API and other third party services can work.
|
||||
3. If you want to limit all access to registered users only, place the file
|
||||
in the FreshRSS directory itself or in a parent directory. Note that
|
||||
WebSub and API will not work!
|
||||
4. Example `.htaccess` file for a user "marie":
|
||||
|
||||
```
|
||||
```apache
|
||||
AuthUserFile /home/marie/repertoire/.htpasswd
|
||||
AuthGroupFile /dev/null
|
||||
AuthName "Chez Marie"
|
||||
|
@ -190,15 +190,15 @@ d'Apache.](http://httpd.apache.org/docs/trunk/howto/auth.html#gettingitworking)
|
|||
|
||||
## Informations
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
## Archivage
|
||||
## Archivage des flux
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
## Identification
|
||||
|
||||
**À FAIRE**
|
||||
> **À FAIRE**
|
||||
|
||||
## Avancé
|
||||
|
||||
|
@ -223,9 +223,7 @@ commence par un id (qui est unique pour la page).
|
|||
|
||||
#### Exemple : Rue89
|
||||
|
||||
Pour trouver ce chemin, il faut se rendre à l'adresse d'un des articles
|
||||
tronqués (par exemple
|
||||
http://www.rue89.com/2013/10/15/prof-maths-jai-atteint-lextase-dihn-pedagogie-inversee-246635).
|
||||
Pour trouver ce chemin, il faut se rendre à l'adresse d'un des articles tronqués.
|
||||
Il faut alors chercher le "bloc" HTML correspondant au contenu de l'article
|
||||
(dans le code source !)
|
||||
|
||||
|
@ -233,10 +231,10 @@ On trouve ici que le bloc qui englobe uniquement le contenu de l'article est ```
|
|||
|
||||
#### Liste de correspondances site → chemin css
|
||||
|
||||
* Rue89 : ```#article .content```
|
||||
* PCINpact : ```#actu_content```
|
||||
* Lesnumériques : ```article#body div.text.clearfix```
|
||||
* Phoronix : ```#main .content```
|
||||
* Rue89 : ```#article .content```
|
||||
* PCINpact : ```#actu_content```
|
||||
* Lesnumériques : ```article#body div.text.clearfix```
|
||||
* Phoronix : ```#main .content```
|
||||
|
||||
### Récupérer un flux tronqué à l'aide d'outils externes
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Voir la page [sur notre API compatible Google Reader](06_Mobile_access.md)
|
||||
pour une autre possibilité et des généralités sur l’accès par API.
|
||||
|
||||
## Clients compatibles
|
||||
## Clients compatibles GReader
|
||||
|
||||
De nombreux clients RSS prennent en charge l'API Fever, mais ils semblent
|
||||
comprendre l'API Fever un peu différemment. Si votre client préféré ne
|
||||
|
@ -21,7 +21,7 @@ réinitialisez ensuite le mot de passe API de l'utilisateur.
|
|||
Connectez ensuite votre application mobile en utilisant l'adresse de l'API
|
||||
(e.g. `https://freshrss.example.net/api/fever.php`).
|
||||
|
||||
## Clients compatibles
|
||||
## Clients compatibles Fever
|
||||
|
||||
| App | Platform | License |
|
||||
|:----------------------------------------------------------------------------------:|:-------------------:|:--------------------------------------------------------:|
|
||||
|
@ -37,8 +37,7 @@ Les fonctionnalités suivantes sont implémentées :
|
|||
|
||||
* récupération des catégories
|
||||
* récupération des flux
|
||||
* récupération des entrées (new, favorites, unread, by_id, by_feed,
|
||||
by_category,since)
|
||||
* récupération des entrées (new, favorites, unread, by_id, by_feed, by_category,since)
|
||||
* récupération des favicons
|
||||
* marquage des entrées comme lues
|
||||
* marquage des entrées comme favoris
|
||||
|
@ -49,7 +48,7 @@ Les fonctionnalités suivantes sont implémentées :
|
|||
Les fonctionnalités suivantes ne sont pas implémentées :
|
||||
|
||||
* « Hot Links » car il n'y a encore rien dans FreshRSS qui soit similaire ou
|
||||
qui puisse être utilisé pour le simuler.
|
||||
qui puisse être utilisé pour le simuler.
|
||||
|
||||
## Tester et déboguer
|
||||
|
||||
|
@ -58,7 +57,7 @@ de la tester manuellement avec un outil tel que
|
|||
[Postman](https://www.getpostman.com/).
|
||||
|
||||
Envoyer une requête POST à l'adresse
|
||||
https://freshrss.example.net/api/fever.php?api devrait vous renvoyer le
|
||||
<https://freshrss.example.net/api/fever.php?api> devrait vous renvoyer le
|
||||
résultat suivant :
|
||||
```json
|
||||
{
|
||||
|
@ -101,15 +100,15 @@ supportées. Pour plus d'information, veuillez vous référer à la
|
|||
|
||||
Voici quelques exemples simples d'appels réalisables :
|
||||
|
||||
* https://freshrss.example.net/api/fever.php?api&items
|
||||
* https://freshrss.example.net/api/fever.php?api&feeds
|
||||
* https://freshrss.example.net/api/fever.php?api&groups
|
||||
* https://freshrss.example.net/api/fever.php?api&unread_item_ids
|
||||
* https://freshrss.example.net/api/fever.php?api&saved_item_ids
|
||||
* https://freshrss.example.net/api/fever.php?api&items&since_id=some_id
|
||||
* https://freshrss.example.net/api/fever.php?api&items&max_id=some_id
|
||||
* https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id
|
||||
* https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id
|
||||
* <https://freshrss.example.net/api/fever.php?api&items>
|
||||
* <https://freshrss.example.net/api/fever.php?api&feeds>
|
||||
* <https://freshrss.example.net/api/fever.php?api&groups>
|
||||
* <https://freshrss.example.net/api/fever.php?api&unread_item_ids>
|
||||
* <https://freshrss.example.net/api/fever.php?api&saved_item_ids>
|
||||
* <https://freshrss.example.net/api/fever.php?api&items&since_id=some_id>
|
||||
* <https://freshrss.example.net/api/fever.php?api&items&max_id=some_id>
|
||||
* <https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id>
|
||||
* <https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id>
|
||||
|
||||
Remplacez `some_id` par un identifiant réel de votre base de données
|
||||
`freshrss_username_entry`.
|
||||
|
|
|
@ -4,11 +4,12 @@ serveur](01_Installation.md).
|
|||
# Activer l’API dans FreshRSS
|
||||
|
||||
1. Dans la section “Authentification”, cocher l’option “Autoriser l’accès
|
||||
par API (nécessaire pour les applis mobiles)”.
|
||||
par API (nécessaire pour les applis mobiles)”.
|
||||
2. Dans la section “Profil”, remplir le champ “Mot de passe API (ex. : pour applis mobiles)”.
|
||||
* Chaque utilisateur doit choisir son mot de passe API.
|
||||
* La raison d’être d’un mot de passe API
|
||||
différent du mot de passe principal est que le mot de passe API est potentiellement utilisé de manière moins sûre, mais il permet aussi moins de choses.
|
||||
différent du mot de passe principal est que le mot de passe API est
|
||||
potentiellement utilisé de manière moins sûre, mais il permet aussi moins de choses.
|
||||
|
||||
Le reste de cette page concerne l’API compatible Google Reader. Voir la
|
||||
[page sur l’API compatible Fever](06_Fever_API.md) pour une autre
|
||||
|
@ -17,9 +18,9 @@ possibilité.
|
|||
|
||||
# Tester
|
||||
|
||||
3. Dans la section “Profil”, cliquer sur le lien de la forme
|
||||
`https://rss.example.net/api/` à côté du champ “Mot de passe API”.
|
||||
4. Cliquer sur le premier lien “Check full server configuration”:
|
||||
1. Dans la section “Profil”, cliquer sur le lien de la forme
|
||||
`https://rss.example.net/api/` à côté du champ “Mot de passe API”.
|
||||
2. Cliquer sur le premier lien “Check full server configuration”:
|
||||
* Si vous obtenez `PASS`, tout est bon : passer à l’étape 6.
|
||||
* Si vous obtenez *Bad Request!* ou *Not Found*, alors votre serveur ne semble pas accepter les slashs `/` qui sont encodés `%2F`. Passer à l’étape 5.
|
||||
* Si vous obtenez un autre message d’erreur, passer à l’étape 5.
|
||||
|
@ -27,7 +28,7 @@ possibilité.
|
|||
|
||||
# Déboguer la configuration du serveur
|
||||
|
||||
5. Cliquer sur le second lien “Check partial server configuration (without `%2F` support)”:
|
||||
* Cliquer sur le second lien “Check partial server configuration (without `%2F` support)”:
|
||||
* Si vous obtenez `PASS`, alors le problème est bien que votre serveur n’accepte pas les slashs `/` qui sont encodés `%2F`.
|
||||
* Avec Apache, vérifiez la directive [`AllowEncodedSlashes On`](http://httpd.apache.org/docs/trunk/mod/core.html#allowencodedslashes)
|
||||
* Ou utilisez un client qui n’encode pas les slashs (comme EasyRSS), auquel cas passer à l’étape 6.
|
||||
|
@ -48,10 +49,10 @@ possibilité.
|
|||
|
||||
# Clients compatibles
|
||||
|
||||
6. Sur la même page de l'API FreshRSS, notez l'adresse donnée sous "Votre adresse API", comme `https://freshrss.example.net/api/greader.php`
|
||||
1. Sur la même page de l'API FreshRSS, notez l'adresse donnée sous "Votre adresse API", comme `https://freshrss.example.net/api/greader.php`
|
||||
* Saisissez l'adresse de l'API dans le client sélectionné puis votre nom d'utilisateur et votre mot de passe spécialement créé pour l'API.
|
||||
|
||||
7. Vous pouvez maintenant tester sur une application mobile:
|
||||
2. Vous pouvez maintenant tester sur une application mobile:
|
||||
* Android
|
||||
* [News+](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus) avec [News+ Google Reader extension](https://github.com/noinnion/newsplus/blob/master/apk/GoogleReaderCloneExtension_101.apk) (Closed source)
|
||||
* [FeedMe 3.5.3+](https://play.google.com/store/apps/details?id=com.seazon.feedme) (Propriétaire)
|
||||
|
|
|
@ -8,18 +8,17 @@ Bien entendu, le ```/i``` n'est pas là pour faire joli ! Il s'agit d'une
|
|||
question de performances et de praticité :
|
||||
|
||||
* Cela permet de servir les icônes, images, styles, scripts sans
|
||||
cookie. Sans cela, ces fichiers seraient souvent re-téléchargés, en
|
||||
particulier lorsque le formulaire de connexion est utilisé. De plus, les
|
||||
requêtes vers ces ressources seraient plus lourdes.
|
||||
cookie. Sans cela, ces fichiers seraient souvent re-téléchargés, en
|
||||
particulier lorsque le formulaire de connexion est utilisé. De plus, les
|
||||
requêtes vers ces ressources seraient plus lourdes.
|
||||
* La racine publique ```./p/``` peut être servie sans restriction d'accès
|
||||
HTTP (qui peut avantageusement être mise en place dans ```./p/i/```).
|
||||
HTTP (qui peut avantageusement être mise en place dans ```./p/i/```).
|
||||
* Cela permet d'éviter des problèmes pour des fichiers qui doivent être
|
||||
publics pour bien fonctionner, comme ```favicon.ico```, ```robots.txt```,
|
||||
etc.
|
||||
publics pour bien fonctionner, comme ```favicon.ico```, ```robots.txt```, etc.
|
||||
* Cela permet aussi d'avoir un logo FreshRSS plutôt qu'une page blanche pour
|
||||
accueillir l'utilisateur par exemple dans le cas de la restriction d'accès
|
||||
HTTP ou lors de l'attente du chargement plus lourd du reste de
|
||||
l'interface.
|
||||
accueillir l'utilisateur par exemple dans le cas de la restriction d'accès
|
||||
HTTP ou lors de l'attente du chargement plus lourd du reste de
|
||||
l'interface.
|
||||
|
||||
## Pourquoi le ```robots.txt``` se trouve dans un sous-répertoire ?
|
||||
|
||||
|
@ -32,9 +31,9 @@ Comme expliqué dans les [conseils de
|
|||
sécurité](01_Installation.md#conseils-de-securite), il est recommandé de
|
||||
faire pointer un nom de domaine vers ce sous-répertoire afin que seule la
|
||||
partie publique ne soit accessible par un navigateur web. De cette manière
|
||||
https://demo.freshrss.org/ pointe vers le répertoire ```./p``` et le
|
||||
<https://demo.freshrss.org/> pointe vers le répertoire ```./p``` et le
|
||||
```robots.txt``` se trouve bien à la racine du site :
|
||||
https://demo.freshrss.org/robots.txt.
|
||||
<https://demo.freshrss.org/robots.txt>
|
||||
|
||||
L'explication est la même pour les fichiers ```favicon.ico``` et
|
||||
```.htaccess```.
|
||||
|
@ -48,17 +47,17 @@ dans un premier temps déterminer la cause du problème.Voici la liste des
|
|||
étapes à suivre pour la déterminer :
|
||||
|
||||
1. __Vérifier la validité du flux__ grâce à l'[outil en ligne du
|
||||
W3C](https://validator.w3.org/feed/ "Validateur en ligne de flux RSS et
|
||||
Atom"). Si ça ne fonctionne pas, nous ne pouvons rien faire.
|
||||
W3C](https://validator.w3.org/feed/ "Validateur en ligne de flux RSS et
|
||||
Atom"). Si ça ne fonctionne pas, nous ne pouvons rien faire.
|
||||
1. __Vérifier la reconnaissance par SimplePie__ grâce à l'[outil en ligne de
|
||||
SimplePie](https://simplepie.org/demo/ "Démo officielle de
|
||||
SimplePie"). Si ça ne fonctionne pas, nous ne pouvons rien faire.
|
||||
SimplePie](https://simplepie.org/demo/ "Démo officielle de
|
||||
SimplePie"). Si ça ne fonctionne pas, nous ne pouvons rien faire.
|
||||
1. __Vérifier l'intégration dans FreshRSS__ grâce à la
|
||||
[démo](https://demo.freshrss.org "Démo officielle de FreshRSS"). Si ça ne
|
||||
fonctionne pas, il faut [créer un ticket sur
|
||||
Github](https://github.com/FreshRSS/FreshRSS/issues/new "Créer un ticket
|
||||
pour FreshRSS") pour que l'on puisse regarder ce qui se passe. Si ça
|
||||
fonctionne, il y a probablement un problème avec l'hébergement.
|
||||
[démo](https://demo.freshrss.org "Démo officielle de FreshRSS"). Si ça ne
|
||||
fonctionne pas, il faut [créer un ticket sur
|
||||
Github](https://github.com/FreshRSS/FreshRSS/issues/new "Créer un ticket
|
||||
pour FreshRSS") pour que l'on puisse regarder ce qui se passe. Si ça
|
||||
fonctionne, il y a probablement un problème avec l'hébergement.
|
||||
|
||||
## Comment changer un mot de passe oublié ?
|
||||
|
||||
|
@ -77,7 +76,6 @@ ligne de commande. Pour cela, il suffit d'ouvrir son terminal et de saisir
|
|||
la commande suivante :
|
||||
```sh
|
||||
./cli/update_user.php --user <username> --password <password>
|
||||
|
||||
```
|
||||
Pour plus d'information à ce sujet, il existe la [documentation
|
||||
dédiée](../../cli/README.md).
|
||||
|
@ -107,8 +105,8 @@ permettre la consultation de la page de configuration « partage ».
|
|||
|
||||
Exemples avec _uBlock_ :
|
||||
|
||||
- Ajoutez votre instance FreshRSS à la liste blanche de en l'ajoutant dans
|
||||
_uBlock > Ouvrir le tableau de bord > Liste blanche_.
|
||||
- Autorisez votre instance FreshRSS à appeler la page de configuration
|
||||
`sharing` en ajoutant la règle `*sharing,domain=~votredomaine.com` dans
|
||||
_uBlock > Ouvrir le fichier tableau de bord > Mes filtres_
|
||||
* Ajoutez votre instance FreshRSS à la liste blanche de en l'ajoutant dans
|
||||
_uBlock > Ouvrir le tableau de bord > Liste blanche_.
|
||||
*-* Autorisez votre instance FreshRSS à appeler la page de configuration
|
||||
`sharing` en ajoutant la règle `*sharing,domain=~votredomaine.com` dans
|
||||
_uBlock > Ouvrir le fichier tableau de bord > Mes filtres_
|
||||
|
|
|
@ -5,7 +5,7 @@ En effet, le fonctionnement de base de ces deux derniers implique de vérifier
|
|||
Cela même si le site concerné n’a rien publié depuis la dernière synchronisation.
|
||||
Le [protocole WebSub](https://www.w3.org/TR/websub/) permet d’éviter des synchronisations inutiles en notifiant en temps réel l’agrégateur de la présence de nouveaux articles.
|
||||
|
||||
# Fonctionnement de WebSub
|
||||
## Fonctionnement de WebSub
|
||||
|
||||
On va retrouver trois notions dans WebSub : les éditeurs (les sites qui publient du contenu), les abonnés (les agrégateurs de flux RSS) et les hubs.
|
||||
|
||||
|
@ -15,10 +15,8 @@ Ainsi, lorsqu’un éditeur va publier du contenu, il va notifier le hub qui va
|
|||
|
||||
Pour pouvoir être notifié, les abonnés doivent fournir une adresse accessible publiquement sur Internet.
|
||||
|
||||
# WebSub et FreshRSS
|
||||
## WebSub et FreshRSS
|
||||
|
||||
Depuis la version 1.1.2-beta, FreshRSS supporte officiellement WebSub.
|
||||
Vous pouvez donc recevoir en temps réel les articles des sites qui affichent dans leur flux RSS un « hub »,
|
||||
tels [Mastodon](https://joinmastodon.org), [Friendica](https://friendi.ca), WordPress (WordPress.com ou avec [une extension](https://wordpress.org/plugins/pubsubhubbub/)), Blogger, FeedBurner, Slashdot, etc.
|
||||
|
||||
Vous pouvez tester avec http://push-pub.appspot.com.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Welcome to the FreshRSS documentation!
|
||||
# Welcome to the FreshRSS documentation
|
||||
|
||||
This documentation is still under construction. If you want to contribute, you can [find us on GitHub](https://github.com/FreshRSS/FreshRSS).
|
||||
If you want to contribute, you can [find us on GitHub](https://github.com/FreshRSS/FreshRSS).
|
||||
|
||||
- [English documentation](./en/index.md)
|
||||
- [Documentation française](./fr/index.md)
|
||||
|
|
|
@ -3,7 +3,6 @@ Blue Lagoon
|
|||
|
||||
**C'est un cocktail (bis)! C'est la version plus "fresh" de [Screwdriver](https://github.com/misterair/Screwdriver). C'est... c'est... un thème pour l'agrégateur de flux RSS [FreshRSS](https://github.com/FreshRSS/FreshRSS/)**
|
||||
|
||||
|
||||
En toute modestie, ce thème tue du Nyan Cat.
|
||||
|
||||
![screenshot](https://raw.githubusercontent.com/misterair/BlueLagoon/master/screenshot.png)
|
||||
|
@ -11,14 +10,13 @@ En toute modestie, ce thème tue du Nyan Cat.
|
|||
|
||||
Installation
|
||||
-----------------
|
||||
|
||||
1. Placez le dossier du thème dans ledossier /FreshRSS/p/themes/Screwdriver de votre FreshRSS;
|
||||
2. Allez dans les paramètres d'Affichage et changez de thème;
|
||||
3. Profitez de votre Blue Laggon sans modération!
|
||||
4. Remontez les problèmes sur Github (*facultatif mais fortement apprécié*)
|
||||
|
||||
|
||||
|
||||
Blue Lagoon est distribué sous license AlcoholWare:
|
||||
Blue Lagoon est distribué sous license AlcoholWare
|
||||
-----------------
|
||||
|
||||
« LICENCE ALCOHOLWARE » (Révision 42):
|
||||
|
@ -29,10 +27,4 @@ vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
|
|||
|
||||
que vous pensez que ce truc vaut le coup, vous pouvez me payer un verre (rempli) en retour.
|
||||
|
||||
*Mister aiR*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*Mister aiR*.
|
||||
|
|
|
@ -1,36 +1,30 @@
|
|||
Screwdriver
|
||||
Screwdriver
|
||||
=======
|
||||
|
||||
**C'est un cocktail! C'est chaud mais "fresh" à la fois. C'est... c'est... un thème pour l'agrégateur de flux RSS<a href="https://github.com/FreshRSS/FreshRSS/" target="blank">FreshRSS</a>!!**
|
||||
**C'est un cocktail! C'est chaud mais "fresh" à la fois. C'est... c'est... un thème pour l'agrégateur de flux RSS [FreshRSS](https://github.com/FreshRSS/FreshRSS/)!!**
|
||||
|
||||
En toute modestie, ce thème tue du chaton.
|
||||
|
||||
![screenshot](https://github.com/misterair/Screwdriver/blob/master/screenshot.png)
|
||||
![screenshot](https://raw.githubusercontent.com/misterair/Screwdriver/master/screenshot.png)
|
||||
|
||||
|
||||
Installation
|
||||
-----------------
|
||||
------------
|
||||
|
||||
1. Placez le dossier du thème dans ledossier /FreshRSS/p/themes/Screwdriver de votre FreshRSS;
|
||||
2. Allez dans les paramètres d'Affichage et changez de thème;
|
||||
3. Profitez de votre Screwdriver!
|
||||
4. Remontez les problèmes sur Github (facultatif mais fortement apprécié)
|
||||
|
||||
|
||||
|
||||
Screwdriver est distribué sous license BeerWare:
|
||||
Screwdriver est distribué sous license BeerWare
|
||||
-----------------
|
||||
|
||||
« LICENCE BEERWARE » (Révision 42):
|
||||
|
||||
mister.air@gmail.com a créé ce fichier. Tant que vous conservez cet avertissement,
|
||||
<mister.air@gmail.com> a créé ce fichier. Tant que vous conservez cet avertissement,
|
||||
|
||||
vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
|
||||
|
||||
que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en retour.
|
||||
|
||||
*Mister aiR*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*Mister aiR*.
|
||||
|
|
|
@ -21,11 +21,13 @@
|
|||
"scripts": {
|
||||
"eslint": "eslint --ext .js .",
|
||||
"eslint_fix": "eslint --fix --ext .js .",
|
||||
"markdownlint": "markdownlint '**/*.md'",
|
||||
"markdownlint_fix": "markdownlint --fix '**/*.md'",
|
||||
"rtlcss": "rtlcss -d p/themes && find . -type f -name '*.rtl.rtl.css' -delete",
|
||||
"stylelint": "stylelint '**/*.css' && stylelint --syntax scss '**/*.scss'",
|
||||
"stylelint_fix": "stylelint --fix '**/*.css' && stylelint --fix --syntax scss '**/*.scss'",
|
||||
"test": "npm run eslint && npm run stylelint",
|
||||
"fix": "npm run rtlcss && npm run stylelint_fix && npm run eslint_fix"
|
||||
"test": "npm run eslint && npm run stylelint && npm run markdownlint",
|
||||
"fix": "npm run rtlcss && npm run stylelint_fix && npm run eslint_fix && npm run markdownlint_fix"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.32.0",
|
||||
|
@ -33,6 +35,7 @@
|
|||
"eslint-plugin-import": "^2.24.2",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^5.1.0",
|
||||
"markdownlint-cli": "^0.29.0",
|
||||
"rtlcss": "^3.4.0",
|
||||
"stylelint": "^13.13.1",
|
||||
"stylelint-config-recommended-scss": "^4.3.0",
|
||||
|
|
Loading…
Reference in New Issue