From aae33e8210562c1fe996e2e099838e5e70d9b823 Mon Sep 17 00:00:00 2001 From: Justin Georgi Date: Wed, 23 Oct 2024 12:42:51 -0700 Subject: [PATCH] Show only model on file preview page Signed-off-by: Justin Georgi --- extension.json | 3 ++- includes/GlModelViewer.php | 23 ++++++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/extension.json b/extension.json index 314327f..325d2a4 100644 --- a/extension.json +++ b/extension.json @@ -15,7 +15,8 @@ "MimeMagicImproveFromExtension": "GlModelViewer::onMimeMagicImproveFromExtension", "BeforePageDisplay": "GlModelViewer::onBeforePageDisplay", "ImageBeforeProduceHTML": "GlModelViewer::onImageBeforeProduceHTML", - "ImageOpenShowImageInlineBefore": "GlModelViewer::onImageOpenShowImageInlineBefore" + "ImageOpenShowImageInlineBefore": "GlModelViewer::onImageOpenShowImageInlineBefore", + "AlternateEditPreview": "GlModelViewer::onAlternateEditPreview" }, "ResourceFileModulePaths": { "localBasePath": "modules", diff --git a/includes/GlModelViewer.php b/includes/GlModelViewer.php index 85f9dae..cd832f5 100644 --- a/includes/GlModelViewer.php +++ b/includes/GlModelViewer.php @@ -1,4 +1,5 @@ addModules('ext.glmv'); $viewer = self::buildViewer($file,['class' => 'view-default']); $out->addHtml(Html::rawElement('div',['id' => 'file', 'class' => 'fullModelView'],$viewer)); - #echo ''; + } + + public static function onAlternateEditPreview( EditPage $editor, Content $content, string &$previewHTML, ?ParserOutput &$parserOutput ) { + $file = MediaWikiServices::getInstance()->getRepoGroup()->findFile($editor->getTitle()); + if ($file->getMimeType() !== 'model/gltf-binary') { + return true; + } + $out = $editor->getContext()->getOutput(); + $out->addModules('ext.glmv'); + $previewHTML = self::buildViewer($file,['class' => 'view-default']); + + return false; } private static function buildViewer($file, $frameParams) { @@ -83,6 +91,11 @@ class GlModelViewer extends ImageHandler { } public static function console_log($data, $add_script_tags = false) { + #Usage: + #echo ''; + $command = 'console.log('. json_encode($data, JSON_HEX_TAG).');'; if ($add_script_tags) { $command = '';