Rozšíření:StructuredDiscussions

This page is a translated version of the page Extension:StructuredDiscussions and the translation is 100% complete.
Základní informace k tomuto rozšíření MediaWiki
StructuredDiscussions
Stav rozšíření: bez správce
Zavádění Akce stránky
Popis Poskytuje diskusi a systém spolupráce pro diskusní stránky
Napsal(i) Brandon Harris, Erik Bernhardson, Matthias Mullie, Andrew Garrett, Benny Situ, Shahyar Ghobadpour, Matthew Flaschen, Roan Kattouw, Moriel Schottlender, Stephane Bisson, Kunal Mehta
Nejnovější verze Continuous updates
Zásady kompatibility Vydání snímků následuje MediaWiki. Hlavní vývojová větev není zpětně kompatibilní.
MediaWiki 1.34+
PHP 5.4+
Změny v databázi Ano
Composer mediawiki/flow
Licence GNU General Public License 2.0 nebo pozdější
Zdrojový kód
Nápověda Nápověda:Strukturované diskuse
Příklad 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
  • flow-hide
  • flow-lock
  • flow-delete
  • flow-suppress
  • flow-edit-post
  • flow-edit-title
  • flow-create-board
Čtvrtletní stahování 53 (Ranked 92nd)
Přeložte rozšíření StructuredDiscussions
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření StructuredDiscussions poskytuje diskusní systém a systém spolupráce pro diskusní stránky. Tato stránka popisuje, jak nainstalovat a spravovat strukturované diskuse. Návod k použití najdete na stránce Nápověda:Strukturované diskuse . Strukturované diskuse si můžete sami vyzkoušet na stránce Sandbox.

Toto rozšíření bylo dříve známé jako Flow a názvy na některých místech (jako je úložiště Git) to stále odrážejí.

Rozšíření StructuredDiscussions bylo vyvinuto týmem Collaboration z Wikimedia Foundation. Stále je udržováno, aby se opravovaly chyby, ale od roku 2015 nebyl proveden žádný podstatný vývoj na rozšíření, kromě přejmenování na "StructuredDiscussions" v září 2017. Další informace o stavu vývoje tohoto rozšíření a také přehled jeho designu naleznete na Structured Discussions.

Instalace

  Pozor: Všimněte si, že StructuredDiscussions není kompatibilní s SQLite.
  • Ujistěte se, že všechny požadované závislosti jsou nastaveny a nakonfigurovány.
  • Ujistěte se, že jste nastavili $wgVirtualRestConfig['modules']['parsoid']['url'], aby ukazoval na rest.php vaší wiki.
  • If you have problems in MediaWiki 1.40, you should make some changes to remove virtualrestconfig of restbase in Flow. See task T337223.
  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného Flow ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Flow
  • Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním composer install --no-dev v adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na úkol T173141.)
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'Flow' );
    
  • Spusťte aktualizační skript, který automaticky provede všechny nezbytné databázové změny, jaké rozšíření vyžaduje.
  •   Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.


Instalace Vagrant:

  • Pokud používáte Vagrant , instalujte s těmito parametry vagrant roles enable flow --provision
Podívejte se prosím na sekci odstraňování problémů pro případ, že narazíte na známé problémy.

Po instalaci

Jako uživatel webového serveru musíte spustit "update.php" (závisí na konfiguraci, ale může to být např. www-data). V opačném případě může zanechat dočasné soubory /tmp/mw-UIDGeneratorUUID-UID-xx, které MediaWiki nemusí být schopna otevřít (úkol T55791). Pokud se při první návštěvě nástěnky Flow zobrazí chyba "Povolení odepřeno", musíte tyto soubory smazat. update.php také vytvoří {{FlowMention }} pro podporu funkce zmínek Flow ve VE (buď @ nebo nabídka panelu nástrojů poskytuje pohodlné rozhraní pro automatické dokončování zmínek).

Ujistěte se, že postupujete podle úplných pokynů pro aktivaci nebo deaktivaci StructuredDiscussions, včetně skriptů v nich uvedených.

Závislosti

povinné
  • Extension:Echo - pro upozornění (např. odpovědi na váš příspěvek)
  • Je nutné mít objekt cache. K tomu se doporučuje používat memcached. V současné době se můžete setkat s problémy s Redis.
  • Rozšíření:ParserFunctions - pro šablony, které se instalují automaticky (např. #time)
silně doporučeno
  • Parsoid pro možnost ukládat příspěvky jako HTML ($wgFlowContentFormat = 'html';), což zlepšuje výkon. Takto jsou konfigurovány WMF wikiny, a proto je to zdaleka nejvíce testovaná konfigurace. Pokud používáte MediaWiki-Vagrant, povolení StructuredDiscussions povolí Parsoid a nastaví formát na 'html'.
volitelné

Ověřování instalace

Navštivte jednu ze stránek, které jste povolili pro StructuredDiscussions (viz #Configuration), a zkuste přidat téma a upravit jeho záhlaví.

Konfigurace

Zde jsou některá nastavení, která musíte provést v LocalSettings.php.

Povolení nebo zakázání StructuredDiscussions

Chcete-li povolit nebo zakázat StructuredDiscussions pro jmenný prostor v MediaWiki před verzí 1.35, nejprve spusťte populateContentModel.php na dotčených jmenných prostorech (nebo to můžete udělat na all). Od 1.35 to již není potřeba. Např. pokud se ho chystáte povolit nebo zakázat na NS_TALK (1) a NS_USER_TALK (3), jak je uvedeno v konfiguraci PHP níže:

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

Pokud mwscript není nakonfigurováno, nahraďte mwscript populateContentModel.php za php maintenance/populateContentModel.php

Po výše uvedeném nastavte $wgNamespaceContentModels [namespace] pro konkrétní jmenné prostory. Například:

  // Tyto řádky umožňují StructuredDiscussions na jmenných prostorech "Talk" a "User talk".
  // Všechny konstanty NS_* zde: 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;

Globální ($wgNamespaceContentModels =) znovu přiřaďte ne.

Chcete-li jej povolit na jedné stránce, použijte Special:EnableStructuredDiscussions. To vyžaduje právo flow-create-board, které lze udělit jakékoli skupině (viz Příručka:Uživatelská práva#Změna oprávnění skupiny).

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

Viz Extension:StructuredDiscussions/Turning off all StructuredDiscussions , jak vypnout všechny stránky StructuredDiscussions na vaší wiki.

Konfigurace Parsoid

StructuredDiscussions používá Virtual REST Service ke kontaktování služby Parsoid nebo RESTBase. Pokud vaše wiki načítá rozšíření VisualEditor , pravděpodobně jste to již nastavili. Ve svém LocalSettings.php hledejte následující:

$wgVirtualRestConfig['modules']['parsoid'] = array(
  // Adresa URL instance Parsoid
  // Pokud používáte balíček Debian, použijte port 8142
  'url' => 'http://localhost:8000',
  // Parsoid "doména", viz níže (volitelné)
  'domain' => 'localhost',
  // Parsoid "prefix", viz níže (volitelné)
  'prefix' => 'localhost',
);

Jeden server Parsoid zvládne více wikin. Nastavení Parsoid domain identifikuje vaši konfiguraci wiki pro Parsoid. Ve výchozím nastavení je nastaveno na název hostitele $wgCanonicalServer, ale můžete si vybrat libovolný řetězec. Starší verze Parsoid také používaly jedinečný "prefix" k identifikaci serveru. Možná to budete muset uvést i zde.

Parsoid musí být nakonfigurován tak, aby odpovídal, pomocí řádku v Parsoid's localsettings.js jako:

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

Opět platí, že vlastnost "doména" je v konfiguraci Parsoid volitelná. Jako výchozí se použije název hostitele použitý ve vlastnosti uri, pokud není zadán. Vlastnost "prefix" lze také vynechat, pokud nepoužíváte starší verzi Parsoid. Ujistěte se, že domain a prefix uvedené v Parsoidově localsettings.js odpovídají tomu, co je na vaší wiki LocalSettings.php.

Další podrobnosti viz Parsoid/Nastavení#Konfigurace.

"dosažena maximální úroveň vnoření funkce '100', přeruší se"

Pokud se zobrazí tato chyba, musíte nastavit xdebug.max_nesting_level = 200, pravděpodobně v /etc/php5/apache2/php.ini.[1]

"Zachycena výjimka: CAS není implementován v Xyz"

StructuredDiscussions vyvolává $cache->cas() a některé implementace mezipaměti včetně CACHE_ACCEL (APCBagOStuff) neimplementují CAS. Pravděpodobně budete muset použít jinou mezipaměť, například nainstalovat memcached a nastavit $wgMainCacheType = CACHE_MEMCACHED;.

Oprávnění

Uživatelé musí mít základní oprávnění edit, aby mohli provádět jakoukoli akci zápisu v StructuredDiscussions. Mnoho wikin uděluje toto oprávnění pouze skupině 'user' (přihlášená).

StructuredDiscussions definuje mnoho akcí, jako je edit-post a delete-topic (viz seznam v FlowActions.php). Oprávnění se liší v závislosti na tom, zda je příspěvek váš vlastní a zda byl moderován. Například ve výchozím nastavení mohou uživatelé upravovat své vlastní příspěvky, ale pouze uživatelé ve skupině 'sysop' mají oprávnění flow-edit-post upravovat něčí příspěvek. Můžete přepsat, které skupiny mají která oprávnění a jaká oprávnění jsou vyžadována pro jednotlivé akce toku. Viz Příručka:Uživatelská práva pro přehled oprávnění.

Migrace stávajících stránek

K přemístění jedné stávající stránky použijte Special:EnableStructuredDiscussions. Automaticky se postará o archivaci jedné stránky (poté povolí StructuredDiscussions).

Skript maintenance/convertNamespaceFromWikitext.php automatizuje konverzi a archivaci jmenného prostoru, viz Flow/Converting talk pages. Je do jisté míry specifický pro WMF, takže před spuštěním zhodnoťte jeho provoz a zálohujte si databázi. Další skript maintenance/convertAllLqtPages.php převede stránky LiquidThreads a jejich vlákna na nástěnky a témata Flow, viz Flow/Converting LiquidThreads. Platí podobná upozornění.

Flow přidá jmenný prostor Topic:, viz Extension default namespaces#flow. Můžete navštívit Special:PrefixIndex/Topic: a zjistit, zda existují stránky, které jsou s tímto v rozporu. Pokud ano, spusťte údržbový skript maintenance/namespaceDupes.php.

Konfigurace

Nastavení konfigurace v Flow.php
parametr výchozí komentář
$wgFlowHelpPage //www.mediawiki.org/wiki/Special:MyLanguage/Help:Extension:Flow URL pro další informace o systému oznámení Flow
$wgFlowCluster false $wgFlowCluster definuje, jaký externí DB server by měl být použit.

Pokud je nastaveno na hodnotu false, aktuální databáze (wfGetDB) bude použita ke čtení/zápisu dat z/do. Pokud mají být data StructuredDiscussions uložena v externí databázi, nastavte hodnotu této proměnné na klíč $wgExternalServers představující toto externí připojení.

$wgFlowDefaultWikiDb false Databáze k použití pro metadata StructuredDiscussions. Chcete-li použít databázi wiki, nastavte na hodnotu false.

Libovolný počet wikin může a měl by sdílet stejnou databázi StructuredDiscussions. Skutečný název databáze je uložen v interních tabulkách pro každou zprávu. Změna názvu databáze po odeslání zpráv způsobí, že stará vlákna se stanou nedostupnými.

$wgFlowExternalStore false Používá se pro ukládání obsahu.

False pro uložení obsahu v StructuredDiscussions db. Jinak klastr nebo seznam klastrů k použití s ExternalStore. Poskytnuté klastry musí existovat v $wgExternalStores. Pro HA je vyžadováno více klastrů, takže vkládání může pokračovat, pokud je jeden z hlavních serverů mimo provoz z důvodu údržby nebo z jakéhokoli jiného důvodu.

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

$wgFlowContentFormat html Ve výchozím nastavení budou StructuredDiscussions ukládat obsah v HTML.

To však vyžaduje mít Parsoid spuštěný a v běhu, protože pro základní editor bude nutné převést HTML na wikitext. (např. pro použití VisualEditoru budete určitě potřebovat Parsoid, takže pokud podporujete VE, můžete to rovnou nastavit na HTML)

Pokud je $wgFlowParsoidURL null, $wgFlowContentFormat bude nuceno wikitext.

Formát 'wikitext' bude pravděpodobně v budoucnu zastaralý.

$wgFlowParsoidURL null
  Varování: Zastaralé. Použijte $wgVirtualRestConfig['modules']['parsoid']['url'].

Konfigurace StructuredDiscussions Parsoid

Vezměte prosím na vědomí, že tato konfigurace je oddělená od konfigurace Parsoid VE.

$wgFlowParsoidPrefix null
  Varování: Zastaralé. Použijte $wgVirtualRestConfig['modules']['parsoid']['prefix'].

Konfigurace Flow Parsoid

Vezměte prosím na vědomí, že tato konfigurace je oddělená od konfigurace Parsoid VE.

$wgFlowParsoidTimeout null
  Varování: Zastaralé. Použijte $wgVirtualRestConfig['modules']['parsoid']['timeout'].

Konfigurace Flow Parsoid

Vezměte prosím na vědomí, že tato konfigurace je oddělená od konfigurace Parsoid VE.

$wgFlowParsoidForwardCookies false
  Varování: Zastaralé. Použijte $wgVirtualRestConfig['modules']['parsoid']['forwardCookies'].

Přesměrovat soubory cookie uživatelů: Záhlaví do Parsoid. Vyžadováno pro soukromé wikiny (pro čtení je vyžadováno přihlášení).

Pokud wiki není soukromá (tj. $wgGroupPermissions['*']['read'] je true), bude tato konfigurační proměnná ignorována.

Tato funkce vyžaduje nezamykatelné úložiště relací. Výchozí úložiště relací nebude fungovat a při pokusu o použití této funkce způsobí uváznutí. Pokud zaznamenáte problémy se zablokováním, povolte $wgSessionsInObjectCache.

UPOZORNĚNÍ: Povolte to POUZE na soukromých wikinách a POUZE POKUD rozumíte BEZPEČNOSTNÍM DŮSLEDKŮM odesílání hlaviček souborů cookie do Parsoid přes HTTP. Z bezpečnostních důvodů se důrazně doporučuje, aby byl $wgVirtualRestConfig['modules']['parsoid']['forwardCookies'] odkazován na localhost, pokud je toto nastavení povoleno.

$wgFlowDefaultLimit 10 Limity pro stránkování
$wgFlowMaxLimit 100 Limity pro stránkování
$wgFlowMaxMentionCount 100 Maximální počet uživatelů, které lze uvést v jednom komentáři
$wgFlowMaxThreadingDepth 8 Maximální hloubka vlákna
$wgFlowCacheTime 60 * 60 * 24 * 3 Výchozí doba ukládání dat StructuredDiscussions do mezipaměti v memcache.

Tuto hodnotu lze vyladit ve spojení s měřením poměrů mezipaměti hit/miss pro dosažení požadovaného kompromisu mezi využitím paměti, db dotazy a dobou odezvy. Výchozí 3 dny znamená, že StructuredDiscussions se pokusí uchovat v memcache všechny datové modely požadované za poslední 3 dny.

$wgFlowCacheVersion 4.9 Řetězec verze připojený ke klíčům mezipaměti.

Změňte to, pokud se změní formát mezipaměti nebo logika. StructuredDiscussions může být databáze napříč wikinami, ke které mají přístup wikiny s různými verzemi kódu Flow. WMF to někdy globálně přepíše ve 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.

Systémové zprávy

Použitím možnosti "Editace zdroje" na nástěnkách StructuredDiscussions zviditelníte text nápovědy "Wikitext používá formátovací značky a kdykoli si můžete zobrazit náhled výsledku.". Část "používá značky" je propojena prostřednictvím systémové zprávy MediaWiki:Flow-wikitext-editor-help-uses-wikitext, která využívá interwiki odkaz na MediaWiki.org.

V některých případech tento interwiki odkaz místo toho, aby ukazoval na Help:Formatting na MediaWiki.org, ukazuje na (obvykle neexistující) Help:Formatting stránku na hostitelské Wiki.

To lze napravit změnou interwiki odkazu na MediaWiki:Flow-wikitext-editor-help-uses-wikitext na externí odkaz, jako je

[https://www.mediawiki.org/wiki/Help:Formatting uses markup].

Řešení problémů

Nedostáváte Flow podle očekávání? Existují různé opravy v závislosti na zdroji problému:

Špatně nakonfigurovaný parsoid/VE nefunguje

Když dostanete zprávy jako Conversion from 'html' to 'wikitext' was requested, but core's Parser only supports 'wikitext' to 'html' conversion, pravděpodobně nemáte parsoid správně nakonfigurované. Pro použití vizuálního editoru v diskusích vyžaduje toto rozšíření správně nakonfigurovaný parsoid.

Udělejte následující:

  1. Ujistěte se, že máte správně nainstalovaný parsoid.
  2. Když tato chyba nebyla vyřešena, použijte tuto opravu na kódovou základnu StructuredDiscussions.

Pokud problém přetrvává, může vám pomoci tato diskuse.

Chybná objednávka deklarace vlastního jmenného prostoru

Deklarace Flow musí následovat po deklaraci pro vlastní jmenný prostor. Správné pořadí je:

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

Špatné nativní konstanty

Diskusní stránky v Hlavním jmenném prostoru jsou definovány jako NS_TALK, ne NS_MAIN_TALK

Správné prohlášení je:

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

Neregistrované konstanty rozšíření

Rozšíření:Page Forms konstanta jmenného prostoru je supposed (předpokládá se) PF_NS_FORM_TALK. Ale tato konstanta nefunguje v deklaraci Flow-- musíte použít skutečné číslo: 107. Toto funguje:

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

Tomuto autorovi není známo, zda Page_Forms nedokázal správně zaregistrovat své konstanty, nebo zda rozšíření all musí používat čísla (ne konstanty) s Flow. Viz seznam některých dalších konstant jmenného prostoru rozšíření.

Staré zbytky

Pokud správně získáváte Flow na všech diskusních stránkách v jmenném prostoru, kromě jedné stránky v tomto jmenném prostoru, může být na diskusní stránce zbytkový odpad (i když se zdá prázdná). Udělejte následující:

  1. Přejděte na diskusní stránku, která nenačte Flow, např.: Portal_Talk:Welcome
  2. Smažte stránku Talk pomocí karty Smazat.
  3. Přejděte na obsahovou stránku této diskusní stránky, např.: Portal:Welcome
  4. Klikněte na Diskutovat.
  5. Získáte Flow.

Parsoid not working in StructuredDiscussions (Flow)

To get Parsoid to work with StructuredDiscussions (Flow):

  1. In LocalSettings.php, explicitely load Parsoid like so: wfLoadExtension( 'Parsoid', "vendor/wikimedia/parsoid/extension.json" );
  2. Apply the following patch.

For more details, see Topic:X8mv19b4va26u8tz.

Architektura

Podívejte se na stránku Flow/Architecture.

Spam

Další informace o tom, jak bojovat proti spamu ve Flow, najdete na stránce Extension:StructuredDiscussions/Spam .

Moderování

Další informace o moderování ve Flow najdete na stránce Extension:StructuredDiscussions/Moderation .

Export a import

Existuje skript údržby pro export dat Flow podobný Manual:DumpBackup.php

php extensions/Flow/maintenance/dumpBackup.php

úkol T114703 - dává nějaké rady ohledně importu.