Notas para instalar un editor chulo para Mediawiki

Wiki.pngY es que debo reconocer que el editor normal  dista bastante de ser amigable. Si pretendo que alguien más lo utilice obligarles a escribir directamente en el lenguaje de marcado de Mediawiki puede ser excesivo.

La extensión que quiero instalar se llama WikiEditor y los pasos que he seguido son los siguientes, teniendo en cuenta que el propio Mediawiki procede del paquete Debian correspondiente.

  1. Creamos un directorio para la extensiones en /opt/mediawiki/extensions y lo asignamos al usuario www-data.
  2. Clonamos el repositorio correspondiente a la extensión.
  3. Retocamos la configuración de Mediawiki para activarlo.
  4. Recargamos y probamos.

El clonado de la extensión es sencillo:

# cd /opt/mediawiki/extensions
# git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/WikiEditor.git
# chown -R www-data.www-data WikiEditor

En Debian existe un mecanismo para gestionar las extensiones muy sencillo. Bajo el directorio /etc/mediawiki-extensions tenemos dos directorios: uno para las extensiones disponibles (extensions-available) y otro para las activas (extensiones-enabled). En el primero se sitúan enlaces simbólicos al archivo PHP principal de la extensión y en el segundo hay enlaces al primero. La configuración predeterminada de Mediawiki consulta éste último y carga las extensiones allí presentes. Como digo, muy sencillo.

# cd /etc/mediawiki-extensions/extensions-available
# ln -s /opt/mediawiki/extensions/WikiEditor/WikiEditor.php .
# mwenext WikiEditor.php
Extension WikiEditor.php enabled !
#

Ahora deberíamos crear un archivo con los valores de trabajo de la extensión tal y como recomiendan en la documentación:

# Enables use of WikiEditor by default but still allow users to disable it in preferences
$wgDefaultUserOptions['usebetatoolbar'] = 1;
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;

# Displays the Preview and Changes tabs
$wgDefaultUserOptions['wikieditor-preview'] = 1;

# Displays the Publish and Cancel buttons on the top right side
$wgDefaultUserOptions['wikieditor-publish'] = 1;

Y debería bastar con reiniciar el servicio correspondiente y visitar la página Special:Version del wiki para asegurarnos de que está activa. Ah, lo olvidaba, debo mencionar el mecanismo para añadir configuración local a Mediawiki.

Configuración local flexible de Mediawiki

Este mecanismo es similar al de las extensiones. Se crea un directorio especial donde se almacenan archivos con extensión php y se realizan algunos ajustes en la configuración local para que los cargue durante el arranque. Si necesitamos desactivar alguna basta con renombrarla para que la ignoren.

El directorio en cuestión puede ser /etc/mediawiki/settings.d y el ajuste que menciono consiste en añadir las siguientes líneas a /etc/mediawiki/LocalSettings.php  (sobre el final estaría bien):

# Cargamos configuración adicional según módulos 
if (is_file("/etc/mediawiki/settings.php")) {
include("/etc/mediawiki/settings.php");
}

También tenemos que crear el siguiente archivo fuente en /etc/mediawiki/settings.php

<?php

// Include base functions
include_once( '/usr/share/mediawiki-extensions/base/ExtensionFunctions.php' ) ;

$mw_debian_settings_dir = "/etc/mediawiki/settings.d";

// Including all enabled extensions.
if ( is_dir( $mw_debian_settings_dir )
&&
$dh = opendir( $mw_debian_settings_dir ) ) {
while ( ( $file = readdir( $dh ) ) !== false ) {
$absolute_file = $mw_debian_settings_dir . DIRECTORY_SEPARATOR . $file ;
if ( preg_match( "/.php$/",$file ) && file_exists( $absolute_file ) &&
is_readable( $absolute_file ) ) {
include_once( $absolute_file );
}
}
closedir( $dh );
}
?>

y reiniciamos el servicio para que tenga en cuenta los cambios. Simple, ¿ no ?