Add file page link model when not on file page

Signed-off-by: Justin Georgi <justin.georgi@gmail.com>
This commit is contained in:
2024-11-16 16:45:11 -07:00
parent 3afe0ca143
commit d419f6fe7e
3 changed files with 21 additions and 3 deletions

View File

@@ -4,7 +4,7 @@ namespace MediaWiki\Extension\GlModelViewer;
use MediaWiki\MediaWikiServices;
use MediaTransformOutput;
use ConfigFactory;
use OutputPage;
use RequestContext;
use Html;
class GlModelTransformOutput extends MediaTransformOutput {
@@ -99,6 +99,8 @@ class GlModelTransformOutput extends MediaTransformOutput {
//Gather basic data
$hsSet = (isset($metadata['annotationSets']) && isset($metadata['annotationSets'][$this->hsset])) ? $this->hsset : 'default';
$view = (isset($metadata['viewerConfig']) && isset($metadata['viewerConfig'][$this->view])) ? $this->view : 'default';
$mainConfig = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
$context = RequestContext::getMain();
//Handle annotations and annotation sets
if (isset($metadata['annotations'])) {
@@ -162,7 +164,6 @@ class GlModelTransformOutput extends MediaTransformOutput {
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',
@@ -184,6 +185,16 @@ class GlModelTransformOutput extends MediaTransformOutput {
$elModel = Html::rawElement('model-viewer', $attrModelView, $hotspotHtml);
$elMenu = self::buildViewMenu();
$elFileLink = '';
if (!isset($viewParams['preview']) && $context->getTitle() != $this->file->getTitle()) {
$attrFileLink = array(
'class' => 'glmv-file-link',
'href' => $this->file->getDescriptionUrl()
);
$fileLinkUrl = $mainConfig->get( 'ExtensionAssetsPath' ) . '/GlModelViewer/resources/file_link.svg';
$elFileLink = Html::rawElement('a', $attrFileLink, '<img src="' . $fileLinkUrl . '"></image>');
}
//Render and return container element with model-viewer
$attrContainer = array(
'class' => 'glmv-container',
@@ -193,7 +204,7 @@ class GlModelTransformOutput extends MediaTransformOutput {
'onfullscreenchange' => 'toggleFullScreen(event)'
);
return Html::rawElement('div', $attrContainer, $elModel . $elMenu . $interactButton);
return Html::rawElement('div', $attrContainer, $elModel . $elMenu . $elFileLink . $interactButton);
}
/**