summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/CodeEditor/includes
diff options
context:
space:
mode:
authorYaco <franco@reevo.org>2020-06-04 11:01:00 -0300
committerYaco <franco@reevo.org>2020-06-04 11:01:00 -0300
commitfc7369835258467bf97eb64f184b93691f9a9fd5 (patch)
treedaabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/extensions/CodeEditor/includes
first commit
Diffstat (limited to 'www/wiki/extensions/CodeEditor/includes')
-rw-r--r--www/wiki/extensions/CodeEditor/includes/CodeEditorHooks.php63
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;
+ }
+}