mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-28 08:10:35 +00:00
c338304d33
TODO: follow up with annotate tests Change-Id: If0e68bd3a09840b1e5f3e8d85fd22a8c10134b58
59 lines
1.4 KiB
PHP
59 lines
1.4 KiB
PHP
<?php
|
|
|
|
class VisualEditorHooks {
|
|
/**
|
|
* Adds VisualEditor JS to the output if in the correct namespace
|
|
*
|
|
* @param $output OutputPage
|
|
* @param $skin Skin
|
|
*/
|
|
public static function onPageDisplay( &$output, &$skin ) {
|
|
if ( self::loadVisualEditor( $output, $skin ) ) {
|
|
$output->addModules( array( 'ext.visualEditor.core' ) );
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Determines whether or not we should construct the loader.
|
|
*
|
|
* @param $output OutputPage
|
|
* @param $skin Skin
|
|
*/
|
|
public static function loadVisualEditor( &$output, &$skin ) {
|
|
global $wgTitle;
|
|
// Vector skin supported for now.
|
|
if ( $skin->getSkinName() !== 'vector' ) {
|
|
return false;
|
|
}
|
|
// Be sure current page is VisualEditor:Something
|
|
if ( $wgTitle->getNamespace() !== NS_VISUALEDITOR ) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
public static function makeGlobalVariablesScript( &$vars ) {
|
|
global $wgUser, $wgTitle;
|
|
$vars['vePageWatched'] = $wgUser->isWatched( $wgTitle ) ? true : false;
|
|
return true;
|
|
}
|
|
/**
|
|
*
|
|
*/
|
|
public static function namespaceProtection( &$title, &$user, $action, &$result ){
|
|
global $wgUser, $wgNamespaceProtection;
|
|
|
|
if ( array_key_exists( $title->mNamespace, $wgNamespaceProtection ) ) {
|
|
$nsProt = $wgNamespaceProtection[ $title->mNamespace ];
|
|
|
|
if ( !is_array($nsProt) ) $nsProt = array($nsProt);
|
|
foreach( $nsProt as $right ) {
|
|
if( '' != $right && !$user->isAllowed( $right ) ) {
|
|
$result = false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|