MediaWiki:Skin/Feedbackknopf.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
/* Ultrakurzfeedbackdings */
 
// CODE BEFINDET SICH IN Common.js UM DIE WARTEZEITEN BEIM NACHLADEN VON SKRIPTEN ZU MINIMIEREN
 
function fb_error_callback () {
        jQuery('#mw-js-message').html("Bei der Zurückfütterung ist ein Fehler aufgetreten!");
        jQuery('#mw-js-message').slideDown('fast'); 
}
 
addOnloadHook( function () {
 
jQuery("#p-namespaces ul").append("<li id='ca-feedback'><span><a title='Ein kurzes Feedback zu dieser Seite abgeben'>F/b</a></span></li>");
 
jQuery("body").append("<div id='f_b_background' style='display: none; position:fixed; opacity: 0.5; -moz-opacity: 0.5; width: 100%; height: 100%; top: 0px; left 0px; background-color: black;'>&nbsp;</div>");
jQuery("body").append("<div id='f_b' style='display: none; position:fixed; border: 1px black solid; background: white; left: 50%; top: 50%; width: 340px; height: 240px; padding: 30px; margin-left: -185px; margin-top: -135px;'><h5>Ultrakurzfeedback abgeben</h5><div style='font-size: 80%'>Füttere den Autor zurück: Text oder Bewertung oder beides.</div><div id='fb_preview_frame' style='display:none; font-size: 80%;'><div id='fb_preview_area'></div><div>(In der Vorschau werden die Schlangenlinien noch nicht ersetzt, später auf der Seite schon.)</div></div><form id='fb_form'><textarea style='height:100px;' /><br/><label for='fb_rating'>Kurzbewertung:</label><select name='fb_rating' id='fb_rating'><option value=''>ohne Kurzbewertung</option><option value='0'>0 Höcker –– grottenschlecht</option><option value='1'>1 Höcker –– schwach</option><option value='2'>2 Höcker –– neutrales Mittelfeld</option><option value='3'>3 Höcker –– gut</option><option value='4'>4 Höcker –– sehr gut</option><option value='5'>5 Höcker –– Spitzenbeitrag</option></select><br/><input type='checkbox' id='fb_autosign' name='fb_autosign' checked='checked' style='display:none;'><label for='fb_autosign' style='color:#777;font-size:0.8em;'>Dein Feedback wird automatisch unterschrieben!</label><br/><input type='submit' value='Abschicken' /><input id='fb_preview' type='button' value='Vorschau'><input id='fb_reset' type='reset' value='abbrechen'></form></div>"); 
 
jQuery("#fb_reset").click( function () {
  jQuery("#f_b_background, #f_b").hide();
});
 
jQuery("#fb_preview").click( function () {
  jQuery.ajax({
    url: "/api.php",
    type: "POST",
    data: {
        action: "parse",
        text: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}",
        format: "xml"
    },
    success: function (tr) {
       jQuery("#fb_preview_frame").show();
       jQuery("#fb_preview_area").html(jQuery(tr).find("text").text());
       jQuery("#f_b").css("height","350px");
       jQuery("#f_b").css("margin-top","-190px");
       jQuery("#f_b").css("width","540px");
       jQuery("#f_b").css("margin-left","-195px");
    }
  });
});
 
jQuery("#fb_form").submit( function () {
  var wgFormattedNamespaces = mw.config.get( 'wgFormattedNamespaces' );
  var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
  var wgTitle = mw.config.get( 'wgTitle' );
 
  if (jQuery("#fb_form textarea").val()+jQuery("#fb_form select").val() == "")
  {
      alert("Eins von beidem, Text oder Bewertung, solltest du schon mindestens ausfüllen!");
      return false;
  }
 
  window.fb_data = {
    url: "/api.php",
    data: {
            action: "edit",
            title: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle,
            summary: "Kurzfeedback",
            appendtext: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}"
        },
    success: function () {
        jQuery("#f_b_background, #f_b").hide();
        jQuery("#ca-feedback").addClass("done");
        jQuery('#mw-js-message').html("Die Zurückfütterung war erfolgreich!");
        jQuery('#mw-js-message').slideDown('fast'); 
    },
    error: fb_error_callback,
    type: 'POST'
  };
  jQuery.ajax({
    cache: false,
    url: "/api.php",
    data: {
      format: "xml",
      action: "query",
      prop: "info",
      intoken: "edit",
      titles: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle
    },
    type: 'GET',
    success: function(tr) {
      var token = jQuery(tr).find("api query pages page").attr('edittoken');
      fb_data.data.token = token;
      var section_data = jQuery.ajax({
          async: false,
          url: "/api.php",
          data: {
              action: "parse",
              prop: "sections",
              page: fb_data.data.title,
              format: "xml"
          },
          error: fb_error_callback
      }).responseXML;
      fb_data.data.section = jQuery(section_data).find('s[line="Kurzfeedback"]').index() + 1;
      if (fb_data.data.section == 0)
      {
          fb_data.data.section = "new";
          fb_data.data.text = fb_data.data.appendtext;
          delete fb_data.data.appendtext;
      }
 
      jQuery.ajax(fb_data);
    },
    error: fb_error_callback
  });
  return false;
}
);
 
jQuery("#ca-feedback").click(function () {
    jQuery("#f_b_background, #f_b").show();
    jQuery("#fb_form textarea").focus();
});
 
});