//<nowiki>
$(function (){
var Outline_bot_config = {
name: '[[User:DannyS712/Outline bot|Outline bot.js]]',
testing: false,
disclaimer: "Bot in trial ([[Wikipedia:Bots/Requests for approval/DannyS712 bot 20|BRFA]])",
version: 1.3,
debug: false
};
var Outline_bot_summary = 'Task 20: Add a short description with ' + Outline_bot_config.name + ' (version ' + Outline_bot_config.version + ')';
if (Outline_bot_config.testing){
Outline_bot_summary = Outline_bot_config.disclaimer + ": " + Outline_bot_summary;
}
mw.loader.using( 'mediawiki.util', function () {
importScript( 'User:DannyS712 test/page.js' );
$(document).ready( function () {
mw.util.addPortletLink ( 'p-cactions', 'javascript:void(0)', 'Outline bot', 'ca-outlineBot', 'Add a short description of this outline');
$('#ca-outlineBot').on('click', function() {
Outline_bot_run();
} );
} );
} );
function Outline_bot_run(){
var ar_of_pages = get_page_list( 'Category:Wikipedia_outlines', 0);
if( Outline_bot_config.debug) console.log( ar_of_pages );
for (var jjj = 0; jjj < ar_of_pages.length; jjj++){
//if (jjj < 40)
outline_run( ar_of_pages[jjj]);
}
}
function outline_run( title ){
var regex = /Outline of (.*)/i;
var match = regex.exec( title );
console.log( title, match );
if (match !== null){
var content = get_page( title );
if( Outline_bot_config.debug) console.log( content );
var already_has = false;
if (content.toLowerCase().indexOf('{{short description\|') > -1) already_has = true;
console.log( already_has );
if (!(already_has)){
if( Outline_bot_config.debug) console.log ( match );
var short_desc = "{{Short description|1=Overview of and topical guide to " + match[1] + "}}";
console.log ( short_desc );
var new_content = short_desc + "\n" + content;
if( Outline_bot_config.debug) console.log( new_content );
set_new( title, new_content );
}
}
}
function get_page_list( category, current_depth ){
var get_pages = {
action: 'query',
list: 'categorymembers',
cmlimit: 'max',
cmtitle: category,
cmprop: 'title',
format: 'json'
};
var result = null;
$.ajax({
url: scriptUrl,
type: 'get',
data: get_pages,
dataType: 'json',
async: false,
success: function(catResponse) {
if( Outline_bot_config.debug) console.log( catResponse );
var pages = catResponse.query.categorymembers;
if( Outline_bot_config.debug) console.log( pages );
var good_pages = [];
var sub_cats = [];
for (var i = 0; i < pages.length; i++) {
if ( pages[i].ns === 0 ) {
var regex = /Outline of (.*)/i;
var match = regex.exec( pages[i].title);
if (match !== null) good_pages.push(pages[i].title);
}
else if (pages[i].ns === 14) {
sub_cats.push(pages[i].title);
}
}
if( Outline_bot_config.debug) console.log( good_pages );
if( Outline_bot_config.debug) console.log( sub_cats );
if (current_depth < 4){
for (var j = 0; j < sub_cats.length; j++){
good_pages = good_pages.concat( get_page_list(sub_cats[j], current_depth + 1));
}
}
result = good_pages;
if( Outline_bot_config.debug) console.log( result );
}
});
return result;
}
function get_page( name ){
var page_to_get = {
action: 'query',
titles: name,
prop: 'revisions',
rvprop: 'content',
format: 'json',
formatversion: 2
};
var result = null;
$.ajax({
url: scriptUrl,
type: 'get',
data: page_to_get,
dataType: 'json',
async: false,
success: function(page) {
if( Outline_bot_config.debug) console.log( page );
result = page.query.pages["0"].revisions["0"].content;
if( Outline_bot_config.debug) console.log( result );
}
});
return result;
}
function set_new ( page, new_content ){
if( Outline_bot_config.debug) console.log( page, new_content );
var to_send = {
action: 'edit',
title: page,
text: new_content,
notminor: true,
bot: true,
summary: Outline_bot_summary,
token: mw.user.tokens.get( 'csrfToken' )
};
console.log( to_send );
$.when(
$.post( scriptUrl, to_send, function( response ){ } )
).done( function() {
if( Outline_bot_config.debug) console.log( response );
} );
}
});
//</nowiki>