User:Nx/Scripts/Smileybox.js

From RationalWiki
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
//<!--
var smileyBox;

function showSmileyBar()
{
  vis = (smileyBox.style.display == "block");
  if (!vis)
  {
    var toolbar = document.getElementById('toolbar');
    toolbar.appendChild(smileyBox);
    smileyBox.style.display = "block";
  } else {
    smileyBox.style.display = "none";
  }
}

function smileys()
{
/*  if (mwCustomEditButtons) {
    mwCustomEditButtons[mwCustomEditButtons.length] = {
      "imageId" : "smileyButton",
      "imageFile": "/wiki/images/9/9e/Button_goat.png",
      "speedTip": "Smileys",
      "tagOpen": "",
      "tagClose": "",
      "sampleText": ""}
  }*/

  var toolbar = document.getElementById('toolbar');
  if (!toolbar) { return false; }

  var textbox = document.getElementById('wpTextbox1');
//  if (!textbox) { return false; }

  // Don't generate buttons for browsers which don't fully
  // support it.
/*  if (!(document.selection && document.selection.createRange))
  {
    return false;
  }
  if (textbox && textbox.selectionStart === null) {
    return false;
  }*/
	
/*  var smileyButton = document.getElementById("smileyButton");
  smileyButton.onclick = function() {
    showSmileyBar();
    return false;
  };*/

  var image = document.createElement("img");
  image.width = 23;
  image.height = 22;
  image.className = "mw-toolbar-editbutton";
  image.id = "smileyButton";
  image.src = "/wiki/images/9/9e/Button_goat.png";
  image.border = 0;
  image.alt = "Smileys";
  image.title = "Smileys";
  image.style.cursor = "pointer";
  image.onclick = function() {
    showSmileyBar();
    return false;
  };

  toolbar.appendChild(image);
	
  smileyBox = document.createElement("div");
  smileyBox.id = "smileyBox";
  smileyBox.style.position = "static";
/*  smileyBox.style.width = "200px";
  smileyBox.style.height = "200px";*/
  smileyBox.style.backgroundColor = "CornflowerBlue";
  /*populate smiley box using RationalWiki:Smileys*/
  var req = false;
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (req) {
    req.open("GET", wgServer + wgScript + "?title=RationalWiki:Smileys", true);
    //req.overrideMimeType("text/xml");
    req.onreadystatechange = function()
    {
      if (req.readyState==4 && req.status == 200) {
        var xmlhack = document.createElement("div");
        xmlhack.innerHTML = req.responseText;
        var divs = xmlhack.getElementsByTagName("div");
        //var divs = req.responseXML.documentElement.getElementsByTagName("div");
        var bci;
        var i;
        for (i=0; i<divs.length; i++ ) {
          if ( divs[i].id == "bodyContent" ) {
            bci = i;
            break;
          }
        }
        var imgs = divs[bci].getElementsByTagName("img");
        while (imgs.length>0)
        {
          addSmiley(smileyBox,imgs.item(0));
        }
      }
    }
    req.send(null);
  }

  smileyBox.style.display = "none";
	
  return true;
}

function addSmiley(parent, item)
{
  item.onclick = function() {
    insertTags('[[File:' + item.alt +  ']]','','');
    return false;
  };
  item.style.margin="4px";  
  item.style.cursor = "pointer";
  item.title = item.alt;
  parent.appendChild(item);
}

hookEvent("load", smileys);
//-->