Blackboard discussion board keyboard shortcuts

By rayslinky Last update Nov 28, 2009 — Installed 156 times.

There are 8 previous versions of this script.

// ==UserScript==
// @name Blackboard discussion board keyboard shortcuts
// @namespace http://userscripts.org/users/84300
// @description Provides keyboard shortcuts for the wretched discussion board on Blackboard
// @include http*://*blackboard*/*discussionboard*
// ==/UserScript==

document.addEventListener("keypress", function(e) {
  // define keys and search terms
  var NEXTPOSTKEY='k';
  var NEXTPOSTTEXT=/Next Post/;
  var PREVPOSTKEY='j';
  var PREVPOSTTEXT=/Previous Post/;
  var NEXTTHRKEY='n';
  var NEXTTHRTEXT=/Next Thread/;
  var PREVTHRKEY='b';
  var PREVTHRTEXT=/Previous Thread/;
  var REPLYKEY='r';
  var REPLYTEXT=/Reply/;
  var UPKEY='u';
  var UPTEXT=/List View|Tree View|Skip the Action Bar links|alt="Select the date"/;
  var FIRSTKEY='f';
  var FIRSTTEXT=/treecontrol/;
  var THREADKEY='t';
  var THREADTEXT=/alt="Thread"/;
  var CHECKBOX='c';

  // check for the key and perform the search if it matches
  if (!(e.altKey || e.ctrlKey)) {
    if(String.fromCharCode(e.which) == NEXTPOSTKEY) searchLink(NEXTPOSTTEXT,0)
    if(String.fromCharCode(e.which) == PREVPOSTKEY) searchLink(PREVPOSTTEXT,0)
    if(String.fromCharCode(e.which) == NEXTTHRKEY) searchLink(NEXTTHRTEXT,0)
    if(String.fromCharCode(e.which) == PREVTHRKEY) searchLink(PREVTHRTEXT,0)
    if(String.fromCharCode(e.which) == REPLYKEY) searchLink(REPLYTEXT,0)
    if(String.fromCharCode(e.which) == UPKEY) searchLink(UPTEXT,-1)
    if(String.fromCharCode(e.which) == FIRSTKEY) searchLink(FIRSTTEXT,1)
    if(String.fromCharCode(e.which) == THREADKEY) searchLink(THREADTEXT,0)
    if(String.fromCharCode(e.which) == CHECKBOX) toggleCheckboxes()
  }
}, true);
function searchLink(searchText, adjust) {
  // searches for the text of a link, 
  // then either follows it or one around it based on the value of adjust
  for (i=0; i<document.links.length; i++) {
    if (document.links[i].innerHTML.search(searchText) > -1) {
      window.location.href = document.links[i+adjust].href;
      break;
    }
  }
}
function toggleCheckboxes() {
  // looks through forms for items named formCBs and toggles them
  // we could search type=checkbox, but there are a couple that probably
  // shouldn't be toggled, including restrict_start and restrict_end
  for (i=0;i<document.forms.length;i++) {
    for (j=0;j<document.forms[i].elements.length;j++) {
      if(document.forms[i].elements[j].name=="formCBs") {
	if(document.forms[i].elements[j].checked==false) {
	  document.forms[i].elements[j].checked=true
	} else {
	  document.forms[i].elements[j].checked=false
	}
      }
    }
  }
}