Jump to content

User:HectorMoffet/OfferToHideImages.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//   OfferToHideImages.js
//  
//  This script adds a short message offering to hide all the images the page.   
//  The message, once clicked, temporarily hides all images.
//  All images can be restored by clicking on a message at the top of the page. 
//  All images can be restored by clicking on any of the "unhide all" messages above each image.  

//  Experimental.    


//Global Mode
//AlwaysOffer = true;  // Always offer to hide regardless of page


//List mode
AlwaysOffer = false;  // Only offer to hide images on specific pages
// In List Mode, The "Hide All Images" option will be offer only on these pages: 
var OfferImageHidePages =  [ "Muhammad" , "Flag desecration" , "Bahá'u'lláh" , "Piss Christ" ];


// Tweakable messages: Top of article offer to hide image, Top offer to unhide images, and Per-Image offers to unhide images.   
var   HideOfferHTML="To hide all images in this article, <a onCLick='HideAllImages()'>click here</a>." ;  //Would you like to hide all images on page?
var UnhideOfferHTML="<a onCLick='UnHideAllImages() '>Click here</a> to reveal all images."; // Would you like to see all images again?
var UnhideImgHTML="<a class=\"UnhideImageLink\" onCLick='UnHideAllImages(); return false;' href=\"\">Unhide All</a>";  // Would you like to see images after all?  (or in future "Would you like to see just this image and only this image?")




if (AlwaysOffer==true) { OfferHideAllImages();} // Global Mode
else                                            // List mode
{ 
  // Is this page on this list? 
  var LocalPageTitle=mw.config.get('wgTitle');             // Get the Page Title
  if (OfferImageHidePages.indexOf(LocalPageTitle) != -1)   // Is this page on the list?
  { 
    // Yes, this page is on the list.    
    //alert("Page title = "+mw.config.get('wgTitle'));   // For debugging
    OfferHideAllImages();
  }
}



//*************************************
// OfferHideAllImages()  is a function that add a message to an appropriate part of the page.   
function OfferHideAllImages() {
   document.getElementById('contentSub').innerHTML+=HideOfferHTML;
}

// HideAllImages is a function that gets each Img, hides them, and puts up Unhide offers
function HideAllImages() 
{
   var imgs=document.getElementsByTagName("img");
   for(var i=0;i<imgs.length;i++) HideImage(imgs[i]);
   OfferUnHideAllImages()
}

// HideImage is the function that actually hides an IMG and replaces it with Unhide Offer.
function HideImage (myNode)
{
  myNode.style.visibility="hidden";                 // Hide it

  // Create an Unhide Offer at this specific image
  var newNode=document.createElement('div');        // Make New Div
  newNode.innerHTML=UnhideImgHTML;                  // Add html to Div 
  myNode.parentNode.insertBefore(newNode, myNode);  // Insert the Div
}


// OfferUnHideAllImages()  is a function that updates the page to allow unhiding.   
function OfferUnHideAllImages() {

   document.getElementById('contentSub').innerHTML=UnhideOfferHTML;

}


// UnHideAllImages is a function that will unhide all images.
function UnHideAllImages() 
{
   // Restore the images
   var imgs=document.getElementsByTagName("img");
   for(var i=0;i<imgs.length;i++) imgs[i].style.visibility="visible";

   // Erase offers to unhide
   document.getElementById('contentSub').innerHTML="";  // Erase top of article offer
   $('.UnhideImageLink').hide();                        // Erase per image offer

   // Recreate hide offer at top.   
   OfferHideAllImages(); 
}

//*************************************