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)
- Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
/* * Original version: http://pl.wikipedia.org/wiki/MediaWiki:Wikibugs.js (2008-12-17) * Russian version by [[User:Александр Сигачёв]], [[User:Putnik]], [[User:LEMeZza]] * Converted to OOjs (2017-05-20) by [[User:Putnik]] * Spanish version (2018-03-06) by [[User:Leoncastro]] */ ( function ( mw, $ ) { 'use strict'; var wb$bugsPage = 'Wikiviajes:Informes_de_error'; var wb$badPages = [ "Wikiviajes:Portada", "Wikiviajes:Informes_de_error", "MSN", "Hotmail", "Facebook", "Twitter", "Skype", "Amazon", "Windows_Live_Messenger", "Correo_Yahoo!", "Windows_Live", "Internet_Explorer" ]; if ( $.inArray( mw.config.get( 'wgNamespaceNumber' ), [ -1 , 6 , 7 , 8 ]) > -1 || $.inArray( mw.config.get( 'wgPageName' ), wb$badPages ) > -1 ) { $( '#n-bug_in_article' ).hide(); } var wb$link = function ( page ) { return mw.config.get( 'wgArticlePath' ).replace( /\$1/, page.replace( / /g, '_' ) ); }; var wb$i18n = { nsFile: 'Archivo:', nsSpecial: 'Especial:', nsCat: 'Categoría:', title: 'Informe de errores', btnFix: 'Voy a arreglarlo', btnReport: 'Informar del error', btnCancel: 'Cancelar', btnSend: 'Enviar', fldPage: 'Título de la página', fldText: 'Texto del mensaje', fldTextInfo: 'Por favor, danos la máxima información posible acerca del error que has encontrado. ' + 'A ser posible indica una referencia o sitio web que permita una verificación del dato.', fldCaptcha: 'Código de verificación', fldSign: 'Firma', alertShort: 'El reporte es demasiado corto, por favor, añade más detalles.', alertNoPage: 'Introduce el nombre del artículo.', alertCaptcha: 'Su texto contiene enlaces externos. Por favor,' + ' ingrese el código de la imagen y envíe el mensaje nuevamente.', alertError: 'Se produjo un error al enviar. Intenta nuevamente.', msgSign: '\n\nEnviado por:', newTopic: 'Sección nueva:', htmlIpWarn: '<p><b>Atención.</b> Tu dirección IP quedará registrada en el historial y podrá verse.' + ' Puedes crearte una <a href="//es.wikivoyage.org/w/index.php?title=Especial:Entrar&type=signup"' + ' target="_blank">cuenta de usuario</a>.</p>', htmlInfo: '<div style="float:right;width:200px;padding:4px 10px;' + 'margin:2px 0px 0px 10px;font-size:90%;border:2px solid #a6170f;' + 'border-radius:3px">' + '<p><b>No informes</b> de errores en otros sitios ' + '(como <b>Facebook</b> o <b>Twitter</b>); no lo atenderemos.</p>' + '<p>Por favor, no informes sobre artículos que faltan; lo correcto es enviar' + ' una <a href="' + wb$link( 'Wikiviajes:Artículos_solicitados' ) + '">solicitud de creación</a>.</p>' + '</div>' + '<p><b>Este sistema sirve <u>únicamente</u> para informar sobre' + ' errores en los artículos de Wikiviajes</b>.</p>' + '<p style="margin-top:0">Si has encontrado un error, por favor, intenta arreglarlo tú mismo; la ' + '<a href="' + wb$link( 'wiki' ) + '" target="_blank">tecnología wiki</a> permite que cualquiera pueda ' + '<b><a href="' + wb$link( 'Ayuda:Introducción' ) + '" target="_blank">editar artículos</a></b>.' + '</p>' + '<p>No dudes en hacerlo, una de las reglas de Wikiviajes dice «¡<a href="' + wb$link( 'Wikiviajes:Sé_valiente_al_editar_páginas' ) + '" target="_blank">sé valiente editando páginas</a>!».' + '</p>' + '<p>Si no puedes o no sabes arreglar el error, entonces infórmanos de él usando este formulario.</p>' + '<p><b>Si el error ya se ha corregido, no lo informes.</b></p>' + '<p style="color:red"><b><u>No</u> dejes tu número de teléfono ni tu correo electrónico</b>.</p>' + '<p><a href="' + wb$link( wb$bugsPage ) + '" target="_blank">Ver los informes de error actuales</a>.</p>' + '<p>Lee los <a href="//wikimediafoundation.org/wiki/Términos_de_Uso"' + ' target="_blank">términos de uso</a> y la ' + '<a href="//wikimediafoundation.org/wiki/Política_de_privacidad"' + ' target="_blank">política de privacidad</a>.</p>' }; var wb$isValidPageName = function (name) { if ( !name || name.substr( 0, name.indexOf( ':' ) + 1 ) === wb$i18n.nsSpecial ) { return false; } name = name.replace( /_/g, ' ' ); for ( var i = 0; i < wb$badPages.length; i++ ) { if ( name === wb$badPages[i] ) { return false; } } return true; }; var wb$popWikibug = function () { // Info popup var canEdit = false, $editLink = $( '#ca-edit a' ); if ( $editLink.length ) { canEdit = true; } // Prepare messages var $infoHtml = $( '<div>' ).html( $.parseHTML( wb$i18n.htmlInfo ) ); if ( !mw.config.get( 'wgUserName' ) ) { $infoHtml.append( $( '<p>' ).html( $.parseHTML( wb$i18n.htmlIpWarn ) ) ); } // OOjs window var windowManager = new OO.ui.WindowManager(); var infoDialog = new OO.ui.MessageDialog(); $( 'body' ).append( windowManager.$element ); windowManager.addWindows( [ infoDialog ] ); windowManager.openWindow( infoDialog, { title: wb$i18n.title, message: $infoHtml, actions: [ { label: wb$i18n.btnFix, action: 'edit', flags: 'progressive' }, { label: wb$i18n.btnReport, action: 'report', flags: 'progressive' }, { label: wb$i18n.btnCancel }, ], size: 'large', } ).then( function ( opened ) { function ReportDialog( config ) { ReportDialog.parent.call( this, config ); } opened.then( function ( closing, data ) { if ( data && data.action === 'edit' ) { // Go to edit page var $editLink = $( '#ca-edit a' ), editUrl = mw.config.get( 'wgArticlePath' ).replace( /\$1/, wb$bugsPage ); if ( $editLink.length ) { editUrl = $editLink.attr( 'href' ); } window.location.assign( editUrl ); } else if ( data && data.action === 'report' ) { // Prepare form var inputPage = new OO.ui.TextInputWidget( { placeholder: wb$i18n.fldPage, value: mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ), disabled: wb$isValidPageName( mw.config.get( 'wgPageName' ) ) && !mw.config.get( 'wgNamespaceNumber' ), } ); var inputText = new OO.ui.MultilineTextInputWidget( { placeholder: wb$i18n.fldTextInfo, rows: 5 } ); var inputCaptcha = new OO.ui.TextInputWidget( { placeholder: wb$i18n.fldCaptcha, } ); var panelCaptcha = new OO.ui.FieldLayout( inputCaptcha, { label: wb$i18n.fldCaptcha, } ); panelCaptcha.toggle( false ); var imageCaptcha = new OO.ui.ToggleWidget(); imageCaptcha.$element.css( 'text-align', 'right' ); imageCaptcha.$element.append( $( '<img>' ) .attr( 'id', 'wikibugs-captcha-img' ) .attr( 'width', 249 ) .attr( 'height', 63 ) ); imageCaptcha.toggle( false ); var inputSign = new OO.ui.TextInputWidget( { placeholder: wb$i18n.fldSign, value: mw.config.get( 'wgUserName' ) ? '~~' + '~~' : '', disabled: mw.config.get( 'wgUserName' ) } ); var fieldset = new OO.ui.FieldsetLayout( { classes: [ 'container' ], } ); fieldset.addItems( [ new OO.ui.FieldLayout( inputPage, { label: wb$i18n.fldPage, align: 'top' } ), new OO.ui.FieldLayout( inputText, { label: wb$i18n.fldText, align: 'top' } ), panelCaptcha, imageCaptcha, new OO.ui.FieldLayout( inputSign, { label: wb$i18n.fldSign, } ), ] ); // Add the FieldsetLayout to a FormLayout. var form = new OO.ui.FormLayout( { items: [ fieldset ], } ); // Open window with report form OO.inheritClass( ReportDialog, OO.ui.MessageDialog ); ReportDialog.static.name = 'reportDialog'; ReportDialog.prototype.getActionProcess = function ( action ) { var dialog = this; if ( action ) { return new OO.ui.Process( function () { if ( action === 'send' ) { dialog.getActions().setAbilities({ send: false }); // Send message var content = inputText.getValue(); if ( content === '' || content.length < 20 || !content.match( ' ' ) ) { mw.notify( wb$i18n.alertShort ); inputText.focus(); dialog.getActions().setAbilities({ send: true }); return; } var page = inputPage.getValue() .replace( /^https?:\/\/es\.wikivoyage\.org\/wiki\/(.+)$/, '$1' ) .replace( /_/g, ' ' ); page = decodeURIComponent( page ); var section; if ( page === mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ) && wb$isValidPageName( mw.config.get( 'wgPageName' ) ) ) { if ( mw.config.get( 'wgNamespaceNumber' ) === 6 ) { section = '[[:' + wb$i18n.nsFile + mw.config.get( 'wgTitle' ) + '|' + window.wgTitle + ']]'; content = '[[' + wb$i18n.nsFile + mw.config.get( 'wgTitle' ) + '|thumb|left|100px]]\n* ' + content + '\n{{clear}}'; } else { var re = new RegExp( '^('+ wb$i18n.nsCat + '|'+ wb$i18n.nsFile + '|\\/)' ); section = page.replace( re, ':$1' ); section = '[[' + section + ']]'; } } else { page = page .replace( /\[\[([^\[\]\|]+)\|[^\[\]\|]+\]\]/g, '$1' ) .replace( /[\[\]\|]/g, '' ) .replace( /^\s+/g, '' ) .replace( /\s+$/g, '' ); if ( !wb$isValidPageName( page ) ) { mw.notify( wb$i18n.alertNoPage ); if ( wb$isValidPageName( mw.config.get( 'wgPageName' ) ) ) { inputPage.setValue( mw.config.get( 'wgPageName' ) ); } else { inputPage.setValue( '' ); inputPage.focus(); } dialog.getActions().setAbilities({ send: true }); return; } if ( page.indexOf( ':' ) > 0 ) { section = '[[:' + page + ']]'; } else { section = '[[' + page + ']]'; } } content += wb$i18n.msgSign; if ( !mw.config.get( 'wgUserName' ) ) { content += ' ' + inputSign.getValue().trim(); } content += ' ~~' + '~~'; dialog.getActions().get()[0].pushPending(); var data = { format: 'json', action: 'edit', title: wb$bugsPage, section: 'new', sectiontitle: section, summary: wb$i18n.newTopic + ' /* ' + page + ' */', text: content.trim(), token: mw.user.tokens.get( 'csrfToken' ) }; var captchaId = $( '#wikibugs-captcha-img' ).data( 'id' ); if ( captchaId ) { data.captchaid = captchaId; data.captchaword = inputCaptcha.getValue().trim(); } $.ajax( { url: '/w/api.php', type: 'POST', data: data, success: function ( xhr ) { if ( xhr && xhr.edit && xhr.edit.result === 'Success' ) { // Success var url = mw.config.get( 'wgArticlePath' ) .replace( /\$1/, wb$bugsPage ) .replace( / /g, '_' ); window.location.href = url + '#' + page; } else if ( xhr && xhr.edit && xhr.edit.captcha && xhr.edit.captcha.type === 'image' ) { // Captcha $( '#wikibugs-captcha-img' ) .attr( 'src', xhr.edit.captcha.url ) .data( 'id', xhr.edit.captcha.id ); imageCaptcha.toggle( true ); inputCaptcha.setValue( '' ); panelCaptcha.toggle( true ); dialog.getActions().get()[0].popPending(); mw.notify( wb$i18n.alertCaptcha ); dialog.getActions().setAbilities({ send: true }); } else { // Error dialog.getActions().get()[0].popPending(); mw.notify( wb$i18n.alertError ); dialog.getActions().setAbilities({ send: true }); } }, error: function() { dialog.getActions().get()[0].popPending(); mw.notify( wb$i18n.alertError ); dialog.getActions().setAbilities({ send: true }); } } ); } else { dialog.close(); } } ); } return ReportDialog.parent.prototype.getActionProcess.call( this, action ); }; var reportDialog = new ReportDialog(); windowManager.addWindows( [ reportDialog ] ); windowManager.openWindow( reportDialog, { title: wb$i18n.title, message: form.$element, actions: [ { label: wb$i18n.btnSend, action: 'send', flags: 'progressive' }, { label: wb$i18n.btnCancel }, ], size: 'medium', } ); } } ); } ); }; // Click event $( function() { $( '#n-bug_in_article a' ).click( function ( e ) { e.preventDefault(); mw.loader.using( [ 'mediawiki.api', 'oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows' ] ).then( wb$popWikibug ); } ); } ); }( mediaWiki, jQuery ) );