Commit 1de17fb7 by Greg Price

Move more forum nav rendering logic to front end

The cohort selector is rendered only for a privileged user in a cohorted
course, and that logic is now in an Underscore template instead of Mako.
parent cd0ea052
...@@ -75,6 +75,7 @@ describe "DiscussionThreadListView", -> ...@@ -75,6 +75,7 @@ describe "DiscussionThreadListView", ->
<option value="flagged">Flagged</option> <option value="flagged">Flagged</option>
</select> </select>
</label> </label>
<% if (isCohorted && isPrivilegedUser) { %>
<label class="forum-nav-filter-cohort"> <label class="forum-nav-filter-cohort">
<span class="sr">Cohort:</span> <span class="sr">Cohort:</span>
<select class="forum-nav-filter-cohort-control"> <select class="forum-nav-filter-cohort-control">
...@@ -83,6 +84,7 @@ describe "DiscussionThreadListView", -> ...@@ -83,6 +84,7 @@ describe "DiscussionThreadListView", ->
<option value="2">Cohort2</option> <option value="2">Cohort2</option>
</select> </select>
</label> </label>
<% } %>
<label class="forum-nav-sort"> <label class="forum-nav-sort">
<select class="forum-nav-sort-control"> <select class="forum-nav-sort-control">
<option value="date">by recent activity</option> <option value="date">by recent activity</option>
...@@ -123,7 +125,11 @@ describe "DiscussionThreadListView", -> ...@@ -123,7 +125,11 @@ describe "DiscussionThreadListView", ->
spyOn($, "ajax") spyOn($, "ajax")
@discussion = new Discussion([]) @discussion = new Discussion([])
@view = new DiscussionThreadListView({collection: @discussion, el: $("#fixture-element")}) @view = new DiscussionThreadListView(
collection: @discussion,
el: $("#fixture-element"),
courseSettings: new DiscussionCourseSettings({is_cohorted: true})
)
@view.render() @view.render()
setupAjax = (callback) -> setupAjax = (callback) ->
...@@ -141,7 +147,8 @@ describe "DiscussionThreadListView", -> ...@@ -141,7 +147,8 @@ describe "DiscussionThreadListView", ->
makeView = (discussion) -> makeView = (discussion) ->
return new DiscussionThreadListView( return new DiscussionThreadListView(
el: $("#fixture-element"), el: $("#fixture-element"),
collection: discussion collection: discussion,
courseSettings: new DiscussionCourseSettings({is_cohorted: true})
) )
expectFilter = (filterVal) -> expectFilter = (filterVal) ->
...@@ -164,7 +171,12 @@ describe "DiscussionThreadListView", -> ...@@ -164,7 +171,12 @@ describe "DiscussionThreadListView", ->
) )
describe "cohort selector", -> describe "cohort selector", ->
it "should filter correctly", -> it "should not be visible to students", ->
expect(@view.$(".forum-nav-filter-cohort-control:visible")).not.toExist()
it "should allow moderators to select visibility", ->
DiscussionSpecHelper.makeModerator()
@view.render()
expectedGroupId = null expectedGroupId = null
setupAjax((params) => expect(params.data.group_id).toEqual(expectedGroupId)) setupAjax((params) => expect(params.data.group_id).toEqual(expectedGroupId))
_.each( _.each(
...@@ -498,6 +510,8 @@ describe "DiscussionThreadListView", -> ...@@ -498,6 +510,8 @@ describe "DiscussionThreadListView", ->
expect($(".forum-nav-browse-current").text()).toEqual("Posts I'm Following") expect($(".forum-nav-browse-current").text()).toEqual("Posts I'm Following")
it "should show/hide the cohort selector", -> it "should show/hide the cohort selector", ->
DiscussionSpecHelper.makeModerator()
@view.render()
setupAjax() setupAjax()
_.each( _.each(
[ [
......
...@@ -8,7 +8,11 @@ if Backbone? ...@@ -8,7 +8,11 @@ if Backbone?
@discussion = options['discussion'] @discussion = options['discussion']
@course_settings = options['course_settings'] @course_settings = options['course_settings']
@nav = new DiscussionThreadListView(collection: @discussion, el: $(".forum-nav")) @nav = new DiscussionThreadListView(
collection: @discussion,
el: $(".forum-nav"),
courseSettings: @course_settings
)
@nav.on "thread:selected", @navigateToThread @nav.on "thread:selected", @navigateToThread
@nav.on "thread:removed", @navigateToAllThreads @nav.on "thread:removed", @navigateToAllThreads
@nav.on "threads:rendered", @setActiveThread @nav.on "threads:rendered", @setActiveThread
......
...@@ -13,7 +13,8 @@ if Backbone? ...@@ -13,7 +13,8 @@ if Backbone?
"change .forum-nav-filter-main-control": "chooseFilter" "change .forum-nav-filter-main-control": "chooseFilter"
"change .forum-nav-filter-cohort-control": "chooseCohort" "change .forum-nav-filter-cohort-control": "chooseCohort"
initialize: -> initialize: (options) ->
@courseSettings = options.courseSettings
@displayedCollection = new Discussion(@collection.models, pages: @collection.pages) @displayedCollection = new Discussion(@collection.models, pages: @collection.pages)
@collection.on "change", @reloadDisplayedCollection @collection.on "change", @reloadDisplayedCollection
@discussionIds="" @discussionIds=""
...@@ -121,7 +122,12 @@ if Backbone? ...@@ -121,7 +122,12 @@ if Backbone?
render: -> render: ->
@timer = 0 @timer = 0
@$el.html(@template()) @$el.html(
@template({
isCohorted: @courseSettings.get("is_cohorted"),
isPrivilegedUser: DiscussionUtil.isPrivilegedUser()
})
)
@$(".forum-nav-sort-control").val(@collection.sort_preference) @$(".forum-nav-sort-control").val(@collection.sort_preference)
$(window).bind "load", @updateSidebar $(window).bind "load", @updateSidebar
......
...@@ -37,10 +37,7 @@ ...@@ -37,10 +37,7 @@
<option value="flagged">${_("Flagged")}</option> <option value="flagged">${_("Flagged")}</option>
%endif %endif
</select> </select>
</label>\ </label>${"<% if (isCohorted && isPrivilegedUser) { %>"}<label class="forum-nav-filter-cohort">
%if is_course_cohorted and is_moderator:
## Lack of indentation is intentional to avoid whitespace between this and siblings
<label class="forum-nav-filter-cohort">
## Translators: This labels a cohort menu in forum navigation ## Translators: This labels a cohort menu in forum navigation
<span class="sr">${_("Cohort:")}</span> <span class="sr">${_("Cohort:")}</span>
<select class="forum-nav-filter-cohort-control"> <select class="forum-nav-filter-cohort-control">
...@@ -49,10 +46,7 @@ ...@@ -49,10 +46,7 @@
<option value="${c['id']}">${c['name']}</option> <option value="${c['id']}">${c['name']}</option>
%endfor %endfor
</select> </select>
</label>\ </label>${"<% } %>"}<label class="forum-nav-sort">
%endif
## Lack of indentation is intentional to avoid whitespace between this and siblings
<label class="forum-nav-sort">
## Translators: This labels a sort menu in forum navigation ## Translators: This labels a sort menu in forum navigation
<span class="sr">${_("Sort:")}</span> <span class="sr">${_("Sort:")}</span>
<select class="forum-nav-sort-control"> <select class="forum-nav-sort-control">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment