பயனர்:Shrikarsan/WhatLeavesHere.js
குறிப்பு - சேமித்த பின்னர், நீங்கள் செய்த மாற்றங்களைக் காண்பதற்கு உங்கள் உலவியின் இடைமாற்று அகற்றப்பட வேண்டும்.
- மொஸில்லா பயர்பாக்ஸ் / சபாரி: Shift+Reload, அல்லது Ctrl-F5 அல்லது Ctrl-R (⌘-R Mac ல்)
- கூகிள் குரோம் Ctrl-Shift-R அழுத்தவும். (⌘-Shift-R Mac ல்) ;
- இண்டர்நெட் எக்ஸ்ப்ளோரர்: Ctrl-Refresh அல்லது Ctrl-F5 ஐ அழுத்தவும்.
- ஒபேரா: Tools → Preferences இல் இடைமாற்றை அகற்றவும்;
/**
* WhatLeavesHere
*/
/*global mw*/
( function () {
"use strict";
var namespace, target, limit,
initiated = false,
conf = mw.config.get([
'wgCanonicalNamespace',
'wgCanonicalSpecialPageName',
'wgFormattedNamespaces',
'wgPageName',
'wgSiteName',
'wgTitle',
'wgUserLanguage'
]);
// Explode with limit
function krExplode( delimiter, string, limit ) {
var splitted, partA, partB;
if ( !limit ) {
return string.split( delimiter );
} else {
// support for limit argument
splitted = string.split( delimiter );
partA = splitted.splice( 0, limit - 1 );
partB = splitted.join( delimiter );
partA.push( partB );
return partA;
}
}
// Get interface message
function krGetMsg( key ) {
if ( window.krMsgs[key] ) {
return window.krMsgs[key];
} else {
return $.ucFirst( key );
}
}
/**
* Main application
*/
function init() {
var optionHtml;
// Prevent loading twice
if ( initiated ) {
return;
}
initiated = true;
// Only initialise if we're on [[Special:WhatLeavesHere]]
// Can't use wgCanonicalSpecialPageName, since this is a non-existing special page
if ( conf.wgCanonicalNamespace === 'Special' && conf.wgTitle === 'WhatLeavesHere' ) {
// Initialise page
document.title = krGetMsg('இப்பக்கத்திலிருந்து வெளியேறுபவை') + ' - ' + conf.wgSiteName;
optionHtml = '';
$.each( conf.wgFormattedNamespaces, function ( nsId, nsName ){
if ( Number( nsId ) >= 0 ) {
optionHtml += mw.html.element(
'option', {
value: nsId
},
nsId === '0' ? '(முதன்மை)' : nsName
);
}
} );
$('#bodyContent').html(
'<div id="contentSub"></div><form action="/wiki/Special:WhatLeavesHere" method="get">' +
'<fieldset>' +
'<legend>' + krGetMsg('இப்பக்கத்திலிருந்து வெளியேறுபவை') + '</legend>' +
'<label for="mw-whatleaveshere-target">' + krGetMsg('பக்கம்') + ':</label> <input name="target" size="40" value="" id="mw-whatleaveshere-target">' +
' <label for="namespace">' + krGetMsg('பெயர்வெளி') + ':</label> ' +
'<select id="mw-whatleaveshere-namespace" name="namespace" class="namespaceselector mw-namespace-selector">' +
'<option value="" selected="selected">அனைத்து</option>' + optionHtml +
'</select>' +
' <!-- <label for="limit">' + krGetMsg('limit') + ':</label> ' +
'<select id="mw-whatleaveshere-limit" name="limit" class="limitselector mw-limit-selector">' +
'<option value="20">20</option><option value="50" selected="selected">50</option><option value="100">100</option><option value="250">250</option><option value="500">500</option>' +
'</select> -->' +
' <input type="submit" value="' + krGetMsg('செல்') + '">' +
'</fieldset>' +
'</form>'
);
if ( mw.util.getParamValue( 'target' ) === null ) {
$('#firstHeading').text( krGetMsg( 'whatleaveshere' ) );
} else {
// is htmlescaped already apparantly
target = mw.util.getParamValue('target').replace(/_/g, ' ').replace(/\+/g, ' ');
namespace = mw.util.getParamValue('namespace');
limit = mw.util.getParamValue('limit');
$('#firstHeading').text(
krGetMsg('whatleaveshere-fromtitle').replace( '$1', '"' + $.trim( target + '"' ) )
);
$('#contentSub').prepend('← <a href="' + mw.util.wikiScript() + '?title=' +
mw.html.escape(encodeURIComponent(target)) + '&redirect=no" title="' +
mw.html.escape(target) + '">' + mw.html.escape(target) + '</a>'
);
$('#mw-whatleaveshere-target').val( $.trim( target ) );
if ( namespace ) {
$('#mw-whatleaveshere-namespace').val( String( namespace ) );
namespace = '&tlnamespace=' + namespace + '&plnamespace=' + namespace;
} else {
namespace = '';
}
if ( limit ) {
$('#mw-whatleaveshere-limit').val( String( limit ) );
}
$.ajax({
type: 'GET',
url: mw.util.wikiScript( 'api' ),
data: 'format=xml&action=query&titles=' + target + '&prop=templates|categories|extlinks|images|links' + namespace + '&tllimit=500&cllimit=500&ellimit=500&imlimit=500&pllimit=5000',
timeout: 1000,
dataType: 'xml'
}).done( function ( data ) {
var aTitle, bTitle, $data_page, page_is_new, $data,
title, suffix, leavelink, $list_link, $list_external, $list_cats;
// Dril down to the info of this page, then to all groups (*: categories, images, links etc.)
$data_page = $(data).find( 'pages > page[title="' + target + '"]' );
page_is_new = $data_page.is( '[missing=""]' );
if ( page_is_new ) {
$('#contentSub > a').eq(0).addClass( 'new' );
page_is_new = $data_page.is( '[missing=""]' ) ? ' class="new"' : '';
}
// Get all the children then sort them
$data = $data_page.find(' > *').children().sort(function (a, b) {
// sort by fullpagename
//return a.title > b.title ? 1 : -1;
// sort by title, not by fullpagename (minus namespace)
if ( a.getAttribute('ns') === null ) {
return 0;
} else if (a.getAttribute('ns') == '0') {
aTitle = a.getAttribute('title');
} else {
aTitle = krExplode(':', a.getAttribute('title'), 2)[1];
}
if (b.getAttribute('ns') === null ) {
return 0;
} else if (b.getAttribute('ns') == '0') {
bTitle = b.getAttribute('title');
} else {
bTitle = krExplode(':', b.getAttribute('title'), 2)[1];
}
return aTitle > bTitle ? 1 : -1;
});
if ( $data.length ) {
$('#bodyContent').append('<p>' + krGetMsg('whatleaveshere-fromtext').replace('$1', '<b><a href="' + mw.html.escape(mw.util.getUrl(target)) + '"' + page_is_new + '>' + target + '</a></b>') + '</p><hr /><div class="toccolours toc" style="top:20em;right:1em;position:fixed"><h2>உள்ளடக்கங்கள்</h2><ul><li><a href="#top">இணைப்புக்கள்</a></li><li><a href="#mw-whatleaveshere-head-external">வெளி இணைப்புக்கள்</a></li><li><a href="#mw-whatleaveshere-head-cats">பகுப்புக்கள்</a></li></ul></div><ul id="mw-whatleaveshere-list-link"></ul><h3 id="mw-whatleaveshere-head-external">வெளி இணைப்புக்கள்</h3><ul id="mw-whatleaveshere-list-external"></ul><h3 id="mw-whatleaveshere-head-cats">பகுப்புக்கள்</h3><ul id="mw-whatleaveshere-list-cats"></ul>');
$list_link = $('#mw-whatleaveshere-list-link');
$list_external = $('#mw-whatleaveshere-list-external');
$list_cats = $('#mw-whatleaveshere-list-cats');
$data.each(function (i) {
if ( $(this).is('el') ) {
title = $(this).text();
var extlinksearch = '(<a href="' + mw.util.getUrl('Special:LinkSearch') + '?target=' + mw.html.escape(mw.util.wikiUrlencode(title)) + '">← ' + krGetMsg('இணைப்பைத் தேடுக').toLowerCase() + '</a>)';
$list_external.append('<li><a class="external" href="' + mw.html.escape(title) + '">' + mw.html.escape(title) + '</a> ' + extlinksearch + '</li>');
} else if ( $(this).is('cl') ) {
title = $(this).attr('title');
leavelink = '(<a href="' + mw.util.getUrl('Special:WhatLeavesHere') + '?target=' + mw.html.escape(mw.util.wikiUrlencode(title)) + '">← வெளியேறுபவை</a>)';
$list_cats.append('<li><a href="' + mw.util.getUrl(title) + '">' + title + '</a> ' + leavelink + '</li>');
return true;
} else {
title = $(this).attr('title');
leavelink = '(<a href="' + mw.util.getUrl('Special:WhatLeavesHere') + '?target=' + mw.html.escape(mw.util.wikiUrlencode(title)) + '">← வெளியேறுபவை</a>)';
if ( $(this).is('tl') ) {
suffix = ' (' + krGetMsg('உள்சேர்ப்பு') + ') ' + leavelink;
} else if ( $(this).is('im') ) {
suffix = ' (' + krGetMsg('படிம இணைப்பு') + ') ' + leavelink;
} else { // is <pl>
suffix = ' ' + leavelink;
}
$list_link.append('<li><a href="' + mw.util.getUrl(title) + '">' + title + '</a>' + suffix + '</li>');
}
});
} else {
$('#bodyContent').append('<p>' + krGetMsg('whatleaveshere-noresults').replace('$1', '<b><a href="' + mw.html.escape(mw.util.getUrl(target)) + '"' + page_is_new + '>' + target + '</a></b>') + '</p>');
}
});
}
} else if ( conf.wgCanonicalNamespace !== 'Special' ) {
mw.util.addPortletLink(
'p-tb',
mw.util.getUrl('Special:WhatLeavesHere') + '?target=' + conf.wgPageName,
krGetMsg('whatleaveshere'),
't-whatleaveshere',
krGetMsg('whatleaveshere-tooltip'),
false,
'#t-whatlinkshere'
);
} else if ( conf.wgCanonicalSpecialPageName === 'Whatlinkshere' ) {
$('#bodyContent form fieldset legend')
.append(' / <a href="' + mw.util.getUrl('Special:WhatLeavesHere') + '?target=' +
mw.util.wikiUrlencode($('#mw-whatlinkshere-target').val()) + '">' + krGetMsg('whatleaveshere-linktext') + '</a>'
);
} else if ( conf.wgCanonicalSpecialPageName === 'Specialpages' ) {
$('#mw-specialpagesgroup-pagetools').next().find('td ul').eq(1)
.prepend('<li><a href="' + mw.util.getUrl('Special:WhatLeavesHere') + '">' + krGetMsg('இப்பக்கத்திலிருந்து வெளியேறுபவை') + '</a></li>');
}
}
// Make sure messages are loaded and init the tool
if ( !window.krMsgs ) {
$.getScript('//ta.wikipedia.org/w/index.php?title=பயனர்:Shrikarsan/Msgs.js&action=raw&ctype=text/javascript').done(init);
} else {
init();
}
}() );