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);
//
}