Autor Tema: Sobre los botones de edición  (Leído 15680 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
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:
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
  • 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.
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.
Spoiler (click para mostrar/ocultar)

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
« Última modificación: Marzo 22, 2010, 16:38:16 pm por MenganitoFZ »


- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Conectado cireja

  • "Guardián de las aventuras"
  • Administrador
  • Shodan
  • *****
  • Mensajes: 12318
  • País: es
  • Sexo: Masculino
  • Fecha de registro: Mayo 06, 2007, 13:02:16 pm
  • No por mucho madrugar... por el culo te la hinco.
    • Ver Perfil
    • Abandonsocios.org
Re: Sobre los botones de edición
« Respuesta #1 en: Marzo 22, 2010, 14:00:44 pm »
Te lo has currao, pare, ere un mostro. Yo me perdí por la 3ª o 4ª linea  :(
pero seguro que Johan le prestará a esto la atención que se merece.
¡Por favor, no preguntéis por mensaje privado, preguntad aquí en el foro! - Please don't PM me questions, ask here in the forums!
Jugando a: Thimbleweed Park
Aventuras Gráficas Más Buscadas en Español - Aventuras Gráficas en AbandonWiki

Desconectado Kendo

  • Leecher Pata Negra
  • Administrador
  • Shodan
  • *****
  • Mensajes: 10264
  • País: es
  • Sexo: Masculino
  • Fecha de registro: Marzo 05, 2007, 14:47:05 pm
    • MSN Messenger - -
    • AOL Instant Messenger - -
    • Yahoo Instant Messenger - -
    • Ver Perfil
    • Abandonsocios.org
Re: Sobre los botones de edición
« Respuesta #2 en: Marzo 22, 2010, 14:42:45 pm »
Yo me perdí por la 3ª o 4ª linea  :( pero seguro que Johan le prestará a esto la atención que se merece.

:D telepatia "pare", me has leido la mente


probablemente tanto elessar como johan lo entiendan como quien mira matrix en una pantalla de unos y ceros, pero yo no hago mas que marearme.
yo he entendido el tema de añadir los botones de edicion. El caso es que esos botones ya estaban, hasta que se hizo la insercion de la wiki en la web, con el cambio de formato y tal dejaron de verse. Seguramente Johan ya sepa como apañarlo.

asi que voy a dedicarme a lo que se hacer que es ir añadiendo paginas y contenidos y no toquetear códigos pa no romper nada (pedazo ladrillo he dejado en la página "videoconsola" por cierto... si alguien conoce videoconsolas que no esten en la lista que las añada!))
« Última modificación: Marzo 22, 2010, 14:48:10 pm por Kendo »

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
Re: Sobre los botones de edición
« Respuesta #3 en: Marzo 22, 2010, 16:23:37 pm »
Estaba escribiendo una respuesta explicando que como en realidad no sabía porqué sucedía el problema, eso era tan solo un apaño a nivel de administrador de la wiki, para un error a nivel de la piel de la wiki que no sé porqué se produce. Y mientras lo repasaba un poco...

¡¡AAAAhhhh, creo que lo ví!!, olvidad todo el mensaje anterior

Tal como describo arriba, Simplemachines carga wikibits.js antes que la definición de variables de la propia página, me había dado cuenta de que en las demás primero están las variables dentro de propia página y luego el wikibits.js pero no lo había dado importancia... (total, tan solo son definiciones de variables y funciones) pero he visto que sí que la tiene.

wikibits.js realiza algunas comprobaciones para algunas cosas (if (lo que sea)) de forma directa y resulta que usa algunas de las variables definidas por la página haciendo que salte el error
Citar
Error: wgBreakFrames is not defined
Archivo de origen: https://www.abandonsocios.org/wiki/skins/common/wikibits.js?207
Línea: 104

Que había desestimado pensando que pasaba lo mismo que con los botones... pero acabo de caer de que si cuando se carga un archivo de JavaScript y salta un error ignora el resto del archivo (bueno, no recuerdo si también ignora la parte ya parseada). De todas formas la definición de la variable de los botones se encuentras después.

Para cambiar eso hay que tener acceso al servidor  :P y cambiar la plantilla de la piel directamente para cambiar el orden en el que se añaden... pero a partir de ahí no puedo ser más preciso, obviamente.

PD: Actualizo el mensaje principal.


- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Desconectado Elessar

  • The Boss
  • Administrador
  • Supercomputadora AM
  • *****
  • Mensajes: 3602
  • País: es
  • Fecha de registro: Enero 21, 2003, 21:19:52 pm
    • Ver Perfil
    • https://www.abandonsocios.org/
Re: Sobre los botones de edición
« Respuesta #4 en: Marzo 22, 2010, 18:01:55 pm »
He estado mirando la skin del wiki y no encuentro el error, buscando documentacion sobre el error todo parece estar correcto, incluso comparando la skin con las que funcionan el orden del codigo es igual en todas. A ver si Johan cuando tenga tiempo puede echarle un vistazo, que el es quien adapto la skin y sabra mejor si los añadidos que hizo son los causantes del problema.


Visita las viejas glorias de las webs abandon en nuestro Museo Abandonware

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
Re: Sobre los botones de edición
« Respuesta #5 en: Marzo 22, 2010, 18:16:05 pm »
Uhm... ¿has tocado algo? porque ahora ya solo carga "wikibits.js" y el que carga las páginas Mediawiki:xxx.js.

No incluye ni el edit.js, ni el ajax.js, ni ningun otro... :/


- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Desconectado Elessar

  • The Boss
  • Administrador
  • Supercomputadora AM
  • *****
  • Mensajes: 3602
  • País: es
  • Fecha de registro: Enero 21, 2003, 21:19:52 pm
    • Ver Perfil
    • https://www.abandonsocios.org/
Re: Sobre los botones de edición
« Respuesta #6 en: Marzo 22, 2010, 18:29:09 pm »
Lol? No he tocado nada :s


Visita las viejas glorias de las webs abandon en nuestro Museo Abandonware

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
Re: Sobre los botones de edición
« Respuesta #7 en: Marzo 22, 2010, 18:42:25 pm »
Pues no es que lo diga en broma:
Algo similar a esto:
Spoiler (click para mostrar/ocultar)


Se ha convertido ahora en:
Spoiler (click para mostrar/ocultar)


- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Desconectado Elessar

  • The Boss
  • Administrador
  • Supercomputadora AM
  • *****
  • Mensajes: 3602
  • País: es
  • Fecha de registro: Enero 21, 2003, 21:19:52 pm
    • Ver Perfil
    • https://www.abandonsocios.org/
Re: Sobre los botones de edición
« Respuesta #8 en: Marzo 22, 2010, 18:54:14 pm »
Deduzco que eso es el resultado de mirar el codigo fuente de la pagina con el navegador, cuyo resultado no se parece en nada al codigo php real, asi que sirve bien poco de pista respecto a la linea que puede estar mal.


Visita las viejas glorias de las webs abandon en nuestro Museo Abandonware

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
Re: Sobre los botones de edición
« Respuesta #9 en: Marzo 22, 2010, 19:15:35 pm »
Yep, lo sé.

Pero es que de todas formas en la plantillas de serie no indican como inyectar texto a la cabecera por defecto, bueno en la MonoBook añade css, sí:
Spoiler (click para mostrar/ocultar)
pero no añade JavaScript, (supongo que se hará con alguna función de "include/skin.php" o "include/skinTemplate") pero me huelo a que SimpleMachines debe crear las páginas a pelo sin usar la herecia/extend de las clases de dichas páginas (o heredar de MonoBook/MySkin, lo que sería muy recomendable) más que nada porque todas las skins la cabecera la generan igual excepto esa. Así que no puedo decir "intercambia el orden las líneas $out->addJS( 'wikibits.js'); y $out->addJSVars;" (addJS y addJSVars, me las acabo de inventar por no buscarlas, ).

La historia sería más parecida a que estas líneas deben estar en este orden (lo he copiado de un ejemplo que simula la plantilla del monobook):

Código: [Seleccionar]
<!-- Esto añade las variables globales de la página -->
<?php print Skin::makeGlobalVariablesScript($this->data); ?>  
 
<!-- Esto añade wikibits.js -->
<script type="<?php $this->text(&#39;jsmimetype&#39;) ?>" src="<?php $this->text(&#39;stylepath&#39;) ?>/common/wikibits.js?<?php echo $GLOBALS[&#39;wgStyleVersion&#39;] ?>"><!-- wikibits js --></script>

----

PD: Han vuelto a aparecer informágicamente las variables y las llamadas al JavaScript
« Última modificación: Marzo 22, 2010, 19:28:46 pm por MenganitoFZ »


- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Desconectado Elessar

  • The Boss
  • Administrador
  • Supercomputadora AM
  • *****
  • Mensajes: 3602
  • País: es
  • Fecha de registro: Enero 21, 2003, 21:19:52 pm
    • Ver Perfil
    • https://www.abandonsocios.org/
Re: Sobre los botones de edición
« Respuesta #10 en: Marzo 22, 2010, 20:36:04 pm »
Asi es exactamente como esta, incluyo el archivo de la skin como attachment


Visita las viejas glorias de las webs abandon en nuestro Museo Abandonware

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
Re: Sobre los botones de edición
« Respuesta #11 en: Marzo 22, 2010, 20:41:13 pm »
Uhm, gracias, tan solo es intercambiar lineas 84 y 85 (pero teniendo en cuenta el ".=" es en la segunda):
Original:
Código: [Seleccionar]
$context['wiki_js'] = '<script type="'.$this->data['jsmimetype'].'" src="'.$this->data['stylepath'].'/common/wikibits.js?'.$GLOBALS['wgStyleVersion'].'"><!-- wikibits js --></script>';
$context['wiki_js'] .= Skin::makeGlobalVariablesScript( $this->data ).$this->data['headscripts'];
Cambiado:
Código: [Seleccionar]
$context['wiki_js'] = Skin::makeGlobalVariablesScript( $this->data ).$this->data['headscripts'];
$context['wiki_js'] .= '<script type="'.$this->data['jsmimetype'].'" src="'.$this->data['stylepath'].'/common/wikibits.js?'.$GLOBALS['wgStyleVersion'].'"><!-- wikibits js --></script>';




- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Desconectado Elessar

  • The Boss
  • Administrador
  • Supercomputadora AM
  • *****
  • Mensajes: 3602
  • País: es
  • Fecha de registro: Enero 21, 2003, 21:19:52 pm
    • Ver Perfil
    • https://www.abandonsocios.org/
Re: Sobre los botones de edición
« Respuesta #12 en: Marzo 22, 2010, 23:57:19 pm »
Esas lineas ya las cambie en una prueba, pero al ver que no iba lo volvi a dejar como estaba, aunque no cambie el .=.

A mi asi sigue sin irme, pero probad.


Visita las viejas glorias de las webs abandon en nuestro Museo Abandonware

Desconectado MenganitoFZ

  • IBM PC
  • *
  • Mensajes: 197
  • Sexo: Masculino
  • Fecha de registro: Diciembre 03, 2008, 04:14:47 am
  • No pertenece a la nobleza
    • Ver Perfil
Re: Sobre los botones de edición
« Respuesta #13 en: Marzo 23, 2010, 01:22:21 am »
/me mirando el HTML generado...

JUR  :huh: , esto si que no me lo esperaba... lo baja demasiado. Así que $this->data['headscripts'] debe contener las llamadas al ajax.js y edit.js. Por tanto para ponerlo entremedias sería así (son las mismas líneas):

Original (tras el cambio anterior)
Código: [Seleccionar]
$context['wiki_js'] = Skin::makeGlobalVariablesScript( $this->data ).$this->data['headscripts'];
$context['wiki_js'] .= '<script type="'.$this->data['jsmimetype'].'" src="'.$this->data['stylepath'].'/common/wikibits.js?'.$GLOBALS['wgStyleVersion'].'"><!-- wikibits js --></script>';

Cambiado:
Código: [Seleccionar]
$context['wiki_js'] = Skin::makeGlobalVariablesScript( $this->data );
$context['wiki_js'] .= '<script type="'.$this->data['jsmimetype'].'" src="'.$this->data['stylepath'].'/common/wikibits.js?'.$GLOBALS['wgStyleVersion'].'"><!-- wikibits js --></script>';
$context['wiki_js'] .= $this->data['headscripts'];

Y esta es la definitiva  B), no puede fallar


- ¿Y a ti porque te gusta el abandonware?
- Muy sencillo, mi ordenador tiene 12 años

Desconectado Elessar

  • The Boss
  • Administrador
  • Supercomputadora AM
  • *****
  • Mensajes: 3602
  • País: es
  • Fecha de registro: Enero 21, 2003, 21:19:52 pm
    • Ver Perfil
    • https://www.abandonsocios.org/
Re: Sobre los botones de edición
« Respuesta #14 en: Marzo 23, 2010, 03:43:07 am »
Seguro que las dos ultimas lineas van con ".="?


Visita las viejas glorias de las webs abandon en nuestro Museo Abandonware