diff --git a/common/static/common/js/discussion/utils.js b/common/static/common/js/discussion/utils.js index 6e5e564c3e..de3507495f 100644 --- a/common/static/common/js/discussion/utils.js +++ b/common/static/common/js/discussion/utils.js @@ -95,9 +95,6 @@ retrieve_discussion: '/courses/' + $$course_id + '/discussion/forum/' + param + '/inline', retrieve_single_thread: '/courses/' + $$course_id + '/discussion/forum/' + param + '/threads/' + param1, openclose_thread: '/courses/' + $$course_id + '/discussion/threads/' + param + '/close', - permanent_link_thread: '/courses/' + $$course_id + '/discussion/forum/' + param + '/threads/' + param1, - permanent_link_comment: '/courses/' + $$course_id + - '/discussion/forum/' + param + '/threads/' + param1 + '#' + param2, user_profile: '/courses/' + $$course_id + '/discussion/forum/users/' + param, followed_threads: '/courses/' + $$course_id + '/discussion/forum/users/' + param + '/followed', threads: '/courses/' + $$course_id + '/discussion/forum', diff --git a/common/static/common/js/discussion/views/discussion_thread_list_view.js b/common/static/common/js/discussion/views/discussion_thread_list_view.js index 6199d776fe..7548f9ad70 100644 --- a/common/static/common/js/discussion/views/discussion_thread_list_view.js +++ b/common/static/common/js/discussion/views/discussion_thread_list_view.js @@ -136,7 +136,7 @@ 'css_class': searchAlert.attributes.css_class }); edx.HtmlUtils.append(self.$('.search-alerts'), content); - return self.$('#search-alert-' + searchAlert.cid + ' a.dismiss') + return self.$('#search-alert-' + searchAlert.cid + ' .dismiss') .bind('click', searchAlert, function(event) { return self.removeSearchAlert(event.data.cid); }); @@ -374,7 +374,8 @@ neverRead = !thread.get('read') && threadUnreadCommentCount === threadCommentCount, context = _.extend( { - neverRead: neverRead + neverRead: neverRead, + threadUrl: thread.urlFor('retrieve') }, thread.toJSON() ); diff --git a/common/static/common/js/discussion/views/discussion_topic_menu_view.js b/common/static/common/js/discussion/views/discussion_topic_menu_view.js index bebd6c7db7..bb1e88cbdb 100644 --- a/common/static/common/js/discussion/views/discussion_topic_menu_view.js +++ b/common/static/common/js/discussion/views/discussion_topic_menu_view.js @@ -42,11 +42,11 @@ this.selectedTopic = this.$('.js-selected-topic'); this.hideTopicDropdown(); if (this.getCurrentTopicId()) { - this.setTopic(this.$('a.topic-title').filter( + this.setTopic(this.$('.topic-title').filter( '[data-discussion-id="' + this.getCurrentTopicId() + '"]') ); } else { - this.setTopic(this.$('a.topic-title').first()); + this.setTopic(this.$('.topic-title').first()); } return this.$el; }, diff --git a/common/static/common/js/discussion/views/new_post_view.js b/common/static/common/js/discussion/views/new_post_view.js index 4bbadff0e0..6d2396870b 100644 --- a/common/static/common/js/discussion/views/new_post_view.js +++ b/common/static/common/js/discussion/views/new_post_view.js @@ -177,7 +177,7 @@ DiscussionUtil.clearFormErrors(this.$('.post-errors')); this.$('.wmd-preview p').html(''); if (this.isTabMode()) { - return this.topicView.setTopic(this.$('a.topic-title').first()); + return this.topicView.setTopic(this.$('.topic-title').first()); } }; diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_edit_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_edit_view_spec.js index e944985c9e..2467a4564f 100644 --- a/common/static/common/js/spec/discussion/view/discussion_thread_edit_view_spec.js +++ b/common/static/common/js/spec/discussion/view/discussion_thread_edit_view_spec.js @@ -43,7 +43,7 @@ }; }); - view.$el.find('a.topic-title').filter(function(idx, el) { + view.$el.find('.topic-title').filter(function(idx, el) { return $(el).data('discussionId') === newTopicId; }).click(); // set new topic view.$('.edit-post-title').val('changed thread title'); // set new title diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_show_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_show_view_spec.js index 71fd7df95b..b13c9d6c23 100644 --- a/common/static/common/js/spec/discussion/view/discussion_thread_show_view_spec.js +++ b/common/static/common/js/spec/discussion/view/discussion_thread_show_view_spec.js @@ -141,9 +141,9 @@ return this.thread.set('user_url', 'test_user_url'); }); checkUserLink = function(element, is_ta, is_staff) { - expect(element.find('a.username').length).toEqual(1); - expect(element.find('a.username').text()).toEqual('test_user'); - expect(element.find('a.username').attr('href')).toEqual('test_user_url'); + expect(element.find('.username').length).toEqual(1); + expect(element.find('.username').text()).toEqual('test_user'); + expect(element.find('.username').attr('href')).toEqual('test_user_url'); expect(element.find('.user-label-community-ta').length).toEqual(is_ta ? 1 : 0); return expect(element.find('.user-label-staff').length).toEqual(is_staff ? 1 : 0); }; @@ -168,7 +168,7 @@ var $el; this.thread.set('username', null); $el = $('#fixture-element').html(this.view.getAuthorDisplay()); - expect($el.find('a.username').length).toEqual(0); + expect($el.find('.username').length).toEqual(0); return expect($el.text()).toMatch(/^(\s*)anonymous(\s*)$/); }); }); diff --git a/common/static/common/js/spec/discussion/view/discussion_topic_menu_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_topic_menu_view_spec.js index 1637d4dc3f..08684d9dfd 100644 --- a/common/static/common/js/spec/discussion/view/discussion_topic_menu_view_spec.js +++ b/common/static/common/js/spec/discussion/view/discussion_topic_menu_view_spec.js @@ -98,7 +98,7 @@ var dropdownText; this.createTopicView(); this.view.maxNameWidth = this.defaultTextWidth + 1; - this.view.$el.find('a.topic-title').first().click(); + this.view.$el.find('.topic-menu-entry').first().click(); dropdownText = this.view.$el.find('.js-selected-topic').text(); expect(this.completeText).toEqual(dropdownText); }); @@ -106,11 +106,11 @@ it('truncation happens with specific title lengths', function() { var dropdownText; this.createTopicView(); - this.view.$el.find('a.topic-title')[2].click(); + this.view.$el.find('.topic-menu-entry')[2].click(); dropdownText = this.view.$el.find('.js-selected-topic').text(); expect(dropdownText).toEqual('…/Very long category name'); - this.view.$el.find('a.topic-title')[5].click(); + this.view.$el.find('.topic-menu-entry')[5].click(); dropdownText = this.view.$el.find('.js-selected-topic').text(); expect(dropdownText).toEqual('… / What Are Your Goals f …'); }); @@ -118,7 +118,7 @@ it('truncation happens with longer title lengths', function() { var dropdownText; this.createTopicView(); - this.view.$el.find('a.topic-title')[3].click(); + this.view.$el.find('.topic-menu-entry')[3].click(); dropdownText = this.view.$el.find('.js-selected-topic').text(); expect(dropdownText).toEqual('… / Very very very very l …'); }); @@ -126,7 +126,7 @@ it('titles are escaped before display', function() { var dropdownText; this.createTopicView(); - this.view.$el.find('a.topic-title')[4].click(); + this.view.$el.find('.topic-menu-entry')[4].click(); dropdownText = this.view.$el.find('.js-selected-topic').text(); expect(dropdownText).toContain('em>'); }); @@ -135,7 +135,7 @@ var dropdownText; this.createTopicView(); this.view.maxNameWidth = this.selectedOptionText.length + 100; - this.view.$el.find('a.topic-title').first().click(); + this.view.$el.find('.topic-title').first().click(); dropdownText = this.view.$el.find('.js-selected-topic').text(); expect(dropdownText.indexOf('/ span>')).toEqual(-1); }); diff --git a/common/static/common/js/spec/discussion/view/new_post_view_spec.js b/common/static/common/js/spec/discussion/view/new_post_view_spec.js index 4b6ad4e3ed..0582fbcc61 100644 --- a/common/static/common/js/spec/discussion/view/new_post_view_spec.js +++ b/common/static/common/js/spec/discussion/view/new_post_view_spec.js @@ -82,9 +82,9 @@ it('only enables the cohort selector when applicable', function() { DiscussionSpecHelper.makeModerator(); checkVisibility(this.view, true, false, true); - $('.topic-title:contains(General)').click(); + $('.topic-menu-entry:contains(General)').click(); checkVisibility(this.view, true, true, false); - $('.topic-title:contains(Topic)').click(); + $('.topic-menu-entry:contains(Topic)').click(); return checkVisibility(this.view, true, false, false); }); it('allows the user to make a cohort selection', function() { diff --git a/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js b/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js index f445aef452..a177a9ec9f 100644 --- a/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js +++ b/common/static/common/js/spec/discussion/view/thread_response_show_view_spec.js @@ -234,9 +234,9 @@ return spyOn(DiscussionUtil, 'urlFor').and.returnValue('test_endorser_url'); }); checkUserLink = function(element, is_ta, is_staff) { - expect(element.find('a.username').length).toEqual(1); - expect(element.find('a.username').text()).toEqual('test_endorser'); - expect(element.find('a.username').attr('href')).toEqual('test_endorser_url'); + expect(element.find('.username').length).toEqual(1); + expect(element.find('.username').text()).toEqual('test_endorser'); + expect(element.find('.username').attr('href')).toEqual('test_endorser_url'); expect(element.find('.user-label-community-ta').length).toEqual(is_ta ? 1 : 0); return expect(element.find('.user-label-staff').length).toEqual(is_staff ? 1 : 0); }; diff --git a/common/static/common/templates/discussion/alert-popup.underscore b/common/static/common/templates/discussion/alert-popup.underscore index f00bdc53a5..0442f5580b 100644 --- a/common/static/common/templates/discussion/alert-popup.underscore +++ b/common/static/common/templates/discussion/alert-popup.underscore @@ -1,6 +1,6 @@ diff --git a/common/static/common/templates/discussion/forum-action-answer.underscore b/common/static/common/templates/discussion/forum-action-answer.underscore index e9be427e7a..4f9c2bd8fd 100644 --- a/common/static/common/templates/discussion/forum-action-answer.underscore +++ b/common/static/common/templates/discussion/forum-action-answer.underscore @@ -1,10 +1,10 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-close.underscore b/common/static/common/templates/discussion/forum-action-close.underscore index f32319d601..72e5369bc3 100644 --- a/common/static/common/templates/discussion/forum-action-close.underscore +++ b/common/static/common/templates/discussion/forum-action-close.underscore @@ -1,5 +1,5 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-delete.underscore b/common/static/common/templates/discussion/forum-action-delete.underscore index c779936f4a..aed4b7547e 100644 --- a/common/static/common/templates/discussion/forum-action-delete.underscore +++ b/common/static/common/templates/discussion/forum-action-delete.underscore @@ -1,6 +1,6 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-edit.underscore b/common/static/common/templates/discussion/forum-action-edit.underscore index 7c67830faf..1386da2e45 100644 --- a/common/static/common/templates/discussion/forum-action-edit.underscore +++ b/common/static/common/templates/discussion/forum-action-edit.underscore @@ -1,6 +1,6 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-endorse.underscore b/common/static/common/templates/discussion/forum-action-endorse.underscore index 774004a4f5..cf4c4eb30b 100644 --- a/common/static/common/templates/discussion/forum-action-endorse.underscore +++ b/common/static/common/templates/discussion/forum-action-endorse.underscore @@ -1,10 +1,10 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-follow.underscore b/common/static/common/templates/discussion/forum-action-follow.underscore index 709cf36cb9..f95c0628e8 100644 --- a/common/static/common/templates/discussion/forum-action-follow.underscore +++ b/common/static/common/templates/discussion/forum-action-follow.underscore @@ -1,10 +1,10 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-pin.underscore b/common/static/common/templates/discussion/forum-action-pin.underscore index f853f2461f..7ae4e3f40a 100644 --- a/common/static/common/templates/discussion/forum-action-pin.underscore +++ b/common/static/common/templates/discussion/forum-action-pin.underscore @@ -1,5 +1,5 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-report.underscore b/common/static/common/templates/discussion/forum-action-report.underscore index 626f52f3eb..0975976975 100644 --- a/common/static/common/templates/discussion/forum-action-report.underscore +++ b/common/static/common/templates/discussion/forum-action-report.underscore @@ -1,5 +1,5 @@
  • - +
  • diff --git a/common/static/common/templates/discussion/forum-action-vote.underscore b/common/static/common/templates/discussion/forum-action-vote.underscore index b8186291aa..7fa4a50499 100644 --- a/common/static/common/templates/discussion/forum-action-vote.underscore +++ b/common/static/common/templates/discussion/forum-action-vote.underscore @@ -2,7 +2,7 @@ - + diff --git a/common/static/common/templates/discussion/forum-actions.underscore b/common/static/common/templates/discussion/forum-actions.underscore index 9b4b0eaedf..d246af17df 100644 --- a/common/static/common/templates/discussion/forum-actions.underscore +++ b/common/static/common/templates/discussion/forum-actions.underscore @@ -3,10 +3,10 @@ <% _.each(primaryActions, function(action) { print(_.template($('#forum-action-' + action).html())({})) }) %>
  • - - <%- gettext("More") %> +
    - - + +
    diff --git a/common/test/acceptance/pages/lms/discussion.py b/common/test/acceptance/pages/lms/discussion.py index 87dae90b7c..092d4e1656 100644 --- a/common/test/acceptance/pages/lms/discussion.py +++ b/common/test/acceptance/pages/lms/discussion.py @@ -188,11 +188,10 @@ class DiscussionThreadPage(PageObject, DiscussionPageMixin): def vote_response(self, response_id): current_count = self._get_element_text(".response_{} .discussion-response .action-vote .vote-count".format(response_id)) self._find_within(".response_{} .discussion-response .action-vote".format(response_id)).first.click() - self.wait_for_ajax() - EmptyPromise( + self.wait_for( lambda: current_count != self.get_response_vote_count(response_id), - "Response is voted" - ).fulfill() + description="Vote updated for {response_id}".format(response_id=response_id) + ) def cannot_vote_response(self, response_id): """Assert that the voting button is not visible on this response""" @@ -582,7 +581,7 @@ class DiscussionUserProfilePage(CoursePage): TEXT_NEXT = u'Next >' TEXT_PREV = u'< Previous' - PAGING_SELECTOR = "a.discussion-pagination[data-page-number]" + PAGING_SELECTOR = ".discussion-pagination[data-page-number]" def __init__(self, browser, course_id, user_id, username, page=1): super(DiscussionUserProfilePage, self).__init__(browser, course_id) @@ -712,7 +711,7 @@ class DiscussionTabHomePage(CoursePage, DiscussionPageMixin): return self.q(css=".search-alert").filter(lambda elem: text in elem.text) for alert_id in _match_messages(text).attrs("id"): - self.q(css="{}#{} a.dismiss".format(self.ALERT_SELECTOR, alert_id)).click() + self.q(css="{}#{} .dismiss".format(self.ALERT_SELECTOR, alert_id)).click() EmptyPromise( lambda: _match_messages(text).results == [], "waiting for dismissed alerts to disappear" diff --git a/common/test/acceptance/tests/discussion/test_discussion.py b/common/test/acceptance/tests/discussion/test_discussion.py index 5cd31a8237..a325bf3f25 100644 --- a/common/test/acceptance/tests/discussion/test_discussion.py +++ b/common/test/acceptance/tests/discussion/test_discussion.py @@ -211,7 +211,6 @@ class DiscussionHomePageTest(UniqueCourseTest): "ignore": [ 'section', # TODO: AC-491 'color-contrast', # TNL-4635 - 'link-href', # TNL-4636 'icon-aria-hidden', # TNL-4637 ] }) @@ -459,7 +458,6 @@ class DiscussionTabMultipleThreadTest(BaseDiscussionTestCase): 'section', # TODO: AC-491 'aria-valid-attr-value', # TNL-4638 'color-contrast', # TNL-4639 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4641 ] }) @@ -471,7 +469,6 @@ class DiscussionTabMultipleThreadTest(BaseDiscussionTestCase): 'section', # TODO: AC-491 'aria-valid-attr-value', # TNL-4638 'color-contrast', # TNL-4639 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4641 ] }) @@ -535,7 +532,6 @@ class DiscussionOpenClosedThreadTest(BaseDiscussionTestCase): 'section', # TODO: AC-491 'aria-valid-attr-value', # TNL-4643 'color-contrast', # TNL-4644 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4645 ] }) @@ -547,7 +543,6 @@ class DiscussionOpenClosedThreadTest(BaseDiscussionTestCase): 'section', # TODO: AC-491 'aria-valid-attr-value', # TNL-4643 'color-contrast', # TNL-4644 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4645 ] }) @@ -836,7 +831,6 @@ class DiscussionResponseEditTest(BaseDiscussionTestCase): 'section', # TODO: AC-491 'aria-valid-attr-value', # TNL-4638 'color-contrast', # TNL-4644 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4645 'duplicate-id', # TNL-4647 ] @@ -938,7 +932,6 @@ class DiscussionCommentEditTest(BaseDiscussionTestCase): 'section', # TODO: AC-491 'aria-valid-attr-value', # TNL-4643 'color-contrast', # TNL-4644 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4645 ] }) @@ -1346,7 +1339,6 @@ class DiscussionSearchAlertTest(UniqueCourseTest): 'ignore': [ 'section', # TODO: AC-491 'color-contrast', # TNL-4639 - 'link-href', # TNL-4640 'icon-aria-hidden', # TNL-4641 ] }) diff --git a/lms/djangoapps/discussion/static/discussion/templates/fake-breadcrumbs.underscore b/lms/djangoapps/discussion/static/discussion/templates/fake-breadcrumbs.underscore index 557473bd04..02fc394bbc 100644 --- a/lms/djangoapps/discussion/static/discussion/templates/fake-breadcrumbs.underscore +++ b/lms/djangoapps/discussion/static/discussion/templates/fake-breadcrumbs.underscore @@ -1,8 +1,8 @@