1
AbandonWiki / Sobre los botones de edición
« en: Marzo 22, 2010, 11:59:02 am »
Bueno pues Kendo me ha pedido que traiga el tema aquí.
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 para la wiki ) 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 ) 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 (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:
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
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:
Posible solución
Solución antigua y temporal a nivel de administrador de la wiki y no necesaria si se arregla la piel.
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
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 para la wiki ) 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 ) 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 (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:
Citar
Error: mwEditButtons is undefined
Archivo de origen: 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
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: 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: 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 y ajaxwatch.js: 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": 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
- Mediawiki:Commons.js: JavaScript que se añadirá a todas las páginas de todas las pieles.
- 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, Ejemplo 2 (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.
Posible solución
Solución antigua y temporal a nivel de administrador de la wiki y no necesaria si se arregla la piel.
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