MediaWiki:Skin/Frage.js

aus Kamelopedia, der wüsten Enzyklopädie
Wechseln zu: Navigation, Suche

Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
var fragenkats = [
    "Beauty & Style",
    "Computer & Internetz",
    "Essen & Trinken",
    "Freizeit",
    "Freunde & Familie",
    "Gesundheit",
    "Haus & Garten",
    "Kultur & Gesellschaft",
    "Kunst & Unterhaltung",
    "Kunst & Unterhaltung",
    "Politik",
    "Reisen",
    "Transport & Verkehr",
    "Umwelt",
    "Wirtschaft & Finanzen",
    "Wissenschaft"
    ];
 
 
function fragenkatsHTML() {
    var html = '<div id="fragenkats" style="float:right;"><b>Themengebiete</b> (ohne Funktion!)<br />';
 
    for (var i = 0; i < fragenkats.length; i++) {
        var kat = fragenkats[i];
        html += "<input type='checkbox' id='fakat_" + i + "' name='fakat_" + i + "'><label for='fakat_" + i + "' style='color:#fff;'>" + kat + "</label><br/>";
    }
 
    html += '</div>';
    return html;
}
//funzt net
function fa_fehler() {
    jQuery('#mw-js-message').html("Hmm, es ist ein Fehler aufgetreten!");
    jQuery('#mw-js-message').slideDown('fast');
}
 
//dependencies
mw.loader.using(['jquery.ui.dialog'], function () {
 
    //abfeuern, wenn document ready 
    jQuery(document).ready(function () {
        // vars wegen unterschiedlicher skins ...
        var fa_skin = mw.user.options.get('skin');
        var fa_heading = "#firstHeading";
        var fa_footer = "#catlinks";
 
        if (fa_skin == "wptouch") {
            fa_heading = "h2";
            fa_footer = ".cleared"
        }
        // Wenn Frage länger als erlaubte Seitentitellänge, dann austauschen den Kram, ansonsten nur den Titel ohne NS
        if (jQuery('#fragezulang').text().length > 0) {
            jQuery(fa_heading).text(jQuery('#fragezulang').text());
            jQuery('#fragezulang').hide(0);
        } else {
            jQuery(fa_heading).text(jQuery(fa_heading).text().replace("Frage:", ""));
        }
        //Hauptseitenlinks verdrehen
        if (fa_skin == "vector") {
            jQuery('#p-logo').html(jQuery('#p-logo').html().replace('Kamelopedia:Hauptseite', 'Frage:Hauptseite'));
            // Zufällige Frage
            jQuery('#p-Navigation').html(jQuery('#p-Navigation').html().replace('">Zufällige Seite', '/Frage">Zufällige Frage'));
        }
        jQuery('#n-Hauptseite').html(jQuery('#n-Hauptseite').html().replace('Kamelopedia:Hauptseite', 'Frage:Hauptseite'));
        //temp: sobald NS-Frage fei, dann nur noch Link austauschen
        jQuery("#n-KameloNews").before("<li><a href='/index.php/Kamelopedia:Hauptseite'>Kamelopedia</a></li>");
 
        //Zeuch
        //Knöppe & Formular und so nicht auf Diskussionsseite
        //temp Namenrum nicht bearbeitbar
        //jQuery(fa_heading).before("<div id='fragtmp' style='color:red;text-align:center;'>Dieser Namensraum ist noch eine Baustelle, und kann bisher nur von Kameltreibern bearbeitet werden.</div>");
        if (mw.config.get('wgNamespaceNumber') != 115 && (location.href.indexOf("action=") < 0) && mw.config.get('wgArticleId') != 0) {
            var knopptext = "Diese Frage beantworten";
            var formulartext = "Deine Antwort";
            var neuefrage = false;
            var summarytext = "Antwort";
            var apiaction = "edit";
        var hinweis = "Denk daran: Dies ist ein Humorwiki.<br/>Keine der hier gestellten Fragen ist ernst gemeint. Das sollte auch für deine Antwort gelten.";
 
            if (mw.config.get('wgPageName') == "Frage:Hauptseite" && (location.href.indexOf("action=") < 0) && mw.config.get('wgArticleId') != 0) {
                knopptext = "Eine neue Frage stellen …";
                formulartext = "Deine Frage";
                neuefrage = true;
                summarytext = "Neue Frage";
                apiaction = "edit";
        var hinweis = "Denk daran: Dies ist ein Humorwiki.<br/>Wenn du ernsthafte Antworten erwartest, dann frag besser woanders …";
            }
            jQuery("#bodyContent").before("<div id='fragnav'><span id='fak' class='fragnavknopp'>" + knopptext + "</span></div>");
            jQuery("#fragnav").after("<div id='fragantwort' style='display:none;'><h5>" + formulartext + "</h5><div class='fragehinweis'>" + hinweis + "</div><form id='fragantwort_form' style='width:90%'><textarea style='height:100px;' /><br/><input type='submit' value='Speichern' /><input id='fragantwort_reset' type='reset' value='abbrechen'></form></div><div id='dialog-modal' title='Das speichere ich nicht!' style='display:none;'><p>Oh wie lustig, eine leere Antwort speichern ... mach ich nicht:P</p></div>");
            //jQuery("#fragantwort_form").before(fragenkatsHTML());
            jQuery("#fragantwort_form").submit(function () {
                var wgUserName = mw.config.get('wgUserName');
                if (mw.config.get('wgUserGroups').length == 1) {
                    var kamelname = "~~" + "~"
                } else {
                    var kamelname = "[[Kamel:" + wgUserName + "|" + wgUserName + "]]"
                }
                if (jQuery("#fragantwort_form textarea").val() == "") {
                    jQuery("#dialog-modal").dialog({
                        maxWidth: 650,
                        modal: true
                    });
                    return false;
                }
                //neue frage oder nicht oder was?
                if (neuefrage) {
                    var frageurl = encodeURIComponent("Frage:" + jQuery("#fragantwort_form textarea").val());
                    if (frageurl.length > 240) {
                        var seitentext = "[[Kategorie:!Frage]]<div id='fragezulang'>" + jQuery("#fragantwort_form textarea").val() + "</div>";
                        seitentitel = decodeURIComponent(frageurl.substring(0, 240) + "%E2%80%A6%3F");
                    } else {
                        var seitentext = "[[Kategorie:!Frage]]";
                        var seitentitel = "Frage:" + jQuery("#fragantwort_form textarea").val();
                    }
 
                } else {
 
                    var seitentext = "\n==== " + kamelname + " ====\n" + jQuery("#fragantwort_form textarea").val();
                    var seitentitel = mw.config.get('wgPageName');
                }
 
                //gehackte Kat Antwort
                if (jQuery('.mw-headline').length == 0) {
                    seitentext = "\n[[Kategorie:!Antwort]]" + seitentext
                }
                window.antwortdata = {
                    url: "/api.php",
                    data: {
                        format: 'json',
                        action: apiaction,
                        title: seitentitel,
                        summary: summarytext,
                        appendtext: seitentext
                    },
                    success: function (data) {
                        if (data.error && data.error.code !== 'unknownerror') {
                            switch (data.error.code) {
                                case 'articleexists':
                                    var fehlermeldung = 'Diese Frage wurde bereits gestellt.';
                                    break;
                                case 'blocked':
                                    var fehlermeldung = 'Du kannst keine Fragen stellen oder beantworten, da du gesperrt wurdest.';
                                    break;
                                default:
                                    var fehlermeldung = 'Es ist ein Fehler aufgetreten. Die API meldet:<br />' + data.error.code + ': ' + data.error.info;
                                    break;
                            }
                            $('#antwortfehler').remove();
                            $('#fragantwort .fragehinweis').append('<div class="error" id="antwortfehler">' + fehlermeldung + '</div>');
                            return;
                        }
                        if (neuefrage) {
                             window.location = mw.config.get('wgServer') + "/index.php/" + encodeURIComponent(seitentitel);
                        } else {
                            location.reload(true);
                        }
                    },
                    error: fa_fehler,
                    type: 'POST'
                };
                if (neuefrage) {
                    window.antwortdata.data.createonly = true;
                }
                jQuery.ajax({
                    cache: false,
                    url: "/api.php",
                    data: {
                        format: "xml",
                        action: "query",
                        prop: "info",
                        intoken: "edit",
                        titles: seitentitel
                    },
                    type: 'GET',
                    success: function (tr) {
                        var token = jQuery(tr).find("api query pages page").attr('edittoken');
                        antwortdata.data.token = token;
                        jQuery.ajax(antwortdata);
                    },
                    error: fa_fehler
                });
                return false;
            });
            jQuery("#fak").click(function () {
                //jQuery('.mw-content-ltr').hide('fast');
                //jQuery('.fragnavknopp').hide();
                jQuery("#fragantwort").show();
                jQuery("#fragantwort_form textarea").focus();
            });
            jQuery("#fragantwort_reset").click(function () {
                //jQuery('.mw-content-ltr').show();
                //jQuery('.fragnavknopp').show();
                jQuery("#fragantwort").hide();
            });
        }
 
    });
 
});