MediaWiki:Gadget-teahouse/content.js
Utseende
OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.
- Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
- Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
- Edge Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5.
- Opera: Tryck Ctrl-F5.
/* _____________________________________________________________________________
* | |
* | === VARNING: GLOBAL GADGETFIL === |
* | Förändringar på den här sidan påverkar många användare. |
* | Var vänlig och diskutera ändringar på [[WP:WF]] innan du ändrar. |
* |_____________________________________________________________________________|
*
* "Ställ en fråga"-funktion, som används på Fikarummet, se [[Wikipedia:Fikarummet/Frågor]]
*/
//<nowiki>
(function($,mw) {
mw.teahouse = {
'questionform' : ' \
<div class="wp-teahouse-question-form"> \
<p>Skriv din fråga i rutan nedan.</p>\
<p><label for="wp-th-question-title">Kort beskrivning av din fråga: </label> \
<input id="wp-th-question-title" type="text" size="90" /></p>\
<textarea rows="10" cols="20" id="wp-th-question-text"></textarea> \
<p>\
<span class="wp-th-sign-hint">På Wikipedia signerar man alla inlägg utanför artiklarna genom att skriva fyra "tilde"-tecken (så här: ~~~~) sist. Tildetecknen är wiki-kod som automatiskt blir ditt namn och aktuellt datum och klockslag, när du skickar iväg texten.</span> \
<a href="#" id="wp-th-question-ask">Ställ min fråga</a> \
</p> \
<p>\
<span class="wp-th-sign-req"><small>(Observera att det här frågeformuläret inte fungerar utan dem.)</small></span>\
</p> \
</div> \
',
addQuestion : function( title, text ) {
var wikitext = '==' + title + "==\n" + text + "\n";
$('.wp-teahouse-question-form').hide();
$('.wp-teahouse-ask')
.find('.selflink')
.empty()
.addClass('mw-ajax-loader');
var api = new mw.Api();
api.get( {
'action' : 'query',
'titles' : 'Wikipedia:Fikarummet/Frågor',
'prop' : 'revisions|info',
'intoken' : 'edit',
'rvprop' : 'content',
'indexpageids' : 1
}).done(
function(result) {
result = result.query;
var page = result.pages[result.pageids[0]];
var oldText = page.revisions[0]['*'];
var newText = oldText.replace( /^==/m, wikitext+"==" );
api.post(
{
'action' : 'edit',
'title' : 'Wikipedia:Fikarummet/Frågor',
'text' : newText,
'summary' : '/'+'* '+title+' *'+'/ nytt avsnitt',
'token' : page.edittoken
}).done(
function() {location.reload();}
);
});
}
};
$(function() {
mw.loader.using( ['jquery.ui', 'mediawiki.api'], function() {
if ( !$('.wp-teahouse-ask').length ) {
return;
}
var $form = $(mw.teahouse.questionform);
$('.wp-teahouse-ask').after($form);
// Prevent flash
$form.css( 'left', '-10000px' );
// Set up position
setTimeout( function() {
var $trigger = $('.wp-teahouse-ask');
var pos = $trigger.position();
var hCenter = ( $trigger.parent().width() / 2 );
$form.css( 'top', pos.top + $trigger.height() + 'px' );
$form.css( 'left', '0px' );
$form.hide();
}, 0);
$form.find('#wp-th-question-ask')
.button({
disabled : true
})
.click( function(e) {
e.preventDefault();
var title = $form.find('#wp-th-question-title').val();
var text = $form.find('#wp-th-question-text').val();
if ( title && /~~~~\s*$/.test(text) ) {
mw.teahouse.addQuestion( title, text );
}
})
.end()
.find('#wp-th-question-text')
.keypress( function(e) {
var $textbox = $(this);
setTimeout( function() {
if ( (/~~~~\s*$/).test($textbox.val()) ) {
$form.find('#wp-th-question-ask')
.button( 'option','disabled', false );
} else {
$form.find('#wp-th-question-ask')
.button( 'option','disabled', true );
}
}, 0 );
} );
$('.wp-teahouse-ask').click(function(e) {
$form.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-question-form *') &&
! $target.is('.wp-teahouse-ask *')
) {
$('.wp-teahouse-question-form').fadeOut();
}
} );
$(document).keydown( function(e) {
if ( e.keyCode == 27 ) {// ESC
$('.wp-teahouse-question-form').fadeOut();
}
});
} );
} );
} )(jQuery,mediaWiki);
if ( mw.config.get("wgPageName") == 'Wikipedia:Fikarummet/Frågor' ) {
(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:Fikarummet/Frågor',
'prop' : 'revisions|info',
'intoken' : 'edit',
'rvprop' : 'content',
'indexpageids' : 1
}).done(
function(result) {
result = result.query;
var page = result.pages[result.pageids[0]];
api.post(
{
'action' : 'edit',
'section' : section,
'title' : 'Wikipedia:Fikarummet/Frågor',
'appendtext' : wikitext,
'summary' : '/* ' + headline + ' */' + ' svar',
'token' : page.edittoken
}).done (
function() {location.reload();}
);
});
}
var headers = $('h2 .mw-editsection');
var k;
var header;
headers.each(function(k) {
$(this).prepend("<span style='font-size: 2em;color:#3fb6ff;text-shadow: #444 0.1em 0.1em 0.1em;'>«</span> <a style='font-weight:bold;cursor:pointer; color:#7d7b75;' href='#' class='wp-teahouse-respond' id='wp-teahouse-respond-" + k + "'>Delta i den här diskussionen</a> ");
var formCode = '<div class="wp-teahouse-respond-form" id="wp-teahouse-respond-form-' + k + '"><p>Du kan skriva ditt svar nedan.</p><textarea rows="10" cols="20" id="wp-th-respond-text-' + k + '"></textarea><p><span class="wp-th-sign-hint">På Wikipedia signerar man alla inlägg utanför artiklarna genom att skriva fyra "tilde"-tecken (så här: ~~~~) sist. Tildetecknen är wiki-kod som automatiskt blir ditt namn och aktuellt datum och klockslag, när du skickar iväg texten.</span><a href="#" class="wp-th-respond" id="wp-th-respond-' + k + '">Skicka mitt svar</a></p></div>';
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();
headline = headline.replace(/<span class="mw-headline-number">[\d]*<\/span> /, '');
// Prevent flash
rForm.css( 'left', '-10000px' );
// Set up position
setTimeout( function() {
var pos = rLink.position();
rForm.css( 'top', pos.top + 20 + 'px' );
rForm.css( 'left', '0px' );
rForm.css( 'white-space', 'normal' );
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);
}
//</nowiki>