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

m
Looks good
(Should fix issue with the edit links for sections)
m (Looks good)
Etiqueta: Deshacer
 
(No se muestran 30 ediciones intermedias del mismo usuario)
// Copy of the "tag status change" gadget that is case insensitive (i.e. works for {{t|Stub}}, {{t|Partial}}, and {{t|Complete}}) and excludes non-articles
/* Add edit notice when editing pages in certain categories */
mw.hook('wikipage.diff').add(function tag_status_change() {
 
// 2021-02-22 exclude pages outside ns 0
if (mw.config.get('wgNamespaceNumber') != 0) return
 
// 2018-11-06 add status-change tags to pages with diffs that change the status
const diff = document.querySelector('.diff')
if (!diff) return;
 
diff.querySelectorAll('.diff-addedline').forEach(function find_status_change(el) {
if (!/\{\{([sS]tub|[pP]artial|[cC]omplete)\}\}/.test(el.innerText)) return
const row = el.parentElement
const rem = row.querySelector('.diff-deletedline')
const add = row.querySelector('.diff-addedline')
const msg = rem.innerText.trim() +' => '+ add.innerText.trim()
 
// guard against tagging latest revision in multi-change diffs
if (diff.querySelector('.diff-multi')) {
// TODO: determine which of the revisions to tag?
console.warn('gadget:', 'tag-status-change', 'ignored on combination diff')
mw.notify('theses revisions contain a potential status-change ('+ msg +') which has been ignored')
return;
}
 
console.warn('gadget:', 'tag-status-change')
 
// send the notification
;(new mw.Api).postWithToken('csrf', {
action: 'tag',
revid: mw.config.get('wgRevisionId'),
add: 'status-change',
reason: msg,
}).then(function notify_success() {
mw.notify('revision tagged with '+ msg)
})
 
 
})
 
})
 
 
// Copy of the "mark as reviewed" button gadget that is case insensitive (i.e. works for {{t|Complete}})
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( /\{\{[cC]omplete}}/, '{'+'{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
})
})
 
}
 
 
/*
// Add edit notice when editing pages in certain categories
// Problems: When editing an old version of the page, this needs to drop the ?
function addEditIntro( name ) {
$( '#ca-edit' ).find( 'a' ).each( function ( i, el ) {
}
 
/*/ Add edit notice when editing sections of pages in certain categories */
// Problems: When clicking the [edit] link on templates, this gets appended to the URL, making the page name invalid
function addEditSectionIntro( name ) {
$( '.mw-editsection' ).find( 'a' ).each( function ( i, el ) {
}
if ( $.inArray( 'Stormlight Archive', cats ) !== -1 || $.inArray( 'General cosmere', cats ) !== -1 ) {
addEditIntroaddEditSectionIntro( 'MediaWiki:Top-notice-ns-0' );
}
} );
}
*/
 
/*
/* Claim button for objectives */
// Claim button for objectives
// I'm pretty sure I didn't quite get this to work; objective-related stuff isn't really a priority right now, but I'm leaving it here commented out to maybe look at later
mw.hook('wikipage.content').add(function objective_claim_button() {
 
})
}
*/
 
/*
//Tweaks to editing toolbar
var customizeToolbar = function() {
// Your code goes here
 
//Remove references button
$( '#wpTextbox1' ).wikiEditor( 'removeFromToolbar', {
'section': 'main',
'group': 'insert',
'tool': 'reference'
});
*/
 
/*
* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar...
* Don't touch below this line!
 
if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1) {
mw.loader.using('user.options').then(function() {
// This can be the string "0" if the user disabled the preference ([[phab:T54542#555387]])
if (mw.user.options.get('usebetatoolbar') == 1) {
$.when(
mw.loader.using('ext.wikiEditor'), $.ready
).then(customizeToolbar);
}
});
}
*/