Widget:Neue Frage
Aus Stupidedia, der sinnfreien Enzyklopädie!
<div id="wNewQuestion">
<!-- Kasten mit Link -->
<div id="wNewQuestion-linkBox">
<a id="wNewQuestion-newLink" href="/stupi?title=Stupidedia:Hilft!/Neue_Frage&action=edit&summary=%5B%5BStupidedia%3AHilft!%7CNeue%20Frage%5D%5D&preload=Stupidedia:Hilft!/Vorlage">>>> Neue Frage stellen <<<</a>
</div>
<!-- Formular -->
<form id="wNewQuestion-form" action="javascript:rein_damit();">
<table id="wNewQuestion-table">
<tr>
<td colspan="2">In das große Textfeld kannst du jetzt deine Frage oder dein Problem in beliebiger Ausführlichkeit schreiben. In das kleine Textfeld weiter unten kommt ein zusammenfassender Fragesatz. Dieser darf maximal 255 Zeichen lang sein und folgende Sonderzeichen nicht enthalten: <code>{ } [ ] | < > #</code></td>
</tr>
<tr>
<td colspan="2">Unwichtige Zusatzinfo für Nerds: Die Zusammenfassung ist keine Bearbeitungszusammenfassung, sondern der Titel der Seite im Fragennamensraum.</td>
</tr>
<tr>
<td colspan="2">
<textarea id="wNewQuestion-text" name="text" rows="5"></textarea></td>
</tr>
<tr>
<td id="wNewQuestion-summaryLabelCell"><label for="wNewQuestion-summary">Zusammenfassung der Frage:</label></td>
<td><input id="wNewQuestion-summary" type="text" name="title" maxlength="255" /></td>
</tr>
<tr id="wNewQuestion-watchRow">
<td colspan="2">
<input id="wNewQuestion-watch" type="checkbox" name="watch" value="true" />
<label for="wNewQuestion-watch">Frage auf die <a href="/stupi/Spezial:Beobachtungsliste" title="Spezial:Beobachtungsliste" target="_blank">Beobachtungsliste</a> setzen</label>
</td>
</tr>
<tr id="wNewQuestion-captchaHeader">
<td colspan="2"></td>
</tr>
<tr id="wNewQuestion-captchaBody">
<td><label for="wNewQuestion-captchaText">Antwort:</label></td>
<td><input id="wNewQuestion-captchaText" type="text" name="captchatext" /></td>
</tr>
<tr>
<td colspan="2">
<input id="wpSubmit" type="submit" value="Absenden" />
<input id="wpPreview" type="submit" value="Vorschau anzeigen" />
<input type="reset" value="Zurücksetzen" />
<input type="button" value="Schließen" />
</td>
</tr>
<tr id="wNewQuestion-message">
<td colspan="2"></td>
</tr>
</table>
<input id="wNewQuestion-captchaId" type="hidden" name="captchaid" value="" />
</form>
</div>
<style type="text/css">
#wNewQuestion-linkBox {
text-align: center;
}
#wNewQuestion-newLink {
font-size: 20px;
font-weight: bold;
}
#wNewQuestion-form,
#wNewQuestion-captchaHeader,
#wNewQuestion-captchaBody {
display: none;
}
#wNewQuestion-table,
#wNewQuestion-table input[type="text"] {
width: 100%;
}
#wNewQuestion-table td {
padding: 0px;
}
#wNewQuestion-summaryLabelCell {
width: 180px;
}
#wNewQuestion-message td {
font-weight: bold;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
function enableForm() {
$('#wNewQuestion-form input[type="submit"]').prop('disabled', false);
}
function disableForm() {
$('#wNewQuestion-form input[type="submit"]').prop('disabled', true);
}
function displayMessage(text, color) {
var message = $('#wNewQuestion-message td');
if (!text) {
message.slideUp('fast');
return;
}
// Text unfett machen, wenn color === null
if (color === null) {
message.css('font-weight', 'normal');
}
else {
message.css('font-weight', '');
}
// Farbe nullen, wenn nicht angegeben
if (!color) {
color = '';
}
message.css('color', color).html(text).slideDown('fast');
}
function displayError(error) {
var code = error.code;
var info = error.info;
switch (code) {
// Benutzer wurde gesperrt
case 'blocked':
// Sperrinfo abfragen
api.request({
action: 'query',
meta: 'userinfo',
uiprop: 'blockinfo'
}, function(data) {
var blocker = data.query.userinfo.blockedby;
var reason = data.query.userinfo.blockreason || 'keine Begründung angegeben';
// Sperrtext holen
api.request({
action: 'query',
meta: 'allmessages',
ammessages: 'blockedtext',
amargs: blocker + '|' + reason.replace(/\|/g, '{{!}}')
}, function(data) {
// Sperrtext parsen
api.request({
action: 'parse',
text: data.query.allmessages[0]['*']
}, function(data) {
displayMessage(data.parse.text['*'], null);
});
});
});
break;
// Automatisch gesperrt
case 'autoblocked':
displayMessage('Offensichtlich wurdest du durch einen Mechanismus automatisch gesperrt. Die Software ist manchmal sehr unfreundlich. Du kannst aber immer noch im <a href="http://forum.stupidedia.org">Forum</a> um Entsperrung betteln.', '#FF0000');
break;
// Frage existiert schon
case 'articleexists':
displayMessage('Eine Frage mit dieser Zusammenfassung wurde schon gestellt. Ändere die Zusammenfassung, dann müsste es gehen.', '#FF0000');
enableForm();
break;
// Frage ist geschützt
case 'protectedtitle':
displayMessage('Eine Frage mit dieser Zusammenfassung kann nicht gestellt werden, da der zugehörige Seitentitel gesperrt wurde.', '#FF0000');
enableForm();
break;
// MBF hat zugeschlagen
case 'hookaborted':
displayMessage('Eine Software-Erweiterung, vermutlich der Missbrauchsfilter, hat deine Frage angefangen. Allerdings nicht beantwortet, denn dafür ist er zu doof. Kannste nix machen, formulier die Frage um, dann geht es vielleicht.', '#FF0000');
enableForm();
break;
// Ungültiger Titel
case 'invalidtitle':
displayMessage('Diese Zusammenfassung ist als Seitentitel ungültig, daher kann die Frage nicht gestellt werden. Ändere sie am besten und nimm alle eventuellen Sonderzeichen außer Satzzeichen raus.', '#FF0000');
enableForm();
break;
// case 'badtoken':
api.request({
action: 'query',
prop: 'info',
titles: 'Hauptseite',
intoken: 'edit'
}, function(data) {
global.editToken = api.makeArray(data.query.pages)[0].edittoken;
displayMessage('Es gab eine unbedeutende Komplikation, das Bearbeitungstoken wurde nicht akzeptiert. Klick noch mal auf <i>Speichern</i>, dann müsste es gehen.', '#FF0000');
enableForm();
});
break;
// Standard
default:
displayMessage('Ein Fehler ist aufgetreten. Die API meldet:<br />' + code + ': ' + info + '<br />Bitte leite diesen Fehler an einen <a href="/stupi/Spezial:Benutzer/sysop" title="Spezial:Benutzer/sysop">Diktator</a> weiter.', '#FF0000');
break;
}
}
$('#wNewQuestion-newLink, #wNewQuestion-form input[type="button"]').attr('href', null).click(function() {
$('#wNewQuestion-linkBox, #wNewQuestion-form').slideToggle('fast');
$('#wNewQuestion-preview').remove();
});
if (mw.user.isAnon && mw.user.isAnon()) {
$('#wNewQuestion-watchRow').hide();
}
$('#wNewQuestion-form').submit(function () {
return false;
});
$('#wpSubmit').click(function() {
var form = $(this).parents('#wNewQuestion-form');
var params = api.mergeParams(form.serializeArray());
var title = $.trim(params.title).replace(/^Frage:\s*/i, '');
var text = $.trim(params.text);
var watch = params.watch;
var captchaId = params.captchaid;
var captchaText = params.captchatext;
if (text === '') {
displayMessage('Ein etwas ausführlicherer Text wäre schon nicht schlecht.', '#FF0000');
return;
}
if (title === '') {
displayMessage('Eine Zusammenfassung ist aus technischen Gründen erforderlich.', '#FF0000');
return;
}
text += '\n\n: ' + $.trim(global.signature) + '\n\n== Antworten ==';
var obj = {
action: 'edit',
title: 'Frage:' + title,
text: text,
createonly: true,
recreate: true,
summary: '[[Stupidedia:Hilft!|Neue Frage]]',
token: global.editToken
};
if (!mw.user.isAnon()) {
if (watch === 'true') {
obj.watchlist = 'watch';
}
else {
obj.watchlist = 'unwatch';
}
}
if (captchaId !== '') {
obj.captchaid = captchaId;
obj.captchaword = captchaText;
}
disableForm();
displayMessage('Bitte warten …');
api.request(obj, function(data) {
// Fehler
if (data.error) {
displayError(data.error);
}
// CAPTCHA
else if (data.edit.result === 'Failure') {
displayMessage('Aufgrund externer Links musst du erst mal eine Aufgabe lösen, bevor du eine Frage stellen kannst.', '#FF0000');
$('#wNewQuestion-captchaHeader td').text(data.edit.captcha.question);
$('#wNewQuestion-captchaBody input').val('');
$('#wNewQuestion-captchaId').val(data.edit.captcha.id);
$('#wNewQuestion-captchaHeader, #wNewQuestion-captchaBody').slideDown('fast');
enableForm();
}
// Erfolgreich erstellt
else {
displayMessage('Die Frage wurde gestellt. Du wirst nun weitergeleitet …', '#008000');
location.href = mw.util.wikiGetlink(data.edit.title);
}
});
});
/* Vorschau */
$('#wpPreview').click(function () {
disableForm();
if($( '#wNewQuestion-preview' ).length) {
var preview = $( '#wNewQuestion-preview' );
}
else {
var preview = $( '<div id="wNewQuestion-preview"></div>' );
preview.insertBefore( $( '#wNewQuestion-form' ) );
}
preview.html( '<img src="http://www.stupidedia.org/images/d/de/Ajax-loader.gif" />' );
var text = '\r\n== Vorschau ==\r\n' + $('#wNewQuestion-text').val() + '\r\n: ' + $.trim(global.signature);
var obj = {
action: 'parse',
text: text,
disablepp: true,
pst: true
};
api.request( obj, function( data ) {
if ( data.error ) {
alert( 'Fehler bei der Übertragung. Bitte versuche es erneut!' );
}
else {
preview.html( data.parse.text['*'] );
}
enableForm();
} );
});
});
</script>