diff --git a/tracks/app/views/todo/destroy_action.rjs b/tracks/app/views/todo/destroy_action.rjs index 67422e9c..c3af3f04 100644 --- a/tracks/app/views/todo/destroy_action.rjs +++ b/tracks/app/views/todo/destroy_action.rjs @@ -1,5 +1,5 @@ if @saved - page.remove "item-#{@item.id}-container" + page.remove "item-#{@item.id}-container" # For some reason, the code below works on the project and context pages, but # not on the todo/list page when the item being deleted has just been added # page.visual_effect :fade, "item-#{@item.id}-container", :duration => 0.4 diff --git a/tracks/public/javascripts/accesskey-hints.js b/tracks/public/javascripts/accesskey-hints.js index a0c28ad8..cc2b3322 100644 --- a/tracks/public/javascripts/accesskey-hints.js +++ b/tracks/public/javascripts/accesskey-hints.js @@ -13,78 +13,57 @@ * Use the following markup to include the library: * */ +var accessKeyHintsAdder = { + + run : function() { + var elemTypes = new Array('a','area','button','input','label','legend','textarea'); + for(var i = 0; i < elemTypes.length; i++) + { + this.addHint(document.getElementsByTagName(elemTypes[i])); + } + }, + + addHint : function(elems) { + var elem; + var i = 0; -addEvent(window, "load", addAccessKeyHints); + processElements: + while(elem = elems.item(i++)) + { + var accessKey = elem.getAttributeNode("accesskey"); + if (!accessKey || !accessKey.value) + continue processElements; -function addAccessKeyHints() -{ - var elemTypes = new Array('a','area','button','input','label','legend','textarea'); - for(var i = 0; i < elemTypes.length; i++) - { - addHint(document.getElementsByTagName(elemTypes[i])); - } + var title = elem.getAttributeNode("title"); + if (title && title.value) + { + var overrides = new Array('accesskey','alt+','ctrl+'); + for (var j=0; j < overrides.length; j++) + { + if (title.value.toLowerCase().indexOf(overrides[j]) != -1) + continue processElements; + } + elem.setAttribute("title", title.value + ' (' + this.getHintText(accessKey.value) + ')'); + } + else + { + elem.setAttribute("title", this.getHintText(accessKey.value)); + } + } + }, + + getHintText : function(accessKey) { + return this.getModifier() + '+' + accessKey.toUpperCase(); + }, + + getModifier : function() { + var ua = navigator.userAgent.toLowerCase(); + if (ua.indexOf('mac') == -1) + return 'Alt'; + else + return 'Ctrl'; + } + } -function addHint(elems) -{ - var elem; - var i = 0; - - processElements: - while(elem = elems.item(i++)) - { - var accessKey = elem.getAttributeNode("accesskey"); - if (!accessKey || !accessKey.value) - continue processElements; - - var title = elem.getAttributeNode("title"); - if (title && title.value) - { - var overrides = new Array('accesskey','alt+','ctrl+'); - for (var j=0; j < overrides.length; j++) - { - if (title.value.toLowerCase().indexOf(overrides[j]) != -1) - continue processElements; - } - elem.setAttribute("title", title.value + ' (' + getHintText(accessKey.value) + ')'); - } - else - { - elem.setAttribute("title", getHintText(accessKey.value)); - } - } -} - -function getHintText(accessKey) -{ - return getModifier() + '+' + accessKey.toUpperCase(); -} - -function getModifier() -{ - var ua = navigator.userAgent.toLowerCase(); - if (ua.indexOf('mac') == -1) - return 'Alt'; - else - return 'Ctrl'; -} - -// This is a cross-browser function for event addition. -function addEvent(obj, evType, fn) -{ - if (obj.addEventListener) - { - obj.addEventListener(evType, fn, false); - return true; - } - else if (obj.attachEvent) - { - var r = obj.attachEvent("on" + evType, fn); - return r; - } - else - { - alert("Event handler could not be attached"); - return false; - } -} \ No newline at end of file +Event.observe(window, "load", accessKeyHintsAdder.run.bindAsEventListener(accessKeyHintsAdder)); \ No newline at end of file