mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/RevisionSlider
synced 2024-11-15 11:40:43 +00:00
fc74a35709
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
109 lines
2.9 KiB
PHP
Executable file
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;
|
|
}
|
|
}
|