Add user preference for non-beta disabling

Change-Id: I3f581975cfdf33bc15b8a4b23549c6401b4bfb87
(cherry picked from commit b0b1446f5b)
This commit is contained in:
Mark Holmquist 2014-03-13 17:25:33 -07:00 committed by Gergő Tisza
parent 24ba37d57b
commit 59c1f3f6bd
3 changed files with 28 additions and 6 deletions

View file

@ -30,6 +30,7 @@ $messages['en'] = array(
'multimediaviewer-desc-nil' => 'No description available.',
'multimediaviewer-pref' => 'Media Viewer',
'multimediaviewer-pref-desc' => 'Improve your multimedia viewing experience with this new tool. It displays images in larger size on pages that have thumbnails. Images are shown in a nicer fullscreen interface overlay, and can also be viewed in full-size.',
'multimediaviewer-optin-pref' => 'Enable new media viewing experience',
'multimediaviewer-file-page' => 'Go to corresponding file page',
'multimediaviewer-repository' => 'Learn more on $1',
'multimediaviewer-repository-local' => 'Learn more',
@ -121,6 +122,7 @@ $messages['qqq'] = array(
'multimediaviewer-desc-nil' => 'Text to be used when no description is available.',
'multimediaviewer-pref' => 'Preference title',
'multimediaviewer-pref-desc' => 'Description of preference',
'multimediaviewer-optin-pref' => 'Label for non-beta preference.',
'multimediaviewer-file-page' => 'Text for a link to the file page for an image.',
'multimediaviewer-repository' => 'Link to the repository where the image is hosted. Parameters:
* $1 - the display name of that site

View file

@ -25,7 +25,7 @@
call_user_func( function() {
global $wgExtensionMessagesFiles, $wgResourceModules, $wgExtensionFunctions, $wgMediaViewerIsInBeta,
$wgAutoloadClasses, $wgHooks, $wgExtensionCredits, $wgNetworkPerformanceSamplingFactor,
$wgEnableMediaViewerForLoggedInUsersOnly;
$wgEnableMediaViewerForLoggedInUsersOnly, $wgDefaultUserOptions;
/** @var int|bool: If set, records image load network performance once per this many requests. False if unset. **/
$wgNetworkPerformanceSamplingFactor = false;
@ -665,6 +665,9 @@ call_user_func( function() {
$wgHooks['GetBetaFeaturePreferences'][] = 'MultimediaViewerHooks::getBetaPreferences';
}
$wgDefaultUserOptions['multimediaviewer-enable'] = true;
$wgHooks['GetPreferences'][] = 'MultimediaViewerHooks::getPreferences';
$wgHooks['BeforePageDisplay'][] = 'MultimediaViewerHooks::getModulesForArticle';
$wgHooks['CategoryPageView'][] = 'MultimediaViewerHooks::getModulesForCategory';
$wgHooks['ResourceLoaderGetConfigVars'][] = 'MultimediaViewerHooks::resourceLoaderGetConfigVars';

View file

@ -38,12 +38,18 @@ class MultimediaViewerHooks {
if ( $wgMediaViewerIsInBeta && class_exists( 'BetaFeatures' ) ) {
return BetaFeatures::isFeatureEnabled( $user, 'multimedia-viewer' );
} else if ( $wgEnableMediaViewerForLoggedInUsersOnly ) {
return $user->isLoggedIn();
} else {
// Default to enabling for everyone.
return true;
}
if ( $user->getOption( 'multimediaviewer-enable' ) ) {
if ( $wgEnableMediaViewerForLoggedInUsersOnly ) {
return $user->isLoggedIn();
} else {
// Default to enabling for everyone.
return true;
}
}
return false;
}
/**
@ -112,6 +118,17 @@ class MultimediaViewerHooks {
return true;
}
// Adds a default-enabled preference to gate the feature on non-beta sites
public static function getPreferences( $user, &$prefs ) {
$prefs['multimediaviewer-enable'] = array(
'type' => 'toggle',
'label-message' => 'multimediaviewer-optin-pref',
'section' => 'rendering/files',
);
return true;
}
/**
* Export variables used in both PHP and JS to keep DRY
* @param array $vars