mediawiki-extensions-Visual.../maintenance/makeStaticLoader.php
Timo Tijhof 278e5f7640 Clean up, fix errors on demos.
* Fix 404 error for ve.ui.Icons-{raster,vector}.css
  Follows-up 9563f08 / I840f72426f9a.

makeStaticLoader.php:
* Clean up old code.
* Error out early for missing module.
* Put i18n stuff in the right place
  (some modules access ve.msg from the global scope to
  assign status variables, for standalone on demos this was
  failing due to wrong load order)

Change-Id: Idbff4c5136d567da747d9ae373cd2f6c3ee7fb1c
2012-12-04 08:58:20 +01:00

127 lines
3.6 KiB
PHP

<?php
$path = '../..';
if ( getenv( 'MW_INSTALL_PATH' ) !== false ) {
$path = getenv( 'MW_INSTALL_PATH' );
}
require_once( $path . '/maintenance/Maintenance.php' );
class MakeStaticLoader extends Maintenance {
public function __construct() {
parent::__construct();
$this->addOption( 'target', 'Which target to use ("demo" or "test"). Default: false', false, true );
$this->addOption( 'indent', 'Indentation prefix to use (number of tabs or a string)', false, true );
$this->addOption( 've-path', 'Override path to "/modules/". Default by --target', false, true );
}
public function execute() {
global $wgResourceModules, $wgHtml5, $wgWellFormedXml;
$wgHtml5 = true;
$wgWellFormedXml = false;
$target = $this->getOption( 'target', 'demo' );
$indent = $this->getOption( 'indent', 2 );
if ( is_numeric( $indent ) ) {
$indent = str_repeat( "\t", $indent );
}
// Path to /modules/
$vePath = $this->getOption( 've-path',
$target === 'demo'
// From /demos/ve/index.php
? '../../modules/'
// From /modules/ve/test/index.html
: '../../'
);
$wgResourceModules['Dependencies'] = array(
'scripts' => array(
'jquery/jquery.js',
'jquery/jquery.json.js',
'jquery/jquery.multiSuggest.js',
'rangy/rangy-core.js',
'rangy/rangy-position.js',
),
);
$wgResourceModules['Standalone Init'] = array(
'styles' => array(
've/init/sa/styles/ve.init.sa.css',
),
'scripts' => array(
've/init/sa/ve.init.sa.js',
've/init/sa/ve.init.sa.Platform.js',
),
'bodyAdd' => '<script>
<?php
require( \'' . $vePath . '../VisualEditor.i18n.php\' );
echo \'ve.init.platform.addMessages( \' . json_encode( $messages[\'en\'] ) . \');\';
?>
ve.init.platform.setModulesUrl( \'' . $vePath . '\' );
</script>'
);
$self = isset( $_SERVER['PHP_SELF'] ) ? $_SERVER['PHP_SELF'] : ( lcfirst( __CLASS__ ) . '.php' );
$head = $body = "";
$modules = array(
'Dependencies',
'ext.visualEditor.base',
'Standalone Init',
'ext.visualEditor.core',
);
foreach ( $modules as $module ) {
if ( !isset( $wgResourceModules[$module] ) ) {
echo "\nError: File group $module\n not found!\n";
exit( 1 );
}
$registry = $wgResourceModules[$module];
$headAdd = $bodyAdd = '';
if ( isset( $registry['styles'] ) && $target !== 'test' ){
foreach ($registry['styles'] as $style) {
$headAdd .= $indent . Html::element( 'link', array( 'rel' => 'stylesheet', 'href' => "$vePath$style" ) ) . "\n";
}
}
if ( isset( $registry['scripts'] ) ) {
foreach ($registry['scripts'] as $script) {
$bodyAdd .= $indent . Html::element( 'script', array( 'src' => "$vePath$script" ) ) . "\n";
}
}
if ( isset( $registry['debugScripts'] ) ) {
foreach ($registry['debugScripts'] as $script) {
$bodyAdd .= $indent . Html::element( 'script', array( 'src' => "$vePath$script" ) ) . "\n";
}
}
if ( isset( $registry['headAdd'] ) ) {
$headAdd .= $indent . implode( "\n$indent", explode( "\n", $registry['headAdd'] ) ) . "\n";
}
if ( isset( $registry['bodyAdd'] ) ) {
$bodyAdd .= $indent . implode( "\n$indent", explode( "\n", $registry['bodyAdd'] ) ) . "\n";
}
if ( $headAdd ) {
$head .= "$indent<!-- $module -->\n$headAdd";
}
if ( $bodyAdd ) {
$body .= "$indent<!-- $module -->\n$bodyAdd";
}
}
if ( $head ) {
echo "<head>\n\n$indent<!-- Generated by $self -->\n$head\n\n</head>";
}
if ( $body ) {
echo "<body>\n\n$indent<!-- Generated by $self -->\n$body\n\n</body>\n";
}
}
}
$maintClass = 'MakeStaticLoader';
require_once( RUN_MAINTENANCE_IF_MAIN );