Benutzer:Q/vector.js: Unterschied zwischen den Versionen

aus Kamelopedia, der wüsten Enzyklopädie
Zur Navigation springen Zur Suche springen
(Bugfix gegen Doppeleintrag und Löschungen und ungewollte Wiedereinträge - bitte vorher CACHE leeren !)
Markierung: WK: interner Datei-Hotlink
(alte verbugte Version durch aktuelle Version ersetzt !)
Zeile 1: Zeile 1:
var gagapages = new Array ("", "File", "News"); // hierhin die Namensräume, die zur Wahl stehen (Achtung! canonical namespaces!)
+
/*
 +
* Version 1.4 sollte halbwegs fehlerfrei funktionieren
 +
*/
 +
 
 +
var gagaList;
 +
var entry;
 +
var subpath = '/Empfehlung';  // Name bzw. Pfad der Kamelbau-Unterseiten
 +
var gagaNS = new Array ("", "File", "Kamelionary"); // hierhin die Namensräume, die zur Wahl stehen (Achtung! canonical namespaces!);
 
   
 
   
// Daumen neben "Versionen/Autoren" reinflanschen (noch suboptimal - sieht etwas beknackt aus)
+
// Empfehlungsliste auslesen
function createThumb() {
+
function readGaGA(username) {
   jQuery('#p-views ul').append('<li id="ca-gaga"><a href="javascript:GaGA();" title="Seite empfehlen">'
+
   jQuery.ajax({
        + '<span><img src="http://kamelopedia.mormo.org/images/2/27/Daumen_hoch.png" /></span>'
+
    url:    wgScript,
        + '</a></li>');
+
    data:    { title: "Kamel:" + username + subpath, action: "raw" },
 +
    cache:   false,
 +
    // Noch keine Empfehlungs-Seite angelegt
 +
    error:  function()     { gagaList = new Array() },
 +
    // Empfehlungs-Seite auslesen
 +
    success: function(data) { gagaList = data.match(/\[\[.*\]\]/g) }
 +
  });
 
}
 
}
+
 
// Aktuellen Artikel in die Liste Schreiben
+
// Seite zur Empfehlungsliste hinzufügen
function GaGA(){
+
function addGaGA() {
   jQuery.ajaxSetup({ cache: false });
+
  // edit-Token holen
  jQuery.get(wgScript, { title: "Kamel:" + wgUserName + "/Empfehlung", action: "raw" },
+
   jQuery.ajax({
     function(data){
+
    url:     '/api.php',  
       gaga = data.match(/\[\[.*\]\]/g);
+
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + wgUserName + subpath, format: "xml" },
       if(wgCanonicalNamespace == "File") {
+
     cache:  false,
         gaga.push("[[:" + wgPageName.replace(/_/g, ' ') + "]]"); // Bild hinzufügen
+
    success: function(data) {  
       } else {
+
       var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
        gaga.push("[[" + wgPageName.replace(/_/g, ' ') + "]]"); // Artikel hinzufügen
+
       gagaList.push(entry);          // Aktuelle Seite dazu
      }
+
      gagaList = sortGaGA(gagaList); // Sortieren
       k = new Array();
+
      // Empfehlungsliste bearbeiten
       // doppelte Einträge entfernen + alphabetisch sortieren (Funktioniert nicht mehr richtig, dafür der andere bug jetzt weg)
+
      jQuery.ajax({
       for(var i=0; i<gaga.length; i++){
+
         url:    '/api.php',
         for(var j=i+1; j<gaga.length; j++){
+
        type:    'POST',
           if (gaga[i] == gaga[j]) j = ++i;
+
        cache:  false,
 +
        data:    { action: "edit", title: "Kamel:" + wgUserName + subpath, text: "* " + gagaList.join("\n* "), summary: "+ " + entry, token: edittoken },
 +
        success: function(data) {
 +
          var text = '<p>Die Seite „' + wgPageName.replace(/_/g, ' ') + '“ wurde zu deinen <a href="'
 +
            + wgScript + '/Kamel:' + wgUserName + subpath + '">Empfehlungen</a> hinzugefügt.</p>';
 +
          jQuery('#mw-js-message').html(text);
 +
          jQuery('#mw-js-message').slideDown('fast');
 +
        }
 +
       })
 +
    }
 +
  });
 +
}
 +
 
 +
function removeGaGA() {
 +
  // edit-Token holen
 +
  jQuery.ajax({
 +
    url:    '/api.php',
 +
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + wgUserName + subpath, format: "xml" },
 +
    cache:  false,
 +
    success: function(data) {
 +
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
 +
      var i = jQuery.inArray(entry, gagaList);
 +
      delete gagaList[i];           // Aktuelle Seite wech
 +
       gagaList = sortGaGA(gagaList); // Sortieren
 +
       // Empfehlungsliste bearbeiten
 +
       jQuery.ajax({
 +
        url:    '/api.php',
 +
        type:    'POST',
 +
        cache:  false,
 +
        data:    { action: "edit", title: "Kamel:" + wgUserName + subpath, text: "* " + gagaList.join("\n* "), summary: "- " + entry, token: edittoken },
 +
         success: function(data) {
 +
          var text = '<p>Die Seite „' + wgPageName.replace(/_/g, ' ') + '“ wurde von deinen <a href="'
 +
            + wgScript + '/Kamel:' + wgUserName + subpath + '">Empfehlungen</a> entfernt.</p>';
 +
          jQuery('#mw-js-message').html(text);
 +
           jQuery('#mw-js-message').slideDown('fast');
 
         }
 
         }
        k.push(gaga[i]);      
+
      })
      }
+
    }
      gaga = k.sort();
+
  });
      // edit-Token holen
+
}
      jQuery.get('/api.php', { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + wgUserName + "/Empfehlung", format: "xml" },
+
 
        function(data){
+
function showGaGA(username) {
          edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
+
  /* soll später html-Code für Empfehlungslisten ausspucken */
          // API aufrufen und gaga in die Empfehlungsliste schreiben
+
}
          jQuery.post("/api.php", { action: "edit", title: "Kamel:" + wgUserName + "/Empfehlung", text: "* " + gaga.join("\n* "), summary: "+ [[" + wgPageName.replace(/_/g, ' ') + "]]", token: edittoken },
+
 
            function(data){
+
// doppelte & leere Einträge entfernen + alphabetisch sortieren
              alert(wgPageName.replace(/_/g, ' ') + ' wurde eingetragen');
+
function sortGaGA(list) {
            }
+
  var sorted = new Array();
          );
+
  for(var i=0; i<list.length; i++){
        }, "xml"
+
    for(var j=i+1; j<list.length; j++){
      );
+
      if (list[i] == list[j]) j = ++i;
 
     }
 
     }
   );
+
    if (typeof(list[i]) != 'undefined') sorted.push(list[i]);       
};
+
   }
+
  return sorted.sort();
 +
}
 +
 
 
// Das ganze starten
 
// Das ganze starten
addOnloadHook(function() {
+
jQuery(document).ready(function() {
   if(jQuery.inArray(wgCanonicalNamespace, gagapages ) != -1) {
+
  if(typeof(disableGaGA) != 'undefined' && disableGaGA) return;
     createThumb();
+
   if(jQuery.inArray(wgCanonicalNamespace, gagaNS) != -1) {
 +
    entry = (wgCanonicalNamespace == "File") ? "[[:" + wgPageName.replace(/_/g, ' ') + "]]"
 +
                                            : "[[" + wgPageName.replace(/_/g, ' ') + "]]";
 +
    jQuery('#p-views ul').append('<li class="icon"><span><a href="#"></a></span></li>');
 +
    jQuery('#p-views li:last').ajaxComplete(function() {
 +
      if(jQuery.inArray(entry, gagaList) != -1) {
 +
        jQuery(this).attr('id', 'ca-ungaga');
 +
        jQuery('#ca-ungaga a').html('Entfehlen');
 +
        jQuery('#ca-ungaga a').attr('title', 'Seite nicht mehr empfehlen');
 +
        jQuery('#ca-ungaga a').unbind('click');
 +
        jQuery('#ca-ungaga a').bind('click', function() { removeGaGA() });
 +
      } else {
 +
        jQuery(this).attr('id', 'ca-gaga');
 +
        jQuery('#ca-gaga a').html('Empfehlen');
 +
        jQuery('#ca-gaga a').attr('title', 'Seite empfehlen');
 +
        jQuery('#ca-gaga a').unbind('click');
 +
        jQuery('#ca-gaga a').bind('click', function() { addGaGA() });
 +
      }
 +
    });
 +
     readGaGA(wgUserName);
 
   }
 
   }
 
})
 
})

Version vom 21. April 2011, 00:57 Uhr

/*
 * Version 1.4 sollte halbwegs fehlerfrei funktionieren
 */

var gagaList;
var entry;
var subpath = '/Empfehlung';  // Name bzw. Pfad der Kamelbau-Unterseiten
var gagaNS = new Array ("", "File", "Kamelionary"); // hierhin die Namensräume, die zur Wahl stehen (Achtung! canonical namespaces!);
 
// Empfehlungsliste auslesen
function readGaGA(username) {
  jQuery.ajax({
    url:     wgScript, 
    data:    { title: "Kamel:" + username + subpath, action: "raw" },
    cache:   false,
    // Noch keine Empfehlungs-Seite angelegt
    error:   function()     { gagaList = new Array() },
    // Empfehlungs-Seite auslesen
    success: function(data) { gagaList = data.match(/\[\[.*\]\]/g) }
  });
}

// Seite zur Empfehlungsliste hinzufügen
function addGaGA() {
  // edit-Token holen
  jQuery.ajax({
    url:     '/api.php', 
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + wgUserName + subpath, format: "xml" },
    cache:   false,
    success: function(data) { 
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
      gagaList.push(entry);          // Aktuelle Seite dazu
      gagaList = sortGaGA(gagaList); // Sortieren
      // Empfehlungsliste bearbeiten
      jQuery.ajax({
        url:     '/api.php',
        type:    'POST',
        cache:   false,
        data:    { action: "edit", title: "Kamel:" + wgUserName + subpath, text: "* " + gagaList.join("\n* "), summary: "+ " + entry, token: edittoken },
        success: function(data) {
          var text = '<p>Die Seite „' + wgPageName.replace(/_/g, ' ') + '“ wurde zu deinen <a href="'
            + wgScript + '/Kamel:' + wgUserName + subpath + '">Empfehlungen</a> hinzugefügt.</p>';
          jQuery('#mw-js-message').html(text);
          jQuery('#mw-js-message').slideDown('fast');
        }
      })
    }
  });
}

function removeGaGA() {
  // edit-Token holen
  jQuery.ajax({
    url:     '/api.php', 
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + wgUserName + subpath, format: "xml" },
    cache:   false,
    success: function(data) { 
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
      var i = jQuery.inArray(entry, gagaList);
      delete gagaList[i];            // Aktuelle Seite wech
      gagaList = sortGaGA(gagaList); // Sortieren
      // Empfehlungsliste bearbeiten
      jQuery.ajax({
        url:     '/api.php',
        type:    'POST',
        cache:   false,
        data:    { action: "edit", title: "Kamel:" + wgUserName + subpath, text: "* " + gagaList.join("\n* "), summary: "- " + entry, token: edittoken },
        success: function(data) {
          var text = '<p>Die Seite „' + wgPageName.replace(/_/g, ' ') + '“ wurde von deinen <a href="'
            + wgScript + '/Kamel:' + wgUserName + subpath + '">Empfehlungen</a> entfernt.</p>';
          jQuery('#mw-js-message').html(text);
          jQuery('#mw-js-message').slideDown('fast');
        }
      })
    }
  });
}

function showGaGA(username) {
  /* soll später html-Code für Empfehlungslisten ausspucken */
}

// doppelte & leere Einträge entfernen + alphabetisch sortieren
function sortGaGA(list) {
  var sorted = new Array();
  for(var i=0; i<list.length; i++){
    for(var j=i+1; j<list.length; j++){
      if (list[i] == list[j]) j = ++i;
    }
    if (typeof(list[i]) != 'undefined') sorted.push(list[i]);        
  }
  return sorted.sort();
}

// Das ganze starten
jQuery(document).ready(function() {
  if(typeof(disableGaGA) != 'undefined' && disableGaGA) return;
  if(jQuery.inArray(wgCanonicalNamespace, gagaNS) != -1) {
    entry = (wgCanonicalNamespace == "File") ? "[[:" + wgPageName.replace(/_/g, ' ') + "]]" 
                                             : "[[" + wgPageName.replace(/_/g, ' ') + "]]";
    jQuery('#p-views ul').append('<li class="icon"><span><a href="#"></a></span></li>');
    jQuery('#p-views li:last').ajaxComplete(function() {
      if(jQuery.inArray(entry, gagaList) != -1) {
        jQuery(this).attr('id', 'ca-ungaga');
        jQuery('#ca-ungaga a').html('Entfehlen');
        jQuery('#ca-ungaga a').attr('title', 'Seite nicht mehr empfehlen');
        jQuery('#ca-ungaga a').unbind('click');
        jQuery('#ca-ungaga a').bind('click', function() { removeGaGA() });
      } else {
        jQuery(this).attr('id', 'ca-gaga');
        jQuery('#ca-gaga a').html('Empfehlen');
        jQuery('#ca-gaga a').attr('title', 'Seite empfehlen');
        jQuery('#ca-gaga a').unbind('click');
        jQuery('#ca-gaga a').bind('click', function() { addGaGA() });
      }
    });
    readGaGA(wgUserName);
  }
})