diff options
Diffstat (limited to 'includes/content/ContentHandler.php')
-rw-r--r-- | includes/content/ContentHandler.php | 54 |
1 files changed, 39 insertions, 15 deletions
diff --git a/includes/content/ContentHandler.php b/includes/content/ContentHandler.php index 371b267e..bf91a4f0 100644 --- a/includes/content/ContentHandler.php +++ b/includes/content/ContentHandler.php @@ -207,26 +207,26 @@ abstract class ContentHandler { } } - // Could this page contain custom CSS or JavaScript, based on the title? - $isCssOrJsPage = NS_MEDIAWIKI == $ns && preg_match( '!\.(css|js)$!u', $title->getText(), $m ); - if ( $isCssOrJsPage ) { + // Could this page contain code based on the title? + $isCodePage = NS_MEDIAWIKI == $ns && preg_match( '!\.(css|js|json)$!u', $title->getText(), $m ); + if ( $isCodePage ) { $ext = $m[1]; } // Hook can force JS/CSS - Hooks::run( 'TitleIsCssOrJsPage', array( $title, &$isCssOrJsPage ), '1.25' ); + Hooks::run( 'TitleIsCssOrJsPage', array( $title, &$isCodePage ), '1.25' ); - // Is this a .css subpage of a user page? - $isJsCssSubpage = NS_USER == $ns - && !$isCssOrJsPage - && preg_match( "/\\/.*\\.(js|css)$/", $title->getText(), $m ); - if ( $isJsCssSubpage ) { + // Is this a user subpage containing code? + $isCodeSubpage = NS_USER == $ns + && !$isCodePage + && preg_match( "/\\/.*\\.(js|css|json)$/", $title->getText(), $m ); + if ( $isCodeSubpage ) { $ext = $m[1]; } // Is this wikitext, according to $wgNamespaceContentModels or the DefaultModelFor hook? $isWikitext = is_null( $model ) || $model == CONTENT_MODEL_WIKITEXT; - $isWikitext = $isWikitext && !$isCssOrJsPage && !$isJsCssSubpage; + $isWikitext = $isWikitext && !$isCodePage && !$isCodeSubpage; // Hook can override $isWikitext Hooks::run( 'TitleIsWikitextPage', array( $title, &$isWikitext ), '1.25' ); @@ -237,6 +237,8 @@ abstract class ContentHandler { return CONTENT_MODEL_JAVASCRIPT; case 'css': return CONTENT_MODEL_CSS; + case 'json': + return CONTENT_MODEL_JSON; default: return is_null( $model ) ? CONTENT_MODEL_TEXT : $model; } @@ -353,16 +355,20 @@ abstract class ContentHandler { * * @param string $name The content model ID, as given by a CONTENT_MODEL_XXX * constant or returned by Revision::getContentModel(). + * @param Language|null $lang The language to parse the message in (since 1.26) * * @throws MWException If the model ID isn't known. * @return string The content model's localized name. */ - public static function getLocalizedName( $name ) { + public static function getLocalizedName( $name, Language $lang = null ) { // Messages: content-model-wikitext, content-model-text, // content-model-javascript, content-model-css $key = "content-model-$name"; $msg = wfMessage( $key ); + if ( $lang ) { + $msg->inLanguage( $lang ); + } return $msg->exists() ? $msg->plain() : $name; } @@ -629,7 +635,7 @@ abstract class ContentHandler { // hook: get difference engine $differenceEngine = null; - if ( !wfRunHooks( 'GetDifferenceEngine', + if ( !Hooks::run( 'GetDifferenceEngine', array( $context, $old, $new, $refreshCache, $unhide, &$differenceEngine ) ) ) { return $differenceEngine; @@ -1021,7 +1027,7 @@ abstract class ContentHandler { /** * Returns true for content models that support caching using the - * ParserCache mechanism. See WikiPage::isParserCacheUsed(). + * ParserCache mechanism. See WikiPage::shouldCheckParserCache(). * * @since 1.21 * @@ -1058,6 +1064,24 @@ abstract class ContentHandler { } /** + * Return true if this content model supports direct editing, such as via EditPage. + * + * @return bool Default is false, and true for TextContent and it's derivatives. + */ + public function supportsDirectEditing() { + return false; + } + + /** + * Whether or not this content model supports direct editing via ApiEditPage + * + * @return bool Default is false, and true for TextContent and derivatives. + */ + public function supportsDirectApiEditing() { + return $this->supportsDirectEditing(); + } + + /** * Logs a deprecation warning, visible if $wgDevelopmentWarnings, but only if * self::$enableDeprecationWarnings is set to true. * @@ -1112,7 +1136,7 @@ abstract class ContentHandler { $handlers = Hooks::getHandlers( $event ); $handlerInfo = array(); - wfSuppressWarnings(); + MediaWiki\suppressWarnings(); foreach ( $handlers as $handler ) { if ( is_array( $handler ) ) { @@ -1135,7 +1159,7 @@ abstract class ContentHandler { $handlerInfo[] = $info; } - wfRestoreWarnings(); + MediaWiki\restoreWarnings(); wfWarn( "Using obsolete hook $event via ContentHandler::runLegacyHooks()! Handlers: " . implode( ', ', $handlerInfo ), 2 ); |