Erweiterung:StructuredDiscussions

From mediawiki.org
This page is a translated version of the page Extension:StructuredDiscussions and the translation is 25% complete.
MediaWiki-Erweiterungen
StructuredDiscussions
Freigabestatus: ohne Wartung
Einbindung Seitenaktivität
Beschreibung Bietet ein Diskussions- und Kooperationssystem für Gesprächsseiten
Autor(en) Brandon Harris, Erik Bernhardson, Matthias Mullie, Andrew Garrett, Benny Situ, Shahyar Ghobadpour, Matthew Flaschen, Roan Kattouw, Moriel Schottlender, Stephane Bisson, Kunal Mehta
Letzte Version Continuous updates
Kompatibilitätspolitik Snapshots werden zusammen mit MediaWiki veröffentlicht. Der Master ist nicht abwärtskompatibel.
MediaWiki 1.34+
PHP 5.4+
Datenbankänderungen Ja
Composer mediawiki/flow
Lizenz GNU General Public License 2.0 oder neuer
Herunterladen
Hilfe Hilfe:Strukturierte Diskussionen
Beispiel Talk:Structured Discussions
  • $wgFlowExternalStore
  • $wgFlowMaxMentionCount
  • $wgFlowEnableOptInBetaFeature
  • $wgFlowHelpPage
  • $wgFlowReadOnly
  • $wgFlowAbuseFilterEmergencyDisableThreshold
  • $wgFlowCoreActionWhitelist
  • $wgFlowAjaxTimeout
  • $wgFlowCluster
  • $wgFlowNotificationTruncateLength
  • $wgFlowAbuseFilterEmergencyDisableAge
  • $wgFlowParsoidTimeout
  • $wgFlowCacheTime
  • $wgFlowDefaultWikiDb
  • $wgFlowServerCompileTemplates
  • $wgFlowAbuseFilterEmergencyDisableCount
  • $wgFlowContentFormat
  • $wgFlowMaxLimit
  • $wgFlowMaxThreadingDepth
  • $wgFlowParsoidForwardCookies
  • $wgFlowCacheVersion
  • $wgFlowParsoidHTTPProxy
  • $wgFlowParsoidPrefix
  • $wgFlowDefaultLimit
  • $wgFlowAbuseFilterGroup
  • $wgFlowParsoidURL
Quarterly downloads 70 (Ranked 98th)
Übersetze die StructuredDiscussions-Erweiterung
Probleme Offene Aufgaben · Einen Fehler melden

Die StructuredDiscussions-Erweiterung bietet ein Diskussions- und Kollaborationssystem für Talk-Seiten. Auf dieser Seite erfährst du, wie du Structured Discussions installierst und verwaltest; eine Anleitung zur Nutzung findest du unter Hilfe:Strukturierte Diskussionen . Du kannst Structured Discussions selbst auf der Sandbox talk page ausprobieren.

Diese Erweiterung war früher unter dem Namen Flow bekannt, und an einigen Stellen (z. B. im Git-Repository) spiegelt der Name dies noch wider.

Die StructuredDiscussions-Erweiterung wurde vom Collaboration-Team der Wikimedia Foundation entwickelt. Sie wird immer noch gepflegt, um Fehler zu beheben, aber seit 2015 wurde die Erweiterung nicht mehr weiterentwickelt, außer dass sie im September 2017 in "StructuredDiscussions" umbenannt wurde. Weitere Informationen über den Entwicklungsstand dieser Erweiterung sowie einen Überblick über ihr Design findest du auf der Structured Discussions.

Installieren

Achtung! Achtung: Beachte, dass StructuredDiscussions nicht mit SQLite kompatibel ist.
  • Stelle sicher, dass alle erforderlichen Abhängigkeiten eingerichtet und konfiguriert sind.
  • Make sure to set $wgVirtualRestConfig['modules']['parsoid']['url'] to point to the rest.php of your wiki.
  • If have problems in mediawiki 1.40 you should do some changes for remove virtualrestconfig of restbase in flow, you can see the task T337223.
  • Die Erweiterung herunterladen und die Datei(en) in ein Verzeichnis namens Flow im Ordner extensions/ ablegen.
  • Wird von git aus installiert, ist Composer auszuführen, um PHP-Abhängigkeiten zu installieren, indem composer install --no-dev im Erweiterungsverzeichnis ausgeführt wird. (Siehe task T173141 für mögliche Komplikationen.)
  • Folgenden Code am Ende deiner LocalSettings.php -Datei einfügen:
    wfLoadExtension( 'Flow' );
    
  • Führe das Aktualisierungsskript aus, welches automatisch die notwendigen Datenbanktabellen erstellt, die diese Erweiterung braucht.
  • Yes Erledigt – Zu Special:Version in dem Wiki (bei Einstellung auf deutsch nach Spezial:Version) navigieren, um die erfolgreiche Installierung der Erweiterung zu überprüfen.


Vagrant-Installation:

  • Wird Vagrant benutzt, ist mit vagrant roles enable flow --provision zu installieren
Bitte wirf einen Blick in den troubleshooting sectionsbereich, falls du auf bekannte Probleme stößt.

Nach der Installation

Du musst "update.php" als Webserver-Benutzer ausführen (hängt von der Konfiguration ab, könnte aber z.B. www-data sein). Otherwise, it can leave temporary /tmp/mw-UIDGeneratorUUID-UID-xx files that MediaWiki may be unable to open (task T55791). If you get a "Permission denied" error upon first visiting a Flow board you have to delete these files. Also, update.php will create {{FlowMention}} to support Flow's mention feature in VE (either @ or a toolbar menu provides a convenient auto-complete interface for mentions).

Make sure you follow the full instructions for enabling or disabling StructuredDiscussions, including the scripts mentioned there.

Abhängigkeiten

notwendig
  • It is required to have an object cache. It is recommended that you use memcached for this. You may encounter problems with Redis currently.
strongly recommended
  • Parsoid for the option to store posts as HTML ($wgFlowContentFormat = 'html';) which improves performance.

This is how WMF wikis are configured, and hence is the most tested configuration by far. If you use MediaWiki-Vagrant, enabling StructuredDiscussions enables Parsoid and sets the format to 'html'.

optional
  • bug? if you have the VisualEditor present (e.g. perhaps to provide OOUI), then StructuredDiscussions will attempt to contact Parsoid even if VE is not enabled

Verifying installation

Visit one of the pages you enabled for StructuredDiscussions (see #Configuration) and try adding a topic and editing its header.

Konfiguration

Here are some settings you need to make in LocalSettings.php.

 StructuredDiscussions aktivieren oder deaktivieren

To enable or disable StructuredDiscussions for a namespace in MediaWiki before 1.35, first run populateContentModel.php on the affected namespaces (or you can do it on all). Ab 1.35 wird es nicht mehr benötigt. E.g. if you are about to enable or disable it on NS_TALK (1) and NS_USER_TALK (3) as shown in the PHP config below:

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

Wenn mwscript nicht konfiguriert ist, ersetze mwscript populateContentModel.php durch php maintenance/populateContentModel.php

After the above, set $wgNamespaceContentModels [namespace] for particular namespaces. Zum Beispiel:

  // These lines enable StructuredDiscussions on the "Talk" and "User talk" namespaces
  // All the NS_* constants here: 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;

Do not reassign the global ($wgNamespaceContentModels =).

To enable it on a single page, use Special:EnableStructuredDiscussions. This requires the flow-create-board right, which can be granted to any group (see Manual:User rights#Changing group permissions).

  $wgGroupPermissions['somegroup']['flow-create-board'] = true;

See Extension:StructuredDiscussions/Turning off all StructuredDiscussions for how to turn off all StructuredDiscussions pages on your wiki.

Parsoid-Konfiguration

StructuredDiscussions uses the Virtual REST Service to contact a Parsoid or RESTBase service. If your wiki loads the VisualEditor extension, then you've probably already set this up. Look for the following in your LocalSettings.php:

$wgVirtualRestConfig['modules']['parsoid'] = array(
  // URL to the Parsoid instance
  // Use port 8142 if you use the Debian package
  'url' => 'http://localhost:8000',
  // Parsoid "domain", see below (optional)
  'domain' => 'localhost',
  // Parsoid "prefix", see below (optional)
  'prefix' => 'localhost',
);

A single Parsoid server can handle multiple wikis. The Parsoid domain setting identifies your wiki configuration to Parsoid. By default it is set to the hostname named by $wgCanonicalServer, but you can pick an arbitrary string. Older versions of Parsoid also used a unique "prefix" to identify the server; you may need to list that here as well.

Parsoid must have been configured to match, using a line in Parsoid's localsettings.js like:

parsoidConfig.setMwApi({ uri: 'http://path/to/my/wiki/api.php', domain: 'localhost', prefix: 'localhost' });

Again, the "domain" property is optional in the Parsoid configuration; it defaults to the hostname used in the uri property if not specified. The "prefix" property can also be omitted unless you are running an older version of Parsoid. Make sure the domain and prefix listed in Parsoid's localsettings.js match what's in your wiki's LocalSettings.php.

See Parsoid/Setup#Configuration for more details.

"maximum function nesting level of '100' reached, aborting"

If you get this error, you need to set xdebug.max_nesting_level = 200, probably in /etc/php5/apache2/php.ini.[1]

"Exception Caught: CAS is not implemented in Xyz"

StructuredDiscussions invokes $cache->cas() and some cache implementations including CACHE_ACCEL (APCBagOStuff) don't implement CAS. You probably need to use a different cache, for example install memcached and set $wgMainCacheType = CACHE_MEMCACHED;.

Berechtigungen

Users must have the core edit permission to perform any write action in StructuredDiscussions. Many wikis only grant this permission to the 'user' (logged-in) group.

StructuredDiscussions defines many actions such as edit-post and delete-topic (see the list in FlowActions.php). The permissions vary depending on whether the post is your own and whether it has been moderated. For example, by default users can edit their own posts, but only users in the 'sysop' group have the flow-edit-post permission to edit anyone's post. You can override which groups have which permissions and what permissions are required for each Flow action; see Handbuch:Benutzerrechte for an overview of permissions.

Migrating existing pages

To migrate a single existing page, use Special:EnableStructuredDiscussions. It will handle archiving of a single page (then enabling StructuredDiscussions) automatically.

The script maintenance/convertNamespaceFromWikitext.php automates this namespace conversion and archiving, see Flow/Converting talk pages. It is somewhat WMF-specific, so evaluate its operation and backup your database before running it. Another script maintenance/convertAllLqtPages.php converts LiquidThreads pages and their threads to Flow boards and topics, see Flow/Converting LiquidThreads. Similar caveats apply.

Flow adds a Topic: namespace, see Extension default namespaces#flow. You can visit Special:PrefixIndex/Topic: to see if there are existing pages that conflict with this; if so run the maintenance script maintenance/namespaceDupes.php.

Konfiguration

Konfigurationseinstellungen in Flow.php
Parameter Voreinstellung Anmerkung
$wgFlowHelpPage //www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:Flow URL for more information about the Flow notification system
$wgFlowCluster false $wgFlowCluster will define what external DB server should be used.

If set to false, the current database (wfGetDB) will be used to read/write data from/to. If StructuredDiscussions data is supposed to be stored on an external database, set the value of this variable to the $wgExternalServers key representing that external connection.

$wgFlowDefaultWikiDb false Database to use for StructuredDiscussions metadata. Set to false to use the wiki db.

Any number of wikis can and should share the same StructuredDiscussions database. The actual database name is stored inside internal tables for each message. Changing the database name after messages have been posted will cause old threads to become inaccessible.

$wgFlowExternalStore false Used for content storage.

False to store content in StructuredDiscussions db. Otherwise a cluster or list of clusters to use with ExternalStore. Provided clusters must exist in $wgExternalStores. Multiple clusters required for HA, so inserts can continue if one of the masters is down for maint or any other reason.

$wgFlowExternalStore = array( 'DB://cluster24', 'DB://cluster25' );

$wgFlowContentFormat html By default, StructuredDiscussions will store content in HTML.

However, this requires having Parsoid up and running, as it'll be necessary to convert HTML to wikitext for the basic editor. (n.b. to use VisualEditor, you'll definitely need Parsoid, so if you do support VE, might as well set this to HTML right away)

If $wgFlowParsoidURL is null, $wgFlowContentFormat will be forced to wikitext.

The 'wikitext' format is likely to be deprecated in the future.

$wgFlowParsoidURL null
Warnung Warnung: Veraltet. Verwende $wgVirtualRestConfig['modules']['parsoid']['url'].

StructuredDiscussions Parsoid config

Please note that this configuration is separate from VE's Parsoid config.

$wgFlowParsoidPrefix null
Warnung Warnung: Veraltet. Verwende $wgVirtualRestConfig['modules']['parsoid']['prefix'].

Flow-Parsoid-Konfiguration

Please note that this configuration is separate from VE's Parsoid config.

$wgFlowParsoidTimeout null
Warnung Warnung: Veraltet. Verwende $wgVirtualRestConfig['modules']['parsoid']['timeout'].

Flow-Parsoid-Konfiguration

Please note that this configuration is separate from VE's Parsoid config.

$wgFlowParsoidForwardCookies false
Warnung Warnung: Veraltet. Verwende $wgVirtualRestConfig['modules']['parsoid']['forwardCookies'].

Forward users' Cookie: headers to Parsoid. Required for private wikis (login required to read).

If the wiki is not private (i.e. $wgGroupPermissions['*']['read'] is true) this configuration variable will be ignored.

This feature requires a non-locking session store. The default session store will not work and will cause deadlocks when trying to use this feature. If you experience deadlock issues, enable $wgSessionsInObjectCache.

WARNING: ONLY enable this on private wikis and ONLY IF you understand the SECURITY IMPLICATIONS of sending Cookie headers to Parsoid over HTTP.

For security reasons, it is strongly recommended that $wgVirtualRestConfig['modules']['parsoid']['forwardCookies'] be pointed to localhost if this setting is enabled.
$wgFlowDefaultLimit 10 Limits for paging
$wgFlowMaxLimit 100 Limits for paging
$wgFlowMaxMentionCount 100 Maximum number of users that can be mentioned in one comment
$wgFlowMaxThreadingDepth 8 Max threading depth
$wgFlowCacheTime 60 * 60 * 24 * 3 The default length of time to cache StructuredDiscussions data in memcache.

This value can be tuned in conjunction with measurements of cache hit/miss ratios to achieve the desired tradeoff between memory usage, db queries, and response time. The initial default of 3 days means StructuredDiscussions will attempt to keep in memcache all data models requested in the last 3 days.

$wgFlowCacheVersion 4.9 A version string appended to cache keys.

Bump this if cache format or logic changes. StructuredDiscussions can be a cross-wiki database accessed by wikis running different versions of the Flow code; WMF sometimes overrides this globally in wmf-config/CommonSettings.php

$wgFlowAbuseFilterGroup 'flow' Custom group name for AbuseFilter

Acceptable values:

  • a specific value for flow-specific filters
  • 'default' to use core filters; make sure they are compatible with both core and StructuredDiscussions (e.g. StructuredDiscussions has no 'summary' variable to test on)
  • false to not use AbuseFilter
$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.


Systemnachrichten

Using the "Source editing" option on StructuredDiscussions boards makes visible the help text "Wikitext verwendet Markup und du kannst jederzeit eine Vorschau des Ergebnisses anzeigen.". The "uses markup" part is linked through the system message MediaWiki:Flow-wikitext-editor-help-uses-wikitext which makes use of an interwiki link to MediaWiki.org.

In some cases, this interwiki link, instead of pointing to Help:Formatting on MediaWiki.org, points to a (usually non-existent) Help:Formatting page on the host Wiki.

This can be corrected by changing the interwiki link on MediaWiki:Flow-wikitext-editor-help-uses-wikitext to an external link such as
[https://www.mediawiki.org/wiki/Help:Formatting uses markup].

Fehlerbehebung

Not getting Flow as expected? There are different fixes, depending on the source of the problem:

Badly configured parsoid/VE not working

When you get messages like Conversion from 'html' to 'wikitext' was requested, but core's Parser only supports 'wikitext' to 'html' conversion, you probably don't have parsoid configured correctly. For using visual editor on discussions, this extension requires a correctly configured parsoid.

Do the following:

  1. Make sure you have correctly installed parsoid.
  2. When this bug hasn't been resolved, apply this patch to the StructuredDiscussions codebase.

If the problem persists, this discussion might be of some help.

Wrong Custom-Namespace Declaration Order

The Flow declares must go after the declare for a custom namespace. Die richtige Reihenfolge ist:

define("NS_PORTAL_TALK", 3005); 
$wgExtraNamespaces[NS_PORTAL_TALK] = "Portal_Talk"; 
$wgNamespaceContentModels[NS_PORTAL_TALK] = 'flow-board';
$wgNamespacesWithSubpages[NS_PORTAL_TALK] = true;

Wrong Native Constants

Talk pages in the Main namespace are defined as NS_TALK, not NS_MAIN_TALK

The correct declaration is:

$wgNamespaceContentModels[NS_TALK] = 'flow-board';

Non-Registered Extension Constants

Erweiterung:Seitenformulare namespace constant is supposed to be PF_NS_FORM_TALK. But that constant does not work in the Flow declare-- you must use the actual number: 107. This works:

$wgNamespaceContentModels[107] = 'flow-board';

It's unknown to this author whether Page_Forms failed to register its constants correctly, or whether all extension must use numbers (not constants) with Flow. See list of some other extension namespace constants.

Old Remnants

If you're correctly getting Flow on all talk-pages in a namespace, except for one page in that namespace, there may be remnant junk in the talk page (even if it appears empty). Do the following:

  1. Browse to the talk page that won't load Flow, e.g.: Portal_Talk:Welcome
  2. Delete the Talk page using the Delete tab.
  3. Go to the content page for that talk page, e.g.: Portal:Welcome
  4. Click Discuss.
  5. You get Flow.

Architektur

Siehe Flow/Architecture.

Spam

Siehe Extension:StructuredDiscussions/Spam für weitere Informationen, um Spam in Flow zu bekämpfen.

Moderation

See Extension:StructuredDiscussions/Moderation for more information on moderation in Flow.

Export und Import

There is maintenance script to export Flow data similar to Manual:DumpBackup.php

php extensions/Flow/maintenance/dumpBackup.php

task T114703 - gives some hints about the import.