diff options
author | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
commit | fc7369835258467bf97eb64f184b93691f9a9fd5 (patch) | |
tree | daabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/extensions/CodeEditor/includes |
first commit
Diffstat (limited to 'www/wiki/extensions/CodeEditor/includes')
-rw-r--r-- | www/wiki/extensions/CodeEditor/includes/CodeEditorHooks.php | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/www/wiki/extensions/CodeEditor/includes/CodeEditorHooks.php b/www/wiki/extensions/CodeEditor/includes/CodeEditorHooks.php new file mode 100644 index 00000000..5c47c596 --- /dev/null +++ b/www/wiki/extensions/CodeEditor/includes/CodeEditorHooks.php @@ -0,0 +1,63 @@ +<?php + +class CodeEditorHooks { + /** + * @param Title $title + * @param string $model + * @param string $format + * @return null|string + */ + public static function getPageLanguage( Title $title, $model, $format ) { + global $wgCodeEditorEnableCore; + + if ( $wgCodeEditorEnableCore ) { + if ( $model === CONTENT_MODEL_JAVASCRIPT ) { + return 'javascript'; + } elseif ( $model === CONTENT_MODEL_CSS ) { + return 'css'; + } elseif ( $model === CONTENT_MODEL_JSON ) { + return 'json'; + } + } + + // Give extensions a chance + // Note: $model and $format were added around the time of MediaWiki 1.28. + $lang = null; + Hooks::run( 'CodeEditorGetPageLanguage', [ $title, &$lang, $model, $format ] ); + + return $lang; + } + + /** + * @param User $user + * @param array &$defaultPreferences + * @return bool + */ + public static function getPreferences( $user, &$defaultPreferences ) { + $defaultPreferences['usecodeeditor'] = [ + 'type' => 'api', + 'default' => '1', + ]; + return true; + } + + /** + * @param EditPage $editpage + * @param OutputPage $output + * @return bool + */ + public static function editPageShowEditFormInitial( $editpage, $output ) { + $title = $editpage->getContextTitle(); + $model = $editpage->contentModel; + $format = $editpage->contentFormat; + + $lang = self::getPageLanguage( $title, $model, $format ); + if ( $lang && $output->getUser()->getOption( 'usebetatoolbar' ) ) { + $output->addModules( 'ext.codeEditor' ); + $output->addJsConfigVars( 'wgCodeEditorCurrentLanguage', $lang ); + } elseif ( !ExtensionRegistry::getInstance()->isLoaded( "WikiEditor" ) ) { + throw new ErrorPageError( "codeeditor-error-title", "codeeditor-error-message" ); + } + return true; + } +} |