Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
487895fb
Commit
487895fb
authored
Jul 06, 2017
by
George Song
Committed by
GitHub
Jul 06, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #14862 from replaceafill/default_discussion_topic
Default discussion topic
parents
ec787a99
eacc4bc1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
49 additions
and
3 deletions
+49
-3
common/lib/xmodule/xmodule/course_module.py
+4
-1
lms/djangoapps/discussion/static/discussion/js/discussion_board_factory.js
+2
-1
lms/djangoapps/discussion/templates/discussion/discussion_board_js.template
+2
-1
lms/djangoapps/discussion/tests/test_views.py
+33
-0
lms/djangoapps/discussion/views.py
+8
-0
No files found.
common/lib/xmodule/xmodule/course_module.py
View file @
487895fb
...
...
@@ -297,7 +297,10 @@ class CourseFields(object):
'{"id": "i4x-InstitutionName-CourseNumber-course-CourseRun"}. For example, one discussion '
'category may be "Lydian Mode": {"id": "i4x-UniversityX-MUS101-course-2015_T1"}. The "id" '
'value for each category must be unique. In "id" values, the only special characters that are '
'supported are underscore, hyphen, and period.'
'supported are underscore, hyphen, and period. You can also specify a category as the default '
'for new posts in the Discussion page by setting its "default" attribute to true. For example, '
'"Lydian Mode": {"id": "i4x-UniversityX-MUS101-course-2015_T1", "default": true}.'
),
scope
=
Scope
.
settings
)
...
...
lms/djangoapps/discussion/static/discussion/js/discussion_board_factory.js
View file @
487895fb
...
...
@@ -59,7 +59,8 @@
course_settings
:
courseSettings
,
discussionBoardView
:
discussionBoardView
,
mode
:
'tab'
,
startHeader
:
2
startHeader
:
2
,
topicId
:
options
.
defaultTopicId
});
newPostView
.
render
();
...
...
lms/djangoapps/discussion/templates/discussion/discussion_board_js.template
View file @
487895fb
...
...
@@ -57,7 +57,8 @@ from openedx.core.djangolib.js_utils import dump_js_escaped_json, js_escaped_str
contentInfo: ${annotated_content_info | n, dump_js_escaped_json},
courseName: '${course.display_name_with_default | n, js_escaped_string}',
courseSettings: ${course_settings | n, dump_js_escaped_json},
isCommentableDivided: ${is_commentable_divided | n, dump_js_escaped_json}
isCommentableDivided: ${is_commentable_divided | n, dump_js_escaped_json},
defaultTopicId: '${discussion_default_topic_id | n, js_escaped_string}'
});
});
});
...
...
lms/djangoapps/discussion/tests/test_views.py
View file @
487895fb
...
...
@@ -32,6 +32,7 @@ from django_comment_common.models import CourseDiscussionSettings, ForumsConfig
from
django_comment_common.utils
import
ThreadContext
from
lms.djangoapps.courseware.exceptions
import
CourseAccessRedirect
from
lms.djangoapps.discussion
import
views
from
lms.djangoapps.discussion.views
import
_get_discussion_default_topic_id
from
lms.djangoapps.discussion.views
import
course_discussions_settings_handler
from
lms.djangoapps.teams.tests.factories
import
CourseTeamFactory
from
lms.lib.comment_client.utils
import
CommentClientPaginatedResult
...
...
@@ -1884,3 +1885,35 @@ class CourseDiscussionsHandlerTestCase(DividedDiscussionsTestCase):
CourseDiscussionSettings
.
COHORT
,
CourseDiscussionSettings
.
ENROLLMENT_TRACK
]
self
.
assertEqual
(
response
,
expected_response
)
class
DefaultTopicIdGetterTestCase
(
ModuleStoreTestCase
):
"""
Tests the `_get_discussion_default_topic_id` helper.
"""
def
test_no_default_topic
(
self
):
discussion_topics
=
{
'dummy discussion'
:
{
'id'
:
'dummy_discussion_id'
,
},
}
course
=
CourseFactory
.
create
(
discussion_topics
=
discussion_topics
)
expected_id
=
None
result
=
_get_discussion_default_topic_id
(
course
)
self
.
assertEqual
(
expected_id
,
result
)
def
test_default_topic_id
(
self
):
discussion_topics
=
{
'dummy discussion'
:
{
'id'
:
'dummy_discussion_id'
,
},
'another discussion'
:
{
'id'
:
'another_discussion_id'
,
'default'
:
True
,
},
}
course
=
CourseFactory
.
create
(
discussion_topics
=
discussion_topics
)
expected_id
=
'another_discussion_id'
result
=
_get_discussion_default_topic_id
(
course
)
self
.
assertEqual
(
expected_id
,
result
)
lms/djangoapps/discussion/views.py
View file @
487895fb
...
...
@@ -387,6 +387,12 @@ def _create_base_discussion_view_context(request, course_key):
}
def
_get_discussion_default_topic_id
(
course
):
for
topic
,
entry
in
course
.
discussion_topics
.
items
():
if
entry
.
get
(
'default'
)
is
True
:
return
entry
[
'id'
]
def
_create_discussion_board_context
(
request
,
course_key
,
discussion_id
=
None
,
thread_id
=
None
):
"""
Returns the template context for rendering the discussion board.
...
...
@@ -447,6 +453,8 @@ def _create_discussion_board_context(request, course_key, discussion_id=None, th
'upgrade_link'
:
check_and_get_upgrade_link
(
request
,
user
,
course
.
id
),
'upgrade_price'
:
get_cosmetic_verified_display_price
(
course
),
# ENDTODO
# If the default topic id is None the front-end code will look for a topic that contains "General"
'discussion_default_topic_id'
:
_get_discussion_default_topic_id
(
course
),
})
return
context
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment