MediaWiki:Common.js/watchlist.js: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
fix to deal with Anomie's adblocker
Ned Scott (talk | contribs)
No edit summary
 
(26 intermediate revisions by 14 users not shown)
Line 1: Line 1:
//<source lang="JavaScript">
/** Add dismiss buttons to watchlist-message *************************************
/** Add dismiss buttons to watchlist-message *************************************
  *
  *
Line 9: Line 7:


function addDismissButton() {
function addDismissButton() {
   var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document
   var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document;
   var watchItems = getElementsByClassName(docobj, 'div', 'watchlist-message');
   var watchItems = getElementsByClassName(docobj, 'div', 'watchlist-message');
  if(watchItems.length == 0) watchItems = getElementsByClassName(docobj, 'li', 'watchlist-message');
   if(watchItems.length == 0) return
   if(watchItems.length == 0) return
   for(var i=0;i<watchItems.length;i++) {
   for(var i=0;i<watchItems.length;i++) {
Line 25: Line 24:
     ButtonLink.setAttribute('id','dismissButton');
     ButtonLink.setAttribute('id','dismissButton');
     ButtonLink.setAttribute('href','javascript:dismissWatchlistMessage(' + i + ',' + watchlistCookieID + ')');
     ButtonLink.setAttribute('href','javascript:dismissWatchlistMessage(' + i + ',' + watchlistCookieID + ')');
     ButtonLink.setAttribute('title','Hide this message for one week');
     ButtonLink.setAttribute('title','Hide this message');
     ButtonLink.appendChild(ButtonText);
     ButtonLink.appendChild(ButtonText);


     Button.appendChild(document.createTextNode('['));
     Button.appendChild(document.createTextNode(' ['));
     Button.appendChild(ButtonLink);
     Button.appendChild(ButtonLink);
     Button.appendChild(document.createTextNode(']'));
     Button.appendChild(document.createTextNode(']'));
Line 38: Line 37:
   var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document
   var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document
   var watchItems = getElementsByClassName(docobj, 'div', 'watchlist-message');
   var watchItems = getElementsByClassName(docobj, 'div', 'watchlist-message');
  if(watchItems.length == 0) watchItems = getElementsByClassName(docobj, 'li', 'watchlist-message');
   watchItems[num].style.display = 'none';
   watchItems[num].style.display = 'none';


   var e = new Date();
   var e = new Date();
   e.setTime( e.getTime() + (7*24*60*60*1000) );
   e.setTime( e.getTime() + (4*7*24*60*60*1000) );
   document.cookie = 'hidewatchlistmessage-' + cid + '=yes; expires=' + e.toGMTString() + '; path=/';
   document.cookie = 'hidewatchlistmessage-' + cid + '=yes; expires=' + e.toGMTString() + '; path=/';
}
}
addOnloadHook(addDismissButton);
addOnloadHook(addDismissButton);
/** Geo-targeted watchlist notice *******************************************************
  *
  *  Description: Allows for geographic targeting of watchlist notices. See [[Wikipedia:Geonotice]] for more information.
  *  Created by: [[User:Gmaxwell]]
  */
if (wgPageName == "Special:Watchlist") {
  addOnloadHook(function() { importScriptURI('http://tools.wikimedia.de/~gmaxwell/cgi-bin/geonotice.py') });
}
/** IPv6 AAAA connectivity testing *******************************************************
  *
  *  Description: Uses hidden images to measure the possible negative impact of IPv6
  *  enabling the Wikimedia sites.
  *  This works by adding a hidden div to the footer with several image tags.
  *  The source addresses of the image tags are set to domainnames which have v4, v6 and
  *  both address types set.  The script times how long objects take to load.
  *  Results are sent back to the server.
  *  Initial testing is being done using EnWP Special:Watchlist since the page already loads objects off
  *  an IPv6 enabled host.
  *  Based on http://www.braintrust.co.nz/ipv6wwwtest/
  *  Contact: [[User:Gmaxwell]] [[User:Mark_Bergsma]] [[User:Mindspillage]]
  */
if (wgServer != "https://secure.wikimedia.org") {
        var __ipv6wwwtest_timeoutMsec = 5000; // Timeout for 'final' result message in milliseconds
        var __ipv6wwwtest_hostSuffix = ".labs.wikimedia.org"; // Suffix to go on the IMG hostnames
        var __ipv6wwwtest_stopAtTimeout = true; // Whether to stop when the timeout is reached or not
        var __ipv6wwwtest_pageLoadTime;
        var __ipv6wwwtest_timeout = false;
        var __ipv6wwwtest_ipv4LoadTime = false;
        var __ipv6wwwtest_ipv6LoadTime = false;
        var __ipv6wwwtest_ipv6and4LoadTime = false;
        var __ipv6wwwtest_id = Math.floor(Math.random()*Math.pow(2,31));
        function __ipv6wwwtest_startTest() {
                __ipv6wwwtest_pageLoadTime = new Date();
                document.getElementById("__ipv6wwwtest_ipv4Img").src = "http://ipv4" + __ipv6wwwtest_hostSuffix +"/ipv4.gif?id=" + __ipv6wwwtest_id;
                document.getElementById("__ipv6wwwtest_ipv6Img").src = "http://ipv6" + __ipv6wwwtest_hostSuffix +"/ipv6.gif?id=" + __ipv6wwwtest_id;
                document.getElementById("__ipv6wwwtest_ipv6and4Img").src = "http://ipv6and4" + __ipv6wwwtest_hostSuffix +"/ipv6and4.gif?id=" + __ipv6wwwtest_id;
        }
        function __ipv6wwwtest_sendResults(stage) {
                document.getElementById("__ipv6wwwtest_resultsImg").src = "http://results" + __ipv6wwwtest_hostSuffix +"/results.gif?id=" + __ipv6wwwtest_id + "&stage=" + stage + "&timeout=" + __ipv6wwwtest_timeoutMsec + "&stop_at_timeout=" + __ipv6wwwtest_stopAtTimeout + "&ipv4=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv4LoadTime) + "&ipv6=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6LoadTime) + "&ipv6and4=" + __ipv6wwwtest_getLoadTime(__ipv6wwwtest_ipv6and4LoadTime);
        };
        function __ipv6wwwtest_getLoadTime(item) {
                if (item == false) {
                        return "NaN";
                } else {
                        return (item.getTime() - __ipv6wwwtest_pageLoadTime.getTime());
                }
        }
        function __ipv6wwwtest_checkFinished() {
                if ( (! __ipv6wwwtest_ipv6LoadTime) || (! __ipv6wwwtest_ipv4LoadTime) || (! __ipv6wwwtest_ipv6and4LoadTime)) {
                        if (!__ipv6wwwtest_timeout) {
                                __ipv6wwwtest_timeout = window.setTimeout('__ipv6wwwtest_sendFinalResults()',__ipv6wwwtest_timeoutMsec);
                        }
                        __ipv6wwwtest_sendResults('partial');
                } else {
                        __ipv6wwwtest_sendFinalResults();
                }
        }
        function __ipv6wwwtest_sendFinalResults() {
                if (__ipv6wwwtest_timeout) {
                        window.clearTimeout(__ipv6wwwtest_timeout);
                }
                __ipv6wwwtest_sendResults('final');
                if (__ipv6wwwtest_stopAtTimeout) {
                        document.getElementById("__ipv6wwwtest_ipv4Img").src = "";
                        document.getElementById("__ipv6wwwtest_ipv6Img").src = "";
                        document.getElementById("__ipv6wwwtest_ipv6and4Img").src = "";
                }
        }
  addOnloadHook(function() {
        v6sub=document.getElementById("footer");
        v6sub.innerHTML=v6sub.innerHTML+'<div style="visibility: hidden;"> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv4Img" onload="__ipv6wwwtest_ipv4LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6and4Img" onload="__ipv6wwwtest_ipv6and4LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_ipv6Img" onload="__ipv6wwwtest_ipv6LoadTime = new Date(); __ipv6wwwtest_checkFinished();" /> <img height="1" width="1" src="" id="__ipv6wwwtest_resultsImg" /> </div>';
      if (document.getElementById("__ipv6wwwtest_ipv4Img") && document.getElementById("__ipv6wwwtest_ipv6Img") && document.getElementById("__ipv6wwwtest_ipv6and4Img") ) {
        __ipv6wwwtest_startTest();
      }
  });
}
//</source>

Latest revision as of 14:30, 20 November 2011

/** Add dismiss buttons to watchlist-message *************************************
 *
 *  Description: Allows multiple dismiss buttons on [[MediaWiki:Watchlist-details]] with bump-able cookie IDs.
 *  Note: HTML is backwards compatible with old version, new version ignores old syntax, except for dismissed IDs.
 *  Maintainers: [[User:Ruud Koot|Ruud Koot]], [[User:MZMcBride|MZMcBride]]
 */

function addDismissButton() {
  var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document;
  var watchItems = getElementsByClassName(docobj, 'div', 'watchlist-message');
  if(watchItems.length == 0) watchItems = getElementsByClassName(docobj, 'li', 'watchlist-message');
  if(watchItems.length == 0) return
  for(var i=0;i<watchItems.length;i++) {
    var watchlistCookieID = parseInt(watchItems[i].className.replace(/.*cookie\-ID\_(\d*).*/ig,'$1'));
    if(isNaN(watchlistCookieID)) continue
    if(document.cookie.indexOf('hidewatchlistmessage-' + watchlistCookieID + '=yes') != -1) {
      watchItems[i].style.display = 'none';
      continue;
    }
    var Button     = document.createElement('span');
    var ButtonLink = document.createElement('a');
    var ButtonText = document.createTextNode('dismiss');

    ButtonLink.setAttribute('id','dismissButton');
    ButtonLink.setAttribute('href','javascript:dismissWatchlistMessage(' + i + ',' + watchlistCookieID + ')');
    ButtonLink.setAttribute('title','Hide this message');
    ButtonLink.appendChild(ButtonText);

    Button.appendChild(document.createTextNode(' ['));
    Button.appendChild(ButtonLink);
    Button.appendChild(document.createTextNode(']'));
    watchItems[i].appendChild(Button);
  }
}

function dismissWatchlistMessage(num,cid) {
  var docobj = document.getElementById('bodyContent') || document.getElementById('content') || document
  var watchItems = getElementsByClassName(docobj, 'div', 'watchlist-message');
  if(watchItems.length == 0) watchItems = getElementsByClassName(docobj, 'li', 'watchlist-message');
  watchItems[num].style.display = 'none';

  var e = new Date();
  e.setTime( e.getTime() + (4*7*24*60*60*1000) );
  document.cookie = 'hidewatchlistmessage-' + cid + '=yes; expires=' + e.toGMTString() + '; path=/';
}
addOnloadHook(addDismissButton);