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( $( "