Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*************
Generates a list of pages which use templates. Used to create
https://en.wikipedia.org/wiki/Wikipedia:TemplateData/List
Author User:Salix alba
Date: 28 July 2013
Version: 0.20
Heavily borrowed from TemplateDataEditor
http://fr.wikipedia.org/w/index.php?title=Utilisateur:Ltrlg/scripts/TemplateDataEditor.js
***************/
function TDList($) {
var titles = [];
////// Customization for local wikis
lang = mw.config.get('wgUserLanguage');
messages = {
"en": {
"toolbox-label": 'TD List',
"toolbox-tooltip": 'Generates list of templates with TemplateData',
"title": 'Templates with TemplateData',
'section-description': 'TemplateData',
"close": 'Close'
}
};
if(messages[lang]===null) lang='en';
////// Global variables
var $title, $body, $cont;
var pagename;
////// Called when toolbox link clicked
function openList() {
var URL = mw.util.wikiScript('api');
$.ajax({
url: URL,
data: { action:'query', list: 'pageswithprop', pwppropname:'templatedata', pwpprop:'title',
format:'json', rawcontinue: '', pwplimit: 500 },
dataType: "json"
}).done(doneAjax);
}
function openList2(pwpcont) {
var URL = mw.util.wikiScript('api');
$.ajax({
url: URL,
data: { action:'query', list: 'pageswithprop', pwppropname:'templatedata', pwpprop:'title',
format:'json', rawcontinue: '', pwplimit: 500, pwpcontinue: pwpcont },
dataType: "json"
}).done(doneAjax);
}
// Called when raw template code read in
// {"query-continue":{"pageswithprop":{"pwpcontinue":"1995504"}},
// "query":{"pageswithprop":[{"ns":10,"title":"Template:R with possibilities"},
function doneAjax(data) {
pat = /^(.*?)(\/doc|\/sandbox|\/testcases|\/TemplateData)?$/;
var list = data.query.pageswithprop;
//alert("again "+list.length+" "+data.queryContinue+" or "+data['query-continue']);
for(var i=0;i<list.length;++i) {
// titles.push(list[i].title.replace(/\//g,'A#A').replace(/ /g,'B#B').replace(/-/g,'C#C'));
if(
!list[i].title.startsWith("Template:Country data")
&& !list[i].title.startsWith("Template:Lang")
) {
var match=list[i].title.match(pat);
var newroot = match[1];
var tail = match[2] ? match[2].substring(1) : "";
titles.push( {root:newroot,tail:tail});
// titles.push(list[i].title.replace(/ /g,'_').replace(/\//g,'#'));
}
}
if(data['query-continue'] == null) {
finishedAjax();
}
else {
openList2(data['query-continue'].pageswithprop.pwpcontinue);
}
}
function genLine(root,core,subs) {
if(root==="") {return ""}
return "|-\n|[["+root+"]]||"+core+"||"+subs.join(', ')+"\n";
}
function titleCmp(a,b) {
if( a.root > b.root ) { return 1 }
if( a.root < b.root ) { return -1 }
return 0;
}
function finishedAjax() {
titles.sort(titleCmp);
var res="==General Templates==\n\n===A-C===\n\n";
var tableheader= "{| class=\"wikitable\"\n"+
"|-\n"+
"! Root !! Template !! Subpages\n";
res += tableheader;
var oldroot = "";
var subpages = [];
var core = "";
for(var i=0;i<titles.length;++i) {
var newroot = titles[i].root;
var tail = titles[i].tail;
if(newroot!=oldroot) {
res += genLine(oldroot,core,subpages);
if(newroot.substring(0,10) == "Template:D" && oldroot.substring(0,10) == "Template:C") {
res += "|}\n\n===D-Infl===\n\n";
res += tableheader;
}
if(newroot.startsWith("Template:Infobox") && !oldroot.startsWith("Template:Infobox") ) { res += "|}\n\n===Infobox===\n\n";
res += tableheader;
}
if(!newroot.startsWith("Template:Infobox") && oldroot.startsWith("Template:Infobox") ) {
res += "|}\n\n===Inform - N===\n\n";
res += tableheader;
}
if(newroot.substring(0,10) == "Template:O" && oldroot.substring(0,10) == "Template:N") {
res += "|}\n\n===O-Z===\n\n";
res += tableheader;
}
oldroot=newroot;
core="";
subpages = [];
}
if(tail==="")
core = '[['+newroot+']]';
else
subpages.push('[['+newroot+'/'+ tail + '|/'+tail+']]');
}
res += genLine(oldroot,core,subpages);
res += "|}\n";
$cont.fadeIn('slow');
$title.text( messages[lang].title );
$body.html( $('<textarea>')
.attr('id', 'td-sk-code')
.text(res)
);
}
///// Close the dialog
function close() {
$cont.fadeOut('slow', function(){
});
}
////////// Building called after page loads
function buildHTML() {
$body = $('<div>')
.attr('id', 'td-sk-body');
$title = $('<h2>').text( messages[lang].title );
$cont = $('<div>')
.attr('id', 'td-sk-cont')
.append($('<div>')
.attr('id', 'td-sk-dialog')
.append( $title )
.append($('<a>')
.attr({
id: 'td-sk-close',
href: '#',
title: messages[lang].close
})
.click(function(){
close();
return false;
})
.append($('<img>')
.attr({
alt: messages[lang].close,
src: '//upload.wikimedia.org/wikipedia/commons/thumb/8/8d/VisualEditor_-_Icon_-_Close.svg/24px-VisualEditor_-_Icon_-_Close.svg.png'
})
)
)
.append($body)
)
.hide();
$(document.body).append($cont);
}
////// Adds a link in the toolbox
function addPortletLink() {
$(
mw.util.addPortletLink('p-tb', '#', messages['en']['toolbox-label'], 'td-list', messages['en']['toolbox-tooltip'] )
).click(function(){
openList();
return false;
});
}
/////// Actions to do once page loads,
function start() {
//alert("TDList 0.26");
addPortletLink();
buildHTML();
}
////////// START //////////
start();
}
/////// Wrapper code, only run if in user or template namespaces
if( $.inArray( mw.config.get('wgNamespaceNumber'), [2, 4 ] ) !== -1 ) {
mw.loader.load(
'//en.wikipedia.org/w/index.php?title=User:Salix alba/TDSkell.css&action=raw&ctype=text/css&smaxage=21600&maxage=86400',
'text/css' );
mw.loader.using('mediawiki.util', function(){
$(document).ready(TDList);
});
}
You must be logged in to post a comment.