{ "name": "MultimediaViewer", "author": [ "MarkTraceur (Mark Holmquist)", "Gilles Dubuc", "Gergő Tisza", "Aaron Arcos", "Zeljko Filipin", "Pau Giner", "theopolisme", "MatmaRex", "apsdehal", "vldandrew", "Ebrahim Byagowi", "Dereckson", "Brion VIBBER", "Yuki Shira", "Yaroslav Melnychuk", "tonythomas01", "Raimond Spekking", "Kunal Mehta", "Jeff Hall", "Christian Aistleitner", "Amir E. Aharoni" ], "url": "https://www.mediawiki.org/wiki/Extension:MultimediaViewer", "descriptionmsg": "multimediaviewer-desc", "license-name": "GPL-2.0-or-later", "type": "other", "requires": { "MediaWiki": ">= 1.35.0" }, "MessagesDirs": { "MultimediaViewer": [ "i18n" ] }, "AutoloadClasses": { "MultimediaViewerHooks": "includes/MultimediaViewerHooks.php" }, "ResourceModules": { "mmv": { "scripts": [ "mmv/logging/mmv.logging.Api.js", "mmv/logging/mmv.logging.AttributionLogger.js", "mmv/logging/mmv.logging.DimensionLogger.js", "mmv/logging/mmv.logging.ViewLogger.js", "mmv/logging/mmv.logging.PerformanceLogger.js", "mmv/model/mmv.model.js", "mmv/model/mmv.model.IwTitle.js", "mmv/model/mmv.model.License.js", "mmv/model/mmv.model.Image.js", "mmv/model/mmv.model.Repo.js", "mmv/model/mmv.model.Thumbnail.js", "mmv/model/mmv.model.TaskQueue.js", "mmv/model/mmv.model.ThumbnailWidth.js", "mmv/mmv.lightboximage.js", "mmv/provider/mmv.provider.Api.js", "mmv/provider/mmv.provider.ImageInfo.js", "mmv/provider/mmv.provider.FileRepoInfo.js", "mmv/provider/mmv.provider.ThumbnailInfo.js", "mmv/provider/mmv.provider.GuessedThumbnailInfo.js", "mmv/provider/mmv.provider.Image.js", "mmv/mmv.ThumbnailWidthCalculator.js", "mmv/ui/mmv.ui.js", "mmv/ui/mmv.ui.dialog.js", "mmv/ui/mmv.ui.reuse.dialog.js", "mmv/ui/mmv.ui.download.js", "mmv/ui/mmv.ui.download.dialog.js", "mmv/ui/mmv.ui.description.js", "mmv/ui/mmv.ui.viewingOptions.js", "mmv/ui/mmv.ui.canvas.js", "mmv/ui/mmv.ui.canvasButtons.js", "mmv/ui/mmv.ui.permission.js", "mmv/ui/mmv.ui.progressBar.js", "mmv/ui/mmv.ui.stripeButtons.js", "mmv/ui/mmv.ui.truncatableTextField.js", "mmv/ui/mmv.ui.metadataPanel.js", "mmv/ui/mmv.ui.metadataPanelScroller.js", "mmv/mmv.lightboxinterface.js", "mmv/mmv.js" ], "styles": [ "mmv/ui/mmv.ui.dialog.less", "mmv/ui/mmv.ui.reuse.dialog.less", "mmv/ui/mmv.ui.download.dialog.less", "mmv/ui/mmv.ui.viewingOptions.less", "mmv/ui/mmv.ui.canvas.less", "mmv/ui/mmv.ui.canvasButtons.less", "mmv/ui/mmv.ui.permission.less", "mmv/ui/mmv.ui.progressBar.less", "mmv/ui/mmv.ui.stripeButtons.less", "mmv/ui/mmv.ui.truncatableTextField.less", "mmv/ui/mmv.ui.metadataPanel.less", "mmv/ui/mmv.ui.metadataPanelScroller.less", "mmv/mmv.lightboxinterface.less" ], "dependencies": [ "mediawiki.api", "mediawiki.Title", "mediawiki.Uri", "mediawiki.jqueryMsg", "mediawiki.storage", "mediawiki.user", "mediawiki.util", "oojs", "oojs-router", "jquery.fullscreen", "jquery.throttle-debounce", "jquery.color", "jquery.tipsy", "mmv.bootstrap", "mmv.head" ], "messages": [ "multimediaviewer-file-page", "multimediaviewer-options-learn-more", "multimediaviewer-options-dialog-header", "multimediaviewer-option-submit-button", "multimediaviewer-option-cancel-button", "multimediaviewer-options-text-header", "multimediaviewer-enable-alert", "multimediaviewer-options-text-body", "multimediaviewer-disable-confirmation-header", "multimediaviewer-disable-confirmation-text", "multimediaviewer-enable-dialog-header", "multimediaviewer-enable-text-header", "multimediaviewer-enable-submit-button", "multimediaviewer-enable-confirmation-header", "multimediaviewer-enable-confirmation-text", "multimediaviewer-thumbnail-error", "multimediaviewer-thumbnail-error-description", "multimediaviewer-thumbnail-error-retry", "multimediaviewer-report-issue-url", "multimediaviewer-thumbnail-error-report", "multimediaviewer-errorreport-privacywarning", "multimediaviewer-download-link", "multimediaviewer-reuse-link", "multimediaviewer-options-tooltip", "multimediaviewer-close-popup-text", "multimediaviewer-fullscreen-popup-text", "multimediaviewer-defullscreen-popup-text", "multimediaviewer-next-image-alt-text", "multimediaviewer-prev-image-alt-text", "multimediaviewer-commons-subtitle", "multimediaviewer-credit", "multimediaviewer-credit-fallback", "multimediaviewer-multiple-authors", "multimediaviewer-multiple-authors-combine", "multimediaviewer-datetime-created", "multimediaviewer-datetime-uploaded", "multimediaviewer-permission-link", "multimediaviewer-permission-link-hide", "multimediaviewer-restriction-2257", "multimediaviewer-restriction-aus-reserve", "multimediaviewer-restriction-communist", "multimediaviewer-restriction-costume", "multimediaviewer-restriction-currency", "multimediaviewer-restriction-design", "multimediaviewer-restriction-fan-art", "multimediaviewer-restriction-ihl", "multimediaviewer-restriction-insignia", "multimediaviewer-restriction-ita-mibac", "multimediaviewer-restriction-nazi", "multimediaviewer-restriction-personality", "multimediaviewer-restriction-trademarked", "multimediaviewer-restriction-default", "multimediaviewer-restriction-default-and-others", "multimediaviewer-reuse-warning-deletion", "multimediaviewer-reuse-warning-nonfree", "multimediaviewer-reuse-warning-noattribution", "multimediaviewer-reuse-warning-generic", "multimediaviewer-geoloc-north", "multimediaviewer-geoloc-east", "multimediaviewer-geoloc-south", "multimediaviewer-geoloc-west", "multimediaviewer-geoloc-coord", "multimediaviewer-geoloc-coords", "multimediaviewer-geolocation", "multimediaviewer-about-mmv", "multimediaviewer-optout-mmv", "multimediaviewer-optin-mmv", "multimediaviewer-optout-pending-mmv", "multimediaviewer-optin-pending-mmv", "multimediaviewer-optout-help", "multimediaviewer-optin-help", "mypreferences", "multimediaviewer-metadata-error", "multimediaviewer-title-popup-text", "multimediaviewer-credit-popup-text", "multimediaviewer-title-popup-text-more", "multimediaviewer-credit-popup-text-more", "multimediaviewer-permission-title", "multimediaviewer-permission-viewmore", "multimediaviewer-description-page-button-text", "multimediaviewer-description-page-popup-text", "multimediaviewer-repository-local", "multimediaviewer-license-cc-by-1.0", "multimediaviewer-license-cc-sa-1.0", "multimediaviewer-license-cc-by-sa-1.0", "multimediaviewer-license-cc-by-2.0", "multimediaviewer-license-cc-by-sa-2.0", "multimediaviewer-license-cc-by-2.1", "multimediaviewer-license-cc-by-sa-2.1", "multimediaviewer-license-cc-by-2.5", "multimediaviewer-license-cc-by-sa-2.5", "multimediaviewer-license-cc-by-3.0", "multimediaviewer-license-cc-by-sa-3.0", "multimediaviewer-license-cc-by-4.0", "multimediaviewer-license-cc-by-sa-4.0", "multimediaviewer-license-cc-pd", "multimediaviewer-license-cc-zero", "multimediaviewer-license-pd", "multimediaviewer-license-default" ] }, "mmv.ui.ondemandshareddependencies": { "scripts": [ "mmv.ui.ondemandshareddependencies/mmv.EmbedFileFormatter.js", "mmv.ui.ondemandshareddependencies/mmv.ui.utils.js" ], "dependencies": [ "mmv.head", "mmv", "oojs", "oojs-ui" ], "messages": [ "multimediaviewer-credit", "multimediaviewer-text-embed-credit-text-bl", "multimediaviewer-text-embed-credit-text-b", "multimediaviewer-text-embed-credit-text-l", "multimediaviewer-html-embed-credit-text-bl", "multimediaviewer-html-embed-credit-text-b", "multimediaviewer-html-embed-credit-text-l", "multimediaviewer-html-embed-credit-link-text" ] }, "mmv.ui.download.pane": { "scripts": [ "mmv.ui.download.pane/mmv.ui.download.pane.js" ], "styles": [ "mmv.ui.download.pane/mmv.ui.download.pane.less" ], "dependencies": [ "mediawiki.ui", "mediawiki.ui.button", "mediawiki.widgets", "mmv", "mmv.ui.ondemandshareddependencies", "oojs", "oojs-ui" ], "messages": [ "multimediaviewer-download-preview-link-title", "multimediaviewer-download-original-button-name", "multimediaviewer-download-small-button-name", "multimediaviewer-download-medium-button-name", "multimediaviewer-download-large-button-name", "multimediaviewer-download-xl-button-name", "multimediaviewer-embed-dimensions", "multimediaviewer-embed-dimensions-with-file-format", "multimediaviewer-download-attribution-cta-header", "multimediaviewer-download-optional-attribution-cta-header", "multimediaviewer-download-attribution-cta", "multimediaviewer-download-attribution-copy", "multimediaviewer-attr-plain", "multimediaviewer-attr-html" ] }, "mmv.ui.reuse.shareembed": { "scripts": [ "mmv.ui.reuse.shareembed/mmv.ui.reuse.tab.js", "mmv.ui.reuse.shareembed/mmv.ui.reuse.share.js", "mmv.ui.reuse.shareembed/mmv.ui.reuse.embed.js" ], "styles": [ "mmv.ui.reuse.shareembed/mmv.ui.reuse.share.less", "mmv.ui.reuse.shareembed/mmv.ui.reuse.embed.less" ], "dependencies": [ "jquery.tipsy", "oojs", "oojs-ui", "mediawiki.user", "mediawiki.widgets", "mmv.ui.ondemandshareddependencies" ], "messages": [ "multimediaviewer-reuse-loading-placeholder", "multimediaviewer-share-tab", "multimediaviewer-share-explanation", "multimediaviewer-link-to-file", "multimediaviewer-link-to-page", "multimediaviewer-reuse-loading-placeholder", "multimediaviewer-reuse-copy-share", "multimediaviewer-reuse-copy-embed", "multimediaviewer-embed-tab", "multimediaviewer-embed-html", "multimediaviewer-embed-wt", "multimediaviewer-embed-explanation", "multimediaviewer-embed-byline", "multimediaviewer-embed-license", "multimediaviewer-embed-via", "multimediaviewer-default-embed-dimensions", "multimediaviewer-original-embed-dimensions", "multimediaviewer-xl-embed-dimensions", "multimediaviewer-large-embed-dimensions", "multimediaviewer-medium-embed-dimensions", "multimediaviewer-small-embed-dimensions", "multimediaviewer-embed-dimensions", "multimediaviewer-embed-dimensions-separated" ] }, "mmv.ui.tipsyDialog": { "scripts": [ "mmv.ui.tipsyDialog/mmv.ui.tipsyDialog.js" ], "styles": [ "mmv.ui.tipsyDialog/mmv.ui.tipsyDialog.less" ], "dependencies": [ "mmv", "oojs", "jquery.tipsy" ] }, "mmv.bootstrap": { "scripts": [ "mmv.bootstrap/mmv.Config.js", "mmv.bootstrap/mmv.HtmlUtils.js", "mmv.bootstrap/mmv.bootstrap.js", "mmv.bootstrap/mmv.logging.Logger.js", "mmv.bootstrap/mmv.logging.ActionLogger.js", "mmv.bootstrap/mmv.logging.DurationLogger.js" ], "styles": [ "mmv.bootstrap/mmv.bootstrap.less" ], "dependencies": [ "mediawiki.api", "mediawiki.ui.button", "mediawiki.ui.icon", "mediawiki.Title", "mediawiki.user", "mediawiki.storage", "mmv.head", "oojs", "oojs-router" ], "messages": [ "multimediaviewer-view-expanded", "multimediaviewer-view-config", "multimediaviewer-disable-info-title", "multimediaviewer-disable-info" ] }, "mmv.bootstrap.autostart": { "scripts": [ "mmv.bootstrap.autostart/mmv.bootstrap.autostart.js" ], "dependencies": [ "mmv.head", "mmv.bootstrap" ] }, "mmv.head": { "scripts": [ "mmv.head/base.js", "mmv.head/mmv.head.js" ], "dependencies": [ "mediawiki.user", "mediawiki.storage" ] } }, "ResourceFileModulePaths": { "localBasePath": "resources", "remoteExtPath": "MultimediaViewer/resources" }, "QUnitTestModule": { "localBasePath": "", "remoteExtPath": "MultimediaViewer", "scripts": [ "tests/qunit/mmv/mmv.bootstrap.test.js", "tests/qunit/mmv/mmv.test.js", "tests/qunit/mmv/mmv.lightboxinterface.test.js", "tests/qunit/mmv/mmv.lightboximage.test.js", "tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js", "tests/qunit/mmv/mmv.EmbedFileFormatter.test.js", "tests/qunit/mmv/mmv.Config.test.js", "tests/qunit/mmv/mmv.HtmlUtils.test.js", "tests/qunit/mmv/logging/mmv.logging.DurationLogger.test.js", "tests/qunit/mmv/logging/mmv.logging.PerformanceLogger.test.js", "tests/qunit/mmv/logging/mmv.logging.ActionLogger.test.js", "tests/qunit/mmv/logging/mmv.logging.AttributionLogger.test.js", "tests/qunit/mmv/logging/mmv.logging.DimensionLogger.test.js", "tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js", "tests/qunit/mmv/model/mmv.model.test.js", "tests/qunit/mmv/model/mmv.model.IwTitle.test.js", "tests/qunit/mmv/model/mmv.model.TaskQueue.test.js", "tests/qunit/mmv/model/mmv.model.License.test.js", "tests/qunit/mmv/model/mmv.model.Image.test.js", "tests/qunit/mmv/model/mmv.model.Repo.test.js", "tests/qunit/mmv/provider/mmv.provider.Api.test.js", "tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js", "tests/qunit/mmv/provider/mmv.provider.FileRepoInfo.test.js", "tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js", "tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js", "tests/qunit/mmv/provider/mmv.provider.Image.test.js", "tests/qunit/mmv/ui/mmv.ui.test.js", "tests/qunit/mmv/ui/mmv.ui.canvas.test.js", "tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js", "tests/qunit/mmv/ui/mmv.ui.description.test.js", "tests/qunit/mmv/ui/mmv.ui.download.pane.test.js", "tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js", "tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js", "tests/qunit/mmv/ui/mmv.ui.progressBar.test.js", "tests/qunit/mmv/ui/mmv.ui.permission.test.js", "tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js", "tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js", "tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js", "tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js", "tests/qunit/mmv/ui/mmv.ui.reuse.tab.test.js", "tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js", "tests/qunit/mmv/ui/mmv.ui.tipsyDialog.test.js", "tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js", "tests/qunit/mmv/ui/mmv.ui.viewingOptions.test.js", "tests/qunit/mmv/mmv.testhelpers.js" ], "dependencies": [ "mmv.head", "mmv.bootstrap", "mmv", "mmv.ui.ondemandshareddependencies", "mmv.ui.reuse.shareembed", "mmv.ui.download.pane", "mmv.ui.tipsyDialog" ] }, "attributes": { "EventLogging": { "Schemas": { "MediaViewer": 10867062, "MultimediaViewerNetworkPerformance": 15573630, "MultimediaViewerDuration": 10427980, "MultimediaViewerAttribution": 9758179, "MultimediaViewerDimensions": 10014238 } } }, "Hooks": { "UserGetDefaultOptions": "MultimediaViewerHooks::onUserGetDefaultOptions", "GetPreferences": "MultimediaViewerHooks::onGetPreferences", "BeforePageDisplay": "MultimediaViewerHooks::onBeforePageDisplay", "CategoryPageView": "MultimediaViewerHooks::onCategoryPageView", "ResourceLoaderGetConfigVars": "MultimediaViewerHooks::onResourceLoaderGetConfigVars", "MakeGlobalVariablesScript": "main", "ThumbnailBeforeProduceHTML": "MultimediaViewerHooks::onThumbnailBeforeProduceHTML" }, "HookHandlers": { "main": { "class": "MultimediaViewerHooks", "services": [ "UserOptionsLookup" ] } }, "config": { "MediaViewerExtensions": { "value": { "jpg": "default", "jpeg": "default", "gif": "default", "svg": "default", "png": "default", "tiff": "default", "tif": "default" } }, "MediaViewerNetworkPerformanceSamplingFactor": { "description": "If set, records image load network performance via EventLogging once per this many requests. False if unset.", "value": false }, "MediaViewerDurationLoggingSamplingFactor": { "description": "If set, records loading times via EventLogging. A value of 1000 means there will be an 1:1000 chance to log the duration event. False if unset.", "value": false }, "MediaViewerDurationLoggingLoggedinSamplingFactor": { "description": "If set, records loading times via EventLogging with factor specific to loggedin users. A value of 1000 means there will be an 1:1000 chance to log the duration event. False if unset.", "value": false }, "MediaViewerAttributionLoggingSamplingFactor": { "description": "If set, records whether image attribution data was available. A value of 1000 means there will be an 1:1000 chance to log the attribution event. False if unset.", "value": false }, "MediaViewerDimensionLoggingSamplingFactor": { "description": "If set, records whether image dimension data was available. A value of 1000 means there will be an 1:1000 chance to log the dimension event. False if unset.", "value": false }, "MediaViewerActionLoggingSamplingFactorMap": { "description": "If set, records user actions via EventLogging and applies a sampling factor according to the map. A \"default\" key in the map must be set. False if unset.", "value": false }, "MediaViewerUseThumbnailGuessing": { "description": "When this is enabled, MediaViewer will try to guess image URLs instead of making an imageinfo API to get them from the server. This speeds up image loading, but will result in 404s when $wgGenerateThumbnailOnParse (so the thumbnails are only generated as a result of the API request). MediaViewer will catch such 404 errors and fall back to the API request, but depending on how the site is set up, the 404 might get cached, or redirected, causing the image load to fail. The safe way to use URL guessing is with a 404 handler: https://www.mediawiki.org/wiki/Manual:Thumb.php#404_Handler", "value": false }, "MediaViewerEnableByDefault": { "description": "If true, Media Viewer will be turned on by default.", "value": true }, "MediaViewerEnableByDefaultForAnonymous": { "description": "Overrides $wgMediaViewerEnableByDefault for anonymous users. If set to null, will fall back to value of $wgMediaViewerEnableByDefault", "value": null }, "MediaViewerImageQueryParameter": { "description": "If set, adds a query parameter to image requests made by Media Viewer", "value": false }, "MediaViewerRecordVirtualViewBeaconURI": { "description": "If set, records a virtual view via the provided beacon URI.", "value": false } }, "manifest_version": 2 }