mediawiki-extensions-Revisi.../RevisionSlider.hooks.php
addshore fc74a35709 Use correct time offset based on server and user settings
If the user has a time offset that will be used.

If the user uses the default then the offset is
still retrieved from mw.user.options.values.timecorrection

If the user is anon then mw.config.values.extRevisionSliderTimeOffset
is used which is added as a JS var by the Hook

Bug: T135109
Change-Id: Iab56bbeb6a1dd2ea08b73983341485623ff63ef1
2016-05-13 11:02:20 +00:00

109 lines
2.9 KiB
PHP
Executable file

<?php
use MediaWiki\MediaWikiServices;
/**
* RevisionSlider extension hooks
*
* @file
* @ingroup Extensions
* @license GPL-2.0+
*/
class RevisionSliderHooks {
public static function onDiffViewHeader(
DifferenceEngine $diff,
Revision $oldRev,
Revision $newRev
) {
global $wgUser;
/**
* If this extension is deployed with the BetaFeatures extension then require the
* current user to have it enabled as a BetaFeature.
*/
if (
class_exists( BetaFeatures::class ) &&
!BetaFeatures::isFeatureEnabled( $wgUser, 'revisionslider' ) )
{
return true;
}
$config = MediaWikiServices::getInstance()->getMainConfig();
$timeOffset = $config->get( 'LocalTZoffset' );
if ( is_null( $config->get( 'Localtimezone' ) ) ) {
$timeOffset = 0;
} elseif ( is_null( $timeOffset ) ) {
$timeOffset = 0;
}
$out = RequestContext::getMain()->getOutput();
$out->addModules( 'ext.RevisionSlider.init' );
$out->addJsConfigVars( 'extRevisionSliderOldRev', $oldRev->getId() );
$out->addJsConfigVars( 'extRevisionSliderNewRev', $newRev->getId() );
$out->addJsConfigVars( 'extRevisionSliderTimeOffset', intval( $timeOffset ) );
$out->addHTML(
Html::rawElement(
'div',
[
'id' => 'revision-slider-container',
'style' => 'min-height: 150px;',
],
Html::element(
'p',
[
'id' => 'revision-slider-placeholder',
'style' => 'text-align: center',
],
( new Message( 'revisionslider-loading-placeholder' ) )->parse()
) .
Html::rawElement(
'noscript',
[],
Html::element(
'p',
[ 'style' => 'text-align: center' ],
( new Message( 'revisionslider-loading-noscript' ) )->parse()
)
)
)
);
return true;
}
public static function getBetaFeaturePreferences( $user, &$prefs ) {
$prefs['revisionslider'] = [
'label-message' => 'revisionslider-beta-feature-message',
'desc-message' => 'revisionslider-beta-feature-description',
'info-link' => 'https://www.mediawiki.org/wiki/Extension:RevisionSlider',
'discussion-link' => 'https://www.mediawiki.org/wiki/Extension_talk:RevisionSlider',
];
}
public static function onResourceLoaderTestModules( array &$testModules, ResourceLoader $rl ) {
$testModules['qunit']['ext.RevisionSlider.tests'] = [
'scripts' => [
'tests/RevisionSlider.Revision.test.js',
'tests/RevisionSlider.Pointer.test.js',
'tests/RevisionSlider.PointerView.test.js',
'tests/RevisionSlider.Slider.test.js',
'tests/RevisionSlider.SliderView.test.js',
'tests/RevisionSlider.RevisionList.test.js',
],
'dependencies' => [
'ext.RevisionSlider.Revision',
'ext.RevisionSlider.Pointer',
'ext.RevisionSlider.PointerView',
'ext.RevisionSlider.Slider',
'ext.RevisionSlider.SliderView',
'ext.RevisionSlider.RevisionList',
'jquery.ui.draggable',
'jquery.ui.tooltip',
'jquery.tipsy',
],
'localBasePath' => __DIR__,
];
return true;
}
}