User:Enterprisey/req-helper.js
//
( function ( $, mw ) {
if ( mw.config.get( 'wgAction' ) === 'view' &&
mw.config.get( 'wgPageName' ).indexOf('Wikipedia:Requested_articles') === 0 &&
mw.config.get( 'wgPageName' ) !== "Wikipedia:Requested_articles" &&
!$( "#mw-diff-ntitle1" ).length &&
!$( "#mw-revision-info" ).length ) {
// Load and display form
mw.loader.using( [ "mediawiki.api", "mediawiki.util" ] ).then( function () {
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'revisions',
rvprop: 'content',
rvlimit: 1,
titles: "User:Enterprisey/req-helper.js/tpl-panel.js"
}
).done( function ( data ) {
var pageId = Object.keys(data.query.pages)[0];
var panelHtml = data.query.pages[pageId].revisions[0]['*'];
$( "#jump-to-nav" ).after( panelHtml );
$( "#req-helper-panel input.view-option" ).click( updateRequestActions );
$( "#req-helper-panel input[type='radio']" ).click( updateRequestDisplay );
// Enable save button if there are requests marked for deletion
$( "#mw-content-text" ).on( "click", "a.delete-action", updateSaveChangesButton );
// Save handler
$( "#save-changes" ).click( function ( event ) {
$( "#save-changes" ).prop( "disabled", true );
editPage( function ( wikitext ) {
$( ".marked-for-deletion" ).each( function ( index, element ) {
var pageTitle = $( element ).children( "a" ).first().text();
wikitext = removeRequest( wikitext, pageTitle );
} );
return wikitext;
} );
} ); // end save handler
// Mark blue handler
$( "#mark-bluelinks" ).click( function ( event ) {
forEachRequest( function ( element ) {
var elemClass = $( element ).attr( "class" );
if( $( "#also-mark-redirects" ).is( ":checked" ) ) {
if( elemClass !== "mw-redirect" && elemClass ) return;
} else {
if( elemClass ) return;
}
if( !$( element ).parent().hasClass( "marked-for-deletion" ) ) {
$( element ).parent().addClass( "marked-for-deletion" );
}
// Ensure that the text of the action link is correct
if( $( element ).parent().hasClass( "marked-for-deletion" ) ) {
$( element ).parent().find( ".delete-action" ).text( "undelete" );
}
} );
updateSaveChangesButton();
} ); // end mark handler
// Create action links, initially hidden
forEachRequest( function ( link ) {
$( "" )
.insertAfter( link )
.addClass( "request-actions" )
.css( "margin-left", "0.25em" )
.append( $( "", { "text": "( ", "class": "action-parenthesis" } ) )
.append( $( "" )
.text( "search" )
.addClass( "search-action" )
.attr( "href", "https://www.google.com/search?q=" + $( link ).text().replace( / /, "+" ) ) )
.append( $( "", { "text": " | ", "class": "action-separator" } ) )
.append( $( "" )
.text( "delete" )
.addClass( "delete-action" )
.click( function ( e ) {
$( link ).parent().toggleClass( "marked-for-deletion" );
if( $( this ).text() === "delete" ) {
$( this ).text( "undelete" );
} else {
$( this ).text( "delete" );
}
} ) )
.append( $( "", { "text": " )", "class": "action-parenthesis" } ) );
} ); // end action link creation loop
// Make a style element to be used by updateRequestActions
$( "#req-helper-panel" ).append( $( "