Bueno pues Kendo me ha pedido (https://www.abandonsocios.org/wiki/index.php?title=Usuario_Discusión%3AMenganitoFZ&diff=8602&oldid=7520) que traiga el tema aquí (https://www.abandonsocios.org/wiki/index.php?title=Usuario_Discusión%3AKendo&diff=8751&oldid=7515).
Me explico: El Mediawiki por defecto cuando se edita tienen una serie de botones en la parte superior (como se pueden ver usando cualquier otra piel (https://www.abandonsocios.org/wiki/index.php?title=AbandonWiki:P%E1gina_de_pruebas&action=edit&useskin=monobook) para (https://www.abandonsocios.org/wiki/index.php?title=AbandonWiki:P%E1gina_de_pruebas&action=edit&useskin=chick) la (https://www.abandonsocios.org/wiki/index.php?title=AbandonWiki:P%E1gina_de_pruebas&action=edit&useskin=standard) wiki (https://www.abandonsocios.org/wiki/index.php?title=AbandonWiki:P%E1gina_de_pruebas&action=edit&useskin=modern) (https://www.abandonsocios.org/wiki/index.php?title=AbandonWiki:P%E1gina_de_pruebas&action=edit&useskin=nostalgia)) para ayudar en la edición. Y como suele ser habitual el preguntar por como se hace el símbolo "~" pues creo que será útil intentar arreglar los botones (hay uno para firmar (https://www.abandonsocios.org/wiki/skins/common/images/button_sig.png)) me puse a mirarlo un poco.
El problema
Vamos a ver, para que se vea el problema para hacerlo de forma práctica (con FireFox/SeaMonkey):
1.- CTRL + MAYS + J, sale una cosa rara en chino (posiblemente con muchas advertencias y errores). Pulsad en "Limpiar" para ver más claro el error que interesa.
2.- Sin cerrar la anterior ventana, ni haber abierto ninguna otra página desde entonces, abrid este enlace (https://www.abandonsocios.org/wiki/index.php?title=AbandonWiki:Página_de_pruebas&action=edit) (preferiblemente en otra pestaña)
3.- Mirad los errores y advertencias que salen *cough*. Entre ellos el que afecta a los botones es el que dice:
Error: mwEditButtons is undefined
Archivo de origen: https://www.abandonsocios.org/wiki/skins/common/edit.js?207 (https://www.abandonsocios.org/wiki/skins/common/edit.js?207)
Línea: 6
mwEditButtons es la lista botones que se van a mostrar durante la edición (además de mwCustomEditButtons, que aunque no se muestre error ocurre el mismo fallo). Pero el problema está en que sí que están definidos en https://www.abandonsocios.org/wiki/skins/common/wikibits.js?207 (https://www.abandonsocios.org/wiki/skins/common/wikibits.js?207)
El JavaScript
Yep, uno es edit.js y el otro wikibits.js; y esto es así, no es ningún error. En el MediaWiki, el JavaScript y CSS visto desde fuera parece un verdadero caos a no ser que se esté familiarizado y se conozcan sus recónditos entresijos. Desconozco la razón por la que se definen en otro lugar pero tengamos fe de que en 8 años de desarrollo se haya descubierto una situación por la que sea necesario declararlos ahí...
A no ser que se haga una skin personalizada desde cero que no siga las pautas de las demás, las páginas llaman a los siguientes ficheros de JavaScript en el siguiente orden:
- La propia página, añade una serie de variables globales: wgUserName = Nombre del usuario; nombre de la skin; grupos a los que pertenece (no alarmarse, solo sirve para hacer comprobaciones rápidas; cambiar el contenido de esta variable no permite hacer cosas que no se tengan permitidas); Nombre del artículo y muchas más
- wikibits.js (https://www.abandonsocios.org/wiki/skins/common/wikibits.js?207): Funciones de uso general para tooodas las páginas: Funciones para cargar JavaScript externo, comprobaciones de los navegadores, convierte a enlaces el menú principal, controles para el comportamiento de los formularios, codigo para hacer que las tablas de la clase "sortable" tengan unos botones para ordenar las columnas, etc. y entre todo están las definiciones del array de los botones. (Edit 2: Lo había puesto erróneamente como lo primero que debe cargar)
- edit.js (https://www.abandonsocios.org/wiki/skins/common/edit.js?207): Solo cargado en las páginas en las que se edita. Define las funciones para añadir botones a la barra y mostrarla. Además añade mwSetupToolbar(), que es la función que mustra la barra de botones, a la cola de funciones a ejecutar cuando termine de cargargarse el contenido de la página.
- ajax.js (https://www.abandonsocios.org/wiki/skins/common/ajax.js?207) y ajaxwatch.js (https://www.abandonsocios.org/wiki/skins/common/ajaxwatch.js?207): Funciones que permiten recargar partes de la página sin cargar las página entera. Además de ser muy complicado y ser más usado por las extensiones añadidas que por el propio MediaWiki a pelo no me voy a entretener
- Otro con una url "muy rara" (https://www.abandonsocios.org/wiki/index.php?title=-&action=raw&smaxage=0&gen=js&useskin=simplemachines): Bueno pues esto carga dos JavaScript que realmente son páginas del mediawiki, editables por los administradores de la wiki (los permisos ahora son un poco más complejos si se quieren añadir nuevos grupos de usuarios pero por defecto solo lo tienen los administradores) y que teóricamente deberían ser los únicos que se deberían editar para evitar problemas cuando se actualice el motor:
- Mediawiki:Commons.js: JavaScript que se añadirá a todas las páginas de todas las pieles.
- Mediawiki:<NombreClaveDeLaPiel>.js, en este caso MediaWiki:Simplemachines.js: JavaScript que se va a añadir a todas las páginas de una piel en concreto
- Después, si estuviera activada una opción; además se cargaría User:<NombreUsuario>/<NombreClaveDeLaPiel>.js que sería el JavaScript personalizado de ese usuario en concreto: Ejemplo 1 (http://es.wikipedia.org/wiki/Archivo:Monobook-Suite.png), Ejemplo 2 (http://en.wikipedia.org/wiki/File:WikEd_screenshot.png) (Meh, pero ahora en wikipedia se pueden añadir a traves de la página de preferencias)
- Y ya finalmente, otra vez en la propia página, fuera de dónde se suele añadir el JavaScript sino que está dónde se define la barra de edición: Se añaden los botones.
Simplemachines (que no sé si fue creada desde cero o no) en este sentido parece que lo hace correctamente (tiene más JavaScript para la cabecera y la adaptación al foro que se carga antes de lo anterior, el <body> de esa es piel otra historia). (Edit 2: Meh, error mío no lo hace bien)
Posible solución
Solución antigua y temporal a nivel de administrador de la wiki y no necesaria si se arregla la piel.
Continuemos, como hemos dicho el error que da "no está definida esa variable" pero el problema viene a que si todas las skin usan el mismo JavaScript... debería funcionar.
No he encontrado que es lo que hace que "no se encuentre definida esa variable" así que básicamente el código que le puse a Kendo (https://www.abandonsocios.org/wiki/index.php?title=Usuario_Discusión%3AKendo&diff=8751&oldid=7515) lo que hace es: definir otra vez las variables, añadir los botones y mostrar la barra de herramentas... otra vez haciendo uso de MediaWiki:Simplemachines.js. Lo cuál en verdad es cutre, puesto que debería mirarse más internamente; pero teóricamente debería funcionar.
Digo teóricamente porque las pruebas las he realizado con una Consola de JavaScript (https://www.squarefree.com/bookmarklets/webdevel.html) (el primer marcador de la lista) y escribiendo ese código (excepto que la última línea es mwSetupToolbar(); para ejecutar directamente la función) aparecen los botones como debe:
(http://s2.subirimagenes.com/otros/previo/thump_4244895botonesabandonwiki.jpg) (http://www.subirimagenes.com/otros-botonesabandonwiki-4244895.html)
Arreglando la piel:
Como comento en el 4 mensaje de este tema, el problema es que se carga wikibits.js antes de la definición de variables de la piel. Así que tan solo hay que cambiarlo a después. Solo lo puede hacer quien tenga acceso al servidor.
----
EDIT: Actualizados los enlaces incluyendo un pequeño arreglo para que solo se añadan los botones en las páginas de edición en la solución a nivel de administrador de la wiki
EDIT 2: Poniendo el orden real en el que se debe cargar el JavaScript y añadiendo lo que hay que hacer en la plantilla de la skin Simplemachines
Pues no es que lo diga en broma:
Algo similar a esto:
<link rel="stylesheet" href="/wiki/index.php?title=-&action=raw&maxage=18000&smaxage=0&ts=20100322173538&gen=css&useskin=simplemachines" type="text/css" />
<!-- ESTO ES LO QUE HABÍA QUE BAJAR A DESPUÉS DE LAS SIGUIENTES VARIABLES -->
<script type="text/javascript" src="/wiki/skins/common/wikibits.js?207"><!-- wikibits js --></script>
<script type= "text/javascript">/*<![CDATA[*/
var skin = "simplemachines";
var stylepath = "/wiki/skins";
var wgArticlePath = "/wiki/$1";
var wgScriptPath = "/wiki";
var wgScript = "/wiki/index.php";
var wgVariantArticlePath = false;
var wgActionPaths = {};
var wgServer = "https://www.abandonsocios.org";
var wgCanonicalNamespace = "Project";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 4;
var wgPageName = "AbandonWiki:Página_de_pruebas";
var wgTitle = "Página de pruebas";
var wgAction = "edit";
var wgArticleId = "194";
var wgIsArticle = false;
var wgUserName = "MenganitoFZ";
var wgUserGroups = ["*", "user", "autoconfirmed"];
var wgUserLanguage = "es";
var wgContentLanguage = "es";
var wgBreakFrames = false;
var wgCurRevisionId = 6883;
var wgVersion = "1.15.1";
var wgEnableAPI = true;
var wgEnableWriteAPI = true;
var wgSeparatorTransformTable = [", .", ". ,"];
var wgDigitTransformTable = ["", ""];
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgAjaxWatch = {"watchMsg": "Vigilar", "unwatchMsg": "Dejar de vigilar", "watchingMsg": "Vigilando...", "unwatchingMsg": "Eliminando de la lista de seguimiento..."};
/*]]>*/</script>
<script type="text/javascript" src="/wiki/skins/common/edit.js?207"></script>
<script type="text/javascript" src="/wiki/skins/common/ajax.js?207"></script>
<script type="text/javascript" src="/wiki/skins/common/ajaxwatch.js?207"></script>
<script type="text/javascript" src="/wiki/index.php?title=-&action=raw&smaxage=0&gen=js&useskin=simplemachines"><!-- site js --></script>
</head>
Se ha convertido ahora en:
<link rel="stylesheet" href="/wiki/index.php?title=-&action=raw&maxage=18000&smaxage=0&ts=20100322173331&gen=css" type="text/css" />
<script type="text/javascript" src="/wiki/skins/common/wikibits.js?207"><!-- wikibits js --></script>
<script type="text/javascript" src="/wiki/index.php?title=-&action=raw&smaxage=0&gen=js&useskin=simplemachines"><!-- site js --></script>
</head>