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

Header Tabs, Floatbox y Semantic Forms[editar]

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
}

SemanticMediawiki formato fechas[editar]

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}}}}}

AWCForum enlace "Especial" antiestético[editar]

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'));

Error con Semantic Mediawiki[editar]

Comportamiento detectado[editar]

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.

Error detectado[editar]

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)]:'';

Inicio de la anomalía[editar]

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

Información Wiki[editar]

  • 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.

Motivo[editar]

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.

Solución[editar]

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'
);

Notas adicionales[editar]

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.

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

Comportamiento detectado[editar]

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.

Error detectado[editar]

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.

Inicio de la anomalía[editar]

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.

Información Wiki[editar]

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

Motivo[editar]

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

Solución[editar]

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>

Namespaces con carácteres especiales, acentos[editar]

Comportamiento detectado[editar]

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


Código utilizado[editar]

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',
);

Error detectado[editar]

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.

Motivo[editar]

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.

Solución[editar]

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.

Notas adicionales[editar]

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

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

Header Tabs no funciona[editar]

Comportamiento detectado[editar]

Las pestañas de Header Tabs no funcionan.

Error detectado[editar]

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

Inicio de la anomalía[editar]

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

Información Wiki[editar]

  • 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.

Motivo[editar]

Desconocido

Solución[editar]

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

Error en la página de actividad[editar]

Comportamiento detectado[editar]

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

Error detectado[editar]

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

Inicio de la anomalía[editar]

No determinado.

Información Wiki[editar]

  • 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.

Motivo[editar]

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

Solución[editar]

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

Notas adicionales[editar]

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

SF_FormPrinter.inc on line 331[editar]

Comportamiento detectado[editar]

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

Error detectado[editar]

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

Inicio de la anomalía[editar]

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

Información Wiki[editar]

  • 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.

Motivo[editar]

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));

Solución[editar]

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));

Header Tabs error línea 115[editar]

Comportamiento detectado[editar]

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

Error detectado[editar]

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

Inicio de la anomalía[editar]

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

Información Wiki[editar]

  • 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.

Motivo[editar]

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>';

Solución[editar]

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>';

Error al crear miniatura[editar]

Comportamiento detectado[editar]

El gestor de miniaturas ImageMagick no funciona correctamente.

Error detectado[editar]

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

Inicio de la anomalía[editar]

Sin determinar.

Información Wiki[editar]

  • 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.

Motivo[editar]

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

Solución[editar]

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;

Notas adicionales[editar]

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.

Linker.php on line 209[editar]

Comportamiento detectado[editar]

Se presenta un error al intentar cargar la wiki.

Error detectado[editar]

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

Inicio de la anomalía[editar]

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

Información Wiki[editar]

  • 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.

Motivo[editar]

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

Solución[editar]

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

Notas adicionales[editar]

ClientSide es requerido para el funcionamiento de CommunityVoice.

Captcha no funciona[editar]

Comportamiento detectado[editar]

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.

Error detectado[editar]

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

Inicio de la anomalía[editar]

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.

Información Wiki[editar]

No es relevante.

Motivo[editar]

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

Solución[editar]

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

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

Fatal error: Cannot redeclare wfprofilein()[editar]

Comportamiento detectado[editar]

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

Error detectado[editar]

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

Inicio de la anomalía[editar]

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).

Información Wiki[editar]

  • 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.

Motivo[editar]

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

Solución[editar]

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

Notas adicionales[editar]

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

Webchat sin espacio[editar]

Comportamiento detectado[editar]

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.

Error detectado[editar]

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

Inicio de la anomalía[editar]

Desconocido.

Información Wiki[editar]

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

Motivo[editar]

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;
}
/* ]]> */'

Solución[editar]

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' ) );

Notas adicionales[editar]

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

Página en blanco[editar]

Comportamiento detectado[editar]

Después de la actualización de Mediawiki versión 1.19.1 a 1.19.16 se presenta la página en blanco.

Error detectado[editar]

Aparentemente no se presenta error visible, al acceder al sitio sólo se presenta la página en blanco.

Inicio de la anomalía[editar]

Después de actualizar Mediawiki a la versión 1.19.16

Información Wiki[editar]

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

Motivo[editar]

Distintas extensiones presentan el error de "PHP Notice: Use of undefined constant" (Constante no definida). Éste error es visible comprobando el archivo error_log de la carpeta raíz donde se encuentra instalada Mediawiki.

Solución[editar]

Deshabilitar las extensiones que provocan dicho error:

Notas adicionales[editar]

  • El propósito original era actualizar el core Mediawiki a la versión 1.23.0, sin embargo a partir de la versión 1.20 de Mediawiki se requiere PHP 5.3.2 o superior (compatibilidad PHP Mediawiki. Dado que el servidor aún no dispone de la versión PHP actualizada, se procede aplicar la versión de Mediawiki más actualizada posible.
  • SyntaxHighlight GeSHi y InputBox se encuentran integrados en Mediawiki a partir de la versión 1.21, por lo que se desestima volver a activarlas por separado y por lo tanto sus funciones no se encontraran disponibles hasta la siguiente actualización.
  • Imagemap requiere PHP 5.3, se desactiva hasta la próxima actualización.

MediaWiki internal error[editar]

Comportamiento detectado[editar]

Cuando se intenta acceder a la wiki se presenta un error de funcionamiento.

Error detectado[editar]

MediaWiki internal error. Exception caught inside exception handler. Set $wgShowExceptionDetails = true; at the bottom of LocalSettings.php to show detailed debugging information.

Inicio de la anomalía[editar]

Inmediatamente después a la actualización desde PHP version: 5.2.17 (litespeed) a PHP version: 5.3.28 (litespeed)

Información Wiki[editar]

  • MediaWiki version: 1.19.16
  • Semantic MediaWiki version: 1.7.1
  • PHP version: 5.3.28 (litespeed)
  • MySQL version: 5.5.38-MariaDB
  • Enlace a versión actual.

Motivo[editar]

Utilizando la información facilitada por el modo depurador , éste facilita la siguiente información: Original exception: exception 'MWException' with message 'Detected bug in an extension! Hook efGoogleAnalyticsHookText has invalid call signature; Parameter 1 to efGoogleAnalyticsHookText() expected to be a reference, value given' in /***YOUR***HOME***PATH***ROOT/includes/Hooks.php:240 Así pues el causante del problema es a la extensión Google Analytics versión 2.0.2, que no es compatible con el PHP 5.3.28.

Solución[editar]

Actualizar la extensión Google Analytics a una versión más nueva (la versión 2.1.0 se muestra compatible).

Notas adicionales[editar]