User:Equazcion/TeahouseRespond.js

importStylesheet('User:Equazcion/TeahouseRespond.css');

if ( mw.config.get('wgPageName') == 'Wikipedia:Teahouse/Questions' ) {

//

(function($,mw) {

$(function() {

mw.loader.using( ['jquery.ui', 'mediawiki.api'], function() {

function addResponse( section, headline, text ) {

var wikitext = '\n\n:' + text;

$('.wp-teahouse-respond-form').hide();

$('.wp-teahouse-respond')

.find('.selflink')

.empty()

.addClass('mw-ajax-loader');

var api = new mw.Api();

api.get( {

'action' : 'query',

'titles' : 'Wikipedia:Teahouse/Questions',

'prop' : 'revisions|info',

'intoken' : 'edit',

'rvprop' : 'content',

'indexpageids' : 1

}, {

'ok' : function(result) {

result = result.query;

var page = result.pages[result.pageids[0]];

api.post(

{

'action' : 'edit',

'section' : section,

'title' : 'Wikipedia:Teahouse/Questions',

'appendtext' : wikitext,

'summary' : '/* ' + headline + ' */' + ' response',

'token' : page.edittoken

},

{

'ok' : function() {window.location.reload();}

}

);

}

});

}

var headers = $('h2:gt(0)').find('.editsection');

var k;

var header;

headers.each(function(k) {

$(this).prepend("«   Respond to this discussion     ");

var formCode = '

You can type your response below.

On Wikipedia, you should sign all of your posts by ending them with four tildes (~~~~)Add my response

';

var rLink = $('#wp-teahouse-respond-' + k);

rLink.after(formCode);

var rForm = $('#wp-teahouse-respond-form-' + k);

var rText = $('#wp-th-respond-text-' + k);

var rButton = $('#wp-th-respond-' + k);

var headline = $(this).parents('h2').find('span.mw-headline').html();

// Prevent flash

rForm.css( 'left', '-10000px' );

// Set up position

setTimeout( function() {

var pos = rLink.position();

var hCenter = ( $(window).width() / 2 );

rForm.css( 'top', pos.top + 20 + 'px' );

rForm.css( 'left', (hCenter - (rForm.width()) /2) + 'px' );

rForm.hide();

}, 0);

rButton.button({disabled : true}).click( function(e) {

e.preventDefault();

var text = rText.val();

addResponse( k+1, headline, text );

}).end()

rText.keypress( function(e) {

var $textbox = $(this);

setTimeout( function() {

if ( (/~~~~\s*$/).test($textbox.val()) ) {

rButton.button( 'option','disabled', false );

} else {

rButton.button( 'option','disabled', true );

}

}, 0 );

} );

rLink.click(function(e) {

rForm.toggle('fast');

e.cancelBubble = true; // for IE

if (e.stopPropagation) {

e.stopPropagation();

e.preventDefault();

}

});

$(document).click( function(e) {

var $target = $(e.target);

if ( ! $target.is('.wp-teahouse-respond-form *') &&

! $target.is('.wp-teahouse-respond *')

) {

$('.wp-teahouse-respond-form').fadeOut();

}

} );

$(document).keydown( function(e) {

if ( e.keyCode == 27 ) {// ESC

rForm.fadeOut();

}

}); //after loop

});

});

} );

} )(jQuery,mediaWiki);

//

}