Add poster view property and manual model reveal

Signed-off-by: Justin Georgi <justin.georgi@gmail.com>
This commit is contained in:
2024-11-04 18:25:52 -07:00
parent 7a53ef8de8
commit 9bd6f172c2
3 changed files with 41 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
<?php
namespace MediaWiki\Extension\GlModelViewer;
use MediaWiki\MediaWikiServices;
use MediaTransformOutput;
use ConfigFactory;
use OutputPage;
@@ -40,6 +41,7 @@ class GlModelTransformOutput extends MediaTransformOutput {
* custom-title-link Custom Title object to link to
* valign vertical-align property, if the output is an inline element
* img-class Class applied to the "<img>" tag, if there is such a tag
* preview Boolean, render is being called from a preview page
*
* @return string HTML
*/
@@ -117,10 +119,25 @@ class GlModelTransformOutput extends MediaTransformOutput {
}
//Set viewer configurations or use basic default if none defined
$interactButton = '';
if (isset($metadata['viewerConfig']) && isset($metadata['viewerConfig'][$view])) {
$attrModelView = $metadata['viewerConfig'][$view];
$attrModelView = $metadata['viewerConfig'][$view];
if (isset($attrModelView['poster'])) {
$posterFile = MediaWikiServices::getInstance()->getRepoGroup()->findFile(`File:` . $attrModelView['poster']);
if ($posterFile) {
$attrModelView['poster'] = $posterFile->getFullUrl();
$attrModelView['reveal'] = 'manual';
$mainConfig = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
$interactUrl = $mainConfig->get( 'ExtensionAssetsPath' ) . '/GlModelViewer/resources/interact.svg';
$attrInteractButton = array (
'class' => 'glmv-act-button',
'onclick' => 'this.style.display = "none"; this.parentElement.querySelector("model-viewer").dismissPoster()',
);
$interactButton = Html::rawElement('div', $attrInteractButton, '<img src="' . $interactUrl . '"></image>');
}
}
} else {
$attrModelView = array('camera-controls' => true);
$attrModelView = array('camera-controls' => true);
}
//Add important additional attributes and render model-viewer with hotspots
@@ -140,7 +157,7 @@ class GlModelTransformOutput extends MediaTransformOutput {
'ontouchstart' => 'clearAnnotations()'
);
return Html::rawElement('div', $attrContainer, $elModel . $elMenu);
return Html::rawElement('div', $attrContainer, $elModel . $elMenu . $interactButton);
}
/**