13,398
edits
(Created page with "→Any JavaScript here will be loaded for all users on every page load.: /** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all user...") |
No edit summary |
||
Line 12: | Line 12: | ||
* dependency hasn't arrived yet it'll make sure those are loaded before this. | * dependency hasn't arrived yet it'll make sure those are loaded before this. | ||
*/ | */ | ||
// see [[Wikinews:Commentary pages on news events]]. | |||
// ========================================================================== | |||
// MediaWiki interface button for Comments page based on [[commons:mediawiki:extra-tabs.js]]. | |||
// Originally written by Dbenbenn, Avatar, Duesentrieb and Arnomane | |||
// Modified by bawolff for wikinews. fixed by darklama | |||
// re-written by bawolff in may 2010. | |||
// | |||
// If copying to another wiki, this also needs some css as well. | |||
// Run a background check of api.php to see if the particular page exists, | |||
// so a non-existing comment page can be red, and an existing comment page | |||
// will look like a normal tab. | |||
// This would be better if it could check multiple pages with one query. | |||
var checkCommentaryPageExist = function (pageName, id, query) { | |||
pageName = mw.util.wikiUrlencode( pageName ); | |||
var success = function (x) { | |||
if ( !x || !x.query || !x.query.pages ) { | |||
mw.log( "Error getting redlinks for opinion tab" ); | |||
return; | |||
} | |||
if ( x.query.pages['-1'] ) { | |||
// Means its missing. | |||
var url = mw.config.get( 'wgScriptPath' ) + | |||
'/index.php?action=edit&redlink=1&title=' + pageName + '&' + query; | |||
$( '#' + id + ' a' ).attr( 'href', url ) | |||
$( '#' + id ).addClass( 'new' ); | |||
} | |||
} | |||
$.ajax( | |||
mw.config.get( 'wgScriptPath' ) + '/api.php?action=query&format=json&titles=' + pageName, | |||
).then(success); | |||
} | |||
$( function () { | |||
// Interface strings, if translating, change only these. | |||
var OpinionTabName = 'Opinions'; | |||
var TalkTabName = 'Collaboration'; | |||
var ArticleTabName = 'Article'; | |||
var OpinionTabTooltip = 'Discuss your personal viewpoint on the topic at hand'; | |||
var OpinionNS = 102; | |||
// Extra things to add to edit urls: | |||
var OpinionParams = 'preload=Wikinews:Commentary_pages_on_news_events/body&editintro=Template:Editintro_comments&summary=create'; | |||
// [[Wikinews:Commentary pages on news events/body]] [[Template:Editintro comments]] | |||
// End stuff to translate. | |||
// ------------------- | |||
var title = mw.config.get('wgTitle'); | |||
var skin = mw.config.get('skin'); | |||
if (title === 'Main Page') return; | |||
var portlet = skin === 'vector' ? 'p-namespaces' : 'p-cactions'; | |||
switch(mw.config.get('wgNamespaceNumber')) { | |||
case 1: | |||
case 0: | |||
var targetPage = mw.config.get( 'wgFormattedNamespaces' )[OpinionNS] + ':' + title; | |||
var url = mw.util.getUrl( targetPage ); | |||
var res = mw.util.addPortletLink( | |||
'p-namespaces', | |||
url, | |||
OpinionTabName, | |||
'ca-comments', | |||
OpinionTabTooltip | |||
); | |||
if ( !res ) { | |||
// No p-namespaces portal. Must be monobook then. | |||
var res2 = mw.util.addPortletLink( | |||
'p-cactions', | |||
url, | |||
OpinionTabName, | |||
'ca-comments', | |||
OpinionTabTooltip, | |||
undefined, /* accesskey */ | |||
$('#ca-edit') /* nextnode */ | |||
); | |||
if ( !res2 ) { | |||
mw.log( "Error adding opinions tab" ); | |||
} | |||
} | |||
checkCommentaryPageExist(targetPage, 'ca-comments', OpinionParams); | |||
break; | |||
case 90: /* LQT thread */ | |||
var targetPage = mw.config.get( 'wgTitle' ).replace(/\/.*$/, ''); | |||
var talkTarget = mw.config.get( 'wgFormattedNamespaces' )[1] + ':' + targetPage; | |||
var before = document.getElementById('ca-nstab-thread'); | |||
var talk = mw.util.addPortletLink( | |||
portlet, | |||
mw.util.getUrl( talkTarget ), | |||
TalkTabName, | |||
"ca-main-talk", undefined, undefined, before | |||
); | |||
mw.util.addPortletLink( | |||
portlet, | |||
mw.util.getUrl( targetPage ), | |||
ArticleTabName, | |||
"ca-nstab-main", | |||
undefined, undefined, talk | |||
); | |||
checkCommentaryPageExist(targetPage, 'ca-nstab-main', ''); | |||
checkCommentaryPageExist(talkTarget, 'ca-main-talk', ''); | |||
break; | |||
case OpinionNS: | |||
var targetPage = mw.config.get( 'wgTitle' ); | |||
var talkTarget = mw.config.get( 'wgFormattedNamespaces' )[1] + ':' + targetPage; | |||
var before = document.getElementById('ca-nstab-' + | |||
mw.config.get( 'wgFormattedNamespaces' )[OpinionNS].toLowerCase() ); | |||
var talk = mw.util.addPortletLink( | |||
portlet, | |||
mw.util.getUrl( talkTarget ), | |||
TalkTabName, | |||
"ca-main-talk", undefined, undefined, before | |||
); | |||
mw.util.addPortletLink( | |||
portlet, | |||
mw.util.getUrl( targetPage ), | |||
ArticleTabName, | |||
"ca-nstab-main", | |||
undefined, undefined, talk | |||
); | |||
checkCommentaryPageExist(targetPage, 'ca-nstab-main', ''); | |||
checkCommentaryPageExist(talkTarget, 'ca-main-talk', ''); | |||
break; | |||
/* do stuff */ | |||
} | |||
}); | |||
/* global mw, $ */ | /* global mw, $ */ |
edits