aboutsummaryrefslogtreecommitdiff
path: root/docs/en
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2017-12-17 20:28:04 +0100
committerGravatar GitHub <noreply@github.com> 2017-12-17 20:28:04 +0100
commit60f56539c3f30fd3f7ba4f2a3570f7029ac93e5f (patch)
tree1e78bfac7042dceb63898e2215db8fb0c1d7745d /docs/en
parentceda55c75b158fc1cf4813fe0f258527754b9289 (diff)
parent0b1516af91792f86868689392f72ad4b6e32cdcf (diff)
Merge pull request #1720 from FreshRSS/dev
FreshRSS 1.9.0
Diffstat (limited to 'docs/en')
-rw-r--r--docs/en/admins/01_Index.md8
-rw-r--r--docs/en/admins/02_Installation.md (renamed from docs/en/users/01_Installation.md)141
-rw-r--r--docs/en/admins/03_Updating.md90
-rw-r--r--docs/en/contributing.md7
-rw-r--r--docs/en/developers/01_First_steps.md4
-rw-r--r--docs/en/developers/03_Backend/05_Extensions.md94
-rw-r--r--docs/en/index.md8
-rw-r--r--docs/en/users/02_First_steps.md4
-rw-r--r--docs/en/users/05_Configuration.md16
-rw-r--r--docs/en/users/06_Mobile_access.md52
10 files changed, 324 insertions, 100 deletions
diff --git a/docs/en/admins/01_Index.md b/docs/en/admins/01_Index.md
new file mode 100644
index 000000000..446780060
--- /dev/null
+++ b/docs/en/admins/01_Index.md
@@ -0,0 +1,8 @@
+# FreshRSS administration
+
+Learn how to install, update and backup FreshRSS and how to use the command line tools.
+
+* [Install FreshRSS](02_Installation.md) on your server
+* [Update your installation](03_Updating.md) to the latest stable or dev version
+* [The command line interface](https://github.com/FreshRSS/FreshRSS/tree/master/cli) can be used to administrate feeds and users
+* [Automatic feed updates](https://github.com/FreshRSS/FreshRSS#automatic-feed-update) using cron is the preferred way to get the latest feeds entries
diff --git a/docs/en/users/01_Installation.md b/docs/en/admins/02_Installation.md
index b2a717629..ef6531bd0 100644
--- a/docs/en/users/01_Installation.md
+++ b/docs/en/admins/02_Installation.md
@@ -1,6 +1,6 @@
# Server requirements
-FreshRSS is a web application. This means you'll need a web server to run it. FreshRSS requirements are really low, so it could run on most shared host servers.
+FreshRSS is a web application. This means you’ll need a web server to run it. FreshRSS requirements are really low, so it could run on most shared host servers.
You need to verify that your server can run FreshRSS before installing it. If your server has the proper requirements and FreshRSS does not work, please contact us to find a solution.
@@ -10,7 +10,7 @@ You need to verify that your server can run FreshRSS before installing it. If yo
| PHP | **PHP 5.5+** | PHP 5.3.8+ |
| PHP modules | Required: libxml, cURL, PDO_MySQL, PCRE and ctype. \\ Required (32-bit only): GMP \\Recommanded: JSON, Zlib, mbstring, iconv, ZipArchive | |
| Database | **MySQL 5.0.3+** | SQLite 3.7.4+ |
-| Browser | **Firefox** | Chrome, Opera, Safari or IE9+ |
+| Browser | **Firefox** | Chrome, Opera, Safari, or IE11+ |
## Important notice
@@ -35,86 +35,113 @@ As its name suggests, it is the working release for developers. **This release i
# Apache installation
-This is an example Apache virtual hosts configuration file. It covers http and https configuration.
+This is an example Apache virtual hosts configuration file. It covers HTTP and HTTPS configuration.
```
<VirtualHost *:80>
- ServerName example.com
- DocumentRoot /path/to/FreshRSS
+ DocumentRoot /var/www/html/
- ErrorLog ${APACHE_LOG_DIR}/freshrss_error.log
- CustomLog ${APACHE_LOG_DIR}/freshrss_access.log combined
+ #Default site...
- RewriteEngine on
- RewriteCond %{SERVER_NAME} = example.com
- RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
+ ErrorLog ${APACHE_LOG_DIR}/error.default.log
+ CustomLog ${APACHE_LOG_DIR}/access.default.log vhost_combined
</VirtualHost>
-<IfModule mod_ssl.c>
-<VirtualHost *:443>
- ServerName example.com
- DocumentRoot /path/to/FreshRSS
+<VirtualHost *:80>
+ ServerName rss.example.net
+ DocumentRoot /path/to/FreshRSS/p/
- ErrorLog ${APACHE_LOG_DIR}/freshrss_error.log
- CustomLog ${APACHE_LOG_DIR}/freshrss_access.log combined
+ <Directory /path/to/FreshRSS/p>
+ AllowOverride AuthConfig FileInfo Indexes Limit
+ Require all granted
+ </Directory>
- SSLCertificateFile /path/to/server.crt
- SSLCertificateKeyFile /path/to/server.key
+ ErrorLog ${APACHE_LOG_DIR}/freshrss_error.log
+ CustomLog ${APACHE_LOG_DIR}/freshrss_access.log combined
- # Optional letsencrypt config (uncomment) line below
- #Include /etc/letsencrypt/options-ssl-apache.conf
+ AllowEncodedSlashes On
</VirtualHost>
+
+<IfModule mod_ssl.c>
+ <VirtualHost *:443>
+ ServerName rss.example.net
+ DocumentRoot /path/to/FreshRSS/p/
+
+ <Directory /path/to/FreshRSS/p>
+ AllowOverride AuthConfig FileInfo Indexes Limit
+ Require all granted
+ </Directory>
+
+ ErrorLog ${APACHE_LOG_DIR}/freshrss_error.log
+ CustomLog ${APACHE_LOG_DIR}/freshrss_access.log combined
+
+ <IfModule mod_http2.c>
+ Protocols h2 http/1.1
+ </IfModule>
+
+ # For the API
+ AllowEncodedSlashes On
+
+ SSLEngine on
+ SSLCompression off
+ SSLCertificateFile /path/to/server.crt
+ SSLCertificateKeyFile /path/to/server.key
+ # Additional SSL configuration, e.g. with LetsEncrypt
+ </VirtualHost>
</IfModule>
```
# Nginx installation
-This is an example nginx configuration file. It covers http, https and php-fpm configuration.
+This is an example nginx configuration file. It covers HTTP, HTTP, and php-fpm configuration.
_You can find simpler config file but they may be incompatible with FreshRSS API._
```
server {
- listen 80; # http on port 80
- listen 443 ssl; # https on port 443
-
- # https configuration
- ssl on;
- ssl_certificate /etc/nginx/server.crt;
- ssl_certificate_key /etc/nginx/server.key;
-
- # your server's url(s)
- server_name example.com rss.example.com;
-
- # the folder p of your FreshRSS installation
- root /srv/FreshRSS/p/;
-
- index index.php index.html index.htm;
-
- # nginx log files
- access_log /var/log/nginx/rss.access.log;
- error_log /var/log/nginx/rss.error.log;
-
- # php files handling
- # this regex is mandatory because of the API
- location ~ ^.+?\.php(/.*)?$ {
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- fastcgi_split_path_info ^(.+\.php)(/.*)$;
- # By default, the variable PATH_INFO is not set under PHP-FPM
- # But FreshRSS API greader.php need it. If you have a "Bad Request" error, double check this var !
- fastcgi_param PATH_INFO $fastcgi_path_info;
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- }
-
- location / {
- try_files $uri $uri/ index.php;
- }
+ listen 80;
+ listen 443 ssl;
+
+ # HTTPS configuration
+ ssl on;
+ ssl_certificate /etc/nginx/server.crt;
+ ssl_certificate_key /etc/nginx/server.key;
+
+ # your server’s URL(s)
+ server_name rss.example.net;
+
+ # the folder p of your FreshRSS installation
+ root /srv/FreshRSS/p/;
+
+ index index.php index.html index.htm;
+
+ # nginx log files
+ access_log /var/log/nginx/rss.access.log;
+ error_log /var/log/nginx/rss.error.log;
+
+ # php files handling
+ # this regex is mandatory because of the API
+ location ~ ^.+?\.php(/.*)?$ {
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
+ fastcgi_split_path_info ^(.+\.php)(/.*)$;
+ # By default, the variable PATH_INFO is not set under PHP-FPM
+ # But FreshRSS API greader.php need it. If you have a “Bad Request” error, double check this var!
+ fastcgi_param PATH_INFO $fastcgi_path_info;
+ include fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ }
+
+ location / {
+ try_files $uri $uri/ index.php;
+ }
}
```
-A step-by-step tutorial is available [in french](http://www.pihomeserver.fr/2013/05/08/raspberry-pi-home-server-installer-un-agregateur-de-flux-rss-pour-remplacer-google-reader/).
+A step-by-step tutorial is available [in French](http://www.pihomeserver.fr/2013/05/08/raspberry-pi-home-server-installer-un-agregateur-de-flux-rss-pour-remplacer-google-reader/).
# Security
+Make sure to expose only the `./p/` folder on the web, the other directories contain personal and sensitive data.
+See the Apache and nginx config examples above.
+
**TODO**
diff --git a/docs/en/admins/03_Updating.md b/docs/en/admins/03_Updating.md
new file mode 100644
index 000000000..4e1fdfa5d
--- /dev/null
+++ b/docs/en/admins/03_Updating.md
@@ -0,0 +1,90 @@
+
+First things first: we recommend to create a backup before updating:
+
+```sh
+# Perform all commands below in your FreshRSS directory:
+cd /usr/share/FreshRSS
+
+tar -czvf FreshRSS-backup.tgz .
+```
+
+The update process depends on your installation type, see below:
+
+
+## Using the web admin panel
+
+Change to your installation at http://localhost/FreshRSS/p/i/?c=update and hit the "Check for new updates" button.
+
+If there is a new version you will be prompted again.
+
+
+## Using git
+
+If you manage FreshRSS via command line, then installing and updating FreshRSS can be done via git:
+
+```sh
+# If your local user does not have write access, prefix all commands by sudo:
+sudo ...
+
+# Perform all commands below in your FreshRSS directory:
+cd /usr/share/FreshRSS
+
+# Use the development version of FreshRSS
+git checkout -b dev origin/dev
+
+# Check out a specific version of FreshRSS
+# See release names on https://github.com/FreshRSS/FreshRSS/releases
+# You will then need to manually change version
+# or checkout master or dev branch to get new versions
+git checkout 1.7.0
+
+# Verify what branch is used
+git branch
+
+# Check whether there is a new version of FreshRSS,
+# assuming you are on the /master or /dev branch
+git fetch --all
+git status
+
+# Discard manual changes (do a backup before)
+git reset --hard
+# Then re-delete the file forcing the setup wizard
+rm data/do-install.txt
+
+# Delete manual additions (do a backup before)
+git clean -f -d
+
+# Update to a newer version of FreshRSS,
+# assuming you are on the /master or /dev branch
+git pull
+
+# Set the rights so that your Web server can access the files
+# (Example for Debian / Ubuntu)
+chown -R :www-data . && chmod -R g+r . && chmod -R g+w ./data/
+```
+
+
+## Using the zip archive
+
+Perform all commands in your FreshRSS directory:
+```sh
+cd /usr/share/FreshRSS
+```
+
+Commands intended to be executed in order (you can c/p the whole block if desired):
+
+```sh
+wget https://github.com/FreshRSS/FreshRSS/archive/master.zip
+unzip master.zip
+cp -R FreshRSS-master/* .
+chown -R :www-data . && chmod -R g+r . && chmod -R g+w ./data/
+rm -f master.zip
+rm -f data/do-install.txt
+rm -rf FreshRSS-master/
+```
+
+Short explanation of the commands above:
+* Download the latest version and unzip it
+* Overwrite all your existing files with the new ones
+* Fix possible permission issues
+* Cleanup by deleting the downloaded zip, the file forcing the setup wizard and the temporary directory
diff --git a/docs/en/contributing.md b/docs/en/contributing.md
index 7f0c3da6c..19f9cb9b1 100644
--- a/docs/en/contributing.md
+++ b/docs/en/contributing.md
@@ -32,9 +32,9 @@ Did you want to fix a bug? To keep a great coordination between collaborators, y
3. [Create a new branch](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/). The name of the branch must be explicit and being prefixed by the related ticket id. For instance, `783-contributing-file` to fix [ticket #783](https://github.com/FreshRSS/FreshRSS/issues/783).
4. Make your changes to your fork and [send a pull request](https://help.github.com/articles/using-pull-requests/) on the **dev branch**.
-If you have to write code, please follow [our coding style recommendations](http://doc2.freshrss.org/en/Developer_documentation/First_steps/Coding_style).
+If you have to write code, please follow [our coding style recommendations](developers/01_First_steps.md).
-**Tip:** if you are searching for bugs easy to fix, have a look at the « [New comers](https://github.com/FreshRSS/FreshRSS/labels/New%20comers) » ticket label.
+**Tip:** if you are searching for easy-to-fix bugs, have a look at the « [good first issue](https://github.com/FreshRSS/FreshRSS/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) » ticket label.
## Submit an idea
@@ -52,4 +52,5 @@ We are working on a better way to handle internationalization but don't hesitate
## Contribute to documentation
-The documentation needs a lot of improvements in order to be more useful to new contributors and we are working on it. If you want to give some help, meet us on [the dedicated repository](https://github.com/FreshRSS/documentation)!
+The documentation needs a lot of improvements in order to be more useful to new contributors and we are working on it.
+If you want to give some help, meet us in the main repositories [docs directory](https://github.com/FreshRSS/FreshRSS/tree/master/docs)!
diff --git a/docs/en/developers/01_First_steps.md b/docs/en/developers/01_First_steps.md
index e35dbda12..adca4495b 100644
--- a/docs/en/developers/01_First_steps.md
+++ b/docs/en/developers/01_First_steps.md
@@ -6,6 +6,10 @@
**TODO**
+# Extensions
+
+If you want to create your own FreshRSS extension, take a look at the [extension documentation](03_Backend/05_Extensions.md).
+
# Coding style
If you want to contribute to the source code, it is important to follow the project coding style. The actual code does not follow it throughout the project, but every time we have an opportunity, we should fix it.
diff --git a/docs/en/developers/03_Backend/05_Extensions.md b/docs/en/developers/03_Backend/05_Extensions.md
index b0b5793df..fb85234c4 100644
--- a/docs/en/developers/03_Backend/05_Extensions.md
+++ b/docs/en/developers/03_Backend/05_Extensions.md
@@ -6,21 +6,41 @@ FreshRSS is an RSS / Atom feeds aggregator written in PHP since October 2012. Th
## Problem to solve
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+FreshRSS is limited in its technical possibilities by various factors:
+
+* The number of developers
+* The will to integrate certain changes
+* The level of "hacking" required to integrate marginal features
+
+While the first limitation can, in theory, be lifted by the participation of new contributors to the project, it depends on the willingness of contributors to take an interest in the source code of the entire project. In order to remove the other two limitations, most of the time it will be necessary to create a "fork".
+
+Another solution consists of an extension system. By allowing users to write their own extension without taking an interest in the core of the basic software, we allow for:
+
+1. Reducing the amount of source code a new contributor has to take in
+2. Unofficial integration of novelties
+3. No necessity of forking or main developer approvement.
+
+Note: it is quite conceivable that the functionalities of an extension can later be officially integrated into the FreshRSS code. Extensions make it easy to propose a proof of concept.
## Understanding basic mechanics (Minz and MVC)
**TODO** : move to 02_Minz.md
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+This data sheet should refer to the official FreshRSS and Minz documentation (the PHP framework on which FreshRSS is based). Unfortunately, this documentation does not yet exist. In a few words, here are the main things you should know. It is not necessary to read all the chapters in this section if you don't need to use a feature in your extension (if you don't need to translate your extension, no need to know more about the `Minz_Translate` module for example).
### MVC Architecture
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+Minz relies on and imposes an MVC architecture for projects using it. This architecture consists of three main components:
+
+* The model: this is the base object that we will manipulate. In FreshRSS, categories, flows and articles are templates. The part of the code that makes it possible to manipulate them in a database is also part of the model but is separated from the base model: we speak of DAO (for "Data Access Object"). The templates are stored in a `Models` folder.
+* The view: this is what the user sees. The view is therefore simply HTML code mixed with PHP to display dynamic information. The views are stored in an `views` folder.
+* The controller: this is what makes it possible to link models and views. Typically, a controller will load templates from the database (like a list of items) to "pass" them to a view for display. Controllers are stored in a `Controllers` directory.
### Routing
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+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.
Code example:
@@ -40,13 +60,17 @@ class FreshRSS_hello_Controller extends Minz_ActionController {
?>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+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.
+
+Later, the `hello/world` convention will be used to refer to a controller/action pair.
### Views
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+Each view is associated with a controller and an action. The view associated with `hello/world` will be stored in a very specific file: `views/hello/world. phtml`. This convention is imposed by Minz.
-Code example:
+As explained above, the views consist of HTML mixed with PHP. Code example:
```html
<p>
@@ -54,12 +78,11 @@ Code example:
</p>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+The variable `$this->a_variable` is passed by the controller (see previous example). The difference is that in the controller it is necessary to pass `$this->view`, while in the view `$this` suffices.
### Working with GET / POST
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
-
+It is often necessary to take advantage of parameters passed by GET or POST. In Minz, these parameters are accessible using the `Minz_Request` class.
Code example:
```php
@@ -82,15 +105,17 @@ echo Minz_Request::param('bar');
?>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+The `Minz_Request::isPost()` method can be used to execute a piece of code only if it is a POST request.
+
+Note: it is preferable to use `Minz_Request` only in controllers. It is likely that you will encounter this method in FreshRSS views, or even in templates, but be aware that this is **not** good practice.
### Access session settings
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+The access to session parameters is strangely similar to the GET / POST parameters but passes through the `Minz_Session` class this time! There is no example here because you can repeat the previous example by changing all `Minz_Request` to `Minz_Session`.
### Working with URLs
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+To take full advantage of the Minz routing system, it is strongly discouraged to write hard URLs in your code. For example, the following view should be avoided:
```html
<p>
@@ -98,7 +123,9 @@ echo Minz_Request::param('bar');
</p>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+Should it be decided one day 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:
```php
<?php
@@ -117,7 +144,7 @@ echo Minz_Url::display($url_array);
?>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+Since this can become a bit tedious to use in the long run, especially in views, it is preferable to use the `_url()' shortcut:
```php
<?php
@@ -128,11 +155,11 @@ echo _url('hello', 'world', 'foo', 'bar');
?>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+Note: as a general rule, the shortened form (`_url()`) should be used in views, while the long form (`Minz_Url::display()`) should be used in controllers.
### Redirections
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+It is often necessary to redirect a user to another page. To do so, the `Minz_Request` class offers another useful method: `forward()`. This method takes the same URL format as the one seen just before as its argument.
Code example:
@@ -156,7 +183,7 @@ Minz_Request::forward($url_array, true);
?>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+It is very common to want display a message to the user while performing a redirect, to tell the user how the action was carried out (validation of a form for example). Such a message is passed through a `notification` session variable (note: we will talk about feedback from now on to avoid confusion with a notification that can occur at any time). To facilitate this kind of very frequent action, there are two shortcuts that both perform a 302 redirect by assigning a feedback message:
```php
<?php
@@ -179,7 +206,21 @@ Minz_Request::bad($feedback_bad, $url_array);
### Translation Management
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+It is common (and that's an understatement) to want to show some text to the user. In the previous example, for example, we display feedback to the user based on the result of form validation. The problem is that FreshRSS has users of different nationalities. It is therefore necessary to be able to manage different languages in order not to remain confined to English or French.
+
+The solution is to use the `Minz_Translate` class, which allows dynamic translation of FreshRSS (or any Minz-based application). Before using this module, it is necessary to know where to find the strings to be translated. Each language has its own subdirectory in a parent directory named `i18n`. For example, English language files are located in `i18n/fr/`. There are seven different files:
+
+- `admin.php` for anything related to FreshRSS administration
+- `conf.php` for configuration
+- `feedback.php` contains translations of feedback messages
+- `gen.php` stores what is global to FreshRSS (gen for "general")
+- `index.php` for the main page that lists feeds and the About page
+- `install.php` contains strings related FreshRSS installation
+- `sub.php` for subscription management (sub for :subscription")
+
+This organization makes it possible to avoid a single huge translation file.
+
+The translation files are quite simple: it is only a matter of returning a PHP table containing the translations. Extract from `app/i18n/en/gen.php`:
```php
<?php
@@ -201,8 +242,7 @@ return array(
?>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
-
+To access these translations, `Minz_Translate` will help us with its `Minz_Translate::t()` method. As this can be a bit long to type, a shortcut has been introduced that **must** be used in all circumstances: `_t()`.
Code example:
```html
@@ -213,11 +253,11 @@ Code example:
</p>
```
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+The string to pass to the `_t()` function consists of a series of identifiers separated by dots. The first identifier indicates from which file to extract the translation (in this case, `gen.php`), while the following ones indicate table entries. Thus `action` is an entry of the main array and `back_to_rss_feeds` is an entry of the `action` array. This allows us to further organize our translation files.
-### Configuration management
+There is a small special case that sometimes makes life easier: the `_` identifier. This must necessarily be present at the end of the chain and gives a value to the higher-level identifier. It's pretty hard to explain but very simple to understand. In the example given above, a `_` is associated with the value `FreshRSS`: this means that there is no need to write `_t('gen.freshrss._')` but `_t('gen.freshrss')` suffices.
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+### Configuration management
## Write an extension for FreshRSS
@@ -254,7 +294,7 @@ You may also need additional files or subdirectories depending on your needs:
- `configure.phtml` is the file containing the form to parameterize your 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)
-- A `controllers` directory containing additional controllers
+- 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
@@ -298,7 +338,7 @@ In addition, you will have a number of methods directly inherited from `Minz_Ext
- `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`).
- `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.
-**TODO** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+**TODO**
- `registerViews()`
- `registerTranslates()`
@@ -331,4 +371,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** translate from [french version](https://github.com/FreshRSS/documentation/blob/master/fr/docs/developers/03_Backend/05_Extensions.md)
+**TODO**
diff --git a/docs/en/index.md b/docs/en/index.md
index c2f12380b..a0c97a0d9 100644
--- a/docs/en/index.md
+++ b/docs/en/index.md
@@ -16,7 +16,9 @@ FreshRSS has a lot of features including:
- Multi-users so you can host your friends and your family
- And a lot more!
-This documentation is splitted in two sections:
+This documentation is split into four sections:
-- [users documentation](users/02_First_steps.md) so you can discover all the power of FreshRSS
-- [developers documentation](developers/01_First_steps.md) to guide you in the source code of FreshRSS and to help you if you want to contribute
+- [user documentation](users/02_First_steps.md) so you can discover all the power of FreshRSS
+- [developer documentation](developers/01_First_steps.md) to guide you in the source code of FreshRSS and to help you if you want to contribute
+- [administrator documentation](admins/01_Index.md) to guide you in the source code of FreshRSS and to help you if you want to contribute
+- [contributor guidelines](contributing.md) for all of you who want to help improving FreshRSS
diff --git a/docs/en/users/02_First_steps.md b/docs/en/users/02_First_steps.md
index 96ee264a6..2fb1b7256 100644
--- a/docs/en/users/02_First_steps.md
+++ b/docs/en/users/02_First_steps.md
@@ -2,7 +2,7 @@ Learning how to handle a new application is not always easy. We build FreshRSS t
This section guides you to the pages you need as a new comer.
-[After you installed the application](01_Installation.md), the first step is to add one or more feeds. You have few options:
+[After installing the application](../admins/02_Installation.md), the first step is to add some feeds. You have a few options:
1. [Add a feed manually](04_Subscriptions.md#adding-a-feed)
2. [Import an OPML or JSON file](04_Subscriptions.md#import-and-export)
@@ -24,3 +24,5 @@ Now that you know the basic usages, it is time to configure FreshRSS to improve
* [Filter articles](03_Main_view.md#filtering-articles) for a fast access to a selection
* [Search an article](03_Main_view.md#searching-articles) published some time ago
* [Access your feeds on a mobile device](06_Mobile_access.md)
+* [Add some extensions](https://github.com/FreshRSS/Extensions)
+* [Frequently asked questions](07_Frequently_Asked_Questions.md)
diff --git a/docs/en/users/05_Configuration.md b/docs/en/users/05_Configuration.md
index f8ac56cd7..d0951e905 100644
--- a/docs/en/users/05_Configuration.md
+++ b/docs/en/users/05_Configuration.md
@@ -20,7 +20,7 @@ In matters of taste and color, there can be no disputes. This is why FreshRSS of
If none of these are suitable for you, it is always possible to create your own.
-To select a theme, simply scroll through the themes and select a theme that appears. After confirmation, the theme will be applied to the interface.
+To select a theme, simply scroll through the themes and select one that strikes your fancy. After confirmation, the theme will be applied to the interface.
## Content width
@@ -69,10 +69,10 @@ The duration of this notification can be set. By default, the value is 0.
### HTTP Authentication (Apache)
- 1. User control is based on the .htaccess file
- 2. It is best practice to place the .htaccess file in ./i/ subdirecotry so 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 directory of FreshRSS or in a parent directory. Note that PubsubHubbub 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 PubsubHubbub and API will not work!
+ 4. Example `.htaccess` file for a user "marie":
```
AuthUserFile /home/marie/repertoire/.htpasswd
@@ -82,7 +82,7 @@ AuthType Basic
Require user marie
```
-More information can be found in [Apache documentation](http://httpd.apache.org/docs/trunk/howto/auth.html#gettingitworking).
+More information can be found in the [Apache documentation](http://httpd.apache.org/docs/trunk/howto/auth.html#gettingitworking).
# Subscription management
@@ -104,7 +104,7 @@ More information can be found in [Apache documentation](http://httpd.apache.org/
The question comes up regularly, so we will try to clarify here how one can retrieve a truncated RSS feed with FreshRSS. Please note that the process is absolutely not "user friendly", but it works :)
-Also know that this way you are generating much more traffic to the originating sites and that they can block you accordingly. The performance of FreshRSS is also imapcted because you have to fetch the contents of the articles one by one. So it's a feature to use sparingly!
+Also know that this way you are generating much more traffic to the originating sites and that they might block you accordingly. The performance of FreshRSS is also negatively affected because you have to fetch the full article content one by one. So it's a feature to use sparingly!
What is meant by "CSS path of articles on the original site" actually corresponds to the "path" consisting of IDs and classes (which in html, matches the id and class attributes) to retrieve only the interesting part that corresponds to the article. Ideally, this path starts with an id (which is unique to the page).
@@ -118,4 +118,4 @@ We find here that the block that encompasses only the content of the article is
* Rue89: ```#article .content```
* PCINpact: ```#actu_content```
-* Lesnumériques: ```article#body div.text.clearfix``` \ No newline at end of file
+* Lesnumériques: ```article#body div.text.clearfix```
diff --git a/docs/en/users/06_Mobile_access.md b/docs/en/users/06_Mobile_access.md
index e1a23c8ba..3472172b0 100644
--- a/docs/en/users/06_Mobile_access.md
+++ b/docs/en/users/06_Mobile_access.md
@@ -1 +1,51 @@
-**TODO**
+This page assumes you have completed the [server setup](../admins/02_Installation.md).
+
+# Enable the API in FreshRSS
+
+1. Under the section “Authentication”, enable the option “Allow API access (required for mobile apps)”.
+2. Under the section “Profile”, fill-in the field “API password (e.g., for mobile apps)”.
+ * Every user must define an API password.
+ * The reason for an API-specific password is that it may be used in less safe situations than the main password, and does not grant access to as many things.
+
+
+# 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”:
+ * 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.
+
+
+# Fix server configuration
+
+5. 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.
+ * If you get *Service Unavailable!*, then check from step 1 again.
+ * With __Apache__:
+ * If you get *FAIL getallheaders!*, the combination of your PHP version and your Web server does not provide access to [`getallheaders`](http://php.net/getallheaders)
+ * Update to PHP 5.4+, or use PHP as module instead of CGI. Otherwise turn on Apache `mod_rewrite`:
+ * Allow [`FileInfo` in `.htaccess`](http://httpd.apache.org/docs/trunk/mod/core.html#allowoverride): see the [server setup](../admins/02_Installation.md) again.
+ * Enable [`mod_rewrite`](http://httpd.apache.org/docs/trunk/mod/mod_rewrite.html):
+ * With Debian / Ubuntu: `sudo a2enmod rewrite`
+ * With __nginx__:
+ * If you get *Bad Request!*, check your server `PATH_INFO` configuration.
+ * If you get *File not found!*, check your server `fastcgi_split_path_info`.
+ * If you get *FAIL 64-bit or GMP extension!*, then your PHP version does not pass the requirement of being 64-bit and/or have PHP [GMP](http://php.net/gmp) extension.
+ * The easiest is to add the GMP extension. On Debian / Ubuntu: `sudo apt install php-gmp`
+ * Update and try again from step 3.
+
+
+# Compatible clients
+
+6. On the same FreshRSS API page, note the adress given under “Your API address”, like `https://freshrss.example.net/api/greader.php`
+ * You will type it in a client, together with your FreshRSS username, and the corresponding special API password.
+
+7. Pick a client supporting a Google Reader-like API. Selection:
+ * Android
+ * [News+](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus) with [News+ Google Reader extension](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus.extension.google_reader) (Closed source)
+ * [EasyRSS](https://github.com/Alkarex/EasyRSS) (Open source, [F-Droid](https://f-droid.org/packages/org.freshrss.easyrss/))
+ * Linux
+ * [FeedReader 2.0+](https://jangernert.github.io/FeedReader/) (Open source)