Extension:StructuredDiscussions
Les Discussions structurées ne développent plus de fonctionnalités et les nouveaux déploiements sont suspendus pour l'instant. Voir les informations supplémentaires dans la Liste de diffusion de Wikitech. |
Cette extension n'est en ce moment pas activement maintenue ! Même si elle reste opérationnelle, les rapports de bogue ou les demandes de nouvelles fonctionnalités risquent de ne plus être pris en compte. Si vous êtes intéressé pour prendre en charge le développement et l'entretien de cette extension, vous pouvez demander à devenir propriétaire du répertoire. Vous pouvez par courtoisie contacter l'auteur. Vous devriez aussi enlevez ce modèle et vous ajouter à la liste des mainteneurs de l'extension sur l'infobox de la page {{Extension }}. |
L'extension StructuredDiscussions fournit un système de forum et de collaboration pour les pages de discussion. Cette page décrit comment installer et administrer les discussions structurées; si vous cherchez un guide sur la manière de les utiliser, voyez plutôt Aide:Discussions structurées . Vous pouvez essayer les discussions structurées par vous-même sur la page de discussion du bac à sable (sandbox).
Cette extension était connue auparavant comme Flow, et ce nom à plusieurs endroits (comme le dépôt Git) la représente encore.
L'extension StructuredDiscussions a été développée par l'équipe Collaboration de la Fondation Wikimedia. Il est encore maintenu pour la correction de bogues, mais il n'y a pas eu d'autres développements substantiels sur l'extension depuis 2015, qu'un renommage en StructuredDiscussions en septembre 2017. Pour obtenir davantage d'informations concernant l'état du développement de cette extension ainsi qu'un aperçu sur son architecture, voir Structured Discussions.
Installation
Attention : | Notez que StructuredDiscussions n'est pas compatible avec SQLite. |
- Assurez-vous que toutes les dépendances nécessaires sont résolues et configurées.
- Vérifiez d'avoir bien fait pointer
$wgVirtualRestConfig['modules']['parsoid']['url']
sur rest.php de votre wiki. - If you have problems in MediaWiki 1.40, you should make some changes to remove virtualrestconfig of restbase in Flow. See task T337223.
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
Flow
dans votre dossierextensions/
.
Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Flow - Seulement lorsque vous installez à partir de Git, exécutez Composer pour installer les dépendances PHP, en entrant
composer install --no-dev
après vous être positionné dans le répertoire de l'extension. (Voir tâche T173141 pour des complications potentielles.) - Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'Flow' );
- Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
- Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Installation Vagrant :
- Si vous utilisez Vagrant , installez avec
vagrant roles enable flow --provision
Après l'installation
/tmp/mw-UIDGeneratorUUID-UID-xx
que MediaWiki peut ne pas pouvoir ouvrir (tâche T55791). Si vous avez une erreur de priviliège Permission denied lors de la première visite d'un tableau Flow, il vous faut supprimer ces fichiers. Aussi, update.php va créer {{FlowMention }} pour prendre en charge la fonctionnalité des mentions de Flow dans l'Editeur Visuel (soit '@' soit un menu de barre d'outils fournira une interface d'autocomplétion pour les mentions).Assurez-vous de bien suivre les instructions complètes pour activer ou désactiver StructuredDiscussions, y compris les scripts mentionnés ici.
Dépendances
- nécessaire
- Extension:Echo - pour les notifications (c'est à dire les réponses à vos billets)
- Il est nécessaire d'avoir un cache d'objets et d'utiliser memcached pour cela. Actuellement, il est possible que vous ayez des problèmes avec Redis.
- Extension:ParserFunctions - pour les modèles installés automatiquement (par exemple #time)
- très recommandé
- Parsoid pour l'option permettant d'entregistrer les billets en tant que (
$wgFlowContentFormat = 'html';
) HTML pour améliorer les performances. Ceci est la manière dont les wikis de la Fondation WikiMedia sont configurés, et par là, c'est la configuration la plus testée. Si vous utilisez MediaWiki-Vagrant, l'activation StructuredDiscussions autorise Parsoid et fixe le format à 'html'.
- facultatif
- Extension:BetaFeatures - si vous voulez utiliser la fonctionnalité bêta de souscription aux discussions des utilisateurs.
- Extension:CLDR/fr - pour les horodatages en clair sous forme littérale tels que « il y a 3 jours »
- Extension:VisualEditor - pour la prise en charge de VisualEditor
- un bogue ? si l'Editeur Visuel est présent, (peut être pour fournir OOUI), alors les Discussions structurées essayeront de contacter Parsoid même si l'Editeur Visuel n'est pas activé
- StructuredDiscussions peut s'intégrer avec Extension:AbuseFilter , Extension:SpamBlacklist , et Extension:ConfirmEdit , voir Extension:StructuredDiscussions/Spam
- StructuredDiscussions va s'intégrer avec Extension:CheckUser si vous l'avez installé.
- Extension:Thanks - pour remercier les utilisateurs pour leurs billets
Vérifier l'installation
Ouvrez une des pages que vous avez activées pour les discussions structurées (voir #Configuration) et essayez d'ajouter un article et de modifier son titre.
Configuration
Voici quelques paramètres à définir dans LocalSettings.php
.
Activer ou désactiver StructuredDiscussions
Version de MediaWiki : | ≤ 1.34 |
Pour activer ou désactiver les discussions structurées pour un espace de noms donné dans MediaWiki avant la 1.35, exécutez d'abord populateContentModel.php sur les espaces de noms concernés (ou vous pouvez le faire sur all
).
Depuis la 1.35 , ceci n'est plus nécessaire.
Par exemple si vous voulez l'activer ou le désactiver sur NS_TALK (1) et NS_USER_TALK (3) comme indiqué dans la configuration PHP ci-dessous :
mwscript populateContentModel.php --wiki=somewiki --ns=1 --table=revision
mwscript populateContentModel.php --wiki=somewiki --ns=1 --table=archive
mwscript populateContentModel.php --wiki=somewiki --ns=1 --table=page
mwscript populateContentModel.php --wiki=somewiki --ns=3 --table=revision
mwscript populateContentModel.php --wiki=somewiki --ns=3 --table=archive
mwscript populateContentModel.php --wiki=somewiki --ns=3 --table=page
Si mwscript n'est pas configuré, remplacez mwscript populateContentModel.php
par php maintenance/populateContentModel.php
Après ce qui précède, initialisez $wgNamespaceContentModels [namespace]
pour les espaces de noms particuliers.
Par exemple :
// Ces lignes activent StructuredDiscussions dans les espaces de noms ''Talk'' et ''User talk''
// Toutes les constantes NS_* ici : https://www.mediawiki.org/wiki/Manual:Namespace_constants
$wgNamespaceContentModels[NS_TALK] = 'flow-board';
$wgNamespacesWithSubpages[NS_TALK] = true;
$wgNamespaceContentModels[NS_USER_TALK] = 'flow-board';
$wgNamespacesWithSubpages[NS_USER_TALK] = true;
Ne réassignez pas la variable globale (
).
$wgNamespaceContentModels =
Pour l'activer sur la même page, utilisez Special:EnableStructuredDiscussions. Ceci nécessite d'avoir les droits flow-create-board qui peuvent être attribués à tout groupe (voir Modifier les privilèges de groupe).
$wgGroupPermissions['somegroup']['flow-create-board'] = true;
Voir Extension:StructuredDiscussions/Turning off all StructuredDiscussions pour savoir comment désactiver toutes les pages StructuredDiscussions sur votre wiki.
Configuration Parsoid
Certaines parties de cette page (celles relatives à Parsoid's LocalSettings.js) sont obsolètes. |
StructuredDiscussions utilise le service Virtual REST pour contacter un service Parsoid ou RESTBase.
Si votre wiki charge l'extension VisualEditor , alors il se peut que cela soit probablement déjà configuré.
Cherchez ce qui suit dans votre LocalSettings.php
:
$wgVirtualRestConfig['modules']['parsoid'] = array(
// URL de l'instance Parsoid
// Utiliser le port 8142 si vous êtes sous Debian
'url' => 'http://localhost:8000',
// "domain" de Parsoid, voir ci-dessous (optionnel)
'domain' => 'localhost',
// "prefix" de Parsoid, voir ci-dessous (optionnel)
'prefix' => 'localhost',
);
Un unique serveur Parsoid peut gérer plusieurs wikis.
Le paramètre domain
de Parsoid identifie la configurations de votre wiki pour Parsoid.
Par défaut il vaut le nom de l'hôte appelé par $wgCanonicalServer
, mais vous pouvez utiliser une chaîne de caractères quelconque.
Les versions plus anciennes de Parsoid utilisaient également un préfixe unique pour identifier le serveur; vous devriez lister cela ici également.
Parsoid doit être configuré pour pouvoir trouver, en utilisant une ligne dans localsettings.js
de Parsoid telle que :
parsoidConfig.setMwApi({ uri: 'http://path/to/my/wiki/api.php', domain: 'localhost', prefix: 'localhost' });
De nouveau, la propriété domain est faculatative pour configurer Parsoid; quand il n'est pas spécifié, la valeur par défaut est le nom de l'hôte utilisé dans la propriété uri
.
La propriété préfixe peut également être omise à moins que vous n'exécutiez une ancienne version de Parsoid.
Assurer vous que le domain
et prefix
listés dans les résultats localsettings.js
de Parsoid, correspondent à ce qu'il y a dans le LocalSettings.php
de votre wiki.
Voir Parsoid/Setup#Configuration pour plus de détails.
« Nombre maximum d'imbrications de 100 fonctions atteint, abort »
Si vous obtenez cette erreur, vous devez initialiser xdebug.max_nesting_level = 200
, probablement dans /etc/php5/apache2/php.ini
.[1]
« Récupération d'exception : CAS non implémenté dans Xyz »
StructuredDiscussions invoque $cache->cas()
et quelques implémentations du cache incluant CACHE_ACCEL
(APCBagOStuff) n'implémentez pas CAS.
Vous devrez probablement utiliser un cache différent, par exemple installer memcached et définir $wgMainCacheType = CACHE_MEMCACHED;
.
Droits
Les utilisateurs doivent avoir les droits edit
sur le noyau pour réaliser des opérations d'écriture dans StructuredDiscussions.
Beaucoup de wiki n'attribuent ces droits que pour le groupe 'user' (connectés).
StructuredDiscussions définit plusieurs actions telles que edit-post
et delete-topic
(voir la liste dans FlowActions.php).
Les droits varient en fonction du billet, s'il est à vous et s'il a été modéré.
Par exemple, les utilisateurs peuvent modifier leurs propres billets par défaut, mais uniquement les utilisatuers du groupe 'sysop' ont les droit flow-edit-post
qui autorise à modifier les billets des autres utilisateurs.
Vous pouvez réécraser les droits et les groupes auquels ils ont été affectés pour chaque action Flow; voir les Manuel:Droits utilisateurs pour un aperçu des autorisations.
Migrer les pages existantes
Pour migrer une page existante unique, utilisez Special:EnableStructuredDiscussions. Cela prendra en charge l'archivage des pages uniques (puis activera automatiquement StructuredDiscussions).
Le script maintenance/convertNamespaceFromWikitext.php
automatise cette conversion d'espace de noms ainsi que l'archivage, voir Flow/Converting talk pages.
C'est un peu particulier à la Fondation WikiMedia, donc évaluez son opération et sauvegardez votre base de données avant d'exécuter.
Un autre script maintenance/convertAllLqtPages.php
convertit les pages LiquidThreads avec leurs fils de discussion en tableaux Flow avec les titres, voir Flow/Converting LiquidThreads. Les mises en garde similaires s'appliquent.
Flow ajoute un espace de noms Topic:, voir Extension default namespaces#flow.
Vous pouvez aller sur Special:PrefixIndex/Topic: pour voir s'il y a des pages existantes en conflit avec cela; si c'est la cas, exécutez le script de maintenance maintenance/namespaceDupes.php
.
Configuration
Paramètre | Valeur par défaut | Commentaire |
---|---|---|
$wgFlowHelpPage | //www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:Flow | URL pour avoir davantage d'informations à propos du système de notification de Flow |
$wgFlowCluster | false | $wgFlowCluster définit le serveur externe de base de données à utiliser.
S'il vaut |
$wgFlowDefaultWikiDb | false | Base de données à utiliser pour les métadonnées de StructuredDiscussions. Fixez la valeur à false pour utiliser la base de données du wiki.
Un nombre quelconque de wikis peuvent et doivent pouvoir partager la même base de données StructuredDiscussions. Le nom de la base de données actuelle se trouve dans les tables internes pour chaque message. Si on change le nom de la base de données après que les messages ont été envoyés, alors les anciens fils ne seront plus accessibles. |
$wgFlowExternalStore | false | Utilisé pour le stockage du contenu.
$wgFlowExternalStore = array( 'DB://cluster24', 'DB://cluster25' ); |
$wgFlowContentFormat | html | Par défaut, StructuredDiscussions va stocker le contenu en HTML.
Néanmoins, ceci nécessite que Parsoid soit configuré et activé parce qu'il faudra convertir le HTML en wikicode pour l'éditeur de base.
(notez bien que pour utiliser l'Editeur Visuel vous devez absolument avoir Parsoid, donc si vous ne prenez pas en charge cet éditeur, vous pouvez fixer cela à Si $wgFlowParsoidURL est nul, $wgFlowContentFormat sera forcé à 'wikitext'. Le format 'wikitext' aura tendance à devenir obsolète. |
$wgFlowParsoidURL | null | Configuration Parsoid de StructuredDiscussions Veuillez noter que cette configuration est à part de la configuration de Parsoid pour l'Editeur Visuel. |
$wgFlowParsoidPrefix | null | Configuration Parsoid de Flow Veuillez noter que cette configuration est à part de la configuration de Parsoid pour l'Editeur Visuel. |
$wgFlowParsoidTimeout | null | Configuration Parsoid de Flow Veuillez noter que cette configuration est à part de la configuration de Parsoid pour l'Editeur Visuel. |
$wgFlowParsoidForwardCookies | false | Retransmettre le cookie de l'utilisateur : les entêtes vers Parsoid. Nécessaire aux wikis privés (il faut être connecté pour pouvoir lire). Si le wiki n'est pas privé (c'est à dire que $wgGroupPermissions['*']['read'] vaut Cette fonctionnalité nécessite que la session avec le dépôt soit non verrouillable. Le dépôt par défaut de la session ne fonctionnera pas et provoquera des blocages si on essaie d'utiliser cette fonctionnalité. Si vous êtes confronté à des situations de blocage, activez $wgSessionsInObjectCache. Attention: n'activez ceci UNIQUEMENT sur les wikis privés et SEULEMENT si vous comprenez ce que cela implique au niveau SECURITE quand vous envoyez les entêtes de cookies à Parsoid avec HTTP. Par mesure de sécurité, il est fortement recommandé que |
$wgFlowDefaultLimit | 10 | Limite la mise en page |
$wgFlowMaxLimit | 100 | Limite la mise en page |
$wgFlowMaxMentionCount | 100 | Nombre maximum d'utilisateurs pouvant être mentionnés dans un commentaire |
$wgFlowMaxThreadingDepth | 8 | Profondeur maximale des fils de discussion |
$wgFlowCacheTime | 60 * 60 * 24 * 3 | Période de temps par défaut durant laquelle les données StructuredDiscussions restent en mémoire cache.
Cette valeur peut être adaptée en fonction des mesures de ratio trouvé/non-trouvé du cache pour obtenir le compromis souhaité entre l'utilisation de la mémoire, les requêtes de base de donnée et le temps de réponse. La valeur initiale par défaut de 3 jours indique que StructuredDiscussions va essayer de garder en mémoire cache tous les modèles de données demandés durant ces 3 derniers jours. |
$wgFlowCacheVersion | 4.9 | Une chaîne de caractères ajoutée aux clés du cache.
Renforcez cela si le format du cache ou la logique change. StructuredDiscussions peut être une base de données inter-wikis accédée à partir de wikis exécutant différentes versions du code Flow ; quelques fois la WMF réécrase ceci globalement dans wmf-config/CommonSettings.php |
$wgFlowAbuseFilterGroup | 'flow' | Custom group name for AbuseFilter
Acceptable values:
|
$wgFlowAbuseFilterEmergencyDisableThreshold | 0.10 | AbuseFilter emergency disable values for StructuredDiscussions |
$wgFlowAbuseFilterEmergencyDisableCount | 50 | AbuseFilter emergency disable values for StructuredDiscussions |
$wgFlowAbuseFilterEmergencyDisableAge | 86400 // One day. | AbuseFilter emergency disable values for StructuredDiscussions |
$wgFlowAjaxTimeout | 30 | Timeout for StructuredDiscussions's AJAX requests (only affects ones that go through flow-api.js), in seconds |
$wgFlowCoreActionWhitelist | array( 'info', 'protect', 'unprotect', 'unwatch', 'watch', 'history', 'wikilove', 'move', 'delete' ); | Actions that must pass through to MediaWiki on StructuredDiscussions-enabled pages |
$wgFlowServerCompileTemplates | false | When set to true StructuredDiscussions will compile templates into their intermediate forms on every run. When set to false Flow will use the versions already written to disk. Production should always have this set to false. |
$wgFlowSearchServers, $wgFlowSearchConnectionAttempts, $wgFlowSearchBannedPlugins, $wgFlowSearchOptimizeIndexForExperimentalHighlighter, $wgFlowSearchMaxShardsPerNode, $wgFlowSearchRefreshInterval, $wgFlowSearchMaintenanceTimeout, $wgFlowSearchReplicas, $wgFlowSearchShardCount, $wgFlowSearchCacheWarmers, $wgFlowSearchMergeSettings, $wgFlowSearchIndexAllocation, $wgFlowSearchEnabled | N/A | These former settings were removed because the code was unmaintained and broken. (You can look at the previous documentation if you want.) There is currently no code for supporting search in StructuredDiscussions. |
Messages système
Si vous utilisez l'option Modifer le source sur les tableaux StructuredDiscussions, vous pourrez voir le texte d'aide "Votre modification utilise le balisage wikicode et vous pouvez avoir un aperçu du résultat à tout moment."
.
La partie utilise le marquage est liée à MediaWiki.org par le message système MediaWiki:Flow-wikitext-editor-help-uses-wikitext qui utilise un lien interwiki.
Dans quelques cas, ce lien interwiki, au lieu de pointer vers Help:Formatting sur MediaWiki.org, pointe vers une page Help:Formatting (habituellement non existante) du wiki hôte.
Ceci peut être corrigé en modifiant le lien interwiki sur MediaWiki:Flow-wikitext-editor-help-uses-wikitext vers un lien externe tel que
[https://www.mediawiki.org/wiki/Help:Formatting uses markup]
.
Résolution des problèmes
Flow n'apparaît pas comme désiré ? Il existe différentes corrections en fonction de la source du problème.
Parsoid mal configuré / Editeur Visuel ne fonctionne pas
Si vous voyez des messages du type Conversion from 'html' to 'wikitext' was requested, but core's Parser only supports 'wikitext' to 'html' conversion
vous avez probablement une version de MediaWiki (comme la REL1_39) où les discussions structurées n'utilisent pas parsoid de la configuration zéro.
Pour pouvoir utiliser l'Editeur visuel dans les discussions, vous devez configurer manuellement parsoid-php.
For REL1_39 of MediaWiki and StructuredDiscussions, be sure to do all of the following:
wfLoadExtension('Flow');
wfLoadExtension ('Parsoid', "$IP/vendor/wikimedia/parsoid/extension.json" );
- Set appropriately. See example.
$wgVirtualRestConfig['modules']['parsoid']
Older versions of MediaWiki may need Parsoid-JS and perhaps a code patch:
- Assurez-vous d'avoir bien installé Parsoid.
- Tant que ce bogue ne sera pas résolu, appliquez ce patch à la base de code StructuredDiscussions.
Si le problème persiste, cette discussion peut vous aider.
Ordre incorrect de déclaration des espaces de noms personnalisés
Les déclarations de Flow doivent être placées après les déclarations des espaces de noms personnalisés. L'ordre correct est :
define("NS_PORTAL_TALK", 3005);
$wgExtraNamespaces[NS_PORTAL_TALK] = "Portal_Talk";
$wgNamespaceContentModels[NS_PORTAL_TALK] = 'flow-board';
$wgNamespacesWithSubpages[NS_PORTAL_TALK] = true;
Constantes natives incorrectes
Les pages de discussion dans l'espace de noms principal Main: sont définies par NS_TALK
, et non pas NS_MAIN_TALK
La déclaration correcte est :
$wgNamespaceContentModels[NS_TALK] = 'flow-board';
Constantes d'extension non enregistrées
La constante représentant l'espace de noms Extension:Page Forms est supposée être PF_NS_FORM_TALK
.
Mais cette constante ne fonctionne pas dans la déclaration Flow -- vous devez utiliser le nombre actuel : 107.
Ceci fonctionne :
$wgNamespaceContentModels[107] = 'flow-board';
L'utilisateur n'est pas informé si Page_Forms a échoué pendant l'enregistrement de ses constantes, ou si toutes les extensions doivent utiliser des nombres (et non des constantes) avec Flow. Voyez la liste de quelques constantes associées à d'autres espaces de noms d'extensions.
Anciens vestiges
Si Flow se présente correctement sur toutes les pages de discussion d'un espace de noms donné, sauf pour une page de cet espace de noms: il peut rester d'anciens éléments sur la page de discussion (même si elle paraît vide). Faites ce qui suit :
- Affichez la page de discussion qui ne charge pas Flow, par exemple : Portal_Talk:Welcome
- Supprimer la page de discussion en utilisant l'onglet Supprimer.
- Aller sur la page de contenu de cette page de discussion, par exemple : Portal:Welcome
- Cliquer sur Discussion.
- Vous obtenez Flow.
Parsoid not working in StructuredDiscussions (Flow)
To get Parsoid to work with StructuredDiscussions (Flow):
- In
LocalSettings.php
, explicitely load Parsoid like so:wfLoadExtension( 'Parsoid', "vendor/wikimedia/parsoid/extension.json" );
- Apply the following patch.
For more details, see Topic:X8mv19b4va26u8tz.
Architecture
Voir Flow/Architecture.
Contenus indésirables (spam)
Voir Extension:StructuredDiscussions/Spam pour d'autres informations sur la manière de combattre le pourriel dans Flow.
Modération
Voir Extension:StructuredDiscussions/Moderation pour davantage d'informations sur la modération dans Flow.
Exporter et importer
Un script de maintenance existe pour exporter les données Flow de manière semblable à Manual:DumpBackup.php
php extensions/Flow/maintenance/dumpBackup.php
tâche T114703 - fournit quelques indications concernant l'import.
Cette extension est utilisée par au moins un des projets Wikimédia. Cela signifie probablement que l’extension est assez stable et fonctionnelle pour être utilisée sur des sites à fort trafic. Recherchez le nom de cette extension dans le CommonSettings.php de Wikimédia et dans le fichier de configuration InitialiseSettings.php pour situer les endroits où elle est installée. Une liste complète des extensions installées sur un Wiki donné peut être visualisée sur la page Special:Version de ce wiki. |
Cette extension est incluse dans les fermes de wikis ou les hôtes suivants et / ou les paquets : Cette liste ne fait pas autorité. Certaines fermes de wikis ou hôtes et / ou paquets peuvent contenir cette extension même s'ils ne sont pas listés ici. Vérifiez toujours cela avec votre ferme de wikis ou votre hôte ou votre paquet avant de confirmer. |