MediaWiki:Disclaimer.js

From WikiLectures

Note: After publishing, 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: Press Ctrl-F5.
/* <pre> */

/* ============== DISCLAIMER =================================
   author:         [[User:Slepi]]
   date:           04/2011, last update 03/2012
   documentation:  [[MediaWiki:Disclaimer.js/documentation]]
   description:    disclaimer in WL
   ==========================================================
*/

var disclaimerCreator = {

  xmlhttpDiscText : "",
  urlText : wgServer + wgScript + "/MediaWiki:Disclaimer-text?action=raw",
  discText : "",
  agreeText : "<b>I accept</b>",
  disagreeText : "Back",
  urlLogin : "http://www.wikilectures.eu/index.php/Special:UserLogin",
  urlPrefs : "http://www.wikilectures.eu/index.php/Special:Preferences",
  disclaimerGadget : "Do not display the disclaimer",

  install : function () {
    // test cookies
    var cookiePos = document.cookie.indexOf("wl_disc=1");
    if (cookiePos > -1) return false;

    // add CSS style
    importStylesheet("MediaWiki:Disclaimer.css");

    // create div for overlay
    overlayDiv = document.createElement("div");
    overlayDiv.className = "overlay_div";
    overlayDiv.id = "overlay_div";

    // add div to the page
    document.body.appendChild(overlayDiv);

    // block with text
    contentDiv = document.createElement("div");
    contentDiv.className = "content_div";
    contentDiv.id = "content_div";

    // add block to the page
    document.body.appendChild(contentDiv);

    // text of the disclaimer
    getXMLHttpRequest("disclaimerCreator.xmlhttpDiscText", disclaimerCreator.urlText, "disclaimerCreator.getText");
  },

  getText : function() {
    if (disclaimerCreator.xmlhttpDiscText.readyState==4) {// 4 = "loaded"
      if (disclaimerCreator.xmlhttpDiscText.status==200) {// 200 = OK
         disclaimerCreator.discText = disclaimerCreator.xmlhttpDiscText.responseText; // server response
         disclaimerCreator.showText();
      }
    }
  },

  showText : function() {

    // add text
    contentDiv.innerHTML = "<h2>Notice</h2>"
      + "<p>"
      + disclaimerCreator.discText
      + "<br /></p>";

    // add buttons
    contentDiv.innerHTML += '<form action="">'
      + '<button onclick="return disclaimerCreator.closeDisclaimer(1);">'
      + disclaimerCreator.agreeText
      + '</button>'
      + '<button onclick="return disclaimerCreator.closeDisclaimer(0);">'
      + disclaimerCreator.disagreeText
      + '</button></form>';

    // info about switching off he disclaimer
    contentDiv.innerHTML += '<p><br /><br /><small>'
      + '<a href="' + disclaimerCreator.urlLogin + '">Logged in users</a> '
      + 'can permanently switch off this notice in their '
      + '<a href="' + disclaimerCreator.urlPrefs + '">preferences</a>: tab <b>Gadgets</b>, tool '
      + '<b>' + disclaimerCreator.disclaimerGadget + '</b>.</small><p>';

    // show disclaimer
    overlayDiv.style.display = "block";
    contentDiv.style.display = "block";
  },

  writeCookies : function() {
     document.cookie = "wl_disc=1";
  },

  closeDisclaimer : function(a) {
    if (a==1) {
      document.getElementById('overlay_div').style.display = 'none';
      document.getElementById('content_div').style.display = 'none';
      disclaimerCreator.writeCookies();
      return false;
    } else if (a==0) {
      history.back();
      return false;
    }
  }

}


if (wgAction == "view" && wgPageName != "Main_Page" && wgNamespaceNumber == 0) {
  if (wgUserName== null) {
    $(disclaimerCreator.install);  // anonymous users: immediately
  } else {
    setTimeout("disclaimerCreator.install()", 1000); // wait for cookie
  }
}