Extensión:Accesorios

This page is a translated version of the page Extension:Gadgets and the translation is 100% complete.
This extension comes with MediaWiki 1.18 and above. Thus you do not have to download it again. However, you still need to follow the other instructions provided.
Manual de extensiones de MediaWiki
Gadgets
Estado de lanzamiento: estable
Implementación MyWiki , Página especial , API
Descripción Permite a los usuarios activar accesorios basados en JavaScript y creados por usuarios desde su página de preferencias
Autor(es) Daniel Kinzler (Duesentriebdiscusión)
Política de compatibilidad Lanzamientos de screenshots junto con MediaWiki. Master no es compatible con versiones anteriores.
MediaWiki 1.19+
Licencia GNU Licencia Pública general 2.0 o posterior
Descarga
README
Ejemplo Wikimedia Commons: Resumen de accesorios, preferencias de usuario (haga clic en "Accesorios"; debe iniciar sesión, por supuesto)
  • $wgGadgetsRepo
  • $wgSpecialGadgetUsageActiveUsers
Descargas trimestrales 103 (Ranked 53rd)
Wikis públicos que lo utilizan 4,529 (Ranked 177th)
Traduce la extensión Gadgets si está disponible en translatewiki.net
Asuntos Tareas abiertas · Reportar un bug

La extensión Accesorios permite a los usuarios seleccionados "accesorios" basados en JavaScript o CSS y creados por otros usuarios del wiki.

Los accesorios están hechos con Snippets (fragmentos) de JavaScript o CSS ubicados en páginas del espacio de nombres MediaWiki. Cada accesorio se define mediante una línea en MediaWiki:Gadgets-definition, que proporciona un nombre y una descripción para el accesorio, y una lista de los snippets de JS y CSS que utiliza (consulte la sección Uso a continuación).

Debido a que los accesorios se encuentran en el espacio de nombres MediaWiki (tanto la lista que define los accesorios como los snippets), solo los administradores de interfaz (sysops, desde la 1.32) pueden editar el código. Esto es como debe ser: solo usuarios con la confianza de la comunidad deberían ser capaces de editar código JavaScript usado por otros usuarios debido a que JavaScript puede ser fácilmente usado para compromenter cuentas o espiar a las personas.

Instalación

  • Descarga y extrae los archivos en un directorio denominado «Gadgets» dentro de la carpeta extensions/.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
  • Añade el siguiente código en la parte final de tu archivo LocalSettings.php :
    wfLoadExtension( 'Gadgets' );
    
  •   Hecho – Navega a Special:Version en el wiki para verificar que la extensión se haya instalado correctamente.

Uso

 
Selección de algunos accesorios en las preferencias de usuario en de.wikipedia

Una vez que se crea MediaWiki:Gadgets-definition con al menos un accesorio válido, se mostrará una sección llamada "Accesorios" en Special:Preferences para todos los usuarios. Los usuarios pueden activar allí los que deseen usar. También se ofrece una descripción general en Special:Gadgets de los accesorios actualmente definidos por MediaWiki:Gadgets-definition, junto con enlaces útiles a las páginas de localización y estilo/script pertinentes para una fácil creación o edición. Las estadísticas sobre las preferencias de accesorios están disponibles en Special:GadgetUsage.

Formato de definición

Cada línea en la página MediaWiki:Gadgets-definition debe comenzar con un caracter "*" (asterisco) para definir un accesorio. La línea tiene el siguiente formato:

* mygadget [opciones] | nombres de páginas

El primer campo ("mygadget" en el ejemplo) es el nombre interno del accesorio. La etiqueta de la página de preferencias proviene de una página de mensajes de interfaz (MediaWiki:Gadget-mygadget) donde se puede escribir su nombre y una breve descripción, lo que también permite utilizar el formato de wikitexto.

El nombre interno debe comenzar con una letra básica del alfabeto latino ([A-Za-z]) y puede continuar con cualquier cantidad de letras, dígitos ([0-9]), guiones (-), guiones bajos (_) y puntos (.). La razón de esta limitación es que el nombre interno debe ser válido como nombre de nombre de formulario HTML, como clave de mensaje de interfaz de MediaWiki, y como nombre de módulo ResourceLoader.

Formato de opciones:

[ResourceLoader | opción 1 | opción 2 | ... opción N]

Se requiere el indicador de ResourceLoader a menos que el accesorio contenga solo estilos. Las opciones que son "indicadores" sólo necesitan tener su nombre escrito para activarse. Las opciones que necesitan un valor son seguidas por un signo de igualdad (=) y una lista de valores separados por comas (,). Todo el espacio en blanco es opcional y puede omitirse.

[ResourceLoader | myflag | mykey = value1, value2, value3 ]

Ejemplos:

* mygadget[ResourceLoader]|mygadget.js|mygadget.css

o

* mygadget[ResourceLoader|package]| mygadget.js | mygadget-Foo.js | mygadget-data.json | mygadget.css

o

* mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css

Uso del espacio de nombres Accesorio definición

Versión de MediaWiki:
1.41

Hay dos formas de definir los accesorios dependiendo de $wgGadgetsRepoClass. Si es 'MediaWikiGadgetsDefinitionRepo' (el valor predeterminado), la lista de accesorios disponibles se define en MediaWiki:Gadgets-definition. De forma alterna, las definiciones de accesorio se definen en páginas en el espacio de nombres Accesorio definición cuando $wgGadgetsRepoClass se establece en 'GadgetDefinitionNamespaceRepo'. (En MediaWiki 1.39+, el valor que se utiliza en su lugar es '\\MediaWiki\\Extension\\Gadgets\\GadgetDefinitionNamespaceRepo'.)

La migración de las definiciones de accesorio existentes aún no tiene soporte, por lo que perderá los accesorios previamente definidos después de cambiar esta opción.

Crear la página Gadget definition:mygadget y colocar en ella el siguiente código JSON tiene el mismo efecto que mygadget[ ResourceLoader | rights=foo, bar ] | mygadget.js | mygadget.css.

{
	"settings": {
		"rights": [ "foo", "bar" ],
		"default": false,
		"package": false,
		"hidden": false,
		"skins": [],
		"actions": [],
		"category": ""
	},
	"module": {
		"scripts": [ "mygadget.js" ],
		"styles": [ "mygadget.css" ],
		"datas": [],
		"peers": [],
		"dependencies": [],
		"messages": [],
		"type": ""
	}
}

En el ejemplo anterior, se utilizan tanto Gadget:Mygadget.js como Gadget:mygadget.css.

Opciones

Options
Nombre Parámetros Descripción Desde
ResourceLoader Ninguno Marca los scripts del accesorio como compatibles con ResourceLoader . 1.17 (r76527)
dependencies Nombres de módulos separados por comas Estos módulos se cargarán antes de que se ejecuten los scripts de este accesorio. Consulte la lista de módulos predeterminados. 1.17 (r76639)
rights Nombres de permisos separados por comas Hace que el accesorio esté disponible (y visible en las preferencias) solo para los usuarios que tengan los permisos especificados. 1.18 (r85268)
hidden Ninguno Oculta el accesorio de la página Preferencias. Esto puede usarse de dos maneras:
  • Activa un accesorio por defecto sin la capacidad de desactivarlo (como alternativa a Common.js). Tenga en cuenta que debe agregar hidden | default (es decir, ambos parámetros) para cargar un módulo para todos los usuarios.
  • Los accesorios que no están destinados a los usuarios sino que están destinados a ser cargados por otros accesorios. Por ejemplo, para permitir que dos accesorios reutilicen el mismo código interno o para registrar la parte "núcleo" de un accesorio que solo se carga en ciertas páginas.
1.28
skins Nombres de apariencias separados por comas Hace que el accesorio esté disponible (y visible en las preferencias) solo para los usuarios que usen las apariencias especificadas. Antes de MediaWiki 1.32, se tenía en cuenta la apariencia fijada en las preferencias del usuario, no la que se muestra actualmente (como al agregar ?useskin=monobook en la URL, T199478). Desde 1.39, el módulo ResourceLoader no está registrado en las apariencias en las que el accesorio no está disponible, por lo que puede cargarse en esas apariencias como dependencia o usando mw.loader.load() (T236603).
El uso de skins es un último recurso, y debe restringirse a código especializado. Por ejemplo, código que se basa en la manipulación del DOM en ausencia de API estandarizadas y que no se puede implementar utilizando Módulos núcleo.
1.19 (r100509)
actions Nombres de acciones separados por comas Hace que el accesorio esté disponible solo en las acciones de página especificadas. Por ejemplo, actions = edit, history para cargar un accesorio sólo durante la edición y en las páginas de historial.
Especificar la acción edit también la cargará en action=submit. Las acciones no válidas debilitan efectivamente el accesorio ya que no se puede ejecutar en ninguna parte.
1.38 (gerrit:747112)
categories Nombres de categorías separadas por comas Hace que el accesorio esté disponible solo en las categorías especificadas. Por ejemplo, categories = Archived, Maintenance para cargar un accesorio sólo en las páginas Category:Archived o Category:Maintenance. Véase también: Template gadgets . 1.42 (gerrit:1005092)
namespaces Números de espacio de nombres separados por comas Hace que el accesorio esté disponible solo en los espacios de nombres especificados. Por ejemplo, namespaces = 0, 2 para cargar un accesorio sólo en el espacio principal y en el espacio de nombres de usuario. 1.41 (gerrit:624517)
contentModels Modelos de contenido separados por comas Hace que el accesorio esté disponible en las páginas con los modelos de contenido indicados. Por ejemplo, contentModels = wikitext para cargar un accesorio solo en páginas de wikitexto. 1.41 (gerrit:922062)
default Ninguno Activa el accesorio por defecto para todos (incluidos los usuarios IP). Los usuarios registrados pueden desactivarlo en sus preferencias. 1.18 (r85902)
package Ninguno Marca este accesorio como empaquetado. Solo la primera página de JavaScript se ejecutará en este modo. Se pueden importar otras páginas utilizando la función require(). Este modo también permite el uso de páginas JSON, que no pueden incluirse de otra manera. 1.38
type styles (por defecto para los accesorios solo de CSS) o general (por defecto de otro modo) Utiliza styles para módulos que solo modifican el estilo de los elementos ya en la página (por ejemplo, al personalizar la apariencia, el diseño o el contenido del artículo). Esto hará que los archivos CSS del módulo se incluyan desde el HTML de la página en lugar de ser cargados a través de JavaScript. Para más detalles, vea ResourceLoader/Migration guide (users)#Gadget type.
Usar styles no cargará ningún archivo JavaScript especificado. Para los accesorios que modifican el estilo de los elementos a través de JavaScript y CSS, se requieren dos definiciones de accesorio individuales.
1.28
peers Nombres de accesorios separados por comas Estos accesorios solo de CSS estarán cargados con este accesorio. Estos accesorios se cargarán antes de cualquier dependencies, y sus estilos se aplicarán incluso si JavaScript está desactivado. Para más detalles, vea ResourceLoader/Migration guide (users)#Gadget peers. 1.29
supportsUrlLoad Ninguno | true | false Hace que el accesorio esté disponible para cargar con el parámetro de consulta de URL (URL query parameter) de ?withgadget. 1.38
Removed options
Name Parameters Description Since Removed
top Ninguno Hace que el accesorio sea cargado primero. Esto debe ser usado con moderación, pero puede ser necesario para algunas cosas de inicialización como registrar plugins con VisualEditor (editor visual). 1.22 (gerrit:75506) 1.29
requiresES6 Ninguno Permite el uso de la sintaxis ES6 (ES2015) en el accesorio. Habilitar esto significa que la validación de sintaxis del lado del servidor se omite para el accesorio. Los accesorios que requieren ES6 se cargan juntos en una sola solicitud web, lo que aísla los fallos debido a una sintaxis no válida o no compatible solo a esos accesorios, sin afectar a otros accesorios y características del software MediaWiki. Se recomienda utilizar una herramienta como ESLint para garantizar que solo se utilice una sintaxis ES6 válida. Presenta conflicto con default. 1.40 (gerrit:758086) 1.42
targets desktop, mobile o desktop, mobile (por defecto) Establece el objetivo u objetivos de ResourceLoader para el accesorio.
No utilice targets, en su lugar utilice skins cuando sea absolutamente necesario.
1.21 (gerrit:60954) 1.42

Puede especificar dependencias adicionales para sus accesorios, por ejemplo:

* mygadget[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|mygadget.js|mygadget.css

Aquí, le pedimos a ResourceLoader que cargue los módulos jquery.ui y jquery.effects.clip con mygadget. Tenga en cuenta que los accesorios no pueden depender de scripts de páginas, archivos estáticos o URLs externas, solo de módulos ya registrados en ResourceLoader. Para hacer que un script de una página dependa de otro script de una pagina, cada uno debe ser un accesorio que se registre como un módulo en ResourceLoader, luego se puede hacer que tengan dependencias utilizando la siguiente sintaxis:

* childgadget[ResourceLoader|dependencies=ext.gadget.parentgadget]|childgadget.js

Para habilitar un accesorio por defecto, utilice "default":

* mygadget[ResourceLoader|default|dependencies=mediawiki.util]|mygadget.js|mygadget.css

Para hacer que el accesorio esté disponible solo para usuarios con permisos apropiados, establezca la opción rights, por ejemplo:

* ImprovedDeletion [rights=delete] | ImprovedDeletion.js

Hace que el accesorio esté disponible solo para los usuarios que pueden eliminar páginas.

Tenga en cuenta que las restricciones se basan en permisos, no en grupos de usuarios como administradores o burócratas. Aquí hay unos ejemplos:

* modrollback [ResourceLoader |rights=rollback] |modrollback.js
* geonotice [ResourceLoader |default |rights=viewmywatchlist] |geonotice.js
* Ajax_sysop [ResourceLoader |rights=patrol, rollback, markbotedits, delete]|Ajax_sysop.js


Permisos de usuario

Esta extensión agrega dos nuevos permisos de usuario, gadgets-edit y gadgets-definition-edit, que de forma predeterminada no se otorgan a ningún grupo.

Puede agregar lo siguiente a su LocalSettings.php para proporcionar los permisos apropiados para los usuarios que están dentro del grupo de administrador de interfaz. La edición de páginas en el espacio de nombres Accesorio requiere el permiso gadgets-edit y la edición de páginas en el espacio de nombres Accesorio definición necesita el permiso gadgets-definition-edit.

$wgGroupPermissions['interface-admin']['gadgets-edit'] = true;
$wgGroupPermissions['interface-admin']['gadgets-definition-edit'] = true;

Páginas 

Los campos restantes en la línea de definición hacen referencia a las páginas fuente de JavaScript, CSS o JSON que componen el módulo del accesorio. Estos se almacenan en el espacio de nombres MediaWiki como mensajes de interfaz (MediaWiki:Gadget-mygadget.js y MediaWiki:Gadget-mygadget.css en el ejemplo). Los nombres de página deben terminar con ".css", ".js", o ".json" respectivamente.

Un accesorio puede utilizar cualquier número de páginas origen, por ejemplo:

 * frobinator[ResourceLoader]|frob.js|frob.css|pretty.css
 * l33t[ResourceLoader]|l33t.js
 * foobar[ResourceLoader|package]|foo.js|bar.js|foobar-data.json

Tenga en cuenta que si su código contiene cadenas que podrían interpretarse como sintaxis wiki (por ejemplo, el código de firma ~~~~), es posible que desee adjuntar su código a ‎<nowiki>...‎</nowiki> y poner estas etiquetas en comentarios JavaScript o CSS para que no se interpreten cuando se usen.

Vea las primeras y últimas líneas de MediaWiki:Gadget-externalsearch-bar.js para un ejemplo.

Secciones

La lista de accesorios en MediaWiki:Gadgets-definition se puede dividir en secciones utilizando líneas que comienzan y terminan con dos o más caracteres "=" (igual), incluyendo el nombre de un mensaje del sistema que define el nombre de la sección, por ejemplo:

 == interface-gadgets ==
 ...
 == editing-gadgets ==
 ...

Esto definiría dos nuevas secciones, con los títulos definidos en las páginas MediaWiki:Gadget-section-interface-gadgets y MediaWiki:Gadget-section-editing-gadgets.

Accesorios populares

Consulte meta:Gadgets para los accesorios que son populares en las comunidades de Wikimedia.

Véase también