Extensiones de Mediawiki

De Astillas.net

Las extensiones permiten ampliar la funcionalidad de Mediawiki al precio, en muchas ocasiones, de tener que mantener software fuera de la distribución habitual.

Enlaces y referencias

Configuración

En Debian se proporcionan un par de pequeños programas que interactúan con el mecanismo de extensiones de Mediawiki para activar y desactivar extensiones al estilo de los módulos del servidor web Apache.

Dicho mecanismo consiste en un directorio /etc/mediawiki-extensions en el que encontramos:

  • Un archivo fuente PHP llamado extensions.php que se incluye -si existe- desde el archivo de configuración principal sito en /etc/mediawiki/LocalSettings.php. El código en este fichero incluye una única vez el fuente de cada extensión activa.
  • Un directorio llamado extensions-available que contiene enlaces a los archivos fuente de las extensiones. Esto permite situar dichos programas fuera de la estructura habitual controlada por el sistema de paquetes.
  • Un directorio llamado extensions-enabled que contiene enlaces a los archivos fuente de aquellas extensiones que queremos activar de manera que si en él no aparece un enlace al fuente la extensión no será cargada en el programa.

Para activar la extensión de resaltado de síntaxis, por ejemplo, podemos emplear:

# mwenext SyntaxHighlight_GeSHi.php
Extension SyntaxHighlight_GeSHi.php enabled !
# tree extensions-enabled/
extensions-enabled/
`-- SyntaxHighlight_GeSHi.php -> /etc/mediawiki-extensions/extensions-available/SyntaxHighlight_GeSHi.php

0 directories, 1 file
#

La extensión puede requerir, como en el caso de Wikilog, algún cambio o ajuste en la estructura de la base de datos del wiki por lo que puede ser necesario ejecutar algún programa de mantenimiento.

Extensiones no probadas

TimeLineTable

Esta extensión permite crear en tablas HTML líneas de tiempo e incluírlas en una página.

Tasks

Añade la capacidad de definir tareas en cualquier página de un wiki. Las tareas pueden tener atributos como propietario, prioridad, estado e importancia.

LogEntry

Esta extensión permite añadir una caja con entradas en forma de registro de cambios a una página.

Dia

Sirve para mostrar imágenes de diagramas creados con el programa Dia empleando directamente archivos fuente del mismo.

Calendarios

Extensiones probadas o en uso

LDAP auth

Esta extensión permite

  • Identificar a los usuarios buscando en un directorio LDAP.
  • Restringir el acceso a un grupo o grupos concretos.
  • Añadir usuarios automáticamente a Mediawiki si no existen pero han accedido con las credenciales correctas.

La parte más importante de la configuración es:

<?php

$wgAuth = new LdapAuthenticationPlugin();

$wgLDAPDomainNames        = array( 'Example' );
$wgLDAPServerNames        = array( 'Example' => 'localhost');

$wgLDAPUseLocal           = false;
$wgLDAPEncryptionType     = array( 'Example' =>  'clear');
$wgLDAPBaseDNs            = array( 'Example' =>  "dc=example,dc=net" );
$wgLDAPGroupBaseDNs       = array( 'Example' =>  'ou=groups,dc=example,dc=net');
$wgLDAPUserBaseDNs        = array( 'Example' =>  'ou=users,dc=example,dc=net');
$wgLDAPSearchStrings      = array( 'Example' =>  'uid=USER-NAME,ou=users,dc=example,dc=net');
$wgLDAPSearchAttributes   = array( 'Example' =>  'uid');

$wgLDAPPreferences        = array( 'Example' =>   array( 'email' => 'mail')); 
$wgLDAPGroupUseFullDN     = array( 'Example' =>   false);
$wgLDAPLowerCaseUsername  = array( 'Example' =>   true);
$wgLDAPGroupObjectclass   = array( 'Example' =>   'posixgroup');
$wgLDAPGroupAttribute     = array( 'Example' =>   'memberuid');
$wgLDAPGroupNameAttribute = array( 'Example' =>   'cn');
$wgLDAPUseLDAPGroups      = array( 'Example' =>   true);
$wgLDAPRequiredGroups     = array( 'Example' =>   array( cn=family,ou=groups,dc=example,dc=net' ) );


// Activar depuración
$wgLDAPDebug = 0;
$wgDebugLogGroups['ldap'] = '/tmp/ldap-debug.log';


FCK

Edición de una página en un wiki interno

Esta extensión permite emplear un editor de textos mucho más amigable que el incluído por defecto en la instalación base.

SyntaxHighlight_GeSHi

La extensión sirve para incluir fragmentos de código fuente con resaltado de síntaxis, de manera que es más fácil de leer que mostrándolo en texto plano, a pesar de que dicho resaltado está automátizado y no siempre acierta con el código fuente.

geSHi es el acrónimo de un programa resaltador genérico de síntaxis (en inglés generic syntax highlighter) y que es una dependencia de esta extensión.

Hoja de estilo

Para cambiar la hoja de estilo de los textos generados por este complemento se debe modificar la página Mediawiki:Geshi.css.

Extendiendo geSHi

El programa emplea archivos fuente para reconocer la síntaxis del texto que se le indique. Si la instalación no incluye soporte estándar para uno en concreto es posible encontrar o escribir el archivo correspondiente e incorporarlo a la instalación del programa.

geSHi define la localización de los archivos de síntaxis en la variable GESHI_LANG_ROOT que en Debian corresponde con la ruta /usr/share/php-geshi/geshi. Teniendo en cuenta que la versión del programa debe poder emplear el nuevo archivo de síntaxis (conviene verificar las versiones por si acaso), debería bastar con instalar el archivo en el directorio con permisos idénticos a los ya existentes.

Los siguientes son algunos de los archivos que he incorporado a mi instalación:

erlang
Lenguaje de programación especializado en sistemas de tiempo real y concurrencia. Empleado entre otros en la construcción del programa ejabberd.
Un artículo muy interesante sobre este lenguaje es el del blog Radar Libre de José Rey.
YAML
Lenguaje de serialización de datos empleado por otros como Perl para transferir y/o guardar información.
ldif
Formato de intercambio de datos en directorios LDAP.

Wikilog

Permite añadir capacidades de blog a un wiki de manera que se convierte en un híbrido llamado Bliki.

Es posible añadir una lista de entradas en otra página del wiki, a modo de caja de noticias o similar. Para ello se incluye una plantilla especial de esta forma:

{{Special:WikiLog/Noticias:Informatica/view=archives/template=Noticias/3}}

indicando con los parámetros el número de entradas, la plantilla a usar y si se muestra el artículo entero o sólo los sumarios. Sumarios que se definen dentro de cada entrada encerrados con la etiqueta <summary>.

Instalación en Debian

Si no se encuentra este software empaquetado para Debian se puede seguir el siguiente procedimiento:

  1. Descargar el software de su página.
  2. Desempaquetarlo en /usr/local/share/mediawiki-extensions/Wikilog
  3. Añadirlo a la lista de extensiones creando un enlace del archivo principal (/usr/local/share/mediawiki-extensions/Wikilog/Wikilog.php) en el directorio correspondiente (/etc/mediawiki/extensions-available).
  4. Activar la extensión con mwenext Wikilog.php