2012-05-25 19:50:48 +00:00
|
|
|
<?php
|
2012-07-19 00:11:26 +00:00
|
|
|
/**
|
|
|
|
* VisualEditor extension hooks
|
2012-07-19 21:25:16 +00:00
|
|
|
*
|
2012-07-19 00:11:26 +00:00
|
|
|
* @file
|
|
|
|
* @ingroup Extensions
|
|
|
|
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
|
|
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
|
|
*/
|
2012-05-25 19:50:48 +00:00
|
|
|
|
|
|
|
class VisualEditorHooks {
|
2012-08-15 23:35:52 +00:00
|
|
|
/** List of skins VisualEditor integration supports */
|
2012-08-23 18:01:20 +00:00
|
|
|
protected static $supportedSkins = array( 'vector', 'apex', 'monobook' );
|
2012-08-15 23:35:52 +00:00
|
|
|
|
2012-05-25 19:50:48 +00:00
|
|
|
/**
|
2012-06-11 06:54:41 +00:00
|
|
|
* Adds VisualEditor JS to the output if in the correct namespace.
|
|
|
|
*
|
|
|
|
* This is attached to the MediaWiki 'BeforePageDisplay' hook.
|
2012-05-25 19:50:48 +00:00
|
|
|
*
|
|
|
|
* @param $output OutputPage
|
|
|
|
* @param $skin Skin
|
|
|
|
*/
|
2012-06-11 06:54:41 +00:00
|
|
|
public static function onBeforePageDisplay( &$output, &$skin ) {
|
2012-11-05 20:46:14 +00:00
|
|
|
global $wgVisualEditorNamespaces;
|
2012-06-11 06:54:41 +00:00
|
|
|
if (
|
2012-11-14 23:44:15 +00:00
|
|
|
// HACK ignoring hidden-ness so we can do dark launches
|
|
|
|
$skin->getUser()->getOption( 'visualeditor-enable',
|
|
|
|
/*default=*/ false, /*ignoreHidden=*/true
|
|
|
|
) &&
|
2012-08-15 23:35:52 +00:00
|
|
|
in_array( $skin->getSkinName(), self::$supportedSkins ) &&
|
2012-06-18 21:13:26 +00:00
|
|
|
(
|
|
|
|
// Article in the VisualEditor namespace
|
2012-11-05 20:46:14 +00:00
|
|
|
in_array( $skin->getTitle()->getNamespace(), $wgVisualEditorNamespaces ) ||
|
2012-06-18 21:13:26 +00:00
|
|
|
// Special page action for an article in the VisualEditor namespace
|
2012-11-05 20:46:14 +00:00
|
|
|
in_array( $skin->getRelevantTitle()->getNamespace(), $wgVisualEditorNamespaces )
|
2012-06-18 21:13:26 +00:00
|
|
|
)
|
2012-06-11 06:54:41 +00:00
|
|
|
) {
|
2012-06-28 09:52:03 +00:00
|
|
|
$output->addModules( array( 'ext.visualEditor.viewPageTarget' ) );
|
2012-05-25 19:50:48 +00:00
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2012-11-05 20:46:14 +00:00
|
|
|
public static function onGetPreferences( $user, &$preferences ) {
|
|
|
|
$preferences['visualeditor-enable'] = array(
|
|
|
|
'type' => 'toggle',
|
|
|
|
'label-message' => 'visualeditor-preference-enable',
|
|
|
|
'section' => 'editing/beta'
|
|
|
|
);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2012-05-25 19:50:48 +00:00
|
|
|
/**
|
2012-06-11 06:54:41 +00:00
|
|
|
* Adds extra variables to the page config.
|
2012-05-25 19:50:48 +00:00
|
|
|
*
|
2012-06-11 06:54:41 +00:00
|
|
|
* This is attached to the MediaWiki 'MakeGlobalVariablesScript' hook.
|
2012-05-25 19:50:48 +00:00
|
|
|
*/
|
2012-06-11 06:54:41 +00:00
|
|
|
public static function onMakeGlobalVariablesScript( &$vars ) {
|
2012-06-01 23:26:03 +00:00
|
|
|
global $wgUser, $wgTitle;
|
2012-06-11 06:54:41 +00:00
|
|
|
$vars['wgVisualEditor'] = array(
|
|
|
|
'isPageWatched' => $wgUser->isWatched( $wgTitle )
|
|
|
|
);
|
2012-06-01 23:26:03 +00:00
|
|
|
return true;
|
|
|
|
}
|
2012-07-27 23:43:27 +00:00
|
|
|
|
|
|
|
public static function onResourceLoaderTestModules( array &$testModules, ResourceLoader &$resourceLoader ) {
|
|
|
|
$testModules['qunit']['ext.visualEditor.test'] = array(
|
|
|
|
'scripts' => array(
|
|
|
|
// QUnit plugin
|
|
|
|
've.qunit.js',
|
|
|
|
// VisualEditor Tests
|
2012-08-12 18:27:31 +00:00
|
|
|
've.test.js',
|
2012-07-27 23:43:27 +00:00
|
|
|
've.example.js',
|
|
|
|
've.Document.test.js',
|
|
|
|
've.Node.test.js',
|
|
|
|
've.BranchNode.test.js',
|
|
|
|
've.LeafNode.test.js',
|
|
|
|
've.Factory.test.js',
|
|
|
|
// VisualEditor DataModel Tests
|
|
|
|
'dm/ve.dm.example.js',
|
|
|
|
'dm/ve.dm.NodeFactory.test.js',
|
|
|
|
'dm/ve.dm.Node.test.js',
|
|
|
|
'dm/ve.dm.Converter.test.js',
|
|
|
|
'dm/ve.dm.BranchNode.test.js',
|
|
|
|
'dm/ve.dm.LeafNode.test.js',
|
|
|
|
'dm/nodes/ve.dm.TextNode.test.js',
|
|
|
|
'dm/ve.dm.Document.test.js',
|
|
|
|
'dm/ve.dm.DocumentSynchronizer.test.js',
|
|
|
|
'dm/ve.dm.Transaction.test.js',
|
|
|
|
'dm/ve.dm.TransactionProcessor.test.js',
|
|
|
|
'dm/ve.dm.Surface.test.js',
|
2012-08-24 22:25:37 +00:00
|
|
|
'dm/ve.dm.SurfaceFragment.test.js',
|
2012-08-31 19:34:18 +00:00
|
|
|
'dm/ve.dm.AnnotationFactory.test.js',
|
2012-07-27 23:43:27 +00:00
|
|
|
// VisualEditor ContentEditable Tests
|
|
|
|
'ce/ve.ce.test.js',
|
|
|
|
'ce/ve.ce.Document.test.js',
|
|
|
|
'ce/ve.ce.NodeFactory.test.js',
|
|
|
|
'ce/ve.ce.Node.test.js',
|
|
|
|
'ce/ve.ce.BranchNode.test.js',
|
|
|
|
'ce/ve.ce.LeafNode.test.js',
|
|
|
|
'ce/nodes/ve.ce.TextNode.test.js',
|
|
|
|
),
|
|
|
|
'dependencies' => array(
|
|
|
|
'ext.visualEditor.core',
|
|
|
|
'ext.visualEditor.viewPageTarget',
|
|
|
|
),
|
|
|
|
'localBasePath' => dirname( __FILE__ ) . '/modules/ve/test',
|
|
|
|
'remoteExtPath' => 'VisualEditor/modules/ve/test',
|
|
|
|
);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
2012-05-25 19:50:48 +00:00
|
|
|
}
|