User:DannyS712 test/links.js

//

$(function (){

var link_config = {

name: 'lk.js',

version: 1.0,

debug: false

};

var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php';

mw.loader.using( 'mediawiki.util', function () {

importScript( 'User:DannyS712 test/page.js ' );

$(document).ready( function () {

mw.util.addPortletLink ( 'p-cactions', 'javascript:void(0)', 'lk', 'get-links', 'TOOLTIP');

$('#get-links').on('click', function() {

run();

} );

} );

} );

function run(){

var cat = mw.config.get( 'wgPageName' ).replace(/_/g, ' ');

var pages = in_cat( cat );

var to_check = [];

var this_result = false;

for (var iii = 0; iii < pages.length; iii++){

this_result = incoming_links( pages[iii].title );

if (this_result) to_check.push( this_result );

}

console.log( to_check );

var string = as_table( to_check, cat );

console.log ( string );

//set_page ( 'User:DannyS712 test/sandbox', string, 'Updating report');

}

function incoming_links( name ){

var links = get_links( name );

var page = { name: name, links: links };

console.log( page );

if ( links >= 2 ) return page;

else return false;

}

function get_links( page ){

var links_to_get = {

action: 'query',

prop: 'linkshere',

titles: page,

lhprop: 'title',

lhnamespace: '0',

lhshow: '!redirect',

lhlimit: 10,

format: 'json',

formatversion: 2

};

var result = 0;

$.ajax({

url: scriptUrl,

type: 'get',

data: links_to_get,

dataType: 'json',

async: false,

success: function(links) {

if (link_config.debug) console.log( links );

if (links['query']['pages'][0]['linkshere']) result = links['query']['pages'][0]['linkshere'].length;

if (link_config.debug) console.log( result );

}

});

return result;

}

function in_cat( cat ){

var cat_to_get = {

action: 'query',

list: 'categorymembers',

cmnamespace: 0,

cmtitle: cat,

cmprop: 'title',

cmlimit: 'max',

format: 'json',

formatversion: 2

};

var result = null;

$.ajax({

url: scriptUrl,

type: 'get',

data: cat_to_get,

dataType: 'json',

async: false,

success: function(cat_got) {

if (link_config.debug) console.log( cat_got );

result = cat_got['query']['categorymembers'];

if (link_config.debug) console.log ( result );

}

});

return result;

}

function as_table ( to_check, cat ){

var as_string = "Pages tagged as orpahned in :" + cat + " with at least 2 incoming links; data as of ~~~~~. Updated by ~~~.\n\n----\n";

as_string = as_string + '

class="wikitable sortable"\n|+ Orphans with at least 2 links\n
\n! scope="col" | Page\n! scope="col" | Links\n
\n';

for (var page = 0; page < to_check.length; page++){

as_string = as_string + '| ' + to_check[page].name + '

' + to_check[page].links + '\n
\n';

}

as_string = as_string + '

';

return as_string;

}

});

//