소스 검색

More WebSub doc (#5862)

* More WebSub doc

* UI for WebSub + more documentation
And spellcheck Frech

* Links to WebSub doc from readme

* Add link to WebSub doc in admin interface

* Fix checkbox

* Plural
Alexandre Alapetite 2 년 전
부모
커밋
618ce380e7

+ 2 - 2
README.fr.md

@@ -12,7 +12,7 @@ Il se veut léger et facile à prendre en main tout en étant un outil puissant
 Il permet de gérer plusieurs utilisateurs, dispose d’un mode de lecture anonyme, et supporte les étiquettes personnalisées.
 Il y a une API pour les clients (mobiles), ainsi qu’une [interface en ligne de commande](cli/README.md).
 
-Grâce au standard [WebSub](https://www.w3.org/TR/websub/) (anciennement [PubSubHubbub](https://github.com/pubsubhubbub/PubSubHubbub)),
+Grâce au standard [WebSub](https://freshrss.github.io/FreshRSS/fr/users/08_PubSubHubbub.html),
 FreshRSS est capable de recevoir des notifications push instantanées depuis les sources compatibles, [Friendica](https://friendi.ca), [WordPress](https://wordpress.org/plugins/pubsubhubbub/), Blogger, Medium, etc.
 
 FreshRSS supporte nativement le moissonnage du Web (Web Scraping) basique, basé sur [XPath](https://www.w3.org/TR/xpath-10/), pour les sites Web sans flux RSS / Atom.
@@ -22,7 +22,7 @@ Plusieurs [méthodes de connexion](https://freshrss.github.io/FreshRSS/en/admins
 Enfin, FreshRSS permet l’ajout d’[extensions](#extensions) pour encore plus de personnalisation.
 
 * Site officiel : <https://freshrss.org>
-* Démo : <http://demo.freshrss.org/>
+* Démo : <https://demo.freshrss.org>
 * Licence : [GNU AGPL 3](https://www.gnu.org/licenses/agpl-3.0.fr.html)
 
 ![Logo de FreshRSS](docs/img/FreshRSS-logo.png)

+ 2 - 2
README.md

@@ -12,7 +12,7 @@ It is lightweight, easy to work with, powerful, and customizable.
 It is a multi-user application with an anonymous reading mode. It supports custom tags.
 There is an API for (mobile) clients, and a [Command-Line Interface](cli/README.md).
 
-Thanks to the [WebSub](https://www.w3.org/TR/websub/) standard (formerly [PubSubHubbub](https://github.com/pubsubhubbub/PubSubHubbub)),
+Thanks to the [WebSub](https://freshrss.github.io/FreshRSS/en/users/WebSub.html) standard,
 FreshRSS is able to receive instant push notifications from compatible sources, such as [Friendica](https://friendi.ca), [WordPress](https://wordpress.org/plugins/pubsubhubbub/), Blogger, Medium, etc.
 
 FreshRSS natively supports basic Web scraping, based on [XPath](https://www.w3.org/TR/xpath-10/), for Web sites not providing any RSS / Atom feed.
@@ -22,7 +22,7 @@ Different [login methods](https://freshrss.github.io/FreshRSS/en/admins/09_Acces
 Finally, FreshRSS supports [extensions](#extensions) for further tuning.
 
 * Official website: <https://freshrss.org>
-* Demo: <https://demo.freshrss.org/>
+* Demo: <https://demo.freshrss.org>
 * License: [GNU AGPL 3](https://www.gnu.org/licenses/agpl-3.0.html)
 
 ![FreshRSS logo](docs/img/FreshRSS-logo.png)

+ 3 - 0
app/i18n/cz/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Aktualizace systému',

+ 3 - 0
app/i18n/de/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">sind aktiv</a>',
 			'help' => 'So werden die <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">Nutzungsbedingungen aktiviert</a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'System aktualisieren',

+ 3 - 0
app/i18n/el/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Ενημέρωση συστήματος',

+ 1 - 1
app/i18n/el/sub.php

@@ -169,7 +169,7 @@ return array(
 		'useragent_help' => 'Example: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',	// TODO
 		'validator' => 'Check the validity of the feed',	// TODO
 		'website' => 'Website URL',	// TODO
-		'websub' => 'Instant notification with WebSub',	// TODO
+		'websub' => 'Instant notifications with WebSub',	// TODO
 	),
 	'import_export' => array(
 		'export' => 'Export',	// TODO

+ 3 - 0
app/i18n/en-us/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// IGNORE
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// IGNORE
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// IGNORE
+		),
 	),
 	'update' => array(
 		'_' => 'Update system',	// IGNORE

+ 1 - 1
app/i18n/en-us/sub.php

@@ -169,7 +169,7 @@ return array(
 		'useragent_help' => 'Example: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',	// IGNORE
 		'validator' => 'Check the validity of the feed',	// IGNORE
 		'website' => 'Website URL',	// IGNORE
-		'websub' => 'Instant notification with WebSub',	// IGNORE
+		'websub' => 'Instant notifications with WebSub',	// IGNORE
 	),
 	'import_export' => array(
 		'export' => 'Export',	// IGNORE

+ 3 - 0
app/i18n/en/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Update FreshRSS',

+ 1 - 1
app/i18n/en/sub.php

@@ -169,7 +169,7 @@ return array(
 		'useragent_help' => 'Example: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
 		'validator' => 'Check the validity of the feed',
 		'website' => 'Website URL',
-		'websub' => 'Instant notification with WebSub',
+		'websub' => 'Instant notifications with WebSub',
 	),
 	'import_export' => array(
 		'export' => 'Export',

+ 3 - 0
app/i18n/es/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">está activado</a>',
 			'help' => 'Cómo <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">activar las Condiciones de servicio</a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Actualizar sistema',

+ 3 - 0
app/i18n/fa/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => ' <a href="./?a=tos">فعال است</a>',
 			'help' => ' نحوه <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">فعال کردن شرایط خدمات </a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => ' FreshRSS را به روز کنید',

+ 5 - 2
app/i18n/fr/admin.php

@@ -161,7 +161,7 @@ return array(
 		'auto-update-url' => 'URL du service de mise à jour',
 		'base-url' => array(
 			'_' => 'URL de la racine',
-			'recommendation' => 'Recommandation automatique: <kbd>%s</kbd>',
+			'recommendation' => 'Recommandation automatique : <kbd>%s</kbd>',
 		),
 		'cookie-duration' => array(
 			'help' => 'en secondes',
@@ -187,12 +187,15 @@ return array(
 			),
 			'title' => 'Formulaire d’inscription utilisateur',
 		),
-		'sensitive-parameter' => 'Paramètre sensible. Éditez manuallement <kbd>./data/config.php</kbd>',
+		'sensitive-parameter' => 'Paramètre sensible. Éditez manuellement <kbd>./data/config.php</kbd>',
 		'tos' => array(
 			'disabled' => 'non renseigné',
 			'enabled' => '<a href="./?a=tos">activées</a>',
 			'help' => 'Comment <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">activer les conditions d’utilisation</a>',
 		),
+		'websub' => array(
+			'help' => 'À propos de <a href="https://freshrss.github.io/FreshRSS/fr/users/08_PubSubHubbub.html" target="_blank">WebSub</a>',
+		),
 	),
 	'update' => array(
 		'_' => 'Système de mise à jour',

+ 1 - 1
app/i18n/fr/conf.php

@@ -204,7 +204,7 @@ return array(
 		'read' => array(
 			'article_open_on_website' => 'lorsque l’article est ouvert sur le site d’origine',
 			'article_viewed' => 'lorsque l’article est affiché',
-			'focus' => 'lorsque l’article est selectionné (sauf pour les flux importants)',
+			'focus' => 'lorsque l’article est sélectionné (sauf pour les flux importants)',
 			'keep_max_n_unread' => 'Nombre maximum d’articles conservés non lus',
 			'scroll' => 'au défilement de la page (sauf pour les flux importants)',
 			'upon_gone' => 'lorsqu’il n’est plus dans le flux d’actualités en amont',

+ 1 - 1
app/i18n/fr/feedback.php

@@ -61,7 +61,7 @@ return array(
 		'feeds_imported_with_errors' => 'Vos flux ont été importés mais des erreurs sont survenues.	Si vous avez fini vos importations, vous pouvez cliquer le bouton <i>Actualiser flux</i>.',
 		'file_cannot_be_uploaded' => 'Le fichier ne peut pas être téléchargé !',
 		'no_zip_extension' => 'L’extension ZIP n’est pas présente sur votre serveur.',
-		'zip_error' => 'Une erreur est survenue durant le traintement du fichier ZIP.',
+		'zip_error' => 'Une erreur est survenue durant le traitement du fichier ZIP.',
 	),
 	'profile' => array(
 		'error' => 'Votre profil n’a pas pu être mis à jour',

+ 2 - 2
app/i18n/fr/sub.php

@@ -78,7 +78,7 @@ return array(
 				'_' => 'HTML + XPath (Moissonnage du Web)',
 				'feed_title' => array(
 					'_' => 'titre de flux',
-					'help' => 'Exemple : <code>//title</code> ou un text statique : <code>"Mon flux personnalisé"</code>',
+					'help' => 'Exemple : <code>//title</code> ou un texte statique : <code>"Mon flux personnalisé"</code>',
 				),
 				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> est un langage de requête pour les utilisateurs avancés, supporté par FreshRSS pour le moissonnage du Web (Web scraping).',
 				'item' => array(
@@ -169,7 +169,7 @@ return array(
 		'useragent_help' => 'Exemple : <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
 		'validator' => 'Vérifier la validité du flux',
 		'website' => 'URL du site',
-		'websub' => 'Notification instantanée par WebSub',
+		'websub' => 'Notifications instantanée par WebSub',
 	),
 	'import_export' => array(
 		'export' => 'Exporter',

+ 3 - 0
app/i18n/he/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'מערכת העדכון',

+ 1 - 1
app/i18n/he/sub.php

@@ -169,7 +169,7 @@ return array(
 		'useragent_help' => 'Example: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',	// TODO
 		'validator' => 'בדיקות תקינות ההזנה',
 		'website' => 'אתר URL',
-		'websub' => 'Instant notification with WebSub',	// TODO
+		'websub' => 'Instant notifications with WebSub',	// TODO
 	),
 	'import_export' => array(
 		'export' => 'ייצוא',

+ 3 - 0
app/i18n/hu/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">engedélyezve</a>',
 			'help' => 'Hogyan kapcsoljuk be a <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">Szolgáltatási feltételeket</a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'FreshRSS Frissítése',

+ 3 - 0
app/i18n/id/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Update system',	// DIRTY

+ 1 - 1
app/i18n/id/sub.php

@@ -169,7 +169,7 @@ return array(
 		'useragent_help' => 'Example: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',	// TODO
 		'validator' => 'Check the validity of the feed',	// TODO
 		'website' => 'Website URL',	// TODO
-		'websub' => 'Instant notification with WebSub',	// TODO
+		'websub' => 'Instant notifications with WebSub',	// TODO
 	),
 	'import_export' => array(
 		'export' => 'Export',	// TODO

+ 3 - 0
app/i18n/it/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Aggiornamento sistema',

+ 3 - 0
app/i18n/ja/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'システムアップデート',

+ 3 - 0
app/i18n/ko/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => '업데이트',

+ 3 - 0
app/i18n/lv/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">ir ieslēgts</a>',
 			'help' => 'Kā iespējot <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">pakalpojumu sniegšanas noteikumus</a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Atjaunināt sistēmu',

+ 3 - 0
app/i18n/nl/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is ingeschakeld</a>',
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">algemene voorwaarden inschakelen</a>',
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Versie controle',

+ 3 - 0
app/i18n/oc/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Sistèma de mesa a jorn',

+ 3 - 0
app/i18n/pl/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Aktualizacja',

+ 3 - 0
app/i18n/pt-br/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Atualização do sistema',

+ 3 - 0
app/i18n/ru/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Обновление системы',

+ 3 - 0
app/i18n/sk/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Aktualizácia systému',

+ 3 - 0
app/i18n/tr/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => 'Sistem güncelleme',

+ 3 - 0
app/i18n/zh-cn/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => '更新系统',

+ 3 - 0
app/i18n/zh-tw/admin.php

@@ -193,6 +193,9 @@ return array(
 			'enabled' => '<a href="./?a=tos">is enabled</a>',	// TODO
 			'help' => 'How to <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">enable the Terms of Service</a>',	// TODO
 		),
+		'websub' => array(
+			'help' => 'About <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',	// TODO
+		),
 	),
 	'update' => array(
 		'_' => '更新系統',

+ 10 - 0
app/views/configure/system.phtml

@@ -31,6 +31,16 @@
 			</div>
 		</div>
 
+		<div class="form-group">
+			<label class="group-name" for="websub"><?= _t('sub.feed.websub') ?></label>
+			<div class="group-controls">
+				<input type="checkbox" id="websub" name="websub" disabled="disabled" <?=
+					FreshRSS_Context::$system_conf->pubsubhubbub_enabled && Minz_Request::serverIsPublic(FreshRSS_Context::$system_conf->base_url) ? 'checked="checked"' : '' ?> />
+					<p class="help"><?= _i('help') ?> <?= _t('admin.system.websub.help') ?></p>
+					<p class="help"><?= _i('help') ?> <?= _t('admin.system.sensitive-parameter') ?></p>
+			</div>
+		</div>
+
 		<div class="form-group">
 			<label class="group-name" for="auto-update-url"><?= _t('admin.system.auto-update-url') ?></label>
 			<div class="group-controls">

+ 49 - 5
docs/en/users/WebSub.md

@@ -7,20 +7,64 @@ for instance when a new article is available via RSS / ATOM.
 FreshRSS supports WebSub natively.
 Just like for the FreshRSS API to work from a mobile phone, supporting WebSub requires that your FreshRSS instance is routable (that is to say, with a public IP, that can be accessed from third-party servers).
 
-## Examples of feeds
+## WebSub terminology
 
-Many individual feeds and platforms already offer instant notifications through WebSub, such as:
-[Friendica instances](https://friendi.ca), WordPress (from WordPress.com or with [an extension](https://wordpress.org/plugins/pubsubhubbub/)), Blogger sites, Medium sites, etc.
+There are tree main concepts:
+
+* **publisher**: Web site publishing content such as RSS / ATOM feeds;
+* **subscriber**: Feed aggregator such as FreshRSS;
+* **hub**: Intermediate technical component in charge of notifying all subscribers instantly when a publisher has some new content.
+The same hub can serve several publishers and their subscribers.
+Some publishers have a built-in hub.
+
+## Enabling WebSub in FreshRSS
+
+FreshRSS supports WebSub natively, but requires a public address (read from the `base_url` configuration),
+and requires the `./FreshRSS/p/api/` folder to be publicly accessible (just like for other FreshRSS APIs).
+
+During the initial Web-based setup, support for WebSub is enabled if the server hosting FreshRSS appears to have a public address.
+In any case, check your `./data/config.php` for:
 
-## Test WebSub
+```php
+'base_url' => 'https://freshrss.example.net/',
+'pubsubhubbub_enabled' => true,
+```
+
+Additional logs about WebSub are available in `./FreshRSS/data/users/_/log_pshb.txt`
+
+## Test WebSub compatibility of your FreshRSS instance
 
 You can test that WebSub works properly in your FreshRSS instance with a service such as:
 
 * <http://push-tester.cweiske.de>
 
+When you create a new article, it should instantly be available in your FreshRSS instance.
+
+## Examples of feeds using WebSub
+
+Many individual feeds and platforms already offer instant notifications through WebSub, such as:
+[Friendica instances](https://friendi.ca), WordPress (from WordPress.com or with [an extension](https://wordpress.org/plugins/pubsubhubbub/)), Blogger sites, Medium sites, etc.
+
+## Test WebSub compatibility of an RSS / ATOM feed
+
+* <https://test.livewire.io> (for any feed)
+* <https://websub.rocks/publisher> (for feeds you control)
+
 ## Add WebSub to your RSS / ATOM feeds
 
-Your CMS (e.g. WordPress) might already offer WebSub as an option. Otherwise, you can make a solution that notifies a hub such as:
+Your CMS (e.g. WordPress) might already offer WebSub as an option, such as:
+
+* <https://wordpress.org/plugins/pushpress/>
+
+Otherwise, you can make a solution that notifies a hub, such as:
 
 * <https://websubhub.com>
 * <https://pubsubhubbub.appspot.com>
+
+Or even deploy your own hub, such as:
+
+* <https://github.com/flusio/Webubbub>
+
+## Test WebSub compatibility of a hub
+
+* <https://websub.rocks/hub/100>

+ 45 - 12
docs/fr/users/08_PubSubHubbub.md

@@ -1,13 +1,13 @@
-# Qu’est-ce que [WebSub](https://www.w3.org/TR/websub/) ?
+# Qu’est-ce que WebSub ?
 
-Derrière ce nom (anciennement [PubSubHubbub](https://github.com/pubsubhubbub/PubSubHubbub)) se cache un protocole qui vient compléter Atom et RSS.
+Derrière le nom de [WebSub](https://www.w3.org/TR/websub/) (anciennement [PubSubHubbub](https://github.com/pubsubhubbub/PubSubHubbub)) se cache un protocole qui vient compléter Atom et RSS.
 En effet, le fonctionnement de base de ces deux derniers implique de vérifier à intervalles réguliers s’il existe de nouveaux articles sur les sites suivis.
 Cela même si le site concerné n’a rien publié depuis la dernière synchronisation.
 Le [protocole WebSub](https://www.w3.org/TR/websub/) permet d’éviter des synchronisations inutiles en notifiant en temps réel l’agrégateur de la présence de nouveaux articles.
 
 ## Fonctionnement de WebSub
 
-On va retrouver trois notions dans WebSub : les éditeurs (les sites qui publient du contenu), les abonnés (les agrégateurs de flux RSS) et les hubs.
+On va retrouver trois notions dans WebSub : **les éditeurs** (les sites qui publient du contenu comme des flux ATOM / RSS), **les abonnés** (les agrégateurs de flux RSS comme FreshRSS), et **les hubs**.
 
 Lorsqu’un agrégateur s’abonne à un site et récupère son flux RSS, il peut y trouver l’adresse d’un hub.
 Si c’est le cas — car un site peut ne pas en préciser —, l’agrégateur va s’abonner au hub et non pas à l’éditeur directement.
@@ -15,21 +15,54 @@ Ainsi, lorsqu’un éditeur va publier du contenu, il va notifier le hub qui va
 
 Pour pouvoir être notifié, les abonnés doivent fournir une adresse accessible publiquement sur Internet.
 
-## WebSub et FreshRSS
+## Activer WebSub dans FreshRSS
 
-Depuis la version 1.1.2-beta, FreshRSS supporte officiellement WebSub.
-Vous pouvez donc recevoir en temps réel les articles des sites qui affichent dans leur flux RSS un « hub »,
-tels [Friendica](https://friendi.ca), WordPress (WordPress.com ou avec [une extension](https://wordpress.org/plugins/pubsubhubbub/)), Blogger, Medium, etc.
+FreshRSS supporte nativement WebSub, mais requiert une addresse publique (lu depuis la configuration `base_url`),
+et requiert aussi aussi que le répertoire `./FreshRSS/p/api/` soit accessible publiquement (comme pour les autres APIs de FreshRSS).
+
+Durant l’installation Web initiale, le support de WebSub est activé si le serveur semble avoir une adresse publique.
+Dans tous les cas, vérifiez votre `./data/config.php` pour :
+
+```php
+'base_url' => 'https://freshrss.example.net/',
+'pubsubhubbub_enabled' => true,
+```
+
+Des logs supplémentaires relatifs à WebSub sont consultables dans `./FreshRSS/data/users/_/log_pshb.txt`
+
+## Tester la compatibilité WebSub de votre instance FreshRSS
+
+Vous pouvez tester que le support WebSub de votre instance FreshRSS est correct avec un service comme :
+
+* <http://push-tester.cweiske.de>
+
+Quand vous y créez un nouvel article, celui-ci devrait être immédiatement disponible dans votre FreshRSS.
 
-## Tester WebSub
+## Tester la compatibilité WebSub d’un flux RSS / ATOM
 
-Vous pouver tester que le support WebSub de votre instance FreshRSS est correct avec un service comme :
+* <https://test.livewire.io> (pour n’importe quel flux)
+* <https://websub.rocks/publisher> (pour les flux que vous contrôlez)
 
-* <http://push-tester.cweiske.de/>
+## Exemples de flux utilisant WebSub
+
+Vous pouvez recevoir en temps réel les articles des sites qui affichent dans leur flux RSS un « hub »,
+tels [Friendica](https://friendi.ca), WordPress (WordPress.com ou avec [une extension](https://wordpress.org/plugins/pubsubhubbub/)), Blogger, Medium, etc.
 
 ## Ajouter WebSub à votre flux RSS / ATOM
 
-Votre CMS (par exemple WordPress) supporte peut-être déjà WebSub en option. Sinon, vous pouvez faire une solution qui notifie un hub tel :
+Votre CMS (par exemple WordPress) supporte peut-être déjà WebSub en option, comme :
+
+* <https://wordpress.org/plugins/pushpress/>
+
+Sinon, vous pouvez faire une solution qui notifie un hub, comme :
 
-* <https://websubhub.com/>
+* <https://websubhub.com>
 * <https://pubsubhubbub.appspot.com>
+
+Ou encore déployer votre propre hub, comme :
+
+* <https://github.com/flusio/Webubbub>
+
+## Tester la compatibilité WebSub d’un hub
+
+* <https://websub.rocks/hub/100>