User:Novem Linguae/Scripts/ReviewStatus.js: Difference between revisions

Content deleted Content added
fix broken images
fix linter errors
 
(10 intermediate revisions by the same user not shown)
Line 12:
class ReviewStatus {
async execute() {
if ( ! this.shouldRunOnThisPage() ) {
return;
}
 
letconst pageID = mw.config.get( 'wgArticleId' );
letconst boolIsReviewed = await this.isReviewed( pageID );
let htmlToInsert = '';
 
Line 23:
 
if ( boolIsReviewed ) {
htmlToInsert = `' <img src="https://en.wikipedia.org/w/extensions/PageTriage/modules/ext.pageTriage.views.newPagesFeedtoolbar/images/pageInfo/icon_reviewed.png" title="Reviewed" />`';
} else {
htmlToInsert = `' <img src="https://en.wikipedia.org/w/extensions/PageTriage/modules/ext.pageTriage.views.listtoolbar/images/pageInfo/icon_not_reviewed.png" title="Not reviewed" />`';
}
 
if ( this.pageHasSections() ) {
$(` '#firstHeading .mw-editsection`' ).before( htmlToInsert );
} else {
$(` '#firstHeading`' ).append( htmlToInsert );
}
}
 
/**
async isReviewed(pageID) {
* @param {number} pageID The page ID number. A positive number with no commas.
let api = new mw.Api();
*/
let response = await api.get( {
async isReviewed( pageID ) {
action: 'pagetriagelist',
letconst api = new mw.Api();
letconst response = await api.get( {
action: 'pagetriagelistquery',
format: 'json',
page_idformatversion: pageID'2',
prop: 'isreviewed',
pageids: pageID
} );
return response.query.pages[ 0 ].isreviewed;
 
// no result
if ( response.pagetriagelist.result !== 'success' || response.pagetriagelist.pages.length === 0 ) {
return true;
// 1, 2, or 3
} else if ( parseInt(response.pagetriagelist.pages[0].patrol_status) > 0 ) {
return true;
// 0
} else {
return false;
}
}
 
shouldRunOnThisPage() {
// don't run when not viewing articles
letconst action = mw.config.get( 'wgAction' );
if ( action !== 'view' ) {
return false;
}
 
// don't run when viewing diffs
letconst isDiff = mw.config.get( 'wgDiffNewId' );
if ( isDiff ) {
return false;
}
 
letconst isDeletedPage = ( ! mw.config.get( 'wgCurRevisionId' ) );
if ( isDeletedPage ) {
return false;
}
 
// Only run in mainspace
letconst namespace = mw.config.get( 'wgNamespaceNumber' );
letconst isMainspaceOrDraftspace = ( [ 0 ].includes( namespace ) );
if ( ! isMainspaceOrDraftspace ) {
return false;
}
Line 84 ⟶ 79:
 
pageHasSections() {
return $(` '#firstHeading .mw-editsection`' ).length;
}
}
 
$( async function () {
await mw.loader.using( [ 'mediawiki.api' ], async function () => {
letawait rs =( new ReviewStatus() ).execute();
} );
await rs.execute();
} );
});
 
// </nowiki>