From 5d4c60a880c9877615a4839b574995b9e8e0c000 Mon Sep 17 00:00:00 2001 From: Ibrahim Awwal Date: Mon, 17 Sep 2012 16:20:00 -0700 Subject: [PATCH 1/6] Move new post button handler to DiscussionRouter. --- .../coffee/src/discussion/discussion_router.coffee | 10 ++++++++++ lms/static/js/discussions-temp.js | 11 ----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lms/static/coffee/src/discussion/discussion_router.coffee b/lms/static/coffee/src/discussion/discussion_router.coffee index b2e41cd5af..a5219a68b9 100644 --- a/lms/static/coffee/src/discussion/discussion_router.coffee +++ b/lms/static/coffee/src/discussion/discussion_router.coffee @@ -14,6 +14,9 @@ if Backbone? @newPostView = new NewPostView(el: $(".new-post-article"), collection: @discussion) @nav.on "thread:created", @navigateToThread + @newPost = $('.new-post-article') + $('.new-post-btn').bind "click", @showNewPost + $('.new-post-cancel').bind "click", @hideNewPost allThreads: -> @nav.updateSidebar() @@ -43,3 +46,10 @@ if Backbone? navigateToAllThreads: => @navigate("", trigger: true) + + showNewPost: (event) => + @newPost.slideDown(300) + $('.new-post-title').focus() + + hideNewPost: (event) => + @newPost.slideUp(300) diff --git a/lms/static/js/discussions-temp.js b/lms/static/js/discussions-temp.js index dd6af6ef14..ec7c189938 100644 --- a/lms/static/js/discussions-temp.js +++ b/lms/static/js/discussions-temp.js @@ -55,8 +55,6 @@ $(document).ready(function() { // $topicDrop.bind('click', setTopic); $formTopicDropBtn.bind('click', showFormTopicDrop); $formTopicDropMenu.bind('click', setFormTopic); - $('.new-post-btn').bind('click', newPost); - $('.new-post-cancel').bind('click', closeNewPost); $body.delegate('[data-tooltip]', { 'mouseover': showTooltip, @@ -266,15 +264,6 @@ function setTopic(e) { showBrowse(); } -function newPost(e) { - $newPost.slideDown(300); - $('.new-post-title').focus(); -} - -function closeNewPost(e) { - $newPost.slideUp(300); -} - function showFormTopicDrop(e) { $formTopicDropBtn.addClass('is-dropped'); $formTopicDropMenu.show(); From 680e681feef421bc6de0cc41c8754c2a24c57c31 Mon Sep 17 00:00:00 2001 From: Ibrahim Awwal Date: Mon, 17 Sep 2012 17:13:06 -0700 Subject: [PATCH 2/6] Removed a lot of dead code and moved tooltips into their own file. --- .../src/discussion/views/new_post_view.coffee | 3 - lms/static/js/discussions-temp.js | 222 +----------------- lms/static/js/tooltips.js | 56 +++++ .../discussion/_js_head_dependencies.html | 1 + 4 files changed, 61 insertions(+), 221 deletions(-) create mode 100644 lms/static/js/tooltips.js diff --git a/lms/static/coffee/src/discussion/views/new_post_view.coffee b/lms/static/coffee/src/discussion/views/new_post_view.coffee index 2400a3b18e..ac5d43b60d 100644 --- a/lms/static/coffee/src/discussion/views/new_post_view.coffee +++ b/lms/static/coffee/src/discussion/views/new_post_view.coffee @@ -120,9 +120,6 @@ if Backbone? anonymous_to_peers = false || @$("input.discussion-anonymous-to-peers").is(":checked") follow = false || @$("input.discussion-follow").is(":checked") - $formTopicDropBtn.bind('click', showFormTopicDrop) - $formTopicDropMenu.bind('click', setFormTopic) - url = DiscussionUtil.urlFor('create_thread', @topicId) DiscussionUtil.safeAjax diff --git a/lms/static/js/discussions-temp.js b/lms/static/js/discussions-temp.js index ec7c189938..9ca1a9ba8f 100644 --- a/lms/static/js/discussions-temp.js +++ b/lms/static/js/discussions-temp.js @@ -2,30 +2,16 @@ var $body; var $browse; var $search; var $searchField; -var $topicDrop; var $currentBoard; -var $tooltip; + var $newPost; -var $thread; var $sidebar; var $sidebarWidthStyles; -var $formTopicDropBtn; -var $formTopicDropMenu; var $postListWrapper; -var $dropFilter; -var $topicFilter; var $discussionBody; var sidebarWidth; -var sidebarHeight; -var sidebarHeaderHeight; var sidebarXOffset; var scrollTop; -var discussionsBodyTop; -var discussionsBodyBottom; -var tooltipTimer; -var tooltipCoords; -var SIDEBAR_PADDING = 10; -var SIDEBAR_HEADER_HEIGHT = 87; $(document).ready(function() { @@ -35,13 +21,11 @@ $(document).ready(function() { $searchField = $('.post-search-field'); //$topicDrop = $('.browse-topic-drop-menu-wrapper'); $currentBoard = $('.current-board'); - $tooltip = $('
'); + $newPost = $('.new-post-article'); $sidebar = $('.sidebar'); $discussionBody = $('.discussion-body'); $postListWrapper = $('.post-list-wrapper'); - $formTopicDropBtn = $('.new-post-article .form-topic-drop-btn'); - $formTopicDropMenu = $('.new-post-article .form-topic-drop-menu-wrapper'); // $dropFilter = $('.browse-topic-drop-search-input'); // $topicFilter = $('.topic-drop-search-input'); $sidebarWidthStyles = $(''); @@ -53,15 +37,8 @@ $(document).ready(function() { //$browse.bind('click', showTopicDrop); //$search.bind('click', showSearch); // $topicDrop.bind('click', setTopic); - $formTopicDropBtn.bind('click', showFormTopicDrop); - $formTopicDropMenu.bind('click', setFormTopic); - - $body.delegate('[data-tooltip]', { - 'mouseover': showTooltip, - 'mousemove': moveTooltip, - 'mouseout': hideTooltip, - 'click': hideTooltip - }); +// $formTopicDropBtn.bind('click', showFormTopicDrop); +// $formTopicDropMenu.bind('click', setFormTopic); $body.delegate('.browse-topic-drop-search-input, .form-topic-drop-search-input', 'keyup', filterDrop); }); @@ -112,7 +89,6 @@ function filterDrop(e) { /* * single query */ - var $drop = $(e.target).parents('.topic_menu_wrapper, .browse-topic-drop-menu-wrapper'); var query = $(this).val(); var $items = $drop.find('a'); @@ -147,193 +123,3 @@ function filterDrop(e) { } }); } - -function showTooltip(e) { - var tooltipText = $(this).attr('data-tooltip'); - $tooltip.html(tooltipText); - $body.append($tooltip); - $(this).children().css('pointer-events', 'none'); - - tooltipCoords = { - x: e.pageX - ($tooltip.outerWidth() / 2), - y: e.pageY - ($tooltip.outerHeight() + 15) - }; - - $tooltip.css({ - 'left': tooltipCoords.x, - 'top': tooltipCoords.y - }); - - tooltipTimer = setTimeout(function() { - $tooltip.show().css('opacity', 1); - - tooltipTimer = setTimeout(function() { - hideTooltip(); - }, 3000); - }, 500); -} - -function moveTooltip(e) { - tooltipCoords = { - x: e.pageX - ($tooltip.outerWidth() / 2), - y: e.pageY - ($tooltip.outerHeight() + 15) - }; - - $tooltip.css({ - 'left': tooltipCoords.x, - 'top': tooltipCoords.y - }); -} - -function hideTooltip(e) { - $tooltip.hide().css('opacity', 0); - clearTimeout(tooltipTimer); -} - -function showBrowse(e) { - $browse.addClass('is-open'); - $search.removeClass('is-open'); - $searchField.val(''); -} - -function showSearch(e) { - $search.addClass('is-open'); - $browse.removeClass('is-open'); - setTimeout(function() { - $searchField.focus(); - }, 200); -} - -function showTopicDrop(e) { - e.preventDefault(); - - $browse.addClass('is-dropped'); - - if(!$topicDrop[0]) { - $topicDrop = $('.browse-topic-drop-menu-wrapper'); - } - - $topicDrop.show(); - $browse.unbind('click', showTopicDrop); - $body.bind('keyup', setActiveDropItem); - $browse.bind('click', hideTopicDrop); - setTimeout(function() { - $body.bind('click', hideTopicDrop); - }, 0); -} - -function hideTopicDrop(e) { - if(e.target == $('.browse-topic-drop-search-input')[0]) { - return; - } - - $browse.removeClass('is-dropped'); - $topicDrop.hide(); - $body.unbind('click', hideTopicDrop); - $browse.bind('click', showTopicDrop); -} - -function setTopic(e) { - if(e.target == $('.browse-topic-drop-search-input')[0]) { - return; - } - - var $item = $(e.target).closest('a'); - var boardName = $item.find('.board-name').html(); - - $item.parents('ul').not('.browse-topic-drop-menu').each(function(i) { - boardName = $(this).siblings('a').find('.board-name').html() + ' / ' + boardName; - }); - - if(!$currentBoard[0]) { - $currentBoard = $('.current-board'); - } - $currentBoard.html(boardName); - - var fontSize = 16; - $currentBoard.css('font-size', '16px'); - - while($currentBoard.width() > (sidebarWidth * .8) - 40) { - fontSize--; - if(fontSize < 11) { - break; - } - $currentBoard.css('font-size', fontSize + 'px'); - } - - showBrowse(); -} - -function showFormTopicDrop(e) { - $formTopicDropBtn.addClass('is-dropped'); - $formTopicDropMenu.show(); - $formTopicDropBtn.unbind('click', showFormTopicDrop); - $formTopicDropBtn.bind('click', hideFormTopicDrop); - - setTimeout(function() { - $body.bind('click', hideFormTopicDrop); - }, 0); - -} - -function hideFormTopicDrop(e) { - if(e.target == $('.topic-drop-search-input')[0]) { - return; - } - - $formTopicDropBtn.removeClass('is-dropped'); - $formTopicDropMenu.hide(); - $body.unbind('click', hideFormTopicDrop); - $formTopicDropBtn.unbind('click', hideFormTopicDrop); - $formTopicDropBtn.bind('click', showFormTopicDrop); -} - -function setFormTopic(e) { - if(e.target == $('.topic-drop-search-input')[0]) { - return; - } - $formTopicDropBtn.removeClass('is-dropped'); - hideFormTopicDrop(e); - - var $item = $(e.target); - var boardName = $item.html(); - $item.parents('ul').not('.form-topic-drop-menu').each(function(i) { - boardName = $(this).siblings('a').html() + ' / ' + boardName; - }); - $formTopicDropBtn.html(boardName + ' '); -} - -function updateSidebar(e) { - // determine page scroll attributes - scrollTop = $(window).scrollTop(); - discussionsBodyTop = $discussionBody.offset().top; - discussionsBodyBottom = discussionsBodyTop + $discussionBody.height(); - var windowHeight = $(window).height(); - - // toggle fixed positioning - if(scrollTop > discussionsBodyTop - SIDEBAR_PADDING) { - $sidebar.addClass('fixed'); - $sidebar.css('top', SIDEBAR_PADDING + 'px'); - } else { - $sidebar.removeClass('fixed'); - $sidebar.css('top', '0'); - } - - // set sidebar width - var sidebarWidth = .32 * $discussionBody.width() - 10; - $sidebar.css('width', sidebarWidth + 'px'); - - // show the entire sidebar at all times - var sidebarHeight = windowHeight - (scrollTop < discussionsBodyTop - SIDEBAR_PADDING ? discussionsBodyTop - scrollTop : SIDEBAR_PADDING) - SIDEBAR_PADDING - (scrollTop + windowHeight > discussionsBodyBottom + SIDEBAR_PADDING ? scrollTop + windowHeight - discussionsBodyBottom - SIDEBAR_PADDING : 0); - $sidebar.css('height', sidebarHeight > 400 ? sidebarHeight : 400 + 'px'); - - // update the list height - if(!$postListWrapper[0]) { - $postListWrapper = $('.post-list-wrapper'); - } - $postListWrapper.css('height', (sidebarHeight - SIDEBAR_HEADER_HEIGHT - 4) + 'px'); - - // update title wrappers - var titleWidth = sidebarWidth - 115; - $sidebarWidthStyles.html('.discussion-body .post-list a .title { width: ' + titleWidth + 'px !important; }'); -} diff --git a/lms/static/js/tooltips.js b/lms/static/js/tooltips.js new file mode 100644 index 0000000000..3cc771d241 --- /dev/null +++ b/lms/static/js/tooltips.js @@ -0,0 +1,56 @@ +var $body; +var $tooltip; +var tooltipTimer; +var tooltipCoords; +$(document).ready(function() { + $body = $('body'); + $tooltip = $('
'); + $body.delegate('[data-tooltip]', { + 'mouseover': showTooltip, + 'mousemove': moveTooltip, + 'mouseout': hideTooltip, + 'click': hideTooltip + }); +}); + +function showTooltip(e) { + var tooltipText = $(this).attr('data-tooltip'); + $tooltip.html(tooltipText); + $body.append($tooltip); + $(this).children().css('pointer-events', 'none'); + + tooltipCoords = { + x: e.pageX - ($tooltip.outerWidth() / 2), + y: e.pageY - ($tooltip.outerHeight() + 15) + }; + + $tooltip.css({ + 'left': tooltipCoords.x, + 'top': tooltipCoords.y + }); + + tooltipTimer = setTimeout(function() { + $tooltip.show().css('opacity', 1); + + tooltipTimer = setTimeout(function() { + hideTooltip(); + }, 3000); + }, 500); +} + +function moveTooltip(e) { + tooltipCoords = { + x: e.pageX - ($tooltip.outerWidth() / 2), + y: e.pageY - ($tooltip.outerHeight() + 15) + }; + + $tooltip.css({ + 'left': tooltipCoords.x, + 'top': tooltipCoords.y + }); +} + +function hideTooltip(e) { + $tooltip.hide().css('opacity', 0); + clearTimeout(tooltipTimer); +} diff --git a/lms/templates/discussion/_js_head_dependencies.html b/lms/templates/discussion/_js_head_dependencies.html index bde873fee1..e2adea7899 100644 --- a/lms/templates/discussion/_js_head_dependencies.html +++ b/lms/templates/discussion/_js_head_dependencies.html @@ -12,6 +12,7 @@ + From bb6f4cdb2eeac002c7809aa7f888b4fa5cf54d1b Mon Sep 17 00:00:00 2001 From: Ibrahim Awwal Date: Mon, 17 Sep 2012 18:07:52 -0700 Subject: [PATCH 3/6] Move dropdown filter into a more clearly named file, discussion-filter.js, and move the event bindings into the proper views. --- .../views/discussion_thread_list_view.coffee | 1 + .../src/discussion/views/new_post_view.coffee | 1 + ...scussions-temp.js => discussion-filter.js} | 49 ++----------------- .../discussion/_js_head_dependencies.html | 1 + lms/templates/discussion/index.html | 2 - lms/templates/discussion/single_thread.html | 1 - 6 files changed, 6 insertions(+), 49 deletions(-) rename lms/static/js/{discussions-temp.js => discussion-filter.js} (57%) diff --git a/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee b/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee index 6b8abbdc91..d998763f50 100644 --- a/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_thread_list_view.coffee @@ -9,6 +9,7 @@ if Backbone? "click .browse-topic-drop-search-input": "ignoreClick" "click .post-list .list-item a": "threadSelected" "click .post-list .more-pages a": "loadMorePages" + 'keyup .browse-topic-drop-search-input': DiscussionFilter.filterDrop initialize: -> @displayedCollection = new Discussion(@collection.models, pages: @collection.pages) diff --git a/lms/static/coffee/src/discussion/views/new_post_view.coffee b/lms/static/coffee/src/discussion/views/new_post_view.coffee index ac5d43b60d..1c49fdbc8e 100644 --- a/lms/static/coffee/src/discussion/views/new_post_view.coffee +++ b/lms/static/coffee/src/discussion/views/new_post_view.coffee @@ -21,6 +21,7 @@ if Backbone? "click .topic_dropdown_button": "toggleTopicDropdown" "click .topic_menu_wrapper": "setTopic" "click .topic_menu_search": "ignoreClick" + "keyup .form-topic-drop-search-input": DiscussionFilter.filterDrop # Because we want the behavior that when the body is clicked the menu is # closed, we need to ignore clicks in the search field and stop propagation. diff --git a/lms/static/js/discussions-temp.js b/lms/static/js/discussion-filter.js similarity index 57% rename from lms/static/js/discussions-temp.js rename to lms/static/js/discussion-filter.js index 9ca1a9ba8f..31ef3a8a07 100644 --- a/lms/static/js/discussions-temp.js +++ b/lms/static/js/discussion-filter.js @@ -1,49 +1,6 @@ -var $body; -var $browse; -var $search; -var $searchField; -var $currentBoard; +var DiscussionFilter = DiscussionFilter || {}; -var $newPost; -var $sidebar; -var $sidebarWidthStyles; -var $postListWrapper; -var $discussionBody; -var sidebarWidth; -var sidebarXOffset; -var scrollTop; - - -$(document).ready(function() { - $body = $('body'); - //$browse = $('.browse-search .browse'); - //$search = $('.browse-search .search'); - $searchField = $('.post-search-field'); - //$topicDrop = $('.browse-topic-drop-menu-wrapper'); - $currentBoard = $('.current-board'); - - $newPost = $('.new-post-article'); - $sidebar = $('.sidebar'); - $discussionBody = $('.discussion-body'); - $postListWrapper = $('.post-list-wrapper'); - // $dropFilter = $('.browse-topic-drop-search-input'); - // $topicFilter = $('.topic-drop-search-input'); - $sidebarWidthStyles = $(''); - $body.append($sidebarWidthStyles); - - sidebarWidth = $('.sidebar').width(); - sidebarXOffset = $sidebar.offset().top; - - //$browse.bind('click', showTopicDrop); - //$search.bind('click', showSearch); - // $topicDrop.bind('click', setTopic); -// $formTopicDropBtn.bind('click', showFormTopicDrop); -// $formTopicDropMenu.bind('click', setFormTopic); - - $body.delegate('.browse-topic-drop-search-input, .form-topic-drop-search-input', 'keyup', filterDrop); -}); - -function filterDrop(e) { +DiscussionFilter.filterDrop = function (e) { /* * multiple queries */ @@ -90,7 +47,7 @@ function filterDrop(e) { * single query */ var $drop = $(e.target).parents('.topic_menu_wrapper, .browse-topic-drop-menu-wrapper'); - var query = $(this).val(); + var query = $(e.target).val(); var $items = $drop.find('a'); if(query.length == 0) { diff --git a/lms/templates/discussion/_js_head_dependencies.html b/lms/templates/discussion/_js_head_dependencies.html index e2adea7899..c3a764439c 100644 --- a/lms/templates/discussion/_js_head_dependencies.html +++ b/lms/templates/discussion/_js_head_dependencies.html @@ -13,6 +13,7 @@ + diff --git a/lms/templates/discussion/index.html b/lms/templates/discussion/index.html index fc96640a35..8f04470506 100644 --- a/lms/templates/discussion/index.html +++ b/lms/templates/discussion/index.html @@ -21,8 +21,6 @@ <%include file="_new_post.html" /> - -
diff --git a/lms/templates/discussion/single_thread.html b/lms/templates/discussion/single_thread.html index 9ec05b1534..c890c7350f 100644 --- a/lms/templates/discussion/single_thread.html +++ b/lms/templates/discussion/single_thread.html @@ -16,7 +16,6 @@ <%block name="js_extra"> <%include file="_js_body_dependencies.html" /> <%static:js group='discussion'/> - From daa38af58c8ea52c42a13f2ffab6bef81f6da2dc Mon Sep 17 00:00:00 2001 From: Ibrahim Awwal Date: Mon, 17 Sep 2012 18:55:52 -0700 Subject: [PATCH 4/6] Convert DiscussionFilter to coffeescript. --- .../src/discussion/discussion_filter.coffee | 28 +++++++ lms/static/js/discussion-filter.js | 82 ------------------- 2 files changed, 28 insertions(+), 82 deletions(-) create mode 100644 lms/static/coffee/src/discussion/discussion_filter.coffee delete mode 100644 lms/static/js/discussion-filter.js diff --git a/lms/static/coffee/src/discussion/discussion_filter.coffee b/lms/static/coffee/src/discussion/discussion_filter.coffee new file mode 100644 index 0000000000..6b3ab03689 --- /dev/null +++ b/lms/static/coffee/src/discussion/discussion_filter.coffee @@ -0,0 +1,28 @@ +class @DiscussionFilter + @filterDrop: (e) -> + $drop = $(e.target).parents('.topic_menu_wrapper, .browse-topic-drop-menu-wrapper') + query = $(e.target).val() + $items = $drop.find('a') + + if(query.length == 0) + $items.removeClass('hidden') + return; + + $items.addClass('hidden') + $items.each (i) -> + thisText = $(this).not('.unread').text() + $(this).parents('ul').siblings('a').not('.unread').each (i) -> + thisText = thisText + ' ' + $(this).text(); + + test = true + terms = thisText.split(' ') + + if(thisText.toLowerCase().search(query.toLowerCase()) == -1) + test = false + + if(test) + $(this).removeClass('hidden') + # show children + $(this).parent().find('a').removeClass('hidden'); + # show parents + $(this).parents('ul').siblings('a').removeClass('hidden'); diff --git a/lms/static/js/discussion-filter.js b/lms/static/js/discussion-filter.js deleted file mode 100644 index 31ef3a8a07..0000000000 --- a/lms/static/js/discussion-filter.js +++ /dev/null @@ -1,82 +0,0 @@ -var DiscussionFilter = DiscussionFilter || {}; - -DiscussionFilter.filterDrop = function (e) { - /* - * multiple queries - */ - - // var $drop = $(e.target).parents('.form-topic-drop-menu-wrapper, .browse-topic-drop-menu-wrapper'); - // var queries = $(this).val().split(' '); - // var $items = $drop.find('a'); - - // if(queries.length == 0) { - // $items.show(); - // return; - // } - - // $items.hide(); - // $items.each(function(i) { - // var thisText = $(this).children().not('.unread').text(); - // $(this).parents('ul').siblings('a').not('.unread').each(function(i) { - // thisText = thisText + ' ' + $(this).text(); - // }); - - // var test = true; - // var terms = thisText.split(' '); - - // for(var i = 0; i < queries.length; i++) { - // if(thisText.toLowerCase().search(queries[i].toLowerCase()) == -1) { - // test = false; - // } - // } - - // if(test) { - // $(this).show(); - - // // show children - // $(this).parent().find('a').show(); - - // // show parents - // $(this).parents('ul').siblings('a').show(); - // } - // }); - - - - /* - * single query - */ - var $drop = $(e.target).parents('.topic_menu_wrapper, .browse-topic-drop-menu-wrapper'); - var query = $(e.target).val(); - var $items = $drop.find('a'); - - if(query.length == 0) { - $items.removeClass('hidden'); - return; - } - - $items.addClass('hidden'); - $items.each(function(i) { - var thisText = $(this).not('.unread').text(); - $(this).parents('ul').siblings('a').not('.unread').each(function(i) { - thisText = thisText + ' ' + $(this).text(); - }); - - var test = true; - var terms = thisText.split(' '); - - if(thisText.toLowerCase().search(query.toLowerCase()) == -1) { - test = false; - } - - if(test) { - $(this).removeClass('hidden'); - - // show children - $(this).parent().find('a').removeClass('hidden'); - - // show parents - $(this).parents('ul').siblings('a').removeClass('hidden'); - } - }); -} From aa301a805efb1ef9c4ff3868ad016de9c3d3014a Mon Sep 17 00:00:00 2001 From: Ibrahim Awwal Date: Mon, 17 Sep 2012 19:19:09 -0700 Subject: [PATCH 5/6] Converted tooltips to coffee too, and removed both converted files from the included js header. --- .../coffee/src/discussion/tooltips.coffee | 47 ++++++++++++++++ lms/static/js/tooltips.js | 56 ------------------- .../discussion/_js_head_dependencies.html | 2 - 3 files changed, 47 insertions(+), 58 deletions(-) create mode 100644 lms/static/coffee/src/discussion/tooltips.coffee delete mode 100644 lms/static/js/tooltips.js diff --git a/lms/static/coffee/src/discussion/tooltips.coffee b/lms/static/coffee/src/discussion/tooltips.coffee new file mode 100644 index 0000000000..d2aa6e4857 --- /dev/null +++ b/lms/static/coffee/src/discussion/tooltips.coffee @@ -0,0 +1,47 @@ +$ -> + new Tooltips + +class @Tooltips + constructor: () -> + @$body = $('body') + @$tooltip = $('
') + @$body.delegate '[data-tooltip]', + 'mouseover': @showTooltip, + 'mousemove': @moveTooltip, + 'mouseout': @hideTooltip, + 'click': @hideTooltip + + showTooltip: (e) => + tooltipText = $(e.target).attr('data-tooltip') + @$tooltip.html(tooltipText) + @$body.append(@$tooltip) + $(e.target).children().css('pointer-events', 'none') + + tooltipCoords = + x: e.pageX - (@$tooltip.outerWidth() / 2) + y: e.pageY - (@$tooltip.outerHeight() + 15) + + @$tooltip.css + 'left': tooltipCoords.x, + 'top': tooltipCoords.y + + @tooltipTimer = setTimeout ()=> + @$tooltip.show().css('opacity', 1) + + @tooltipTimer = setTimeout ()=> + @hideTooltip() + , 3000 + , 500 + + moveTooltip: (e) => + tooltipCoords = + x: e.pageX - (@$tooltip.outerWidth() / 2) + y: e.pageY - (@$tooltip.outerHeight() + 15) + + @$tooltip.css + 'left': tooltipCoords.x + 'top': tooltipCoords.y + + hideTooltip: (e) => + @$tooltip.hide().css('opacity', 0) + clearTimeout(@tooltipTimer) diff --git a/lms/static/js/tooltips.js b/lms/static/js/tooltips.js deleted file mode 100644 index 3cc771d241..0000000000 --- a/lms/static/js/tooltips.js +++ /dev/null @@ -1,56 +0,0 @@ -var $body; -var $tooltip; -var tooltipTimer; -var tooltipCoords; -$(document).ready(function() { - $body = $('body'); - $tooltip = $('
'); - $body.delegate('[data-tooltip]', { - 'mouseover': showTooltip, - 'mousemove': moveTooltip, - 'mouseout': hideTooltip, - 'click': hideTooltip - }); -}); - -function showTooltip(e) { - var tooltipText = $(this).attr('data-tooltip'); - $tooltip.html(tooltipText); - $body.append($tooltip); - $(this).children().css('pointer-events', 'none'); - - tooltipCoords = { - x: e.pageX - ($tooltip.outerWidth() / 2), - y: e.pageY - ($tooltip.outerHeight() + 15) - }; - - $tooltip.css({ - 'left': tooltipCoords.x, - 'top': tooltipCoords.y - }); - - tooltipTimer = setTimeout(function() { - $tooltip.show().css('opacity', 1); - - tooltipTimer = setTimeout(function() { - hideTooltip(); - }, 3000); - }, 500); -} - -function moveTooltip(e) { - tooltipCoords = { - x: e.pageX - ($tooltip.outerWidth() / 2), - y: e.pageY - ($tooltip.outerHeight() + 15) - }; - - $tooltip.css({ - 'left': tooltipCoords.x, - 'top': tooltipCoords.y - }); -} - -function hideTooltip(e) { - $tooltip.hide().css('opacity', 0); - clearTimeout(tooltipTimer); -} diff --git a/lms/templates/discussion/_js_head_dependencies.html b/lms/templates/discussion/_js_head_dependencies.html index c3a764439c..bde873fee1 100644 --- a/lms/templates/discussion/_js_head_dependencies.html +++ b/lms/templates/discussion/_js_head_dependencies.html @@ -12,8 +12,6 @@ - - From 7fb757c86c2e2c93c8c71cc2d1cef6f18de0d930 Mon Sep 17 00:00:00 2001 From: Ibrahim Awwal Date: Mon, 17 Sep 2012 23:03:36 -0700 Subject: [PATCH 6/6] Rename Tooltips => TooltipManager. --- .../discussion/{tooltips.coffee => tooltip_manager.coffee} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename lms/static/coffee/src/discussion/{tooltips.coffee => tooltip_manager.coffee} (96%) diff --git a/lms/static/coffee/src/discussion/tooltips.coffee b/lms/static/coffee/src/discussion/tooltip_manager.coffee similarity index 96% rename from lms/static/coffee/src/discussion/tooltips.coffee rename to lms/static/coffee/src/discussion/tooltip_manager.coffee index d2aa6e4857..695ad52e3d 100644 --- a/lms/static/coffee/src/discussion/tooltips.coffee +++ b/lms/static/coffee/src/discussion/tooltip_manager.coffee @@ -1,7 +1,7 @@ $ -> - new Tooltips + new TooltipManager -class @Tooltips +class @TooltipManager constructor: () -> @$body = $('body') @$tooltip = $('
')