jenkins-bot has submitted this change and it was merged. Change subject: Add extension.json, empty PHP entry point ......................................................................
Add extension.json, empty PHP entry point Bug: T87943 Change-Id: I1251b22cf6fbeb6d31fdcf1b0662049eaacab18a --- M MultimediaViewer.php M MultimediaViewerHooks.php A extension.json 3 files changed, 581 insertions(+), 598 deletions(-) Approvals: Jdlrobson: Looks good to me, approved jenkins-bot: Verified diff --git a/MultimediaViewer.php b/MultimediaViewer.php index 85c55a9..24ed176 100644 --- a/MultimediaViewer.php +++ b/MultimediaViewer.php @@ -1,4 +1,5 @@ <?php + /* * This file is part of the MediaWiki extension MultimediaViewer. * @@ -20,602 +21,16 @@ * @author Mark Holmquist <[email protected]> * @copyright Copyright © 2013, Mark Holmquist */ -if ( !isset( $wgNetworkPerformanceSamplingFactor ) ) { - /** @var int|bool: If set, records image load network performance via EventLogging once per this many requests. False if unset. **/ - $wgNetworkPerformanceSamplingFactor = false; + +if ( function_exists( 'wfLoadExtension' ) ) { + wfLoadExtension( 'MultimediaViewer' ); + // Keep i18n globals so mergeMessageFileList.php doesn't break + $wgMessagesDirs['MultimediaViewer'] = __DIR__ . '/i18n'; + /* wfWarn( + 'Deprecated PHP entry point used for MultimediaViewer extension. Please use wfLoadExtension instead, ' . + 'see https://www.mediawiki.org/wiki/Extension_registration for more details.' + ); */ + return; +} else { + die( 'This version of the MultimediaViewer extension requires MediaWiki 1.25+' ); } - -if ( !isset( $wgMediaViewerDurationLoggingSamplingFactor ) ) { - /** - * 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. - * @var int|bool - */ - $wgMediaViewerDurationLoggingSamplingFactor = false; -} - -if ( !isset( $wgMediaViewerDurationLoggingLoggedinSamplingFactor ) ) { - /** - * 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. - * @var int|bool - */ - $wgMediaViewerDurationLoggingLoggedinSamplingFactor = false; -} - -if ( !isset( $wgMediaViewerAttributionLoggingSamplingFactor ) ) { - /** - * 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. - * @var int|bool - */ - $wgMediaViewerAttributionLoggingSamplingFactor = false; -} - -if ( !isset( $wgMediaViewerDimensionLoggingSamplingFactor ) ) { - /** - * 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. - * @var int|bool - */ - $wgMediaViewerDimensionLoggingSamplingFactor = false; -} - -if ( !isset( $wgMediaViewerActionLoggingSamplingFactorMap ) ) { - /** - * 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. - * @var array|bool - */ - $wgMediaViewerActionLoggingSamplingFactorMap = false; -} - -if ( !isset( $wgMediaViewerIsInBeta ) ) { - /** @var bool: If set, Media Viewer will try to use BetaFeatures. False if unset. **/ - $wgMediaViewerIsInBeta = false; -} - -if ( !isset( $wgMediaViewerUseThumbnailGuessing ) ) { - /** - * 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 - * - * @var bool - */ - $wgMediaViewerUseThumbnailGuessing = false; -} - -if ( !isset( $wgMediaViewerEnableByDefault ) ) { - /** - * If trueish, and $wgMediaViewerIsInBeta is unset, Media Viewer will be turned on by default. - * @var bool - */ - $wgMediaViewerEnableByDefault = true; -} - -if ( !isset( $wgMediaViewerEnableByDefaultForAnonymous ) ) { - /** - * If set, overrides $wgMediaViewerEnableByDefault for anonymous users. - * @var bool - */ - $wgMediaViewerEnableByDefaultForAnonymous = $wgMediaViewerEnableByDefault; -} - -if ( !isset( $wgMediaViewerImageQueryParameter ) ) { - /** - * If set, adds a query parameter to image requests made by Media Viewer - * @var string|bool - */ - $wgMediaViewerImageQueryParameter = false; -} - -if ( !isset( $wgMediaViewerRecordVirtualViewBeaconURI ) ) { - /** - * If set, records a virtual view via the provided beacon URI. - * @var string|bool - */ - $wgMediaViewerRecordVirtualViewBeaconURI = false; -} - -$wgMessagesDirs['MultimediaViewer'] = __DIR__ . '/i18n'; - -/** - * @param string $path - * @return array - */ -$wgMediaViewerResourceTemplate = array( - 'localBasePath' => __DIR__ . '/resources', - 'remoteExtPath' => 'MultimediaViewer/resources', -); - -$wgResourceModules += array( - // Loaded on demand by mmv.bootstrap.js - 'mmv' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - '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/routing/mmv.routing.js', - 'mmv/routing/mmv.routing.Route.js', - 'mmv/routing/mmv.routing.ThumbnailRoute.js', - 'mmv/routing/mmv.routing.MainFileRoute.js', - 'mmv/routing/mmv.routing.Router.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.User.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.UserInfo.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' => array( - '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' => array( - 'mediawiki.api', - 'mediawiki.Title', - 'mediawiki.Uri', - 'mediawiki.jqueryMsg', - 'mediawiki.user', - 'oojs', - 'jquery.fullscreen', - 'jquery.hidpi', - 'jquery.throttle-debounce', - 'jquery.color', - 'jquery.tipsy', - 'mmv.bootstrap', // mmv.logging.Logger.js - 'mmv.head', // mmv.base.js - ), - - 'messages' => array( - 'multimediaviewer-file-page', - - // messages that are gender-dependent (we need to check if they really depend on the gender): - 'multimediaviewer-userpage-link', - - // mmv.ui.viewingOptions.js - 'multimediaviewer-options-learn-more', - 'multimediaviewer-options-dialog-header', - 'multimediaviewer-option-header-viewer', - 'multimediaviewer-option-header-filepage', - 'multimediaviewer-option-desc-viewer', - 'multimediaviewer-option-desc-filepage', - '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', - // mmv.ui.canvas.js - 'multimediaviewer-thumbnail-error', - 'multimediaviewer-thumbnail-error-description', - 'multimediaviewer-thumbnail-error-retry', - 'multimediaviewer-report-issue-url', - // mmv.ui.canvasButtons.js - 'multimediaviewer-download-link', - 'multimediaviewer-reuse-link', - 'multimediaviewer-options-tooltip', - // mmv.lightboxinterface.js - 'multimediaviewer-close-popup-text', - 'multimediaviewer-fullscreen-popup-text', - 'multimediaviewer-defullscreen-popup-text', - // mmv.ui.metadataPanel.js - 'multimediaviewer-commons-subtitle', - 'multimediaviewer-credit', - 'multimediaviewer-credit-fallback', - 'multimediaviewer-multiple-authors', - 'multimediaviewer-multiple-authors-combine', - 'multimediaviewer-userpage-link', - 'multimediaviewer-datetime-created', - 'multimediaviewer-datetime-uploaded', - // for license messages see end of file - '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-geoloc-north', - 'multimediaviewer-geoloc-east', - 'multimediaviewer-geoloc-south', - 'multimediaviewer-geoloc-west', - 'multimediaviewer-geoloc-coord', - 'multimediaviewer-geoloc-coords', - 'multimediaviewer-geolocation', - 'multimediaviewer-about-mmv', - 'multimediaviewer-discuss-mmv', - 'multimediaviewer-help-mmv', - 'multimediaviewer-optout-mmv', - 'multimediaviewer-optin-mmv', - 'multimediaviewer-optout-pending-mmv', - 'multimediaviewer-optin-pending-mmv', - 'multimediaviewer-optout-help', - 'multimediaviewer-optin-help', - // Reuse the preferences message in the top-right menu. - 'mypreferences', - 'multimediaviewer-metadata-error', - 'multimediaviewer-title-popup-text', - 'multimediaviewer-credit-popup-text', - 'multimediaviewer-title-popup-text-more', - 'multimediaviewer-credit-popup-text-more', - // mmv.ui.permission.js - 'multimediaviewer-permission-title', - 'multimediaviewer-permission-viewmore', - // mmv.ui.stripeButtons.js - 'multimediaviewer-description-page-button-text', - 'multimediaviewer-description-page-popup-text', - 'multimediaviewer-description-page-popup-text-local', - 'multimediaviewer-repository-local', - ), - ), - - // Dependencies shared by mmv.ui.reuse.shareembed and mmv.ui.download.pane - // Both of which are loaded on demand - 'mmv.ui.ondemandshareddependencies' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/model/mmv.model.EmbedFileInfo.js', - 'mmv/mmv.EmbedFileFormatter.js', - 'mmv/ui/mmv.ui.utils.js', - ), - - 'dependencies' => array( - 'mmv.head', // mmv/mmv.base.js - 'mmv', // mmv/ui/mmv.ui.js - 'oojs', - 'oojs-ui', - ), - - 'messages' => array( - 'multimediaviewer-credit', - - 'multimediaviewer-text-embed-credit-text-tbls', - 'multimediaviewer-text-embed-credit-text-tbls-nonfree', - 'multimediaviewer-text-embed-credit-text-tls', - 'multimediaviewer-text-embed-credit-text-tls-nonfree', - 'multimediaviewer-text-embed-credit-text-tbs', - 'multimediaviewer-text-embed-credit-text-tbl', - 'multimediaviewer-text-embed-credit-text-tbl-nonfree', - 'multimediaviewer-text-embed-credit-text-tb', - 'multimediaviewer-text-embed-credit-text-ts', - 'multimediaviewer-text-embed-credit-text-tl', - 'multimediaviewer-text-embed-credit-text-tl-nonfree', - - 'multimediaviewer-html-embed-credit-text-tbls', - 'multimediaviewer-html-embed-credit-text-tbls-nonfree', - 'multimediaviewer-html-embed-credit-text-tls', - 'multimediaviewer-html-embed-credit-text-tls-nonfree', - 'multimediaviewer-html-embed-credit-text-tbs', - 'multimediaviewer-html-embed-credit-text-tbl', - 'multimediaviewer-html-embed-credit-text-tbl-nonfree', - 'multimediaviewer-html-embed-credit-text-tb', - 'multimediaviewer-html-embed-credit-text-ts', - 'multimediaviewer-html-embed-credit-text-tl', - 'multimediaviewer-html-embed-credit-text-tl-nonfree', - ), - ), - - // Loaded on demand by mmv.ui.download.dialog.js - 'mmv.ui.download.pane' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/ui/mmv.ui.download.pane.js', - ), - - 'styles' => array( - 'mmv/ui/mmv.ui.download.pane.less', - ), - - 'dependencies' => array( - 'mediawiki.ui', - 'mediawiki.ui.button', - 'mmv', // mmv/ui/mmv.ui.download.js - 'mmv.ui.ondemandshareddependencies', - 'oojs', - 'oojs-ui', - ), - - 'messages' => array( - '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-embed-dimensions', - 'multimediaviewer-embed-dimensions-with-file-format', - 'multimediaviewer-download-attribution-cta-header', - 'multimediaviewer-download-optional-attribution-cta-header', - 'multimediaviewer-download-attribution-cta', - 'multimediaviewer-attr-plain', - 'multimediaviewer-attr-html', - ), - ), - - // Preloaded by mmv.js and loaded on demand by mmv.ui.reuse.dialog.js - 'mmv.ui.reuse.shareembed' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/ui/mmv.ui.reuse.tab.js', - 'mmv/ui/mmv.ui.reuse.share.js', - 'mmv/ui/mmv.ui.reuse.embed.js', - ), - - 'styles' => array( - 'mmv/ui/mmv.ui.reuse.share.less', - 'mmv/ui/mmv.ui.reuse.embed.less', - 'mmv/ui/mmv.ui.reuse.shareembed.less', - ), - - 'dependencies' => array( - 'oojs', - 'oojs-ui', - 'mediawiki.user', - 'mmv.ui.ondemandshareddependencies', - ), - - 'messages' => array( - 'multimediaviewer-reuse-loading-placeholder', - 'multimediaviewer-share-tab', - 'multimediaviewer-share-explanation', - - 'multimediaviewer-link-to-file', - 'multimediaviewer-link-to-page', - - 'multimediaviewer-reuse-loading-placeholder', - '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-large-embed-dimensions', - 'multimediaviewer-medium-embed-dimensions', - 'multimediaviewer-small-embed-dimensions', - 'multimediaviewer-embed-dimensions', - 'multimediaviewer-embed-dimensions-separated', - ), - ), - - // Loaded on demand in mmv.bootstrap.js - 'mmv.ui.tipsyDialog' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/ui/mmv.ui.tipsyDialog.js', - ), - - 'styles' => array( - 'mmv/ui/mmv.ui.tipsyDialog.less', - ), - - 'dependencies' => array( - 'mmv', // mmv/ui/mmv.ui.js - 'oojs', - 'jquery.tipsy', - ), - ), - - // Isolated from mmv.bootstrap.autostart to allow tests running without an MMV instance - // being autostarted in the background - 'mmv.bootstrap' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/mmv.Config.js', - 'mmv/mmv.HtmlUtils.js', - 'mmv/mmv.bootstrap.js', - 'mmv/logging/mmv.logging.Logger.js', - 'mmv/logging/mmv.logging.ActionLogger.js', - 'mmv/logging/mmv.logging.DurationLogger.js', - 'jquery.hashchange/jquery.hashchange.js', - 'jquery.scrollTo/jquery.scrollTo.js', - ), - - 'styles' => array( - 'mmv/mmv.bootstrap.less', - ), - - 'dependencies' => array( - 'mediawiki.ui.button', - 'mediawiki.ui.icon', - 'mediawiki.Title', - 'mediawiki.user', - 'mmv.head', // mmv/mmv.base.js - 'oojs', - ), - - 'messages' => array( - 'multimediaviewer-view-expanded', - 'multimediaviewer-view-config', - 'multimediaviewer-disable-info-title', - 'multimediaviewer-disable-info', - ), - ), - - // Loaded on demand by mmv.head.js on DOM readiness - 'mmv.bootstrap.autostart' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/mmv.bootstrap.autostart.js', - ), - - 'dependencies' => array( - 'mmv.head', // mmv/mmv.base.js - 'mmv.bootstrap', - ), - ), - - // Loaded in the head - 'mmv.head' => $wgMediaViewerResourceTemplate + array( - 'scripts' => array( - 'mmv/mmv.base.js', - 'mmv/mmv.head.js', - ), - - 'dependencies' => array( - 'mediawiki.user', - ), - - 'position' => 'top', - ), -); - -$wgHooks['EventLoggingRegisterSchemas'][] = function( array &$schemas ) { - $schemas += array( - 'MediaViewer' => 10867062, - 'MultimediaViewerNetworkPerformance' => 12458951, - 'MultimediaViewerDuration' => 10427980, - 'MultimediaViewerAttribution' => 9758179, - 'MultimediaViewerDimensions' => 10014238, - ); -}; - -$wgExtensionFunctions[] = function () { - global $wgResourceModules, $wgDefaultUserOptions, - $wgMediaViewerEnableByDefault; - - if ( isset( $wgResourceModules['ext.eventLogging'] ) ) { - $wgResourceModules['mmv.lightboxinterface']['dependencies'][] = 'ext.eventLogging'; - $wgResourceModules['mmv']['dependencies'][] = 'ext.eventLogging'; - $wgResourceModules['mmv.bootstrap.autostart']['dependencies'][] = 'ext.eventLogging'; - } - - if ( $wgMediaViewerEnableByDefault ) { - $wgDefaultUserOptions['multimediaviewer-enable'] = true; - } - -}; - -foreach ( array( - 'cc-by-1.0', - 'cc-sa-1.0', - 'cc-by-sa-1.0', - 'cc-by-2.0', - 'cc-by-sa-2.0', - 'cc-by-2.1', - 'cc-by-sa-2.1', - 'cc-by-2.5', - 'cc-by-sa-2.5', - 'cc-by-3.0', - 'cc-by-sa-3.0', - 'cc-by-sa-3.0-migrated', - 'cc-by-4.0', - 'cc-by-sa-4.0', - 'cc-pd', - 'cc-zero', - 'pd', - 'default', -) as $license ) { - $wgResourceModules['mmv']['messages'][] = 'multimediaviewer-license-' . $license; -} - -$wgAutoloadClasses['MultimediaViewerHooks'] = __DIR__ . '/MultimediaViewerHooks.php'; - -$wgHooks['GetPreferences'][] = 'MultimediaViewerHooks::getPreferences'; -$wgHooks['GetBetaFeaturePreferences'][] = 'MultimediaViewerHooks::getBetaPreferences'; -$wgHooks['BeforePageDisplay'][] = 'MultimediaViewerHooks::getModulesForArticle'; -$wgHooks['CategoryPageView'][] = 'MultimediaViewerHooks::getModulesForCategory'; -$wgHooks['ResourceLoaderGetConfigVars'][] = 'MultimediaViewerHooks::resourceLoaderGetConfigVars'; -$wgHooks['MakeGlobalVariablesScript'][] = 'MultimediaViewerHooks::makeGlobalVariablesScript'; -$wgHooks['ResourceLoaderTestModules'][] = 'MultimediaViewerHooks::getTestModules'; -$wgHooks['ThumbnailBeforeProduceHTML'][] = 'MultimediaViewerHooks::thumbnailBeforeProduceHTML'; - -$wgExtensionCredits['other'][] = array( - 'path' => __FILE__, - 'name' => 'MultimediaViewer', - 'descriptionmsg' => 'multimediaviewer-desc', - 'version' => '0.3.0', - 'author' => array( - '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://mediawiki.org/wiki/Extension:MultimediaViewer', - 'license-name' => 'GPL-2.0+', -); diff --git a/MultimediaViewerHooks.php b/MultimediaViewerHooks.php index f619f7b..8b06067 100644 --- a/MultimediaViewerHooks.php +++ b/MultimediaViewerHooks.php @@ -31,6 +31,143 @@ /** Link to help about this module */ protected static $helpLink = '//mediawiki.org/wiki/Special:MyLanguage/Help:Extension:Media_Viewer'; + public static function registerExtension() { + global $wgNetworkPerformanceSamplingFactor, $wgMediaViewerDurationLoggingSamplingFactor, + $wgMediaViewerDurationLoggingLoggedinSamplingFactor, $wgMediaViewerAttributionLoggingSamplingFactor, + $wgMediaViewerDimensionLoggingSamplingFactor, $wgMediaViewerActionLoggingSamplingFactorMap, + $wgMediaViewerIsInBeta, $wgMediaViewerUseThumbnailGuessing, $wgMediaViewerEnableByDefault, + $wgMediaViewerEnableByDefaultForAnonymous, $wgMediaViewerImageQueryParameter, + $wgMediaViewerRecordVirtualViewBeaconURI; + if ( !isset( $wgNetworkPerformanceSamplingFactor ) ) { + /** @var int|bool: If set, records image load network performance via EventLogging once per this many requests. False if unset. **/ + $wgNetworkPerformanceSamplingFactor = false; + } + + if ( !isset( $wgMediaViewerDurationLoggingSamplingFactor ) ) { + /** + * 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. + * @var int|bool + */ + $wgMediaViewerDurationLoggingSamplingFactor = false; + } + + if ( !isset( $wgMediaViewerDurationLoggingLoggedinSamplingFactor ) ) { + /** + * 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. + * @var int|bool + */ + $wgMediaViewerDurationLoggingLoggedinSamplingFactor = false; + } + + if ( !isset( $wgMediaViewerAttributionLoggingSamplingFactor ) ) { + /** + * 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. + * @var int|bool + */ + $wgMediaViewerAttributionLoggingSamplingFactor = false; + } + + if ( !isset( $wgMediaViewerDimensionLoggingSamplingFactor ) ) { + /** + * 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. + * @var int|bool + */ + $wgMediaViewerDimensionLoggingSamplingFactor = false; + } + + if ( !isset( $wgMediaViewerActionLoggingSamplingFactorMap ) ) { + /** + * 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. + * @var array|bool + */ + $wgMediaViewerActionLoggingSamplingFactorMap = false; + } + + if ( !isset( $wgMediaViewerIsInBeta ) ) { + /** @var bool: If set, Media Viewer will try to use BetaFeatures. False if unset. **/ + $wgMediaViewerIsInBeta = false; + } + + if ( !isset( $wgMediaViewerUseThumbnailGuessing ) ) { + /** + * 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 + * + * @var bool + */ + $wgMediaViewerUseThumbnailGuessing = false; + } + + if ( !isset( $wgMediaViewerEnableByDefault ) ) { + /** + * If trueish, and $wgMediaViewerIsInBeta is unset, Media Viewer will be turned on by default. + * @var bool + */ + $wgMediaViewerEnableByDefault = true; + } + + if ( !isset( $wgMediaViewerEnableByDefaultForAnonymous ) ) { + /** + * If set, overrides $wgMediaViewerEnableByDefault for anonymous users. + * @var bool + */ + $wgMediaViewerEnableByDefaultForAnonymous = $wgMediaViewerEnableByDefault; + } + + if ( !isset( $wgMediaViewerImageQueryParameter ) ) { + /** + * If set, adds a query parameter to image requests made by Media Viewer + * @var string|bool + */ + $wgMediaViewerImageQueryParameter = false; + } + + if ( !isset( $wgMediaViewerRecordVirtualViewBeaconURI ) ) { + /** + * If set, records a virtual view via the provided beacon URI. + * @var string|bool + */ + $wgMediaViewerRecordVirtualViewBeaconURI = false; + } + } + + public static function onExtensionFunctions() { + global $wgResourceModules, $wgDefaultUserOptions, $wgMediaViewerEnableByDefault; + + if ( isset( $wgResourceModules['ext.eventLogging'] ) ) { + $wgResourceModules['mmv.lightboxinterface']['dependencies'][] = 'ext.eventLogging'; + $wgResourceModules['mmv']['dependencies'][] = 'ext.eventLogging'; + $wgResourceModules['mmv.bootstrap.autostart']['dependencies'][] = 'ext.eventLogging'; + } + + if ( $wgMediaViewerEnableByDefault ) { + $wgDefaultUserOptions['multimediaviewer-enable'] = true; + } + } + + public static function onEventLoggingRegisterSchemas( array &$schemas ) { + $schemas += array( + 'MediaViewer' => 10867062, + 'MultimediaViewerNetworkPerformance' => 12458951, + 'MultimediaViewerDuration' => 10427980, + 'MultimediaViewerAttribution' => 9758179, + 'MultimediaViewerDimensions' => 10014238, + ); + } + /** * Checks the context for whether to load the viewer. * @param User $user diff --git a/extension.json b/extension.json new file mode 100644 index 0000000..0e3fe39 --- /dev/null +++ b/extension.json @@ -0,0 +1,431 @@ +{ + "name": "MultimediaViewer", + "version": "0.3.0", + "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://mediawiki.org/wiki/Extension:MultimediaViewer", + "descriptionmsg": "multimediaviewer-desc", + "license-name": "GPL-2.0+", + "type": "other", + "callback": "MultimediaViewerHooks::registerExtension", + "ExtensionFunctions": [ + "MultimediaViewerHooks::onExtensionFunctions" + ], + "MessagesDirs": { + "MultimediaViewer": [ + "i18n" + ] + }, + "AutoloadClasses": { + "MultimediaViewerHooks": "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/routing/mmv.routing.js", + "mmv/routing/mmv.routing.Route.js", + "mmv/routing/mmv.routing.ThumbnailRoute.js", + "mmv/routing/mmv.routing.MainFileRoute.js", + "mmv/routing/mmv.routing.Router.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.User.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.UserInfo.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.user", + "oojs", + "jquery.fullscreen", + "jquery.hidpi", + "jquery.throttle-debounce", + "jquery.color", + "jquery.tipsy", + "mmv.bootstrap", + "mmv.head" + ], + "messages": [ + "multimediaviewer-file-page", + "multimediaviewer-userpage-link", + "multimediaviewer-options-learn-more", + "multimediaviewer-options-dialog-header", + "multimediaviewer-option-header-viewer", + "multimediaviewer-option-header-filepage", + "multimediaviewer-option-desc-viewer", + "multimediaviewer-option-desc-filepage", + "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-download-link", + "multimediaviewer-reuse-link", + "multimediaviewer-options-tooltip", + "multimediaviewer-close-popup-text", + "multimediaviewer-fullscreen-popup-text", + "multimediaviewer-defullscreen-popup-text", + "multimediaviewer-commons-subtitle", + "multimediaviewer-credit", + "multimediaviewer-credit-fallback", + "multimediaviewer-multiple-authors", + "multimediaviewer-multiple-authors-combine", + "multimediaviewer-userpage-link", + "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-geoloc-north", + "multimediaviewer-geoloc-east", + "multimediaviewer-geoloc-south", + "multimediaviewer-geoloc-west", + "multimediaviewer-geoloc-coord", + "multimediaviewer-geoloc-coords", + "multimediaviewer-geolocation", + "multimediaviewer-about-mmv", + "multimediaviewer-discuss-mmv", + "multimediaviewer-help-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-description-page-popup-text-local", + "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-sa-3.0-migrated", + "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/model/mmv.model.EmbedFileInfo.js", + "mmv/mmv.EmbedFileFormatter.js", + "mmv/ui/mmv.ui.utils.js" + ], + "dependencies": [ + "mmv.head", + "mmv", + "oojs", + "oojs-ui" + ], + "messages": [ + "multimediaviewer-credit", + "multimediaviewer-text-embed-credit-text-tbls", + "multimediaviewer-text-embed-credit-text-tbls-nonfree", + "multimediaviewer-text-embed-credit-text-tls", + "multimediaviewer-text-embed-credit-text-tls-nonfree", + "multimediaviewer-text-embed-credit-text-tbs", + "multimediaviewer-text-embed-credit-text-tbl", + "multimediaviewer-text-embed-credit-text-tbl-nonfree", + "multimediaviewer-text-embed-credit-text-tb", + "multimediaviewer-text-embed-credit-text-ts", + "multimediaviewer-text-embed-credit-text-tl", + "multimediaviewer-text-embed-credit-text-tl-nonfree", + "multimediaviewer-html-embed-credit-text-tbls", + "multimediaviewer-html-embed-credit-text-tbls-nonfree", + "multimediaviewer-html-embed-credit-text-tls", + "multimediaviewer-html-embed-credit-text-tls-nonfree", + "multimediaviewer-html-embed-credit-text-tbs", + "multimediaviewer-html-embed-credit-text-tbl", + "multimediaviewer-html-embed-credit-text-tbl-nonfree", + "multimediaviewer-html-embed-credit-text-tb", + "multimediaviewer-html-embed-credit-text-ts", + "multimediaviewer-html-embed-credit-text-tl", + "multimediaviewer-html-embed-credit-text-tl-nonfree" + ] + }, + "mmv.ui.download.pane": { + "scripts": [ + "mmv/ui/mmv.ui.download.pane.js" + ], + "styles": [ + "mmv/ui/mmv.ui.download.pane.less" + ], + "dependencies": [ + "mediawiki.ui", + "mediawiki.ui.button", + "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-embed-dimensions", + "multimediaviewer-embed-dimensions-with-file-format", + "multimediaviewer-download-attribution-cta-header", + "multimediaviewer-download-optional-attribution-cta-header", + "multimediaviewer-download-attribution-cta", + "multimediaviewer-attr-plain", + "multimediaviewer-attr-html" + ] + }, + "mmv.ui.reuse.shareembed": { + "scripts": [ + "mmv/ui/mmv.ui.reuse.tab.js", + "mmv/ui/mmv.ui.reuse.share.js", + "mmv/ui/mmv.ui.reuse.embed.js" + ], + "styles": [ + "mmv/ui/mmv.ui.reuse.share.less", + "mmv/ui/mmv.ui.reuse.embed.less", + "mmv/ui/mmv.ui.reuse.shareembed.less" + ], + "dependencies": [ + "oojs", + "oojs-ui", + "mediawiki.user", + "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-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-large-embed-dimensions", + "multimediaviewer-medium-embed-dimensions", + "multimediaviewer-small-embed-dimensions", + "multimediaviewer-embed-dimensions", + "multimediaviewer-embed-dimensions-separated" + ] + }, + "mmv.ui.tipsyDialog": { + "scripts": [ + "mmv/ui/mmv.ui.tipsyDialog.js" + ], + "styles": [ + "mmv/ui/mmv.ui.tipsyDialog.less" + ], + "dependencies": [ + "mmv", + "oojs", + "jquery.tipsy" + ] + }, + "mmv.bootstrap": { + "scripts": [ + "mmv/mmv.Config.js", + "mmv/mmv.HtmlUtils.js", + "mmv/mmv.bootstrap.js", + "mmv/logging/mmv.logging.Logger.js", + "mmv/logging/mmv.logging.ActionLogger.js", + "mmv/logging/mmv.logging.DurationLogger.js", + "jquery.hashchange/jquery.hashchange.js", + "jquery.scrollTo/jquery.scrollTo.js" + ], + "styles": [ + "mmv/mmv.bootstrap.less" + ], + "dependencies": [ + "mediawiki.ui.button", + "mediawiki.ui.icon", + "mediawiki.Title", + "mediawiki.user", + "mmv.head", + "oojs" + ], + "messages": [ + "multimediaviewer-view-expanded", + "multimediaviewer-view-config", + "multimediaviewer-disable-info-title", + "multimediaviewer-disable-info" + ] + }, + "mmv.bootstrap.autostart": { + "scripts": [ + "mmv/mmv.bootstrap.autostart.js" + ], + "dependencies": [ + "mmv.head", + "mmv.bootstrap" + ] + }, + "mmv.head": { + "scripts": [ + "mmv/mmv.base.js", + "mmv/mmv.head.js" + ], + "dependencies": [ + "mediawiki.user" + ], + "position": "top" + } + }, + "ResourceFileModulePaths": { + "localBasePath": "resources", + "remoteExtPath": "MultimediaViewer/resources" + }, + "Hooks": { + "EventLoggingRegisterSchemas": [ + "MultimediaViewerHooks::onEventLoggingRegisterSchemas" + ], + "GetPreferences": [ + "MultimediaViewerHooks::getPreferences" + ], + "GetBetaFeaturePreferences": [ + "MultimediaViewerHooks::getBetaPreferences" + ], + "BeforePageDisplay": [ + "MultimediaViewerHooks::getModulesForArticle" + ], + "CategoryPageView": [ + "MultimediaViewerHooks::getModulesForCategory" + ], + "ResourceLoaderGetConfigVars": [ + "MultimediaViewerHooks::resourceLoaderGetConfigVars" + ], + "MakeGlobalVariablesScript": [ + "MultimediaViewerHooks::makeGlobalVariablesScript" + ], + "ResourceLoaderTestModules": [ + "MultimediaViewerHooks::getTestModules" + ], + "ThumbnailBeforeProduceHTML": [ + "MultimediaViewerHooks::thumbnailBeforeProduceHTML" + ] + }, + "config": {}, + "manifest_version": 1 +} -- To view, visit https://gerrit.wikimedia.org/r/187735 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1251b22cf6fbeb6d31fdcf1b0662049eaacab18a Gerrit-PatchSet: 13 Gerrit-Project: mediawiki/extensions/MultimediaViewer Gerrit-Branch: master Gerrit-Owner: Gilles <[email protected]> Gerrit-Reviewer: Bartosz Dziewoński <[email protected]> Gerrit-Reviewer: Brion VIBBER <[email protected]> Gerrit-Reviewer: Gergő Tisza <[email protected]> Gerrit-Reviewer: Gilles <[email protected]> Gerrit-Reviewer: Jdlrobson <[email protected]> Gerrit-Reviewer: Jforrester <[email protected]> Gerrit-Reviewer: Legoktm <[email protected]> Gerrit-Reviewer: MarkTraceur <[email protected]> Gerrit-Reviewer: Paladox <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
