Diferencia entre revisiones de «Usuario:Stargazer/common.js»

De La Coppermind
Ir a la navegación Ir a la búsqueda
m (Function's probably necessary, but let's try this)
m (Hmm)
Línea 20: Línea 20:
 
mw.hook('wikipage.content').add(function objective_claim_button() {
 
mw.hook('wikipage.content').add(function objective_claim_button() {
   
// only show button on latest revision of page
+
// only show button on latest revision of page
if (mw.config.get('wgCurRevisionId') != mw.config.get('wgRevisionId')) return;
+
if (mw.config.get('wgCurRevisionId') != mw.config.get('wgRevisionId')) return;
   
// find the {{t|complete}} template
+
// find the {{t|objective}} template
const notice = document.querySelector('.objective')
+
const notice = document.querySelector('.objective')
if (!notice) return;
+
if (!notice) return;
   
// don't show button on edit
+
// don't show button on edit
const editor = document.querySelector('.mw-editform')
+
const editor = document.querySelector('.mw-editform')
if (editor) return;
+
if (editor) return;
   
const button = document.createElement('button')
+
const button = document.createElement('button')
button.textContent = 'Claim Objective'
+
button.textContent = 'Claim Objective'
button.onclick = mark_objective_as_claimed
+
button.onclick = mark_objective_as_claimed
   
// find the message to replace with a button
+
// find the message to replace with a button
const place_for_button = notice.querySelector('.unclaimed')
+
const place_for_button = notice.querySelector('.unclaimed')
if (!place_for_button) return
+
if (!place_for_button) return;
   
place_for_button.replaceWith(button)
+
place_for_button.replaceWith(button)
   
console.warn('gadget:', 'objective-claim-button')
+
console.warn('gadget:', 'objective-claim-button')
   
 
})
 
})
   
  +
function mark_objective_as_claimed() {
const page_name = mw.config.get('wgPageName');
 
const user = mw.config.get( 'wgUserName' );
+
const page_name = mw.config.get('wgPageName');
 
const user = mw.config.get( 'wgUserName' );
   
console.warn('gadget:', 'objective-claim-button', 'button pressed');
+
console.warn('gadget:', 'objective-claim-button', 'button pressed');
   
// try to edit the article
+
// try to edit the article
 
return {
new mw.Api().edit(
+
new mw.Api().edit(
'page_name',
+
'page_name',
function try_claiming_objective(revision) {
+
function try_claiming_objective(revision) {
return {
 
  +
return {
text: revision.content.replace( '{{objective|date=}}', '{{objective|claim=user|date=}}' ),
+
text: revision.content.replace( '{{objective|date=}}', '{{objective|claim=user|date=}}' ),
summary: 'claimed objective',
+
summary: 'claimed objective',
minor: true
+
minor: true
};
+
};
}
 
  +
}
   
)
+
)
 
};
.then( function () {
 
  +
}
console.log( 'Saved!' );
 
} );
 

Revisión del 23:59 28 jul 2020

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 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 {
		new mw.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
				};
			}

		)
	};
}