// If TwinkleConfig aint exist.
if( typeof( TwinkleConfig ) == 'undefined' ) {
TwinkleConfig = {};
}
/**
TwinkleConfig.showSharedIPNotice may take arguments:
true: to show shared ip notice if an IP address
false: to not print the notice
*/
if( typeof( TwinkleConfig.showSharedIPNotice ) == 'undefined' ) {
TwinkleConfig.showSharedIPNotice = true;
}
/**
TwinkleConfig.markWarningsAsMinor (boolean)
Defines if a warning should be marked as minor, if false, default is applied as per preference.
*/
if( typeof( TwinkleConfig.markWarningsAsMinor ) == 'undefined' ) {
TwinkleConfig.markWarningsAsMinor = true;
}
/**
TwinkleConfig.summaryAd (string)
If ad should be added or not to summary, default [[WP:TWINKLE|TWINKLE]]
*/
if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) {
TwinkleConfig.summaryAd = " using [[WP:TWINKLE|TW]]";
}
/* sign = add signature after the tag
default: true
false when tag matches /(^w-|welcome)/
*/
function welcometagadd( tag , summary, sign ) {
var article;
if( QueryString.exists( 'vanarticle' ) ) {
article = decodeURI(QueryString.get( 'vanarticle' )).replace( /^(Image|Category):/i, ':$1:' );
} else {
article = prompt('Which article?').replace( /^(Image|Category):/i, ':$1:' );
}
var welcomeTagRe = new RegExp( "(^w-|welcome)" );
var isWelcomeTag = welcomeTagRe.exec(tag);
if (typeof(sign) == 'undefined')
sign = isWelcomeTag ? false : true;
var date = new Date();
var notice = "";
var header = "";
var headerRe = new RegExp( "^===\\s*" + date.getUTCMonthName() + "\\s+" + date.getUTCFullYear() + "\\s*===", 'm' );
var textbox = document.getElementById( 'wpTextbox1' );
if ( textbox.value.length > 0 ) {
textbox.value += '\n\n';
}
if( !isWelcomeTag && !headerRe.exec( textbox.value ) ) {
header += "=== " + date.getUTCMonthName() + " " + date.getUTCFullYear() + " ===\n";
}
notice += header;
// do not emit article name into first parameter of welcome templates
// as it is usually expecting a different value.
notice += "{{subst:" + tag + ( article && !isWelcomeTag ? '|' + article + '|subst=subst:' : '' ) + "}}"; // subst=subst: hack only on article given as per MW bug :(
// dont add signature for welcome messages.
if ( sign ) notice += " ~~" + "~~";
if ( TwinkleConfig.showSharedIPNotice && isIPAddress( wgTitle ) ) {
switch( QueryString.get( 'type' ) ) {
case 'vand':
notice += "\n:''If this is a shared [[IP address]], and you didn't make any [[Wikipedia:vandalism|unconstructive]] edits, consider [[Wikipedia:Why create an account?|creating an account]] for yourself so you can avoid further irrelevant warnings.'' ";
break;
default:
notice += "\n:''If this is a shared [[IP address]], and you didn't make the edit, consider [[Wikipedia:Why create an account?|creating an account]] for yourself so you can avoid further irrelevant notices.'' ";
break;
}
}
// BEGIN WikiEd -> wpTextbox1
if (typeof(wikEdUseWikEd) != 'undefined') {
if (wikEdUseWikEd == true) {
WikEdUpdateTextarea();
}
}
// END
textbox.value += notice;
// BEGIN wpTextbox1 -> WikiEd
if (typeof(wikEdUseWikEd) != 'undefined') {
if (wikEdUseWikEd == true) {
WikEdUpdateFrame();
}
}
// END
document.getElementById( 'wpSummary' ).value = summary + ( article ? ' on [[' + article + ']]' : '' ) + '.' + TwinkleConfig.summaryAd;
if( TwinkleConfig.markWarningsAsMinor ) {
document.getElementById( 'wpMinoredit' ).checked = true;
}
}
//Quick welcome tabs
function add_welcome_tabs()
{
if ( wgNamespaceNumber == 3 && ( QueryString.equals( 'action', 'edit' ) || QueryString.equals( 'action', 'submit' ) ) ) {
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
var editsummary = 'Welcome. Thanks for the contribution';
if ( isIPAddress( wgTitle ) ) {
addPortletLink('p-cactions', 'javascript:welcometagadd("welcomeip", "'+editsummary+'", true)','Welcome IP', '');
}
else {
addlimenu(tabs, '[0]', 'welcomenotefunc');
addPortletLink('welcomenotefunc', 'javascript:welcometagadd("w-basic", "'+editsummary+'")', 'Basic', '');
addPortletLink('welcomenotefunc', 'javascript:welcometagadd("w-link", "'+editsummary+'")', 'Link', '');
addPortletLink('welcomenotefunc', 'javascript:welcometagadd("w-short", "'+editsummary+'")', 'Short', '');
addPortletLink('welcomenotefunc', 'javascript:welcometagadd("welcome", "'+editsummary+'")', 'Welcome', '');
addPortletLink('welcomenotefunc', 'javascript:welcometagadd("welcomeg", "'+editsummary+'")', 'Welcome G', '');
}
}
}
$(addWelcomeButtons);
$(add_welcome_tabs);
function twCreateSpanTag ( color, content ) {
var span = document.createElement( 'span' );
span.style.color = color;
span.appendChild( document.createTextNode( content ) );
return span;
}
function addWelcomeButtons() {
var otitle = getElementsByClassName( document.getElementById('bodyContent'), 'td' , 'diff-otitle' )[0];
var ntitle = getElementsByClassName( document.getElementById('bodyContent'), 'td' , 'diff-ntitle' )[0];
if( !ntitle ) {
// Nothing to see here, move along...
return;
}
if( !otitle.getElementsByTagName('a')[0] ) {
// no previous revision available; new page
return;
}
var userAnchorOffset = 3;
var twNewDiffAnchors = ntitle.getElementsByTagName('a');
if ( /revertPage/.test(twNewDiffAnchors[0].href) ) {
userAnchorOffset += 3;
}
var twDiffUserAnchor = twNewDiffAnchors[userAnchorOffset];
var twDiffUserTalkAnchor = twNewDiffAnchors[userAnchorOffset + 1];
var twDiffUserContribsAnchor = twDiffUserTalkAnchor.nextSibling.nextSibling;
twDiffUser = twDiffUserAnchor.firstChild.nodeValue.replace("'", "\\'");
if (twDiffUserTalkAnchor.className != 'new') {
// not a new user
return;
}
var welcomeNode = document.createElement('strong');
var welcomeLink = document.createElement('a');
welcomeLink.href = "javascript:welcomeUser('" + twDiffUser + "')";
welcomeLink.appendChild( twCreateSpanTag( 'Black', '[' ) );
welcomeLink.appendChild( twCreateSpanTag( 'Green', 'Welcome' ) );
welcomeLink.appendChild( twCreateSpanTag( 'Black', ']' ) );
welcomeNode.appendChild(welcomeLink);
if ( isIPAddress( twDiffUser ) ) {
ntitle.insertBefore(welcomeNode, twDiffUserTalkAnchor.nextSibling.nextSibling);
}
else {
ntitle.insertBefore(welcomeNode, twDiffUserContribsAnchor.nextSibling.nextSibling);
}
}
function welcomeUser( pUser ) {
// TW scripts expect a query argument of "vanarticle"
// so we set that with the article name of the good rev.
var query = {
'title': 'User talk:' + pUser,
'action': 'edit',
'vanarticle': wgPageName.replace(/_/g, ' ')
};
Status.debug( 'query:' + query.toSource() );
switch( TwinkleConfig.userTalkPageMode ) {
case 'tab':
window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), '_tab' );
break;
case 'blank':
window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), '_blank', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' );
break;
case 'window':
default :
window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), 'twinklewarnwindow', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' );
break;
}
}