This patch exports the necessary information from the Parser into the ParserOutput to ensure that the Table of Contents can be properly language-converted: both ensuring that the target language is correct (in cases where it differs from the content language) and that various conversion-suppression mechanisms are functional. When the ParserCache does not (yet) have the new properties from Parser, the behavior is unchanged from before (the content language is used, and its "preferred variant"). This is a follow up to the "quick fix" deployed in Ic14b3a49a8ee7ed600485d4f8a363a206035a847 to fix an UBN regression. Parser tests have also been added to verify that ToC conversion is correctly done (T299973). Task T303329 has been opened to (eventually) rename the 'core:target-lang' and 'core:target-lang-variant' properties added to the ParserOutput in this patch. Bug: T303235 Bug: T295187 Bug: T299973 Followup-To: Ic14b3a49a8ee7ed600485d4f8a363a206035a847 Followup-To: Ib273f88531c340b561072ee9f616aa60725091e6 Change-Id: Ie0f1d7b6daffc8ff47228f6f086a257518f72717
175 lines
5 KiB
PHP
175 lines
5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Registry of flags used with ParserOutput::setOutputFlag() within
|
|
* MediaWiki core.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
* @since 1.38
|
|
*
|
|
* @file
|
|
* @ingroup Parser
|
|
*/
|
|
|
|
namespace MediaWiki\Parser;
|
|
|
|
/**
|
|
* Registry of flags used with ParserOutput::{get,set}OutputFlag() within
|
|
* MediaWiki core.
|
|
*
|
|
* All flags used should be defined in this class.
|
|
*
|
|
* It is recommended that new flag names in core should begin with 'mw-'
|
|
* in order to prevent namespace conflicts with legacy flags.
|
|
*
|
|
* @package MediaWiki\Parser
|
|
*/
|
|
class ParserOutputFlags {
|
|
|
|
// These flags are currently stored as ParserOutput properties
|
|
|
|
/**
|
|
* @var string No gallery on category page? (__NOGALLERY__).
|
|
* @see \ParserOutput::getNoGallery()
|
|
* @see \ParserOutput::setNoGallery()
|
|
*/
|
|
public const NO_GALLERY = 'mw-NoGallery';
|
|
|
|
/**
|
|
* @var string Used to suppress language conversion in ToC contents.
|
|
*/
|
|
public const NO_TOC_CONVERSION = 'no-toc-conversion';
|
|
|
|
/**
|
|
* @var string Whether OOUI should be enabled.
|
|
* @see \ParserOutput::getEnableOOUI()
|
|
* @see \ParserOutput::setEnableOOUI()
|
|
*/
|
|
public const ENABLE_OOUI = 'mw-EnableOOUI';
|
|
|
|
/**
|
|
* @var string Force index policy to be 'index'
|
|
* @see \ParserOutput::getIndexPolicy()
|
|
* @see \ParserOutput::setIndexPolicy()
|
|
*/
|
|
public const INDEX_POLICY = 'mw-IndexPolicy';
|
|
|
|
/**
|
|
* @var string Force index policy to be 'noindex'
|
|
* @see \ParserOutput::getIndexPolicy()
|
|
* @see \ParserOutput::setIndexPolicy()
|
|
*/
|
|
public const NO_INDEX_POLICY = 'mw-NoIndexPolicy';
|
|
|
|
/**
|
|
* @var string Show a new section link?
|
|
* @see \ParserOutput::getNewSection()
|
|
* @see \ParserOutput::setNewSection()
|
|
*/
|
|
public const NEW_SECTION = 'mw-NewSection';
|
|
|
|
/**
|
|
* @var string Hide the new section link?
|
|
* @see \ParserOutput::getHideNewSection()
|
|
* @see \ParserOutput::setHideNewSection()
|
|
*/
|
|
public const HIDE_NEW_SECTION = 'mw-HideNewSection';
|
|
|
|
/**
|
|
* @var string The prevent-clickjacking flag
|
|
* @see \ParserOutput::getPreventClickjacking()
|
|
* @see \ParserOutput::setPreventClickjacking()
|
|
*/
|
|
public const PREVENT_CLICKJACKING = 'mw-PreventClickjacking';
|
|
|
|
// These flags are stored in the ParserOutput::$mFlags array
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public const VARY_REVISION = 'vary-revision';
|
|
|
|
/**
|
|
* @var string Similar to VARY_REVISION, but used if we didn't
|
|
* guess the ID correctly. Informs the edit saving system that
|
|
* getting the canonical output after revision insertion requires
|
|
* a parse that used that exact revision ID.
|
|
*/
|
|
public const VARY_REVISION_ID = 'vary-revision-id';
|
|
|
|
/**
|
|
* @var string Similar to VARY_REVISION, but used if we didn't
|
|
* guess the timestamp correctly. Informs the edit saving system
|
|
* that getting the canonical output after revision insertion
|
|
* requires a parse that used an actual revision timestamp.
|
|
*/
|
|
public const VARY_REVISION_TIMESTAMP = 'vary-revision-timestamp';
|
|
|
|
/**
|
|
* @var string Similar to VARY_REVISION, but used if we didn't guess the
|
|
* content correctly.
|
|
*/
|
|
public const VARY_REVISION_SHA1 = 'vary-revision-sha1';
|
|
|
|
/**
|
|
* @var string Similar to VARY_REVISION
|
|
*/
|
|
public const VARY_REVISION_EXISTS = 'vary-revision-exists';
|
|
|
|
/**
|
|
* @var string Similar to VARY_REVISION, but used if we didn't guess the
|
|
* page id correctly. Informs the edit saving system that getting the
|
|
* canonical output after page insertion requires a parse that used that
|
|
* exact page id.
|
|
*/
|
|
public const VARY_PAGE_ID = 'vary-page-id';
|
|
|
|
/**
|
|
* @var string Similar to VARY_REVISION. Informs the edit saving
|
|
* system that getting the canonical output after revision
|
|
* insertion requires a parse that used the actual user ID.
|
|
*/
|
|
public const VARY_USER = 'vary-user';
|
|
|
|
/**
|
|
* @var string Used to avoid extremely stale user signature timestamps
|
|
* (T84843). Set if the signature wikitext contains another '~~~~' or
|
|
* similar (T230652).
|
|
*/
|
|
public const USER_SIGNATURE = 'user-signature';
|
|
|
|
public static function cases(): array {
|
|
return [
|
|
self::NO_GALLERY,
|
|
self::NO_TOC_CONVERSION,
|
|
self::ENABLE_OOUI,
|
|
self::INDEX_POLICY,
|
|
self::NO_INDEX_POLICY,
|
|
self::NEW_SECTION,
|
|
self::HIDE_NEW_SECTION,
|
|
self::PREVENT_CLICKJACKING,
|
|
self::VARY_REVISION,
|
|
self::VARY_REVISION_ID,
|
|
self::VARY_REVISION_TIMESTAMP,
|
|
self::VARY_REVISION_SHA1,
|
|
self::VARY_REVISION_EXISTS,
|
|
self::VARY_PAGE_ID,
|
|
self::VARY_USER,
|
|
self::USER_SIGNATURE,
|
|
];
|
|
}
|
|
}
|