stringtranslate.com

Wikipedia: gadgets bajo demanda

Reemplazado por WP:Gadgets#Gadgets de plantilla

Los gadgets bajo demanda son gadgets que se cargan en páginas con contenido que cumple alguna condición específica.

Motivación

Hay muchos casos de uso para gadgets que se cargan condicionalmente según el contenido de una página. La condición podría ser la presencia de una plantilla, una categoría, una etiqueta de analizador o un atributo de clase HTML. Solo necesitamos admitir un tipo de condición, ya que cualquier cosa que agregue una plantilla se puede cambiar fácilmente para agregar también una categoría o etiqueta de analizador o un div con una clase, y viceversa.

Hoy en día, las extensiones Kartographer y Graph proporcionan mapas y gráficos interactivos en Wikipedia. Deberíamos capacitar a la comunidad para que cree más funciones interactivas de este tipo. El sistema de gadgets bajo demanda proporciona una manera eficiente de cargar dichos gadgets sólo cuando sea necesario. Muchas funciones de MediaWiki se prueban primero como scripts o dispositivos locales antes de convertirse en extensiones.

Soluciones y limitaciones existentes

Pautas de uso

Cuando se utilizan gadgets bajo demanda en el espacio principal, estos:

Implementación

Se propone implementar esto con el siguiente código en MediaWiki: Gadget-ondemand.js:

mw . gancho ( 'wikipage.content' ). add ( $content => $content . find ( '.load-gadget' ). cada (( _ , e ) => mw . loader . load ( 'ext.gadget.ondemand-' + e . dataset . gadget ) ) );         

El gadget anterior se registra como predeterminado en MediaWiki:Gadgets-definition :

* bajo demanda [ Cargador de recursos | predeterminado | oculto ] | ondemand.js

El calificador "oculto" también se puede omitir. Al hacerlo, el usuario puede optar por no participar en todos los gadgets bajo demanda.

También se puede utilizar un fragmento equivalente en MediaWiki:Common.js y MediaWiki:Mobile.js en lugar de agregar un gadget predeterminado.

Uso

Uso de muestra (dentro de una plantilla, que luego se puede usar en las páginas):

< div  clase = cargar-gadget  data-gadget = xyz > </ div >

La presencia de dicho elemento html hace que ondemand-xyzse cargue el gadget con el nombre.

El gadget ondemand-xyz debe registrarse como oculto para ocultarlo de las preferencias:

* ondemand-xyz [ Cargador de recursos | oculto ] | ondemand-xyz.js

Esto no debe marcarse como predeterminado ya que se cargará internamente a través del gadget bajo demanda.

Proceso

Revisión previa a la implementación

Los nuevos dispositivos bajo demanda que afecten el contenido del espacio principal deben contar con el consenso de la comunidad demostrado a través de un RfC o una discusión en un surtidor de agua apropiado en la aldea.

Los gadgets bajo demanda para uso fuera del espacio principal se pueden habilitar después de un consenso en una página de discusión del proyecto relevante o una discusión más amplia, dependiendo de la naturaleza del gadget.

En TODOS los casos, el código de los gadgets bajo demanda DEBE ser revisado por al menos un usuario (que no sea el autor) con dominio de js-3 o superior. El revisor de código debe estar familiarizado con las vulnerabilidades típicas de JS, como XSS y ReDoS, y tener experiencia demostrable con JavaScript.

Mantenimiento

Los nombres de los mantenedores deben aparecer en el encabezado del gadget. Los encargados del mantenimiento deben asegurarse de que el dispositivo siga funcionando a pesar de los cambios que se produzcan en el software central de MediaWiki y en los navegadores.

Los mantenedores inactivos deben reemplazarse por otros activos. Los gadgets que no logren atraer nuevos mantenedores deben desactivarse.

Implementaciones alternativas

  1. Ampliar la especificación de definición del gadget para cargar el gadget solo cuando hay una plantilla o categoría presente (phab:T204201, phab:T63007).
    • Establecer una condición de carga basada en una plantilla hace que sea más difícil probar los cambios en la propia plantilla. La plantilla y su zona de pruebas pueden tener contenido idéntico, pero solo la primera hace que se cargue el gadget.
    • El uso de categorías como condición de carga puede ser inconsistente con las expectativas de los usuarios, quienes no esperan que suceda "magia" al agregar una categoría, como lo harían con las plantillas o etiquetas del analizador. Asociar dispositivos con categorías parece una conexión frágil.
    • En ambos casos, cambiar el nombre de la plantilla o categoría rompe las cosas y requiere una actualización de la definición del gadget, que tiene un nivel de protección más alto.
  2. Agregar soporte para una etiqueta de analizador, por ejemplo. (fab:T241524). Ésta es una solución ideal. También puede proporcionar capacidades de seguimiento mejoradas (vínculos de retroceso, categoría de seguimiento). Pero el parche ha estado estancado en la revisión de código durante años.<gadget name="xyz"/>