Use typographic quotes (#4133)

* Use typographic quotes

* A few fixes

* Fix

* Fix not saved

* Implement feedback

* Detail

* Revert spoken English fixes
Left for a future dedicated discussion

* More reverts

* Final reverts

* Final minor
This commit is contained in:
Alexandre Alapetite 2022-01-08 21:58:55 +01:00 committed by GitHub
parent 916df412f5
commit 1acd3ab09b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
99 changed files with 1120 additions and 1121 deletions

View File

@ -12,9 +12,9 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
1. Go to ''
2. Click on ''
3. Scroll down to ''
4. See error
**Expected behavior**

View File

@ -8,13 +8,13 @@ assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
A clear and concise description of what the problem is. Ex. Im always frustrated when […]
**Describe the solution you'd like**
**Describe the solution youd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Describe alternatives youve considered**
A clear and concise description of any alternative solutions or features youve considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -1369,7 +1369,7 @@
* Generate `base_url` during the installation and add a `pubsubhubbub_enabled` configuration key. [#865](https://github.com/FreshRSS/FreshRSS/issues/865)
* Load configuration by recursion to overwrite array values. [#923](https://github.com/FreshRSS/FreshRSS/issues/923)
* Cast `$limits` configuration values in integer. [#925](https://github.com/FreshRSS/FreshRSS/issues/925)
* Don't hide errors in configuration. [#920](https://github.com/FreshRSS/FreshRSS/issues/920)
* Dont hide errors in configuration. [#920](https://github.com/FreshRSS/FreshRSS/issues/920)
## 2015-05-31 FreshRSS 1.1.1 (beta)
@ -1402,7 +1402,7 @@
* Add some indications on password format
* Bug fixing
* Some shortcuts was never saved
* Global view didn't work if set by default
* Global view didnt work if set by default
* Minz_Error was badly raised
* Feed update failed if nothing had changed (MySQL only)
* CRON task failed with multiple users
@ -1586,7 +1586,7 @@
* UI
* Séparation des descriptions des raccourcis par groupes
* Revue rapide de la page de connexion
* Amélioration de l'affichage des notifications sur mobile
* Amélioration de laffichage des notifications sur mobile
* Revue du système de rafraîchissement des flux
* Meilleure gestion de la file de flux à rafraîchir en JSON
* Rafraîchissement uniquement pour les flux non rafraîchis récemment
@ -1596,12 +1596,12 @@
* Corrige fuite de mémoire
* Meilleure tolérance aux flux invalides
* Corrections divers
* Ne déplie plus l'article lors du clic sur l'icône lien externe
* Ne déplie plus larticle lors du clic sur licône lien externe
* Ne boucle plus à la fin de la navigation dans les articles
* Suppression du champ category.color inutile
* Corrige bug redirection infinie (Persona)
* Amélioration vérification de la requête POST
* Ajout d'un verrou lorsqu'une action mark_read ou mark_favorite est en cours
* Ajout dun verrou lorsquune action mark_read ou mark_favorite est en cours
## 2014-01-29 FreshRSS 0.7

View File

@ -31,7 +31,7 @@ Did you want to fix a bug? To keep a great coordination between collaborators, y
1. Be sure the bug is associated to a ticket and say you work on it.
2. [Fork this project repository](https://help.github.com/articles/fork-a-repo/).
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 **edge branch**. Don't forget to add your name to CREDITS.md if you're contributing to FreshRSS for the very first time.
4. Make your changes to your fork and [send a pull request](https://help.github.com/articles/using-pull-requests/) on the **edge branch**. Dont forget to add your name to `CREDITS.md` if youre contributing to FreshRSS for the very first time.
If you have to write code, please follow [our coding style recommendations](https://freshrss.github.io/FreshRSS/en/developers/01_First_steps.html).
@ -39,7 +39,7 @@ If you have to write code, please follow [our coding style recommendations](http
## Submit an idea
You have great ideas, yes! Don't be shy and open [a new ticket](https://github.com/FreshRSS/FreshRSS/issues/new) on our bug tracker to ask if we can implement it. The greatest ideas often come from the shyest suggestions!
You have great ideas, yes! Dont be shy and open [a new ticket](https://github.com/FreshRSS/FreshRSS/issues/new) on our bug tracker to ask if we can implement it. The greatest ideas often come from the shyest suggestions!
If your idea is nice, well have a look at it.

View File

@ -332,7 +332,7 @@ A [docker-compose.yml](docker-compose.yml) file is given as an example, using Po
* the `environment` section to adapt the strategy to update feeds.
* the `EXPOSED_PORT` variable in the `.env` file;
If you don't want to use the `.env` file you can also directly edit the `docker-compose.yml` file. It's highly recommended to change the password. If you don't change it, it will use the default option.
If you dont want to use the `.env` file you can also directly edit the `docker-compose.yml` file. Its highly recommended to change the password. If you dont change it, it will use the default option.
You can then launch the stack (FreshRSS + PostgreSQL) with:

View File

@ -191,7 +191,7 @@ Vous pouvez utiliser la [ligne de commande](cli/README.md) pour exporter votre b
```
> 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.
Si ce nest 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:
@ -199,11 +199,11 @@ Vous pouvez encore utiliser la [ligne de commande](cli/README.md) pour importer
./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.
> Encore une fois, il est impératif que le nom du fichier contenant la base de données ait une extension `sqlite`. Si ce nest 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 :
Le processus dimport/export à laide dune base de données SQLite est utile quand vous devez :
* exporter complètement les données d'un utilisateur,
* exporter complètement les données dun utilisateur,
* sauvegarder votre service,
* migrer votre service sur un autre serveur,
* changer de type de base de données,

View File

@ -221,7 +221,7 @@ class FreshRSS_auth_Controller extends FreshRSS_ActionController {
/**
* This action gives possibility to a user to create an account.
*
* The user is redirected to the home if he's connected.
* The user is redirected to the home when logged in.
*
* A 403 is sent if max number of registrations is reached.
*/

View File

@ -96,7 +96,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
$id = $feedDAO->addFeed($values);
if (!$id) {
// There was an error in database... we cannot say what here.
// There was an error in database we cannot say what here.
throw new FreshRSS_FeedNotAdded_Exception($url);
}
$feed->_id($id);
@ -196,7 +196,7 @@ class FreshRSS_feed_Controller extends FreshRSS_ActionController {
Minz_Log::warning($e->getMessage());
return Minz_Request::bad(_t('feedback.sub.feed.internal_problem', _url('index', 'logs')), $url_redirect);
} catch (Minz_FileNotExistException $e) {
// Cache directory doesn't exist!
// Cache directory doesnt exist!
Minz_Log::error($e->getMessage());
return Minz_Request::bad(_t('feedback.sub.feed.internal_problem', _url('index', 'logs')), $url_redirect);
} catch (FreshRSS_AlreadySubscribed_Exception $e) {

View File

@ -185,8 +185,8 @@ class FreshRSS_importExport_Controller extends FreshRSS_ActionController {
/**
* This method tries to guess the file type based on its name.
*
* Itis a *very* basic guess file type function. Only based on filename.
* That's could be improved but should be enough for what we have to do.
* It is a *very* basic guess file type function. Only based on filename.
* That could be improved but should be enough for what we have to do.
*/
private static function guessFileType($filename) {
if (substr_compare($filename, '.zip', -4) === 0) {
@ -594,7 +594,7 @@ class FreshRSS_importExport_Controller extends FreshRSS_ActionController {
foreach ($export_feeds as $feed_id) {
$result = $export_service->generateFeedEntries($feed_id, $max_number_entries);
if (!$result) {
// It means the actual feed_id doesn't correspond to any existing feed
// It means the actual feed_id doesnt correspond to any existing feed
continue;
}
@ -604,7 +604,7 @@ class FreshRSS_importExport_Controller extends FreshRSS_ActionController {
$nb_files = count($exported_files);
if ($nb_files <= 0) {
// There's nothing to do, there're no files to export
// Theres nothing to do, therere no files to export
return Minz_Request::forward(
array('c' => 'importExport', 'a' => 'index'),
true
@ -616,7 +616,7 @@ class FreshRSS_importExport_Controller extends FreshRSS_ActionController {
$filename = key($exported_files);
$content = $exported_files[$filename];
} else {
// More files? Let's compress them in a Zip archive
// More files? Lets compress them in a Zip archive
if (!extension_loaded('zip')) {
// Oops, there is no ZIP extension!
return Minz_Request::bad(

View File

@ -137,7 +137,7 @@ class FreshRSS_update_Controller extends FreshRSS_ActionController {
$this->view->_path('update/index.phtml');
if (file_exists(UPDATE_FILENAME)) {
// There is already an update file to apply: we don't need to check
// There is already an update file to apply: we dont need to check
// the webserver!
// Or if already check during the last hour, do nothing.
Minz_Request::forward(array('c' => 'update'), true);

View File

@ -351,8 +351,8 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
$_POST['new_user_passwordPlain'] = '';
invalidateHttpCache();
// If the user has admin access, it means he's already logged in
// and we don't want to login with the new account. Otherwise, the
// If the user has admin access, it means hes already logged in
// and we dont want to login with the new account. Otherwise, the
// user just created its account himself so he probably wants to
// get started immediately.
if ($ok && !FreshRSS_Auth::hasAccess('admin')) {
@ -407,12 +407,12 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
*
* This route works with GET requests since the URL is provided by email.
* The security risks (e.g. forged URL by an attacker) are not very high so
* it's ok.
* its ok.
*
* It returns 404 error if `force_email_validation` is disabled or if the
* user doesn't exist.
* user doesnt exist.
*
* It returns 403 if user isn't logged in and `username` param isn't passed.
* It returns 403 if user isnt logged in and `username` param isnt passed.
*/
public function validateEmailAction() {
if (!FreshRSS_Context::$system_conf->force_email_validation) {
@ -470,7 +470,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
/**
* This action resends a validation email to the current user.
*
* It only acts on POST requests but doesn't require any param (except the
* It only acts on POST requests but doesnt require any param (except the
* CSRF token).
*
* It returns 403 error if the user is not logged in or 404 if request is
@ -537,7 +537,7 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
if (Minz_Request::isPost()) {
$ok = true;
if ($self_deletion) {
// We check the password if it's a self-destruction
// We check the password if its a self-destruction
$nonce = Minz_Session::param('nonce');
$challenge = Minz_Request::param('challenge', '');

View File

@ -4,8 +4,7 @@ class FreshRSS extends Minz_FrontController {
/**
* Initialize the different FreshRSS / Minz components.
*
* PLEASE DON'T CHANGE THE ORDER OF INITIALIZATIONS UNLESS YOU KNOW WHAT
* YOU DO!!
* PLEASE DONT CHANGE THE ORDER OF INITIALIZATIONS UNLESS YOU KNOW WHAT YOU DO!!
*
* Here is the list of components:
* - Create a configuration setter and register it to system conf
@ -37,7 +36,7 @@ class FreshRSS extends Minz_FrontController {
Minz_ExtensionManager::init();
// Auth has to be initialized before using currentUser session parameter
// because it's this part which create this parameter.
// because its this part which create this parameter.
self::initAuth();
if (FreshRSS_Context::$user_conf == null) {
FreshRSS_Context::initUser();

View File

@ -190,7 +190,7 @@ class FreshRSS_Auth {
break;
case 'http_auth':
case 'none':
// Nothing to do...
// Nothing to do
break;
default:
// TODO: extensions

View File

@ -490,18 +490,18 @@ class FreshRSS_Entry extends Minz_Model {
public function loadCompleteContent($force = false) {
// Gestion du contenu
// On cherche à récupérer les articles en entier... même si le flux ne le propose pas
// Trying to fetch full article content even when feeds do not propose it
$feed = $this->feed(true);
if ($feed != null && trim($feed->pathEntries()) != '') {
$entryDAO = FreshRSS_Factory::createEntryDao();
$entry = $force ? null : $entryDAO->searchByGuid($this->feedId, $this->guid);
if ($entry) {
// l'article existe déjà en BDD, en se contente de recharger ce contenu
// larticle existe déjà en BDD, en se contente de recharger ce contenu
$this->content = $entry->content();
} else {
try {
// l'article n'est pas en BDD, on va le chercher sur le site
// larticle nest pas en BDD, on va le chercher sur le site
$fullContent = self::getContentByParsing(
htmlspecialchars_decode($this->link(), ENT_QUOTES),
$feed->pathEntries(),
@ -526,7 +526,7 @@ class FreshRSS_Entry extends Minz_Model {
return true;
}
} catch (Exception $e) {
// rien à faire, on garde l'ancien contenu(requête a échoué)
// rien à faire, on garde lancien contenu(requête a échoué)
Minz_Log::warning($e->getMessage());
}
}

View File

@ -300,7 +300,7 @@ class FreshRSS_Feed extends Minz_Model {
$this->hubUrl = isset($links[0]) ? $links[0] : null;
if ($loadDetails) {
// si on a utilisé l'auto-discover, notre url va avoir changé
// si on a utilisé lauto-discover, notre url va avoir changé
$subscribe_url = $simplePie->subscribe_url(false);
//HTML to HTML-PRE //ENT_COMPAT except '&'

View File

@ -88,7 +88,7 @@ class FreshRSS_FeedDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
// TODO: not sure if we should write this method in DAO since DAO
// should not be aware about feed class
// Add feed only if we don't find it in DB
// Add feed only if we dont find it in DB
$feed_search = $this->searchByUrl($feed->url());
if (!$feed_search) {
$values = array(

View File

@ -157,7 +157,7 @@ class FreshRSS_Share {
}
/**
* Return the current field of the share option. It's null for shares
* Return the current field of the share option. Its null for shares
* using the GET method.
*/
public function field() {

View File

@ -15,11 +15,11 @@ class FreshRSS_TagDAO extends Minz_ModelPdo implements FreshRSS_Searchable {
try {
require(APP_PATH . '/SQL/install.sql.' . $this->pdo->dbType() . '.php');
Minz_Log::warning('SQL ALTER GUID case sensitivity...');
Minz_Log::warning('SQL ALTER GUID case sensitivity');
$databaseDAO = FreshRSS_Factory::createDatabaseDAO();
$databaseDAO->ensureCaseInsensitiveGuids();
Minz_Log::warning('SQL CREATE TABLE tag...');
Minz_Log::warning('SQL CREATE TABLE tag');
$ok = $this->pdo->exec($GLOBALS['SQL_CREATE_TABLE_TAGS']) !== false;
} catch (Exception $e) {
Minz_Log::error('FreshRSS_EntryDAO::createTagTable error: ' . $e->getMessage());

View File

@ -61,7 +61,7 @@ class FreshRSS_Export_Service {
/**
* Generate the starred and labelled entries file content.
*
* Both starred and labelled entries are put into a "starred" file, that's
* Both starred and labelled entries are put into a "starred" file, thats
* why there is only one method for both.
*
* @param string $type must be one of:
@ -100,7 +100,7 @@ class FreshRSS_Export_Service {
* @param integer $max_number_entries
*
* @return array|null First item is the filename, second item is the content.
* It also can return null if the feed doesn't exist.
* It also can return null if the feed doesnt exist.
*/
public function generateFeedEntries($feed_id, $max_number_entries) {
$feed = $this->feed_dao->searchById($feed_id);

View File

@ -78,7 +78,7 @@ foreach ($users as $user) {
Minz_ExtensionManager::callHook('freshrss_user_maintenance');
$app->init();
notice('FreshRSS actualize ' . $user . '...');
notice('FreshRSS actualize ' . $user . '');
echo $user, ' '; //Buffered
$app->run();

View File

@ -107,7 +107,7 @@ return array(
'http_error' => 'Failed to load website content.', // TODO
'no_entries' => 'There are no articles in this feed. You need at least one article to create a preview.', // TODO
'no_feed' => 'Internal error (feed cannot be found).', // TODO
'no_result' => 'The selector didn\'t match anything. As a fallback the original feed text will be displayed instead.', // TODO
'no_result' => 'The selector didnt match anything. As a fallback the original feed text will be displayed instead.', // TODO
'selector_empty' => 'The selector is empty. You need to define one to create a preview.', // TODO
),
'updated' => 'Kanál byl aktualizován',

View File

@ -12,7 +12,7 @@
return array(
'auth' => array(
'allow_anonymous' => 'Allow anonymous reading of the default user\'s articles (%s)', // IGNORE
'allow_anonymous' => 'Allow anonymous reading of the default users articles (%s)', // IGNORE
'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles', // IGNORE
'api_enabled' => 'Allow <abbr>API</abbr> access <small>(required for mobile apps)</small>', // IGNORE
'form' => 'Web form (traditional, requires JavaScript)', // IGNORE

View File

@ -14,7 +14,7 @@ return array(
'archiving' => array(
'_' => 'Archiving', // IGNORE
'exception' => 'Purge exception', // IGNORE
'help' => 'More options are available in the individual feed\'s settings', // IGNORE
'help' => 'More options are available in the individual feeds settings', // IGNORE
'keep_favourites' => 'Never delete favorites',
'keep_labels' => 'Never delete labels', // IGNORE
'keep_max' => 'Maximum number of articles to keep', // IGNORE

View File

@ -107,7 +107,7 @@ return array(
'http_error' => 'Failed to load website content.', // IGNORE
'no_entries' => 'There are no articles in this feed. You need at least one article to create a preview.', // IGNORE
'no_feed' => 'Internal error (feed cannot be found).', // IGNORE
'no_result' => 'The selector didn\'t match anything. As a fallback the original feed text will be displayed instead.', // IGNORE
'no_result' => 'The selector didnt match anything. As a fallback the original feed text will be displayed instead.', // IGNORE
'selector_empty' => 'The selector is empty. You need to define one to create a preview.', // IGNORE
),
'updated' => 'Feed has been updated', // IGNORE

View File

@ -12,7 +12,7 @@
return array(
'auth' => array(
'allow_anonymous' => 'Allow anonymous reading of the default user\'s articles (%s)',
'allow_anonymous' => 'Allow anonymous reading of the default users articles (%s)',
'allow_anonymous_refresh' => 'Allow anonymous refresh of the articles',
'api_enabled' => 'Allow <abbr>API</abbr> access <small>(required for mobile apps)</small>',
'form' => 'Web form (traditional, requires JavaScript)',

View File

@ -14,7 +14,7 @@ return array(
'archiving' => array(
'_' => 'Archiving',
'exception' => 'Purge exception',
'help' => 'More options are available in the individual feed\'s settings',
'help' => 'More options are available in the individual feeds settings',
'keep_favourites' => 'Never delete favourites',
'keep_labels' => 'Never delete labels',
'keep_max' => 'Maximum number of articles to keep',

View File

@ -107,7 +107,7 @@ return array(
'http_error' => 'Failed to load website content.',
'no_entries' => 'There are no articles in this feed. You need at least one article to create a preview.',
'no_feed' => 'Internal error (feed cannot be found).',
'no_result' => 'The selector didn\'t match anything. As a fallback the original feed text will be displayed instead.',
'no_result' => 'The selector didnt match anything. As a fallback the original feed text will be displayed instead.',
'selector_empty' => 'The selector is empty. You need to define one to create a preview.',
),
'updated' => 'Feed has been updated',

View File

@ -123,7 +123,7 @@ return array(
),
'js' => array(
'category_empty' => 'Vaciar categoría',
'confirm_action' => '¿Seguyro que quieres hacerlo? No hay marcha atrás...',
'confirm_action' => '¿Seguyro que quieres hacerlo? No hay marcha atrás',
'confirm_action_feed_cat' => '¿Seguro que quieres hacerlo? Perderás todos los favoritos relacionados y las peticiones de usuario. ¡Y no hay marcha atrás!',
'feedback' => array(
'body_new_articles' => 'Hay %%d nuevos artículos para leer en FreshRSS.',

View File

@ -100,14 +100,14 @@ return array(
'n_entries_deleted' => '%d articles ont été supprimés.',
'no_refresh' => 'Il ny a aucun flux à actualiser…',
'not_added' => '<em>%s</em> na pas pu être ajouté.',
'not_found' => 'Le flux n\'a pas pu être trouvé.',
'not_found' => 'Le flux na pas pu être trouvé.',
'over_max' => 'Vous avez atteint votre limite de flux (%d)',
'reloaded' => '<em>%s</em> a été rechargé.',
'selector_preview' => array(
'http_error' => 'Échec lors du chargement du contenu du site web.',
'no_entries' => 'Il n\'y a pas d\'articles dans ce flux. Vous devez avoir au moins un article pour générer une prévisualisation.',
'no_feed' => 'Erreur interne (le flux n\'a pas pu être trouvé).',
'no_result' => 'Le sélecteur n\'a produit aucune concordance. Dans ces circonstances, le texte original du flux sera affiché.',
'no_entries' => 'Il ny a pas darticles dans ce flux. Vous devez avoir au moins un article pour générer une prévisualisation.',
'no_feed' => 'Erreur interne (le flux na pas pu être trouvé).',
'no_result' => 'Le sélecteur na produit aucune concordance. Dans ces circonstances, le texte original du flux sera affiché.',
'selector_empty' => 'Le sélecteur est vide. Vous devez en définir un pour générer une prévisualisation.',
),
'updated' => 'Le flux a été mis à jour',

View File

@ -107,7 +107,7 @@ return array(
'http_error' => 'Failed to load website content.', // TODO
'no_entries' => 'There are no articles in this feed. You need at least one article to create a preview.', // TODO
'no_feed' => 'Internal error (feed cannot be found).', // TODO
'no_result' => 'The selector didn\'t match anything. As a fallback the original feed text will be displayed instead.', // TODO
'no_result' => 'The selector didnt match anything. As a fallback the original feed text will be displayed instead.', // TODO
'selector_empty' => 'The selector is empty. You need to define one to create a preview.', // TODO
),
'updated' => 'ההזנה התעדכנה',

View File

@ -107,7 +107,7 @@ return array(
'http_error' => 'Failed to load website content.', // TODO
'no_entries' => 'There are no articles in this feed. You need at least one article to create a preview.', // TODO
'no_feed' => 'Internal error (feed cannot be found).', // TODO
'no_result' => 'The selector didn\'t match anything. As a fallback the original feed text will be displayed instead.', // TODO
'no_result' => 'The selector didnt match anything. As a fallback the original feed text will be displayed instead.', // TODO
'selector_empty' => 'The selector is empty. You need to define one to create a preview.', // TODO
),
'updated' => 'Feed aggiornato',

View File

@ -80,7 +80,7 @@ return array(
'title' => 'Profiel',
),
'query' => array(
'_' => 'Gebruikersquery\'s (informatie aanvragen)',
'_' => 'Gebruikersquerys (informatie aanvragen)',
'deprecated' => 'Deze query (informatie aanvraag) is niet langer geldig. De bedoelde categorie of feed is al verwijderd.',
'filter' => array(
'_' => 'Filter toegepast:',
@ -118,7 +118,7 @@ return array(
'state_13' => 'Toon gelezen artikelen',
'state_14' => 'Toon ongelezen artikelen',
'state_15' => 'Toon alle artikelen',
'title' => 'Gebruikersquery\'s',
'title' => 'Gebruikersquerys',
),
'reading' => array(
'_' => 'Lezen',

View File

@ -56,11 +56,11 @@ return array(
'removed' => '%s suprimida',
),
'import_export' => array(
'export_no_zip_extension' => 'L\'extension ZIP es pas presenta sul servidor. Volgatz ensajar d\'exportar los fichièrs un per un.',
'export_no_zip_extension' => 'Lextension ZIP es pas presenta sul servidor. Volgatz ensajar dexportar los fichièrs un per un.',
'feeds_imported' => 'Vòstres fluxes son estats importats seràn actualizats en seguida',
'feeds_imported_with_errors' => 'Vòstres fluxes son estats importats mas i a agut derrors',
'file_cannot_be_uploaded' => 'Telecargament del fichièr impossible',
'no_zip_extension' => 'L\'extension es pas presenta sul servidor.',
'no_zip_extension' => 'Lextension es pas presenta sul servidor.',
'zip_error' => 'Una error ses producha pendent limportacion del fichièr ZIP.',
),
'profile' => array(
@ -95,7 +95,7 @@ return array(
'deleted' => 'Lo flux es suprimit',
'error' => 'Error en actualizar',
'internal_problem' => 'Lo flux pòt pas èsser ajustat. <a href="%s">Consultatz los jornals daudit de FreshRSS</a> per ne saber mai. Podètz forçar lapondon en ajustant <code>#force_feed</code> a lURL.',
'invalid_url' => 'L\'URL <em>%s</em> es invalida',
'invalid_url' => 'LURL <em>%s</em> es invalida',
'n_actualized' => '%s fluxes son estats actualizats',
'n_entries_deleted' => '%d articles son estats suprimits',
'no_refresh' => 'I a pas cap de flux dactualizar…',

View File

@ -16,7 +16,7 @@ return array(
'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>', // IGNORE
'bugs_reports' => 'Zgłaszanie problemów',
'credits' => 'Uznanie autorstwa',
'credits_content' => 'Niektóre elementy designu pochodzą z <a href="http://twitter.github.io/bootstrap/">Bootstrapa</a>, przy czym FreshRSS nie używa tego frameworku. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Ikony</a> zostały pierwotnie stworzone dla <a href="https://www.gnome.org/">projektu GNOME</a>. Font <em>Open Sans</em> jest autorstwa <a href="https://fonts.google.com/specimen/Open+Sans">Steve\'a Mattesona</a>. FreshRSS opiera się na <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, frameworku PHP.',
'credits_content' => 'Niektóre elementy designu pochodzą z <a href="http://twitter.github.io/bootstrap/">Bootstrapa</a>, przy czym FreshRSS nie używa tego frameworku. <a href="https://git.gnome.org/browse/gnome-icon-theme-symbolic">Ikony</a> zostały pierwotnie stworzone dla <a href="https://www.gnome.org/">projektu GNOME</a>. Font <em>Open Sans</em> jest autorstwa <a href="https://fonts.google.com/specimen/Open+Sans">Stevea Mattesona</a>. FreshRSS opiera się na <a href="https://github.com/marienfressinaud/MINZ">Minz</a>, frameworku PHP.',
'freshrss_description' => 'FreshRSS jest agregatorem kanałów RSS przeznaczonym do zainstalowania na własnym serwerze, podobnie jak <a href="http://tontof.net/kriss/feed/">Kriss Feed</a>, bądź <a href="https://github.com/LeedRSS/Leed">Leed</a>. Jest lekki i łatwy do schowania w kieszeni, pozostając przy tym potężnym i konfigurowalnym narzędziem.',
'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">na Githubie</a>',
'license' => 'Licencja',

View File

@ -12,7 +12,7 @@
return array(
'api' => array(
'documentation' => 'URL\'yi harici bir araçla kullanmak için kopyala.',
'documentation' => 'URLyi harici bir araçla kullanmak için kopyala.',
'title' => 'API', // IGNORE
),
'bookmarklet' => array(

View File

@ -284,7 +284,7 @@ function freshrss_already_installed() {
return false;
}
// ok, the global conf exists... but what about default user conf?
// ok, the global conf exists but what about default user conf?
$current_user = $system_conf->default_user;
try {
Minz_Configuration::register('user', join_path(USERS_PATH, $current_user, 'config.php'));

View File

@ -1,7 +1,7 @@
<?php
/*
* This is a configuration file. You shouldn't modify it unless you know what
* This is a configuration file. You shouldnt modify it unless you know what
* you are doing. If you want to add a share type, this is where you need to do
* it.
*
@ -16,7 +16,7 @@
* for internal use)
* - transform is an array of transformation to apply on links and titles
* - help is a URL to a help page (mandatory for form = 'advanced')
* - form is the type of form to display during configuration. It's either
* - form is the type of form to display during configuration. Its either
* 'simple' or 'advanced'. 'simple' is used when only the name is configurable,
* 'advanced' is used when the name and the location are configurable.
* - method is the HTTP method (POST or GET) used to share a link.

View File

@ -95,7 +95,7 @@ class I18nData {
}
/**
* Add a new language. It's a copy of the reference language.
* Add a new language. Its a copy of the reference language.
*
* @param string $language
* @param string $reference

View File

@ -20,7 +20,7 @@ if [ -z "$(command -v po4a)" ]; then
fi
# Generate po4a.conf file with list of TLDR pages
echo 'Generating configuration file for po4a...'
echo 'Generating configuration file for po4a'
{
echo '# WARNING: this file is generated with translation-update.sh'
echo '# DO NOT modify this file manually!'
@ -34,5 +34,5 @@ for FILE in $(cd en && tree -f -i | grep ".md" | grep -v "admins"); do
done
# Generate POT file, PO files, and pages.XX pages
echo 'Generating POT file and translated pages...'
echo 'Generating POT file and translated pages'
po4a -k 0 --msgid-bugs-address 'https://github.com/FreshRSS/FreshRSS/issues' $CONFIGFILE

View File

@ -35,7 +35,7 @@ return array(
# Force users to validate their email address. If `true`, an email with a
# validation URL is sent during registration, and users cannot access their
# feed if they didn't access this URL.
# feed if they didnt access this URL.
# Note: it is recommended to not enable it with PHP < 5.5 (emails cannot be
# sent).
'force_email_validation' => false,
@ -64,7 +64,7 @@ return array(
# Allow or not the use of the API, used for mobile apps.
# End-point is https://freshrss.example.net/api/greader.php
# You need to set the user's API password.
# You need to set the users API password.
'api_enabled' => false,
# Allow or not the use of an unsafe login,

View File

@ -2,7 +2,7 @@
Learn how to install, update, and backup FreshRSS, as well as how to use the command line tools.
1. [Prerequisites](02_Prerequisites.md): What you'll need to run FreshRSS
1. [Prerequisites](02_Prerequisites.md): What youll need to run FreshRSS
2. [General installation instructions](03_Installation.md) for FreshRSS
3. [Update your installation](04_Updating.md) to the latest stable or development version

View File

@ -1,12 +1,12 @@
# General Installation Instructions
These instructions are intended as general guidelines for installing FreshRSS. You may wish to consult the [Step-by-step Tutorial for installing FreshRSS on Debian 9/Ubuntu 16.04](06_LinuxInstall.md) if you don't currently have a web server and don't have experience setting one up.
These instructions are intended as general guidelines for installing FreshRSS. You may wish to consult the [Step-by-step Tutorial for installing FreshRSS on Debian 9/Ubuntu 16.04](06_LinuxInstall.md) if you dont currently have a web server and dont have experience setting one up.
Before you begin, make sure that you've read the [prerequisites](02_Prerequisites.md) for running FreshRSS. As shorthand, `.` refers to the directory to which your FreshRSS installation lives.
Before you begin, make sure that youve read the [prerequisites](02_Prerequisites.md) for running FreshRSS. As shorthand, `.` refers to the directory to which your FreshRSS installation lives.
1. If the computer you're running on is not currently running a web server, you'll first need to install and configure a web server, a version of PHP, and an appropriate database, as listed in the prerequisites. Specially, if you are using NGINX, please keep in mind that FreshRSS needs some specified variables to run properly. So make sure you've checked our configuration file. [Example Apache and Nginx configuration files can be found here](10_ServerConfig.md).
1. If the computer youre running on is not currently running a web server, youll first need to install and configure a web server, a version of PHP, and an appropriate database, as listed in the prerequisites. Specially, if you are using NGINX, please keep in mind that FreshRSS needs some specified variables to run properly. So make sure youve checked our configuration file. [Example Apache and Nginx configuration files can be found here](10_ServerConfig.md).
2. Download your chosen version of FreshRSS, or fetch it via git. It's advisable that you put FreshRSS in `/usr/share/`, and symlink the `./p/` folder to the root of your web server.[^1]
2. Download your chosen version of FreshRSS, or fetch it via git. Its advisable that you put FreshRSS in `/usr/share/`, and symlink the `./p/` folder to the root of your web server.[^1]
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/`.
@ -14,7 +14,7 @@ Before you begin, make sure that you've read the [prerequisites](02_Prerequisite
5. Create a database for FreshRSS to use. Note the username and password for this database, as it will be needed during installation!
6. Using your supported web browser of choice, navigate to the address you've installed your server to complete the installation from the GUI.[^3]
6. Using your supported web browser of choice, navigate to the address youve installed your server to complete the installation from the GUI.[^3]
7. You can then customize [the configuration of your instance](https://github.com/FreshRSS/FreshRSS/blob/edge/config.default.php#L3-L4), [the default configuration for new users](https://github.com/FreshRSS/FreshRSS/blob/edge/config-user.default.php#L3-L5) or [the default set of feeds for new users](https://github.com/FreshRSS/FreshRSS/blob/edge/opml.default.xml#L2-L5).
@ -24,4 +24,4 @@ Before you begin, make sure that you've read the [prerequisites](02_Prerequisite
[^2]: If you wish to allow updates from the web interface, also give group write permissions to this folder.
[^3]: Assuming your server is `http://example.net`, this address could be `http://example.net/p/` if you didn't follow our previous advice about not exposing the `./p/` folder.
[^3]: Assuming your server is `http://example.net`, this address could be `http://example.net/p/` if you didnt follow our previous advice about not exposing the `./p/` folder.

View File

@ -15,7 +15,7 @@ You only have to do is to run the following command:
Alternatively, you can edit configuration files manually.
To do so, you need to change the *default_user* value in the file *./data/config.php*.
As the file is a PHP file, you have to make sure that it's still valid after the update by running the following command:
As the file is a PHP file, you have to make sure that its still valid after the update by running the following command:
```sh
php -l ./data/config.php
```

View File

@ -4,7 +4,7 @@ The following is general procedure; [specific commands for Linux may be found he
## Backing Up
Before you update to a new version of FreshRSS, it's always a good idea to backup your current installation. Simply make an archive of your FreshRSS directory, which can be restored if needed by following the "Updating from a Zip Archive" section at the bottom of this document.
Before you update to a new version of FreshRSS, its always a good idea to backup your current installation. Simply make an archive of your FreshRSS directory, which can be restored if needed by following the "Updating from a Zip Archive" section at the bottom of this document.
## Updating From the Web
@ -18,7 +18,7 @@ If you installed FreshRSS using git, you can update, change branches, or switch
Generally, the update procedure via git works as follows:
1. Making sure you're in your FreshRSS install directory, and fetch updates.
1. Making sure youre in your FreshRSS install directory, and fetch updates.
2. Checkout the branch you wish to use.
3. Perform a hard reset to discard local changes.
4. Delete manual additions. Be sure to move your backup out of the directory before doing this step!

View File

@ -1,6 +1,6 @@
# Backup
This tutorial demonstrates commands for backing up FreshRSS. It assumes that your main FreshRSS directory is `/usr/share/FreshRSS`; If you've installed it somewhere else, substitute your path as necessary.
This tutorial demonstrates commands for backing up FreshRSS. It assumes that your main FreshRSS directory is `/usr/share/FreshRSS`; If youve installed it somewhere else, substitute your path as necessary.
## Installation Backup
@ -8,19 +8,19 @@ Do this before an upgrade.
### Creating a Backup
First, Enter the directory you wish to save your backup to. Here, for example, we'll save the backup to the user home directory
First, Enter the directory you wish to save your backup to. Here, for example, well save the backup to the user home directory
```sh
cd ~
```
Next, we'll create a gzipped tar archive of the FreshRSS directory. The following command will archive the entire contents of your FreshRSS installation in it's current state.
Next, well create a gzipped tar archive of the FreshRSS directory. The following command will archive the entire contents of your FreshRSS installation in its current state.
```sh
tar -czf FreshRSS-backup.tgz -C /usr/share/FreshRSS/ .
```
And you're done!
And youre done!
### Restoring from a Backup
@ -56,14 +56,14 @@ You can export your feed list in OPML format either from the web interface, or f
### Saving Articles
**If you are using MySQL**
**If you are using MySQL**
You can use [phpMyAdmin](https://www.phpmyadmin.net/) or MySQL tools, where `<db_user>` is your database username, `<db_host>` is the hostname of your web server containing your FreshRSS database, and `<freshrss_db>` is the database used by FreshRSS:
```sh
mysqldump --skip-comments --disable-keys --user=<db_user> --password --host <db_host> --result-file=freshrss.dump.sql --databases <freshrss_db>
```
**From any database**
**From any database**
You can use the [Command-Line Interface](https://github.com/FreshRSS/FreshRSS/blob/edge/cli/README.md) to export your database to a SQLite database file:
```sh

View File

@ -1,14 +1,14 @@
# Configuring the email address validation
FreshRSS can verify that users give a valid email address. It is not configured
by default so you'll have to follow these few steps to verify email addresses.
by default so youll have to follow these few steps to verify email addresses.
It is intended to administrators who host users and want to be sure to be able
to contact them.
## Force email validation
In your `data/config.php` file, you'll find a `force_email_validation` item:
In your `data/config.php` file, youll find a `force_email_validation` item:
set it to `true`. An email field now appears on the registration page and
emails are sent when users change their email.
@ -19,45 +19,45 @@ You can also enable this feature directly in FreshRSS: `Administration` >
By default, FreshRSS will attempt to send emails with the [`mail`](https://www.php.net/manual/en/function.mail.php)
function of PHP. It is the simpler solution but it might not work as expected.
For example, we don't support (yet?) sending emails from inside our official
For example, we dont support (yet?) sending emails from inside our official
Docker images. We recommend to use a proper SMTP server.
To configure a SMTP server, you'll have to modify the `data/config.php` file.
To configure a SMTP server, youll have to modify the `data/config.php` file.
First, change the `mailer` item to `smtp` (instead of the default `mail`).
Then, you should change the `smtp` options like you would do with a regular
email client. You can find the full list of options in the [`config.default.php` file](https://github.com/FreshRSS/FreshRSS/blob/edge/config.default.php).
If you're not sure to what each item is corresponding, you may find useful [the
If youre not sure to what each item is corresponding, you may find useful [the
PHPMailer documentation](http://phpmailer.github.io/PHPMailer/classes/PHPMailer.PHPMailer.PHPMailer.html#properties)
(which is used by FreshRSS under the hood).
## Check your SMTP server is correctly configured
To do so, once you've enabled the `force_email_validation` option, you only
To do so, once youve enabled the `force_email_validation` option, you only
need to change your email address on the profile page and check that an email
arrives on the new address.
If it fails, you can change the environment (in `data/config.php` file, change
`production` to `development`). PHPMailer will become more verbose and you'll
be able to see what happens in the PHP logs. If something's wrong here, you'll
`production` to `development`). PHPMailer will become more verbose and youll
be able to see what happens in the PHP logs. If somethings wrong here, youll
probably better served by asking to your favorite search engine than asking us.
If you think that something's wrong in FreshRSS code, don't hesitate to open a
If you think that somethings wrong in FreshRSS code, dont hesitate to open a
ticket though.
Also, make sure the email didn't arrive in your spam.
Also, make sure the email didnt arrive in your spam.
Once you're done, don't forget to reconfigure your environment to `production`.
Once youre done, dont forget to reconfigure your environment to `production`.
## Access the validation URL during development
You might find painful to configure a SMTP server when you're developping and
You might find painful to configure a SMTP server when youre developping and
`mail` function will not work on your local machine. For the moment, there is
no easy way to access the validation URL unless forging it. You'll need to
no easy way to access the validation URL unless forging it. Youll need to
information:
- the username of the user to validate (you should know it)
- its validation token, that you'll find in its configuration file:
- its validation token, that youll find in its configuration file:
```console
$ # For instance, for a user called `alice`
@ -67,4 +67,4 @@ $ grep email_validation_token data/users/alice/config.php | cut -d \' -f 4 -
Then, the validation URL should be `http://localhost:8080/i/?c=user&a=validateEmail&username=alice&token=3d75042a4471994a0346e18ae87602f19220a795`
Don't forget to adapt this URL with the correct port, username and token.
Dont forget to adapt this URL with the correct port, username and token.

View File

@ -1,6 +1,6 @@
# Installation on Debian 9/Ubuntu 16.04
This tutorial will give you step-by-step commands to install the latest stable release of FreshRSS with Apache and MySQL using git. It's always recommended that you [backup your installation](05_Backup.md) before updating
This tutorial will give you step-by-step commands to install the latest stable release of FreshRSS with Apache and MySQL using git. Its always recommended that you [backup your installation](05_Backup.md) before updating
Please note: Commands need to be run as an administrator; either perform the following from a sudo shell (`sudo -s`) or use an administrator account.
@ -13,7 +13,7 @@ apt install apache2
a2enmod headers expires rewrite ssl
```
Then, you have to configure Apache. You can create a file in `/etc/apache2/sites-available`, based on [our example configuration file](10_ServerConfig.md). Once you're done, create a symbolic link from this file to the `sites-enabled` folder:
Then, you have to configure Apache. You can create a file in `/etc/apache2/sites-available`, based on [our example configuration file](10_ServerConfig.md). Once youre done, create a symbolic link from this file to the `sites-enabled` folder:
```sh
ln -s /etc/apache2/sites-available/freshrss.conf /etc/apache2/sites-enabled/freshrss.conf
@ -31,7 +31,7 @@ Install the PHP module for Apache
apt install libapache2-mod-php
```
Next, we'll need to install and configure MySQL. Install MySQL components like so:
Next, well need to install and configure MySQL. Install MySQL components like so:
```sh
sudo apt install mysql-server mysql-client php-mysql
@ -43,8 +43,8 @@ MySQL must now be started:
service mysql-server start
```
We'll need to configure MySQL.
**Note:** As you've just installed mysql, there will be no root password; simply hit enter on the first step
Well need to configure MySQL.
**Note:** As youve just installed mysql, there will be no root password; simply hit enter on the first step
```sh
mysql_secure_installation
@ -64,7 +64,7 @@ service apache2 restart
## Part 2: Installing FreshRSS
Begin by installing git, if you don't already have it installed.
Begin by installing git, if you dont already have it installed.
```sh
apt install git
@ -85,7 +85,7 @@ chown -R :www-data .
sudo chmod -R g+r .
```
We'll also need to allow the data folder to be written to, like so:
Well also need to allow the data folder to be written to, like so:
```sh
chmod -R g+w ./data/

View File

@ -1,8 +1,8 @@
# Updating on Linux
This tutorial demonstrates commands for updating FreshRSS. It assumes that your main FreshRSS directory is `/usr/share/FreshRSS`; If you've installed it somewhere else, substitute your path as necessary.
This tutorial demonstrates commands for updating FreshRSS. It assumes that your main FreshRSS directory is `/usr/share/FreshRSS`; If youve installed it somewhere else, substitute your path as necessary.
**Note that FreshRSS contains a built-in update system.** It's easier to use if you don't understand the commands that follow. It's available through the web interface of your FreshRSS installation, Administration → Update.
**Note that FreshRSS contains a built-in update system.** Its easier to use if you dont understand the commands that follow. Its available through the web interface of your FreshRSS installation, Administration → Update.
## Pausing automatic feed updates
@ -24,7 +24,7 @@ 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 doesnt 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
@ -42,7 +42,7 @@ If your local user doesn't have write access to the FreshRSS folder, use a sudo
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, its 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
@ -58,7 +58,7 @@ If your local user doesn't have write access to the FreshRSS folder, use a sudo
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 youre 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
@ -67,7 +67,7 @@ If your local user doesn't have write access to the FreshRSS folder, use a sudo
## 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.
If your local user doesnt 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

View File

@ -2,17 +2,17 @@
FreshRSS is updated by the `./app/actualize_script.php` script. Knowing this, we can periodically trigger it to ensure up-to-date feeds.
**Note:** the update script won't update any particular feed more often than once every twenty minutes, so it doesn't make sense to trigger it much more frequently than that.
**Note:** the update script wont update any particular feed more often than once every twenty minutes, so it doesnt make sense to trigger it much more frequently than that.
**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:** the following examples assume that FreshRSS is installed to `/usr/share/FreshRSS`. Youll 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.
Youll 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.
It's advisable that you run the Cron job as your Web server user (often `www-data`).
Its advisable that you run the Cron job as your Web server user (often `www-data`).
### Example on Debian/Ubuntu
@ -25,7 +25,7 @@ Edit `/etc/crontab` and append the following line:
## Systemd as a trigger
Some systems can't use a Cron job, but they can use systemd. It's easy to configure it to mimic Cron's features.
Some systems cant use a Cron job, but they can use systemd. Its easy to configure it to mimic Crons features.
First you need to add a `freshrss.timer` file in `/etc/systemd/system/` with the following content:

View File

@ -16,7 +16,7 @@ The default user is used for the anonymous reading.
How to enable the anonymous reading mode:
* go to settings `Administration``Authentication`
* enable the checkbox of `Allow anonymous reading of the default user's articles`
* enable the checkbox of `Allow anonymous reading of the default users articles`
* when no user is logged in then the feeds of the default user is shown
## Change the default user

View File

@ -1,10 +1,10 @@
## Report a bug
Have you found a bug? Don't panic, here are some steps to report it with ease:
Have you found a bug? Dont panic, here are some steps to report it with ease:
1. Search for it on [the bug tracker](https://github.com/FreshRSS/FreshRSS/issues) (don't forget to use the search bar).
2. If you find a similar bug, don't hesitate to post a comment to add more importance to the related ticket.
3. If you didn't find it, [open a new ticket](https://github.com/FreshRSS/FreshRSS/issues/new).
1. Search for it on [the bug tracker](https://github.com/FreshRSS/FreshRSS/issues) (dont forget to use the search bar).
2. If you find a similar bug, dont hesitate to post a comment to add more importance to the related ticket.
3. If you didnt find it, [open a new ticket](https://github.com/FreshRSS/FreshRSS/issues/new).
If you have to create a new ticket, please try to keep in mind the following advice:
@ -24,20 +24,20 @@ For a more detailed guide on writing bug reports, please refer to [the in-depth
Would you like to fix a bug? For optimum coordination between collaborators, you should follow these indications:
1. Be sure the bug is associated with a ticket and indicate that you'll work on it.
1. Be sure the bug is associated with a ticket and indicate that youll work on it.
2. [Fork the project repository](https://help.github.com/articles/fork-a-repo/).
3. [Create a new branch](https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/). The name of the branch should be clear, and ideally 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/).
If you have to write code, please follow [our coding style recommendations](developers/02_First_steps.md).
**Tip:** if you're searching for easy-to-fix bugs, please 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.
**Tip:** if youre searching for easy-to-fix bugs, please 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
You have great ideas, yes! Don't be shy and open [a new ticket](https://github.com/FreshRSS/FreshRSS/issues/new) on our bug tracker to ask if we can implement it. The greatest ideas often come from the shyest suggestions!
You have great ideas, yes! Dont be shy and open [a new ticket](https://github.com/FreshRSS/FreshRSS/issues/new) on our bug tracker to ask if we can implement it. The greatest ideas often come from the shyest suggestions!
If your idea is nice, we'll have a look at it.
If your idea is nice, well have a look at it.
## Contribute to internationalization (i18n)

View File

@ -2,7 +2,7 @@
## First Steps
Start by creating your development environment. A guide to setting up FreshRSS's development environment can be found on [the appropriate page](02_First_steps.md).
Start by creating your development environment. A guide to setting up FreshRSSs development environment can be found on [the appropriate page](02_First_steps.md).
## After That

View File

@ -1,16 +1,16 @@
# Environment configuration (Docker)
FreshRSS is built with PHP and uses a homemade framework, Minz. The dependencies are directly included in the source code, so you don't need Composer.
FreshRSS is built with PHP and uses a homemade framework, Minz. The dependencies are directly included in the source code, so you dont need Composer.
There are various ways to configure your development environment. The easiest and most supported method is based on Docker, which is the solution documented below. If you already have a working PHP environment, you probably don't need it.
There are various ways to configure your development environment. The easiest and most supported method is based on Docker, which is the solution documented below. If you already have a working PHP environment, you probably dont need it.
We assume here that you use a GNU/Linux distribution, capable of running Docker. Otherwise, you'll have to adapt the commands accordingly.
We assume here that you use a GNU/Linux distribution, capable of running Docker. Otherwise, youll have to adapt the commands accordingly.
The commands that follow have to be executed in a console. They start by `$` when commands need to be executed as normal user, and by `#` when they need to be executed as root user. You don't have to type these characters. A path may be indicated before these characters to help you identify where they need to be executed. For instance, `app$ echo 'Hello World'` indicates that you have to execute `echo` command in the `app/` directory.
The commands that follow have to be executed in a console. They start by `$` when commands need to be executed as normal user, and by `#` when they need to be executed as root user. You dont have to type these characters. A path may be indicated before these characters to help you identify where they need to be executed. For instance, `app$ echo 'Hello World'` indicates that you have to execute `echo` command in the `app/` directory.
First, you need to install [Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/).
Once you're done, clone the repository with:
Once youre done, clone the repository with:
```sh
git clone https://github.com/FreshRSS/FreshRSS.git
@ -25,7 +25,7 @@ Then, the only command you need to know is the following:
make start
```
This might take some time while Docker downloads the image. If your user isn't in the `docker` group, you'll need to prepend the command with `sudo`.
This might take some time while Docker downloads the image. If your user isnt in the `docker` group, youll need to prepend the command with `sudo`.
**You can now access FreshRSS at [http://localhost:8080](http://localhost:8080).** Just follow the install process and select the SQLite database.
@ -35,7 +35,7 @@ You can stop the containers by typing <kbd>Control</kbd> + <kbd>c</kbd> or with
make stop
```
If you're interested in the configuration, the `make` commands are defined in the [`Makefile`](/Makefile).
If youre interested in the configuration, the `make` commands are defined in the [`Makefile`](/Makefile).
If you need to use a different tag image (default is `alpine`), you can set the `TAG` environment variable:
@ -65,9 +65,9 @@ If you want to create your own FreshRSS extension, take a look at the [extension
## Coding style
If you want to contribute to the source code, it's important to follow the project's coding style. The actual code doesn't always follow it throughout the project, but we should fix it every time an opportunity presents itself.
If you want to contribute to the source code, its important to follow the projects coding style. The actual code doesnt always follow it throughout the project, but we should fix it every time an opportunity presents itself.
Contributions which don't follow the coding style will be rejected as long as the coding style is not fixed.
Contributions which dont follow the coding style will be rejected as long as the coding style is not fixed.
## Spaces, tabs and other whitespace characters
@ -119,7 +119,7 @@ echo $a ? 1 : 0;
### Parentheses
There should be no spaces in between brackets. There should be no spaces before the opening bracket, except if it's after a keyword. There shouldn't be any spaces after the closing bracket, except if it's followed by a curly bracket.
There should be no spaces in between brackets. There should be no spaces before the opening bracket, except if its after a keyword. There shouldnt be any spaces after the closing bracket, except if its followed by a curly bracket.
```php
if ($a == 10) {
@ -133,7 +133,7 @@ if ((int)$a == 10) {
### With chained functions
It happens most of the time in Javascript files. When there are chained functions with closures and callback functions, it's hard to understand the code if not properly formatted. In those cases, we add a new indent level for the complete instruction and reset the indent for a new instruction on the same level.
It happens most of the time in Javascript files. When there are chained functions with closures and callback functions, its hard to understand the code if not properly formatted. In those cases, we add a new indent level for the complete instruction and reset the indent for a new instruction on the same level.
```javascript
// First instruction

View File

@ -4,7 +4,7 @@
If you are new to Git, here are some of the resources you might find useful:
* [GitHub's blog post](https://github.com/blog/120-new-to-git)
* [GitHubs blog post](https://github.com/blog/120-new-to-git)
* <http://try.github.com/>
* <http://sixrevisions.com/resources/git-tutorials-beginners/>
* <http://rogerdudler.github.io/git-guide/>

View File

@ -26,7 +26,7 @@ Note: it is quite conceivable that the functionalities of an extension can later
**TODO** : move to 02_Minz.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).
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 dont need to use a feature in your extension (if you dont need to translate your extension, no need to know more about the `Minz_Translate` module for example).
### MVC Architecture
@ -214,13 +214,13 @@ This part [is explained here](/docs/en/internationalization.md).
## Write an extension for FreshRSS
Here we are! We've talked about the most useful features of Minz and how to run FreshRSS correctly and it's about time to address the extensions themselves.
Here we are! Weve talked about the most useful features of Minz and how to run FreshRSS correctly and its about time to address the extensions themselves.
An extension allows you to easily add functionality to FreshRSS without having to touch the core of the project directly.
### 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:
When working on an extension, its 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"
```
@ -266,7 +266,7 @@ In addition, it is good to have a `LICENSE` file indicating the license under wh
The `metadata.json` file defines your extension through a number of important elements. It must contain a valid JSON array containing the following entries:
* `name`: the name of your extension
* `author`: your name, your e-mail address ... but there is no specific format to adopt
* `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`
@ -291,11 +291,11 @@ It must define some key elements to be loaded by the extension system:
1. The class must define the `init` method. This method is called **only** if the extension is loaded. Its purpose is to initialize the extension and its behavior during every page load.
The `Minz_Extension` abstract class defines a set of methods that can be overridden to fit your needs:
* the `install` method is called when the user enables the extension in the configuration page. It must return _true_ when successful and a string containing an error message when not. Its purpose is to prepare FreshRSS for the extension (adding a table to the database, creating a folder tree, ...).
* the `uninstall` method is called when the user disables the extension in the configuration page. It must return _true_ when successful and a string containing an error message when not. Its purpose is to clean FreshRSS (removing a table from the database, deleting a folder tree, ...). Usually it reverts changes introduced by the `install` method.
* the `install` method is called when the user enables the extension in the configuration page. It must return _true_ when successful and a string containing an error message when not. Its purpose is to prepare FreshRSS for the extension (adding a table to the database, creating a folder tree, ).
* the `uninstall` method is called when the user disables the extension in the configuration page. It must return _true_ when successful and a string containing an error message when not. Its purpose is to clean FreshRSS (removing a table from the database, deleting a folder tree, ). Usually it reverts changes introduced by the `install` method.
* the `handleConfigureAction` method is called when a user loads the extension configuration panel. It contains the logic to validate and store the submitted values defined in the `configure.phtml` file.
> If your extension code is scattered in different classes, you need to load their source before using them. Of course you could include the files manually, but it's more efficient to load them automatically. To do so, you just need to define the `autoload` method which will include them when needed. This method will be registered automatically when the extension is enabled.
> If your extension code is scattered in different classes, you need to load their source before using them. Of course you could include the files manually, but its more efficient to load them automatically. To do so, you just need to define the `autoload` method which will include them when needed. This method will be registered automatically when the extension is enabled.
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.
@ -311,7 +311,7 @@ The `Minz_Extension` abstract class defines another set of methods that should n
* the `setUserConfiguration` method stores the extension configuration for the current user.
* the `removeUserConfiguration` method removes the extension configuration for the current user.
> Note that if you modify the later set of methods, you might break the extension system. Thus making FreshRSS unusable. So it's highly recommended to let those unmodified.
> Note that if you modify the later set of methods, you might break the extension system. Thus making FreshRSS unusable. So its highly recommended to let those unmodified.
### The "hooks" system
@ -332,7 +332,7 @@ 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.
* `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 doesnt 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.
* `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.
* `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.

View File

@ -12,7 +12,7 @@ make test
This command downloads the PHPUnit binary and verifies its checksum. If the verification fails, the file is deleted. In this case, you should [open an issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let maintainers know about the problem.
Then, it executes PHPUnit in a Docker container. If you don't use Docker, you can run the command directly with:
Then, it executes PHPUnit in a Docker container. If you dont use Docker, you can run the command directly with:
```sh
NO_DOCKER=true make test

View File

@ -7,7 +7,7 @@
The easiest way to create a theme is by copying and modifying the base theme (or another of the pre-installed themes). The base theme can be found in [/p/themes/base-theme](https://github.com/FreshRSS/FreshRSS/tree/edge/p/themes/base-theme). Themes require:
- a **metadata.json** file to describe the theme.
- a **loader.gif** file to use as a loading icon (assuming .loading's background has not been overridden)
- a **loader.gif** file to use as a loading icon (assuming .loadings background has not been overridden)
- an **icons** folder containing .svg, .ico, and .png files to override existing icons
- a **thumbs** folder containing a file, **original.png** that will be used as the preview for the theme
@ -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 themes folder. Use files with the same name as the default icon to override them.
## Template file

View File

@ -1,8 +1,8 @@
# Opening a pull request
So you want to propose a patch to the community? It's time to open a [pull request](https://github.com/FreshRSS/FreshRSS/pulls)!
So you want to propose a patch to the community? Its time to open a [pull request](https://github.com/FreshRSS/FreshRSS/pulls)!
When you open a PR, your message will be prefilled with a message based on [a template](https://github.com/FreshRSS/FreshRSS/blob/edge/docs/pull_request_template.md). It contains a checklist to make sure you didn't forget anything. It is very important to verify you did everything mentioned so documentation is up-to-date, the commit history stays clear and the code is always stable.
When you open a PR, your message will be prefilled with a message based on [a template](https://github.com/FreshRSS/FreshRSS/blob/edge/docs/pull_request_template.md). It contains a checklist to make sure you didnt forget anything. It is very important to verify you did everything mentioned so documentation is up-to-date, the commit history stays clear and the code is always stable.
The rest of this document explains specific points.
@ -12,11 +12,11 @@ The rest of this document explains specific points.
Rebasing a branch is useful to make sure your code is based on the most recent version of FreshRSS and there are no conflicts. You have two ways to do that.
If you have any doubt, please let us know and we'll help you! We all began with Git one day and it's not an easy thing to work with.
If you have any doubt, please let us know and well help you! We all began with Git one day and its not an easy thing to work with.
### Rebasing
Rebasing is the cleanest method because the Git history will be completely linear and consequently easier to read and navigate. It might also be more difficult if you're not at ease with Git since conflicts are harder to resolve.
Rebasing is the cleanest method because the Git history will be completely linear and consequently easier to read and navigate. It might also be more difficult if youre not at ease with Git since conflicts are harder to resolve.
Note that you should never rebase a branch if someone else is working on it. Otherwise, since it rewrites the history, it can be a real mess to sort it out.
@ -33,7 +33,7 @@ If you feel confident, you can use `git rebase -i edge` to rewrite your history
### Merging
If you prefer, you can simply merge `edge` into your own branch. Conflicts might be easier to resolve, but your Git history will be less readable. Don't worry, we'll take care of it before merging your PR back into `edge`.
If you prefer, you can simply merge `edge` into your own branch. Conflicts might be easier to resolve, but your Git history will be less readable. Dont worry, we will take care of it before merging your PR back into `edge`.
To merge `edge`:
@ -46,13 +46,13 @@ git merge edge # merge edge into your branch
## How to write a Git commit message
It's important to have proper commit messages in order to facilitate later debugging, so please read the following advice. Commit messages should explain the choices made in the past (the “why?”)
Its important to have proper commit messages in order to facilitate later debugging, so please read the following advice. Commit messages should explain the choices made in the past (the “why?”)
The first line should start with a verb (e.g., "Add") and explain the objective of the commit in few words. It's usually less than 50 characters so it remains concise. You can consider this line the subject of your commit. Think of it as the second part of a sentence that starts with the words "This commit will."
The first line should start with a verb (e.g., “Add”) and explain the objective of the commit in few words. Its usually less than 50 characters so it remains concise. You can consider this line the subject of your commit. Think of it as the second part of a sentence that starts with the words “This commit will.”
* This commit will *add feature X*
Then, insert a blank line, and start to write the body. It's usually wrapped at 72 characters, but you are pretty free in the tone of the message. The body is the place where you can clarify the context of your patch. For instance, you can explain what you were doing when you identified a bug, or the problem you had before your patch. Providing this information helps other developers understand why a specific choice was made, especially when a patch introduces a bug that is identified months later.
Then, insert a blank line, and start to write the body. Its usually wrapped at 72 characters, but you are pretty free in the tone of the message. The body is the place where you can clarify the context of your patch. For instance, you can explain what you were doing when you identified a bug, or the problem you had before your patch. Providing this information helps other developers understand why a specific choice was made, especially when a patch introduces a bug that is identified months later.
You also can add references (e.g., the URL to the initial ticket in the bug tracker, or a reference to some forum explaining a point).
@ -60,16 +60,16 @@ You can find more information about commit messages [on this blog post](https://
## How to write tests
FreshRSS has few tests for now, but we're working on it. We added this point to the checklist to help us to write more tests, and we would really appreciate it if you wrote a test that ensures your patch is working.
FreshRSS has few tests for now, but were working on it. We added this point to the checklist to help us to write more tests, and we would really appreciate it if you wrote a test that ensures your patch is working.
We use [PHPUnit](https://phpunit.de/) version 7.5 ([documentation](https://phpunit.readthedocs.io/en/7.5/)).
You'll find more information on how to run tests [in this document](03_Running_tests.md).
Youll find more information on how to run tests [in this document](03_Running_tests.md).
Feel free to ask us for assistance. Not everything will be easy to test, so don't spend too much time on this.
Feel free to ask us for assistance. Not everything will be easy to test, so dont spend too much time on this.
## Why you should write documentation
A friendly project should have correct and complete documentation, so newcomers don't have to ask too many questions, and users can find answers to their problems. The documentation should not be written “later” or chances are it'll never be.
A friendly project should have correct and complete documentation, so newcomers dont have to ask too many questions, and users can find answers to their problems. The documentation should not be written “later” or chances are itll never be.
Our documentation can still be improved quite a bit, so you're very welcome if you want to help.
Our documentation can still be improved quite a bit, so youre very welcome if you want to help.

View File

@ -1,9 +1,9 @@
# 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
In order to get as much feedback as possible before a release, its 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.
Its also recommended to make the announcement on mailing@freshrss.org.
## Check the dev status
@ -27,7 +27,7 @@ $ git push && git push --tags
## Updating `update.freshrss.org`
It's important to update update.freshrss.org since this is the default service for automatic FreshRSS updates.
Its important to update update.freshrss.org since this is the default service for automatic FreshRSS updates.
The repository managing the code is located on GitHub: [FreshRSS/update.freshrss.org](https://github.com/FreshRSS/update.freshrss.org/).
@ -35,7 +35,7 @@ The repository managing the code is located on GitHub: [FreshRSS/update.freshrss
The scripts are located in the `./scripts/` directory and must take the form `update_to_x.y.z.z.php`. This directory also contains `update_to_dev.php` intended for updates of the `edge` branch (this script must not include code specific to a particular version!) and `update_util.php`, which contains a list of functions useful for all scripts.
In order to write a new script, it's better to copy/paste the last version or to start from `update_to_dev.php`. The first thing to do is to define the URL from which the FreshRSS package will be downloaded (`PACKAGE_URL`). The URL is in the form of `https://codeload.github.com/FreshRSS/FreshRSS/zip/x.y.z`.
In order to write a new script, its better to copy/paste the last version or to start from `update_to_dev.php`. The first thing to do is to define the URL from which the FreshRSS package will be downloaded (`PACKAGE_URL`). The URL is in the form of `https://codeload.github.com/FreshRSS/FreshRSS/zip/x.y.z`.
There are then 5 functions that have to be executed:
@ -47,9 +47,9 @@ There are then 5 functions that have to be executed:
## Updating the versions file
Once the script has been written and versioned, it's necessary to update the `./versions.php' file which contains a mapping table indicating which versions are updated to which other versions.
Once the script has been written and versioned, its necessary to update the `./versions.php' file which contains a mapping table indicating which versions are updated to which other versions.
Here's an example of a `versions.php` file:
Heres an example of a `versions.php` file:
```php
<?php
@ -57,7 +57,7 @@ return array(
// STABLE
'0.8.0' => '1.0.0',
'0.8.1' => '1.0.0',
'1.0.0' => '1.0.1', // doesn't exist (yet)
'1.0.0' => '1.0.1', // doesnt exist (yet)
// DEV
'1.1.2-dev' => 'dev',
'1.1.3-dev' => 'dev',
@ -65,21 +65,21 @@ return array(
);
```
And here's how this table works:
And heres how this table works:
* on the left you can find the N version, on the right the N+1 version;
* the `x.y.z.z-dev` versions are **all** updated to `edge`;
* stable versions are updated to stable versions;
* it's possible to skip several versions at once, provided that the update scripts support it;
* it's advisable to indicate the correspondence of the current version to its potential future version by specifying that this version does not yet exist. As long as the corresponding script does not exist, nothing will happen.
* its possible to skip several versions at once, provided that the update scripts support it;
* its advisable to indicate the correspondence of the current version to its potential future version by specifying that this version does not yet exist. As long as the corresponding script does not exist, nothing will happen.
It's **very strongly** recommended to keep this file organized according to version numbers by separating stable and dev versions.
Its**very strongly** recommended to keep this file organized according to version numbers by separating stable and dev versions.
## Deployment
Before updating update.freshrss.org, it's better to test with dev.update.freshrss.org, which corresponds to pre-production. So update dev.update.freshrss.org and change the `FRESHRSS_UPDATE_WEBSITE` URL of your FreshRSS instance. Start the update and check that it's running correctly.
Before updating update.freshrss.org, its better to test with dev.update.freshrss.org, which corresponds to pre-production. So update dev.update.freshrss.org and change the `FRESHRSS_UPDATE_WEBSITE` URL of your FreshRSS instance. Start the update and check that its running correctly.
When you're satisfied, update update.freshrss.org with the new script, test it again, and then move on.
When youre satisfied, update update.freshrss.org with the new script, test it again, and then move on.
## Updating the FreshRSS services
@ -90,7 +90,7 @@ Two services need to be updated immediately after the update.
## Publicly announce the release
When everything's working, it's time to announce the release to the world!
When everythings working, its time to announce the release to the world!
* on GitHub by creating[a new release](https://github.com/FreshRSS/FreshRSS/releases/new)
* on the freshrss.org blog, at least for stable versions (write the article on[FreshRSS/freshrss.org](https://github.com/FreshRSS/freshrss.org))

View File

@ -7,7 +7,7 @@ Additionally [page about our Google Reader compatible API](06_GoogleReader_API.m
## RSS clients
There are many RSS clients that support the Fever API, but they seem to understand the Fever 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.
If your favourite client doesnt work properly with this API, please create an issue and well have a look.
But we can **only** do that for free clients.
### Usage & Authentication
@ -80,7 +80,7 @@ This should give:
"last_refreshed_on_time": "1520013061"
}
```
Perfect, you're now authenticated and you can start testing the more advanced features. To do so, change the URL and append the possible API actions to your request parameters. Please refer to the [original Fever documentation](https://feedafever.com/api) for more information.
Perfect, youre now authenticated and you can start testing the more advanced features. To do so, change the URL and append the possible API actions to your request parameters. Please refer to the [original Fever documentation](https://feedafever.com/api) for more information.
Some basic calls are:

View File

@ -6,7 +6,7 @@ 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 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.
If your favourite client doesnt work properly with this API, please create an issue and well have a look.
But we can **only** do that for free clients.
## Usage & Authentication

View File

@ -1,17 +1,17 @@
# Reporting a bug or a suggestion
Despite the care given to FreshRSS, it's still possible that bugs occur. Development is dynamic, so issues can be corrected quickly. You might also have a feature in mind that doesn't yet exist. Regardless whether your idea seems silly, far-fetched, useless or too specific, please don't hesitate to propose it to us! "Ideas in the air" often find an attentive ear. It's new external perspectives that make the project evolve the most.
Despite the care given to FreshRSS, its still possible that bugs occur. Development is dynamic, so issues can be corrected quickly. You might also have a feature in mind that doesnt yet exist. Regardless whether your idea seems silly, far-fetched, useless or too specific, please dont hesitate to propose it to us! “Ideas in the air” often find an attentive ear. Its new external perspectives that make the project evolve the most.
If you're convinced that you should be heard, here's how you can go about it.
If youre convinced that you should be heard, heres how you can go about it.
## On GitHub
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!
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. Lets 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.
2. Start by checking if a similar request hasnt 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.
4. Finally, write your request. If youre fluent in English, its 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
@ -29,17 +29,17 @@ Not everyone likes or uses GitHub for a variety of legitimate reasons. That is w
Here are some tips to help you present your bug report or suggestion:
* **Pay attention to spelling**. Even if it's not always easy, try your best!
* **Give an explicit title to your request**, even if it's a bit long. This not only helps us understand your request, but also to find your ticket later.
* **One request = one ticket.** You may have lots of ideas while being afraid to spam the bug manager: it doesn't matter. It's better to have a few too many tickets than too many requests in one. We'll close and consolidate requests when possible.
* **Pay attention to spelling**. Even if its not always easy, try your best!
* **Give an explicit title to your request**, even if its a bit long. This not only helps us understand your request, but also to find your ticket later.
* **One request = one ticket.** You may have lots of ideas while being afraid to spam the bug manager: it doesnt matter. Its better to have a few too many tickets than too many requests in one. Well close and consolidate requests when possible.
* If you report a bug, think about **providing us with the FreshRSS logs** (accessible in the FreshRSS `data/log/` folder) and the **PHP logs** (the location may vary by distribution, but consider searching in `/var/log/httpd` or `/var/log/apache`).
* If you can't find the log files, specify it in your ticket so we know you've already searched.
* If you cant find the log files, specify it in your ticket so we know youve already searched.
* Not all bugs require logs, but if you have any doubts, it is better to provide them to us. Logs are important and very useful for debugging!
* The logs may reveal confidential information, so **be careful not to disclose anything sensitive.**
In addition, when facing a bug, you're encouraged to follow this message format (from the [Sam & Max website](http://sametmax.com/template-de-demande-daide-en-informatique/):
In addition, when facing a bug, youre encouraged to follow this message format (from the [Sam & Max website](http://sametmax.com/template-de-demande-daide-en-informatique/):
### What's my goal?
### Whats my goal?
Give the general context of what you were trying to do.
@ -49,7 +49,7 @@ Explain step by step what you have done so that we can reproduce the bug.
### What results have I achieved?
The bug: what you see that shouldn't have happened. Here you can provide the logs.
The bug: what you see that shouldnt have happened. Here you can provide the logs.
### What was the expected result?
@ -63,4 +63,4 @@ Remember to give the following information if you know it:
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?
5. Which distribution runs on the server? And which version?

View File

@ -4,7 +4,7 @@ Thanks to our contributors, FreshRSS is translated into more than 15 languages.
## Overview
It is common (and that's an understatement) to want to show some text to the user. 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.
It is common (and thats an understatement) to want to show some text to the user. 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` module, which allows dynamic translation of FreshRSS. 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 `app/i18n/`. For example, English language files are located in [`app/i18n/en/`](/app/i18n/en/). There are seven different files:
@ -19,7 +19,7 @@ The solution is to use the `Minz_Translate` module, which allows dynamic transla
This organization makes it possible to avoid a single huge translation file.
The translation files are quite simple: it's only a matter of returning a PHP array containing the translations. As an example, here's an extract from [`app/i18n/fr/gen.php`](/app/i18n/fr/gen.php):
The translation files are quite simple: its only a matter of returning a PHP array containing the translations. As an example, heres an extract from [`app/i18n/fr/gen.php`](/app/i18n/fr/gen.php):
```php
<?php
@ -42,23 +42,23 @@ return array(
Each value can be referenced by a key: it consists of a series of identifiers separated by dots. The first identifier indicates from which file to extract the translation, while the following ones indicate array entries. Thus, the `gen.freshrss.about` key is referencing the `about` entry from the `freshrss` entry which is part of the main array returned by the `gen.php` file. This allows us to further organize our translation files.
You should not have to write the array by yourself and we provide several commands to ease the manipulation of these files. Let's see some common use cases.
You should not have to write the array by yourself and we provide several commands to ease the manipulation of these files. Lets see some common use cases.
## Add support for a new language
If you want to add support for a language which isn't supported by FreshRSS yet, you can run this command:
If you want to add support for a language which isnt supported by FreshRSS yet, you can run this command:
```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.
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 youre not sure of the code, Wikipedia might be a good start to find it or you can ask us for help too.
The command will create a new subfolder under `app/i18n/` and copy the strings from the reference language (i.e. English). It will also mark all the translations with a special tag represented by a comment: `// TODO - Translation`. We'll see in the next section how to translate the strings.
The command will create a new subfolder under `app/i18n/` and copy the strings from the reference language (i.e. English). It will also mark all the translations with a special tag represented by a comment: `// TODO - Translation`. Well see in the next section how to translate the strings.
## Translate the interface
You might have noticed some strings are not yet translated from English even though you've selected a different language. This is because we mostly speak English or French and it's pretty difficult to us to speak all the different languages!
You might have noticed some strings are not yet translated from English even though youve selected a different language. This is because we mostly speak English or French and its pretty difficult to us to speak all the different languages!
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:
@ -66,7 +66,7 @@ To update a string, you just have to open its file, find the string, and change
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).
It will remove the comments on the lines that youve changed, and will reformat the file correctly. If youve made any mistakes, it will fix them automatically or it will tell you it cant (well… the command will dramatically fail without any damage, dont 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:
@ -86,7 +86,7 @@ This command adds an IGNORE comment on the translation so the key can be conside
## Add/remove/update a key
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:
If youre 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: dont do that, its very painful. We provide another command:
```sh
make i18n-add-key key=the.key.to.add value='Your string in English'
@ -100,7 +100,7 @@ Conversely, you may want to remove a key that is no longer used in the applicati
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:
Finally, if the English version of a string needs to be changed, you need to consider two cases. If the change doesnt impact the meaning of the sentence, and therefore other languages dont 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:
```sh
make i18n-update-key key=the.key.to.change value='The new string in English'
@ -118,11 +118,11 @@ To access these translations, you must use the `_t()` function (which is a short
</p>
```
The function expects a translation key, but there's a 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, an `_` is associated with the value `FreshRSS`: this means that there is no need to write `_t('gen.freshrss._')` but `_t('gen.freshrss')` suffices.
The function expects a translation key, but theres a 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. Its pretty hard to explain but very simple to understand. In the example given above, an `_` is associated with the value `FreshRSS`: this means that there is no need to write `_t('gen.freshrss._')` but `_t('gen.freshrss')` suffices.
`_t()` can take any number of variables. The variables will then be replaced in the translation if it contains some “conversion specifications” (usually `%s` or `%d`). You can learn more about these specifications in the [`sprintf()` PHP function documentation](https://www.php.net/manual/function.sprintf).
For instance, the English translation for `gen.auth.keep_logged_in` is `Keep me logged in <small>(%s days)</small>`. It means this translation expects a string to be passed as an argument to the `t()` function (well, it should be a `%d` because we want a number here, but it doesn't matter). For instance:
For instance, the English translation for `gen.auth.keep_logged_in` is `Keep me logged in <small>(%s days)</small>`. It means this translation expects a string to be passed as an argument to the `t()` function (well, it should be a `%d` because we want a number here, but it doesnt matter). For instance:
```php
<label>

View File

@ -1,4 +1,4 @@
Learning how to handle a new application is not always easy. We've tried to make FreshRSS as intuitive as possible, but you might still need a little help to master the program.
Learning how to handle a new application is not always easy. Weve tried to make FreshRSS as intuitive as possible, but you might still need a little help to master the program.
This section will guide you to the pages you need to get started. The order is tailored to newcomers.
@ -14,7 +14,7 @@ Once you have added your feeds to FreshRSS, it is time to read them. There are t
2. [The global view](03_Main_view.md#global-view) shows you an overview of the status of your feeds in one glance
3. [The reader view](03_Main_view.md#reader-view) offers you a comfortable reading experience
Now that you've mastered basic use, it's time to configure FreshRSS to improve your reading experience. It's highly configurable, so it's recommended to play around with them to find a configuration that suits you well. Here are a few resources to help you improve your daily FreshRSS experience:
Now that youve mastered basic use, its time to configure FreshRSS to improve your reading experience. Its highly configurable, so its recommended to play around with them to find a configuration that suits you well. Here are a few resources to help you improve your daily FreshRSS experience:
* [Organize your feeds in categories](04_Subscriptions.md#feed-management)
* [Change the home page](05_Configuration.md#changing-the-view)

View File

@ -2,14 +2,14 @@ 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 feeds view.
## Article List
By default, the normal view includes six items per article. From left to right:
* **Read status:** An envelope icon to show if the article has been read or not. Closed envelopes are unread, open envelopes 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.
* **Feed name:** The name of the feed that the article is from. Clicking the feed name will move to that feeds view in normal view.
* **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.
@ -19,14 +19,14 @@ By default, the normal view includes six items per article. From left to right:
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
* **See website:** Open the feeds website in another tab
* **Manage:** Configure the feed
* **Actualize:** Force-update the feed
* **Mark as read:** Mark all items in the feed as read
# 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 feeds statuses at once. Feeds and categories are shown with the number of unread articles next to them. Clicking a feeds name will open it in a view similar to normal view.
# Reader view
@ -111,7 +111,7 @@ You can also target a different user by adding their username to the query strin
### HTTP authentication
When using HTTP authentication, the syntax in the two previous sections is unusable. You'll need to provide your credentials to the scheduled task. **Note that this method is highly discouraged since it means that your credentials will be in plain sight!**
When using HTTP authentication, the syntax in the two previous sections is unusable. Youll need to provide your credentials to the scheduled task. **Note that this method is highly discouraged since it means that your credentials will be in plain sight!**
```cron
0 * * * * curl -u alice:password123 'https://freshrss.example.net/i/?c=feed&a=actualize'
@ -119,7 +119,7 @@ When using HTTP authentication, the syntax in the two previous sections is unusa
## Manual update
If you can't or don't want to use the automatic method, you can update manually. There are two methods for updating all or some of the feeds.
If you cant or dont want to use the automatic method, you can update manually. There are two methods for updating all or some of the feeds.
### Complete update
@ -141,7 +141,7 @@ This update occurs on the selected feed only. To trigger it, simply click on the
## 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.
When the number of articles stored by FreshRSS inevitably grows larger, its 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
@ -167,7 +167,7 @@ There are several methods to filter articles by feed:
Each article has two attributes that can be combined. The first attribute indicates whether or not the article has been read. The second attribute indicates if the article was marked as favorite or not.
In version 0.7, attribute filters are available in the article display dropdown list. With this version, it's not possible to combine filters. For instance, it's not possible to display only read and favorite articles.
In version 0.7, attribute filters are available in the article display dropdown list. With this version, its not possible to combine filters. For instance, its not possible to display only read and favorite articles.
![Attribute filters in 0.7](../img/users/status.filter.0.7.png)
@ -240,7 +240,7 @@ For example, you can enter multiple instances of `f:`, `author:`, `intitle:`, `i
Combining several search criteria implies a logical *and*, but the keyword ` OR `
can be used to combine several search criteria with a logical *or* instead: `author:Dupont OR author:Dupond`
When combining multiple negative operators (e.g. `!intitle:'thing1' AND !intitle:'thing2'`), you'll need to consider [De Morgan's laws](https://en.wikipedia.org/wiki/De_Morgan%27s_laws). See [this GitHub comment](https://github.com/FreshRSS/FreshRSS/issues/3236#issuecomment-891219460) for more details on the usage of `AND` vs `OR` when using combining multiple negative operators.
When combining multiple negative operators (e.g. `!intitle:'thing1' AND !intitle:'thing2'`), youll need to consider [De Morgans laws](https://en.wikipedia.org/wiki/De_Morgan%27s_laws). See [this GitHub comment](https://github.com/FreshRSS/FreshRSS/issues/3236#issuecomment-891219460) for more details on the usage of `AND` vs `OR` when using combining multiple negative operators.
### By sorting by date
@ -261,7 +261,7 @@ Display the user queries drop-down by clicking the button next to the state butt
Then click on the bookmark action.
Congratulations, you're done!
Congratulations, youre done!
### Using a bookmarked query

View File

@ -10,7 +10,7 @@
## 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 feeds 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
@ -33,15 +33,15 @@ This section will let you override the default settings for feed archiving and u
### Login
Some feeds require a username/password submitted over HTTP. These usually aren't needed for feeds.
Some feeds require a username/password submitted over HTTP. These usually arent needed for feeds.
### Advanced
#### Retrieve a truncated feed from within FreshRSS
This question comes up regularly, so we'll try to clarify how one can retrieve a truncated RSS feed with FreshRSS. Please note that the process is absolutely not user friendly, but it works. :)
This question comes up regularly, so well try to clarify how one can retrieve a truncated RSS feed with FreshRSS. Please note that the process is absolutely not user friendly, but it works. :)
Please be aware that this way you'll generate much more traffic to the originating sites, and they might block you accordingly. FreshRSS performance is also negatively affected, because you'll have to fetch the full article content one by one. So it's a feature to use sparingly!
Please be aware that this way youll generate much more traffic to the originating sites, and they might block you accordingly. FreshRSS performance is also negatively affected, because youll have to fetch the full article content one by one. So its a feature to use sparingly!
The "Article CSS selector on original website" 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). The basics are explained [here](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors).
@ -50,7 +50,7 @@ The "Article CSS selector on original website" corresponds to the "path" consis
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```.
Here we find that the block that encompasses nothing but the content of the article is ```<div class="content clearfix">```. Well only use the `.content` class here. Nevertheless, as said above, its best to start the path with an id. If we go back to the parent block, we find ```<div id="article">``` and thats perfect! The path will be ```#article .content```.
##### Add the corresponding classes to the article CSS path on the feed configuration page
@ -63,7 +63,7 @@ Examples:
##### Combining CSS Classes
Let's say we have an article which contains ads, and we do not want to have those ads retrieved by FreshRSS. Example HTML:
Lets say we have an article which contains ads, and we do not want to have those ads retrieved by FreshRSS. Example HTML:
```html
<div id="article">
@ -78,7 +78,7 @@ Let's say we have an article which contains ads, and we do not want to have thos
</div>
```
In this case it's possible to combine multiple CSS selectors with a comma: ```#article p.content, #article h2```
In this case its possible to combine multiple CSS selectors with a comma: ```#article p.content, #article h2```
#### Retrieve a truncated feed with external tools

View File

@ -4,16 +4,16 @@
## Language
FreshRSS is currently available in 14 languages. After confirming your choice, the interface will be displayed in your preferred language.
Depending on the language chosen, parts of the interface may not be not translated yet. If you're willing to help translate
Depending on the language chosen, parts of the interface may not be not translated yet. If youre willing to help translate
the missing bits or would like to add a new language, please take a look at how you can [contribute to the project](../contributing.md#contribute-to-internationalization-i18n).
Some parts of FreshRSS aren't translated and aren't intended to be translated either. For now, this includes the logs visible in the application as well as the log generated by automatic update scripts.
Some parts of FreshRSS arent translated and arent intended to be translated either. For now, this includes the logs visible in the application as well as the log generated by automatic update scripts.
Available languages are: cz, de, en, es, fr, he, it, ko, nl, oc, pt-br, ru, tr, zh-cn.
## Theme
There's no accounting for tastes, which is why FreshRSS offers eight official themes:
Theres no accounting for tastes, which is why FreshRSS offers eight official themes:
* *Blue Lagoon* by **Mister aiR**
* *Dark* by **AD**
@ -24,13 +24,13 @@ There's no accounting for tastes, which is why FreshRSS offers eight official th
* *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).
If you cant find any themes you like, its always possible to [create your own](../developers/04_Frontend/02_Design.md).
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
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:
Some people prefer short lines of text, while others prefer to maximize the available screen space. To satisfy the maximum number of people, its 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
@ -46,7 +46,7 @@ Please note that this section only affects normal view.
Each article is rendered with a header (top line) and a footer (bottom line).
In that section, you can choose what will be displayed in those.
If you disable every item in the top line, you'll still be able to see it since
If you disable every item in the top line, youll still be able to see it since
it contains the feed name and the article title. But if you do the same thing for
the bottom line, it will be empty.
@ -62,7 +62,7 @@ By default, FreshRSS displays buttons to ease the article navigation when browsi
![navigation button configuration](../img/users/configuration.navigation.button.png)
If you don't use those buttons because you never browse on mobile or because you browse with gestures, you can disable them from the interface.
If you dont use those buttons because you never browse on mobile or because you browse with gestures, you can disable them from the interface.
# Reading
@ -82,11 +82,11 @@ This will set images to load as they are viewed. This can save data, but will ca
## Archiving
These are the global options for fetching and retaining articles from feeds. They can be overwridden by individual feed's settings.
These are the global options for fetching and retaining articles from feeds. They can be overwridden by individual feeds settings.
## Maintenance
This allows for purging/optimizing the current user's articles in the database.
This allows for purging/optimizing the current users articles in the database.
# Sharing
@ -115,7 +115,7 @@ To remove an item from the list, follow those simple steps:
To ease the use of the application, FreshRSS comes with a lot of predefined keyboard shortcuts.
They allow actions to improve the user experience with a keyboard.
Of course, if you're not satisfied with the key mapping, you can change you configuration to fit your needs.
Of course, if youre not satisfied with the key mapping, you can change you configuration to fit your needs.
There are 4 types of shortcuts:
@ -124,13 +124,13 @@ There are 4 types of shortcuts:
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.
Its 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, its selected automatically though.
The same process applies to the user queries.
Be aware that there is no validation on the selected shortcuts.
This means that if you assign a shortcut to more than one action, you'll end up with some unexpected behavior.
This means that if you assign a shortcut to more than one action, youll end up with some unexpected behavior.
# User queries

View File

@ -2,7 +2,7 @@ We may not have answered all of your questions in the previous sections. The FAQ
## What is `/i` at the end of the application URL?
Of course, ```/i``` has a purpose! It's used for performance and usability:
Of course, ```/i``` has a purpose! Its used for performance and usability:
* It allows for serving icons, images, styles and scripts without cookies. Without that trick, those files would be downloaded more often, especially when form authentication is used. Also, HTTP requests would be heavier.
* The ```./p/``` public root can be served without any HTTP access restrictions. Whereas it could be implemented in ```./p/i/```.
@ -13,7 +13,7 @@ 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.
As explained in the [security section](../admins/09_AccessControl.html), its 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`.
@ -25,9 +25,9 @@ The feed syntax can be invalid, it can be unrecognized by the SimplePie library,
The first step is to identify what causes the problem.
Here are the steps to follow:
1. __Verify if the feed syntax is valid__ with the [W3C on-line tool](https://validator.w3.org/feed/ "RSS and Atom feed validator"). If it's not valid, there's nothing we can do.
1. __Verify SimplePie validation__ with the [SimplePie on-line tool](https://simplepie.org/demo/ "SimplePie official demo"). If it's not recognized, there's nothing we can do.
1. __Verify FreshRSS integration__ with the [demo](https://demo.freshrss.org "FreshRSS official demo"). If it's not working, you need to [create an issue on Github](https://github.com/FreshRSS/FreshRSS/issues/new "Create an issue for FreshRSS") so we can have a look at it. If it's working, there's probably something fishy with the hosting server.
1. __Verify if the feed syntax is valid__ with the [W3C on-line tool](https://validator.w3.org/feed/ "RSS and Atom feed validator"). If its not valid, theres nothing we can do.
1. __Verify SimplePie validation__ with the [SimplePie on-line tool](https://simplepie.org/demo/ "SimplePie official demo"). If its not recognized, theres nothing we can do.
1. __Verify FreshRSS integration__ with the [demo](https://demo.freshrss.org "FreshRSS official demo"). If its not working, you need to [create an issue on Github](https://github.com/FreshRSS/FreshRSS/issues/new "Create an issue for FreshRSS") so we can have a look at it. If its working, theres probably something fishy with the hosting server.
## How can you change a forgotten password?
@ -44,7 +44,7 @@ For more information on that matter, please refer to the [dedicated documentatio
## Permissions under SELinux
Some Linux distribution, like Fedora or RedHat Enterprise Linux, have SELinux enabled. This acts similar to a firewall application, so that applications can't write or modify files under certain conditions. While installing FreshRSS, step 2 can fail if the httpd process can't write to some data sub-directories. The following command should be executed as root to fix this problem:
Some Linux distribution, like Fedora or RedHat Enterprise Linux, have SELinux enabled. This acts similar to a firewall application, so that applications cant write or modify files under certain conditions. While installing FreshRSS, step 2 can fail if the httpd process cant write to some data sub-directories. The following command should be executed as root to fix this problem:
```sh
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/FreshRSS/data(/.*)?'

View File

@ -1,12 +1,12 @@
## Rejoignez-nous sur les listes de mailing
S'il vous manque des informations, n'hésitez pas à fouiller un peu la
Sil vous manque des informations, nhé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.
* Le premier mailing est destiné à linformation 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.
* Le deuxième mailing sadresse principalement aux développeurs.
[Rejoignez dev@freshrss.org](https://freshrss.org/mailman/listinfo/dev)
## Signaler un bug
@ -15,23 +15,23 @@ 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).
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é,
(noubliez pas dutiliser la barre de recherche).
2. Si vous constatez un bogue similaire, nhésitez pas à poster un
commentaire pour ajouter de limportance au ticket correspondant.
3. Si vous ne lavez 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 ?
* Soyez aussi exhaustif que possible dans la description : quavez-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 configuration de serveur : type d'hébergement, version PHP
* Votre configuration de serveur : type dhé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`)
@ -43,7 +43,7 @@ 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.
Le nom de la branche doit être clair, et idéalement préfixé par lidentifiant 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
@ -52,7 +52,7 @@ les collaborateurs, vous devrez suivre ces indications :
Si vous devez écrire du code, veuillez suivre [nos recommandations de style
de codage](developers/01_First_steps.md).
**Conseil :** si vous cherchez des bugs faciles à corriger, jetez un coup d'oeil à la vignette "[good first issue](https://github.com/FreshRSS/FreshRSS/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)".
**Conseil :** si vous cherchez des bugs faciles à corriger, jetez un coup doeil à la vignette « [good first issue](https://github.com/FreshRSS/FreshRSS/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) ».
## Soumettre une idée
@ -61,17 +61,17 @@ ticket](https://github.com/FreshRSS/FreshRSS/issues/new) sur notre tracker
bogue pour nous demander si nous pouvons le mettre en œuvre. Les plus
grandes idées viennent souvent des suggestions les plus timides !
Si votre idée est bonne, nous y jetterons un coup d'oeil.
Si votre idée est bonne, nous y jetterons un coup doeil.
## Contribuer à l'internationalisation (i18n)
## Contribuer à linternationalisation (i18n)
Si vous voulez améliorer l'internationalisation, ouvrez d'abord un nouveau
Si vous voulez améliorer linternationalisation, ouvrez dabord un nouveau
ticket et suivez les conseils de la section *Fixer un bogue*.
Les traductions sont disponibles dans les sous-répertoires de `./app/i18n/`.
Nous travaillons sur une meilleure façon de gérer l'internationalisation
mais n'hésitez pas à nous suggérer des idées !
Nous travaillons sur une meilleure façon de gérer linternationalisation
mais nhésitez pas à nous suggérer des idées !
## Contribuer à la documentation

View File

@ -3,38 +3,38 @@
## 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
pas besoin d'utiliser Composer.
dépendancessont directement incluses dans le code source, donc vous navez
pas besoin dutiliser Composer.
Il existe plusieurs façons de configurer votre environnement
dedéveloppement. La méthode la plus simple et la plus supportée est basée
surDocker. C'est la solution qui est documentée ci-dessous. Si vous avez
déjà unenvironnement PHP fonctionnel, vous n'en avez probablement pas
surDocker. Cest la solution qui est documentée ci-dessous. Si vous avez
déjà unenvironnement PHP fonctionnel, vous nen avez probablement pas
besoin.
Nous supposons ici que vous utilisez une distribution GNU/Linux, capable
d'exécuter Docker. Sinon, vous devrez adapter les commandes en conséquence.
dexécuter Docker. Sinon, vous devrez adapter les commandes en conséquence.
Les commandes qui suivent doivent être exécutées dans une console. Ils
commencent par `$` quand les commandes doivent être exécutées en tant
qu'utilisateur normal, et par `#` quand elles doivent être exécutées en tant
qu'utilisateur root. Vous n'avez pas besoin de taper ces caractères. Un
chemin d'accès peut être indiqué devant ces caractères pour vous aider à
quutilisateur normal, et par `#` quand elles doivent être exécutées en tant
quutilisateur root. Vous navez pas besoin de taper ces caractères. Un
chemin daccès peut être indiqué devant ces caractères pour vous aider à
identifier où ils doivent être exécutés. Par exemple, `app$ echo 'Hello
World'` indique que vous devez exécuter la commande `echo` dans le
répertoire `app/`.
Tout d'abord, vous devez installer
Tout dabord, vous devez installer
[Docker](https://docs.docker.com/install/linux/docker-ce/ubuntu/).
Une fois que c'est fait, clonez le dépôt de code de la manière suivante :
Une fois que cest fait, clonez le dépôt de code de la manière suivante :
```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
Notez que, pour contribuer, vous devrez dabord « forker » ce dépôt de code
(ou dépôt de code référent) et cloner votre « fork » à la place de ce
dépôt. Adaptez les commandes en conséquence.
@ -44,12 +44,12 @@ Ensuite, la seule commande que vous devez connaître est la suivante :
make start
```
Cela peut prendre un certain temps pour que Docker télécharge l'image
Cela peut prendre un certain temps pour que Docker télécharge limage
utilisée. Dans le cas où la commande échoue pour un problème de droit, il
faudra soit ajouter votre utilisateur au groupe `docker`, soit relancer la
commande en la préfixant par `sudo`.
**Vous pouvez maintenant accéder à FreshRSS à [http://localhost:8080](http://localhost:8080).** Suivez simplement le processus d'installation et sélectionnez la base de données SQLite.
**Vous pouvez maintenant accéder à FreshRSS à [http://localhost:8080](http://localhost:8080).** Suivez simplement le processus dinstallation et sélectionnez la base de données SQLite.
Vous pouvez arrêter les conteneurs en tapant <kbd>Control</kbd> + <kbd>c</kbd> ou avec la commande suivante, dans un autre terminal:
@ -60,9 +60,9 @@ make stop
Si la configuration vous intéresse, les commandes `make' sont définies dans
le fichier [`Makefile`](/Makefile).
Si vous avez besoin d'utiliser une image Docker identifiée par un tag
Si vous avez besoin dutiliser une image Docker identifiée par un tag
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
suivante la variable denvironnement `TAG` au moment de lexécution de la
commande :
```sh
@ -72,7 +72,7 @@ TAG=arm make start
Vous pouvez trouver la liste complète des tags disponibles [sur le hub
Docker](https://hub.docker.com/r/freshrss/freshrss/tags).
Si vous voulez construire l'image Docker, vous pouvez lancer la commande
Si vous voulez construire limage Docker, vous pouvez lancer la commande
suivante :
```sh
@ -81,7 +81,7 @@ make build
TAG=arm make build
```
La valeur de la variable `TAG` peut contenir n'importe quelle valeur (par
La valeur de la variable `TAG` peut contenir nimporte 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`).
@ -92,13 +92,13 @@ exemple `local`). Vous pouvez cibler une architecture spécifique en ajoutant
## Extensions
Si vous souhaitez créer votre propre extension FreshRSS, consultez la
[documentation de l'extension](03_Backend/05_Extensions.md).
[documentation de lextension](03_Backend/05_Extensions.md).
## 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
de notre devoir à tous de le changer dès que l'occasion se présente.
de notre devoir à tous de le changer dès que loccasion 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.
@ -107,11 +107,11 @@ tant que les corrections nécessaires ne sont pas appliquées.
#### Indentation
L'indentation du code doit être faite impérativement avec des tabulations.
Lindentation du code doit être faite impérativement avec des tabulations.
#### Alignement
Une fois l'indentation faite, il peut être nécessaire de faire un alignement
Une fois lindentation faite, il peut être nécessaire de faire un alignement
pour simplifier la lecture. Dans ce cas, il faut utiliser les espaces.
```php
@ -129,9 +129,9 @@ Il est possible de vérifier la présence de caractères blancs en fin de ligne
grâce à Git avec la commande suivante :
```sh
# commande à lancer avant l'ajout des fichiers dans l'index
# commande à lancer avant lajout des fichiers dans lindex
git diff --check
# commande à lancer après l'ajout des fichiers dans l'index mais avant le commit
# commande à lancer après lajout des fichiers dans lindex mais avant le commit
git diff --check --cached
```
@ -141,11 +141,11 @@ Chaque fichier doit se terminer par une ligne vide.
#### 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.
Il ny a pas despace avant ces caractères, il y en a un après.
#### Le cas des opérateurs
Chaque opérateur est entouré d'espaces.
Chaque opérateur est entouré despaces.
```php
if ($a == 10) {
@ -157,9 +157,9 @@ echo $a ? 1 : 0;
#### 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
d'espaces après une parenthèse fermante sauf si elle est suivie d'une
Il ny a pas despaces entre des parenthèses. Il ny a pas despaces avant
une parenthèse ouvrante sauf si elle est précédée dun mot-clé. Il ny a pas
despaces après une parenthèse fermante sauf si elle est suivie dune
accolade ouvrante.
```php
@ -177,7 +177,7 @@ if ((int)$a == 10) {
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
très facile de se perdre. Dans ce cas là, on ajoute une indentation
supplémentaire pour toute l'instruction et on revient au même niveau pour
supplémentaire pour toute linstruction et on revient au même niveau pour
une instruction de même niveau.
```javascript
@ -198,7 +198,7 @@ shortcut.add("shift+" + shortcuts.mark_read, function () {
### 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
exceptionnellement de dépasser cette limite sil nest pas possible de la
respecter mais en aucun cas, les lignes ne doivent dépasser les 100
caractères.
@ -214,7 +214,7 @@ function ma_fonction($param_1, $param_2,
### Nommage
L'ensemble des éléments du code (fonctions, classes, méthodes et variables)
Lensemble 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
@ -278,8 +278,8 @@ fermante.
#### Tableaux
Lors de l'écriture de tableaux sur plusieurs lignes, tous les éléments
doivent être suivis d'une virgule (même le dernier).
Lors de lécriture de tableaux sur plusieurs lignes, tous les éléments
doivent être suivis dune virgule (même le dernier).
```php
$variable = [

View File

@ -3,12 +3,12 @@
Malgré le soin apporté à FreshRSS, il se peut que des bugs apparaissent
encore. Le projet est jeune et le développement dynamique, aussi celui-ci
pourra être corrigé rapidement. Il se peut aussi que vous ayez en tête une
fonctionnalité qui n'existe pas encore. Que celle-ci vous paraisse idiote,
fonctionnalité qui nexiste pas encore. Que celle-ci vous paraisse idiote,
farfelue, inutile ou trop spécifique, il ne faut surtout pas hésiter à nous
la proposer ! Très souvent des "idées en l'air" ont trouvé une oreille
la proposer ! Très souvent des « idées en lair » ont trouvé une oreille
attentive. Ce sont les regards externes qui font le plus évoluer le projet.
Si vous êtes convaincus qu'il faut vous faire entendre, voici la marche à
Si vous êtes convaincus quil faut vous faire entendre, voici la marche à
suivre.
## Sur GitHub
@ -16,25 +16,25 @@ suivre.
GitHub est la plate-forme à privilégier pour vos demandes. En effet, cela
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" !
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.
2. Commencez par rechercher si une demande similaire na pas déjà été
faite. Si oui, nhé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
4. Rédigez enfin votre demande. Si vous maitrisez langlais, cest la
langue à privilégier car cela permet douvrir la discussion à un plus
grand nombre de personnes. Sinon, ce nest 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
Tout le monde n'aime pas ou n'utilise pas GitHub pour des raisons aussi
diverses que légitimes. C'est pourquoi vous pouvez aussi nous contacter de
Tout le monde naime pas ou nutilise pas GitHub pour des raisons aussi
diverses que légitimes. Cest pourquoi vous pouvez aussi nous contacter de
façon plus informelle.
* Sur [notre chat
@ -42,7 +42,7 @@ façon plus informelle.
* Sur [les listes de
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
* Autour dune bière dans un bar
* Etc.
## Conseils
@ -51,19 +51,19 @@ Voici quelques conseils pour bien présenter votre remontée de bug ou votre
suggestion :
* **Faites attention à l'orthographe.** même si ce n'est pas toujours
* **Faites attention à lorthographe.** même si ce nest pas toujours
facile, faites votre maximum. ;)
* **Donnez un titre explicite à votre demande**, quitte à ce qu'il soit un
* **Donnez un titre explicite à votre demande**, quitte à ce quil soit un
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
* **Une demande = un ticket.** Vous pouvez avoir des tas didé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.
soccupera 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**
(lemplacement 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é.
* Tous les bugs ne nécessitent pas les logs, mais si vous doutez, mieux vaut
@ -86,12 +86,12 @@ le bug.
### Quels résultats ai-je obtenus ?
Le bug : ce que vous voyez qui n'aurez pas dû se passer. Ici vous pouvez
Le bug : ce que vous voyez qui naurez pas dû se passer. Ici vous pouvez
fournir les logs.
### Quel était le résultat attendu ?
Afin que nous comprenions bien où est le problème... au moins selon vous :p
Afin que nous comprenions bien où est le problème au moins selon vous :p
### Quelle est ma situation ?
@ -151,7 +151,7 @@ git checkout -b mon-branch-developpement
git add app/actualize_script.php
# Commitez le changement et écrivez un message de commit approprié.
git commit
# Vérifiez deux fois que tout a l'air d'aller bien
# Vérifiez deux fois que tout a lair daller bien
git show
# Poussez les changements sur ton fork
git push
@ -169,5 +169,5 @@ première ligne. Par exemple :
Si nécessaire, une ligne blanche et une explication plus longue peuvent le
suivre.
Pour d'autres conseils, voir
Pour dautres conseils, voir
[ici](https://chris.beams.io/posts/git-commit/).

View File

@ -8,7 +8,7 @@
> **À FAIRE**
## Gestion de l'authentification
## Gestion de lauthentification
> **À FAIRE**

View File

@ -1,9 +1,9 @@
# Écriture d'extensions pour FreshRSS
# Écriture dextensions pour FreshRSS
## Présentation de FreshRSS
FreshRSS est un agrégateur de flux RSS / Atom écrit en PHP depuis octobre
2012. Le site officiel est situé à l'adresse
2012. Le site officiel est situé à ladresse
[freshrss.org](https://freshrss.org) et son dépot Git est hébergé par Github
: [github.com/FreshRSS/FreshRSS](https://github.com/FreshRSS/FreshRSS).
@ -13,25 +13,25 @@ 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 ;
* La volonté dintégrer certains changements ;
* 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
volonté des contributeurs à s'intéresser au code source du projet en
volonté des contributeurs à sintéresser au code source du projet en
entier. Afin de lever les deux autres limitations quant à elles, il faudra
la plupart du temps passer par un « à-coté » souvent synonyme de « fork ».
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 :
Une autre solution consiste à passer par un système dextensions. En
permettant à des utilisateurs décrire leur propre extension sans avoir à
sinté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 ;
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
2. De permettre dinté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 ».
Note : il est tout à fait imaginable que les fonctionnalités d'une extension
Note : il est tout à fait imaginable que les fonctionnalités dune extension
puissent par la suite être intégrées dans le code initial de FreshRSS de
façon officielle. Cela permet de proposer un « proof of concept » assez
facilement.
@ -42,45 +42,45 @@ facilement.
Cette fiche technique devrait renvoyer vers la documentation officielle de
FreshRSS et de Minz (le framework PHP sur lequel repose
FreshRSS). Malheureusement cette documentation n'existe pas encore. Voici
donc en quelques mots les principaux éléments à connaître. Il n'est pas
nécessaire de lire l'ensemble des chapitres de cette section si vous n'avez
pas à utiliser une fonctionnalité dans votre extension (si vous n'avez pas
besoin de traduire votre extension, pas besoin d'en savoir plus sur le
FreshRSS). Malheureusement cette documentation nexiste pas encore. Voici
donc en quelques mots les principaux éléments à connaître. Il nest pas
nécessaire de lire lensemble des chapitres de cette section si vous navez
pas à utiliser une fonctionnalité dans votre extension (si vous navez pas
besoin de traduire votre extension, pas besoin den savoir plus sur le
module `Minz_Translate` par exemple).
### Architecture MVC
Minz repose et impose une architecture MVC pour les projets l'utilisant. On
Minz repose et impose une architecture MVC pour les projets lutilisant. On
distingue dans cette architecture trois composants principaux :
* Le Modèle : c'est l'objet de base que l'on va manipuler. Dans FreshRSS,
* Le Modèle : cest lobjet de base que lon 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`.
* 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
* La Vue : cest ce qui représente ce que verra lutilisateur. La vue est
donc simplement du code HTML que lon 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
* Le Contrôleur : cest 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
de données (une liste darticles par exemple) pour les « passer » à une
vue afin quelle 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
dindiquer le nom du contrôleur à charger dans lURL à laide dun paramètre `c`.
Par exemple, ladresse <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
Une notion qui na pas encore été évoquée est le système d'« actions ». Une
action est exécutée *sur* un contrôleur. Concrètement, un contrôleur va être
représenté par une classe et ses actions par des méthodes. Pour exécuter une
action, il est nécessaire d'indiquer un paramètre `a` dans l'URL.
action, il est nécessaire dindiquer un paramètre `a` dans lURL.
Exemple de code :
@ -100,12 +100,12 @@ class FreshRSS_hello_Controller extends FreshRSS_ActionController {
?>
```
Si l'on charge l'adresse <http://exemple.com?c=hello&a=world>, l'action
Si lon charge ladresse <http://exemple.com?c=hello&a=world>, laction
`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
exécuter l'action `index` du contrôleur `hello`.
Note : si `c` ou `a` nest pas précisée, la valeur par défaut de chacune de
ces variables est `index`. Ainsi ladresse <http://exemple.com?c=hello> va
exécuter laction `index` du contrôleur `hello`.
Plus loin, sera utilisée la convention `hello/world` pour évoquer un couple
contrôleur/action.
@ -131,7 +131,7 @@ La variable `$this->a_variable` a été passée précédemment par le contrôleu
Il est souvent nécessaire de profiter des paramètres passés par GET ou par
POST. Dans Minz, ces paramètres sont accessibles de façon indistincts à
l'aide de la classe `Minz_Request`. Exemple de code :
laide de la classe `Minz_Request`. Exemple de code :
```php
<?php
@ -140,7 +140,7 @@ $default_value = 'foo';
$param = Minz_Request::param('bar', $default_value);
// Affichera la valeur du paramètre `bar` (passé via GET ou POST)
// ou "foo" si le paramètre n'existe pas.
// ou "foo" si le paramètre nexiste pas.
echo $param;
// Force la valeur du paramètre `bar`
@ -153,25 +153,25 @@ echo Minz_Request::param('bar');
?>
```
La méthode `Minz_Request::isPost()` peut être utile pour n'exécuter un
morceau de code que s'il s'agit d'une requête POST.
La méthode `Minz_Request::isPost()` peut être utile pour nexécuter un
morceau de code que sil sagit dune requête POST.
Note : il est préférable de n'utiliser `Minz_Request` que dans les
Note : il est préférable de nutiliser `Minz_Request` que dans les
contrôleurs. Il est probable que vous rencontriez cette méthode dans les
vues de FreshRSS, voire dans les modèles, mais sachez qu'il ne s'agit
**pas** d'une bonne pratique.
vues de FreshRSS, voire dans les modèles, mais sachez quil ne sagit
**pas** dune bonne pratique.
### Accéder aux paramètres de session
L'accès aux paramètres de session est étrangement similaire aux paramètres
GET / POST mais passe par la classe `Minz_Session` cette fois-ci ! Il n'y a
pas d'exemple ici car vous pouvez reprendre le précédent en changeant tous
Laccès aux paramètres de session est étrangement similaire aux paramètres
GET / POST mais passe par la classe `Minz_Session` cette fois-ci ! Il ny a
pas dexemple ici car vous pouvez reprendre le précédent en changeant tous
les `Minz_Request` par des `Minz_Session`.
### Gestion des URL
Pour profiter pleinement du système de routage de Minz, il est fortement
déconseillé d'écrire les URL en dur dans votre code. Par exemple, la vue
déconseillé décrire les URL en dur dans votre code. Par exemple, la vue
suivante doit être évitée :
```html
@ -180,11 +180,11 @@ suivante doit être évitée :
</p>
```
Si un jour il est décidé d'utiliser un système d'« url rewriting » pour
Si un jour il est décidé dutiliser un système d'« url rewriting » pour
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
Préférez donc lutilisation de la classe `Minz_Url` et de sa méthode
`display()`. `Minz_Url::display()` prend en paramètre un tableau de la forme
suivante :
@ -206,7 +206,7 @@ echo Minz_Url::display($url_array);
```
Comme cela peut devenir un peu pénible à utiliser à la longue, surtout dans
les vues, il est préférable d'utiliser le raccourci `_url()` :
les vues, il est préférable dutiliser le raccourci `_url()` :
```php
<?php
@ -224,8 +224,8 @@ utilisée dans les contrôleurs.
### Redirections
Il est souvent nécessaire de rediriger un utilisateur vers une autre
page. Pour cela, la classe `Minz_Request` dispose d'une autre méthode utile
: `forward()`. Cette méthode prend en argument le même format d'URL que
page. Pour cela, la classe `Minz_Request` dispose dune autre méthode utile
: `forward()`. Cette méthode prend en argument le même format dURL que
celui vu juste avant.
Exemple de code :
@ -238,8 +238,8 @@ $url_array = [
'a' => 'world',
];
// Indique à Minz de rediriger l'utilisateur vers la page hello/world.
// Notez qu'il s'agit d'une redirection au sens Minz du terme, pas d'une redirection que le navigateur va avoir à gérer (code HTTP 301 ou 302)
// Indique à Minz de rediriger lutilisateur vers la page hello/world.
// Notez quil sagit dune redirection au sens Minz du terme, pas dune redirection que le navigateur va avoir à gérer (code HTTP 301 ou 302)
// Le code qui suit forward() va ainsi être exécuté !
Minz_Request::forward($url_array);
@ -251,12 +251,12 @@ Minz_Request::forward($url_array, true);
```
Il est très fréquent de vouloir effectuer une redirection tout en affichant
un message à l'utilisateur pour lui indiquer comment s'est déroulée l'action
effectuée juste avant (validation d'un formulaire par exemple). Un tel
un message à lutilisateur pour lui indiquer comment sest déroulée laction
effectuée juste avant (validation dun formulaire par exemple). Un tel
message est passé par une variable de session `notification` (note : nous
parlerons plutôt de « feedback » désormais pour éviter la confusion avec une
notification qui peut survenir à tout moment). Pour faciliter ce genre
d'action très fréquente, il existe deux raccourcis qui effectuent tout deux
daction très fréquente, il existe deux raccourcis qui effectuent tout deux
une redirection type 302 en affectant un message de feedback :
```php
@ -266,8 +266,8 @@ $url_array = [
'c' => 'hello',
'a' => 'world',
];
$feedback_good = 'Tout s\'est bien passé !';
$feedback_bad = 'Oups, quelque chose n\'a pas marché.';
$feedback_good = 'Tout sest bien passé !';
$feedback_bad = 'Oups, quelque chose na pas marché.';
Minz_Request::good($feedback_good, $url_array);
@ -280,32 +280,32 @@ Minz_Request::bad($feedback_bad, $url_array);
### Gestion de la traduction
Il est fréquent (et c'est un euphémisme) de vouloir afficher des phrases à
l'utilisateur. Dans l'exemple précédent par exemple, nous affichions un
feedback à l'utilisateur en fonction du résultat d'une validation de
Il est fréquent (et cest un euphémisme) de vouloir afficher des phrases à
lutilisateur. Dans lexemple précédent par exemple, nous affichions un
feedback à lutilisateur en fonction du résultat dune validation de
formulaire. Le problème est que FreshRSS possède des utilisateurs de
différentes nationalités. Il est donc nécessaire de pouvoir gérer
différentes langues pour ne pas rester cantonné à l'Anglais ou au Français.
différentes langues pour ne pas rester cantonné à lAnglais ou au Français.
La solution consiste à utiliser la classe `Minz_Translate` qui permet de
traduire dynamiquement FreshRSS (ou toute application basée sur Minz). Avant
d'utiliser ce module, il est nécessaire de savoir où trouver les chaînes de
dutiliser ce module, il est nécessaire de savoir où trouver les chaînes de
caractères à traduire. Chaque langue possède son propre sous-répertoire dans
un répertoire parent nommé `i18n`. Par exemple, les fichiers de langue en
Français sont situés dans `i18n/fr/`. Il existe sept fichiers différents :
* `admin.php` pour tout ce qui est relatif à l'administration de FreshRSS ;
* `conf.php` pour l'aspect configuration ;
* `admin.php` pour tout ce qui est relatif à ladministration de FreshRSS ;
* `conf.php` pour laspect 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 »).
* `install.php` contient les phrases relatives à linstallation de FreshRSS ;
* `sub.php` pour laspect gestion des abonnements (sub pour « subscription »).
Cette organisation permet de ne pas avoir un unique énorme fichier de
traduction.
Les fichiers de traduction sont assez simples : il s'agit seulement de
Les fichiers de traduction sont assez simples : il sagit seulement de
retourner un tableau PHP contenant les traductions. Extrait du fichier
`app/i18n/fr/gen.php` :
@ -329,7 +329,7 @@ return array(
?>
```
Pour accéder à ces traductions, `Minz_Translate` va nous aider à l'aide de
Pour accéder à ces traductions, `Minz_Translate` va nous aider à laide de
sa méthode `Minz_Translate::t()`. Comme cela peut être un peu long à taper,
il a été introduit un raccourci qui **doit** être utilisé en toutes
circonstances : `_t()`. Exemple de code :
@ -342,20 +342,20 @@ circonstances : `_t()`. Exemple de code :
</p>
```
La chaîne à passer à la fonction `_t()` consiste en une série d'identifiants
La chaîne à passer à la fonction `_t()` consiste en une série didentifiants
séparés par des points. Le premier identifiant indique de quel fichier on
veut extraire la traduction (dans notre cas présent, de `gen.php`), tandis
que les suivantes indiquent des entrées de tableaux. Ainsi `action` est une
entrée du tableau principal et `back_to_rss_feeds` est une entrée du tableau
`action`. Cela permet d'organiser encore un peu plus nos fichiers de
`action`. Cela permet dorganiser encore un peu plus nos fichiers de
traduction.
Il existe un petit cas particulier qui permet parfois de se simplifier la
vie : le cas de l'identifiant `_`. Celui-ci doit nécessairement être présent
en bout de chaîne et permet de donner une valeur à l'identifiant de niveau
supérieur. C'est assez dur à expliquer mais très simple à comprendre. Dans
l'exemple donné plus haut, un `_` est associé à la valeur `FreshRSS` : cela
signifie qu'il n'y a pas besoin d'écrire `_t('gen.freshrss._')` mais
vie : le cas de lidentifiant `_`. Celui-ci doit nécessairement être présent
en bout de chaîne et permet de donner une valeur à lidentifiant de niveau
supérieur. Cest assez dur à expliquer mais très simple à comprendre. Dans
lexemple donné plus haut, un `_` est associé à la valeur `FreshRSS` : cela
signifie quil ny a pas besoin décrire `_t('gen.freshrss._')` mais
`_t('gen.freshrss')` suffit.
### Gestion de la configuration
@ -364,14 +364,14 @@ signifie qu'il n'y a pas besoin d'écrire `_t('gen.freshrss._')` mais
Nous y voilà ! Nous avons abordé les fonctionnalités les plus utiles de Minz
et qui permettent de faire tourner FreshRSS correctement et il est plus que
temps d'aborder les extensions en elles-même.
temps daborder les extensions en elles-même.
Une extension permet donc d'ajouter des fonctionnalités facilement à
Une extension permet donc dajouter des fonctionnalités facilement à
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 :
Quand on travaille sur une extension, cest toujours plus facile de la travailler directement dans son environnement. Avec Docker, on peut exploiter loption ```volume``` quand on démarre le conteneur. Heureusement, on peut lutiliser 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"
```
@ -379,18 +379,18 @@ make start extensions="/chemin/complet/de/l/extension/1 /chemin/complet/de/l/ext
### Les fichiers et répertoires de base
La première chose à noter est que **toutes** les extensions **doivent** se
situer dans le répertoire `extensions`, à la base de l'arborescence de
situer dans le répertoire `extensions`, à la base de larborescence de
FreshRSS. Une extension est un répertoire contenant un ensemble de fichiers
et sous-répertoires obligatoires ou facultatifs. La convention veut que l'on
précède le nom du répertoire principal par un « x » pour indiquer qu'il ne
s'agit pas d'une extension incluse par défaut dans FreshRSS.
et sous-répertoires obligatoires ou facultatifs. La convention veut que lon
précède le nom du répertoire principal par un « x » pour indiquer quil ne
sagit pas dune extension incluse par défaut dans FreshRSS.
Le répertoire principal d'une extension doit comporter au moins deux
Le répertoire principal dune extension doit comporter au moins deux
fichiers **obligatoire** :
* Un fichier `metadata.json` qui contient une description de l'extension. Ce
* Un fichier `metadata.json` qui contient une description de lextension. Ce
fichier est écrit en JSON ;
* Un fichier `extension.php` contenant le point d'entrée de l'extension.
* Un fichier `extension.php` contenant le point dentrée de lextension.
Please note that there is a not a required link between the directory name
of the extension and the name of the class inside `extension.php`, but you
@ -434,14 +434,14 @@ important elements. It must contain a valid JSON array containing the
following entries:
* `name` : le nom de votre extension ;
* `author` : votre nom, éventuellement votre adresse mail mais il n'y a pas
* `author` : votre nom, éventuellement votre adresse mail mais il ny a pas
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
* `version` : le numéro de version actuel de lextension ;
* `entrypoint` : indique le point dentré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`) ;
sans le suffixe `Extension` (donc si le point dentrée est `HelloWorld`,
votre classe sappellera `HelloWorldExtension`) ;
* `type` : définit le type de votre extension. Il existe deux types :
`system` et `user`. Nous étudierons cette différence juste après.
@ -524,7 +524,7 @@ 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
parameter. This way a website known to have feeds which doesnt 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

View File

@ -1,7 +1,7 @@
# Running tests
FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be
merged in `edge` if the tests don't pass.
merged in `edge` if the tests dont pass.
## Locally
@ -17,7 +17,7 @@ verification fails, the file is deleted. In this case, you should [open an
issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let
maintainers know about the problem.
Then, it executes PHPUnit in a Docker container. If you don't use Docker,
Then, it executes PHPUnit in a Docker container. If you dont use Docker,
you can run the command directly with:
```sh
@ -28,6 +28,6 @@ NO_DOCKER=true make test
Les tests sont lancés automatiquement dès que vous ouvrez une « pull request » sur GitHub.
Ceux-ci sont lancés grace aux « [GitHub Actions](https://github.com/FreshRSS/FreshRSS/actions) ».
Cette action est nécessaire pour s'assurer qu'aucune régression ne soit introduite dans le code. Nous n'accepterons aucune PR si les tests ne sont pas valides, nous vous demanderons donc de corriger tout ce qui doit l'être avant de commencer à relire votre code.
Cette action est nécessaire pour sassurer quaucune régression ne soit introduite dans le code. Nous naccepterons aucune PR si les tests ne sont pas valides, nous vous demanderons donc de corriger tout ce qui doit lêtre avant de commencer à relire votre code.
Si cela vous intéresse, vous pouvez étudier [le fichier de configuration](https://github.com/FreshRSS/FreshRSS/blob/edge/.github/workflows/tests.yml).

View File

@ -1,13 +1,13 @@
# Préparer la sortie
Afin d'avoir le plus de retour possible avant une sortie, il est préférable
de l'annoncer sur GitHub en créant un ticket dédié ([voir les
Afin davoir le plus de retour possible avant une sortie, il est préférable
de lannoncer sur GitHub en créant un ticket dédié ([voir les
exemples](https://github.com/FreshRSS/FreshRSS/search?utf8=%E2%9C%93&q=Call+for+testing&type=Issues)).
Ceci est à faire **au moins une semaine à l'avance**.
Ceci est à faire **au moins une semaine à lavance**.
Il est aussi recommandé de faire l'annonce sur mailing@freshrss.org.
Il est aussi recommandé de faire lannonce sur mailing@freshrss.org.
## S'assurer de l'état de dev
## Sassurer de létat de dev
Avant de sortir une nouvelle version de FreshRSS, il faut vous assurer que
le code est stable et ne présente pas de bugs majeurs. Idéalement, il
@ -33,7 +33,7 @@ $ git push && git push --tags
## Mise à jour de update.freshrss.org
Il est important de mettre à jour update.freshrss.org puisqu'il s'agit du
Il est important de mettre à jour update.freshrss.org puisquil sagit du
service par défaut gérant les mises à jour automatiques de FreshRSS.
Le dépot gérant le code se trouve sur GitHub :
@ -48,10 +48,10 @@ script ne doit pas inclure de code spécifique à une version particulière !)
et `update_util.php` contenant une liste de fonctions utiles à tous les
scripts.
Afin d'écrire un nouveau script, il est préférable de copier / coller celui
Afin décrire un nouveau script, il est préférable de copier / coller celui
de la dernière version ou de partir de `update_to_dev.php`. La première
chose à faire est de définir l'URL à partir de laquelle sera téléchargée le
package FreshRSS (`PACKAGE_URL`). L'URL est de la forme
chose à faire est de définir lURL à partir de laquelle sera téléchargée le
package FreshRSS (`PACKAGE_URL`). LURL est de la forme
`https://codeload.github.com/FreshRSS/FreshRSS/zip/x.y.z`.
Il existe ensuite 5 fonctions à remplir :
@ -60,18 +60,18 @@ Il existe ensuite 5 fonctions à remplir :
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
structure de `./data`). Elle retourne `true` si aucun problème nest
survenu ou une chaîne de caractères indiquant un soucis ;
* `need_info_update()` retourne `true` si l'utilisateur doit intervenir
* `need_info_update()` retourne `true` si lutilisateur doit intervenir
durant la mise à jour ou `false` sinon ;
* `ask_info_update()` affiche un formulaire à l'utilisateur si
* `ask_info_update()` affiche un formulaire à lutilisateur si
`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
renseignées par lutilisateur (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).
lobjet `Minz_Configuration`, vous bénéficierez de ces améliorations).
## Mise à jour du fichier de versions
@ -87,7 +87,7 @@ return array(
// STABLE
'0.8.0' => '1.0.0',
'0.8.1' => '1.0.0',
'1.0.0' => '1.0.1', // doesn't exist (yet)
'1.0.0' => '1.0.1', // doesnt exist (yet)
// DEV
'1.1.2-dev' => 'dev',
'1.1.3-dev' => 'dev',
@ -100,11 +100,11 @@ Et voici comment fonctionne cette table :
* à gauche se trouve la version N, à droite la version N+1 ;
* 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
* il est possible de sauter plusieurs versions dun coup à condition que les
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
* il est conseillé dindiquer la correspondance de la version courante vers
sa potentielle future version en précisant que cette version nexiste pas
encore. Tant que le script correspondant nexistera pas, rien ne se
passera.
Il est **très fortement** indiqué de garder ce fichier rangé selon les
@ -114,7 +114,7 @@ numéros de versions en séparant les versions stables et de dev.
Avant de mettre à jour update.freshrss.org, il est préférable de tester avec
dev.update.freshrss.org qui correspond à la pré-production. Mettez donc à
jour dev.update.freshrss.org et changez l'URL `FRESHRSS_UPDATE_WEBSITE` de
jour dev.update.freshrss.org et changez lURL `FRESHRSS_UPDATE_WEBSITE` de
votre instance FreshRSS. Lancez la mise à jour et vérifiez que celle-ci se
déroule correctement.
@ -131,12 +131,12 @@ update.freshrss.org :
## Annoncer publiquement la sortie
Lorsque tout fonctionne, il est temps d'annoncer la sortie au monde entier !
Lorsque tout fonctionne, il est temps dannoncer la sortie au monde entier !
* sur GitHub en créant [une nouvelle
release](https://github.com/FreshRSS/FreshRSS/releases/new) ;
* sur le blog de freshrss.org au minimum pour les versions stables (écrire
l'article sur
larticle sur
[FreshRSS/freshrss.org](https://github.com/FreshRSS/freshrss.org)).
* sur Twitter (compte [@FreshRSS](https://twitter.com/FreshRSS)) ;
* et sur mailing@freshrss.org ;
@ -152,5 +152,5 @@ $ vim CHANGELOG.md
$ git add CHANGELOG.md && git commit && git push
```
Pensez aussi à mettre à jour update.freshrss.org pour qu'il prenne en compte
Pensez aussi à mettre à jour update.freshrss.org pour quil prenne en compte
la version de développement actuelle.

View File

@ -119,7 +119,7 @@ server {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
# Par défaut la variable PATH_INFO nest pas définie sous PHP-FPM
# or lAPI FreshRSS greader.php en a besoin. Si vous avez un “Bad Request”, vérifiez bien cette dernière !
# REMARQUE : l'utilisation de la variable $path_info est requis. Pour plus de détails, voir :
# REMARQUE : lutilisation de la variable $path_info est requis. Pour plus de détails, voir :
# https://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

View File

@ -1,39 +1,39 @@
Découvrir un nouveau logiciel n'est pas toujours facile. Si nous avons voulu
FreshRSS le plus intuitif possible, vous aurez peut-être besoin d'un coup de
Découvrir un nouveau logiciel nest pas toujours facile. Si nous avons voulu
FreshRSS le plus intuitif possible, vous aurez peut-être besoin dun coup de
main pour le maîtriser.
Cette section se propose de vous aider dans la prise en main de l'outil. Il
ne s'agit que de liens menant vers les autres pages de la documentation mais
Cette section se propose de vous aider dans la prise en main de loutil. Il
ne sagit que de liens menant vers les autres pages de la documentation mais
ordonnées dans un ordre spécifique aux nouveaux arrivants.
[Après l'installation](../../en/admins/03_Installation.md), la première
chose à faire est d'ajouter un ou plusieurs sites à suivre. Pour cela
plusieurs choix s'offrent à vous :
[Après linstallation](../../en/admins/03_Installation.md), la première
chose à faire est dajouter un ou plusieurs sites à suivre. Pour cela
plusieurs choix soffrent à vous :
1. [Ajouter un flux manuellement](04_Subscriptions.md#ajouter-un-flux)
2. [Importer un fichier OPML ou JSON](04_Subscriptions.md#import-et-export)
3. [Utiliser le bookmark dédié](04_Subscriptions.md#utiliser-le-bookmark)
Une fois que vous avez ajouté vos flux à FreshRSS, il est temps de les
lire. Pour cela, trois modes de lecture s'offrent à vous :
lire. Pour cela, trois modes de lecture soffrent à vous :
1. [La vue normale](03_Main_view.md#la-vue-normale) qui permet de voir et de
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
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
configurable et c'est à vous de trouver la configuration qui vous conviendra
configurable et cest à vous de trouver la configuration qui vous conviendra
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)
* [Configurez votre page
d'accueil](05_Configuration.md#personnaliser-la-vue)
daccueil](05_Configuration.md#personnaliser-la-vue)
* [Configurez vos options de
lecture](05_Configuration.md#options-de-lecture)
* [Mettez à jour vos flux](03_Main_view.md#rafraichir-les-flux)

View File

@ -3,15 +3,15 @@
## Langue
À l'heure actuelle, FreshRSS est disponible en 13 langues. Après validation
de ce choix, l'interface sera affichée dans la langue choisie, même si
certaines parties de l'interface peuvent ne pas encore avoir été
À lheure actuelle, FreshRSS est disponible en 13 langues. Après validation
de ce choix, linterface sera affichée dans la langue choisie, même si
certaines parties de linterface peuvent ne pas encore avoir été
traduites. Si vous voulez aider à la traduction, regardez comment vous
pouvez [contribuer au
projet](../contributing.md#contribute-to-internationalization-i18n).
Il y a des parties de FreshRSS qui ne sont pas traduites et qui n'ont pas
vocation à l'être. Pour le moment, les logs visibles dans l'application
Il y a des parties de FreshRSS qui ne sont pas traduites et qui nont pas
vocation à lêtre. Pour le moment, les logs visibles dans lapplication
ainsi que celle générées par le script de mise à jour automatique en font
partie.
@ -20,7 +20,7 @@ pt-br, ru, tr, zh-cn.
## Thème
Les goûts et les couleurs, ça ne se discute pas. C'est pourquoi FreshRSS
Les goûts et les couleurs, ça ne se discute pas. Cest pourquoi FreshRSS
propose huit thèmes officiels :
* *Blue Lagoon* par **Mister aiR**
@ -35,44 +35,44 @@ propose huit thèmes officiels :
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).
Pour sélectionner un thème, il suffit de faire défiler les thèmes jusqu'à
l'apparition du thème choisi. Après validation, le thème sera appliqué à
l'interface.
Pour sélectionner un thème, il suffit de faire défiler les thèmes jusquà
lapparition du thème choisi. Après validation, le thème sera appliqué à
linterface.
## Largeur du contenu
Il y en a qui préfère des lignes de texte courtes, d'autres qui préfèrent
maximiser l'espace disponible sur l'écran. Pour satisfaire le maximum de
Il y en a qui préfère des lignes de texte courtes, dautres qui préfèrent
maximiser lespace 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
* **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
## Icônes darticle
Veuillez noter que cette section n'affecte que la vue normale.
Veuillez noter que cette section naffecte que la vue normale.
![Configuration des icônes
d'article](../img/users/configuration.article.icons.png)
darticle](../img/users/configuration.article.icons.png)
Chaque article est rendu avec un en-tête (ligne supérieure) et un pied de
page (ligne inférieure). Dans cette section, vous pouvez choisir ce qui sera
affiché dans ceux-ci.
Si vous désactivez tous les éléments de la ligne supérieure, vous pourrez
toujours les voir, puisqu'il contient le nom du flux et le titre de
l'article. Mais si vous faites le même chose pour la ligne inférieure, elle
toujours les voir, puisquil contient le nom du flux et le titre de
larticle. Mais si vous faites le même chose pour la ligne inférieure, elle
sera vide.
## Temps d'affichage de la notification HTML5
## Temps daffichage de la notification HTML5
Après la mise à jour automatique des flux, FreshRSS utilise l'API de
notification de HTML5 pour avertir de l'arrivée de nouveaux articles.
Après la mise à jour automatique des flux, FreshRSS utilise lAPI de
notification de HTML5 pour avertir de larrivée de nouveaux articles.
Il est possible de régler la durée d'affichage de cette notification. Par
Il est possible de régler la durée daffichage de cette notification. Par
défaut, la valeur est 0.
## Show the navigation button
@ -83,7 +83,7 @@ browsing on mobile. The drawback is that they eat up some precious space.
![navigation button
configuration](../img/users/configuration.navigation.button.png)
If you don't use those buttons because you never browse on mobile or because
If you dont use those buttons because you never browse on mobile or because
you browse with gestures, you can disable them from the interface.
# Reading
@ -127,7 +127,7 @@ To ease the use of the application, FreshRSS comes with a lot of predefined
keyboard shortcuts. They allow actions to improve the user experience with
a keyboard.
Of course, if you're not satisfied with the key mapping, you can change you
Of course, if youre not satisfied with the key mapping, you can change you
configuration to fit your needs.
There are 4 types of shortcuts:
@ -140,15 +140,15 @@ There are 4 types of shortcuts:
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
Its 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.
only one option, its selected automatically though.
The same process applies to the user queries.
Be aware that there is no validation on the selected shortcuts. This means
that if you assign a shortcut to more than one action, you'll end up with
that if you assign a shortcut to more than one action, youll end up with
some unexpected behavior.
# User queries
@ -183,8 +183,8 @@ AuthType Basic
Require user marie
```
Plus d'informations dans [la documentation
d'Apache.](http://httpd.apache.org/docs/trunk/howto/auth.html#gettingitworking)
Plus dinformations dans [la documentation
dApache.](http://httpd.apache.org/docs/trunk/howto/auth.html#gettingitworking)
# Gestion des flux
@ -206,28 +206,28 @@ d'Apache.](http://httpd.apache.org/docs/trunk/howto/auth.html#gettingitworking)
La question revient régulièrement, je vais essayer de clarifier ici comment
on peut récupérer un flux RSS tronqué avec FreshRSS. Sachez avant tout que
la manière de s'y prendre n'est absolument pas "user friendly", mais elle
la manière de sy prendre nest absolument pas "user friendly", mais elle
fonctionne. :)
Sachez aussi que par cette manière vous générez beaucoup plus de trafic vers
les sites d'origines et qu'ils peuvent vous bloquer par conséquent. Les
les sites dorigines et quils peuvent vous bloquer par conséquent. Les
performances de FreshRSS sont aussi moins bonnes car vous devez alors aller
chercher le contenu des articles un par un. C'est donc une fonctionnalité à
chercher le contenu des articles un par un. Cest donc une fonctionnalité à
utiliser avec parcimonie !
Ce que j'entends par "Chemin CSS des articles sur le site dorigine"
Ce que jentends par "Chemin CSS des articles sur le site dorigine"
correspond en fait au "chemin" constitué par les IDs et les classes (en
html, correspond aux attributs id et class) pour récupérer uniquement la
partie intéressante qui correspond à l'article. L'idéal est que ce chemin
partie intéressante qui correspond à larticle. Lidéal est que ce chemin
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.
Il faut alors chercher le "bloc" HTML correspondant au contenu de l'article
Pour trouver ce chemin, il faut se rendre à ladresse dun des articles tronqués.
Il faut alors chercher le "bloc" HTML correspondant au contenu de larticle
(dans le code source !)
On trouve ici que le bloc qui englobe uniquement le contenu de l'article est ```<div class="content clearfix">```. On ne va garder que la classe `.content` ici. Néanmoins, comme je le disais plus haut, il est préférable de commencer le chemin avec un id. Si on remonte au bloc parent, il s'agit du bloc ```<div id="article">``` et c'est parfait ! Le chemin sera donc ```#article .content```.
On trouve ici que le bloc qui englobe uniquement le contenu de larticle est ```<div class="content clearfix">```. On ne va garder que la classe `.content` ici. Néanmoins, comme je le disais plus haut, il est préférable de commencer le chemin avec un id. Si on remonte au bloc parent, il sagit du bloc ```<div id="article">``` et cest parfait ! Le chemin sera donc ```#article .content```.
#### Liste de correspondances site → chemin css
@ -236,10 +236,10 @@ On trouve ici que le bloc qui englobe uniquement le contenu de l'article est ```
* Lesnumériques : ```article#body div.text.clearfix```
* Phoronix : ```#main .content```
### Récupérer un flux tronqué à l'aide d'outils externes
### Récupérer un flux tronqué à laide doutils externes
Des outils complémentaires peuvent être utilisés pour récupérer le contenu
complet d'un article, comme :
complet dun article, comme :
* [RSS-Bridge](https://github.com/RSS-Bridge/rss-bridge)
* [Full-Text RSS](https://bitbucket.org/fivefilters/full-text-rss)

View File

@ -5,8 +5,8 @@ pour une autre possibilité et des généralités sur laccès par API.
## 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
De nombreux clients RSS prennent en charge lAPI Fever, mais ils semblent
comprendre lAPI Fever un peu différemment. Si votre client préféré ne
fonctionne pas correctement avec cette API, veuiller créer un ticket et nous
y jetterons un oeil. Mais nous ne pouvons le faire que pour les clients
gratuits.
@ -14,11 +14,11 @@ gratuits.
### Utilisation et authentification
Avant de pouvoir commencer à utiliser cette API, vvous devez activer et
configurer l'accès à l'API, qui est [documenté
configurer laccès à lAPI, qui est [documenté
ici](https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html), et
réinitialisez ensuite le mot de passe API de l'utilisateur.
réinitialisez ensuite le mot de passe API de lutilisateur.
Connectez ensuite votre application mobile en utilisant l'adresse de l'API
Connectez ensuite votre application mobile en utilisant ladresse de lAPI
(e.g. `https://freshrss.example.net/api/fever.php`).
## Clients compatibles Fever
@ -41,22 +41,22 @@ Les fonctionnalités suivantes sont implémentées :
* récupération des favicons
* marquage des entrées comme lues
* marquage des entrées comme favoris
* marquage d'un flux comme lu
* marquage d'une catégorie comme lue
* marquage dun flux comme lu
* marquage dune catégorie comme lue
* support des extensions grace au hook `entry_before_display`
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
* « Hot Links » car il ny a encore rien dans FreshRSS qui soit similaire ou
qui puisse être utilisé pour le simuler.
## Tester et déboguer
Si l'API ne fonctionne pas comme attendu dans votre lecteur, il est possible
Si lAPI ne fonctionne pas comme attendu dans votre lecteur, il est possible
de la tester manuellement avec un outil tel que
[Postman](https://www.getpostman.com/).
Envoyer une requête POST à l'adresse
Envoyer une requête POST à ladresse
<https://freshrss.example.net/api/fever.php?api> devrait vous renvoyer le
résultat suivant :
```json
@ -69,7 +69,7 @@ Super, la configuration de base fonctionne !
Maintenant essayons de faire un appel authentifié. Fever utilise un
paramètre `api_key` qui contient le résultat de la fonction de hachage MD5
de la valeur `"$username:$apiPassword"`. En considérant que l'utilisateur
de la valeur `"$username:$apiPassword"`. En considérant que lutilisateur
est `kevin` et que son mot de passe est `freshrss`, voici la commande à
lancer pour calculer la valeur du paramètre `api_key` :
@ -78,7 +78,7 @@ api_key=`echo -n "kevin:freshrss" | md5sum | cut -d' ' -f1`
```
Ajoutez un contenu sous forme de `form-data`à votre requête POST ainsi que
le paramètre `api_key` contenant la valeur calculée à l'étape précédente :
le paramètre `api_key` contenant la valeur calculée à létape précédente :
```sh
curl -s -F "api_key=$api_key" 'https://freshrss.exemple.net/api/fever.php?api'
@ -93,12 +93,12 @@ Vous devriez obtenir le résultat suivant :
}
```
Parfait, maintenant vous êtes autentifié et vous pouvez commencer à tester
les fonctions avancées. Pour cela, il suffit de changer l'adresse en lui
les fonctions avancées. Pour cela, il suffit de changer ladresse en lui
ajoutant les paramètres nécessaires à la réalisation des actions
supportées. Pour plus d'information, veuillez vous référer à la
supportées. Pour plus dinformation, veuillez vous référer à la
[documentation officielle de Fever](https://feedafever.com/api).
Voici quelques exemples simples d'appels réalisables :
Voici quelques exemples simples dappels réalisables :
* <https://freshrss.example.net/api/fever.php?api&items>
* <https://freshrss.example.net/api/fever.php?api&feeds>
@ -123,7 +123,7 @@ fichier `fever.api` pour déterminer la cause des problèmes rencontrés :
file_put_contents(__DIR__ . '/fever.log', $_SERVER['HTTP_USER_AGENT'] . ': ' . json_encode($_REQUEST) . PHP_EOL, FILE_APPEND);
```
Utilisez ensuite votre client RSS pour interroger l'API et vérifier le
Utilisez ensuite votre client RSS pour interroger lAPI et vérifier le
fichier `fever.log`.
## Remerciements

View File

@ -49,8 +49,8 @@ possibilité.
# Clients compatibles
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.
1. Sur la même page de lAPI FreshRSS, notez ladresse donnée sous "Votre adresse API", comme `https://freshrss.example.net/api/greader.php`
* Saisissez ladresse de lAPI dans le client sélectionné puis votre nom dutilisateur et votre mot de passe spécialement créé pour lAPI.
2. Vous pouvez maintenant tester sur une application mobile:
* Android

View File

@ -1,28 +1,28 @@
Il est possible que nous n'ayons pas répondu à toutes vos questions dans les
parties précédentes. La FAQ regroupe certaines interrogations qui n'ont pas
Il est possible que nous nayons pas répondu à toutes vos questions dans les
parties précédentes. La FAQ regroupe certaines interrogations qui nont pas
trouvé leur réponse ailleurs.
## C'est quoi ce `/i` à la fin de l'URL ?
## Cest quoi ce `/i` à la fin de lURL ?
Bien entendu, le ```/i``` n'est pas là pour faire joli ! Il s'agit d'une
Bien entendu, le ```/i``` nest pas là pour faire joli ! Il sagit dune
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.
* La racine publique ```./p/``` peut être servie sans restriction d'accès
* La racine publique ```./p/``` peut être servie sans restriction daccès
HTTP (qui peut avantageusement être mise en place dans ```./p/i/```).
* Cela permet d'éviter des problèmes pour des fichiers qui doivent être
* Cela permet déviter des problèmes pour des fichiers qui doivent être
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.
* Cela permet aussi davoir un logo FreshRSS plutôt quune page blanche pour
accueillir lutilisateur par exemple dans le cas de la restriction daccès
HTTP ou lors de lattente du chargement plus lourd du reste de
linterface.
## Pourquoi le ```robots.txt``` se trouve dans un sous-répertoire ?
Afin d'améliorer la sécurité, FreshRSS est découpé en deux parties : une
Afin daméliorer la sécurité, FreshRSS est découpé en deux parties : une
partie publique (le répertoire ```./p```) et une partie privée (tout le
reste !). Le ```robots.txt``` se trouve donc dans le sous-répertoire
```./p```.
@ -35,57 +35,57 @@ partie publique ne soit accessible par un navigateur web. De cette manière
```robots.txt``` se trouve bien à la racine du site :
<https://demo.freshrss.org/robots.txt>
L'explication est la même pour les fichiers ```favicon.ico``` et
Lexplication est la même pour les fichiers ```favicon.ico``` et
```.htaccess```.
## Pourquoi j'ai des erreurs quand j'essaye d'enregistrer un flux ?
## Pourquoi jai des erreurs quand jessaye denregistrer un flux ?
Il peut y avoir différentes origines à ce problème. Le flux peut avoir une
syntaxe invalide, il peut ne pas être reconnu par la bibliothèque SimplePie,
l'hébergement peut avoir des problèmes, FreshRSS peut être boggué. Il faut
lhébergement peut avoir des problèmes, FreshRSS peut être boggué. Il faut
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
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.
1. __Vérifier la reconnaissance par SimplePie__ grâce à l'[outil en ligne de
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.
1. __Vérifier l'intégration dans FreshRSS__ grâce à la
1. __Vérifier linté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.
pour FreshRSS") pour que lon puisse regarder ce qui se passe. Si ça
fonctionne, il y a probablement un problème avec lhébergement.
## Comment changer un mot de passe oublié ?
Depuis la version
[1.10.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.10.0),
l'administrateur peut modifier le mot de passe d'un utilisateur depuis
l'interface. Cette interface est disponible dans le menu ```Administration →
Gestion des utilisateurs```. Il suffit de sélectionner l'utilisateur, de
ladministrateur peut modifier le mot de passe dun utilisateur depuis
linterface. Cette interface est disponible dans le menu ```Administration →
Gestion des utilisateurs```. Il suffit de sélectionner lutilisateur, de
saisir un mot de passe et de valider.
Depuis la version
[1.8.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.8.0),
l'administrateur peut modifier le mot de passe d'un utilisateur depuis un
ladministrateur peut modifier le mot de passe dun utilisateur depuis un
terminal. Il est bon de noter que celui-ci doit avoir un accès à PHP en
ligne de commande. Pour cela, il suffit d'ouvrir son terminal et de saisir
ligne de commande. Pour cela, il suffit douvrir 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
Pour plus dinformation à ce sujet, il existe la [documentation
dédiée](../../cli/README.md).
## Gérer les permissions sous SELinux
Certaines distributions Linux comme Fedora ou RedHat Enterprise Linux (RHEL)
activent par défaut le système SELinux. Celui-ci permet de gérer des
permissions au niveau des processus. Lors de l'installation de FreshRSS,
l'étape 2 procède à la vérification des droits sur certains répertoires, il
permissions au niveau des processus. Lors de linstallation de FreshRSS,
létape 2 procède à la vérification des droits sur certains répertoires, il
faut donc exécuter la commande suivante en tant que root:
```sh
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/FreshRSS/data(/.*)?'
@ -94,10 +94,10 @@ restorecon -Rv /usr/share/FreshRSS/data
## Pourquoi y a-t-il une page blanche lorsque je configure les options de partage ?
Le mot `sharing` dans l'URL est un mot déclencheur pour certaines règles des
Le mot `sharing` dans lURL est un mot déclencheur pour certaines règles des
bloqueurs de publicités. À partir de la version 1.16, `sharing` a été
remplacé par `integration` dans l'URL posant problème tout en conservant
exactement la même dénomination à travers l'application.
remplacé par `integration` dans lURL posant problème tout en conservant
exactement la même dénomination à travers lapplication.
Si vous utilisez une version antérieure à 1.16, vous pouvez désactiver votre
bloqueur de publicité pour FreshRSS ou vous pouvez ajouter une règle pour
@ -105,7 +105,7 @@ permettre la consultation de la page de configuration « partage ».
Exemples avec _uBlock_ :
* Ajoutez votre instance FreshRSS à la liste blanche de en l'ajoutant dans
* Ajoutez votre instance FreshRSS à la liste blanche de en lajoutant 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

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,7 @@ msgstr ""
#. type: Plain text
#: en/./contributing.md:4
msgid ""
"Do you want to ask us some questions? Do you want to discuss with us? Don't "
"Do you want to ask us some questions? Do you want to discuss with us? Dont "
"hesitate to subscribe to our mailing lists!"
msgstr ""
@ -54,7 +54,7 @@ msgstr ""
#. type: Plain text
#: en/./contributing.md:11
msgid ""
"Have you found a bug? Don't panic, here are some steps to report it with "
"Have you found a bug? Dont panic, here are some steps to report it with "
"ease:"
msgstr ""
@ -62,21 +62,21 @@ msgstr ""
#: en/./contributing.md:15
msgid ""
"Search for it on [the bug "
"tracker](https://github.com/FreshRSS/FreshRSS/issues) (don't forget to use "
"tracker](https://github.com/FreshRSS/FreshRSS/issues) (dont forget to use "
"the search bar)."
msgstr ""
#. type: Bullet: '2. '
#: en/./contributing.md:15
msgid ""
"If you find a similar bug, don't hesitate to post a comment to add more "
"If you find a similar bug, dont hesitate to post a comment to add more "
"importance to the related ticket."
msgstr ""
#. type: Bullet: '3. '
#: en/./contributing.md:15
msgid ""
"If you didn't find it, [open a new "
"If you didnt find it, [open a new "
"ticket](https://github.com/FreshRSS/FreshRSS/issues/new)."
msgstr ""
@ -142,7 +142,7 @@ msgstr ""
#. type: Bullet: '1. '
#: en/./contributing.md:36
msgid ""
"Be sure the bug is associated with a ticket and indicate that you'll work on "
"Be sure the bug is associated with a ticket and indicate that youll work on "
"it."
msgstr ""
@ -181,7 +181,7 @@ msgstr ""
#: en/./contributing.md:40
#, no-wrap
msgid ""
"**Tip:** if you're searching for easy-to-fix bugs, please have a look at the "
"**Tip:** if youre searching for easy-to-fix bugs, please 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.\n"
@ -196,7 +196,7 @@ msgstr ""
#. type: Plain text
#: en/./contributing.md:44
msgid ""
"You have great ideas, yes! Don't be shy and open [a new "
"You have great ideas, yes! Dont be shy and open [a new "
"ticket](https://github.com/FreshRSS/FreshRSS/issues/new) on our bug tracker "
"to ask if we can implement it. The greatest ideas often come from the shyest "
"suggestions!"
@ -204,7 +204,7 @@ msgstr ""
#. type: Plain text
#: en/./contributing.md:46
msgid "If your idea is nice, we'll have a look at it."
msgid "If your idea is nice, well have a look at it."
msgstr ""
#. type: Title ##
@ -228,7 +228,7 @@ msgstr ""
#. type: Plain text
#: en/./contributing.md:54
msgid ""
"We're working on a better way to handle internationalization, but don't "
"Were working on a better way to handle internationalization, but dont "
"hesitate to suggest any ideas!"
msgstr ""
@ -257,7 +257,7 @@ msgstr ""
#: en/./developers/01_First_steps.md:4
msgid ""
"FreshRSS is built with PHP and uses a homemade framework, Minz. The "
"dependencies are directly included in the source code, so you don't need "
"dependencies are directly included in the source code, so you dont need "
"Composer."
msgstr ""
@ -267,14 +267,14 @@ msgid ""
"There are various ways to configure your development environment. The "
"easiest and most supported method is based on Docker, which is the solution "
"documented below. If you already have a working PHP environment, you "
"probably don't need it."
"probably dont need it."
msgstr ""
#. type: Plain text
#: en/./developers/01_First_steps.md:8
msgid ""
"We assume here that you use a GNU/Linux distribution, capable of running "
"Docker. Otherwise, you'll have to adapt the commands accordingly."
"Docker. Otherwise, youll have to adapt the commands accordingly."
msgstr ""
#. type: Plain text
@ -282,7 +282,7 @@ msgstr ""
msgid ""
"The commands that follow have to be executed in a console. They start by `$` "
"when commands need to be executed as normal user, and by `#` when they need "
"to be executed as root user. You don't have to type these characters. A path "
"to be executed as root user. You dont have to type these characters. A path "
"may be indicated before these characters to help you identify where they "
"need to be executed. For instance, `app$ echo 'Hello World'` indicates that "
"you have to execute `echo` command in the `app/` directory."
@ -297,7 +297,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/01_First_steps.md:14
msgid "Once you're done, clone the repository with:"
msgid "Once youre done, clone the repository with:"
msgstr ""
#. type: Code fence info string
@ -337,7 +337,7 @@ msgstr ""
#: en/./developers/01_First_steps.md:29
msgid ""
"This might take some time while Docker downloads the image. If your user "
"isn't in the `docker` group, you'll need to prepend the command with `sudo`."
"isnt in the `docker` group, youll need to prepend the command with `sudo`."
msgstr ""
#. type: Plain text
@ -366,7 +366,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/01_First_steps.md:39
msgid ""
"If you're interested in the configuration, the `make` commands are defined "
"If youre interested in the configuration, the `make` commands are defined "
"in the [`Makefile`](/Makefile)."
msgstr ""
@ -448,15 +448,15 @@ msgstr ""
#. type: Plain text
#: en/./developers/01_First_steps.md:69
msgid ""
"If you want to contribute to the source code, it's important to follow the "
"project's coding style. The actual code doesn't always follow it throughout "
"If you want to contribute to the source code, its important to follow the "
"projects coding style. The actual code doesnt always follow it throughout "
"the project, but we should fix it every time an opportunity presents itself."
msgstr ""
#. type: Plain text
#: en/./developers/01_First_steps.md:71
msgid ""
"Contributions which don't follow the coding style will be rejected as long "
"Contributions which dont follow the coding style will be rejected as long "
"as the coding style is not fixed."
msgstr ""
@ -596,8 +596,8 @@ msgstr ""
#: en/./developers/01_First_steps.md:122
msgid ""
"There should be no spaces in between brackets. There should be no spaces "
"before the opening bracket, except if it's after a keyword. There shouldn't "
"be any spaces after the closing bracket, except if it's followed by a curly "
"before the opening bracket, except if its after a keyword. There shouldnt "
"be any spaces after the closing bracket, except if its followed by a curly "
"bracket."
msgstr ""
@ -624,7 +624,7 @@ msgstr ""
#: en/./developers/01_First_steps.md:136
msgid ""
"It happens most of the time in Javascript files. When there are chained "
"functions with closures and callback functions, it's hard to understand the "
"functions with closures and callback functions, its hard to understand the "
"code if not properly formatted. In those cases, we add a new indent level "
"for the complete instruction and reset the indent for a new instruction on "
"the same level."
@ -840,19 +840,19 @@ msgstr ""
#. type: Plain text
#: en/./developers/02_Github.md:4
msgid ""
"Despite the care given to FreshRSS, it's still possible that bugs occur. The "
"Despite the care given to FreshRSS, its still possible that bugs occur. The "
"project is young and development is dynamic, so it can be corrected "
"quickly. You might also have a feature in mind that doesn't yet "
"quickly. You might also have a feature in mind that does not yet "
"exist. Regardless whether your idea seems silly, far-fetched, useless or too "
"specific, please don't hesitate to propose it to us! \"Ideas in the air\" "
"often find an attentive ear. It's new external perspectives that make the "
"specific, please dont hesitate to propose it to us! \"Ideas in the air\" "
"often find an attentive ear. Its new external perspectives that make the "
"project evolve the most."
msgstr ""
#. type: Plain text
#: en/./developers/02_Github.md:6
msgid ""
"If you're convinced that you should be heard, here's how you can go about "
"If youre convinced that you should be heard, heres how you can go about "
"it."
msgstr ""
@ -867,7 +867,7 @@ msgstr ""
msgid ""
"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!"
"ideas. Lets not neglect this \"social\" aspect!"
msgstr ""
#. type: Bullet: ' 1. '
@ -878,7 +878,7 @@ msgstr ""
#. type: Bullet: ' 2. '
#: en/./developers/02_Github.md:16
msgid ""
"Start by checking if a similar request hasn't already been made. If so, "
"Start by checking if a similar request hasnt already been made. If so, "
"please feel free to add your voice to the request."
msgstr ""
@ -892,7 +892,7 @@ msgstr ""
#. type: Bullet: ' 4. '
#: en/./developers/02_Github.md:16
msgid ""
"Finally, write your request. If you're fluent in English, it's the preferred "
"Finally, write your request. If youre fluent in English, its the preferred "
"language because it allows for discussion with the largest number of people."
msgstr ""
@ -956,13 +956,13 @@ msgstr ""
#. type: Bullet: '* '
#: en/./developers/02_Github.md:39
msgid "**Pay attention to spelling**. Even if it's not always easy, try your best!"
msgid "**Pay attention to spelling**. Even if its not always easy, try your best!"
msgstr ""
#. type: Bullet: '* '
#: en/./developers/02_Github.md:39
msgid ""
"**Give an explicit title to your request**, even if it's a bit long. This "
"**Give an explicit title to your request**, even if its a bit long. This "
"not only helps us understand your request, but also to find your ticket "
"later."
msgstr ""
@ -971,8 +971,8 @@ msgstr ""
#: en/./developers/02_Github.md:39
msgid ""
"**One request = one ticket.** You may have lots of ideas while being afraid "
"to spam the bug manager: it doesn't matter. It's better to have a few too "
"many tickets than too many requests in one. We'll close and consolidate "
"to spam the bug manager: it doesnt matter. Its better to have a few too "
"many tickets than too many requests in one. Well close and consolidate "
"requests when possible."
msgstr ""
@ -988,7 +988,7 @@ msgstr ""
#. type: Bullet: '* '
#: en/./developers/02_Github.md:39
msgid ""
"If you can't find the log files, specify it in your ticket so we know you've "
"If you cant find the log files, specify it in your ticket so we know youve "
"already searched."
msgstr ""
@ -1009,7 +1009,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/02_Github.md:41
msgid ""
"In addition, when facing a bug, you're encouraged to follow this message "
"In addition, when facing a bug, youre encouraged to follow this message "
"format (from the [Sam & Max "
"website](http://sametmax.com/template-de-demande-daide-en-informatique/):"
msgstr ""
@ -1017,7 +1017,7 @@ msgstr ""
#. type: Title ###
#: en/./developers/02_Github.md:42
#, no-wrap
msgid "What's my goal?"
msgid "Whats my goal?"
msgstr ""
#. type: Plain text
@ -1045,7 +1045,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/02_Github.md:53
msgid ""
"The bug: what you see that shouldn't have happened. Here you can provide the "
"The bug: what you see that shouldnt have happened. Here you can provide the "
"logs."
msgstr ""
@ -1093,7 +1093,7 @@ msgstr ""
#. type: Bullet: ' 5. '
#: en/./developers/02_Github.md:67
msgid "Which distribution runs on the server? And... which version?"
msgid "Which distribution runs on the server? And which version?"
msgstr ""
#. type: Title #
@ -1115,7 +1115,7 @@ msgstr ""
#. type: Bullet: '* '
#: en/./developers/02_Github.md:77
msgid "[GitHub's blog post](https://github.com/blog/120-new-to-git)"
msgid "[GitHubs blog post](https://github.com/blog/120-new-to-git)"
msgstr ""
#. type: Bullet: '* '
@ -1414,7 +1414,7 @@ msgid ""
"(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 "
"section if you dont need to use a feature in your extension (if you dont "
"need to translate your extension, no need to know more about the "
"`Minz_Translate` module for example)."
msgstr ""
@ -1796,7 +1796,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/03_Backend/05_Extensions.md:210
msgid ""
"It is common (and that's an understatement) to want to show some text to the "
"It is common (and thats 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 "
@ -1858,8 +1858,8 @@ msgstr ""
#. type: Plain text
#: en/./developers/03_Backend/05_Extensions.md:224
msgid ""
"The translation files are quite simple: it's only a matter of returning a "
"PHP table containing the translations. As an example, here's an extract from "
"The translation files are quite simple: its only a matter of returning a "
"PHP table containing the translations. As an example, heres an extract from "
"`app/i18n/fr/gen.php`:"
msgstr ""
@ -1922,7 +1922,7 @@ msgstr ""
msgid ""
"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 "
"gives a value to the higher-level identifier. Its 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."
@ -1943,8 +1943,8 @@ msgstr ""
#. type: Plain text
#: en/./developers/03_Backend/05_Extensions.md:265
msgid ""
"Here we are! We've talked about the most useful features of Minz and how to "
"run FreshRSS correctly and it's about time to address the extensions "
"Here we are! Weve talked about the most useful features of Minz and how to "
"run FreshRSS correctly and its about time to address the extensions "
"themselves."
msgstr ""
@ -2097,7 +2097,7 @@ msgstr ""
#. type: Bullet: '* '
#: en/./developers/03_Backend/05_Extensions.md:313
msgid ""
"`author`: your name, your e-mail address ... but there is no specific format "
"`author`: your name, your e-mail address but there is no specific format "
"to adopt"
msgstr ""
@ -2296,7 +2296,7 @@ msgstr ""
msgid ""
"`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 "
"way a website known to have feeds which does not advertise it in the header "
"can still be automatically supported."
msgstr ""
@ -2408,7 +2408,7 @@ msgstr ""
#: en/./developers/03_Running_tests.md:4
msgid ""
"FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be "
"merged in `edge` if the tests don't pass."
"merged in `edge` if the tests dont pass."
msgstr ""
#. type: Title ##
@ -2442,7 +2442,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/03_Running_tests.md:16
msgid ""
"Then, it executes PHPUnit in a Docker container. If you don't use Docker, "
"Then, it executes PHPUnit in a Docker container. If you dont use Docker, "
"you can run the command directly with:"
msgstr ""
@ -2464,13 +2464,13 @@ msgid ""
"Tests are automatically run when you open a pull request on GitHub. It is "
"done with [Travis CI](https://travis-ci.org/FreshRSS/FreshRSS/). This is "
"done to ensure there is no regressions in your code. We cannot merge a PR if "
"the tests fail so we'll ask you to fix bugs before to review your code."
"the tests fail so we will ask you to fix bugs before to review your code."
msgstr ""
#. type: Plain text
#: en/./developers/03_Running_tests.md:25
msgid ""
"If you're interested in, you can take a look at [the configuration "
"If youre interested in, you can take a look at [the configuration "
"file](https://github.com/FreshRSS/FreshRSS/blob/edge/.travis.yml)."
msgstr ""
@ -2519,7 +2519,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:4
msgid ""
"So you want to propose a patch to the community? It's time to open a [pull "
"So you want to propose a patch to the community? Its time to open a [pull "
"request](https://github.com/FreshRSS/FreshRSS/pulls)!"
msgstr ""
@ -2529,7 +2529,7 @@ msgid ""
"When you open a PR, your message will be prefilled with a message based on "
"[a "
"template](https://github.com/FreshRSS/FreshRSS/blob/edge/docs/pull_request_template.md). "
"It contains a checklist to make sure you didn't forget anything. It is very "
"It contains a checklist to make sure you didnt forget anything. It is very "
"important to verify you did everything mentioned so documentation is "
"up-to-date, the commit history stays clear and the code is always stable."
msgstr ""
@ -2556,8 +2556,8 @@ msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:14
msgid ""
"If you have any doubt, please let us know and we'll help you! We all began "
"with Git one day and it's not an easy thing to work with."
"If you have any doubt, please let us know and well help you! We all began "
"with Git one day and its not an easy thing to work with."
msgstr ""
#. type: Title ###
@ -2571,7 +2571,7 @@ msgstr ""
msgid ""
"Rebasing is the cleanest method because the Git history will be completely "
"linear and consequently easier to read and navigate. It might also be more "
"difficult if you're not at ease with Git since conflicts are harder to "
"difficult if youre not at ease with Git since conflicts are harder to "
"resolve."
msgstr ""
@ -2616,7 +2616,7 @@ msgstr ""
msgid ""
"If you prefer, you can simply merge `edge` into your own branch. Conflicts "
"might be easier to resolve, but your Git history will be less "
"readable. Don't worry, we'll take care of it before merging your PR back "
"readable. Dont worry, we will take care of it before merging your PR back "
"into `edge`."
msgstr ""
@ -2644,7 +2644,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:48
msgid ""
"It's important to have proper commit messages in order to facilitate later "
"Its important to have proper commit messages in order to facilitate later "
"debugging, so please read the following advice. Commit messages should "
"explain the choices made in the past (the “why?”)"
msgstr ""
@ -2653,7 +2653,7 @@ msgstr ""
#: en/./developers/04_Pull_requests.md:50
msgid ""
"The first line should start with a verb (e.g., \"Add\") and explain the "
"objective of the commit in few words. It's usually less than 50 characters "
"objective of the commit in few words. Its usually less than 50 characters "
"so it remains concise. You can consider this line the subject of your "
"commit. Think of it as the second part of a sentence that starts with the "
"words \"This commit will.\""
@ -2667,7 +2667,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:54
msgid ""
"Then, insert a blank line, and start to write the body. It's usually wrapped "
"Then, insert a blank line, and start to write the body. Its usually wrapped "
"at 72 characters, but you are pretty free in the tone of the message. The "
"body is the place where you can clarify the context of your patch. For "
"instance, you can explain what you were doing when you identified a bug, or "
@ -2699,7 +2699,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:62
msgid ""
"FreshRSS has few tests for now, but we're working on it. We added this point "
"FreshRSS has few tests for now, but were working on it. We added this point "
"to the checklist to help us to write more tests, and we would really "
"appreciate it if you wrote a test that ensures your patch is working."
msgstr ""
@ -2714,7 +2714,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:66
msgid ""
"You'll find more information on how to run tests [in this "
"Youll find more information on how to run tests [in this "
"document](03_Running_tests.md)."
msgstr ""
@ -2722,7 +2722,7 @@ msgstr ""
#: en/./developers/04_Pull_requests.md:68
msgid ""
"Feel free to ask us for assistance. Not everything will be easy to test, so "
"don't spend too much time on this."
"dont spend too much time on this."
msgstr ""
#. type: Title ##
@ -2735,15 +2735,15 @@ msgstr ""
#: en/./developers/04_Pull_requests.md:72
msgid ""
"A friendly project should have correct and complete documentation, so "
"newcomers don't have to ask too many questions, and users can find answers "
"newcomers dont have to ask too many questions, and users can find answers "
"to their problems. The documentation should not be written “later” or "
"chances are it'll never be."
"chances are itll never be."
msgstr ""
#. type: Plain text
#: en/./developers/04_Pull_requests.md:73
msgid ""
"Our documentation can still be improved quite a bit, so you're very welcome "
"Our documentation can still be improved quite a bit, so youre very welcome "
"if you want to help."
msgstr ""
@ -2756,7 +2756,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:4
msgid ""
"In order to get as much feedback as possible before a release, it's "
"In order to get as much feedback as possible before a release, its "
"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)). "
@ -2765,7 +2765,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:6
msgid "It's also recommended to make the announcement on mailing@freshrss.org."
msgid "Its also recommended to make the announcement on mailing@freshrss.org."
msgstr ""
#. type: Title #
@ -2819,7 +2819,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:30
msgid ""
"It's important to update update.freshrss.org since this is the default "
"Its important to update update.freshrss.org since this is the default "
"service for automatic FreshRSS updates."
msgstr ""
@ -2850,7 +2850,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:38
msgid ""
"In order to write a new script, it's better to copy/paste the last version "
"In order to write a new script, its better to copy/paste the last version "
"or to start from `update_to_dev.php`. The first thing to do is to define the "
"URL from which the FreshRSS package will be downloaded (`PACKAGE_URL`). The "
"URL is in the form of "
@ -2910,14 +2910,14 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:50
msgid ""
"Once the script has been written and versioned, it's necessary to update the "
"Once the script has been written and versioned, its necessary to update the "
"`./versions.php' file which contains a mapping table indicating which "
"versions are updated to which other versions."
msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:52
msgid "Here's an example of a `versions.php` file:"
msgid "Heres an example of a `versions.php` file:"
msgstr ""
#. type: Plain text
@ -2929,7 +2929,7 @@ msgid ""
"\t// STABLE\n"
"\t'0.8.0' => '1.0.0',\n"
"\t'0.8.1' => '1.0.0',\n"
"\t'1.0.0' => '1.0.1', // doesn't exist (yet)\n"
"\t'1.0.0' => '1.0.1', // does not exist (yet)\n"
"\t// DEV\n"
"\t'1.1.2-dev' => 'dev',\n"
"\t'1.1.3-dev' => 'dev',\n"
@ -2939,7 +2939,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:68
msgid "And here's how this table works:"
msgid "And heres how this table works:"
msgstr ""
#. type: Bullet: '* '
@ -2960,14 +2960,14 @@ msgstr ""
#. type: Bullet: '* '
#: en/./developers/05_Release_new_version.md:74
msgid ""
"it's possible to skip several versions at once, provided that the update "
"its possible to skip several versions at once, provided that the update "
"scripts support it;"
msgstr ""
#. type: Bullet: '* '
#: en/./developers/05_Release_new_version.md:74
msgid ""
"it's advisable to indicate the correspondence of the current version to its "
"its advisable to indicate the correspondence of the current version to its "
"potential future version by specifying that this version does not yet "
"exist. As long as the corresponding script does not exist, nothing will "
"happen."
@ -2976,7 +2976,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:76
msgid ""
"It's **very strongly** recommended to keep this file organized according to "
"Its **very strongly** recommended to keep this file organized according to "
"version numbers by separating stable and dev versions."
msgstr ""
@ -2989,16 +2989,16 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:80
msgid ""
"Before updating update.freshrss.org, it's better to test with "
"Before updating update.freshrss.org, its better to test with "
"dev.update.freshrss.org, which corresponds to pre-production. So update "
"dev.update.freshrss.org and change the `FRESHRSS_UPDATE_WEBSITE` URL of your "
"FreshRSS instance. Start the update and check that it's running correctly."
"FreshRSS instance. Start the update and check that its running correctly."
msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:82
msgid ""
"When you're satisfied, update update.freshrss.org with the new script, test "
"When youre satisfied, update update.freshrss.org with the new script, test "
"it again, and then move on."
msgstr ""
@ -3031,7 +3031,7 @@ msgstr ""
#. type: Plain text
#: en/./developers/05_Release_new_version.md:93
msgid "When everything's working, it's time to announce the release to the world!"
msgid "When everythings working, its time to announce the release to the world!"
msgstr ""
#. type: Bullet: '* '
@ -3196,7 +3196,7 @@ msgstr ""
#. type: Plain text
#: en/./users/02_First_steps.md:2
msgid ""
"Learning how to handle a new application is not always easy. We've tried to "
"Learning how to handle a new application is not always easy. Weve tried to "
"make FreshRSS as intuitive as possible, but you might still need a little "
"help to master the program."
msgstr ""
@ -3261,8 +3261,8 @@ msgstr ""
#. type: Plain text
#: en/./users/02_First_steps.md:18
msgid ""
"Now that you've mastered basic use, it's time to configure FreshRSS to "
"improve your reading experience. It's highly configurable, so it's "
"Now that youve mastered basic use, its time to configure FreshRSS to "
"improve your reading experience. Its highly configurable, so its "
"recommended to play around with them to find a configuration that suits you "
"well. Here are a few resources to help you improve your daily FreshRSS "
"experience:"
@ -3559,7 +3559,7 @@ msgstr ""
#: en/./users/03_Main_view.md:92
msgid ""
"When using HTTP authentication, the syntax in the two previous sections is "
"unusable. You'll need to provide your credentials to the scheduled "
"unusable. Youll need to provide your credentials to the scheduled "
"task. **Note that this method is highly discouraged since it means that your "
"credentials will be in plain sight!**"
msgstr ""
@ -3581,7 +3581,7 @@ msgstr ""
#. type: Plain text
#: en/./users/03_Main_view.md:100
msgid ""
"If you can't or don't want to use the automatic method, you can update "
"If you cant or dont want to use the automatic method, you can update "
"manually. There are two methods for updating all or some of the feeds."
msgstr ""
@ -3642,7 +3642,7 @@ msgstr ""
#. type: Plain text
#: en/./users/03_Main_view.md:120
msgid ""
"When the number of articles stored by FreshRSS inevitably grows larger, it's "
"When the number of articles stored by FreshRSS inevitably grows larger, its "
"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."
@ -3727,8 +3727,8 @@ msgstr ""
#: en/./users/03_Main_view.md:144
msgid ""
"In version 0.7, attribute filters are available in the article display "
"dropdown list. With this version, it's not possible to combine filters. For "
"instance, it's not possible to display only read and favorite articles."
"dropdown list. With this version, its not possible to combine filters. For "
"instance, its not possible to display only read and favorite articles."
msgstr ""
#. type: Plain text
@ -3913,7 +3913,7 @@ msgstr ""
#: en/./users/04_Subscriptions.md:16
msgid ""
"Drag the \"Subscribe\" button to your bookmark toolbar or right click and "
"choose your browser's \"Bookmark link\" action."
"choose your browsers \"Bookmark link\" action."
msgstr ""
#. type: Title #
@ -3940,7 +3940,7 @@ msgid ""
"FreshRSS is currently available in 14 languages. After confirming your "
"choice, the interface will be displayed in your preferred language. "
"Depending on the language chosen, parts of the interface may not be not "
"translated yet. If you're willing to help translate the missing bits or "
"translated yet. If youre willing to help translate the missing bits or "
"would like to add a new language, please take a look at how you can "
"[contribute to the "
"project](../contributing.md#contribute-to-internationalization-i18n)."
@ -3949,7 +3949,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:11
msgid ""
"Some parts of FreshRSS aren't translated and aren't intended to be "
"Some parts of FreshRSS arent translated and arent intended to be "
"translated either. For now, this includes the logs visible in the "
"application as well as the log generated by automatic update scripts."
msgstr ""
@ -3970,7 +3970,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:17
msgid ""
"There's no accounting for tastes, which is why FreshRSS offers eight "
"Theres no accounting for tastes, which is why FreshRSS offers eight "
"official themes:"
msgstr ""
@ -4017,7 +4017,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:28
msgid ""
"If you can't find any themes you like, it's always possible to [create your "
"If you cant find any themes you like, its always possible to [create your "
"own](../developers/04_Frontend/02_Design.md)."
msgstr ""
@ -4039,7 +4039,7 @@ msgstr ""
#: en/./users/05_Configuration.md:34
msgid ""
"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 "
"available screen space. To satisfy the maximum number of people, its "
"possible to customize the width of the displayed content. There are four "
"settings available:"
msgstr ""
@ -4090,7 +4090,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:52
msgid ""
"If you disable every item in the top line, you'll still be able to see it "
"If you disable every item in the top line, youll still be able to see it "
"since it contains the feed name and the article title. But if you do the "
"same thing for the bottom line, it will be empty."
msgstr ""
@ -4136,7 +4136,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:66
msgid ""
"If you don't use those buttons because you never browse on mobile or because "
"If you dont use those buttons because you never browse on mobile or because "
"you browse with gestures, you can disable them from the interface."
msgstr ""
@ -4233,7 +4233,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:102
msgid ""
"Of course, if you're not satisfied with the key mapping, you can change you "
"Of course, if youre not satisfied with the key mapping, you can change you "
"configuration to fit your needs."
msgstr ""
@ -4269,10 +4269,10 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:112
msgid ""
"It's worth noting that the share article action has two levels. Once you "
"Its 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."
"only one option, its selected automatically though."
msgstr ""
#. type: Plain text
@ -4284,7 +4284,7 @@ msgstr ""
#: en/./users/05_Configuration.md:117
msgid ""
"Be aware that there is no validation on the selected shortcuts. This means "
"that if you assign a shortcut to more than one action, you'll end up with "
"that if you assign a shortcut to more than one action, youll end up with "
"some unexpected behavior."
msgstr ""
@ -4401,7 +4401,7 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:167
msgid ""
"This question comes up regularly, so we'll try to clarify how one can "
"This question comes up regularly, so we will try to clarify how one can "
"retrieve a truncated RSS feed with FreshRSS. Please note that the process is "
"absolutely not user friendly, but it works. :)"
msgstr ""
@ -4409,16 +4409,16 @@ msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:169
msgid ""
"Please be aware that this way you'll generate much more traffic to the "
"Please be aware that this way youll generate much more traffic to the "
"originating sites, and they might block you accordingly. FreshRSS "
"performance is also negatively affected, because you'll have to fetch the "
"full article content one by one. So it's a feature to use sparingly!"
"performance is also negatively affected, because youll have to fetch the "
"full article content one by one. So its a feature to use sparingly!"
msgstr ""
#. type: Plain text
#: en/./users/05_Configuration.md:171
msgid ""
"What's meant by \"CSS path of articles on the original site\" actually "
"Whats 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 "
@ -4446,10 +4446,10 @@ msgstr ""
#, no-wrap
msgid ""
"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 "
"article is ```<div class=\"content clearfix\">```. Well only use the "
"`.content` class here. Nevertheless, as said above, its 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 "
"id=\"article\">``` and thats perfect! The path will be ```#article "
".content```.\n"
msgstr ""
@ -4526,7 +4526,7 @@ msgstr ""
msgid ""
"There are many RSS clients that support the Fever API, but they seem to "
"understand the Fever API a bit differently. If your favourite client "
"doesn't work properly with this API, please create an issue and we'll have a "
"does not work properly with this API, please create an issue and we will have a "
"look. But we can **only** do that for free clients."
msgstr ""
@ -4762,7 +4762,7 @@ msgstr ""
#. type: Plain text
#: en/./users/06_Fever_API.md:88
msgid ""
"Perfect, you're now authenticated and you can start testing the more "
"Perfect, youre now authenticated and you can start testing the more "
"advanced features. To do so, change the URL and append the possible API "
"actions to your request parameters. Please refer to the [original Fever "
"documentation](https://feedafever.com/api) for more information."
@ -5083,7 +5083,7 @@ msgstr ""
#. type: Plain text
#: en/./users/07_Frequently_Asked_Questions.md:6
msgid "Of course, ```/i``` has a purpose! It's used for performance and usability:"
msgid "Of course, ```/i``` has a purpose! Its used for performance and usability:"
msgstr ""
#. type: Bullet: '* '
@ -5134,7 +5134,7 @@ msgstr ""
#: en/./users/07_Frequently_Asked_Questions.md:17
msgid ""
"As explained in the [security "
"section](/en/User_documentation/Installation/Security), it's highly "
"section](/en/User_documentation/Installation/Security), its 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 "
@ -5166,24 +5166,24 @@ msgstr ""
msgid ""
"__Verify if the feed syntax is valid__ with the [W3C on-line "
"tool](https://validator.w3.org/feed/ \"RSS and Atom feed validator\"). If "
"it's not valid, there's nothing we can do."
"its not valid, theres nothing we can do."
msgstr ""
#. type: Bullet: '1. '
#: en/./users/07_Frequently_Asked_Questions.md:30
msgid ""
"__Verify SimplePie validation__ with the [SimplePie on-line "
"tool](https://simplepie.org/demo/ \"SimplePie official demo\"). If it's not "
"recognized, there's nothing we can do."
"tool](https://simplepie.org/demo/ \"SimplePie official demo\"). If its not "
"recognized, theres nothing we can do."
msgstr ""
#. type: Bullet: '1. '
#: en/./users/07_Frequently_Asked_Questions.md:30
msgid ""
"__Verify FreshRSS integration__ with the [demo](https://demo.freshrss.org "
"\"FreshRSS official demo\"). If it's not working, you need to [create an "
"\"FreshRSS official demo\"). If its not working, you need to [create an "
"issue on Github](https://github.com/FreshRSS/FreshRSS/issues/new \"Create an "
"issue for FreshRSS\") so we can have a look at it. If it's working, there's "
"issue for FreshRSS\") so we can have a look at it. If its working, theres "
"probably something fishy with the hosting server."
msgstr ""
@ -5235,8 +5235,8 @@ msgstr ""
msgid ""
"Some Linux distribution, like Fedora or RedHat Enterprise Linux, have "
"SELinux enabled. This acts similar to a firewall application, so that "
"applications can't write or modify files under certain conditions. While "
"installing FreshRSS, step 2 can fail if the httpd process can't write to "
"applications cant write or modify files under certain conditions. While "
"installing FreshRSS, step 2 can fail if the httpd process cannot write to "
"some data sub-directories. The following command should be executed as root "
"to fix this problem:"
msgstr ""

View File

@ -1120,7 +1120,7 @@ if ($pathInfos[1] === 'accounts') {
//StreamId to operate on. The parameter may be repeated to edit multiple subscriptions at once
$streamNames = empty($_POST['s']) && isset($_GET['s']) ? array($_GET['s']) : multiplePosts('s');
/* Title to use for the subscription. For the `subscribe` action,
* if not specified then the feed's current title will be used. Can
* if not specified then the feeds current title will be used. Can
* be used with the `edit` action to rename a subscription */
$titles = empty($_POST['t']) && isset($_GET['t']) ? array($_GET['t']) : multiplePosts('t');
$action = $_REQUEST['ac']; //Action to perform on the given StreamId. Possible values are `subscribe`, `unsubscribe` and `edit`

View File

@ -35,7 +35,7 @@ function load_panel(link) {
panel.classList.add('visible');
// force le démarrage du scroll en haut.
// Sans ça, si l'on scroll en lisant une catégorie par exemple,
// Sans ça, si lon scroll en lisant une catégorie par exemple,
// en en ouvrant une autre ensuite, on se retrouve au même point de scroll
panel.scrollTop = 0;
document.documentElement.scrollTop = 0;

View File

@ -435,7 +435,7 @@ function toggleContent(new_active, old_active, skipping) {
}
if (skipping) {
// when skipping, this feels more natural if it's not so near the top
// when skipping, this feels more natural if its not so near the top
new_pos -= document.body.clientHeight / 4;
}
if (relative_move) {

View File

@ -5,7 +5,7 @@
function initCharts() {
if (!window.Chart) {
if (window.console) {
console.log('FreshRSS is waiting for Chart.js...');
console.log('FreshRSS is waiting for Chart.js');
}
window.setTimeout(initCharts, 25);
return;

View File

@ -101,7 +101,7 @@
}
.tree .tree-folder .tree-folder-items .dropdown-menu {
// tout ça sert à restaurer l'apparence du dropdown dans un contexte de sidebar sombre
// tout ça sert à restaurer lapparence du dropdown dans un contexte de sidebar sombre
.item {
padding: 0;
@ -148,7 +148,7 @@
.alert-warn {
background: $warning-light;
color: $warning-text;
border: 1px solid unquote($warning-text+'33'); // on ajoute l'opacité à la fin
border: 1px solid unquote($warning-text+'33'); // on ajoute lopacité à la fin
}
.alert-success {

View File

@ -40,7 +40,7 @@
line-height: 1.2em;
}
a[href="./"] { // C'est le bouton "Retour à vos flux"
a[href="./"] { // Cest le bouton "Retour à vos flux"
margin: 0;
padding: 0.75rem 1.5rem;
background: $grey-lighter;

View File

@ -9,7 +9,7 @@ $main-first-darker: #221f1d; // var pour les hovers
// les couleurs de polices liées
$main-font-color: #363330;
$light-font-color: #6d655f;
$white: #fff; // le blanc (des fois qu'on aurait envie de le teinter un peu)
$white: #fff; // le blanc (des fois quon aurait envie de le teinter un peu)
// toute la palette des gris, très utile
// on essaiera de teinter ces gris suivant la couleur principale
@ -25,7 +25,7 @@ $unread-font-color: #161a38;
$unread-bg: #f2f6f8;
$unread-bg-light: #fdfdfe;
// les couleurs d'alertes (rouge, jaune, vert)
// les couleurs dalertes (rouge, jaune, vert)
$alert-bg: #f5633e; // la base
$alert-light: #fde0d8; // +light
$alert-text: #73341f; // +foncé
@ -42,10 +42,10 @@ $success-text: #0c7556;
$fav-bg: #ffc300;
$fav-light: #fff6da;
// la couleur de sidebar, utile si on a envie d'un thème qui aurait une sidebar foncé, e.g.
// la couleur de sidebar, utile si on a envie dun thème qui aurait une sidebar foncé, e.g.
$sid-font-color: #363330; // la couleur de fond de la barre de gauche et du header
$sid-bg: #fbf9f6; // le background général de la barre de gauche, et du header
$sid-bg-alt: #f7f2ea; // le background de l'intérieur des groupes
$sid-bg-alt: #f7f2ea; // le background de lintérieur des groupes
$sid-bg-dark: #efe3d3; // les hovers
$sid-sep: #f0e7da; // les séparateurs
$sid-active: $main-first; // la couleur active

View File

@ -1,7 +1,7 @@
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/)**
**Cest un cocktail (bis)! Cest la version plus “fresh” de [Screwdriver](https://github.com/misterair/Screwdriver). Cest… cest… un thème pour lagrégateur de flux RSS [FreshRSS](https://github.com/FreshRSS/FreshRSS/)**
En toute modestie, ce thème tue du Nyan Cat.
@ -12,7 +12,7 @@ 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;
2. Allez dans les paramètres dAffichage 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é*)

View File

@ -1,7 +1,7 @@
{
"name": "Blue Lagoon",
"author": "Mister aiR",
"description": "C'est un cocktail (bis)! C'est la version plus fresh de Screwdriver. C'est... c'est... un thème pour l'agrégateur de flux RSS FreshRSS. En toute modestie, ce thème tue du Nyan Cat.",
"description": "Cest un cocktail (bis)! Cest la version plus fresh de Screwdriver. Cest… cest… un thème pour lagrégateur de flux RSS FreshRSS. En toute modestie, ce thème tue du Nyan Cat.",
"version": 1.0,
"files": ["_template.css","BlueLagoon.css"]
}

View File

@ -100,7 +100,7 @@
}
.tree .tree-folder .tree-folder-items .dropdown-menu {
// tout ça sert à restaurer l'apparence du dropdown dans un contexte de sidebar sombre
// tout ça sert à restaurer lapparence du dropdown dans un contexte de sidebar sombre
.item {
padding: 0;
@ -147,7 +147,7 @@
.alert-warn {
background: $warning-light;
color: $warning-text;
border: 1px solid unquote($warning-text+'33'); // on ajoute l'opacité à la fin
border: 1px solid unquote($warning-text+'33'); // on ajoute lopacité à la fin
}
.alert-success {

View File

@ -40,7 +40,7 @@
line-height: 1.2em;
}
a[href="./"] { // C'est le bouton "Retour à vos flux"
a[href="./"] { // Cest le bouton "Retour à vos flux"
margin: 0;
padding: 0.75rem 1.5rem;
background: $grey-lighter;

View File

@ -9,7 +9,7 @@ $main-first-darker: #1d1e22; // var pour les hovers
// les couleurs de polices liées
$main-font-color: #303136;
$light-font-color: #5b6871;
$white: #fff; // le blanc (des fois qu'on aurait envie de le teinter un peu)
$white: #fff; // le blanc (des fois quon aurait envie de le teinter un peu)
// toute la palette des gris, très utile
// on essaiera de teinter ces gris suivant la couleur principale
@ -25,7 +25,7 @@ $unread-font-color: $main-first;
$unread-bg: #f2f6f8;
$unread-bg-light: #fdfdfe;
// les couleurs d'alertes (rouge, jaune, vert)
// les couleurs dalertes (rouge, jaune, vert)
$alert-bg: #f5633e; // la base
$alert-light: #fde0d8; // +light
$alert-text: #73341f; // +foncé
@ -42,10 +42,10 @@ $success-text: #0c7540;
$fav-bg: #ffc300;
$fav-light: #fff6da;
// la couleur de sidebar, utile si on a envie d'un thème qui aurait une sidebar foncé, e.g.
// la couleur de sidebar, utile si on a envie dun thème qui aurait une sidebar foncé, e.g.
$sid-font-color: #fff; // la couleur de fond de la barre de gauche et du header
$sid-bg: #303136; // le background général de la barre de gauche, et du header
$sid-bg-alt: #26272a; // le background de l'intérieur des groupes
$sid-bg-alt: #26272a; // le background de lintérieur des groupes
$sid-bg-dark: #17181a; // les hovers
$sid-sep: #3f3f3f; // les séparateurs
$sid-active: $main-first; // la couleur active

View File

@ -1,7 +1,7 @@
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 [FreshRSS](https://github.com/FreshRSS/FreshRSS/)!!**
**Cest un cocktail! Cest chaud mais “fresh” à la fois. Cest… cest… un thème pour lagrégateur de flux RSS [FreshRSS](https://github.com/FreshRSS/FreshRSS/)!!**
En toute modestie, ce thème tue du chaton.
@ -12,7 +12,7 @@ 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;
2. Allez dans les paramètres dAffichage et changez de thème;
3. Profitez de votre Screwdriver!
4. Remontez les problèmes sur Github (facultatif mais fortement apprécié)

View File

@ -1,7 +1,7 @@
{
"name": "Screwdriver",
"author": "Mister aiR",
"description": "C'est un cocktail ! C'est chaud mais « fresh » à la fois. Ce thème tue du chaton.",
"description": "Cest un cocktail ! Cest chaud mais « fresh » à la fois. Ce thème tue du chaton.",
"version": 1.1,
"files": ["_template.css","screwdriver.css"]
}

View File

@ -8,5 +8,5 @@ A base theme for [FreshRSS](https://freshrss.org)
3. Choose your new theme in FreshRSS configuration
4. Enjoy your wonderful theme!
Don't hesitate to share your theme with us [on Github](https://github.com/FreshRSS/FreshRSS/issues) :)
Dont hesitate to share your theme with us [on Github](https://github.com/FreshRSS/FreshRSS/issues) :)

View File

@ -28,7 +28,7 @@
<rule ref="Generic.Files.LineLength">
<!-- For language strings maximum line lengths make little sense. -->
<exclude-pattern>./app/i18n/</exclude-pattern>
<!-- Don't enforce line length on the HTML; the point is to improve legibility, not reduce it -->
<!-- Dont enforce line length on the HTML; the point is to improve legibility, not reduce it -->
<exclude-pattern>*.phtml$</exclude-pattern>
<properties>
<property name="lineLimit" value="165"/>