From 5d90da0fda4c6d2f719ad422a8909d8f79f54658 Mon Sep 17 00:00:00 2001 From: Justin Georgi Date: Tue, 22 Oct 2024 19:58:02 -0700 Subject: [PATCH] Convert to image handler hook based viewer insertion Signed-off-by: Justin Georgi --- extension.json | 5 +++-- includes/GlModelViewer.php | 15 ++++++++++++++- modules/glmv.js | 4 +++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/extension.json b/extension.json index f9181ae..e350fe0 100644 --- a/extension.json +++ b/extension.json @@ -3,7 +3,7 @@ "author": "Justin Georgi", "url": "https://gitea.azgeorgis.net/jgeorgi/mwModelViewer", "description": "This extension allows .glb and .gltf files to be added, displayed, and annotated in MediaWiki", - "version": "0.0.3", + "version": "0.0.4", "license-name": "MIT", "type": "media", "manifest_version": 2, @@ -13,7 +13,8 @@ "Hooks": { "MimeMagicInit": "GlModelViewer::onMimeMagicInit", "MimeMagicImproveFromExtension": "GlModelViewer::onMimeMagicImproveFromExtension", - "BeforePageDisplay": "GlModelViewer::onBeforePageDisplay" + "BeforePageDisplay": "GlModelViewer::onBeforePageDisplay", + "ImageBeforeProduceHTML": "GlModelViewer::onImageBeforeProduceHTML" }, "ResourceFileModulePaths": { "localBasePath": "modules", diff --git a/includes/GlModelViewer.php b/includes/GlModelViewer.php index 12910f3..150b410 100644 --- a/includes/GlModelViewer.php +++ b/includes/GlModelViewer.php @@ -16,12 +16,25 @@ class GlModelViewer extends ImageHandler { } public static function onBeforePageDisplay(OutputPage $out) { - preg_match('/(getHTML(),$findGltf); + preg_match('/(getHTML(),$findGltf); if ($findGltf[0]) { $out->addModules('ext.glmv'); } } + public static function onImageBeforeProduceHTML( DummyLinker &$linker, Title &$title, &$file, array &$frameParams, array &$handlerParams, &$time, &$result, Parser $parser, string &$query, &$widthOption ) { + if ($file->getMimeType() !== 'model/gltf-binary') { + return true; + } + $result = ''; + #echo ''; + return false; + } + public static function console_log($data, $add_script_tags = false) { $command = 'console.log('. json_encode($data, JSON_HEX_TAG).');'; if ($add_script_tags) { diff --git a/modules/glmv.js b/modules/glmv.js index 2ef6aa5..b01e6f5 100644 --- a/modules/glmv.js +++ b/modules/glmv.js @@ -6,6 +6,7 @@ headElem.appendChild(modelLoad) let urlProm, dataProm let isFilePageImage = false +/* let glbElems = document.querySelectorAll('.mw-body-content [href$=".glb"][title$=".glb"') if (glbElems.length > 0) { [...glbElems].forEach((ge, idx) => { @@ -65,4 +66,5 @@ async function getModelMeta(getTitle) { "page": getTitle }); return JSON.parse($(metaApiResp.parse.text['*']).find('pre').text() || '{}') -} \ No newline at end of file +} +*/ \ No newline at end of file