Usuario:Peter Bowman/welcome-user.js
Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.
- Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
- Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
- Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
- Opera: Presiona Ctrl+F5.
/**
* Script para dar la bienvenida a usuarios (registrados) nuevos
*
* Añade 'Dar la bienvenida' en la botonera para páginas relacionadas con un
* usuario (p. ej. su página de discusión o lista de contribuciones). Después de
* pulsar el botón, coloca [[Plantilla:Bienvenido usuario]] en la introducción de
* la página de discusión, créandola si no existe. Si esta existe y ya contiene
* una bienvenida, aborta la operación.
*
* Discusión: [[Especial:PermaLink/4928580#De estructura]].
*/
( function ( mw, $ ) {
var config = mw.config.get( [
'wgRelevantUserName',
'wgTitle',
'wgUserName',
'skin'
] ),
modules = [
'mediawiki.api',
'mediawiki.util',
'jquery.spinner'
],
messages = {
'welcome-portlet-text': 'Dar la bienvenida',
'welcome-portlet-tooltip': 'Coloca la plantilla de bienvenida en su página de discusión',
'welcome-already-welcomed': 'Parece que ya se le ha dado la bienvenida a este usuario.',
'welcome-summary': 'colocando plantilla de bienvenida'
},
targetTemplate = '{' + '{subst:Bienvenido usuario}}\n\n',
reWelcome = /(?:Wikcionario|WN|Project):Bienvenido, nuevo visitante/i;
if ( !!config.wgRelevantUserName && config.wgRelevantUserName !== config.wgUserName ) {
mw.messages.set( messages );
$.when(
mw.loader.using( modules ),
$.ready
).done( function () {
var api = new mw.Api(),
targetPage = 'User talk:' + config.wgRelevantUserName;
$( mw.util.addPortletLink(
config.skin === 'timeless' ? 'p-userpagetools' : 'p-cactions',
'#',
mw.msg( 'welcome-portlet-text' ),
'ca-welcome',
mw.msg( 'welcome-portlet-tooltip' )
) ).on( 'click', function ( evt ) {
var $spinner = $.createSpinner( {
size: 'small',
type: 'inline'
} ).appendTo( this );
api.get( {
formatversion: 2,
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
titles: targetPage
} ).then( function ( res ) {
var page = res.query.pages[ 0 ];
if (
!page.missing &&
reWelcome.test( page.revisions[ 0 ].slots.main.content )
) {
mw.notify( mw.msg( 'welcome-already-welcomed' ), { type: 'warn' } );
$spinner.remove();
return;
}
return api.postWithEditToken( api.assertCurrentUser( {
action: 'edit',
title: targetPage,
prependtext: targetTemplate,
summary: mw.msg( 'welcome-summary' ),
notminor: true
} ) ).done( function () {
window.location = mw.util.getUrl( targetPage );
} );
} ).fail( function ( code, data ) {
mw.notify( api.getErrorMessage( code, data ), { type: 'error' } );
$spinner.remove();
} );
return false;
} );
} );
}
}( mediaWiki, jQuery ) );