wiki.techinc.nl/includes/parser/ParserOutputFlags.php
C. Scott Ananian 0448851e92 Add ParserOutputFlags::NO_TOC
Rather than suppress the TOCData in ParserOutput when __NOTOC__ is used,
set a new parser output flag, NO_TOC, since some clients want to know
whether there are sections present on the page irrespective of whether
the UX for the Table Of Contents should be displayed/suppressed.

Added OutputPage::getOutputFlag() as an @internal method for the
moment; eventually we should use the same object to represent
metadata in ParserOutput and OutputPage (T301020).

Bug: T332243
Followup-To: Ife2126ace95ac4d9ec44f6374c63d8fc995cf034
Followup-To: Iea6426336f93c053a5977768f0785cdb46daf5bf
Change-Id: Ib41e6e4926cb752826ad75d10e8692125fc0b064
2023-04-28 10:56:57 -04:00

188 lines
5.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 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 Show the table of contents in the skin? This is
* a /suggestion/ based on whether the TOC is "large enough"
* and other factors, and is intended mostly for skins which
* want to match the behavior of the traditional inline ToC.
*/
public const SHOW_TOC = 'show-toc';
/**
* @var string Suppress the table of contents in the skin?
* This reflects the use of the __NOTOC__ magic word in the
* article (possibly modified by __TOC__ or __FORCETOC__),
* and represents an explicit request from the author to
* hide the TOC.
*/
public const NO_TOC = 'no-toc';
/**
* @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::ENABLE_OOUI,
self::INDEX_POLICY,
self::NO_INDEX_POLICY,
self::NEW_SECTION,
self::HIDE_NEW_SECTION,
self::SHOW_TOC,
self::NO_TOC,
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,
];
}
}