Widget:Neue Frage
Aus Stupidedia, der sinnfreien Enzyklopädie!
Version vom 17:27, 27. Aug. 2013 von Phorgo (Diskussion | Beiträge)
<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();">
<p>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></p>
<p>
<textarea name="text" rows="5"></textarea>
</p>
<table id="wNewQuestion-table">
<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>
</table>
<p>
<input type="submit" value="Absenden" />
<input type="reset" value="Zurücksetzen" />
<input type="button" value="Schließen" />
</p>
<input id="wNewQuestion-captchaId" type="hidden" name="captchaid" value="" />
<div id="wNewQuestion-message"></div>
</form>
</div>
<style type="text/css">
#wNewQuestion-linkBox {
text-align: center;
}
#wNewQuestion-newLink {
font-size: 20px;
font-weight: bold;
}
#wNewQuestion-form,
#wNewQuestion-watchRow,
#wNewQuestion-captchaHeader,
#wNewQuestion-captchaBody {
display: none;
}
#wNewQuestion-table {
width: 100%;
}
#wNewQuestion-table {
width: 100%;
border-spacing: 0px;
}
#wNewQuestion-table input[type="text"] {
width: 100%;
}
#wNewQuestion-table td {
padding: 0px;
}
#wNewQuestion-summaryLabelCell {
width: 180px;
}
#wNewQuestion-message {
font-weight: bold;
}
</style>
<script type="text/javascript">
$(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');
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');
});
if (!mw.user.isAnon()) {
$('#wNewQuestion-watchRow').show();
}
$('#wNewQuestion-form').submit(function() {
var form = $(this);
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);
}
});
});
});
</script>