Extensión:Accesorios
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) |
|
|
Descargas trimestrales | 104 (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 carpetaextensions/
.
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
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.
[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'
.)
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
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:
|
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, task 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() (task 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 |
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
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
- Special:Gadgets – lista de todos los aparatos y una breve descripción de cada uno
- Extension:Gadgets/Roadmap
- Gestor de accesorios
- Extension:Widgets
- Snippets
Esta extensión está siendo usada en uno o más proyectos de Wikimedia. Esto significa probablemente que la extensión es estable y funciona lo suficientemente bien como para ser usada en sitios con gran cantidad de visitas. Puedes buscar el nombre de esta extensión en los archivos CommonSettings.php e InitialiseSettings.php de Wikimedia para ver dónde se instala. Encontrarás la lista completa de extensiones instaladas en un wiki en particular en la página Special:Version del wiki. |
Esta extensión está incluida en los siguientes anfitriones/granjas wiki y/o paquetes: No se trata de una lista oficial. Algunas granjas/hosts wiki y/o paquetes pueden tener disponible esta extensión aunque no estén listados aquí. Siempre compruébelo con su anfitrión o granja wiki para confirmarlo. |