From c655c5a678fd202e10cf986e53e9e40fd5d67a79 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Fri, 4 Nov 2016 15:41:23 -0400 Subject: [PATCH 01/33] Add new DiscussionInlineView which uses DiscussionThreadListView --- .../xmodule/js/src/discussion/display.coffee | 2 +- .../js/discussion/discussion_module_view.js | 265 ------------------ .../views/discussion_inline_view.js | 163 +++++++++++ .../discussion/inline-discussion.underscore | 7 - .../static/teams/js/views/team_discussion.js | 13 +- lms/static/lms/js/build.js | 2 +- lms/static/lms/js/spec/main.js | 4 +- lms/static/sass/discussion/_discussion.scss | 9 +- .../sass/discussion/elements/_navigation.scss | 6 + .../discussion/_discussion_inline.html | 6 +- .../discussion/_js_body_dependencies.html | 2 +- .../discussion/_thread_list_template.html | 5 +- 12 files changed, 191 insertions(+), 293 deletions(-) delete mode 100644 common/static/common/js/discussion/discussion_module_view.js create mode 100644 common/static/common/js/discussion/views/discussion_inline_view.js diff --git a/common/lib/xmodule/xmodule/js/src/discussion/display.coffee b/common/lib/xmodule/xmodule/js/src/discussion/display.coffee index a350cf9866..2369b0f92d 100644 --- a/common/lib/xmodule/xmodule/js/src/discussion/display.coffee +++ b/common/lib/xmodule/xmodule/js/src/discussion/display.coffee @@ -1,4 +1,4 @@ class @InlineDiscussion extends XModule.Descriptor constructor: (element) -> @el = $(element).find('.discussion-module') - @view = new DiscussionModuleView(el: @el) + @view = new DiscussionInlineView(el: @el) diff --git a/common/static/common/js/discussion/discussion_module_view.js b/common/static/common/js/discussion/discussion_module_view.js deleted file mode 100644 index 36ed2a4859..0000000000 --- a/common/static/common/js/discussion/discussion_module_view.js +++ /dev/null @@ -1,265 +0,0 @@ -/* globals Discussion, DiscussionUtil, DiscussionUser, DiscussionCourseSettings, DiscussionThreadView, Content, -NewPostView */ -(function() { - 'use strict'; - var __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { - for (var key in parent) { - if (__hasProp.call(parent, key)) { - child[key] = parent[key]; - } - } - function ctor() { - this.constructor = child; - } - - ctor.prototype = parent.prototype; - child.prototype = new ctor(); - child.__super__ = parent.prototype; - return child; - }; - - if (typeof Backbone !== 'undefined' && Backbone !== null) { - this.DiscussionModuleView = (function(_super) { - __extends(DiscussionModuleView, _super); - - function DiscussionModuleView() { - var self = this; - this.navigateToPage = function() { - return DiscussionModuleView.prototype.navigateToPage.apply(self, arguments); - }; - this.renderPagination = function() { - return DiscussionModuleView.prototype.renderPagination.apply(self, arguments); - }; - this.addThread = function() { - return DiscussionModuleView.prototype.addThread.apply(self, arguments); - }; - this.renderDiscussion = function() { - return DiscussionModuleView.prototype.renderDiscussion.apply(self, arguments); - }; - this.loadPage = function() { - return DiscussionModuleView.prototype.loadPage.apply(self, arguments); - }; - this.toggleDiscussion = function() { - return DiscussionModuleView.prototype.toggleDiscussion.apply(self, arguments); - }; - this.hideDiscussion = function() { - return DiscussionModuleView.prototype.hideDiscussion.apply(self, arguments); - }; - this.hideNewPost = function() { - return DiscussionModuleView.prototype.hideNewPost.apply(self, arguments); - }; - this.toggleNewPost = function() { - return DiscussionModuleView.prototype.toggleNewPost.apply(self, arguments); - }; - return DiscussionModuleView.__super__.constructor.apply(this, arguments); - } - - DiscussionModuleView.prototype.events = { - 'click .discussion-show': 'toggleDiscussion', - 'keydown .discussion-show': function(event) { - return DiscussionUtil.activateOnSpace(event, this.toggleDiscussion); - }, - 'click .new-post-btn': 'toggleNewPost', - 'keydown .new-post-btn': function(event) { - return DiscussionUtil.activateOnSpace(event, this.toggleNewPost); - }, - 'click .discussion-paginator a': 'navigateToPage' - }; - - DiscussionModuleView.prototype.page_re = /\?discussion_page=(\d+)/; - - DiscussionModuleView.prototype.initialize = function(options) { - var match; - this.toggleDiscussionBtn = this.$('.discussion-show'); - match = this.page_re.exec(window.location.href); - this.context = options.context || 'course'; - this.readOnly = $('.discussion-module').data('read-only'); - if (match) { - this.page = parseInt(match[1]); - } else { - this.page = 1; - } - }; - - DiscussionModuleView.prototype.toggleNewPost = function(event) { - event.preventDefault(); - if (!this.newPostForm) { - this.toggleDiscussion(); - this.isWaitingOnNewPost = true; - return; - } - if (this.showed) { - this.newPostForm.slideDown(300); - } else { - this.newPostForm.show().focus(); - } - this.toggleDiscussionBtn.addClass('shown'); - this.toggleDiscussionBtn.find('.button-text').html(gettext('Hide Discussion')); - this.$('section.discussion').slideDown(); - this.showed = true; - }; - - DiscussionModuleView.prototype.hideNewPost = function() { - return this.newPostForm.slideUp(300); - }; - - DiscussionModuleView.prototype.hideDiscussion = function() { - this.$('section.discussion').slideUp(); - this.toggleDiscussionBtn.removeClass('shown'); - this.toggleDiscussionBtn.find('.button-text').html(gettext('Show Discussion')); - this.showed = false; - }; - - DiscussionModuleView.prototype.toggleDiscussion = function() { - var $elem, - self = this; - if (this.showed) { - return this.hideDiscussion(); - } else { - this.toggleDiscussionBtn.addClass('shown'); - this.toggleDiscussionBtn.find('.button-text').html(gettext('Hide Discussion')); - if (this.retrieved) { - this.$('section.discussion').slideDown(); - this.showed = true; - } else { - $elem = this.toggleDiscussionBtn; - return this.loadPage($elem, function() { - self.hideDiscussion(); - return DiscussionUtil.discussionAlert( - gettext('Sorry'), - gettext('We had some trouble loading the discussion. Please try again.') - ); - }); - } - } - }; - - DiscussionModuleView.prototype.loadPage = function($elem, error) { - var discussionId, url, - self = this; - discussionId = this.$el.data('discussion-id'); - url = DiscussionUtil.urlFor('retrieve_discussion', discussionId) + ('?page=' + this.page); - return DiscussionUtil.safeAjax({ - $elem: $elem, - $loading: $elem, - takeFocus: true, - url: url, - type: 'GET', - dataType: 'json', - success: function(response, textStatus) { - return self.renderDiscussion($elem, response, textStatus, discussionId); - }, - error: error - }); - }; - - DiscussionModuleView.prototype.renderDiscussion = function($elem, response, textStatus, discussionId) { - var $discussion, user, - self = this; - $elem.focus(); - user = new DiscussionUser(response.user_info); - window.user = user; - DiscussionUtil.setUser(user); - Content.loadContentInfos(response.annotated_content_info); - DiscussionUtil.loadRoles(response.roles); - this.course_settings = new DiscussionCourseSettings(response.course_settings); - this.discussion = new Discussion(); - this.discussion.reset(response.discussion_data, { - silent: false - }); - $discussion = _.template($('#inline-discussion-template').html())({ - 'threads': response.discussion_data, - read_only: this.readOnly, - 'discussionId': discussionId - }); - if (this.$('section.discussion').length) { - this.$('section.discussion').replaceWith($discussion); - } else { - this.$el.append($discussion); - } - this.newPostForm = this.$el.find('.new-post-article'); - this.threadviews = this.discussion.map(function(thread) { - var view; - view = new DiscussionThreadView({ - el: self.$('article#thread_' + thread.id), - model: thread, - mode: 'inline', - context: self.context, - course_settings: self.course_settings, - topicId: discussionId - }); - thread.on('thread:thread_type_updated', function() { - view.rerender(); - return view.expand(); - }); - return view; - }); - _.each(this.threadviews, function(dtv) { - return dtv.render(); - }); - DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info); - this.newPostView = new NewPostView({ - el: this.newPostForm, - collection: this.discussion, - course_settings: this.course_settings, - topicId: discussionId, - is_commentable_cohorted: response.is_commentable_cohorted - }); - this.newPostView.render(); - this.listenTo(this.newPostView, 'newPost:cancel', this.hideNewPost); - this.discussion.on('add', this.addThread); - this.retrieved = true; - this.showed = true; - this.renderPagination(response.num_pages); - if (this.isWaitingOnNewPost) { - return this.newPostForm.show().focus(); - } - }; - - DiscussionModuleView.prototype.addThread = function(thread) { - var article, threadView; - article = $("
"); - this.$('section.discussion > .threads').prepend(article); - threadView = new DiscussionThreadView({ - el: article, - model: thread, - mode: 'inline', - context: this.context, - course_settings: this.course_settings, - topicId: this.$el.data('discussion-id') - }); - threadView.render(); - return this.threadviews.unshift(threadView); - }; - - DiscussionModuleView.prototype.renderPagination = function(numPages) { - var pageUrl, pagination, params; - pageUrl = function(number) { - return '?discussion_page=' + number; - }; - params = DiscussionUtil.getPaginationParams(this.page, numPages, pageUrl); - pagination = _.template($('#pagination-template').html())(params); - return this.$('section.discussion-pagination').html(pagination); - }; - - DiscussionModuleView.prototype.navigateToPage = function(event) { - var currPage, - self = this; - event.preventDefault(); - window.history.pushState({}, window.document.title, event.target.href); - currPage = this.page; - this.page = $(event.target).data('page-number'); - return this.loadPage($(event.target), function() { - self.page = currPage; - DiscussionUtil.discussionAlert( - gettext('Sorry'), - gettext('We had some trouble loading the threads you requested. Please try again.') - ); - }); - }; - - return DiscussionModuleView; - })(Backbone.View); - } -}).call(window); diff --git a/common/static/common/js/discussion/views/discussion_inline_view.js b/common/static/common/js/discussion/views/discussion_inline_view.js new file mode 100644 index 0000000000..f897edfac2 --- /dev/null +++ b/common/static/common/js/discussion/views/discussion_inline_view.js @@ -0,0 +1,163 @@ +/* globals + _, Backbone, Content, Discussion, DiscussionUtil, DiscussionUser, DiscussionCourseSettings, + DiscussionThreadListView, NewPostView +*/ + +(function() { + 'use strict'; + + this.DiscussionInlineView = Backbone.View.extend({ + events: { + 'click .discussion-show': 'toggleDiscussion', + 'keydown .discussion-show': function(event) { + return DiscussionUtil.activateOnSpace(event, this.toggleDiscussion); + }, + 'click .new-post-btn': 'toggleNewPost', + 'keydown .new-post-btn': function(event) { + return DiscussionUtil.activateOnSpace(event, this.toggleNewPost); + } + }, + + initialize: function(options) { + this.$el = options.el; + this.toggleDiscussionBtn = this.$('.discussion-show'); + this.newPostForm = this.$el.find('.new-post-article'); + this.listenTo(this.newPostView, 'newPost:cancel', this.hideNewPost); + }, + + loadDiscussions: function($elem, error) { + var discussionId = this.$el.data('discussion-id'), + url = DiscussionUtil.urlFor('retrieve_discussion', discussionId) + ('?page=' + this.page), + self = this; + + DiscussionUtil.safeAjax({ + $elem: this.$el, + $loading: this.$el, + takeFocus: true, + url: url, + type: 'GET', + dataType: 'json', + success: function(response, textStatus) { + self.renderDiscussion(self.$el, response, textStatus, discussionId); + }, + error: error + }); + }, + + renderDiscussion: function($elem, response, textStatus, discussionId) { + var $discussion, + user = new DiscussionUser(response.user_info), + self = this; + + $elem.focus(); + + window.user = user; + DiscussionUtil.setUser(user); + Content.loadContentInfos(response.annotated_content_info); + DiscussionUtil.loadRoles(response.roles); + + this.course_settings = new DiscussionCourseSettings(response.course_settings); + + this.discussion = new Discussion(); + this.discussion.reset(response.discussion_data, { + silent: false + }); + + $discussion = _.template($('#inline-discussion-template').html())({ + threads: response.discussion_data, + read_only: this.readOnly, + discussionId: discussionId + }); + + if (this.$('section.discussion').length) { + this.$('section.discussion').replaceWith($discussion); + } else { + this.$el.append($discussion); + } + + this.threadListView = new DiscussionThreadListView({ + el: this.$('section.threads'), + collection: self.discussion, + courseSettings: self.course_settings + }); + + this.threadListView.render(); + + DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info); + + this.newPostForm = this.$el.find('.new-post-article'); + + this.newPostView = new NewPostView({ + el: this.newPostForm, + collection: this.discussion, + course_settings: this.course_settings, + topicId: discussionId, + is_commentable_cohorted: response.is_commentable_cohorted + }); + + this.newPostView.render(); + + this.listenTo(this.newPostView, 'newPost:cancel', this.hideNewPost); + this.discussion.on('add', this.addThread); + + this.retrieved = true; + this.showed = true; + + if (this.isWaitingOnNewPost) { + this.newPostForm.show().focus(); + } + }, + + toggleDiscussion: function() { + var self = this; + + if (this.showed) { + this.hideDiscussion(); + } else { + this.toggleDiscussionBtn.addClass('shown'); + this.toggleDiscussionBtn.find('.button-text').html(gettext('Hide Discussion')); + if (this.retrieved) { + this.$('section.discussion').slideDown(); + this.showed = true; + } else { + this.loadDiscussions(this.$el, function() { + self.hideDiscussion(); + DiscussionUtil.discussionAlert( + gettext('Sorry'), + gettext('We had some trouble loading the discussion. Please try again.') + ); + }); + } + } + }, + + hideDiscussion: function() { + this.$('section.discussion').slideUp(); + this.toggleDiscussionBtn.removeClass('shown'); + this.toggleDiscussionBtn.find('.button-text').html(gettext('Show Discussion')); + this.showed = false; + }, + + toggleNewPost: function(event) { + event.preventDefault(); + if (!this.newPostForm) { + this.toggleDiscussion(); + this.isWaitingOnNewPost = true; + return; + } + if (this.showed) { + this.newPostForm.slideDown(300); + } else { + this.newPostForm.show().focus(); + } + this.toggleDiscussionBtn.addClass('shown'); + this.toggleDiscussionBtn.find('.button-text').html(gettext('Hide Discussion')); + this.$('section.discussion').slideDown(); + this.showed = true; + }, + + hideNewPost: function() { + return this.newPostForm.slideUp(300); + } + }); +}).call(window); diff --git a/common/static/common/templates/discussion/inline-discussion.underscore b/common/static/common/templates/discussion/inline-discussion.underscore index 908c2d2380..45dae2d95d 100644 --- a/common/static/common/templates/discussion/inline-discussion.underscore +++ b/common/static/common/templates/discussion/inline-discussion.underscore @@ -6,12 +6,5 @@
- <% _.each(threads, function(thread) { %> -
-
- <% }); %> -
- -
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 2d4d336523..dd3dac878b 100644 --- a/lms/djangoapps/teams/static/teams/js/views/team_discussion.js +++ b/lms/djangoapps/teams/static/teams/js/views/team_discussion.js @@ -3,21 +3,18 @@ */ (function(define) { 'use strict'; - define(['backbone', 'underscore', 'gettext', 'common/js/discussion/discussion_module_view'], - function(Backbone, _, gettext, DiscussionModuleView) { + define(['backbone', 'underscore', 'gettext', 'common/js/discussion/views/discussion_inline_view'], + function(Backbone, _, gettext, DiscussionInlineView) { var TeamDiscussionView = Backbone.View.extend({ initialize: function() { window.$$course_id = this.$el.data('course-id'); }, render: function() { - var discussionModuleView = new DiscussionModuleView({ - el: this.$el, - readOnly: this.$el.data('read-only') === true, - context: 'standalone' + var discussionInlineView = new DiscussionInlineView({ + el: this.$el }); - discussionModuleView.render(); - discussionModuleView.loadPage(this.$el); + discussionInlineView.render(); return this; } }); diff --git a/lms/static/lms/js/build.js b/lms/static/lms/js/build.js index 228773ff67..2a1b44b360 100644 --- a/lms/static/lms/js/build.js +++ b/lms/static/lms/js/build.js @@ -79,7 +79,7 @@ 'logger': 'empty:', 'utility': 'empty:', 'URI': 'empty:', - 'common/js/discussion/discussion_module_view': 'empty:', + 'common/js/discussion/views/discussion_inline_view': 'empty:', 'modernizr': 'empty', // Don't bundle UI Toolkit helpers as they are loaded into the "edx" namespace diff --git a/lms/static/lms/js/spec/main.js b/lms/static/lms/js/spec/main.js index b8b220c0e1..b012565709 100644 --- a/lms/static/lms/js/spec/main.js +++ b/lms/static/lms/js/spec/main.js @@ -642,7 +642,7 @@ ], exports: 'ThreadResponseView' }, - 'common/js/discussion/discussion_module_view': { + 'common/js/discussion/views/discussion_inline_view': { deps: [ 'jquery', 'underscore', @@ -666,7 +666,7 @@ 'common/js/discussion/views/thread_response_show_view', 'common/js/discussion/views/thread_response_view' ], - exports: 'DiscussionModuleView' + exports: 'DiscussionInlineView' }, 'common/js/spec_helpers/discussion_spec_helper': { deps: [ diff --git a/lms/static/sass/discussion/_discussion.scss b/lms/static/sass/discussion/_discussion.scss index a9b7486131..b0584ec67d 100644 --- a/lms/static/sass/discussion/_discussion.scss +++ b/lms/static/sass/discussion/_discussion.scss @@ -324,12 +324,17 @@ body.discussion { .add_post_btn_container { @include text-align(right); position: relative; - top: -45px; + top: -25px; } .discussion { &.inline-discussion { - padding-top: $baseline * 3; + padding-top: $baseline * 1.5; + + section.threads { + border: 1px solid $forum-color-border; + border-radius: $forum-border-radius; + } } } diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index 4c017df08e..d38076d1af 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -193,6 +193,12 @@ } } +// Overrides underspecific style from courseware css: +// https://github.com/edx/edx-platform/blob/master/lms/static/sass/course/courseware/_courseware.scss#L402 +.course-wrapper .course-content .forum-nav-thread-list li { + margin: 0; +} + .forum-nav-thread { border-bottom: 1px solid $forum-color-border; background-color: $forum-color-background; diff --git a/lms/templates/discussion/_discussion_inline.html b/lms/templates/discussion/_discussion_inline.html index 2d9aca2fab..c23c460ac6 100644 --- a/lms/templates/discussion/_discussion_inline.html +++ b/lms/templates/discussion/_discussion_inline.html @@ -1,6 +1,7 @@ <%page expression_filter="h"/> <%include file="_underscore_templates.html" /> +<%include file="_thread_list_template.html" /> <%! from django.utils.translation import ugettext as _ @@ -21,13 +22,10 @@ from openedx.core.djangolib.js_utils import js_escaped_string diff --git a/lms/templates/discussion/_js_body_dependencies.html b/lms/templates/discussion/_js_body_dependencies.html index d4be582f9b..d10b6918b6 100644 --- a/lms/templates/discussion/_js_body_dependencies.html +++ b/lms/templates/discussion/_js_body_dependencies.html @@ -17,7 +17,7 @@ from openedx.core.djangolib.js_utils import js_escaped_string discussion_classes = [ ['Discussion', 'common/js/discussion/discussion'], ['Content', 'common/js/discussion/content'], - ['DiscussionModuleView', 'common/js/discussion/discussion_module_view'], + ['DiscussionInlineView', 'common/js/discussion/views/discussion_inline_view'], ['DiscussionThreadView', 'common/js/discussion/views/discussion_thread_view'], ['DiscussionThreadListView', 'common/js/discussion/views/discussion_thread_list_view'], ['DiscussionThreadProfileView', 'common/js/discussion/views/discussion_thread_profile_view'], diff --git a/lms/templates/discussion/_thread_list_template.html b/lms/templates/discussion/_thread_list_template.html index 20a2d64170..3afffaaee3 100644 --- a/lms/templates/discussion/_thread_list_template.html +++ b/lms/templates/discussion/_thread_list_template.html @@ -1,7 +1,7 @@ <%page expression_filter="h"/> <%! from django.utils.translation import ugettext as _ %> \n" - ); - this.thread.set('body', longMaliciousBody); - maliciousAbbreviation = DiscussionUtil.abbreviateString(this.thread.get('body'), 140); - this.view.render(); - expect($('.post-body').html()).not.toEqual(maliciousAbbreviation); - expect($('.post-body').text()).toEqual(maliciousAbbreviation); - expect($('.post-body').html()).not.toContain('<%- body %>
- <% if (mode == "tab" && obj.courseware_url) { %> + <% if (mode === "tab" && obj.courseware_url) { %> <% var courseware_title_linked = interpolate( '%(courseware_title)s', diff --git a/common/static/common/templates/discussion/thread.underscore b/common/static/common/templates/discussion/thread.underscore index e2881e01fe..305575a160 100644 --- a/common/static/common/templates/discussion/thread.underscore +++ b/common/static/common/templates/discussion/thread.underscore @@ -32,8 +32,4 @@ <% } %>
-
- - -
diff --git a/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js b/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js index 3b014a2b63..3dea86abe8 100644 --- a/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js +++ b/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js @@ -51,7 +51,7 @@ this.threadView = new DiscussionThreadView({ el: this.$('.forum-content'), model: thread, - mode: 'tab', + mode: 'inline', course_settings: this.courseSettings }); this.threadView.render(); From dcafb1e44fe5f8a8c37919542ee959f2d391ddd3 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Wed, 7 Dec 2016 14:21:24 -0500 Subject: [PATCH 14/33] Fix TNL-6099 --- lms/static/sass/discussion/elements/_navigation.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index 7ed8075491..b437573bca 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -191,7 +191,7 @@ } .thread-preview-body { - @include margin($baseline / 4, $baseline, 0, 0); + margin-top: $baseline / 4; color: $forum-color-response-count; font-size: $forum-small-font-size; overflow: hidden; @@ -317,13 +317,14 @@ .forum-nav-thread-wrapper-1 { @extend %forum-nav-thread-wrapper; margin: 0 ($baseline / 4); - width: 80%; + max-width: calc(100% - 125px); flex-grow: 1; // This column should consume all the available space } .forum-nav-thread-wrapper-2 { @extend %forum-nav-thread-wrapper; @include text-align(right); + min-width: 90px; white-space: nowrap; } From 7287e8ef857b54d7c184561df1319e0168e4905e Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Mon, 12 Dec 2016 17:07:06 -0500 Subject: [PATCH 15/33] Fix a number of styling bugs --- .../views/discussion_thread_list_view.js | 7 +++- .../js/views/discussion_board_view.js | 3 +- .../sass/discussion/elements/_labels.scss | 2 +- .../sass/discussion/elements/_navigation.scss | 42 +++---------------- .../discussion/utilities/_variables-v1.scss | 4 +- .../discussion/utilities/_variables-v2.scss | 2 +- 6 files changed, 16 insertions(+), 44 deletions(-) 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 b6176773e3..7fe3df260c 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 @@ -91,6 +91,7 @@ DiscussionThreadListView.prototype.initialize = function(options) { var self = this; this.courseSettings = options.courseSettings; + this.supportsActiveThread = options.supportsActiveThread; this.displayedCollection = new Discussion(this.collection.models, { pages: this.collection.pages }); @@ -164,7 +165,7 @@ active = $currentElement.has('.forum-nav-thread-link.is-active').length !== 0; $currentElement.replaceWith($content); this.showMetadataAccordingToSort(); - if (active) { + if (this.supportsActiveThread && active) { this.setActiveThread(threadId); } }; @@ -347,7 +348,9 @@ DiscussionThreadListView.prototype.threadSelected = function(e) { var threadId; threadId = $(e.target).closest('.forum-nav-thread').attr('data-id'); - this.setActiveThread(threadId); + if (this.supportsActiveThread) { + this.setActiveThread(threadId); + } this.trigger('thread:selected', threadId); return false; }; diff --git a/lms/djangoapps/discussion/static/discussion/js/views/discussion_board_view.js b/lms/djangoapps/discussion/static/discussion/js/views/discussion_board_view.js index cf9c2cba7b..075fcdf3f9 100644 --- a/lms/djangoapps/discussion/static/discussion/js/views/discussion_board_view.js +++ b/lms/djangoapps/discussion/static/discussion/js/views/discussion_board_view.js @@ -45,7 +45,8 @@ this.discussionThreadListView = new DiscussionThreadListView({ collection: this.discussion, el: this.$('.discussion-thread-list-container'), - courseSettings: this.courseSettings + courseSettings: this.courseSettings, + supportsActiveThread: true }).render(); this.searchView = new DiscussionSearchView({ el: this.$('.forum-search') diff --git a/lms/static/sass/discussion/elements/_labels.scss b/lms/static/sass/discussion/elements/_labels.scss index 8ea2f38922..66d0e56047 100644 --- a/lms/static/sass/discussion/elements/_labels.scss +++ b/lms/static/sass/discussion/elements/_labels.scss @@ -1,7 +1,7 @@ // discussion - elements - labels // ==================== -body.discussion, .discussion-module { +.forum-nav-thread { .post-label { @include margin($baseline/4, $baseline/2, 0, 0); @extend %t-weight4; diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index b437573bca..170fc80118 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -205,7 +205,7 @@ @include padding-left(0); list-style: none; - li { + .forum-nav-thread { margin: 0; } } @@ -239,6 +239,10 @@ background-color: $forum-color-hover-thread; } + &.is-active { + background-color: $forum-color-reading-thread; + } + .forum-nav-thread-unread-comments-count { display: inline-block; font-size: $forum-small-font-size; @@ -246,8 +250,6 @@ } } - .discussion:not(.inline-discussion) - &.never-read { .forum-nav-thread-link { @include border-left(3px solid $forum-color-never-read-post); @@ -256,40 +258,6 @@ } } -.discussion.discussion-board { - .forum-nav-thread { - .forum-nav-thread-link.is-active { - color: $forum-color-background; - background-color: $forum-color-reading-thread; - - .forum-nav-thread-labels > li { - border-color: $forum-color-background; - color: $forum-color-background; - } - - .forum-nav-thread-votes-count { - color: $forum-color-background; - } - - .forum-nav-thread-comments-count { - color: $base-font-color; - - &:after { - @include border-right-color($forum-color-border); - } - } - - span.icon { - color: $forum-color-background; - } - - .thread-preview-body { - color: $forum-color-background; - } - } - } -} - %forum-nav-thread-wrapper { display: inline-block; vertical-align: middle; diff --git a/lms/static/sass/discussion/utilities/_variables-v1.scss b/lms/static/sass/discussion/utilities/_variables-v1.scss index 289b48089b..a51f9b7c44 100644 --- a/lms/static/sass/discussion/utilities/_variables-v1.scss +++ b/lms/static/sass/discussion/utilities/_variables-v1.scss @@ -20,8 +20,8 @@ $forum-color-border: $gray-l3 !default; $forum-color-error: $red !default; $forum-color-hover-thread: #f6f6f6 !default; $forum-color-reading-thread: $gray-d3 !default; -$forum-color-read-post: $forum-color-primary !default; -$forum-color-never-read-post: $gray-d3 !default; +$forum-color-read-post: $gray-d3 !default; +$forum-color-never-read-post: $forum-color-primary !default; $forum-color-editor-preview-label: $gray-d2 !default; $forum-color-response-count: $gray-d2 !default; $forum-color-navigation-bar: #f6f6f6 !default; diff --git a/lms/static/sass/discussion/utilities/_variables-v2.scss b/lms/static/sass/discussion/utilities/_variables-v2.scss index a96b7e6caa..ab5c416728 100644 --- a/lms/static/sass/discussion/utilities/_variables-v2.scss +++ b/lms/static/sass/discussion/utilities/_variables-v2.scss @@ -19,7 +19,7 @@ $forum-color-marked-answer: palette(success, text) !default; $forum-color-border: palette(grayscale, back) !default; $forum-color-error: palette(error, accent) !default; $forum-color-hover-thread: palette(grayscale, x-back) !default; -$forum-color-reading-thread: $forum-color-primary !default; +$forum-color-reading-thread: palette(grayscale, x-back) !default; $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; From 81c4e170330979d1c98bc508d36cfcd329c687a5 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Mon, 12 Dec 2016 17:30:21 -0500 Subject: [PATCH 16/33] Revert to showing all posts upon adding a post --- .../views/discussion_inline_view.js | 7 +++++- .../js/discussion/views/new_post_view.js | 22 ++++++++-------- .../view/discussion_inline_view_spec.js | 25 ++++++++++++++++++- 3 files changed, 41 insertions(+), 13 deletions(-) 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 276c82cbee..7e731eaa3e 100644 --- a/common/static/common/js/discussion/views/discussion_inline_view.js +++ b/common/static/common/js/discussion/views/discussion_inline_view.js @@ -121,7 +121,7 @@ this.newPostView.render(); - this.listenTo(this.newPostView, 'newPost:createPost', this.hideNewPost); + this.listenTo(this.newPostView, 'newPost:createPost', this.onNewPostCreated); this.listenTo(this.newPostView, 'newPost:cancel', this.hideNewPost); this.discussion.on('add', this.addThread); @@ -214,6 +214,11 @@ this.showed = true; }, + onNewPostCreated: function() { + this.navigateToAllPosts(); + this.hideNewPost(); + }, + hideNewPost: function() { this.$('section.discussion').find('.inline-discussion-thread-container').removeClass('is-hidden'); this.$('section.discussion').find('.add_post_btn_container') 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 d7c375d48f..0ade9f0e5c 100644 --- a/common/static/common/js/discussion/views/new_post_view.js +++ b/common/static/common/js/discussion/views/new_post_view.js @@ -1,4 +1,4 @@ -/* globals DiscussionTopicMenuView, DiscussionUtil, Thread */ +/* globals _, Backbone, DiscussionTopicMenuView, DiscussionUtil, Thread */ (function() { 'use strict'; var __hasProp = {}.hasOwnProperty, @@ -81,14 +81,14 @@ }; NewPostView.prototype.getCohortOptions = function() { - var user_cohort_id; + var userCohortId; if (this.course_settings.get('is_cohorted') && DiscussionUtil.isPrivilegedUser()) { - user_cohort_id = $('#discussion-container').data('user-cohort-id'); + userCohortId = $('#discussion-container').data('user-cohort-id'); return _.map(this.course_settings.get('cohorts'), function(cohort) { return { value: cohort.id, text: cohort.name, - selected: cohort.id === user_cohort_id + selected: cohort.id === userCohortId }; }); } else { @@ -126,15 +126,15 @@ }; NewPostView.prototype.createPost = function(event) { - var anonymous, anonymous_to_peers, body, follow, group, thread_type, title, topicId, url, + var anonymous, anonymousToPeers, body, follow, group, threadType, title, topicId, url, self = this; event.preventDefault(); - thread_type = this.$('.post-type-input:checked').val(); + threadType = this.$('.post-type-input:checked').val(); title = this.$('.js-post-title').val(); body = this.$('.js-post-body').find('.wmd-input').val(); group = this.$('.js-group-select option:selected').attr('value'); anonymous = false || this.$('.js-anon').is(':checked'); - anonymous_to_peers = false || this.$('.js-anon-peers').is(':checked'); + anonymousToPeers = false || this.$('.js-anon-peers').is(':checked'); follow = false || this.$('.js-follow').is(':checked'); topicId = this.isTabMode() ? this.topicView.getCurrentTopicId() : this.topicId; url = DiscussionUtil.urlFor('create_thread', topicId); @@ -145,11 +145,11 @@ type: 'POST', dataType: 'json', data: { - thread_type: thread_type, + thread_type: threadType, title: title, body: body, anonymous: anonymous, - anonymous_to_peers: anonymous_to_peers, + anonymous_to_peers: anonymousToPeers, auto_subscribe: follow, group_id: group }, @@ -179,7 +179,7 @@ } } this.trigger('newPost:cancel'); - return this.resetForm(); + this.resetForm(); }; NewPostView.prototype.resetForm = function() { @@ -187,7 +187,7 @@ DiscussionUtil.clearFormErrors(this.$('.post-errors')); this.$('.wmd-preview p').html(''); if (this.isTabMode()) { - return this.topicView.setTopic(this.$('button.topic-title').first()); + this.topicView.setTopic(this.$('button.topic-title').first()); } }; diff --git a/common/static/common/js/spec/discussion/view/discussion_inline_view_spec.js b/common/static/common/js/spec/discussion/view/discussion_inline_view_spec.js index 5e7b906ef2..77aba3f7e8 100644 --- a/common/static/common/js/spec/discussion/view/discussion_inline_view_spec.js +++ b/common/static/common/js/spec/discussion/view/discussion_inline_view_spec.js @@ -120,13 +120,36 @@ expect(testView.$('.new-post-article')).toHaveClass('is-hidden'); }); - it('should be hidden when the "close" button is clicked', function() { + it('should be hidden when the "Close" button is clicked', function() { var testView = createTestView(this); showDiscussion(this, testView); testView.$('.new-post-btn').click(); testView.$('.forum-new-post-form .add-post-cancel').click(); expect(testView.$('.new-post-article')).toHaveClass('is-hidden'); }); + + it('should return to the thread listing after adding a post', function() { + var testView = createTestView(this); + showDiscussion(this, testView); + + // Navigate to an individual thread + testView.$('.forum-nav-thread-link').click(); + + // Click "Add a Post", fill in the form, and submit it + testView.$('.new-post-btn').click(); + testView.$('.js-post-title').text('Test title'); + testView.$('.wmd-input').text('Test body'); + setNextAjaxResult(this, { + hello: 'world' + }); + testView.$('.forum-new-post-form .submit').click(); + + // Verify that the list of threads is shown + expect(testView.$('.inline-threads')).not.toHaveClass('is-hidden'); + + // Verify that the individual thread is no longer shown + expect(testView.$('.group-visibility-label').length).toBe(0); + }); }); describe('thread listing', function() { From 4922d7753e956904ca3ee63cfc790b4b09c1679b Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Tue, 13 Dec 2016 08:39:51 -0500 Subject: [PATCH 17/33] Clean up discussion styles to be consistent across views --- .../discussion/thread-show.underscore | 32 ++-- .../templates/discussion/thread.underscore | 4 +- .../discussion/templates/search.underscore | 2 +- .../discussion/discussion_board.html | 2 +- .../discussion/discussion_profile_page.html | 1 - lms/static/sass/discussion/_build.scss | 1 + lms/static/sass/discussion/_discussion.scss | 16 +- lms/static/sass/discussion/_layouts.scss | 39 ----- .../sass/discussion/elements/_labels.scss | 4 +- .../sass/discussion/utilities/_developer.scss | 96 ++++++------ .../sass/discussion/utilities/_shame.scss | 17 +- .../discussion/utilities/_variables-v1.scss | 8 +- .../discussion/utilities/_variables-v2.scss | 8 +- lms/static/sass/discussion/views/_thread.scss | 148 +++++++----------- .../ux/reference/course-skeleton.html | 2 +- 15 files changed, 161 insertions(+), 219 deletions(-) diff --git a/common/static/common/templates/discussion/thread-show.underscore b/common/static/common/templates/discussion/thread-show.underscore index 40a6a69161..bf8aab3bdc 100644 --- a/common/static/common/templates/discussion/thread-show.underscore +++ b/common/static/common/templates/discussion/thread-show.underscore @@ -1,5 +1,21 @@
+ <% if (!readOnly) { %> +
+ <%= + _.template( + $('#forum-actions').html())( + { + contentId: cid, + contentType: 'post', + primaryActions: ['vote', 'follow'], + secondaryActions: ['pin', 'edit', 'delete', 'report', 'close'], + readOnly: readOnly + } + ) + %> +
+ <% } %>

<%- title %>

@@ -32,22 +48,6 @@

- <% if (!readOnly) { %> -
- <%= - _.template( - $('#forum-actions').html())( - { - contentId: cid, - contentType: 'post', - primaryActions: ['vote', 'follow'], - secondaryActions: ['pin', 'edit', 'delete', 'report', 'close'], - readOnly: readOnly - } - ) - %> -
- <% } %>
<%- body %>
diff --git a/common/static/common/templates/discussion/thread.underscore b/common/static/common/templates/discussion/thread.underscore index 305575a160..23520e68d9 100644 --- a/common/static/common/templates/discussion/thread.underscore +++ b/common/static/common/templates/discussion/thread.underscore @@ -9,7 +9,7 @@
<% if (!readOnly) { %>
-
@@ -26,7 +26,7 @@
    - +
    <% } %> diff --git a/lms/djangoapps/discussion/static/discussion/templates/search.underscore b/lms/djangoapps/discussion/static/discussion/templates/search.underscore index 3f289ce2a5..d1372529f3 100644 --- a/lms/djangoapps/discussion/static/discussion/templates/search.underscore +++ b/lms/djangoapps/discussion/static/discussion/templates/search.underscore @@ -6,4 +6,4 @@ id="search" placeholder="<%- gettext("Search all posts") %>" /> - + diff --git a/lms/djangoapps/discussion/templates/discussion/discussion_board.html b/lms/djangoapps/discussion/templates/discussion/discussion_board.html index a6cc5cfe1e..03f07ca09d 100644 --- a/lms/djangoapps/discussion/templates/discussion/discussion_board.html +++ b/lms/djangoapps/discussion/templates/discussion/discussion_board.html @@ -67,7 +67,7 @@ DiscussionBoardFactory({ ## Add Post button % if has_permission(user, 'create_thread', course.id):
    - +
    % endif ## Search box diff --git a/lms/djangoapps/discussion/templates/discussion/discussion_profile_page.html b/lms/djangoapps/discussion/templates/discussion/discussion_profile_page.html index 04ec54f625..a727028d38 100644 --- a/lms/djangoapps/discussion/templates/discussion/discussion_profile_page.html +++ b/lms/djangoapps/discussion/templates/discussion/discussion_profile_page.html @@ -20,7 +20,6 @@ from openedx.core.djangolib.js_utils import dump_js_escaped_json, js_escaped_str <%block name="pagetitle">${_("Discussion - {course_number}").format(course_number=course.display_number_with_default)} <%block name="headextra"> -<%static:css group='style-inline-discussion'/> <%include file="_js_head_dependencies.html" /> diff --git a/lms/static/sass/discussion/_build.scss b/lms/static/sass/discussion/_build.scss index a5ed2f4d2c..299d6f3c84 100644 --- a/lms/static/sass/discussion/_build.scss +++ b/lms/static/sass/discussion/_build.scss @@ -37,5 +37,6 @@ $static-path: '../..' !default; @import 'views/create-edit-post'; @import 'views/response'; @import 'views/search'; +@import 'views/inline'; @import 'utilities/developer'; @import 'utilities/shame'; diff --git a/lms/static/sass/discussion/_discussion.scss b/lms/static/sass/discussion/_discussion.scss index 275bd1ecf0..2835cd7514 100644 --- a/lms/static/sass/discussion/_discussion.scss +++ b/lms/static/sass/discussion/_discussion.scss @@ -2,7 +2,7 @@ // ==================== // NOTE: this file is deprecated, and we should not continue to add to this file. Use other partials as appropriate. -body.discussion { +.discussion-body { .edit-post-form { @include clearfix(); @@ -175,18 +175,17 @@ body.discussion { } } -.container .discussion-body { +.discussion-body { @include clearfix(); border: none; background: transparent; box-shadow: none; - line-height: 1.4; .bottom-post-status { padding: 30px; font-size: $forum-x-large-font-size; font-weight: 700; - color: $gray-l3; + color: $forum-color-copy-light; text-align: center; } @@ -196,14 +195,10 @@ body.discussion { a { word-wrap: break-word; } - - p + p { - margin-top: $baseline; - } } blockquote { - background: $gray-l5; + background: $forum-color-background-light; border-radius: $forum-border-radius; padding: ($baseline/4) ($baseline/2); font-size: $forum-base-font-size; @@ -248,7 +243,6 @@ body.discussion { .discussion-reply-new { @include clearfix(); @include transition(opacity .2s linear 0s); - padding: 0 ($baseline/2); h4 { font-size: $forum-large-font-size; @@ -432,6 +426,8 @@ section.discussion-pagination { .response-count { @include float(right); + color: $forum-color-response-count; + font-size: $forum-base-font-size; } .response-pagination { diff --git a/lms/static/sass/discussion/_layouts.scss b/lms/static/sass/discussion/_layouts.scss index 90d78a7bd2..b9d51ed81d 100644 --- a/lms/static/sass/discussion/_layouts.scss +++ b/lms/static/sass/discussion/_layouts.scss @@ -1,45 +1,6 @@ // Layouts for discussion pages @import '../course/base/extends'; -.discussion-user-profile-board { - - .discussion-profile-title { - margin-bottom: $baseline / 5; - font-size: $forum-x-large-font-size; - } - - .discussion-profile-count { - margin-top: $baseline / 4; - } - - .discussion-profile-info { - @include margin-right($baseline); - } - - .user-name { - @include margin-right($baseline); - font-size: $forum-x-large-font-size; - } - - .user-roles { - font-size: $forum-small-font-size; - font-style: italic; - } - - .discussion-post .post-body { - width: 90%; // this page is full screen - } - - .all-posts-btn { - padding: 0; - font-size: $forum-base-font-size; - } - - .response-count { - @include margin-right($baseline / 4); - } -} - .discussion-column { min-height: 500px; diff --git a/lms/static/sass/discussion/elements/_labels.scss b/lms/static/sass/discussion/elements/_labels.scss index 66d0e56047..2ee199bed6 100644 --- a/lms/static/sass/discussion/elements/_labels.scss +++ b/lms/static/sass/discussion/elements/_labels.scss @@ -1,11 +1,11 @@ // discussion - elements - labels // ==================== -.forum-nav-thread { +.discussion { .post-label { @include margin($baseline/4, $baseline/2, 0, 0); - @extend %t-weight4; font-size: $forum-small-font-size; + font-weight: 100; display: inline; white-space: nowrap; diff --git a/lms/static/sass/discussion/utilities/_developer.scss b/lms/static/sass/discussion/utilities/_developer.scss index a45a4b0aa0..831c21a556 100644 --- a/lms/static/sass/discussion/utilities/_developer.scss +++ b/lms/static/sass/discussion/utilities/_developer.scss @@ -17,66 +17,64 @@ // provisional styling for "search alerts" (messages boxes that appear in the sidebar below the search // input field with notices pertaining to the search result). // -------------------- -body.discussion { - .forum-nav { +.forum-nav { - // wrapper for multiple alerts - .search-alerts { + // wrapper for multiple alerts + .search-alerts { + } + + // a single alert, which can be independently displayed / dismissed + .search-alert { + @include transition(none); + padding: ($baseline/2) 11px ($baseline/2) 18px; + background-color: $black; + } + + .search-alert-content, .search-alert-controls { + display: inline-block; + vertical-align: middle; + } + + // alert content + .search-alert-content { + width: 70%; + + // alert copy + .message { + font-size: $forum-small-font-size; + color: $white; + + em { + @extend %t-weight5; + font-style: italic; + } } - // a single alert, which can be independently displayed / dismissed - .search-alert { + // links to jump to users/content in alerts + .link-jump { @include transition(none); - padding: ($baseline/2) 11px ($baseline/2) 18px; - background-color: $black; + @extend %t-weight5; } + } - .search-alert-content, .search-alert-controls { - display: inline-block; - vertical-align: middle; - } + // alert controls + .search-alert-controls { + @include text-align(right); + width: 28%; - // alert content - .search-alert-content { - width: 70%; + .control { + @include transition(none); + @extend %t-weight5; + padding: ($baseline/4) ($baseline/2); + color: $white; + font-size: $forum-base-font-size; - // alert copy - .message { - font-size: $forum-small-font-size; + // reseting poorly globally scoped hover/focus state for this control + &:hover, &:focus { color: $white; - - em { - @extend %t-weight5; - font-style: italic; - } - } - - // links to jump to users/content in alerts - .link-jump { - @include transition(none); - @extend %t-weight5; - } - } - - // alert controls - .search-alert-controls { - @include text-align(right); - width: 28%; - - .control { - @include transition(none); - @extend %t-weight5; - padding: ($baseline/4) ($baseline/2); - color: $white; - font-size: $forum-base-font-size; - - // reseting poorly globally scoped hover/focus state for this control - &:hover, &:focus { - color: $white; - text-decoration: none; - } + text-decoration: none; } } } diff --git a/lms/static/sass/discussion/utilities/_shame.scss b/lms/static/sass/discussion/utilities/_shame.scss index d04a574fe7..31f1713ede 100644 --- a/lms/static/sass/discussion/utilities/_shame.scss +++ b/lms/static/sass/discussion/utilities/_shame.scss @@ -118,7 +118,20 @@ li[class*=forum-nav-thread-label-] { // ------- .discussion-module { - .wrapper-post-header .post-title { - margin-bottom: 0 !important; // overrides "#seq_content h1" styling + .wrapper-post-header { + margin-bottom: 0 !important; // overrides default header styling + padding-bottom: 0 !important; // overrides default header styling + + .posted-details { + margin: ($baseline/5) 0 !important; // overrides courseware p styling + } + + .post-labels { + font-size: $forum-base-font-size; // overrides default heading styling + } + + .post-title { + margin-bottom: 0 !important; // overrides "#seq_content h1" styling + } } } diff --git a/lms/static/sass/discussion/utilities/_variables-v1.scss b/lms/static/sass/discussion/utilities/_variables-v1.scss index a51f9b7c44..79879c6058 100644 --- a/lms/static/sass/discussion/utilities/_variables-v1.scss +++ b/lms/static/sass/discussion/utilities/_variables-v1.scss @@ -3,6 +3,8 @@ // base color variables $forum-color-primary: $blue !default; +$forum-color-copy-light: rgb(65, 65, 65) !default; +$forum-color-background-light: rgb(245, 245, 245) !default; // contextual color variables $forum-color-background: $white; @@ -18,13 +20,13 @@ $forum-color-community-ta: $green-d1 !default; $forum-color-marked-answer: $green-d1 !default; $forum-color-border: $gray-l3 !default; $forum-color-error: $red !default; -$forum-color-hover-thread: #f6f6f6 !default; -$forum-color-reading-thread: $gray-d3 !default; +$forum-color-hover-thread: $forum-color-background-light !default; +$forum-color-reading-thread: $forum-color-background-light !default; $forum-color-read-post: $gray-d3 !default; $forum-color-never-read-post: $forum-color-primary !default; $forum-color-editor-preview-label: $gray-d2 !default; $forum-color-response-count: $gray-d2 !default; -$forum-color-navigation-bar: #f6f6f6 !default; +$forum-color-navigation-bar: $forum-color-background-light !default; $forum-color-count: $gray-d3 !default; $forum-color-background-label: $gray-d2 !default; diff --git a/lms/static/sass/discussion/utilities/_variables-v2.scss b/lms/static/sass/discussion/utilities/_variables-v2.scss index ab5c416728..b33d1f211a 100644 --- a/lms/static/sass/discussion/utilities/_variables-v2.scss +++ b/lms/static/sass/discussion/utilities/_variables-v2.scss @@ -3,6 +3,8 @@ // base color variables $forum-color-primary: palette(primary, base) !default; +$forum-color-copy-light: palette(grayscale, base) !default; +$forum-color-background-light: palette(grayscale, x-back) !default; // contextual color variables $forum-color-background: $lms-container-background-color !default; @@ -18,13 +20,13 @@ $forum-color-community-ta: palette(success, text) !default; $forum-color-marked-answer: palette(success, text) !default; $forum-color-border: palette(grayscale, back) !default; $forum-color-error: palette(error, accent) !default; -$forum-color-hover-thread: palette(grayscale, x-back) !default; -$forum-color-reading-thread: palette(grayscale, x-back) !default; +$forum-color-hover-thread: $forum-color-background-light !default; +$forum-color-reading-thread: $forum-color-background-light !default; $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: palette(grayscale, x-back) !default; +$forum-color-navigation-bar: $forum-color-background-light !default; $forum-color-count: palette(grayscale, base) !default; $forum-color-background-label: palette(grayscale, base) !default; diff --git a/lms/static/sass/discussion/views/_thread.scss b/lms/static/sass/discussion/views/_thread.scss index 5201e6514a..20ab26f958 100644 --- a/lms/static/sass/discussion/views/_thread.scss +++ b/lms/static/sass/discussion/views/_thread.scss @@ -13,42 +13,28 @@ .discussion-post { padding: 0 ($baseline/2); - .wrapper-post-header { - padding-bottom: $baseline; - } - - .post-header-content { - display: inline-block; - width: flex-grid(9,12); - } - .post-header-actions { @include float(right); } - .post-body { - @include float(left); - width: flex-grid(10,12); - } + .posted-details { + @extend %t-copy-sub2; + margin: ($baseline/5) 0; + color: $forum-color-copy-light; - .post-context { - @include float(left); + .username { + @extend %t-strong; + display: inline; + } + + .timeago, .top-post-status { + color: inherit; + } } } -.posted-details { - @extend %t-copy-sub2; - margin: ($baseline/5) 0; - color: $gray-d1; - - .username { - @extend %t-strong; - display: inline; - } - - .timeago, .top-post-status { - color: inherit; - } +.thread-responses-wrapper { + padding: 0 ($baseline/2); } // response layout @@ -67,6 +53,11 @@ position: absolute; top: $baseline; } + + // response body + .response-body { + @extend %t-copy-sub1; + } } // comments layout @@ -79,7 +70,7 @@ width: flex-grid(10,12); p + p { - margin-top: 12px; + margin-top: ($baseline/2); } } @@ -99,55 +90,50 @@ } // +thread - elements - shared styles -body.discussion { +.discussion-post, .discussion-response, .discussion-comment { + @include clearfix(); - .discussion-post, .discussion-response, .discussion-comment { - @include clearfix(); + // thread - images + .author-image { + @include margin-right($baseline/2); + display: inline-block; + vertical-align: top; - // thread - images - .author-image { - @include margin-right($baseline/2); - display: inline-block; - vertical-align: top; - - // STATE: No profile image - &:empty { - display: none; - } - - // CASE: post image - &.level-post { - height: $post-image-dimension; - width: $post-image-dimension; - } - - // CASE: response image - &.level-response { - height: $response-image-dimension; - width: $response-image-dimension; - } - - // CASE: comment image - &.level-comment { - height: $comment-image-dimension; - width: $comment-image-dimension; - } - - img { - border-radius: $forum-border-radius; - } + // STATE: No profile image + &:empty { + display: none; } - } - .discussion-response .response-body { - @include padding-right($baseline); //ensures content doesn't overlap on post or response actions. + // CASE: post image + &.level-post { + height: $post-image-dimension; + width: $post-image-dimension; + } + + // CASE: response image + &.level-response { + height: $response-image-dimension; + width: $response-image-dimension; + } + + // CASE: comment image + &.level-comment { + height: $comment-image-dimension; + width: $comment-image-dimension; + } + + img { + border-radius: $forum-border-radius; + } } } +.discussion-response .response-body { + @include padding-right($baseline); //ensures content doesn't overlap on post or response actions. +} + // +post - individual element styling -// NOTE: discussion-article is used for inline discussion modules. -.discussion-post, -.discussion-article { +.discussion-post { @include clearfix(); .post-header-content { @@ -162,24 +148,19 @@ body.discussion { // post body .post-body { @extend %t-copy-sub1; - // clear: both; //TO-DO: confirm that removing this is ok for all cases of discussion posts. + padding: ($baseline/2) 0; } // post context .post-context { @extend %t-copy-sub2; - margin-top: $baseline; - color: $gray-d1; + color: $forum-color-copy-light; + font-weight: 100; // CASE: no courseware context or cohort visibility rules &:empty { display: none; } - - // post visibility - cohorts - .group-visibility-label { - margin-top: ($baseline/4); - } } } @@ -193,10 +174,6 @@ body.discussion { margin-bottom: 0; } - .thread-main-wrapper, .thread-responses-wrapper { - padding: $baseline; - } - .discussion-article { @include transition(all .2s linear 0s); border: 1px solid $forum-color-border; @@ -290,13 +267,6 @@ body.discussion { } } -// Custom styling for the list of user threads -.discussion-user-threads { - .discussion-post { - padding: $baseline/2; - } -} - .thread-wrapper, .forum-new-post-form { img { diff --git a/lms/templates/ux/reference/course-skeleton.html b/lms/templates/ux/reference/course-skeleton.html index daf1cf7983..8e6a9a937f 100644 --- a/lms/templates/ux/reference/course-skeleton.html +++ b/lms/templates/ux/reference/course-skeleton.html @@ -56,7 +56,7 @@ id="search" placeholder="Search all the things" /> - +
    From dc5f2e2fa19aa7888840f750afbaa1d3df554ad2 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Mon, 12 Dec 2016 16:45:34 -0500 Subject: [PATCH 18/33] Fix TNL-6133 --- lms/static/sass/discussion/views/_inline.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/static/sass/discussion/views/_inline.scss b/lms/static/sass/discussion/views/_inline.scss index 3f86adebc3..9e7c5efb6b 100644 --- a/lms/static/sass/discussion/views/_inline.scss +++ b/lms/static/sass/discussion/views/_inline.scss @@ -22,7 +22,7 @@ .icon { position: absolute; @include left(7px); - top: 17px; + top: 16px; } } } From 1958a3636ece308551c78fe998cce9a70ee9e7d6 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Mon, 12 Dec 2016 16:53:41 -0500 Subject: [PATCH 19/33] Fix TNL-6139 --- .../common/templates/discussion/inline-discussion.underscore | 1 + 1 file changed, 1 insertion(+) diff --git a/common/static/common/templates/discussion/inline-discussion.underscore b/common/static/common/templates/discussion/inline-discussion.underscore index c7b88691fa..c855acdc2a 100644 --- a/common/static/common/templates/discussion/inline-discussion.underscore +++ b/common/static/common/templates/discussion/inline-discussion.underscore @@ -13,6 +13,7 @@
    From 13eee1c1044cc26f334daf11e8cfc0b179c04573 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Mon, 12 Dec 2016 16:58:30 -0500 Subject: [PATCH 20/33] Fix TNL-6142 --- .../static/common/js/discussion/views/discussion_inline_view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7e731eaa3e..673f185a3c 100644 --- a/common/static/common/js/discussion/views/discussion_inline_view.js +++ b/common/static/common/js/discussion/views/discussion_inline_view.js @@ -206,7 +206,7 @@ if (this.showed) { this.$('section.discussion').find('.inline-discussion-thread-container').addClass('is-hidden'); this.$('section.discussion').find('.add_post_btn_container').addClass('is-hidden'); - this.newPostForm.removeClass('is-hidden').find('.js-post-title').focus(); + this.newPostForm.removeClass('is-hidden').find('.js-post-title'); } this.newPostView.$el.removeClass('is-hidden'); this.toggleDiscussionBtn.addClass('shown'); From 52d5de5b5dd04db623f1ee0c1ff0ad3c7e66a462 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Tue, 13 Dec 2016 12:17:07 -0500 Subject: [PATCH 21/33] More discussion styles --- .../discussion/thread-response-show.underscore | 2 +- .../templates/discussion/thread-show.underscore | 2 +- lms/static/sass/discussion/_mixins.scss | 8 ++++---- lms/static/sass/discussion/utilities/_shame.scss | 16 +++++++++++++++- lms/static/sass/discussion/views/_response.scss | 3 +-- lms/static/sass/discussion/views/_thread.scss | 12 ++++++------ 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/common/static/common/templates/discussion/thread-response-show.underscore b/common/static/common/templates/discussion/thread-response-show.underscore index fc227aca2f..29cbd233d8 100644 --- a/common/static/common/templates/discussion/thread-response-show.underscore +++ b/common/static/common/templates/discussion/thread-response-show.underscore @@ -1,4 +1,4 @@ -
    +
    <%= author_display %>

    diff --git a/common/static/common/templates/discussion/thread-show.underscore b/common/static/common/templates/discussion/thread-show.underscore index bf8aab3bdc..5055f5be29 100644 --- a/common/static/common/templates/discussion/thread-show.underscore +++ b/common/static/common/templates/discussion/thread-show.underscore @@ -1,5 +1,5 @@

    -
    +
    <% if (!readOnly) { %>
    <%= diff --git a/lms/static/sass/discussion/_mixins.scss b/lms/static/sass/discussion/_mixins.scss index cc8861bf59..482e8d3a9f 100644 --- a/lms/static/sass/discussion/_mixins.scss +++ b/lms/static/sass/discussion/_mixins.scss @@ -43,16 +43,16 @@ @mixin discussion-wmd-preview-container { @include border-radius(0, 0, $forum-border-radius, $forum-border-radius); box-sizing: border-box; - border: 1px solid $gray-l1; + border: 1px solid $forum-color-border; border-top: none; width: 100%; - background: $gray-l4; + background: $forum-color-background-light; box-shadow: 0 1px 3px $shadow-l1 inset; } @mixin discussion-new-post-wmd-preview-container { @include discussion-wmd-preview-container; - border-color: $gray-d3; + border-color: $forum-color-border; box-shadow: 0 1px 3px $shadow-d1 inset; } @@ -67,7 +67,7 @@ @mixin discussion-wmd-preview { padding: ($baseline/2) $baseline; width: auto; - color: $gray-d3; + color: $forum-color-background-light; ol, ul { // Fix up the RTL-only _reset.scss, but only in specific places @include padding-left($baseline*2); diff --git a/lms/static/sass/discussion/utilities/_shame.scss b/lms/static/sass/discussion/utilities/_shame.scss index 31f1713ede..253cef89b7 100644 --- a/lms/static/sass/discussion/utilities/_shame.scss +++ b/lms/static/sass/discussion/utilities/_shame.scss @@ -118,7 +118,7 @@ li[class*=forum-nav-thread-label-] { // ------- .discussion-module { - .wrapper-post-header { + .post-header { margin-bottom: 0 !important; // overrides default header styling padding-bottom: 0 !important; // overrides default header styling @@ -135,3 +135,17 @@ li[class*=forum-nav-thread-label-] { } } } + +// overrides courseware styling to keep views consistent everywhere +.discussion-article { + .response-header { + line-height: 1 !important; + font-size: $forum-base-font-size !important; + margin-bottom: 0 !important; + padding-bottom: 0 !important; + } + + p { + margin-bottom: 0 !important; + } +} diff --git a/lms/static/sass/discussion/views/_response.scss b/lms/static/sass/discussion/views/_response.scss index ee465cd8c1..bf9c7dd587 100644 --- a/lms/static/sass/discussion/views/_response.scss +++ b/lms/static/sass/discussion/views/_response.scss @@ -42,8 +42,7 @@ } // +base - single response element -.container .discussion-response { - +.discussion-response { .response-header-content { // CASE: larger username for responses diff --git a/lms/static/sass/discussion/views/_thread.scss b/lms/static/sass/discussion/views/_thread.scss index 20ab26f958..7570e9e426 100644 --- a/lms/static/sass/discussion/views/_thread.scss +++ b/lms/static/sass/discussion/views/_thread.scss @@ -16,7 +16,10 @@ .post-header-actions { @include float(right); } +} +// post article +.discussion-article { .posted-details { @extend %t-copy-sub2; margin: ($baseline/5) 0; @@ -129,7 +132,9 @@ } .discussion-response .response-body { - @include padding-right($baseline); //ensures content doesn't overlap on post or response actions. + @include padding(($baseline/2), $baseline, 0, 0); //ensures content doesn't overlap on post or response actions. + margin-bottom: 0.2em; + font-size: $forum-base-font-size; } // +post - individual element styling @@ -221,11 +226,6 @@ font-size: $forum-large-font-size; } } - - .response-body { - margin-bottom: 0.2em; - font-size: $forum-base-font-size; - } } .discussion-reply-new { From 8ac482ef740eefb9040989e2b6e9a17c4c7e26dd Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Tue, 13 Dec 2016 12:41:34 -0500 Subject: [PATCH 22/33] Update buttons to have darker hover colors --- .../discussion/utilities/_variables-v1.scss | 28 +++++++++---------- .../discussion/_discussion_inline.html | 2 +- package.json | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lms/static/sass/discussion/utilities/_variables-v1.scss b/lms/static/sass/discussion/utilities/_variables-v1.scss index 79879c6058..c513267663 100644 --- a/lms/static/sass/discussion/utilities/_variables-v1.scss +++ b/lms/static/sass/discussion/utilities/_variables-v1.scss @@ -2,33 +2,33 @@ // ==================== // base color variables -$forum-color-primary: $blue !default; +$forum-color-primary: rgb(0, 117, 180) !default; $forum-color-copy-light: rgb(65, 65, 65) !default; $forum-color-background-light: rgb(245, 245, 245) !default; // contextual color variables $forum-color-background: $white; $forum-color-active-thread: $forum-color-primary !default; -$forum-color-hover: $action-primary-bg !default; +$forum-color-hover: rgb(6, 86, 131) !default; $forum-color-active-text: $white !default; -$forum-color-pinned: $pink !default; -$forum-color-reported: $pink !default; +$forum-color-pinned: rgb(152, 44, 98) !default; +$forum-color-reported: rgb(152, 44, 98) !default; $forum-color-closed: $black !default; $forum-color-following: $forum-color-primary !default; $forum-color-staff: $forum-color-primary !default; -$forum-color-community-ta: $green-d1 !default; -$forum-color-marked-answer: $green-d1 !default; -$forum-color-border: $gray-l3 !default; -$forum-color-error: $red !default; +$forum-color-community-ta: rgb(0, 129, 0) !default; +$forum-color-marked-answer: rgb(0, 129, 0) !default; +$forum-color-border: rgb(217, 217, 217) !default; +$forum-color-error: rgb(203, 7, 18) !default; $forum-color-hover-thread: $forum-color-background-light !default; $forum-color-reading-thread: $forum-color-background-light !default; -$forum-color-read-post: $gray-d3 !default; +$forum-color-read-post: $forum-color-copy-light !default; $forum-color-never-read-post: $forum-color-primary !default; -$forum-color-editor-preview-label: $gray-d2 !default; -$forum-color-response-count: $gray-d2 !default; +$forum-color-editor-preview-label: $forum-color-copy-light !default; +$forum-color-response-count: $forum-color-copy-light !default; $forum-color-navigation-bar: $forum-color-background-light !default; -$forum-color-count: $gray-d3 !default; -$forum-color-background-label: $gray-d2 !default; +$forum-color-count: $forum-color-copy-light !default; +$forum-color-background-label: rgb(65, 65, 65) !default; // post images $post-image-dimension: ($baseline*3) !default; // image size + margin @@ -45,5 +45,5 @@ $forum-small-font-size: 12px; $forum-border-radius: 3px; // btn colors -$uxpl-primary-blue: $blue !default; +$uxpl-primary-blue: rgb(0, 117, 180) !default; $btn-default-background-color: $white; diff --git a/lms/templates/discussion/_discussion_inline.html b/lms/templates/discussion/_discussion_inline.html index c23c460ac6..cb6b9706d5 100644 --- a/lms/templates/discussion/_discussion_inline.html +++ b/lms/templates/discussion/_discussion_inline.html @@ -17,7 +17,7 @@ from openedx.core.djangolib.js_utils import js_escaped_string

    ${_(display_name)}

    ${_("Topic:")} ${discussion_category} / ${discussion_target}
    -
    diff --git a/package.json b/package.json index 8d16e8734d..ae711e54f2 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "backbone.paginator": "~2.0.3", "backbone-validation": "~0.11.5", "coffee-script": "1.6.1", - "edx-pattern-library": "0.17.1", + "edx-pattern-library": "0.18.0", "edx-ui-toolkit": "1.5.0", "jquery": "~2.2.0", "jquery-migrate": "^1.4.1", From 15e5be973e20fcfb382d3b06b45ab584427850aa Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Tue, 13 Dec 2016 12:57:46 -0500 Subject: [PATCH 23/33] Fix TNL-6140 --- lms/static/sass/discussion/elements/_navigation.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index 170fc80118..d170a10b0c 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -197,6 +197,12 @@ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; + + @include rtl { + // This is counterintuitive, but when showing a preview of the first part of LTR text, using direction: rtl + // will actually show the _last_ part of that text. + direction: ltr; + } } } From 9bbf96391c3b436de5d1e9422741c6c9efbcdfdc Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Tue, 13 Dec 2016 13:01:12 -0500 Subject: [PATCH 24/33] fixup! Fix TNL-6140 --- lms/static/sass/discussion/elements/_navigation.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index d170a10b0c..1b8e7b4fd1 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -199,7 +199,7 @@ text-overflow: ellipsis; @include rtl { - // This is counterintuitive, but when showing a preview of the first part of LTR text, using direction: rtl + // This is counterintuitive, but when showing a preview of the first part of RTL text, using direction: rtl // will actually show the _last_ part of that text. direction: ltr; } From f58d920b13aa3eedf8367ce4256211f0da460819 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Tue, 13 Dec 2016 17:23:19 -0500 Subject: [PATCH 25/33] Hide the navigation bar when sorting won't work --- .../common/js/discussion/views/discussion_inline_view.js | 3 ++- .../common/js/discussion/views/discussion_thread_list_view.js | 4 ++++ .../discussion/js/views/discussion_user_profile_view.js | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) 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 673f185a3c..8bf2cba5e1 100644 --- a/common/static/common/js/discussion/views/discussion_inline_view.js +++ b/common/static/common/js/discussion/views/discussion_inline_view.js @@ -100,7 +100,8 @@ this.threadListView = new DiscussionThreadListView({ el: this.$('.inline-threads'), collection: self.discussion, - courseSettings: self.course_settings + courseSettings: self.course_settings, + hideRefineBar: true // TODO: re-enable the search/filter bar when it works correctly }); this.threadListView.render(); 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 7fe3df260c..ef9cf793a2 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 @@ -91,6 +91,7 @@ DiscussionThreadListView.prototype.initialize = function(options) { var self = this; this.courseSettings = options.courseSettings; + this.hideRefineBar = options.hideRefineBar; this.supportsActiveThread = options.supportsActiveThread; this.displayedCollection = new Discussion(this.collection.models, { pages: this.collection.pages @@ -221,6 +222,9 @@ } this.showMetadataAccordingToSort(); this.renderMorePages(); + if (this.hideRefineBar) { + this.$('.forum-nav-refine-bar').addClass('is-hidden'); + } this.trigger('threads:rendered'); }; diff --git a/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js b/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js index 3dea86abe8..7c3e199ecd 100644 --- a/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js +++ b/lms/djangoapps/discussion/static/discussion/js/views/discussion_user_profile_view.js @@ -38,7 +38,8 @@ this.discussionThreadListView = new DiscussionThreadListView({ collection: this.discussion, el: this.$('.inline-threads'), - courseSettings: this.courseSettings + courseSettings: this.courseSettings, + hideRefineBar: true // TODO: re-enable the search/filter bar when it works correctly }).render(); this.discussionThreadListView.on('thread:selected', _.bind(this.navigateToThread, this)); From 97121202cf49aeac4aaed09127171e8741fa53df Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Wed, 14 Dec 2016 10:26:31 -0500 Subject: [PATCH 26/33] Revert changes that broke discussion profile design --- lms/static/sass/discussion/_layouts.scss | 26 +++++++++++++++++++ .../sass/discussion/elements/_navigation.scss | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lms/static/sass/discussion/_layouts.scss b/lms/static/sass/discussion/_layouts.scss index b9d51ed81d..9b55da8aac 100644 --- a/lms/static/sass/discussion/_layouts.scss +++ b/lms/static/sass/discussion/_layouts.scss @@ -1,6 +1,32 @@ // Layouts for discussion pages @import '../course/base/extends'; +.discussion-user-profile-board { + + .discussion-profile-title { + margin-bottom: $baseline / 5; + font-size: $forum-x-large-font-size; + } + + .discussion-profile-count { + margin-top: $baseline / 4; + } + + .discussion-profile-info { + @include margin-right($baseline); + } + + .user-name { + @include margin-right($baseline); + font-size: $forum-x-large-font-size; + } + + .user-roles { + font-size: $forum-small-font-size; + font-style: italic; + } +} + .discussion-column { min-height: 500px; diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index 1b8e7b4fd1..0faa7b20ad 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -178,7 +178,7 @@ padding-left: 0 !important; // should *not* be RTLed, see below for explanation min-height: 60px; // @TODO: Remove this when we have a real empty state for the discussion thread list margin: 0; - overflow-y: scroll; + overflow-y: auto; list-style: none; border-radius: 0 0 3px 3px; From b42150c78e8c088b9e445f06580860132f8b2d68 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Wed, 14 Dec 2016 10:51:37 -0500 Subject: [PATCH 27/33] fixup! Fix TNL-6142 --- .../static/common/js/discussion/views/discussion_inline_view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8bf2cba5e1..7a44a6571a 100644 --- a/common/static/common/js/discussion/views/discussion_inline_view.js +++ b/common/static/common/js/discussion/views/discussion_inline_view.js @@ -207,7 +207,7 @@ if (this.showed) { this.$('section.discussion').find('.inline-discussion-thread-container').addClass('is-hidden'); this.$('section.discussion').find('.add_post_btn_container').addClass('is-hidden'); - this.newPostForm.removeClass('is-hidden').find('.js-post-title'); + this.newPostForm.removeClass('is-hidden'); } this.newPostView.$el.removeClass('is-hidden'); this.toggleDiscussionBtn.addClass('shown'); From e07a7d96b9cd95085b14e00ec255e20e68020ff5 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Wed, 14 Dec 2016 11:10:40 -0500 Subject: [PATCH 28/33] fixup! Fix TNL-6139 --- .../common/templates/discussion/inline-discussion.underscore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/static/common/templates/discussion/inline-discussion.underscore b/common/static/common/templates/discussion/inline-discussion.underscore index c855acdc2a..56e914eaa0 100644 --- a/common/static/common/templates/discussion/inline-discussion.underscore +++ b/common/static/common/templates/discussion/inline-discussion.underscore @@ -13,8 +13,8 @@
    From 601ff52fe65683eef6863d4d8ec92c2fed2df55b Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Wed, 14 Dec 2016 12:55:17 -0500 Subject: [PATCH 29/33] fixup! Fix TNL-6133 --- lms/static/sass/discussion/views/_inline.scss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lms/static/sass/discussion/views/_inline.scss b/lms/static/sass/discussion/views/_inline.scss index 9e7c5efb6b..f629b2cefa 100644 --- a/lms/static/sass/discussion/views/_inline.scss +++ b/lms/static/sass/discussion/views/_inline.scss @@ -20,9 +20,7 @@ color: $forum-color-primary; .icon { - position: absolute; - @include left(7px); - top: 16px; + @include margin-left(-15px); } } } From 483da0dab52db442ce582da5769939533b71cf6b Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Wed, 14 Dec 2016 13:18:52 -0500 Subject: [PATCH 30/33] fixup! Fix TNL-6099 --- lms/static/sass/discussion/elements/_navigation.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lms/static/sass/discussion/elements/_navigation.scss b/lms/static/sass/discussion/elements/_navigation.scss index 0faa7b20ad..f4974e5ed3 100644 --- a/lms/static/sass/discussion/elements/_navigation.scss +++ b/lms/static/sass/discussion/elements/_navigation.scss @@ -291,6 +291,8 @@ .forum-nav-thread-wrapper-1 { @extend %forum-nav-thread-wrapper; margin: 0 ($baseline / 4); + // 125 is the width we need to save for the "X new" comments indicator - and we want to clip the preview + // at the same length whether there are unread comments for this story or not. max-width: calc(100% - 125px); flex-grow: 1; // This column should consume all the available space } From 4b6cf7ba4777c57f0f2fadcfd7da2bb6e4712692 Mon Sep 17 00:00:00 2001 From: Brian Jacobel Date: Wed, 14 Dec 2016 13:35:31 -0500 Subject: [PATCH 31/33] Fixed issue with hover post actions causing title reflow --- lms/static/sass/discussion/views/_thread.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/lms/static/sass/discussion/views/_thread.scss b/lms/static/sass/discussion/views/_thread.scss index 7570e9e426..a1aaddcc79 100644 --- a/lms/static/sass/discussion/views/_thread.scss +++ b/lms/static/sass/discussion/views/_thread.scss @@ -142,6 +142,7 @@ @include clearfix(); .post-header-content { + max-width: calc(100% - 100px); // post title .post-title { From 570001d7adfbe33418987cae6988e46058f4de55 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Wed, 14 Dec 2016 13:43:34 -0500 Subject: [PATCH 32/33] Style fixes for previews and text areas --- lms/static/sass/discussion/_mixins.scss | 2 +- lms/static/sass/discussion/elements/_editor.scss | 14 -------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/lms/static/sass/discussion/_mixins.scss b/lms/static/sass/discussion/_mixins.scss index 482e8d3a9f..f86c6c7366 100644 --- a/lms/static/sass/discussion/_mixins.scss +++ b/lms/static/sass/discussion/_mixins.scss @@ -67,7 +67,7 @@ @mixin discussion-wmd-preview { padding: ($baseline/2) $baseline; width: auto; - color: $forum-color-background-light; + background-color: $forum-color-background-light; ol, ul { // Fix up the RTL-only _reset.scss, but only in specific places @include padding-left($baseline*2); diff --git a/lms/static/sass/discussion/elements/_editor.scss b/lms/static/sass/discussion/elements/_editor.scss index 51b6f005e7..29550a0a29 100644 --- a/lms/static/sass/discussion/elements/_editor.scss +++ b/lms/static/sass/discussion/elements/_editor.scss @@ -51,20 +51,6 @@ width: 100%; } - .wmd-input { - @include border-radius($forum-border-radius, $forum-border-radius, 0, 0); - width: 100%; - height: 150px; - font-style: normal; - font-size: $forum-base-font-size; - font-family: Monaco, 'Lucida Console', monospace; - line-height: 1.6em; - - &::-webkit-input-placeholder { - color: #888; - } - } - .wmd-button-row { @include transition(all .2s ease-out 0s); position: relative; From fd0cf4041e6aec80e740b6f67c01981caf633e5d Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Wed, 14 Dec 2016 13:52:55 -0500 Subject: [PATCH 33/33] Clean up font weights --- lms/static/sass/discussion/elements/_labels.scss | 2 +- lms/static/sass/discussion/views/_thread.scss | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lms/static/sass/discussion/elements/_labels.scss b/lms/static/sass/discussion/elements/_labels.scss index 2ee199bed6..8d0936549c 100644 --- a/lms/static/sass/discussion/elements/_labels.scss +++ b/lms/static/sass/discussion/elements/_labels.scss @@ -4,8 +4,8 @@ .discussion { .post-label { @include margin($baseline/4, $baseline/2, 0, 0); + @extend %t-light; font-size: $forum-small-font-size; - font-weight: 100; display: inline; white-space: nowrap; diff --git a/lms/static/sass/discussion/views/_thread.scss b/lms/static/sass/discussion/views/_thread.scss index a1aaddcc79..c8843a7c03 100644 --- a/lms/static/sass/discussion/views/_thread.scss +++ b/lms/static/sass/discussion/views/_thread.scss @@ -22,6 +22,7 @@ .discussion-article { .posted-details { @extend %t-copy-sub2; + @extend %t-light; margin: ($baseline/5) 0; color: $forum-color-copy-light; @@ -160,8 +161,8 @@ // post context .post-context { @extend %t-copy-sub2; + @extend %t-light; color: $forum-color-copy-light; - font-weight: 100; // CASE: no courseware context or cohort visibility rules &:empty {