Wikimanga:Desarrollo

De Wikimanga
Saltar a: navegación, buscar

En esta sección se irán detallando los problemas y soluciones del desarrollo interno de wikimanga, esperando que este registro pueda ser útil en futuro, tanto para nosotros, como para otras personas que utilicen mediawiki.


Contenido

[editar] Header Tabs, Floatbox y Semantic Forms

Si deseas hacer combinar el funcionamiento de Header Tabs, Floatbox y las funciones de Semantic forms, deberás forzar la carga de más de un script. En nuestro caso la wiki queda configurada de la siguiente forma Common.js y edición. Algunos de los datos para configurar correctamente la wiki han sido extraídos de la Wikipedia germana Onlyifediting.js y Common.js , no hay que olvidar copiar la función Includepage.

//*** force the loading of another JavaScript file (Kopie von [[Commons:Common.js]])
// Local Maintainer: [[Commons:User:Dschwen]]
 
function includePage(name) {
    document.write('<script type="text/javascript" src="' + wgScript + '?title='
        + name + '&action=raw&ctype=text/javascript&dontcountme=s"><\/script>');    // smaxage=3600
}

[editar] SemanticMediawiki formato fechas

Si utilizas SemanticMediawiki conocerás las limitaciones referentes al almacenamiento de fechas, es por ello que SMW utiliza el sistema ISO8601 para su almacenaje, sin embargo es posible mostrar las fechas en el formato que desees. La solución es la extensión ParserFunctions en concreto la función time. Creamos una plantilla con la siguiente información y voilà! {{#time: d F Y|{{{1}}}}}

[editar] AWCForum enlace "Especial" antiestético

El enlace mostrado en la página Special:SpecialPages resulta muy antiestético mostrándose. "! YOURWIKI Forums..." En su lugar eliminaremos "!" y "...". Se procede de la siguiente forma:

Tomaremos el archivo awc_forum.php al que vamos a modificar la línea 48.

    $wgMessageCache->addMessages(array('awcforum' => '! '.$wgSitename.' Forums...'));

Cambiamos la línea por la siguiente.

    $wgMessageCache->addMessages(array('awcforum' => ''.$wgSitename.' Forums'));

[editar] Error con Semantic Mediawiki

[editar] Comportamiento detectado

Error SMW

El comportamiento observado es un vacío de los meses en la tabla de datos de SMW, así como un error que aparece en la parte superior después de previsualizar un contenido que contiene fechas tratadas con Parser functions.

[editar] Error detectado

Notice: Undefined offset: 2 in /******/wikimanga/extensions/SemanticMediaWiki/languages/SMW_Language.php on line 113

El número de offset naturalmente cambia, sin embargo el error siempre se produce en la misma línea. Extracto del código.

/**
	 * Return the name of the month with the given number.
	 */
	function getMonthLabel($number) {
	  return (($number>=1)&&($number<=12))?$this->m_months[(int)($number-1)]:'';
	}

La línea problemática es la 113.

return (($number>=1)&&($number<=12))?$this->m_months[(int)($number-1)]:'';

[editar] Inicio de la anomalía

El problema apareció después de la siguiente actualización.

  • MediaWiki version: 1.13.3 actualizada a 1.14.0
  • Semantic MediaWiki version: 1.4.1 actualizada a 1.4.2

[editar] Información Wiki

  • MediaWiki version: 1.14.0
  • Semantic MediaWiki version: 1.4.2
  • PHP version: 5.2.5 (cgi)
  • MySQL version: 4.1.22-standard
  • Enlace a v ersión actual.

[editar] Motivo

La utilización de Parser functions hace que SMW no consiga interpretar la fecha equivalente. El origen del problema fue detectado en la plantilla Plantilla:ConversionISO8601 que se usa masivamente, en las tablas de los artículos, para la conversión de fechas del formato ISO8601 al formato español.

[editar] Solución

El problema es debido a un incorrecto funcionamiento en la función de conversión y interpretación de fechas.

Es suficiente añadir al final del código del archivo /******/wikimanga/extensions/SemanticMediaWiki/languages/SMW_LanguageEs.php

protected $m_months = array(
0 => 'enero',
1 => 'febrero',
2 => 'marzo',
3 => 'abril',
4 => 'mayo',
5 => 'junio',
6 => 'julio',
7 => 'agosto',
8 => 'septiembre',
9 => 'octubre',
10 => 'noviembre',
11 => 'diciembre'
);

[editar] Notas adicionales

Si una vez introducido el código este es borrado, SMW realiza correctamente la sustición de lenguaje a inglés. Se desconoce el motivo de este comportamiento.

[editar] Problemas con tags html, intentos de edición redirigidos a portada - mod_security

[editar] Comportamiento detectado

Cualquier intento de previsualización o grabación de páginas/artículos que contengan tags html (< & >), da como resultado que el servidor redirige la petición a la página de portada sin aplicar ningún cambio.

[editar] Error detectado

Resulta imposible redactar nuevos artículos que contengan tags html, o modificar artículos existentes que los posean. Cualquier intento redirige a "wgSitename", portada del sitio. Dejando de lado este comportamiento no se presenta ningún error en pantalla.

[editar] Inicio de la anomalía

Aparentemente una actualización llevada a cabo por el proveedor de servicios (hosting) dio lugar al citado error. Se sospecha que fue en el conjunto de actualizaciones detalladas a continuación, en el que aparentemente se configuraria o instalaria el servicio mod_security para proveer más seguridad.

  • PHP versión 5.2.5 actualizada a PHP 5.2.8
  • MySQL versión 4.1.22-standard actualizada a 4.1.22-max
  • Instalación o configuración de Mod_security, se desconoce versión.

[editar] Información Wiki

  • MediaWiki version: 1.14.0
  • Semantic MediaWiki version: 1.4.2
  • PHP version: 5.2.8 (cgi)
  • MySQL version: 4.1.22-max

[editar] Motivo

Mod_security es sumamente restrictivo y no permite el correcto funcionamiento de Mediawiki y sus componentes.

[editar] Solución

Añadir las siguientes líneas al archivo .htaccess ubicado en el directorio raíz de public_html, para que lo aplique a todos los dominios alojados.

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

[editar] Namespaces con carácteres especiales, acentos

[editar] Comportamiento detectado

La adición de namespaces suplementarios desde el archivo "Localsettings.php", que contengan carácteres especiales (acentos), no se muestran correctamente.

Error Namespaces
Error Namespaces


[editar] Código utilizado

define("NS_Fansub", 120);
define("NS_Fansub_Discusión", 121);
define("NS_Asociación", 122);
define("NS_Asociación_Discusión", 123);
define("NS_Publicación", 124);
define("NS_Publicación_Discusión", 125);
 
$wgExtraNamespaces = array(
							120 => 'Fansub',
							121 => 'Fansub_Discusión',
							122 => 'Asociación',
							123 => 'Asociación_Discusión',
							124 => 'Publicación',
							125 => 'Publicación_Discusión',
);

[editar] Error detectado

El acento es tratado como si la conversión UTF-8 no funcionase correctamente. En la página especial de búsquedas puede observarse � e igualmente desde el menú de edición la dirección referenciada no muestra los acentos correctamente.

[editar] Motivo

Se trata de un problema de conversión, los carácteres no ANSI en LocalSettings.php deben introducirse en formato ANSI interpretado, dado que los modos "acute" tampoco funcionan.

[editar] Solución

Abrimos notepad++ y cambiamos el formato (Formato -> codificar en UTF8), creamos un bloque de código PHP (<?php CÁRACTERES DESEADOS ?>), escribimos los carácteres especiales deseados y de nuevo volvemos a cambiar el formato (Formato -> codificar en ANSI), guardamos el archivo y listo.

[editar] Notas adicionales

Muestra de vocales acentuadas en formato ANSI interpretado, sólo deben copiarse en el archivo php, dado que la conversión ya está hecha.

Á  É  Í  Ó  Ú  = Á É Í Ó Ú 
 
á  é  í  ó  ú  = á é í ó ú

[editar] Header Tabs no funciona

[editar] Comportamiento detectado

Las pestañas de Header Tabs no funcionan.

[editar] Error detectado

No se presenta ningún error aparente en la ejecución.

[editar] Inicio de la anomalía

Posteriormente a la actualización de la extensión de la versión 0.6.5 a la 0.6.6.

[editar] Información Wiki

  • MediaWiki version: 1.15.1
  • Semantic MediaWiki version: 1.4.3
  • PHP version: 5.2.8 (cgi)
  • MySQL version: 4.1.22-max
  • Enlace a v ersión actual.

[editar] Motivo

Desconocido

[editar] Solución

Como medida provisional realizamos la regresión a la versión 0.6.5.

[editar] Error en la página de actividad

[editar] Comportamiento detectado

Cada vez que se accede a la página actividad el siguiente error aparece en la parte superior.

[editar] Error detectado

Notice: Undefined variable: r in /******/wikimanga/extensions/DynamicArticleList/DynamicArticleList.php on line 266

[editar] Inicio de la anomalía

No determinado.

[editar] Información Wiki

  • MediaWiki version: 1.15.1
  • Semantic MediaWiki version: 1.4.3
  • PHP version: 5.2.8 (cgi)
  • MySQL version: 4.1.22-max
  • Enlace a versión actual.

[editar] Motivo

El error se produce por el uso de la extensión DynamicArticleList. La revisión del código muestra una variable no definida.

[editar] Solución

Se contempla como solución utilizar la extensión DPL.

[editar] Notas adicionales

Cabe destacar que la extensión se encuentra completamente desactualizada, sin revisiones desde 2007.

[editar] SF_FormPrinter.inc on line 331

[editar] Comportamiento detectado

Cada vez que se edita con formularios Semantic Forms, es detectado un error en la línea 331 del archivo SF_FormPrinter.inc.

[editar] Error detectado

Warning: preg_match() [function.preg-match]: Unknown modifier 'B' in ***/extensions/SemanticForms/includes/SF_FormPrinter.inc  on line 331

[editar] Inicio de la anomalía

Detectado por casualidad en la utilización de formularios con uso de subplantillas, típicas del formulario de inserción Frase aleatoria.

[editar] Información Wiki

  • MediaWiki version: 1.15.1
  • PHP version: 5.2.11 (litespeed)
  • MySQL version: 5.0.90-community
  • Semantic Forms version: 1.8.5
  • Semantic MediaWiki version: 1.4.3
  • Enlace a versión actual.

[editar] Motivo

El uso de plantillas con nombres que incluyen "\" (slash), propios de subartículos (plantilla/subplantilla) son el origen del problema. Así pues el uso de la barra invertida provoca el error en el archivo SF_FormPrinter.inc. La línea 331 conflictiva en origen se encuentra así.

$found_instance = preg_match('/{{' . $search_template_str . '\s*[\|}]/i', str_replace('_', ' ', $existing_page_content));

[editar] Solución

Reemplazar la línea 331 del archivo SF_FormPrinter.inc con la siguiente instrucción soluciona el problema.

$found_instance = preg_match('/{{' . str_replace('/','\/',$search_template_str) . '\s*[\|}]/i', str_replace('_', ' ', $existing_page_content));

[editar] Header Tabs error línea 115

[editar] Comportamiento detectado

La carga de la extension produce un error en la línea 115.

[editar] Error detectado

public_html/wikimanga/extensions/HeaderTabs/HeaderTabs.php on line 115

[editar] Inicio de la anomalía

Posteriormente a la actualización de la extensión de la versión 0.6.5 a la 0.7

[editar] Información Wiki

  • MediaWiki version: 1.15.1
  • Semantic MediaWiki version: 1.4.3
  • PHP version: 5.2.13 (litespeed)
  • MySQL version: 5.0.90-community
  • Enlace a versión actual.

[editar] Motivo

La línea en cuestión contiene una variable sin definir, que provoca el error en cuestión.

$tabhtml .= '<div id="' . $tab['tabid'] . '"' . $style . '><p>' . $tab['tabcontent'] . '</p></div>';

[editar] Solución

Modificamos la linea 115, eliminando la variable $style, dejamos la línea de la siguiente forma.

$tabhtml .= '<div id="' . $tab['tabid'] . '"><p>' . $tab['tabcontent'] . '</p></div>';

[editar] Error al crear miniatura

[editar] Comportamiento detectado

El gestor de miniaturas ImageMagick no funciona correctamente.

[editar] Error detectado

Error al crear miniatura. libgomp: Thread creation failed: Cannot allocate memory.

[editar] Inicio de la anomalía

Sin determinar.

[editar] Información Wiki

  • MediaWiki version: 1.15.4
  • Semantic MediaWiki version: 1.4.3
  • PHP version: 5.2.14 (litespeed)
  • MySQL version: 5.0.91-community
  • Enlace a versión actual.

[editar] Motivo

Este problema es debido a la pequeña asignación de memoria a Mediawiki.

[editar] Solución

Tenemos dos opciones, ambas haciendo uso del archivo "Localsettings.php":

  • Desactivar el uso de ImageMagick (no recomendado).

Modificando la línea perteneciente a:

$wgUseImageMagick = true;

Por:

$wgUseImageMagick = false;
  • Mantener ImageMagick y asignarle un uso máximo de memoria para la aplicación.

Añadir la siguiente línea:

$wgMaxShellMemory = 524288;

[editar] Notas adicionales

524288 es el equivalente a 512k. Motivos por los cuales no deberías desactivar ImageMagick:

  • Reduce el tiempo de carga para las imágenes, dado que las almacena como miniatura de forma separada.
  • Obtiene una calidad de imagen mucho mejor que la librería GD.

[editar] Linker.php on line 209

[editar] Comportamiento detectado

Se presenta un error al intentar cargar la wiki.

[editar] Error detectado

Fatal error: Call to undefined method Html::rawElement() in /******/wikimanga/includes/Linker.php on line 209

[editar] Inicio de la anomalía

Después de la actualización del core Mediawiki de 1.15.4 a la 1.16.0

[editar] Información Wiki

  • MediaWiki version: 1.16.0
  • Semantic MediaWiki version: 1.4.3
  • PHP version: 5.2.14 (litespeed)
  • MySQL version: 5.0.91-community
  • Enlace a versión actual.

[editar] Motivo

La extensión ClientSide, presenta una llamada a un método o función no definida.

[editar] Solución

Actualizando la extensión ClientSide de la versión 0.10 a 0.11 se soluciona el problema.

[editar] Notas adicionales

ClientSide es requerido para el funcionamiento de CommunityVoice.

[editar] Captcha no funciona

[editar] Comportamiento detectado

Error Captcha

Cada vez que introducimos un captcha el sistema lo rechaza. A pesar de la correcta introducción del captcha el sistema no lo da por válido.

[editar] Error detectado

Error de inicio de sesión Falta el código de confirmación, o éste es incorrecto.

[editar] Inicio de la anomalía

Se sospecha que el inicio de la anomalía empezó a darse en la versión 1.08, con la actualización de ConfirmEdit r36959 a r62678.

[editar] Información Wiki

No es relevante.

[editar] Motivo

La ausencia de la variable $wgCaptchaSecret en Localsettings.php no permite descifrar los códigos captcha.

[editar] Solución

Debe definirse un valor para $wgCaptchaSecret, que debe coincidir con la contraseña de generación de los captcha.

$wgCaptchaSecret = 'CONTRASEÑA DESCODIFICACIÓN';

[editar] Fatal error: Cannot redeclare wfprofilein()

[editar] Comportamiento detectado

Al intentar abrir cualquier página de la wiki, después de la actualización, se presenta un error.

[editar] Error detectado

Fatal Error Cannot redeclare wfprofilein() (previously declared in /YOUR_WIKI_ROOT/includes/profiler/Profiler.php:14)

[editar] Inicio de la anomalía

A partir de la actualización del core Mediawiki de la versión1.16.0 (2010-07-28) a la versión1.19.1 (2012-06-13).

[editar] Información Wiki

  • MediaWiki version: 1.19.1
  • Semantic MediaWiki version: 1.7.1
  • PHP version: 5.2.17 (litespeed)
  • MySQL version: 5.1.63-cll
  • Enlace a versión actual.

[editar] Motivo

La incompatibilidad de les versiones anteriores a la versión1.18.0 del archivo StartProfiler.php

[editar] Solución

Borrando o renombrando el archivo StartProfiler.php situado en el root de la wiki.

[editar] Notas adicionales

El problema se originó debido a una actualización a partir del core Mediawiki de la versión1.18.0, en concreto del archivo modelo plantilla StartProfiler.sample, pero no así el archivo StartProfiler.php que verdaderamente es el que se utiliza en su ejecución. La eliminación de este archivo no tiene importancia si no se hace uso de Profiling

[editar] Webchat sin espacio

[editar] Comportamiento detectado

El espacio proporcionado por el Webchat, basado en Mibbit, es insuficiente para utilizarlo. Éste parece comprimido y es imposible ver más de dos o tres líneas.

[editar] Error detectado

Es imposible mantener una conversación a través del Webchat, por resultar insuficiente el espacio destinado a él.

[editar] Inicio de la anomalía

Desconocido.

[editar] Información Wiki

El WebChat funciona bajo la extensión WebChat (Versión 1.0.0)

[editar] Motivo

Un hack destinado a que la zona de chat tenga un tamaño razonable produce la anomalía, este hace referencia al archivo WebChat_body.php

		// Hack to make the chat area a reasonable size.
		$wgOut->addHTML( Xml::tags( 'script',
			array( 'type' => 'text/javascript' ),
'/* <![CDATA[ */
function webChatExpand( elem ) {
	height = elem.height;
	width  = elem.width;
	elem.height = screen.height - 500;
	elem.width  = screen.width  - 250;
}
/* ]]> */'

[editar] Solución

Eliminación del Hack, no es necesario aplicarlo en Wikimanga dado que el chat se encuentra "encajado" y sus dimensiones son controladas por el propio contorno. Adicionalmente se modifican las siguientes líneas (width, height), para que el último $wgOut quede de la siguiente manera, hacemos referencia al archivo WebChat_body.php

		$wgOut->addHTML( Xml::openElement( 'iframe', array(
			'width'     => '100%',
			'height'    => '700',
			'scrolling' => 'no',
			'border'    => '0',
			'onLoad'    => 'webChatExpand( this )',
			'src'       => $wgWebChatClients[$wgWebChatClient]['url'] . '?' . $query
		) ) . Xml::closeElement( 'iframe' ) );

[editar] Notas adicionales

Se incrementa la altura y se fija un porcentaje máximo del 100% para aprovechar la totalidad del espacio disponible.


Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Comunidad
Comunicación
Soporte
Herramientas
Desarrolladores