diff --git a/common/static/coffee/src/discussion/discussion.coffee b/common/static/coffee/src/discussion/discussion.coffee index 068cde3de4..9cee068b74 100644 --- a/common/static/coffee/src/discussion/discussion.coffee +++ b/common/static/coffee/src/discussion/discussion.coffee @@ -39,6 +39,8 @@ if Backbone? url = DiscussionUtil.urlFor 'threads' when 'followed' url = DiscussionUtil.urlFor 'followed_threads', options.user_id + if options['group_id'] + data['group_id'] = options['group_id'] data['sort_key'] = sort_options.sort_key || 'date' data['sort_order'] = sort_options.sort_order || 'desc' DiscussionUtil.safeAjax diff --git a/common/static/coffee/src/discussion/views/discussion_thread_list_view.coffee b/common/static/coffee/src/discussion/views/discussion_thread_list_view.coffee index c5f66c87ec..dc5b42dbf5 100644 --- a/common/static/coffee/src/discussion/views/discussion_thread_list_view.coffee +++ b/common/static/coffee/src/discussion/views/discussion_thread_list_view.coffee @@ -9,6 +9,7 @@ if Backbone? "click .browse-topic-drop-search-input": "ignoreClick" "click .post-list .list-item a": "threadSelected" "click .post-list .more-pages a": "loadMorePages" + "change .cohort-options": "chooseCohort" 'keyup .browse-topic-drop-search-input': DiscussionFilter.filterDrop initialize: -> @@ -128,10 +129,20 @@ if Backbone? switch @mode when 'search' options.search_text = @current_search + if @group_id + options.group_id = @group_id when 'followed' options.user_id = window.user.id + options.group_id = "all" when 'commentables' options.commentable_ids = @discussionIds + if @group_id + options.group_id = @group_id + when 'all' + if @group_id + options.group_id = @group_id + + @collection.retrieveAnotherPage(@mode, options, {sort_key: @sortBy}) renderThread: (thread) => @@ -263,13 +274,19 @@ if Backbone? if discussionId == "#all" @discussionIds = "" @$(".post-search-field").val("") + @$('.cohort').show() @retrieveAllThreads() else if discussionId == "#following" @retrieveFollowed(event) + @$('.cohort').hide() else discussionIds = _.map item.find(".board-name[data-discussion_id]"), (board) -> $(board).data("discussion_id").id @retrieveDiscussions(discussionIds) - + + chooseCohort: (event) -> + @group_id = @$('.cohort-options :selected').val() + @retrieveAllThreads() + retrieveDiscussion: (discussion_id, callback=null) -> url = DiscussionUtil.urlFor("retrieve_discussion", discussion_id) DiscussionUtil.safeAjax diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 1cea627bc0..e2f5e0f442 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -61,13 +61,27 @@ def get_threads(request, course_id, discussion_id=None, per_page=THREADS_PER_PAG cc_user.save() - #if the course-user is cohorted, then add the group id - group_id = get_cohort_id(request.user, course_id) + #there are 2 dimensions to consider when executing a search with respect to group id + #is user a moderator + #did the user request a group - #if you're an instructor, show everything - if group_id and not cached_has_permission(request.user, "see_all_cohorts", course_id): + #if the user requested a group explicitly, give them that group, othewrise, if mod, show all, else if student, use cohort + + group_id = request.GET.get('group_id') + + if group_id == "all": + group_id = None + + if not group_id: + if not cached_has_permission(request.user, "see_all_cohorts", course_id): + group_id = get_cohort_id(request.user, course_id) + + if group_id: default_query_params["group_id"] = group_id + + #so by default, a moderator sees all items, and a student sees his cohort + query_params = merge_dict(default_query_params, strip_none(extract(request.GET, ['page', 'sort_key', @@ -76,7 +90,6 @@ def get_threads(request, course_id, discussion_id=None, per_page=THREADS_PER_PAG threads, page, num_pages = cc.Thread.search(query_params) - #now add the group name if the thread has a group id for thread in threads: if thread.get('group_id'): @@ -229,6 +242,11 @@ def forum_form_discussion(request, course_id): 'is_course_cohorted': is_course_cohorted(course_id) } # print "start rendering.." + print "\n\n\n\n\n\n*************************" + print is_course_cohorted(course_id) + print cached_has_permission(request.user, "see_all_cohorts", course_id) + print cohorts + return render_to_response('discussion/index.html', context) diff --git a/lms/templates/discussion/_thread_list_template.html b/lms/templates/discussion/_thread_list_template.html index c7e06ba48b..98fdea0045 100644 --- a/lms/templates/discussion/_thread_list_template.html +++ b/lms/templates/discussion/_thread_list_template.html @@ -18,6 +18,17 @@
  • votes
  • comments
  • + + + %if is_course_cohorted and is_moderator: + Show: + + %endif