Usuario:Stargazer/common.js

De La Coppermind
< Usuario:Stargazer
Revisión del 00:49 29 jul 2020 de Stargazer (discusión | contribs.) (Duplicate of review button, for testing)
Ir a la navegación Ir a la búsqueda

Nota: tras guardar, quizás necesites actualizar la caché de tu navegador para ver los cambios.

  • Firefox/Safari: Mantén presionada la tecla Mayús mientras pulsas el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presiona Ctrl+Shift+R (⌘+Mayús+R en Mac)
  • Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar, o presiona Ctrl+F5
  • Opera: dirígete a Menú → Configuración (Opera → Preferencias en Mac) y luego a Privacidad y seguridad → Borrar datos de navegación → Imágenes y archivos en caché.
function addEditIntro( name ) {
	$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
		el.href = $( this ).attr( 'href' ) + '?&editintro=' + name;
	} );
}

if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
	$( function () {
		var cats = mw.config.get( 'wgCategories' );
		if ( !cats ) {
			return;
		}
		if ( $.inArray( 'Stormlight Archive', cats ) !== -1 || $.inArray( 'General cosmere', cats ) !== -1 ) {
			addEditIntro( 'MediaWiki:Top-notice-ns-0' );
		}
	} );
}

/* Claim button for objectives */
mw.hook('wikipage.content').add(function objective_claim_button() {

	// only show button on latest revision of page
	if (mw.config.get('wgCurRevisionId') != mw.config.get('wgRevisionId')) return;

	// find the {{t|objective}} template
	const notice = document.querySelector('.objective')
	if (!notice) return;

	// don't show button on edit
	const editor = document.querySelector('.mw-editform')
	if (editor) return;

	const button = document.createElement('button')
	button.textContent = 'Claim Objective'
	button.onclick = mark_objective_as_claimed

	// find the message to replace with a button
	const place_for_button = notice.querySelector('.unclaimed')
	if (!place_for_button) return;

	place_for_button.replaceWith(button)

	console.warn('gadget:', 'objective-claim-button')

})

function mark_objective_as_claimed() {
	const api = new mw.Api
	const page_name = mw.config.get('wgPageName');
	const user = mw.config.get( 'wgUserName' );

	console.warn('gadget:', 'objective-claim-button', 'button pressed');

	// try to edit the article
	return api.edit(page_name, function try_claiming_objective(revision) {
		return {
			text: revision.content.replace( '{{objective|date=}}', '{{objective|claim=user|date=}}' ),
			summary: 'claimed objective',
			minor: true
		}
	})
}

/* Duplicate of review button */
mw.hook('wikipage.content').add(function tag_complete_button() {

// only show button on latest revision of page
if (mw.config.get('wgCurRevisionId') != mw.config.get('wgRevisionId')) return;

// find the {{t|complete}} template
const notice = document.querySelector('.quality-complete')
if (!notice) return;

// don't show button on edit
const editor = document.querySelector('.mw-editform')
if (editor) return;
// TODO: instead add a button that saves and marks as complete

const button = document.createElement('button')
button.textContent = 'Mark as Reviewed'
button.onclick = mark_article_as_complete

// find the message to replace with a button
const place_for_button = notice.querySelector('.unsigned')
if (!place_for_button) return

place_for_button.replaceWith(button)

console.warn('gadget:', 'tag-complete-button')

})

function mark_article_as_complete(ev) {

const api = new mw.Api
const page_name = mw.config.get('wgPageName')

console.warn('gadget:', 'tag-complete-button', 'button pressed')

// try to edit the article
return api.edit(page_name, function try_signing_article(revision) {

return {
  // find {{t|complete}} and replace with {{t|complete|~x4}}
  text: revision.content.replace( '{'+'{complete}}', '{'+'{complete|~~'+'~~}}' ),
  summary: 'mark as complete',
 }

}).catch(console.warn).then(function try_tagging_revision(revision) {
  console.debug('gadget:', 'tag-complete-button', 'revision:', revision)
  if (revision.nochange === true) return
  console.warn('gadget:', 'tag-complete-button', 'tagging')
  // tag the revision
  return api.postWithToken('csrf', {
    action: 'tag',
    revid: revision.newrevid,
    add: 'completed',
    reason: 'from tag-complete-button gadget',
  }).catch(console.warn).then(function show_result_of_complet_button_press() {
    // show the user that it worked
    mw.notify('Article marked as complete?')
    console.warn('gadget:', 'tag-complete-button', 'tagged')
    // TODO: replace button with signature/reload button section
  })
})

}