diff --git a/common/static/common/js/discussion/utils.js b/common/static/common/js/discussion/utils.js
index 44755e98d7..83ff8bcd67 100644
--- a/common/static/common/js/discussion/utils.js
+++ b/common/static/common/js/discussion/utils.js
@@ -184,10 +184,8 @@
if (!params.error) {
params.error = function() {
self.discussionAlert(
- gettext('Sorry'),
- gettext(
- 'We had some trouble processing your request. Please ensure you have copied any ' +
- 'unsaved work and then reload the page.')
+ gettext('Error'),
+ gettext('Your request could not be processed. Refresh the page and try again.')
);
};
}
@@ -223,7 +221,7 @@
self = this;
if (errorMsg) {
safeAjaxParams.error = function() {
- return self.discussionAlert(gettext('Sorry'), errorMsg);
+ return self.discussionAlert(gettext('Error'), errorMsg);
};
}
undo = _.pick(model.attributes, _.keys(updates));
@@ -276,7 +274,7 @@
}
}
} else {
- $errorItem = makeErrorElem('We had some trouble processing your request. Please try again.', 0);
+ $errorItem = makeErrorElem('Your request could not be processed. Refresh the page and try again.', 0); // eslint-disable-line max-len
edx.HtmlUtils.append(errorsField, $errorItem);
}
diff --git a/common/static/common/js/discussion/views/discussion_content_view.js b/common/static/common/js/discussion/views/discussion_content_view.js
index 19e965e143..3b00c3e257 100644
--- a/common/static/common/js/discussion/views/discussion_content_view.js
+++ b/common/static/common/js/discussion/views/discussion_content_view.js
@@ -1,4 +1,4 @@
-/* globals DiscussionContentView, DiscussionUtil */
+/* globals _, Backbone, DiscussionContentView, DiscussionUtil */
(function() {
'use strict';
var __hasProp = {}.hasOwnProperty,
@@ -148,22 +148,24 @@
return _results;
};
- DiscussionContentView.prototype.makeWmdEditor = function(cls_identifier) {
+ DiscussionContentView.prototype.makeWmdEditor = function(classIdentifier) {
if (!this.$el.find('.wmd-panel').length) {
- return DiscussionUtil.makeWmdEditor(this.$el, $.proxy(this.$, this), cls_identifier);
+ return DiscussionUtil.makeWmdEditor(this.$el, $.proxy(this.$, this), classIdentifier);
+ } else {
+ return null;
}
};
- DiscussionContentView.prototype.getWmdEditor = function(cls_identifier) {
- return DiscussionUtil.getWmdEditor(this.$el, $.proxy(this.$, this), cls_identifier);
+ DiscussionContentView.prototype.getWmdEditor = function(classIdentifier) {
+ return DiscussionUtil.getWmdEditor(this.$el, $.proxy(this.$, this), classIdentifier);
};
- DiscussionContentView.prototype.getWmdContent = function(cls_identifier) {
- return DiscussionUtil.getWmdContent(this.$el, $.proxy(this.$, this), cls_identifier);
+ DiscussionContentView.prototype.getWmdContent = function(classIdentifier) {
+ return DiscussionUtil.getWmdContent(this.$el, $.proxy(this.$, this), classIdentifier);
};
- DiscussionContentView.prototype.setWmdContent = function(cls_identifier, text) {
- return DiscussionUtil.setWmdContent(this.$el, $.proxy(this.$, this), cls_identifier, text);
+ DiscussionContentView.prototype.setWmdContent = function(classIdentifier, text) {
+ return DiscussionUtil.setWmdContent(this.$el, $.proxy(this.$, this), classIdentifier, text);
};
DiscussionContentView.prototype.initialize = function() {
@@ -171,7 +173,7 @@
this.model.bind('change', this.renderPartialAttrs, this);
return this.listenTo(this.model, 'change:endorsed', function() {
if (self.model instanceof Comment) {
- return self.trigger('comment:endorse');
+ self.trigger('comment:endorse');
}
});
};
@@ -330,7 +332,7 @@
DiscussionContentShowView.prototype.handleSecondaryActionEscape = function(event) {
if (event.keyCode === 27) {
this.toggleSecondaryActions(event);
- return this.$('.action-more').focus();
+ this.$('.action-more').focus();
}
};
@@ -338,23 +340,23 @@
var self = this;
return setTimeout(function() {
if (self.secondaryActionsExpanded && self.$('.actions-dropdown :focus').length === 0) {
- return self.toggleSecondaryActions(event);
+ self.toggleSecondaryActions(event);
}
}, 10);
};
DiscussionContentShowView.prototype.toggleFollow = function(event) {
- var is_subscribing, msg, url;
+ var isSubscribing, msg, url;
event.preventDefault();
- is_subscribing = !this.model.get('subscribed');
- url = this.model.urlFor(is_subscribing ? 'follow' : 'unfollow');
- if (is_subscribing) {
- msg = gettext('We had some trouble subscribing you to this thread. Please try again.');
+ isSubscribing = !this.model.get('subscribed');
+ url = this.model.urlFor(isSubscribing ? 'follow' : 'unfollow');
+ if (isSubscribing) {
+ msg = gettext('You could not be subscribed to this post. Refresh the page and try again.');
} else {
- msg = gettext('We had some trouble unsubscribing you from this thread. Please try again.');
+ msg = gettext('You could not be unsubscribed from this post. Refresh the page and try again.');
}
return DiscussionUtil.updateWithUndo(this.model, {
- 'subscribed': is_subscribing
+ subscribed: isSubscribing
}, {
url: url,
type: 'POST',
@@ -363,30 +365,30 @@
};
DiscussionContentShowView.prototype.toggleEndorse = function(event) {
- var beforeFunc, is_endorsing, msg, updates, url,
+ var isEndorsing, msg, updates, url,
self = this;
event.preventDefault();
- is_endorsing = !this.model.get('endorsed');
+ isEndorsing = !this.model.get('endorsed');
url = this.model.urlFor('endorse');
updates = {
- endorsed: is_endorsing,
- endorsement: is_endorsing ? {
+ endorsed: isEndorsing,
+ endorsement: isEndorsing ? {
username: DiscussionUtil.getUser().get('username'),
user_id: DiscussionUtil.getUser().id,
time: new Date().toISOString()
} : null
};
if (this.model.get('thread').get('thread_type') === 'question') {
- if (is_endorsing) {
- msg = gettext('We had some trouble marking this response as an answer. Please try again.');
+ if (isEndorsing) {
+ msg = gettext('This response could not be marked as an answer. Refresh the page and try again.'); // eslint-disable-line max-len
} else {
- msg = gettext('We had some trouble removing this response as an answer. Please try again.');
+ msg = gettext('This response could not be unmarked as an answer. Refresh the page and try again.'); // eslint-disable-line max-len
}
} else {
- if (is_endorsing) {
- msg = gettext('We had some trouble marking this response endorsed. Please try again.');
+ if (isEndorsing) {
+ msg = gettext('This response could not be marked as endorsed. Refresh the page and try again.');
} else {
- msg = gettext('We had some trouble removing this endorsement. Please try again.');
+ msg = gettext('This response could not be unendorsed. Refresh the page and try again.');
}
}
return DiscussionUtil.updateWithUndo(
@@ -395,7 +397,7 @@
{
url: url,
type: 'POST',
- data: {endorsed: is_endorsing},
+ data: {endorsed: isEndorsing},
$elem: $(event.currentTarget)
},
msg,
@@ -404,22 +406,22 @@
};
DiscussionContentShowView.prototype.toggleVote = function(event) {
- var is_voting, updates, url, user,
+ var isVoting, updates, url, user,
self = this;
event.preventDefault();
user = DiscussionUtil.getUser();
- is_voting = !user.voted(this.model);
- url = this.model.urlFor(is_voting ? 'upvote' : 'unvote');
+ isVoting = !user.voted(this.model);
+ url = this.model.urlFor(isVoting ? 'upvote' : 'unvote');
updates = {
- upvoted_ids: (is_voting ? _.union : _.difference)(user.get('upvoted_ids'), [this.model.id])
+ upvoted_ids: (isVoting ? _.union : _.difference)(user.get('upvoted_ids'), [this.model.id])
};
if (!$(event.target.closest('.actions-item')).hasClass('is-disabled')) {
return DiscussionUtil.updateWithUndo(user, updates, {
url: url,
type: 'POST',
$elem: $(event.currentTarget)
- }, gettext('We had some trouble saving your vote. Please try again.')).done(function() {
- if (is_voting) {
+ }, gettext('This vote could not be processed. Refresh the page and try again.')).done(function() {
+ if (isVoting) {
return self.model.vote();
} else {
return self.model.unvote();
@@ -429,17 +431,17 @@
};
DiscussionContentShowView.prototype.togglePin = function(event) {
- var is_pinning, msg, url;
+ var isPinning, msg, url;
event.preventDefault();
- is_pinning = !this.model.get('pinned');
- url = this.model.urlFor(is_pinning ? 'pinThread' : 'unPinThread');
- if (is_pinning) {
- msg = gettext('We had some trouble pinning this thread. Please try again.');
+ isPinning = !this.model.get('pinned');
+ url = this.model.urlFor(isPinning ? 'pinThread' : 'unPinThread');
+ if (isPinning) {
+ msg = gettext('This post could not be pinned. Refresh the page and try again.');
} else {
- msg = gettext('We had some trouble unpinning this thread. Please try again.');
+ msg = gettext('This post could not be unpinned. Refresh the page and try again.');
}
return DiscussionUtil.updateWithUndo(this.model, {
- pinned: is_pinning
+ pinned: isPinning
}, {
url: url,
type: 'POST',
@@ -448,18 +450,18 @@
};
DiscussionContentShowView.prototype.toggleReport = function(event) {
- var is_flagging, msg, updates, url;
+ var isFlagging, msg, updates, url;
event.preventDefault();
if (this.model.isFlagged()) {
- is_flagging = false;
- msg = gettext('We had some trouble removing your flag on this post. Please try again.');
+ isFlagging = false;
+ msg = gettext('This post could not be flagged for abuse. Refresh the page and try again.');
} else {
- is_flagging = true;
- msg = gettext('We had some trouble reporting this post. Please try again.');
+ isFlagging = true;
+ msg = gettext('This post could not be unflagged for abuse. Refresh the page and try again.');
}
- url = this.model.urlFor(is_flagging ? 'flagAbuse' : 'unFlagAbuse');
+ url = this.model.urlFor(isFlagging ? 'flagAbuse' : 'unFlagAbuse');
updates = {
- abuse_flaggers: (is_flagging ? _.union : _.difference)(
+ abuse_flaggers: (isFlagging ? _.union : _.difference)(
this.model.get('abuse_flaggers'), [DiscussionUtil.getUser().id]
)
};
@@ -471,16 +473,16 @@
};
DiscussionContentShowView.prototype.toggleClose = function(event) {
- var is_closing, msg, updates;
+ var isClosing, msg, updates;
event.preventDefault();
- is_closing = !this.model.get('closed');
- if (is_closing) {
- msg = gettext('We had some trouble closing this thread. Please try again.');
+ isClosing = !this.model.get('closed');
+ if (isClosing) {
+ msg = gettext('This post could not be closed. Refresh the page and try again.');
} else {
- msg = gettext('We had some trouble reopening this thread. Please try again.');
+ msg = gettext('This post could not be reopened. Refresh the page and try again.');
}
updates = {
- closed: is_closing
+ closed: isClosing
};
return DiscussionUtil.updateWithUndo(this.model, updates, {
url: this.model.urlFor('close'),
diff --git a/common/static/common/js/discussion/views/discussion_inline_view.js b/common/static/common/js/discussion/views/discussion_inline_view.js
index 8183e46a96..5e43308c2a 100644
--- a/common/static/common/js/discussion/views/discussion_inline_view.js
+++ b/common/static/common/js/discussion/views/discussion_inline_view.js
@@ -26,6 +26,7 @@
var match;
this.$el = options.el;
+ this.readOnly = options.readOnly;
this.showByDefault = options.showByDefault || false;
this.toggleDiscussionBtn = this.$('.discussion-show');
this.listenTo(this.model, 'change', this.render);
@@ -144,6 +145,7 @@
course_settings: this.course_settings
});
this.threadView.render();
+ this.listenTo(this.threadView.showView, 'thread:_delete', this.navigateToAllPosts);
this.threadListView.$el.addClass('is-hidden');
this.$('.inline-thread').removeClass('is-hidden');
},
@@ -179,8 +181,8 @@
this.loadDiscussions(this.$el, function() {
self.hideDiscussion();
DiscussionUtil.discussionAlert(
- gettext('Sorry'),
- gettext('We had some trouble loading the discussion. Please try again.')
+ gettext('Error'),
+ gettext('This discussion could not be loaded. Refresh the page to try again.')
);
});
}
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 dbc44250d3..243bc57b74 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
@@ -309,7 +309,8 @@
error = function() {
self.renderThreads();
DiscussionUtil.discussionAlert(
- gettext('Sorry'), gettext('We had some trouble loading more threads. Please try again.')
+ gettext('Error'),
+ gettext('Additional posts could not be loaded. Refresh the page to try again.')
);
};
return this.collection.retrieveAnotherPage(this.mode, options, {
@@ -478,7 +479,7 @@
element,
edx.HtmlUtils.joinHtml(
edx.HtmlUtils.HTML("
"),
- self.getLoadingContent(gettext('Loading thread list')),
+ self.getLoadingContent(gettext('Loading posts list')),
edx.HtmlUtils.HTML('')
)
);
@@ -515,7 +516,7 @@
);
self.addSearchAlert(message);
} else if (response.discussion_data.length === 0) {
- self.addSearchAlert(gettext('No threads matched your query.'));
+ self.addSearchAlert(gettext('No posts matched your query.'));
}
self.displayedCollection.reset(self.collection.models);
if (text) {
diff --git a/common/static/common/js/discussion/views/discussion_thread_view.js b/common/static/common/js/discussion/views/discussion_thread_view.js
index cbd14298cd..b66c1d70a5 100644
--- a/common/static/common/js/discussion/views/discussion_thread_view.js
+++ b/common/static/common/js/discussion/views/discussion_thread_view.js
@@ -261,18 +261,18 @@
}
if (xhr.status === 404) {
DiscussionUtil.discussionAlert(
- gettext('Sorry'),
- gettext('The thread you selected has been deleted. Please select another thread.')
+ gettext('Error'),
+ gettext('The post you selected has been deleted.')
);
} else if (firstLoad) {
DiscussionUtil.discussionAlert(
- gettext('Sorry'),
- gettext('We had some trouble loading responses. Please reload the page.')
+ gettext('Error'),
+ gettext('Responses could not be loaded. Refresh the page to try again.')
);
} else {
DiscussionUtil.discussionAlert(
- gettext('Sorry'),
- gettext('We had some trouble loading more responses. Please try again.')
+ gettext('Error'),
+ gettext('Additional responses could not be loaded. Refresh the page to try again.')
);
}
}
diff --git a/common/static/common/js/discussion/views/response_comment_view.js b/common/static/common/js/discussion/views/response_comment_view.js
index 7e7afd63e4..f6660b1ad3 100644
--- a/common/static/common/js/discussion/views/response_comment_view.js
+++ b/common/static/common/js/discussion/views/response_comment_view.js
@@ -114,8 +114,8 @@
},
error: function() {
return DiscussionUtil.discussionAlert(
- gettext('Sorry'),
- gettext('We had some trouble deleting this comment. Please try again.')
+ gettext('Error'),
+ gettext('This comment could not be deleted. Refresh the page to try again.')
);
}
});
diff --git a/common/static/common/js/spec/discussion/utils_spec.js b/common/static/common/js/spec/discussion/utils_spec.js
index a8f91d2612..2652b5d793 100644
--- a/common/static/common/js/spec/discussion/utils_spec.js
+++ b/common/static/common/js/spec/discussion/utils_spec.js
@@ -29,7 +29,7 @@
});
spyOn(DiscussionUtil, 'discussionAlert');
DiscussionUtil.safeAjax.calls.mostRecent().args[0].error();
- expect(DiscussionUtil.discussionAlert).toHaveBeenCalledWith('Sorry', 'error message');
+ expect(DiscussionUtil.discussionAlert).toHaveBeenCalledWith('Error', 'error message');
deferred.reject();
return expect(model.attributes).toEqual({
hello: false,
diff --git a/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js
index a6ec3cb8fd..50f5048ab8 100644
--- a/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js
+++ b/common/static/common/js/spec/discussion/view/discussion_thread_list_view_spec.js
@@ -550,7 +550,7 @@
it('does not add a search alert when no alternate term was searched', function() {
testCorrection(this.view, null);
expect(this.view.addSearchAlert.calls.count()).toEqual(1);
- return expect(this.view.addSearchAlert.calls.mostRecent().args[0]).toMatch(/no threads matched/i);
+ return expect(this.view.addSearchAlert.calls.mostRecent().args[0]).toMatch(/no posts matched/i);
});
it('clears search alerts when a new search is performed', function() {
diff --git a/common/test/acceptance/tests/discussion/helpers.py b/common/test/acceptance/tests/discussion/helpers.py
index 84f5ff0d7a..aa2e5fbb9c 100644
--- a/common/test/acceptance/tests/discussion/helpers.py
+++ b/common/test/acceptance/tests/discussion/helpers.py
@@ -12,6 +12,7 @@ from common.test.acceptance.fixtures.discussion import (
Thread,
Response,
ForumsConfigMixin,
+ MultipleThreadFixture,
)
from common.test.acceptance.pages.lms.discussion import DiscussionTabSingleThreadPage
from common.test.acceptance.tests.helpers import UniqueCourseTest
diff --git a/common/test/acceptance/tests/discussion/test_discussion.py b/common/test/acceptance/tests/discussion/test_discussion.py
index 4e98377082..9d0199df2e 100644
--- a/common/test/acceptance/tests/discussion/test_discussion.py
+++ b/common/test/acceptance/tests/discussion/test_discussion.py
@@ -33,7 +33,8 @@ from common.test.acceptance.fixtures.discussion import (
Response,
Comment,
SearchResult,
- MultipleThreadFixture)
+ MultipleThreadFixture,
+)
from common.test.acceptance.tests.discussion.helpers import BaseDiscussionMixin
from common.test.acceptance.tests.helpers import skip_if_browser
@@ -416,7 +417,7 @@ class DiscussionTabSingleThreadTest(BaseDiscussionTestCase, DiscussionResponsePa
self.assertFalse(self.thread_page.is_comment_deletable("comment1"))
-class DiscussionTabMultipleThreadTest(BaseDiscussionTestCase):
+class DiscussionTabMultipleThreadTest(BaseDiscussionTestCase, BaseDiscussionMixin):
"""
Tests for the discussion page with multiple threads
"""
@@ -441,19 +442,6 @@ class DiscussionTabMultipleThreadTest(BaseDiscussionTestCase):
)
self.thread_page_1.visit()
- @attr(shard=2)
- def setup_multiple_threads(self, thread_count):
- threads = []
- for i in range(thread_count):
- thread_id = "test_thread_{}_{}".format(i, uuid4().hex)
- thread_body = "Dummy Long text body." * 50
- threads.append(
- Thread(id=thread_id, commentable_id=self.discussion_id, body=thread_body),
- )
- self.thread_ids.append(thread_id)
- view = MultipleThreadFixture(threads)
- view.push()
-
@attr('a11y')
def test_page_accessibility(self):
self.thread_page_1.a11y_audit.config.set_rules({
@@ -1039,7 +1027,9 @@ class InlineDiscussionTest(UniqueCourseTest, DiscussionResponsePaginationTestMix
"""
Tests Inline Discussion for accessibility issues.
"""
- self.setup_multiple_inline_threads(thread_count=3)
+ self.setup_multiple_threads(thread_count=3)
+
+ # First test the a11y of the expanded list of threads
self.discussion_page.expand_discussion()
self.discussion_page.a11y_audit.config.set_rules({
'ignore': [
@@ -1048,6 +1038,14 @@ class InlineDiscussionTest(UniqueCourseTest, DiscussionResponsePaginationTestMix
})
self.discussion_page.a11y_audit.check_for_accessibility_errors()
+ # Now show the first thread and test the a11y again
+ self.discussion_page.show_thread(self.thread_ids[0])
+ self.discussion_page.a11y_audit.check_for_accessibility_errors()
+
+ # Finally show the new post form and test its a11y
+ self.discussion_page.click_new_post_button()
+ self.discussion_page.a11y_audit.check_for_accessibility_errors()
+
def test_add_a_post_is_present_if_can_create_thread_when_expanded(self):
self.discussion_page.expand_discussion()
# Add a Post link is present
@@ -1363,7 +1361,7 @@ class DiscussionSearchAlertTest(UniqueCourseTest):
def test_no_rewrite(self):
self.setup_corrected_text(None)
self.page.perform_search()
- self.check_search_alert_messages(["no threads"])
+ self.check_search_alert_messages(["no posts"])
@attr(shard=2)
def test_rewrite_dismiss(self):
@@ -1385,7 +1383,7 @@ class DiscussionSearchAlertTest(UniqueCourseTest):
self.setup_corrected_text(None)
self.page.perform_search()
- self.check_search_alert_messages(["no threads"])
+ self.check_search_alert_messages(["no posts"])
@attr(shard=2)
def test_rewrite_and_user(self):
@@ -1397,7 +1395,7 @@ class DiscussionSearchAlertTest(UniqueCourseTest):
def test_user_only(self):
self.setup_corrected_text(None)
self.page.perform_search(self.SEARCHED_USERNAME)
- self.check_search_alert_messages(["no threads", self.SEARCHED_USERNAME])
+ self.check_search_alert_messages(["no posts", self.SEARCHED_USERNAME])
# make sure clicking the link leads to the user profile page
UserProfileViewFixture([]).push()
self.page.get_search_alert_links().first.click()
diff --git a/lms/djangoapps/teams/static/teams/js/views/team_discussion.js b/lms/djangoapps/teams/static/teams/js/views/team_discussion.js
index 9661127ac7..55f92caf7e 100644
--- a/lms/djangoapps/teams/static/teams/js/views/team_discussion.js
+++ b/lms/djangoapps/teams/static/teams/js/views/team_discussion.js
@@ -6,14 +6,16 @@
define(['backbone', 'underscore', 'gettext', 'common/js/discussion/views/discussion_inline_view'],
function(Backbone, _, gettext, DiscussionInlineView) {
var TeamDiscussionView = Backbone.View.extend({
- initialize: function() {
+ initialize: function(options) {
window.$$course_id = this.$el.data('course-id');
+ this.readOnly = options.readOnly;
},
render: function() {
var discussionInlineView = new DiscussionInlineView({
el: this.$el,
- showByDefault: true
+ showByDefault: true,
+ readOnly: this.readOnly
});
discussionInlineView.render();
return this;
diff --git a/lms/djangoapps/teams/static/teams/js/views/team_profile.js b/lms/djangoapps/teams/static/teams/js/views/team_profile.js
index d65c2cf1f9..ac605791ac 100644
--- a/lms/djangoapps/teams/static/teams/js/views/team_profile.js
+++ b/lms/djangoapps/teams/static/teams/js/views/team_profile.js
@@ -56,7 +56,7 @@
);
this.discussionView = new TeamDiscussionView({
el: this.$('.discussion-module'),
- readOnly: this.$('.discussion-module').data('read-only') === true
+ readOnly: !isMember
});
this.discussionView.render();
diff --git a/lms/static/sass/discussion/_discussion-v1.scss b/lms/static/sass/discussion/_discussion-v1.scss
index 9059f02718..956e777932 100644
--- a/lms/static/sass/discussion/_discussion-v1.scss
+++ b/lms/static/sass/discussion/_discussion-v1.scss
@@ -54,7 +54,6 @@
.discussion-module {
.discussion {
clear: both;
- padding-top: ($baseline/2);
}
.btn {
diff --git a/lms/static/sass/discussion/_discussion.scss b/lms/static/sass/discussion/_discussion.scss
index 69f6494e1d..36b9922966 100644
--- a/lms/static/sass/discussion/_discussion.scss
+++ b/lms/static/sass/discussion/_discussion.scss
@@ -296,9 +296,6 @@ body.discussion {
@extend .discussion-body;
display: block;
position: relative;
- margin: $baseline 0;
- padding: $baseline;
- border: 1px solid $forum-color-border !important;
border-radius: $forum-border-radius;
header {
@@ -319,6 +316,7 @@ body.discussion {
.discussion-module-header {
@include float(left);
width: flex-grid(7);
+ margin-bottom: ($baseline * 0.75);
}
.add_post_btn_container {
@@ -399,6 +397,9 @@ section.discussion {
.xblock-student_view-discussion {
@extend %ui-print-excluded;
+ // Overrides overspecific courseware CSS from:
+ // https://github.com/edx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L499
+ padding-top: 15px !important;
}
// ====================
diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss
index b3e509062c..30c263dc17 100644
--- a/lms/static/sass/discussion/elements/_navigation.scss
+++ b/lms/static/sass/discussion/elements/_navigation.scss
@@ -126,7 +126,6 @@
.forum-nav-refine-bar {
@include clearfix();
@include border-radius($forum-border-radius, $forum-border-radius, 0, 0);
- @include text-align(right);
font-size: $forum-small-font-size;
border-bottom: 1px solid $forum-color-border;
background-color: $gray-l5;
@@ -135,16 +134,18 @@
}
.forum-nav-filter-main {
+ @include text-align(left);
+ @include float(left);
box-sizing: border-box;
display: inline-block;
width: 50%;
- @include text-align(left);
}
.forum-nav-filter-cohort, .forum-nav-sort {
+ @include text-align(right);
+ @include float(right);
box-sizing: border-box;
display: inline-block;
- @include text-align(right);
@media (min-width: $bp-screen-md) {
width: 50%;
@@ -174,7 +175,7 @@
// Thread list
// -----------
.forum-nav-thread-list {
- @include padding-left(0);
+ padding-left: 0 !important; // should *not* be RTLed, see below for explanation
margin: 0;
overflow-y: scroll;
list-style: none;
@@ -182,6 +183,10 @@
.forum-nav-thread-labels {
margin: 5px 0 0;
+ // Overrides overspecific courseware CSS from:
+ // https://github.com/edx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L470
+ // note this should *not* be RTLed, as the rule it overrides is not RTLed
+ padding-left: 0 !important;
}
.thread-preview-body {
@@ -216,6 +221,9 @@
.forum-nav-thread-link {
@include border-left(3px solid transparent);
+ @include rtl {
+ flex-direction: row-reverse;
+ }
display: flex;
padding: $baseline / 2;
transition: none;
@@ -290,6 +298,7 @@
.forum-nav-thread-wrapper-0 {
@extend %forum-nav-thread-wrapper;
@include margin-right($baseline/5);
+ align-self: flex-start;
.icon {
font-size: $forum-base-font-size;
diff --git a/lms/static/sass/discussion/utilities/_variables-v1.scss b/lms/static/sass/discussion/utilities/_variables-v1.scss
index 13b89db4fc..f1e100a744 100644
--- a/lms/static/sass/discussion/utilities/_variables-v1.scss
+++ b/lms/static/sass/discussion/utilities/_variables-v1.scss
@@ -24,7 +24,7 @@ $forum-color-read-post: $forum-color-primary !default;
$forum-color-never-read-post: $gray-d3 !default;
$forum-color-editor-preview-label: $gray-d2 !default;
$forum-color-response-count: $gray-d2 !default;
-$forum-color-navigation-bar: $forum-color-primary !default;
+$forum-color-navigation-bar: #f6f6f6 !default;
// post images
$post-image-dimension: ($baseline*3) !default; // image size + margin
diff --git a/lms/static/sass/discussion/utilities/_variables-v2.scss b/lms/static/sass/discussion/utilities/_variables-v2.scss
index 07420b80f0..f6987334d1 100644
--- a/lms/static/sass/discussion/utilities/_variables-v2.scss
+++ b/lms/static/sass/discussion/utilities/_variables-v2.scss
@@ -24,7 +24,7 @@ $forum-color-read-post: palette(grayscale, base) !default;
$forum-color-never-read-post: $forum-color-primary !default;
$forum-color-editor-preview-label: palette(grayscale, base) !default;
$forum-color-response-count: palette(grayscale, base) !default;
-$forum-color-navigation-bar: $forum-color-primary !default;
+$forum-color-navigation-bar: palette(grayscale, x-back) !default;
// post images
$post-image-dimension: ($baseline*3) !default; // image size + margin
diff --git a/lms/static/sass/discussion/views/_inline.scss b/lms/static/sass/discussion/views/_inline.scss
index f6c0dd17b5..3f86adebc3 100644
--- a/lms/static/sass/discussion/views/_inline.scss
+++ b/lms/static/sass/discussion/views/_inline.scss
@@ -2,8 +2,6 @@
// ====================
.discussion.inline-discussion {
- padding-top: $baseline;
-
.inline-threads {
border: 1px solid $forum-color-border;
border-radius: $forum-border-radius;
@@ -14,10 +12,18 @@
border-radius: $forum-border-radius;
.forum-nav-bar {
- background-color: $forum-color-navigation-bar;
+ color: $forum-color-navigation-bar;
+ padding: ($baseline / 2) $baseline;
+ position: relative;
- .btn-link {
- color: $forum-color-active-text;
+ .all-posts-btn {
+ color: $forum-color-primary;
+
+ .icon {
+ position: absolute;
+ @include left(7px);
+ top: 17px;
+ }
}
}
diff --git a/lms/static/sass/discussion/views/_thread.scss b/lms/static/sass/discussion/views/_thread.scss
index 4ba192200c..7320629205 100644
--- a/lms/static/sass/discussion/views/_thread.scss
+++ b/lms/static/sass/discussion/views/_thread.scss
@@ -27,8 +27,13 @@
}
.post-body {
+ @include float(left);
width: flex-grid(10,12);
}
+
+ .post-context {
+ @include float(left);
+ }
}
.posted-details {