From Wikipedia, the free encyclopedia
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.

/* Category watch ([[User:ais523/catwatch.js]]); adds entries on the watchlist if a page is

   added to a category (and is still in the category when the watchlist is checked). The entry

   will only appear if there is another page on the watchlist edited that day (if the addition

   was the only change on that day, it's neglected). The recategorisation of a page in a watched

   category will also trigger the watching, even if it's a different category that's added or

   removed (unless the watched category is removed); removals from the watched category can't

   be detected.

 

   A previous version of this script had a limit on the maximum size of a category that could be

   watched; this limit no longer exists.

 

   Thanks to [[User:TheDJ]] for helping me make this compatible with more browsers and preference

   settings, and to Roan Kattouw for fixing [[bugzilla:11275]] and making this cheap on the servers.

 

   Note that some users have had problems installing this in Internet Explorer; if the second cache

   bypass (after changing the category watchlist) doesn't work, deleting all your temporary

   Internet files seems to.

*/

 

//<source lang="javascript">

 

var cwwpajax;

// From [[WP:US]] mainpage (wpajax renamed to cwwpajax)

cwwpajax={

        download:function(bundle) {

                // mandatory: bundle.url

                // mandatory: bundle.async

                // optional:  bundle.onSuccess (xmlhttprequest, bundle)

                // optional:  bundle.onFailure (xmlhttprequest, bundle)

                // optional:  bundle.otherStuff OK too, passed to onSuccess and onFailure

 

                var x = window.XMLHttpRequest ? new XMLHttpRequest() // Firefox, Safari, Opera, IE7

                : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") // IE6

                : false;

 

                if (x) {

                        x.onreadystatechange=function() {

                                x.readyState==4 && cwwpajax.downloadComplete(x,bundle);

                        };

                        x.open("GET",bundle.url,bundle.async);

                        x.send(null); 

                }

                return x;

        },

 

        downloadComplete:function(x,bundle) {

                x.status==200 && ( bundle.onSuccess && bundle.onSuccess(x,bundle) || true )

                || ( bundle.onFailure && bundle.onFailure(x,bundle) || alert(x.statusText));

        }

};

 

// Example:

// function dlComplete(xmlreq, data) {

//      alert(data.message + xmlreq.responseText);

// }

//  cwwpajax.download({url:'http://en.wikipedia.org/?title=Thresher&action=raw', 

//                   onSuccess: dlComplete, message: "Here's what we got:\n\n" });

 

// End of [[WP:US]] quote

 

function cwOntoWatchlist(xmlreq, data)

{

  var a=xmlreq.responseText;

  var c=data.catname;

  var i;

  var diag="";

  if(a.indexOf("<categorymembers/>")!=-1) return; //cat is empty, nothing to do here

  if(a.indexOf('title="')==-1) return; // this error happens sometimes, just do nothing here

  var latesttime=0;

  var latestpage="";

  var temp, temp2;

  latestpage=a.split('title="')[1].split('" timestamp=')[0];

  latesttime=a.split('timestamp="')[1].split('"/>')[0];

  a=document.getElementsByTagName("h4"); //get dates in the watchlist

  var monthname=new Array();

  monthname'01'="January";

  monthname'02'="February";

  monthname'03'="March";

  monthname'04'="April";

  monthname'05'="May";

  monthname'06'="June";

  monthname'07'="July";

  monthname'08'="August";

  monthname'09'="September";

  monthname'10'="October";

  monthname'11'="November";

  monthname'12'="December";

  latesttime=new String(latesttime);

 

  var mn1, mn2, mn3, mn4;

 

  // Allow for different date styles:

  // January 29, 2001

  mn1=""+monthnamelatesttime.substr(5,2)]+" "+new Number(latesttime.substr(8,2))+

      ", "+latesttime.substr(0,4);

  // 29 January 2001

  mn2=""+new Number(latesttime.substr(8,2))+" "+monthnamelatesttime.substr(5,2)]+

      " "+latesttime.substr(0,4);

  // 2001 January 29

  mn3=""+latesttime.substr(0,4)+" "+monthnamelatesttime.substr(5,2)]+

      " "+new Number(latesttime.substr(8,2));

  // 2001-01-29

  mn4=""+latesttime.substr(0,4)+"-"+latesttime.substr(5,2)+"-"+latesttime.substr(8,2);

 

  i=a.length;

  while(i--)

  {

    if(ai].innerHTML==mn1||ai].innerHTML==mn2||ai].innerHTML==mn3||ai].innerHTML==mn4)

    {

      diag+=ai].innerHTML+":";

      temp=ai].nextSibling.firstChild;

      if(temp==null) temp=ai].nextSibling.nextSibling.firstChild;

      while(temp!=null)

      {

        diag+=temp.tagname+"!";

        if(temp.tagName!=null)

        if(temp.tagName.toLowerCase()=="li")

        {

          temp2=temp.innerHTML.match(/; ([0-9][0-9]):([0-9][0-9])(:[0-9][0-9])? \. \./);

          temp2=new Number(temp21])*100+new Number(temp22]);

          diag+=temp2+",";

          if(temp2<new Number(latesttime.substr(11,2)+latesttime.substr(14,2))) {temp2=temp; break;}

        }

        temp2=temp; temp=temp.nextSibling;

        if(temp==null) break;

      }

      temp=document.createElement("li");

      if(temp2==null) {return;}

      if(ai].nextSibling.firstChild!=null) // IE-like whitespace handling

        ai].nextSibling.insertBefore(temp,temp2);

      else // Firefox-like whitespace handling

        ai].nextSibling.nextSibling.insertBefore(temp,temp2);

 

      temp.innerHTML="(diff) (hist) . . <a "+

                     "href='http://en.wikipedia.org/wiki/Category:"+

                     encodeURI(c)+

                     "'>Category:"+c+"</a>; "+latesttime.substr(11,2)+":"+latesttime.substr(14,2)+

                     " . . (+ <a "+

                     "href='http://en.wikipedia.org/wiki/"+

                     encodeURI(latestpage)+"'>"+latestpage+"</a> "+

                     "(<a href='http://en.wikipedia.org/?title="+encodeURI(latestpage)+

                     "&diff=last'>last</a>))";

      return;

    }

  }

}

 

var WatchedCategories;

 

//An example of a query to check a category would be

 

//http://en.wikipedia.org/w/api.php?action=query&list=categorymembers&cmcategory=Wikipedia%20protected%20edit%20requests&cmlimit=1&cmprop=title|timestamp&cmsort=timestamp&cmdir=desc&format=xml

$(function(){

  //DHTMLloadscript( 'http://en.wikipedia.org/?title=User:'+wgUserName

  //  +'/WatchedCategories.js&action=raw&ctype=text/javascript');

  if(wgPageName=="Special:Watchlist")

  {

    // load the script using AJAX, because DHTML fails in Firefox and document.write fails in Safari

    var sru='http://en.wikipedia.org/?title=User:'+wgUserName+'/WatchedCategories.js&action=raw&ctype=text/javascript';

    var sr=cwwpajax.download({url:sru,async:false});

    eval(sr.responseText);

    if(WatchedCategories==undefined)

    {

      if(confirm("You don't have a category watchlist yet. Do you want to create one?\n\n"+

                 "(Please provide the following debug information when reporting a problem if "+

                 "this message comes up when you already have a category watchlist: "+

                 (sr.responseText.length<50 ? "responseText='"+sr.responseText+"'" :

                 "responseText.length="+sr.responseText.length)+", statusText='"+sr.statusText

                 +"'.)"))

        location.href='http://en.wikipedia.org/?title=User:'+wgUserName+

        '/WatchedCategories.js&action=edit&preload=User:Ais523/WatchedCategoriesTemplate.js';

    }

    else

    {

      var i;

      for(i=0; i<WatchedCategories.length; i++)

      {

        var a=WatchedCategoriesi];

        cwwpajax.download({url:'http://en.wikipedia.org/w/api.php?action=query&list=categorymembers&'

                           +'cmtitle=Category:'+encodeURI(a)+'&cmlimit=1&cmprop=title'

                           +'|timestamp&cmsort=timestamp&cmdir=desc&format=xml',

                           onSuccess:cwOntoWatchlist,

                           catname:a, async:true});

      }

    }

  }

});

 

//</source>

//<!--[[Category:Wikipedia scripts]]-->
From Wikipedia, the free encyclopedia
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.

/* Category watch ([[User:ais523/catwatch.js]]); adds entries on the watchlist if a page is

   added to a category (and is still in the category when the watchlist is checked). The entry

   will only appear if there is another page on the watchlist edited that day (if the addition

   was the only change on that day, it's neglected). The recategorisation of a page in a watched

   category will also trigger the watching, even if it's a different category that's added or

   removed (unless the watched category is removed); removals from the watched category can't

   be detected.

 

   A previous version of this script had a limit on the maximum size of a category that could be

   watched; this limit no longer exists.

 

   Thanks to [[User:TheDJ]] for helping me make this compatible with more browsers and preference

   settings, and to Roan Kattouw for fixing [[bugzilla:11275]] and making this cheap on the servers.

 

   Note that some users have had problems installing this in Internet Explorer; if the second cache

   bypass (after changing the category watchlist) doesn't work, deleting all your temporary

   Internet files seems to.

*/

 

//<source lang="javascript">

 

var cwwpajax;

// From [[WP:US]] mainpage (wpajax renamed to cwwpajax)

cwwpajax={

        download:function(bundle) {

                // mandatory: bundle.url

                // mandatory: bundle.async

                // optional:  bundle.onSuccess (xmlhttprequest, bundle)

                // optional:  bundle.onFailure (xmlhttprequest, bundle)

                // optional:  bundle.otherStuff OK too, passed to onSuccess and onFailure

 

                var x = window.XMLHttpRequest ? new XMLHttpRequest() // Firefox, Safari, Opera, IE7

                : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") // IE6

                : false;

 

                if (x) {

                        x.onreadystatechange=function() {

                                x.readyState==4 && cwwpajax.downloadComplete(x,bundle);

                        };

                        x.open("GET",bundle.url,bundle.async);

                        x.send(null); 

                }

                return x;

        },

 

        downloadComplete:function(x,bundle) {

                x.status==200 && ( bundle.onSuccess && bundle.onSuccess(x,bundle) || true )

                || ( bundle.onFailure && bundle.onFailure(x,bundle) || alert(x.statusText));

        }

};

 

// Example:

// function dlComplete(xmlreq, data) {

//      alert(data.message + xmlreq.responseText);

// }

//  cwwpajax.download({url:'http://en.wikipedia.org/?title=Thresher&action=raw', 

//                   onSuccess: dlComplete, message: "Here's what we got:\n\n" });

 

// End of [[WP:US]] quote

 

function cwOntoWatchlist(xmlreq, data)

{

  var a=xmlreq.responseText;

  var c=data.catname;

  var i;

  var diag="";

  if(a.indexOf("<categorymembers/>")!=-1) return; //cat is empty, nothing to do here

  if(a.indexOf('title="')==-1) return; // this error happens sometimes, just do nothing here

  var latesttime=0;

  var latestpage="";

  var temp, temp2;

  latestpage=a.split('title="')[1].split('" timestamp=')[0];

  latesttime=a.split('timestamp="')[1].split('"/>')[0];

  a=document.getElementsByTagName("h4"); //get dates in the watchlist

  var monthname=new Array();

  monthname'01'="January";

  monthname'02'="February";

  monthname'03'="March";

  monthname'04'="April";

  monthname'05'="May";

  monthname'06'="June";

  monthname'07'="July";

  monthname'08'="August";

  monthname'09'="September";

  monthname'10'="October";

  monthname'11'="November";

  monthname'12'="December";

  latesttime=new String(latesttime);

 

  var mn1, mn2, mn3, mn4;

 

  // Allow for different date styles:

  // January 29, 2001

  mn1=""+monthnamelatesttime.substr(5,2)]+" "+new Number(latesttime.substr(8,2))+

      ", "+latesttime.substr(0,4);

  // 29 January 2001

  mn2=""+new Number(latesttime.substr(8,2))+" "+monthnamelatesttime.substr(5,2)]+

      " "+latesttime.substr(0,4);

  // 2001 January 29

  mn3=""+latesttime.substr(0,4)+" "+monthnamelatesttime.substr(5,2)]+

      " "+new Number(latesttime.substr(8,2));

  // 2001-01-29

  mn4=""+latesttime.substr(0,4)+"-"+latesttime.substr(5,2)+"-"+latesttime.substr(8,2);

 

  i=a.length;

  while(i--)

  {

    if(ai].innerHTML==mn1||ai].innerHTML==mn2||ai].innerHTML==mn3||ai].innerHTML==mn4)

    {

      diag+=ai].innerHTML+":";

      temp=ai].nextSibling.firstChild;

      if(temp==null) temp=ai].nextSibling.nextSibling.firstChild;

      while(temp!=null)

      {

        diag+=temp.tagname+"!";

        if(temp.tagName!=null)

        if(temp.tagName.toLowerCase()=="li")

        {

          temp2=temp.innerHTML.match(/; ([0-9][0-9]):([0-9][0-9])(:[0-9][0-9])? \. \./);

          temp2=new Number(temp21])*100+new Number(temp22]);

          diag+=temp2+",";

          if(temp2<new Number(latesttime.substr(11,2)+latesttime.substr(14,2))) {temp2=temp; break;}

        }

        temp2=temp; temp=temp.nextSibling;

        if(temp==null) break;

      }

      temp=document.createElement("li");

      if(temp2==null) {return;}

      if(ai].nextSibling.firstChild!=null) // IE-like whitespace handling

        ai].nextSibling.insertBefore(temp,temp2);

      else // Firefox-like whitespace handling

        ai].nextSibling.nextSibling.insertBefore(temp,temp2);

 

      temp.innerHTML="(diff) (hist) . . <a "+

                     "href='http://en.wikipedia.org/wiki/Category:"+

                     encodeURI(c)+

                     "'>Category:"+c+"</a>; "+latesttime.substr(11,2)+":"+latesttime.substr(14,2)+

                     " . . (+ <a "+

                     "href='http://en.wikipedia.org/wiki/"+

                     encodeURI(latestpage)+"'>"+latestpage+"</a> "+

                     "(<a href='http://en.wikipedia.org/?title="+encodeURI(latestpage)+

                     "&diff=last'>last</a>))";

      return;

    }

  }

}

 

var WatchedCategories;

 

//An example of a query to check a category would be

 

//http://en.wikipedia.org/w/api.php?action=query&list=categorymembers&cmcategory=Wikipedia%20protected%20edit%20requests&cmlimit=1&cmprop=title|timestamp&cmsort=timestamp&cmdir=desc&format=xml

$(function(){

  //DHTMLloadscript( 'http://en.wikipedia.org/?title=User:'+wgUserName

  //  +'/WatchedCategories.js&action=raw&ctype=text/javascript');

  if(wgPageName=="Special:Watchlist")

  {

    // load the script using AJAX, because DHTML fails in Firefox and document.write fails in Safari

    var sru='http://en.wikipedia.org/?title=User:'+wgUserName+'/WatchedCategories.js&action=raw&ctype=text/javascript';

    var sr=cwwpajax.download({url:sru,async:false});

    eval(sr.responseText);

    if(WatchedCategories==undefined)

    {

      if(confirm("You don't have a category watchlist yet. Do you want to create one?\n\n"+

                 "(Please provide the following debug information when reporting a problem if "+

                 "this message comes up when you already have a category watchlist: "+

                 (sr.responseText.length<50 ? "responseText='"+sr.responseText+"'" :

                 "responseText.length="+sr.responseText.length)+", statusText='"+sr.statusText

                 +"'.)"))

        location.href='http://en.wikipedia.org/?title=User:'+wgUserName+

        '/WatchedCategories.js&action=edit&preload=User:Ais523/WatchedCategoriesTemplate.js';

    }

    else

    {

      var i;

      for(i=0; i<WatchedCategories.length; i++)

      {

        var a=WatchedCategoriesi];

        cwwpajax.download({url:'http://en.wikipedia.org/w/api.php?action=query&list=categorymembers&'

                           +'cmtitle=Category:'+encodeURI(a)+'&cmlimit=1&cmprop=title'

                           +'|timestamp&cmsort=timestamp&cmdir=desc&format=xml',

                           onSuccess:cwOntoWatchlist,

                           catname:a, async:true});

      }

    }

  }

});

 

//</source>

//<!--[[Category:Wikipedia scripts]]-->

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook