From 050b747b1d18d0276920b337456c5299fb82dee1 Mon Sep 17 00:00:00 2001 From: Tim Krones Date: Fri, 24 Jul 2015 20:50:33 +0200 Subject: [PATCH 01/80] Display start date, end date, and number of sections (weeks) on "Course Info" tab of instructor dashboard. --- .../instructor/views/instructor_dashboard.py | 4 ++++ .../instructor_dashboard_2/course_info.html | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lms/djangoapps/instructor/views/instructor_dashboard.py b/lms/djangoapps/instructor/views/instructor_dashboard.py index 9363f98406..25802abf54 100644 --- a/lms/djangoapps/instructor/views/instructor_dashboard.py +++ b/lms/djangoapps/instructor/views/instructor_dashboard.py @@ -39,6 +39,7 @@ from course_modes.models import CourseMode, CourseModesArchive from student.roles import CourseFinanceAdminRole, CourseSalesAdminRole from certificates.models import CertificateGenerationConfiguration from certificates import api as certs_api +from util.date_utils import get_default_time_display from class_dashboard.dashboard_data import get_section_display_name, get_array_section_has_problem from .tools import get_units_with_due_date, title_or_url, bulk_email_is_enabled_for_course @@ -334,6 +335,9 @@ def _section_course_info(course, access): 'course_display_name': course.display_name, 'has_started': course.has_started(), 'has_ended': course.has_ended(), + 'start_date': get_default_time_display(course.start), + 'end_date': get_default_time_display(course.end), + 'num_sections': len(course.children), 'list_instructor_tasks_url': reverse('list_instructor_tasks', kwargs={'course_id': unicode(course_key)}), } diff --git a/lms/templates/instructor/instructor_dashboard_2/course_info.html b/lms/templates/instructor/instructor_dashboard_2/course_info.html index 7df0a7fb35..34a005953f 100644 --- a/lms/templates/instructor/instructor_dashboard_2/course_info.html +++ b/lms/templates/instructor/instructor_dashboard_2/course_info.html @@ -58,6 +58,16 @@ ${ section_data['course_display_name'] } +
  • + + ${ section_data['start_date'] } +
  • + +
  • + + ${ section_data['end_date'] } +
  • +
  • @@ -73,6 +83,12 @@ ${_("No")} %endif
  • + +
  • + + ${ section_data['num_sections'] } +
  • +
  • ${ section_data['grade_cutoffs'] } From b757225c4b8dbfe29313df8649d4e08ed9e5a21d Mon Sep 17 00:00:00 2001 From: Chris Rodriguez Date: Mon, 10 Aug 2015 15:49:35 -0400 Subject: [PATCH 02/80] Fixing remaining contrast issue --- .../sass/course/modules/_calculator.scss | 23 ++++++++++++------- .../calculator/toggle_calculator.html | 4 ++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lms/static/sass/course/modules/_calculator.scss b/lms/static/sass/course/modules/_calculator.scss index 8ed0fcc2b4..44224849b9 100644 --- a/lms/static/sass/course/modules/_calculator.scss +++ b/lms/static/sass/course/modules/_calculator.scss @@ -1,7 +1,7 @@ // LMS -- modules -- calculator // ==================== -div.calc-main { +.calc-main { @extend %ui-print-excluded; bottom: -126px; @@ -29,7 +29,7 @@ div.calc-main { width: ($baseline*0.75); &:hover, &:focus { - background-color: $gray-d1; + background: url("../images/calc-icon.png") $gray-d1 no-repeat center; } &.closed { @@ -44,7 +44,7 @@ div.calc-main { } } - div#calculator_wrapper { + #calculator_wrapper { clear: both; position: relative; top: -36px; @@ -72,7 +72,7 @@ div.calc-main { color: $white; } - button#calculator_button { + #calculator_button { background: #111; border: 1px solid $black; border-radius: 0; @@ -99,7 +99,7 @@ div.calc-main { } } - input#calculator_output { + #calculator_output { background: #111; border: 0; box-shadow: none; @@ -114,14 +114,19 @@ div.calc-main { width: flex-grid(4); } - div.input-wrapper { + .input-wrapper { @extend .clearfix; float: left; margin: 0; position: relative; width: flex-grid(7.5); - input#calculator_input { + .label-calc-input { + background: $black; + color: $white; + } + + #calculator_input { border: none; box-shadow: none; @include box-sizing(border-box); @@ -129,13 +134,15 @@ div.calc-main { padding: 10px; -webkit-appearance: none; width: 100%; + background: $black; + color: $white; &:focus { border: none; } } - div.help-wrapper { + .help-wrapper { position: absolute; right: 0; top: 0; diff --git a/lms/templates/calculator/toggle_calculator.html b/lms/templates/calculator/toggle_calculator.html index d1d88d7b89..3a7e10d040 100644 --- a/lms/templates/calculator/toggle_calculator.html +++ b/lms/templates/calculator/toggle_calculator.html @@ -11,7 +11,7 @@ from django.core.urlresolvers import reverse
    - +
    @@ -135,7 +135,7 @@ from django.core.urlresolvers import reverse
    - +
    From 644d20ec991ef29dc9a571af9bff66d0e06fd5f7 Mon Sep 17 00:00:00 2001 From: Chris Rodriguez Date: Thu, 13 Aug 2015 15:07:13 -0400 Subject: [PATCH 03/80] Addressing PR feedback --- lms/static/sass/course/modules/_calculator.scss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lms/static/sass/course/modules/_calculator.scss b/lms/static/sass/course/modules/_calculator.scss index 44224849b9..ee8e139526 100644 --- a/lms/static/sass/course/modules/_calculator.scss +++ b/lms/static/sass/course/modules/_calculator.scss @@ -90,7 +90,7 @@ width: flex-grid(.5) + flex-gutter(); &:hover, &:focus { - color: #333; + color: $link-color; } .calc-button-label { @@ -134,8 +134,6 @@ padding: 10px; -webkit-appearance: none; width: 100%; - background: $black; - color: $white; &:focus { border: none; From 31f29763fd0f13750dd1cbd618952ccb5a4481f7 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Thu, 13 Aug 2015 16:31:33 -0400 Subject: [PATCH 04/80] Increase sample rate when measuring DjangoXBlockUserStateClient metrics --- lms/djangoapps/courseware/user_state_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/djangoapps/courseware/user_state_client.py b/lms/djangoapps/courseware/user_state_client.py index bcc65b6d05..1038c4a8f8 100644 --- a/lms/djangoapps/courseware/user_state_client.py +++ b/lms/djangoapps/courseware/user_state_client.py @@ -40,7 +40,7 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient): """ # Use this sample rate for DataDog events. - API_DATADOG_SAMPLE_RATE = 0.01 + API_DATADOG_SAMPLE_RATE = 0.1 class ServiceUnavailable(XBlockUserStateClient.ServiceUnavailable): """ From 448356ed3ec66249d0ed6d89a83f56488d92c5c1 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Thu, 13 Aug 2015 16:32:05 -0400 Subject: [PATCH 05/80] Log the size of block state and the number of blocks missing state when retrieved with get_many --- lms/djangoapps/courseware/user_state_client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/courseware/user_state_client.py b/lms/djangoapps/courseware/user_state_client.py index 1038c4a8f8..790d110077 100644 --- a/lms/djangoapps/courseware/user_state_client.py +++ b/lms/djangoapps/courseware/user_state_client.py @@ -139,11 +139,14 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient): modules = self._get_student_modules(username, block_keys) for module, usage_key in modules: if module.state is None: + self._ddog_increment(evt_time, 'get_many.empty_state') continue state = json.loads(module.state) state_length += len(module.state) + self._ddog_histogram(evt_time, 'get_many.block_size', len(module.state)) + # If the state is the empty dict, then it has been deleted, and so # conformant UserStateClients should treat it as if it doesn't exist. if state == {}: @@ -161,7 +164,6 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient): # The rest of this method exists only to submit DataDog events. # Remove it once we're no longer interested in the data. self._ddog_histogram(evt_time, 'get_many.blks_out', block_count) - self._ddog_histogram(evt_time, 'get_many.blks_size', state_length) def set_many(self, username, block_keys_to_state, scope=Scope.user_state): """ From 1091cd36a10de9cff8b8d8f2d2bea8cb848bd029 Mon Sep 17 00:00:00 2001 From: Frances Botsford Date: Thu, 13 Aug 2015 16:45:57 -0400 Subject: [PATCH 06/80] add teams to responsive pages - fix content area padding --- lms/static/sass/base/_layouts.scss | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lms/static/sass/base/_layouts.scss b/lms/static/sass/base/_layouts.scss index f05343a6c0..c828111589 100644 --- a/lms/static/sass/base/_layouts.scss +++ b/lms/static/sass/base/_layouts.scss @@ -3,7 +3,8 @@ // overriding existing styles on the body element // .view-incourse scopes these rules to be specific to student being in a course -body.view-incourse { +body.view-incourse, +body.is-in-course { background-color: $body-bg; // keep application of widths to window-wrap @@ -57,7 +58,8 @@ body.view-incourse { .course-wrapper, .profile-wrapper, .instructor-dashboard-wrapper-2, - .wiki-wrapper { + .wiki-wrapper, + .teams-wrapper { max-width: 1180px; margin: 0 auto; padding: 0; From 2c8ab7db4baf65e76ea09459f43be45aab1a5784 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 13 Aug 2015 17:25:43 -0400 Subject: [PATCH 07/80] Quiet some devstack log messages --- lms/envs/devstack.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lms/envs/devstack.py b/lms/envs/devstack.py index ae5e99886a..3d90ef36a9 100644 --- a/lms/envs/devstack.py +++ b/lms/envs/devstack.py @@ -20,11 +20,16 @@ HTTPS = 'off' ################################ LOGGERS ###################################### +# Silence noisy logs import logging - -# Disable noisy loggers -for pkg_name in ['track.contexts', 'track.middleware', 'dd.dogapi']: - logging.getLogger(pkg_name).setLevel(logging.CRITICAL) +LOG_OVERRIDES = [ + ('track.contexts', logging.CRITICAL), + ('track.middleware', logging.CRITICAL), + ('dd.dogapi', logging.CRITICAL), + ('django_comment_client.utils', logging.CRITICAL), +] +for log_name, log_level in LOG_OVERRIDES: + logging.getLogger(log_name).setLevel(log_level) ################################ EMAIL ######################################## From 066d5ab65125f7d66204f7b2203fb9fdf42b48e7 Mon Sep 17 00:00:00 2001 From: Carlos de la Guardia Date: Wed, 29 Jul 2015 02:45:49 -0500 Subject: [PATCH 08/80] Changes to a CCX course should emit a course_published event --- lms/djangoapps/ccx/tasks.py | 45 ++++++++++ lms/djangoapps/ccx/tests/test_tasks.py | 109 +++++++++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 lms/djangoapps/ccx/tasks.py create mode 100644 lms/djangoapps/ccx/tests/test_tasks.py diff --git a/lms/djangoapps/ccx/tasks.py b/lms/djangoapps/ccx/tasks.py new file mode 100644 index 0000000000..10c8492c83 --- /dev/null +++ b/lms/djangoapps/ccx/tasks.py @@ -0,0 +1,45 @@ +""" +Asynchronous tasks for the CCX app. +""" + +from django.dispatch import receiver +import logging + +from opaque_keys import InvalidKeyError +from opaque_keys.edx.locator import CourseLocator +from ccx_keys.locator import CCXLocator +from xmodule.modulestore.django import SignalHandler +from lms import CELERY_APP + +from .models import CustomCourseForEdX + +log = logging.getLogger("edx.ccx") + + +@receiver(SignalHandler.course_published) +def course_published_handler(sender, course_key, **kwargs): # pylint: disable=unused-argument + """ + Consume signals that indicate course published. If course already a CCX, do nothing. + """ + if not isinstance(course_key, CCXLocator): + send_ccx_course_published.delay(unicode(course_key)) + + +@CELERY_APP.task +def send_ccx_course_published(course_key): + """ + Find all CCX derived from this course, and send course published event for them. + """ + course_key = CourseLocator.from_string(course_key) + for ccx in CustomCourseForEdX.objects.filter(course_id=course_key): + try: + ccx_key = CCXLocator.from_course_locator(course_key, ccx.id) + except InvalidKeyError: + log.info('Attempt to publish course with deprecated id. Course: %s. CCX: %s', course_key, ccx.id) + continue + responses = SignalHandler.course_published.send( + sender=ccx, + course_key=ccx_key + ) + for rec, response in responses: + log.info('Signal fired when course is published. Receiver: %s. Response: %s', rec, response) diff --git a/lms/djangoapps/ccx/tests/test_tasks.py b/lms/djangoapps/ccx/tests/test_tasks.py new file mode 100644 index 0000000000..1f2fccdb48 --- /dev/null +++ b/lms/djangoapps/ccx/tests/test_tasks.py @@ -0,0 +1,109 @@ +""" +Tests for celery tasks defined in tasks module +""" + +from mock_django import mock_signal_receiver + +from ccx.tests.factories import ( # pylint: disable=import-error + CcxFactory, +) +from student.roles import CourseCcxCoachRole # pylint: disable=import-error +from student.tests.factories import ( # pylint: disable=import-error + AdminFactory, +) +from xmodule.modulestore.django import SignalHandler +from xmodule.modulestore.tests.factories import CourseFactory +from xmodule.modulestore.tests.django_utils import ( + ModuleStoreTestCase, + TEST_DATA_SPLIT_MODULESTORE) +from openedx.core.djangoapps.content.course_structures.models import CourseStructure +from openedx.core.djangoapps.content.course_overviews.models import CourseOverview + +from ccx_keys.locator import CCXLocator + +from ..tasks import send_ccx_course_published + + +class TestSendCCXCoursePublished(ModuleStoreTestCase): + """unit tests for the send ccx course published task + """ + + MODULESTORE = TEST_DATA_SPLIT_MODULESTORE + + def setUp(self): + """ + Set up tests + """ + super(TestSendCCXCoursePublished, self).setUp() + course = self.course = CourseFactory.create(org="edX", course="999", display_name="Run 666") + course2 = self.course2 = CourseFactory.create(org="edX", course="999a", display_name="Run 667") + coach = AdminFactory.create() + role = CourseCcxCoachRole(course.id) + role.add_users(coach) + self.ccx = CcxFactory(course_id=course.id, coach=coach) + self.ccx2 = CcxFactory(course_id=course.id, coach=coach) + self.ccx3 = CcxFactory(course_id=course.id, coach=coach) + self.ccx4 = CcxFactory(course_id=course2.id, coach=coach) + + def call_fut(self, course_key): + """Call the function under test + """ + send_ccx_course_published(unicode(course_key)) + + def test_signal_not_sent_for_ccx(self): + """Check that course published signal is not sent when course key is for a ccx + """ + course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id) + with mock_signal_receiver(SignalHandler.course_published) as receiver: + self.call_fut(course_key) + self.assertEqual(receiver.call_count, 0) + + def test_signal_sent_for_ccx(self): + """Check that course published signal is sent when course key is not for a ccx. + We have 4 ccx's, but only 3 are derived from the course id used here, so call + count must be 3 to confirm that all derived courses and no more got the signal. + """ + with mock_signal_receiver(SignalHandler.course_published) as receiver: + self.call_fut(self.course.id) + self.assertEqual(receiver.call_count, 3) + + def test_course_structure_generated(self): + """Check that course structure is generated after course published signal is sent + """ + ccx_structure = { + u"blocks": { + u"ccx-block-v1:edX+999+Run_666+ccx@1+type@course+block@course": { + u"block_type": u"course", + u"graded": False, + u"format": None, + u"usage_key": u"ccx-block-v1:edX+999+Run_666+ccx@1+type@course+block@course", + u"children": [ + ], + u"display_name": u"Run 666" + } + }, + u"root": u"ccx-block-v1:edX+999+Run_666+ccx@1+type@course+block@course" + } + course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id) + structure = CourseStructure.objects.filter(course_id=course_key) + # no structure exists before signal is called + self.assertEqual(len(structure), 0) + with mock_signal_receiver(SignalHandler.course_published) as receiver: + self.call_fut(self.course.id) + self.assertEqual(receiver.call_count, 3) + structure = CourseStructure.objects.get(course_id=course_key) + self.assertEqual(structure.structure, ccx_structure) + + def test_course_overview_deleted(self): + """Check that course overview is deleted after course published signal is sent + """ + course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id) + overview = CourseOverview(id=course_key) + overview.save() + overview = CourseOverview.objects.filter(id=course_key) + self.assertEqual(len(overview), 1) + with mock_signal_receiver(SignalHandler.course_published) as receiver: + self.call_fut(self.course.id) + self.assertEqual(receiver.call_count, 3) + overview = CourseOverview.objects.filter(id=course_key) + self.assertEqual(len(overview), 0) From 3f9027d05e9b29a299964a62e4699ae99907ff3d Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Thu, 13 Aug 2015 16:32:24 -0400 Subject: [PATCH 09/80] Log delete_many calls and metrics --- lms/djangoapps/courseware/user_state_client.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/courseware/user_state_client.py b/lms/djangoapps/courseware/user_state_client.py index 790d110077..5827f658e5 100644 --- a/lms/djangoapps/courseware/user_state_client.py +++ b/lms/djangoapps/courseware/user_state_client.py @@ -245,13 +245,21 @@ class DjangoXBlockUserStateClient(XBlockUserStateClient): Arguments: username: The name of the user whose state should be deleted - block_key (UsageKey): The UsageKey identifying which xblock state to delete. + block_keys (list): The UsageKey identifying which xblock state to delete. scope (Scope): The scope to delete data from fields: A list of fields to delete. If None, delete all stored fields. """ if scope != Scope.user_state: raise ValueError("Only Scope.user_state is supported") + evt_time = time() + if fields is None: + self._ddog_increment(evt_time, 'delete_many.empty_state') + else: + self._ddog_histogram(evt_time, 'delete_many.field_count', len(fields)) + + self._ddog_histogram(evt_time, 'delete_many.block_count', len(block_keys)) + student_modules = self._get_student_modules(username, block_keys) for student_module, _ in student_modules: if fields is None: From aa647bd87e2cf5987d0ef34b104bf461f699725e Mon Sep 17 00:00:00 2001 From: Carlos de la Guardia Date: Fri, 14 Aug 2015 10:00:04 -0500 Subject: [PATCH 10/80] fix test broken by course_overview changes --- lms/djangoapps/ccx/tests/test_tasks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lms/djangoapps/ccx/tests/test_tasks.py b/lms/djangoapps/ccx/tests/test_tasks.py index 1f2fccdb48..8af45ad5b5 100644 --- a/lms/djangoapps/ccx/tests/test_tasks.py +++ b/lms/djangoapps/ccx/tests/test_tasks.py @@ -99,6 +99,7 @@ class TestSendCCXCoursePublished(ModuleStoreTestCase): """ course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id) overview = CourseOverview(id=course_key) + overview.version = 1 overview.save() overview = CourseOverview.objects.filter(id=course_key) self.assertEqual(len(overview), 1) From 1cd73c764ea9da8a650209576eb59d6b84bc69a9 Mon Sep 17 00:00:00 2001 From: Chris Rodriguez Date: Fri, 14 Aug 2015 11:44:35 -0400 Subject: [PATCH 11/80] Matching label to inputs --- lms/templates/staff_problem_info.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lms/templates/staff_problem_info.html b/lms/templates/staff_problem_info.html index f146db3eaa..c422c9839c 100644 --- a/lms/templates/staff_problem_info.html +++ b/lms/templates/staff_problem_info.html @@ -38,9 +38,9 @@ ${block_content}
    - + - + ${_('Optional tag (eg "done" or "broken"):') + '  '}
    From fb6ec9560f2e8989c7bd3fb33a1358a291336296 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Fri, 14 Aug 2015 12:24:46 -0400 Subject: [PATCH 12/80] Fix broken test due to two PRs merging --- .../teams/static/teams/js/spec/views/edit_team_spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/teams/static/teams/js/spec/views/edit_team_spec.js b/lms/djangoapps/teams/static/teams/js/spec/views/edit_team_spec.js index a7b8bcf464..505de68844 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/views/edit_team_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/views/edit_team_spec.js @@ -160,7 +160,8 @@ define([ }); it("shows correct error message when server returns an error", function () { - var requests = AjaxHelpers.requests(this); + var requests = AjaxHelpers.requests(this), + teamEditView = createTeamEditView(); teamEditView.$('.u-field-name input').val(teamsData.name); teamEditView.$('.u-field-textarea textarea').val(teamsData.description); From c929cdb54d9e5011e44d88cbfbc163cd70e934e2 Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 14 Aug 2015 14:48:09 -0400 Subject: [PATCH 13/80] Add an additional test case related to re-fetching data. --- .../common/js/spec_helpers/ajax_helpers.js | 1 + .../static/teams/js/collections/topic.js | 4 +-- .../spec/collections/topic_collection_spec.js | 1 - .../teams/js/spec/views/my_teams_spec.js | 2 +- .../static/teams/js/spec/views/topics_spec.js | 30 +++++++++++++++---- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/common/static/common/js/spec_helpers/ajax_helpers.js b/common/static/common/js/spec_helpers/ajax_helpers.js index 5140b2550e..7f0ce09ecc 100644 --- a/common/static/common/js/spec_helpers/ajax_helpers.js +++ b/common/static/common/js/spec_helpers/ajax_helpers.js @@ -83,6 +83,7 @@ define(['sinon', 'underscore', 'URI'], function(sinon, _, URI) { requestIndex = requests.length - 1; } request = requests[requestIndex]; + expect(new URI(request.url).path()).toEqual(expectedUrl); parameters = new URI(request.url).query(true); delete parameters._; // Ignore the cache-busting argument expect(parameters).toEqual(expectedParameters); diff --git a/lms/djangoapps/teams/static/teams/js/collections/topic.js b/lms/djangoapps/teams/static/teams/js/collections/topic.js index e6b4c8734b..738dee0ae1 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/topic.js +++ b/lms/djangoapps/teams/static/teams/js/collections/topic.js @@ -1,7 +1,7 @@ ;(function (define) { 'use strict'; - define(['teams/js/collections/base', 'teams/js/models/topic', 'gettext'], - function(BaseCollection, TopicModel, gettext) { + define(['teams/js/collections/base', 'teams/js/models/topic', 'gettext', 'underscore'], + function(BaseCollection, TopicModel, gettext, _) { var TopicCollection = BaseCollection.extend({ initialize: function(topics, options) { var self = this; diff --git a/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js b/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js index 1598db4e87..7d63e7a837 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js @@ -7,7 +7,6 @@ define(['backbone', 'URI', 'underscore', 'common/js/spec_helpers/ajax_helpers', topicCollection = new TopicCollection( { "count": 6, - "num_pages": 2, "current_page": 1, "start": 0, "results": [ diff --git a/lms/djangoapps/teams/static/teams/js/spec/views/my_teams_spec.js b/lms/djangoapps/teams/static/teams/js/spec/views/my_teams_spec.js index 188a9fc202..92367ef589 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/views/my_teams_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/views/my_teams_spec.js @@ -64,7 +64,7 @@ define([ myTeamsView.render(); AjaxHelpers.expectJsonRequestURL( requests, - 'foo', + 'api/teams/team_memberships', { expand : 'team', username : 'testUser', diff --git a/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js b/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js index af764098a5..1927cc519d 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js @@ -1,7 +1,7 @@ define([ - 'backbone', 'teams/js/collections/topic', 'teams/js/views/topics', - 'teams/js/spec_helpers/team_spec_helpers' -], function (Backbone, TopicCollection, TopicsView, TeamSpecHelpers) { + 'backbone', 'underscore', 'teams/js/collections/topic', 'teams/js/views/topics', + 'teams/js/spec_helpers/team_spec_helpers', 'common/js/spec_helpers/ajax_helpers' +], function (Backbone, _, TopicCollection, TopicsView, TeamSpecHelpers, AjaxHelpers) { 'use strict'; describe('TopicsView', function () { var initialTopics, topicCollection, createTopicsView, @@ -33,12 +33,14 @@ define([ "num_pages": 2, "current_page": 1, "start": 0, - "results": initialTopics + "results": initialTopics, + "sort_order": "name" }, { teamEvents: TeamSpecHelpers.teamEvents, course_id: 'my/course/id', - parse: true + parse: true, + url: 'api/teams/topics' } ); }); @@ -57,5 +59,23 @@ define([ expect(footerEl.text()).toMatch('1\\s+out of\\s+\/\\s+2'); expect(footerEl).not.toHaveClass('hidden'); }); + + it('refreshes the topics when a team is created', function() { + var requests = AjaxHelpers.requests(this), + topicsView = createTopicsView(); + + topicsView.collection.teamEvents.trigger('teams:update', { action: 'create' }); + topicsView.render(); + AjaxHelpers.expectJsonRequestURL( + requests, + 'api/teams/topics', + { + course_id : 'my/course/id', + page : '1', + page_size : '5', // currently the page size is determined by the size of the collection + order_by : 'name' + } + ); + }); }); }); From 996ce1d62c2a8fe43762d8709a7a1786a584f757 Mon Sep 17 00:00:00 2001 From: Jesse Zoldak Date: Fri, 14 Aug 2015 15:33:11 -0400 Subject: [PATCH 14/80] Mark TeamPageTest class as flaky TNL-3069 --- common/test/acceptance/tests/lms/test_teams.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/test/acceptance/tests/lms/test_teams.py b/common/test/acceptance/tests/lms/test_teams.py index 680739a24f..dfa521ac06 100644 --- a/common/test/acceptance/tests/lms/test_teams.py +++ b/common/test/acceptance/tests/lms/test_teams.py @@ -4,6 +4,7 @@ Acceptance tests for the teams feature. import json import ddt +from flaky import flaky from nose.plugins.attrib import attr from uuid import uuid4 @@ -747,6 +748,7 @@ class CreateTeamTest(TeamsTabBase): self.verify_my_team_count(0) +@flaky # TODO fix this, see TNL-3069 @attr('shard_5') @ddt.ddt class TeamPageTest(TeamsTabBase): From 944f51a60bb22b193610ed198eb5aabdcb6c31e7 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Wed, 5 Aug 2015 13:13:33 -0400 Subject: [PATCH 15/80] LMS: removing old and not needed edx.org MKTG iframe assets * removing templates/styling * removing test logic and URLs --- lms/djangoapps/courseware/tests/test_views.py | 133 ----------------- lms/djangoapps/courseware/views.py | 91 ------------ lms/static/sass/_shame.scss | 72 ---------- .../courseware/mktg_coming_soon.html | 29 ---- .../courseware/mktg_course_about.html | 135 ------------------ lms/templates/mktg_iframe.html | 41 ------ lms/urls.py | 6 - 7 files changed, 507 deletions(-) delete mode 100644 lms/templates/courseware/mktg_coming_soon.html delete mode 100644 lms/templates/courseware/mktg_course_about.html delete mode 100644 lms/templates/mktg_iframe.html diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index ba844b8e88..cd4f67d839 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -382,112 +382,6 @@ class ViewsTestCase(ModuleStoreTestCase): # generate/store a real password. self.assertEqual(chat_settings['password'], "johndoe@%s" % domain) - @patch.dict(settings.FEATURES, {'ENABLE_MKTG_EMAIL_OPT_IN': True}) - def test_course_mktg_about_coming_soon(self): - # We should not be able to find this course - url = reverse('mktg_about_course', kwargs={'course_id': 'no/course/here'}) - response = self.client.get(url, {'org': self.org}) - self.assertIn('Coming Soon', response.content) - - # Verify that the checkbox is not displayed - self._email_opt_in_checkbox(response) - - @patch.dict(settings.FEATURES, {'ENABLE_MKTG_EMAIL_OPT_IN': True}) - @ddt.data( - # One organization name - (u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ", u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"), - # Two organization names - (",".join([u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"] * 2), u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ" + " and " + u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"), - # Three organization names - (",".join([u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"] * 3), u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ" + ", " + u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ" + ", " + "and " + u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ") - ) - @ddt.unpack - def test_course_mktg_register(self, org, org_name_string): - response = self._load_mktg_about(org=org) - self.assertIn('Enroll in', response.content) - self.assertNotIn('and choose your student track', response.content) - - # Verify that the checkbox is displayed - self._email_opt_in_checkbox(response, org_name_string) - - @patch.dict(settings.FEATURES, {'ENABLE_MKTG_EMAIL_OPT_IN': True}) - @ddt.data( - # One organization name - (u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ", u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"), - # Two organization names - (",".join([u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"] * 2), u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ" + " and " + u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"), - # Three organization names - (",".join([u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ"] * 3), u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ" + ", " + u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ" + ", " + "and " + u"ꜱᴛᴀʀᴋ ɪɴᴅᴜꜱᴛʀɪᴇꜱ") - ) - @ddt.unpack - def test_course_mktg_register_multiple_modes(self, org, org_name_string): - CourseMode.objects.get_or_create( - mode_slug='honor', - mode_display_name='Honor Code Certificate', - course_id=self.course_key - ) - CourseMode.objects.get_or_create( - mode_slug='verified', - mode_display_name='Verified Certificate', - course_id=self.course_key - ) - - response = self._load_mktg_about(org=org) - self.assertIn('Enroll in', response.content) - self.assertIn('and choose your student track', response.content) - - # Verify that the checkbox is displayed - self._email_opt_in_checkbox(response, org_name_string) - - # clean up course modes - CourseMode.objects.all().delete() - - @patch.dict(settings.FEATURES, {'ENABLE_MKTG_EMAIL_OPT_IN': True}) - def test_course_mktg_no_organization_name(self): - # Don't pass an organization name as a GET parameter, even though the email - # opt-in feature is enabled. - response = response = self._load_mktg_about() - - # Verify that the checkbox is not displayed - self._email_opt_in_checkbox(response) - - @patch.dict(settings.FEATURES, {'ENABLE_MKTG_EMAIL_OPT_IN': False}) - def test_course_mktg_opt_in_disabled(self): - # Pass an organization name as a GET parameter, even though the email - # opt-in feature is disabled. - response = self._load_mktg_about(org=self.org) - - # Verify that the checkbox is not displayed - self._email_opt_in_checkbox(response) - - @patch.dict(settings.FEATURES, {'ENABLE_MKTG_EMAIL_OPT_IN': True}) - def test_course_mktg_organization_html(self): - response = self._load_mktg_about(org=self.org_html) - - # Verify that the checkbox is displayed with the organization name - # in the label escaped as expected. - self._email_opt_in_checkbox(response, cgi.escape(self.org_html)) - - @patch.dict(settings.FEATURES, { - 'IS_EDX_DOMAIN': True, - 'ENABLE_MKTG_EMAIL_OPT_IN': True - }) - def test_mktg_about_language_edx_domain(self): - # Since we're in an edx-controlled domain, and our marketing site - # supports only English, override the language setting - # and use English. - response = self._load_mktg_about(language='eo', org=self.org_html) - self.assertContains(response, "Enroll in") - self.assertContains(response, "and learn about its other programs") - - @patch.dict(settings.FEATURES, {'IS_EDX_DOMAIN': False}) - def test_mktg_about_language_openedx(self): - # If we're in an OpenEdX installation, - # may want to support languages other than English, - # so respect the language code. - response = self._load_mktg_about(language='eo') - self.assertContains(response, u"Énröll ïn".encode('utf-8')) - def test_submission_history_accepts_valid_ids(self): # log into a staff account admin = AdminFactory() @@ -572,33 +466,6 @@ class ViewsTestCase(ModuleStoreTestCase): self.assertIn("Score: 3.0 / 3.0", response_content) self.assertIn('#4', response_content) - def _load_mktg_about(self, language=None, org=None): - """Retrieve the marketing about button (iframed into the marketing site) - and return the HTTP response. - - Keyword Args: - language (string): If provided, send this in the 'Accept-Language' HTTP header. - org (string): If provided, send the string as a GET parameter. - - Returns: - Response - - """ - # Log in as an administrator to guarantee that we can access the button - admin = AdminFactory() - self.client.login(username=admin.username, password='test') - - # If provided, set the language header - headers = {} - if language is not None: - headers['HTTP_ACCEPT_LANGUAGE'] = language - - url = reverse('mktg_about_course', kwargs={'course_id': unicode(self.course_key)}) - if org: - return self.client.get(url, {'org': org}, **headers) - else: - return self.client.get(url, **headers) - def _email_opt_in_checkbox(self, response, org_name_string=None): """Check if the email opt-in checkbox appears in the response content.""" checkbox_html = '' diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index ab50ece15f..d1d595317e 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -923,97 +923,6 @@ def course_about(request, course_id): }) -@ensure_csrf_cookie -@cache_if_anonymous('org') -@ensure_valid_course_key -def mktg_course_about(request, course_id): - """This is the button that gets put into an iframe on the Drupal site.""" - course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) - - try: - permission_name = microsite.get_value( - 'COURSE_ABOUT_VISIBILITY_PERMISSION', - settings.COURSE_ABOUT_VISIBILITY_PERMISSION - ) - course = get_course_with_access(request.user, permission_name, course_key) - except (ValueError, Http404): - # If a course does not exist yet, display a "Coming Soon" button - return render_to_response( - 'courseware/mktg_coming_soon.html', {'course_id': course_key.to_deprecated_string()} - ) - - registered = registered_for_course(course, request.user) - - if has_access(request.user, 'load', course): - course_target = reverse('info', args=[course.id.to_deprecated_string()]) - else: - course_target = reverse('about_course', args=[course.id.to_deprecated_string()]) - - allow_registration = bool(has_access(request.user, 'enroll', course)) - - show_courseware_link = bool(has_access(request.user, 'load', course) or - settings.FEATURES.get('ENABLE_LMS_MIGRATION')) - course_modes = CourseMode.modes_for_course_dict(course.id) - - context = { - 'course': course, - 'registered': registered, - 'allow_registration': allow_registration, - 'course_target': course_target, - 'show_courseware_link': show_courseware_link, - 'course_modes': course_modes, - } - - # The edx.org marketing site currently displays only in English. - # To avoid displaying a different language in the register / access button, - # we force the language to English. - # However, OpenEdX installations with a different marketing front-end - # may want to respect the language specified by the user or the site settings. - force_english = settings.FEATURES.get('IS_EDX_DOMAIN', False) - if force_english: - translation.activate('en-us') - - if settings.FEATURES.get('ENABLE_MKTG_EMAIL_OPT_IN'): - # Drupal will pass organization names using a GET parameter, as follows: - # ?org=Harvard - # ?org=Harvard,MIT - # If no full names are provided, the marketing iframe won't show the - # email opt-in checkbox. - org = request.GET.get('org') - if org: - org_list = org.split(',') - # HTML-escape the provided organization names - org_list = [cgi.escape(org) for org in org_list] - if len(org_list) > 1: - if len(org_list) > 2: - # Translators: The join of three or more institution names (e.g., Harvard, MIT, and Dartmouth). - org_name_string = _("{first_institutions}, and {last_institution}").format( - first_institutions=u", ".join(org_list[:-1]), - last_institution=org_list[-1] - ) - else: - # Translators: The join of two institution names (e.g., Harvard and MIT). - org_name_string = _("{first_institution} and {second_institution}").format( - first_institution=org_list[0], - second_institution=org_list[1] - ) - else: - org_name_string = org_list[0] - - context['checkbox_label'] = ungettext( - "I would like to receive email from {institution_series} and learn about its other programs.", - "I would like to receive email from {institution_series} and learn about their other programs.", - len(org_list) - ).format(institution_series=org_name_string) - - try: - return render_to_response('courseware/mktg_course_about.html', context) - finally: - # Just to be safe, reset the language if we forced it to be English. - if force_english: - translation.deactivate() - - @login_required @cache_control(no_cache=True, no_store=True, must_revalidate=True) @transaction.commit_manually diff --git a/lms/static/sass/_shame.scss b/lms/static/sass/_shame.scss index bd6e63be4d..c2e3770643 100644 --- a/lms/static/sass/_shame.scss +++ b/lms/static/sass/_shame.scss @@ -132,80 +132,8 @@ } - - // ==================== -// edx.org marketing site - registration iframe band-aid (poor form enough to isolate out) -.view-iframe, .view-iframe-content { - background: transparent !important; - overflow: hidden; -} - -.view-partial-mktgregister { - background: transparent !important; - - // dimensions needed for course about page on marketing site - .wrapper-view { - overflow: hidden; - } - - // nav list - .list-actions { - list-style: none; - margin: 0; - padding: 0; - - .item { - margin: 0; - } - } - - .action { - font-size: 16px; - font-weight: 500; - - // register or access courseware - &.action-register, &.access-courseware { - @extend %m-btn-primary; - display: block; - - .track { - @include transition(all $tmg-f2 ease-in-out); - color: $white; - display: block; - font-size: 13px; - line-height: 2em; - opacity: 0.6; - } - - &:hover .track, &:focus .track { - opacity: 1.0; - } - - &.has-option-verified { - padding-top: 12px !important; - } - } - - // already registered but course not started or registration is closed - &.is-registered, &.registration-closed { - @extend %m-btn-secondary; - pointer-events: none !important; - display: block; - } - - // coming soon - &.coming-soon { - @extend %m-btn-secondary; - pointer-events: none !important; - outline: none; - display: block; - } - } -} - -// ==================== // Verification fixes .verification-process { diff --git a/lms/templates/courseware/mktg_coming_soon.html b/lms/templates/courseware/mktg_coming_soon.html deleted file mode 100644 index 6781eb9386..0000000000 --- a/lms/templates/courseware/mktg_coming_soon.html +++ /dev/null @@ -1,29 +0,0 @@ -<%namespace name='static' file='../static_content.html'/> -<%inherit file="../mktg_iframe.html" /> -<%! -from django.utils.translation import ugettext as _ -from django.core.urlresolvers import reverse -from courseware.courses import course_image_url, get_course_about_section -%> - -<%block name="pagetitle">${_("About {course_id}").format(course_id=course_id) | h} - -<%block name="bodyclass">view-iframe-content view-partial-mktgregister - - -<%block name="headextra"> - <%include file="../google_analytics.html" /> - - -<%block name="content"> - - - - - - - diff --git a/lms/templates/courseware/mktg_course_about.html b/lms/templates/courseware/mktg_course_about.html deleted file mode 100644 index d0eb011cd0..0000000000 --- a/lms/templates/courseware/mktg_course_about.html +++ /dev/null @@ -1,135 +0,0 @@ -<%namespace name='static' file='../static_content.html'/> -<%inherit file="../mktg_iframe.html" /> -<%! -from django.utils.translation import ugettext as _ -from django.core.urlresolvers import reverse -from courseware.courses import course_image_url, get_course_about_section -%> - -<%block name="pagetitle">${_("About {course_number}").format(course_number=course.display_number_with_default) | h} - -<%block name="bodyclass">view-iframe-content view-partial-mktgregister - -<%block name="js_extra"> - - - -<%block name="content"> - - - - -%if not registered: -
    - -
    - ${_("Enroll")} - - - - -
    -
    - -
    - -
    -%endif - diff --git a/lms/templates/mktg_iframe.html b/lms/templates/mktg_iframe.html deleted file mode 100644 index a1c1bd8767..0000000000 --- a/lms/templates/mktg_iframe.html +++ /dev/null @@ -1,41 +0,0 @@ -<%namespace name='static' file='static_content.html'/> - - - - - <%block name="title"> - - - - - - <%static:css group='style-vendor'/> - <%static:css group='style-main'/> - <%static:js group='base_vendor'/> - - <%block name="headextra"/> - - <%include file="widgets/optimizely.html" /> - - - - - - - - - - -
    - - <%block name="content"> -
    - - <%static:js group='application'/> - <%block name="js_extra"> - - diff --git a/lms/urls.py b/lms/urls.py index 7c16f6b1cc..4bd1ad9266 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -298,12 +298,6 @@ if settings.COURSEWARE_ENABLED: #About the course url(r'^courses/{}/about$'.format(settings.COURSE_ID_PATTERN), 'courseware.views.course_about', name="about_course"), - #View for mktg site (kept for backwards compatibility TODO - remove before merge to master) - url(r'^courses/{}/mktg-about$'.format(settings.COURSE_ID_PATTERN), - 'courseware.views.mktg_course_about', name="mktg_about_course"), - #View for mktg site - url(r'^mktg/{}/?$'.format(settings.COURSE_ID_PATTERN), - 'courseware.views.mktg_course_about', name="mktg_about_course"), #Inside the course url(r'^courses/{}/$'.format(settings.COURSE_ID_PATTERN), From 03e6a12ede68c510f3257d5ea420ea50f5b7aef3 Mon Sep 17 00:00:00 2001 From: Renzo Lucioni Date: Sat, 15 Aug 2015 14:31:41 -0400 Subject: [PATCH 16/80] Fix release script typo --- scripts/release.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/release.py b/scripts/release.py index 40440d0b06..db7de885a2 100755 --- a/scripts/release.py +++ b/scripts/release.py @@ -521,7 +521,7 @@ def main(): print(generate_pr_table(args.previous, args.current)) return - print("Generating email and it's list of recipients for stage verification. This may take around a minute...") + print("Generating stage verification email and its list of recipients. This may take around a minute...") print(generate_email(args.previous, args.current, release_date=args.date).encode('UTF-8')) print("\n") print("Wiki Table:") From e18fa2f489d4b6a4a8d1fc188c0d36c6f333afb9 Mon Sep 17 00:00:00 2001 From: Amir Qayyum Khan Date: Thu, 23 Jul 2015 13:00:21 +0500 Subject: [PATCH 17/80] Fixed explicit labels related issues on CCX coach dashboard and membershp team management to fix #21 --- .../instructor_dashboard/membership.coffee | 2 +- lms/static/js/ccx/schedule.js | 1 - lms/templates/ccx/enrollment.html | 26 ++++++++++--------- lms/templates/ccx/schedule.html | 22 ++++++++-------- lms/templates/ccx/schedule.underscore | 2 +- .../instructor_dashboard_2/membership.html | 5 ++-- 6 files changed, 30 insertions(+), 28 deletions(-) diff --git a/lms/static/coffee/src/instructor_dashboard/membership.coffee b/lms/static/coffee/src/instructor_dashboard/membership.coffee index 4dc86bc849..15cd69d146 100644 --- a/lms/static/coffee/src/instructor_dashboard/membership.coffee +++ b/lms/static/coffee/src/instructor_dashboard/membership.coffee @@ -117,7 +117,7 @@ class AuthListWidget extends MemberListWidget # create revoke button and insert it into the row label_trans = gettext("Revoke access") - $revoke_btn = $ _.template('
    <%= label %>
    ', {label: label_trans}), + $revoke_btn = $ _.template('
    <%= label %>
    ', {label: label_trans}), class: 'revoke' $revoke_btn.click => @modify_member_access member.email, 'revoke', (error) => diff --git a/lms/static/js/ccx/schedule.js b/lms/static/js/ccx/schedule.js index fa50bf67c4..20ffdc1c38 100644 --- a/lms/static/js/ccx/schedule.js +++ b/lms/static/js/ccx/schedule.js @@ -306,7 +306,6 @@ var edx = edx || {}; row.removeClass('expanded').addClass('collapsed'); children.hide(); } - else { $(this).attr('aria-expanded', 'true'); $(this).find(".fa-caret-right").removeClass('fa-caret-right').addClass('fa-caret-down'); diff --git a/lms/templates/ccx/enrollment.html b/lms/templates/ccx/enrollment.html index 15ea3d86a3..2d054da3e4 100644 --- a/lms/templates/ccx/enrollment.html +++ b/lms/templates/ccx/enrollment.html @@ -4,19 +4,20 @@

    ${_("Batch Enrollment")}

    -

    -

    ${_("Enter email addresses and/or usernames separated by new lines or commas.")} - ${_("You will not get notification for emails that bounce, so please double-check spelling.")} - + ${_("You will not get notification for emails that bounce, so please double-check spelling.")}

    + +
    - +
    -

    +

    ${_("If this option is checked, users who have not yet registered for {platform_name} will be automatically enrolled.").format(platform_name=settings.PLATFORM_NAME)} ${_("If this option is left unchecked, users who have not yet registered for {platform_name} will not be enrolled, but will be allowed to enroll once they make an account.").format(platform_name=settings.PLATFORM_NAME)}

    @@ -26,11 +27,11 @@

    - + @@ -45,7 +46,7 @@
    -
    +
    @@ -65,17 +66,18 @@ ${member.user} ${member.user.email} -
    Revoke access
    +
    Revoke access
    %endfor
    - + +
    -
    +
    diff --git a/lms/templates/ccx/schedule.html b/lms/templates/ccx/schedule.html index a8cfe9b5d4..0c52ddbbeb 100644 --- a/lms/templates/ccx/schedule.html +++ b/lms/templates/ccx/schedule.html @@ -42,10 +42,10 @@
    ## Translators: This explains to people using a screen reader how to interpret the format of YYYY-MM-DD - + ## Translators: This explains to people using a screen reader how to interpret the format of HH:MM - +
    @@ -60,7 +60,7 @@ aria-labelledby="ccx_schedule_save_changes_heading">

    ${_('Save changes')}

    -

    ${_("You have unsaved changes.")}

    +

    ${_("You have unsaved changes.")}


    @@ -69,26 +69,26 @@

    ${_('Error')}

    -

    ${_("There was an error saving changes.")}

    +

    ${_("There was an error saving changes.")}

    ${_('Schedule a Unit')}

    - +
    - +
    - +
    -
    -
    diff --git a/lms/templates/ccx/schedule.underscore b/lms/templates/ccx/schedule.underscore index 4bfa3ab622..11b21c372d 100644 --- a/lms/templates/ccx/schedule.underscore +++ b/lms/templates/ccx/schedule.underscore @@ -14,7 +14,7 @@ <%- gettext('Start Date') %> <%- gettext('Due Date') %> diff --git a/lms/templates/instructor/instructor_dashboard_2/membership.html b/lms/templates/instructor/instructor_dashboard_2/membership.html index 360e9536b3..03fb666144 100644 --- a/lms/templates/instructor/instructor_dashboard_2/membership.html +++ b/lms/templates/instructor/instructor_dashboard_2/membership.html @@ -25,7 +25,8 @@ from openedx.core.djangoapps.course_groups.partition_scheme import get_cohorted_
    - + +
    @@ -154,7 +155,7 @@ from openedx.core.djangoapps.course_groups.partition_scheme import get_cohorted_
    %endif -
    +
    ## Translators: an "Administration List" is a list, such as Course Staff, that users can be added to.

    ${_("Course Team Management")}

    From 58b088e109692c8b546ecbf2c0a91bcce2c8155a Mon Sep 17 00:00:00 2001 From: Tasawer Date: Mon, 17 Aug 2015 14:40:41 +0500 Subject: [PATCH 18/80] Fixing minimum grade value error ECOM-2109 --- cms/static/js/models/settings/course_grading_policy.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cms/static/js/models/settings/course_grading_policy.js b/cms/static/js/models/settings/course_grading_policy.js index 3751d91e7e..4d063f4cdb 100644 --- a/cms/static/js/models/settings/course_grading_policy.js +++ b/cms/static/js/models/settings/course_grading_policy.js @@ -77,7 +77,8 @@ var CourseGradingPolicy = Backbone.Model.extend({ } } if(this.get('is_credit_course') && _.has(attrs, 'minimum_grade_credit')) { - var minimum_grade_cutoff = _.values(attrs.grade_cutoffs).pop(); + // Getting minimum grade cutoff value + var minimum_grade_cutoff = _.min(_.values(attrs.grade_cutoffs)); if(isNaN(attrs.minimum_grade_credit) || attrs.minimum_grade_credit === null || attrs.minimum_grade_credit < minimum_grade_cutoff) { return { 'minimum_grade_credit': interpolate( From 789732a7c89613f7fe922f02d4c9c54cb9cd1d1d Mon Sep 17 00:00:00 2001 From: muzaffaryousaf Date: Mon, 17 Aug 2015 15:56:58 +0500 Subject: [PATCH 19/80] Accessibility fixings. TNL-1930 --- lms/djangoapps/teams/static/teams/js/views/team_profile.js | 3 +++ .../teams/static/teams/templates/team-profile.underscore | 4 +++- lms/templates/components/header/header.underscore | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/teams/static/teams/js/views/team_profile.js b/lms/djangoapps/teams/static/teams/js/views/team_profile.js index 8184283dec..fefbea95b3 100644 --- a/lms/djangoapps/teams/static/teams/js/views/team_profile.js +++ b/lms/djangoapps/teams/static/teams/js/views/team_profile.js @@ -42,6 +42,7 @@ membershipText: TeamUtils.teamCapacityText(memberships.length, this.maxTeamSize), isMember: isMember, hasCapacity: memberships.length < this.maxTeamSize, + isEmpty: memberships.length < 1 })); this.discussionView = new TeamDiscussionView({ @@ -50,6 +51,8 @@ this.discussionView.render(); this.renderTeamMembers(); + + $('.sr-is-focusable').focus(); return this; }, diff --git a/lms/djangoapps/teams/static/teams/templates/team-profile.underscore b/lms/djangoapps/teams/static/teams/templates/team-profile.underscore index da9d5853d2..49ae89bdac 100644 --- a/lms/djangoapps/teams/static/teams/templates/team-profile.underscore +++ b/lms/djangoapps/teams/static/teams/templates/team-profile.underscore @@ -18,7 +18,9 @@
    <% } %>
    - <%- gettext("Team member profiles") %> + <% if (!isEmpty) { %> + <%- gettext("Team member profiles") %> + <% } %>
    diff --git a/lms/templates/components/header/header.underscore b/lms/templates/components/header/header.underscore index b8de6f7c75..5fd91299da 100644 --- a/lms/templates/components/header/header.underscore +++ b/lms/templates/components/header/header.underscore @@ -1,5 +1,6 @@
    From e73a8556599cd59c5f524d87a447019e14cde2d2 Mon Sep 17 00:00:00 2001 From: muzaffaryousaf Date: Mon, 17 Aug 2015 16:51:52 +0500 Subject: [PATCH 21/80] Revert "Accessibility fixings for new post button on teams." This reverts commit e133a63a5b55503d88b8849e5a2b6e6835255010. --- .../teams/static/teams/templates/team-profile.underscore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/djangoapps/teams/static/teams/templates/team-profile.underscore b/lms/djangoapps/teams/static/teams/templates/team-profile.underscore index 21b0d94fd2..49ae89bdac 100644 --- a/lms/djangoapps/teams/static/teams/templates/team-profile.underscore +++ b/lms/djangoapps/teams/static/teams/templates/team-profile.underscore @@ -5,7 +5,7 @@ data-user-create-comment="<%= !readOnly %>" data-user-create-subcomment="<%= !readOnly %>"> <% if ( !readOnly) { %> - + <%= gettext("New Post") %> <% } %>
    From 9e7d278dd0a4b5c3df805489f50eb532317df95b Mon Sep 17 00:00:00 2001 From: muzaffaryousaf Date: Mon, 17 Aug 2015 16:52:01 +0500 Subject: [PATCH 22/80] Revert "Accessibility fixings." This reverts commit 789732a7c89613f7fe922f02d4c9c54cb9cd1d1d. --- lms/djangoapps/teams/static/teams/js/views/team_profile.js | 3 --- .../teams/static/teams/templates/team-profile.underscore | 4 +--- lms/templates/components/header/header.underscore | 1 - 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/lms/djangoapps/teams/static/teams/js/views/team_profile.js b/lms/djangoapps/teams/static/teams/js/views/team_profile.js index fefbea95b3..8184283dec 100644 --- a/lms/djangoapps/teams/static/teams/js/views/team_profile.js +++ b/lms/djangoapps/teams/static/teams/js/views/team_profile.js @@ -42,7 +42,6 @@ membershipText: TeamUtils.teamCapacityText(memberships.length, this.maxTeamSize), isMember: isMember, hasCapacity: memberships.length < this.maxTeamSize, - isEmpty: memberships.length < 1 })); this.discussionView = new TeamDiscussionView({ @@ -51,8 +50,6 @@ this.discussionView.render(); this.renderTeamMembers(); - - $('.sr-is-focusable').focus(); return this; }, diff --git a/lms/djangoapps/teams/static/teams/templates/team-profile.underscore b/lms/djangoapps/teams/static/teams/templates/team-profile.underscore index 49ae89bdac..da9d5853d2 100644 --- a/lms/djangoapps/teams/static/teams/templates/team-profile.underscore +++ b/lms/djangoapps/teams/static/teams/templates/team-profile.underscore @@ -18,9 +18,7 @@ <% } %>
    - <% if (!isEmpty) { %> - <%- gettext("Team member profiles") %> - <% } %> + <%- gettext("Team member profiles") %>
    diff --git a/lms/templates/components/header/header.underscore b/lms/templates/components/header/header.underscore index 5fd91299da..b8de6f7c75 100644 --- a/lms/templates/components/header/header.underscore +++ b/lms/templates/components/header/header.underscore @@ -1,6 +1,5 @@ @@ -73,7 +73,7 @@ from django.template.defaultfilters import escapejs
    1. - + ${_("The public display name for the new course. (This name is often the same as the original course name.)")} diff --git a/cms/templates/index.html b/cms/templates/index.html index d8fe4389dd..92efdd0d81 100644 --- a/cms/templates/index.html +++ b/cms/templates/index.html @@ -168,7 +168,7 @@
    2. -

      ${course_info['display_name']}

      +

      ${course_info['display_name'] | h}

    3. -

      ${course_info['display_name']}

      +

      ${course_info['display_name'] | h}

    4. -

      ${course_info['display_name']}

      +

      ${course_info['display_name'] | h}

    5. -

      ${library_info['display_name']}

      +

      ${library_info['display_name'] | h}

      diff --git a/common/lib/xmodule/xmodule/modulestore/tests/utils.py b/common/lib/xmodule/xmodule/modulestore/tests/utils.py index aa8832ba10..b1c0b17e4a 100644 --- a/common/lib/xmodule/xmodule/modulestore/tests/utils.py +++ b/common/lib/xmodule/xmodule/modulestore/tests/utils.py @@ -2,6 +2,7 @@ Helper classes and methods for running modulestore tests without Django. """ from importlib import import_module +from markupsafe import escape from opaque_keys.edx.keys import UsageKey from unittest import TestCase from xblock.fields import XBlockMixin @@ -174,3 +175,25 @@ class ProceduralCourseTestMixin(object): with self.store.bulk_operations(self.course.id, emit_signals=emit_signals): descend(self.course, ['chapter', 'sequential', 'vertical', 'problem']) + + +class XssTestMixin(object): + """ + Mixin for testing XSS vulnerabilities. + """ + + def assert_xss(self, response, xss_content): + """Assert that `xss_content` is not present in the content of + `response`, and that its escaped version is present. Uses the + same `markupsafe.escape` function as Mako templates. + + Args: + response (Response): The HTTP response + xss_content (str): The Javascript code to check for. + + Returns: + None + + """ + self.assertContains(response, escape(xss_content)) + self.assertNotContains(response, xss_content) diff --git a/lms/djangoapps/courseware/tests/test_course_survey.py b/lms/djangoapps/courseware/tests/test_course_survey.py index a4ddf7b69a..a06a77b372 100644 --- a/lms/djangoapps/courseware/tests/test_course_survey.py +++ b/lms/djangoapps/courseware/tests/test_course_survey.py @@ -11,11 +11,12 @@ from survey.models import SurveyForm from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.utils import XssTestMixin from courseware.tests.helpers import LoginEnrollmentTestCase @attr('shard_1') -class SurveyViewsTests(LoginEnrollmentTestCase, ModuleStoreTestCase): +class SurveyViewsTests(LoginEnrollmentTestCase, ModuleStoreTestCase, XssTestMixin): """ All tests for the views.py file """ @@ -39,6 +40,7 @@ class SurveyViewsTests(LoginEnrollmentTestCase, ModuleStoreTestCase): }) self.course = CourseFactory.create( + display_name='', course_survey_required=True, course_survey_name=self.test_survey_name ) @@ -172,3 +174,13 @@ class SurveyViewsTests(LoginEnrollmentTestCase, ModuleStoreTestCase): resp, reverse('info', kwargs={'course_id': unicode(self.course_without_survey.id)}) ) + + def test_survey_xss(self): + """Test that course display names are correctly HTML-escaped.""" + response = self.client.get( + reverse( + 'course_survey', + kwargs={'course_id': unicode(self.course.id)} + ) + ) + self.assert_xss(response, '') diff --git a/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py b/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py index 1b4af21ef8..297e3bd774 100644 --- a/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py +++ b/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py @@ -15,6 +15,7 @@ from courseware.tests.helpers import LoginEnrollmentTestCase from student.tests.factories import AdminFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.utils import XssTestMixin from xmodule.modulestore.tests.factories import CourseFactory from shoppingcart.models import PaidCourseRegistration, Order, CourseRegCodeItem from course_modes.models import CourseMode @@ -23,7 +24,7 @@ from student.models import CourseEnrollment @ddt.ddt -class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase): +class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase, XssTestMixin): """ Tests for the instructor dashboard (not legacy). """ @@ -34,7 +35,8 @@ class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase): """ super(TestInstructorDashboard, self).setUp() self.course = CourseFactory.create( - grading_policy={"GRADE_CUTOFFS": {"A": 0.75, "B": 0.63, "C": 0.57, "D": 0.5}} + grading_policy={"GRADE_CUTOFFS": {"A": 0.75, "B": 0.63, "C": 0.57, "D": 0.5}}, + display_name='' ) self.course_mode = CourseMode(course_id=self.course.id, @@ -87,6 +89,13 @@ class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase): response = self.client.get(self.url) self.assertTrue('${amount}'.format(amount=total_amount) in response.content) + def test_course_name_xss(self): + """Test that the instructor dashboard correctly escapes course names + with script tags. + """ + response = self.client.get(self.url) + self.assert_xss(response, '') + @override_settings(PAID_COURSE_REGISTRATION_CURRENCY=['PKR', 'Rs']) def test_override_currency_settings_in_the_html_response(self): """ diff --git a/lms/djangoapps/shoppingcart/tests/test_views.py b/lms/djangoapps/shoppingcart/tests/test_views.py index 484d3fd4e9..bf1d9448af 100644 --- a/lms/djangoapps/shoppingcart/tests/test_views.py +++ b/lms/djangoapps/shoppingcart/tests/test_views.py @@ -26,6 +26,7 @@ import ddt from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory +from xmodule.modulestore.tests.utils import XssTestMixin from student.roles import CourseSalesAdminRole from util.date_utils import get_default_time_display from util.testing import UrlResetMixin @@ -65,7 +66,7 @@ postpay_mock = Mock() @patch.dict('django.conf.settings.FEATURES', {'ENABLE_PAID_COURSE_REGISTRATION': True}) @ddt.ddt -class ShoppingCartViewsTests(ModuleStoreTestCase): +class ShoppingCartViewsTests(ModuleStoreTestCase, XssTestMixin): def setUp(self): super(ShoppingCartViewsTests, self).setUp() @@ -98,7 +99,12 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): verified_course = CourseFactory.create(org='org', number='test', display_name='Test Course') self.verified_course_key = verified_course.id + + xss_course = CourseFactory.create(org='xssorg', number='test', display_name='') + self.xss_course_key = xss_course.id + self.cart = Order.get_cart_for_user(self.user) + self.addCleanup(patcher.stop) self.now = datetime.now(pytz.UTC) @@ -884,6 +890,31 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): 'course_key': unicode(self.verified_course_key) }) + def test_show_receipt_xss(self): + CertificateItem.add_to_order(self.cart, self.xss_course_key, self.cost, 'honor') + self.cart.purchase() + + self.login_user() + url = reverse('shoppingcart.views.show_receipt', args=[self.cart.id]) + resp = self.client.get(url) + self.assert_xss(resp, '') + + @patch('shoppingcart.views.render_to_response', render_mock) + def test_reg_code_xss(self): + self.add_reg_code(self.xss_course_key) + + # One courses in user shopping cart + self.add_course_to_user_cart(self.xss_course_key) + self.assertEquals(self.cart.orderitem_set.count(), 1) + + post_response = self.client.post(reverse('shoppingcart.views.use_code'), {'code': self.reg_code}) + self.assertEqual(post_response.status_code, 200) + + redeem_url = reverse('register_code_redemption', args=[self.reg_code]) + redeem_response = self.client.get(redeem_url) + + self.assert_xss(redeem_response, '') + def test_show_receipt_json_multiple_items(self): # Two different item types PaidCourseRegistration.add_to_order(self.cart, self.course_key) diff --git a/lms/djangoapps/verify_student/tests/test_views.py b/lms/djangoapps/verify_student/tests/test_views.py index e96ad28349..4e977f2cdb 100644 --- a/lms/djangoapps/verify_student/tests/test_views.py +++ b/lms/djangoapps/verify_student/tests/test_views.py @@ -51,6 +51,7 @@ from verify_student.models import ( ) from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory +from xmodule.modulestore.tests.utils import XssTestMixin from xmodule.modulestore.django import modulestore from xmodule.modulestore import ModuleStoreEnum from xmodule.modulestore.tests.factories import check_mongo_calls @@ -81,7 +82,7 @@ class StartView(TestCase): @ddt.ddt -class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase): +class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase, XssTestMixin): """ Tests for the payment and verification flow views. """ @@ -258,6 +259,7 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase): response = self._get_page('verify_student_verify_now', course.id) self._assert_messaging(response, PayAndVerifyView.VERIFY_NOW_MSG) + self.assert_xss(response, '') # Expect that *all* steps are displayed, # but we start after the payment step (because it's already completed). @@ -339,6 +341,8 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase): self._assert_messaging(response, PayAndVerifyView.PAYMENT_CONFIRMATION_MSG) + self.assert_xss(response, '') + # Expect that *all* steps are displayed, # but we start at the payment confirmation step self._assert_steps_displayed( @@ -371,6 +375,8 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase): self._assert_messaging(response, PayAndVerifyView.FIRST_TIME_VERIFY_MSG) + self.assert_xss(response, '') + # Expect that *all* steps are displayed, # but we start on the first verify step self._assert_steps_displayed( @@ -456,6 +462,7 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase): PayAndVerifyView.WEBCAM_REQ, ]) self._assert_upgrade_session_flag(True) + self.assert_xss(response, '') def test_upgrade_already_verified(self): course = self._create_course("verified") @@ -724,7 +731,7 @@ class TestPayAndVerifyView(UrlResetMixin, ModuleStoreTestCase): def _create_course(self, *course_modes, **kwargs): """Create a new course with the specified course modes. """ - course = CourseFactory.create() + course = CourseFactory.create(display_name='') if kwargs.get('course_start'): course.start = kwargs.get('course_start') diff --git a/lms/templates/instructor/instructor_dashboard_2/course_info.html b/lms/templates/instructor/instructor_dashboard_2/course_info.html index 7df0a7fb35..fea2d19334 100644 --- a/lms/templates/instructor/instructor_dashboard_2/course_info.html +++ b/lms/templates/instructor/instructor_dashboard_2/course_info.html @@ -55,7 +55,7 @@
    6. - ${ section_data['course_display_name'] } + ${ section_data['course_display_name'] | h}
    7. diff --git a/lms/templates/shoppingcart/receipt.html b/lms/templates/shoppingcart/receipt.html index 85c4022ffb..3940af4c63 100644 --- a/lms/templates/shoppingcart/receipt.html +++ b/lms/templates/shoppingcart/receipt.html @@ -4,6 +4,7 @@ from django.utils.translation import ugettext as _ from django.utils.translation import ungettext from django.core.urlresolvers import reverse from courseware.courses import course_image_url, get_course_about_section, get_course_by_id +from markupsafe import escape from microsite_configuration import microsite %> @@ -35,7 +36,7 @@ from microsite_configuration import microsite ${_(u"You have successfully been enrolled for {course_names}. " u"The following receipt has been emailed to {receipient_emails}").format( course_names=u"{course_names}".format( - course_names=appended_course_names + course_names=escape(appended_course_names) ), receipient_emails=u"{receipient_emails}".format( receipient_emails=appended_recipient_emails @@ -50,7 +51,7 @@ from microsite_configuration import microsite ).format( number=total_registration_codes, course_names=u"{course_names}".format( - course_names=appended_course_names + course_names=escape(appended_course_names) ) )} ${_("The following receipt has been emailed to {receipient_emails}").format( @@ -297,7 +298,7 @@ from microsite_configuration import microsite

      ${_('Registration for:')} - ${ course.display_name } + ${ course.display_name | h }

      diff --git a/lms/templates/shoppingcart/registration_code_receipt.html b/lms/templates/shoppingcart/registration_code_receipt.html index 557873c4c3..b2f37b452d 100644 --- a/lms/templates/shoppingcart/registration_code_receipt.html +++ b/lms/templates/shoppingcart/registration_code_receipt.html @@ -33,7 +33,7 @@ from courseware.courses import course_image_url, get_course_about_section

      - ${_("{course_name}").format(course_name=course.display_name)} + ${_("{course_name}").format(course_name=course.display_name) | h} ${_("{start_date} - {end_date}").format( start_date=course.start_datetime_text(), @@ -55,7 +55,7 @@ from courseware.courses import course_image_url, get_course_about_section )} % elif redemption_success: ${_("You have successfully enrolled in {course_name}." - " This course has now been added to your dashboard.").format(course_name=course.display_name)} + " This course has now been added to your dashboard.").format(course_name=course.display_name) | h} % elif registered_for_course: ${_("You're already enrolled for this course." " Visit your {link_start}dashboard{link_end} to see the course." @@ -72,7 +72,7 @@ from courseware.courses import course_image_url, get_course_about_section % else: ${_("You're about to activate an enrollment code for {course_name} by {site_name}. " "This code can only be used one time, so you should only activate this code if you're its intended" - " recipient.").format(course_name=course.display_name, site_name=site_name)} + " recipient.").format(course_name=course.display_name, site_name=site_name) | h} % endif

      diff --git a/lms/templates/shoppingcart/registration_code_redemption.html b/lms/templates/shoppingcart/registration_code_redemption.html index 94227732b2..3c91e41ce3 100644 --- a/lms/templates/shoppingcart/registration_code_redemption.html +++ b/lms/templates/shoppingcart/registration_code_redemption.html @@ -33,7 +33,7 @@ from courseware.courses import course_image_url, get_course_about_section

      - ${course.display_name} + ${course.display_name | h} ${course.start_datetime_text()} - @@ -60,7 +60,7 @@ from courseware.courses import course_image_url, get_course_about_section "This course has now been added to your dashboard." ).format( course_name=course.display_name, - )} + ) | h} % elif registered_for_course: ${_( "You're already enrolled for this course. " @@ -80,7 +80,7 @@ from courseware.courses import course_image_url, get_course_about_section ).format( course_name=course.display_name, site_name=site_name, - )} + ) | h} % endif

      diff --git a/lms/templates/survey/survey.html b/lms/templates/survey/survey.html index 6ffd8986ba..c71b945178 100644 --- a/lms/templates/survey/survey.html +++ b/lms/templates/survey/survey.html @@ -24,7 +24,7 @@ from django.utils import html

      ${course.display_org_with_default} ${course.display_number_with_default} - ${course.display_name} + ${course.display_name | h}

      ${_("Pre-Course Survey")}

      diff --git a/lms/templates/verify_student/pay_and_verify.html b/lms/templates/verify_student/pay_and_verify.html index 79361d1b72..e483591a5a 100644 --- a/lms/templates/verify_student/pay_and_verify.html +++ b/lms/templates/verify_student/pay_and_verify.html @@ -10,13 +10,13 @@ from verify_student.views import PayAndVerifyView <%block name="pagetitle"> % if message_key == PayAndVerifyView.UPGRADE_MSG: - ${_("Upgrade Your Enrollment For {course_name}.").format(course_name=course.display_name)} + ${_("Upgrade Your Enrollment For {course_name}.").format(course_name=course.display_name) | h} % elif message_key == PayAndVerifyView.PAYMENT_CONFIRMATION_MSG: - ${_("Receipt For {course_name}").format(course_name=course.display_name)} + ${_("Receipt For {course_name}").format(course_name=course.display_name) | h} % elif message_key in [PayAndVerifyView.VERIFY_NOW_MSG, PayAndVerifyView.VERIFY_LATER_MSG]: - ${_("Verify For {course_name}").format(course_name=course.display_name)} + ${_("Verify For {course_name}").format(course_name=course.display_name) | h} % else: - ${_("Enroll In {course_name}").format(course_name=course.display_name)} + ${_("Enroll In {course_name}").format(course_name=course.display_name) | h} % endif From 41f207dec34a2d590b3746cfdea7e1912c430f33 Mon Sep 17 00:00:00 2001 From: cahrens Date: Mon, 17 Aug 2015 17:05:27 -0400 Subject: [PATCH 25/80] The stale flag needs to take into account its previous state. Otherwise it can change from false to true without re-rendering. TNL-3072 --- .../static/teams/js/collections/topic.js | 6 +- .../spec/collections/topic_collection_spec.js | 45 ++------------ .../static/teams/js/spec/views/topics_spec.js | 60 +++++++++---------- .../js/spec_helpers/team_spec_helpers.js | 38 +++++++++++- 4 files changed, 74 insertions(+), 75 deletions(-) diff --git a/lms/djangoapps/teams/static/teams/js/collections/topic.js b/lms/djangoapps/teams/static/teams/js/collections/topic.js index 738dee0ae1..b3b60849ec 100644 --- a/lms/djangoapps/teams/static/teams/js/collections/topic.js +++ b/lms/djangoapps/teams/static/teams/js/collections/topic.js @@ -1,7 +1,7 @@ ;(function (define) { 'use strict'; - define(['teams/js/collections/base', 'teams/js/models/topic', 'gettext', 'underscore'], - function(BaseCollection, TopicModel, gettext, _) { + define(['underscore', 'gettext', 'teams/js/collections/base', 'teams/js/models/topic'], + function(_, gettext, BaseCollection, TopicModel) { var TopicCollection = BaseCollection.extend({ initialize: function(topics, options) { var self = this; @@ -25,7 +25,7 @@ }, onUpdate: function(event) { - this.isStale = event.action === 'create'; + this.isStale = this.isStale || event.action === 'create'; }, model: TopicModel diff --git a/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js b/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js index 7d63e7a837..ee929edf69 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/collections/topic_collection_spec.js @@ -1,48 +1,11 @@ -define(['backbone', 'URI', 'underscore', 'common/js/spec_helpers/ajax_helpers', 'teams/js/collections/topic'], - function (Backbone, URI, _, AjaxHelpers, TopicCollection) { +define(['backbone', 'URI', 'underscore', 'common/js/spec_helpers/ajax_helpers', + 'teams/js/spec_helpers/team_spec_helpers'], + function (Backbone, URI, _, AjaxHelpers, TeamSpecHelpers) { 'use strict'; describe('TopicCollection', function () { var topicCollection; beforeEach(function () { - topicCollection = new TopicCollection( - { - "count": 6, - "current_page": 1, - "start": 0, - "results": [ - { - "description": "asdf description", - "name": "asdf", - "id": "_asdf" - }, - { - "description": "bar description", - "name": "bar", - "id": "_bar" - }, - { - "description": "baz description", - "name": "baz", - "id": "_baz" - }, - { - "description": "foo description", - "name": "foo", - "id": "_foo" - }, - { - "description": "qwerty description", - "name": "qwerty", - "id": "_qwerty" - } - ], - "sort_order": "name" - }, - { - teamEvents:_.clone(Backbone.Events), - course_id: 'my/course/id', - parse: true - }); + topicCollection = TeamSpecHelpers.createMockTopicCollection(); }); var testRequestParam = function (self, param, value) { diff --git a/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js b/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js index 1927cc519d..abf39839c4 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/views/topics_spec.js @@ -4,17 +4,7 @@ define([ ], function (Backbone, _, TopicCollection, TopicsView, TeamSpecHelpers, AjaxHelpers) { 'use strict'; describe('TopicsView', function () { - var initialTopics, topicCollection, createTopicsView, - generateTopics = function (startIndex, stopIndex) { - return _.map(_.range(startIndex, stopIndex + 1), function (i) { - return { - "description": "description " + i, - "name": "topic " + i, - "id": "id " + i, - "team_count": 0 - }; - }); - }; + var initialTopics, topicCollection, createTopicsView, triggerUpdateEvent; createTopicsView = function() { return new TopicsView({ @@ -24,25 +14,18 @@ define([ }).render(); }; + triggerUpdateEvent = function(topicsView, sendJoinAfter) { + topicsView.collection.teamEvents.trigger('teams:update', { action: 'create' }); + if (sendJoinAfter) { + topicsView.collection.teamEvents.trigger('teams:update', { action: 'join' }); + } + topicsView.render(); + }; + beforeEach(function () { setFixtures('
      '); - initialTopics = generateTopics(1, 5); - topicCollection = new TopicCollection( - { - "count": 6, - "num_pages": 2, - "current_page": 1, - "start": 0, - "results": initialTopics, - "sort_order": "name" - }, - { - teamEvents: TeamSpecHelpers.teamEvents, - course_id: 'my/course/id', - parse: true, - url: 'api/teams/topics' - } - ); + initialTopics = TeamSpecHelpers.createMockTopicData(1, 5); + topicCollection = TeamSpecHelpers.createMockTopicCollection(initialTopics); }); it('can render the first of many pages', function () { @@ -64,8 +47,25 @@ define([ var requests = AjaxHelpers.requests(this), topicsView = createTopicsView(); - topicsView.collection.teamEvents.trigger('teams:update', { action: 'create' }); - topicsView.render(); + triggerUpdateEvent(topicsView); + AjaxHelpers.expectJsonRequestURL( + requests, + 'api/teams/topics', + { + course_id : 'my/course/id', + page : '1', + page_size : '5', // currently the page size is determined by the size of the collection + order_by : 'name' + } + ); + }); + + it('refreshes the topics staff creates a team and then joins it', function() { + var requests = AjaxHelpers.requests(this), + topicsView = createTopicsView(); + + // Staff are not immediately added to the team, but may choose to join after the create event. + triggerUpdateEvent(topicsView, true); AjaxHelpers.expectJsonRequestURL( requests, 'api/teams/topics', diff --git a/lms/djangoapps/teams/static/teams/js/spec_helpers/team_spec_helpers.js b/lms/djangoapps/teams/static/teams/js/spec_helpers/team_spec_helpers.js index 75f1bc2734..f5b51c63fb 100644 --- a/lms/djangoapps/teams/static/teams/js/spec_helpers/team_spec_helpers.js +++ b/lms/djangoapps/teams/static/teams/js/spec_helpers/team_spec_helpers.js @@ -3,9 +3,11 @@ define([ 'underscore', 'teams/js/collections/team', 'teams/js/collections/team_membership', -], function (Backbone, _, TeamCollection, TeamMembershipCollection) { + 'teams/js/collections/topic' +], function (Backbone, _, TeamCollection, TeamMembershipCollection, TopicCollection) { 'use strict'; var createMockPostResponse, createMockDiscussionResponse, createAnnotatedContentInfo, createMockThreadResponse, + createMockTopicData, createMockTopicCollection, testCourseID = 'course/1', testUser = 'testUser', testTeamDiscussionID = "12345", @@ -228,6 +230,38 @@ define([ ); }; + createMockTopicData = function (startIndex, stopIndex) { + return _.map(_.range(startIndex, stopIndex + 1), function (i) { + return { + "description": "description " + i, + "name": "topic " + i, + "id": "id " + i, + "team_count": 0 + }; + }); + }; + + createMockTopicCollection = function (topicData) { + topicData = topicData !== undefined ? topicData : createMockTopicData(1, 5); + + return new TopicCollection( + { + count: topicData.length + 1, + current_page: 1, + num_pages: 2, + start: 0, + results: topicData, + sort_order: "name" + }, + { + teamEvents: teamEvents, + course_id: 'my/course/id', + parse: true, + url: 'api/teams/topics' + } + ); + }; + return { teamEvents: teamEvents, testCourseID: testCourseID, @@ -244,6 +278,8 @@ define([ createMockDiscussionResponse: createMockDiscussionResponse, createAnnotatedContentInfo: createAnnotatedContentInfo, createMockThreadResponse: createMockThreadResponse, + createMockTopicData: createMockTopicData, + createMockTopicCollection: createMockTopicCollection, verifyCards: verifyCards }; }); From c71d61e5338663d1559e06365613f0f8fd1d423c Mon Sep 17 00:00:00 2001 From: Brian Beggs Date: Wed, 12 Aug 2015 16:57:26 -0400 Subject: [PATCH 26/80] Adding django command to create mongodb indexes --- AUTHORS | 1 + common/djangoapps/track/backends/mongodb.py | 4 +- .../xblock_django/management/__init__.py | 0 .../management/commands/__init__.py | 0 .../management/commands/ensure_indexes.py | 20 +++++ .../lib/xmodule/xmodule/contentstore/mongo.py | 78 +++++++++++++++---- .../xmodule/xmodule/modulestore/mongo/base.py | 22 +++--- .../split_mongo/mongo_connection.py | 3 +- 8 files changed, 99 insertions(+), 29 deletions(-) create mode 100644 common/djangoapps/xblock_django/management/__init__.py create mode 100644 common/djangoapps/xblock_django/management/commands/__init__.py create mode 100644 common/djangoapps/xblock_django/management/commands/ensure_indexes.py diff --git a/AUTHORS b/AUTHORS index df8acfeedb..76d80d2ed5 100644 --- a/AUTHORS +++ b/AUTHORS @@ -232,3 +232,4 @@ William Ono Dongwook Yoon Awais Qureshi Eric Fischer +Brian Beggs diff --git a/common/djangoapps/track/backends/mongodb.py b/common/djangoapps/track/backends/mongodb.py index 71845129af..fb891c386b 100644 --- a/common/djangoapps/track/backends/mongodb.py +++ b/common/djangoapps/track/backends/mongodb.py @@ -83,8 +83,8 @@ class MongoBackend(BaseBackend): # TODO: The creation of indexes can be moved to a Django # management command or equivalent. There is also an option to # run the indexing on the background, without locking. - self.collection.ensure_index([('time', pymongo.DESCENDING)]) - self.collection.ensure_index('event_type') + self.collection.ensure_index([('time', pymongo.DESCENDING)], background=True) + self.collection.ensure_index('event_type', background=True) def send(self, event): """Insert the event in to the Mongo collection""" diff --git a/common/djangoapps/xblock_django/management/__init__.py b/common/djangoapps/xblock_django/management/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/common/djangoapps/xblock_django/management/commands/__init__.py b/common/djangoapps/xblock_django/management/commands/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/common/djangoapps/xblock_django/management/commands/ensure_indexes.py b/common/djangoapps/xblock_django/management/commands/ensure_indexes.py new file mode 100644 index 0000000000..6a42454935 --- /dev/null +++ b/common/djangoapps/xblock_django/management/commands/ensure_indexes.py @@ -0,0 +1,20 @@ +""" +Creates Indexes on contentstore and modulestore databases. +""" +from django.core.management.base import BaseCommand + +from xmodule.contentstore.django import contentstore +from xmodule.modulestore.django import modulestore + + +class Command(BaseCommand): + """ + This command will create indexes on the stores used for both contentstore and modulestore. + """ + args = '' + help = 'Creates the indexes for ContentStore and ModuleStore databases' + + def handle(self, *args, **options): + contentstore().ensure_indexes() + modulestore().ensure_indexes() + print 'contentstore and modulestore indexes created!' diff --git a/common/lib/xmodule/xmodule/contentstore/mongo.py b/common/lib/xmodule/xmodule/contentstore/mongo.py index 7ff65a6250..6779f246d2 100644 --- a/common/lib/xmodule/xmodule/contentstore/mongo.py +++ b/common/lib/xmodule/xmodule/contentstore/mongo.py @@ -393,36 +393,80 @@ class MongoContentStore(ContentStore): return dbkey def ensure_indexes(self): - # Index needed thru 'category' by `_get_all_content_for_course` and others. That query also takes a sort # which can be `uploadDate`, `display_name`, - self.fs_files.create_index( - [('_id.org', pymongo.ASCENDING), ('_id.course', pymongo.ASCENDING), ('_id.name', pymongo.ASCENDING)], - sparse=True + [ + ('_id.tag', pymongo.ASCENDING), + ('_id.org', pymongo.ASCENDING), + ('_id.course', pymongo.ASCENDING), + ('_id.category', pymongo.ASCENDING) + ], + sparse=True, + background=True ) self.fs_files.create_index( - [('content_son.org', pymongo.ASCENDING), ('content_son.course', pymongo.ASCENDING), - ('content_son.name', pymongo.ASCENDING)], - sparse=True + [ + ('content_son.org', pymongo.ASCENDING), + ('content_son.course', pymongo.ASCENDING), + ('uploadDate', pymongo.DESCENDING) + ], + sparse=True, + background=True ) self.fs_files.create_index( - [('_id.org', pymongo.ASCENDING), ('_id.course', pymongo.ASCENDING), ('uploadDate', pymongo.ASCENDING)], - sparse=True + [ + ('_id.org', pymongo.ASCENDING), + ('_id.course', pymongo.ASCENDING), + ('_id.name', pymongo.ASCENDING) + ], + sparse=True, + background=True ) self.fs_files.create_index( - [('_id.org', pymongo.ASCENDING), ('_id.course', pymongo.ASCENDING), ('display_name', pymongo.ASCENDING)], - sparse=True + [ + ('content_son.org', pymongo.ASCENDING), + ('content_son.course', pymongo.ASCENDING), + ('content_son.name', pymongo.ASCENDING) + ], + sparse=True, + background=True ) self.fs_files.create_index( - [('content_son.org', pymongo.ASCENDING), ('content_son.course', pymongo.ASCENDING), - ('uploadDate', pymongo.ASCENDING)], - sparse=True + [ + ('_id.org', pymongo.ASCENDING), + ('_id.course', pymongo.ASCENDING), + ('uploadDate', pymongo.ASCENDING) + ], + sparse=True, + background=True ) self.fs_files.create_index( - [('content_son.org', pymongo.ASCENDING), ('content_son.course', pymongo.ASCENDING), - ('display_name', pymongo.ASCENDING)], - sparse=True + [ + ('_id.org', pymongo.ASCENDING), + ('_id.course', pymongo.ASCENDING), + ('display_name', pymongo.ASCENDING) + ], + sparse=True, + background=True + ) + self.fs_files.create_index( + [ + ('content_son.org', pymongo.ASCENDING), + ('content_son.course', pymongo.ASCENDING), + ('uploadDate', pymongo.ASCENDING) + ], + sparse=True, + background=True + ) + self.fs_files.create_index( + [ + ('content_son.org', pymongo.ASCENDING), + ('content_son.course', pymongo.ASCENDING), + ('display_name', pymongo.ASCENDING) + ], + sparse=True, + background=True ) diff --git a/common/lib/xmodule/xmodule/modulestore/mongo/base.py b/common/lib/xmodule/xmodule/modulestore/mongo/base.py index 898db379c0..550bf6961e 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo/base.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo/base.py @@ -1914,21 +1914,25 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo """ # Because we often query for some subset of the id, we define this index: - self.collection.create_index([ - ('_id.org', pymongo.ASCENDING), - ('_id.course', pymongo.ASCENDING), - ('_id.category', pymongo.ASCENDING), - ('_id.name', pymongo.ASCENDING), - ]) + self.collection.create_index( + [ + ('_id.tag', pymongo.ASCENDING), + ('_id.org', pymongo.ASCENDING), + ('_id.course', pymongo.ASCENDING), + ('_id.category', pymongo.ASCENDING), + ('_id.name', pymongo.ASCENDING), + ('_id.revision', pymongo.ASCENDING), + ], + background=True) # Because we often scan for all category='course' regardless of the value of the other fields: - self.collection.create_index('_id.category') + self.collection.create_index('_id.category', background=True) # Because lms calls get_parent_locations frequently (for path generation): - self.collection.create_index('definition.children', sparse=True) + self.collection.create_index('definition.children', sparse=True, background=True) # To allow prioritizing draft vs published material - self.collection.create_index('_id.revision') + self.collection.create_index('_id.revision', background=True) # Some overrides that still need to be implemented by subclasses def convert_to_draft(self, location, user_id): diff --git a/common/lib/xmodule/xmodule/modulestore/split_mongo/mongo_connection.py b/common/lib/xmodule/xmodule/modulestore/split_mongo/mongo_connection.py index f03e9cb8df..9995f0e6be 100644 --- a/common/lib/xmodule/xmodule/modulestore/split_mongo/mongo_connection.py +++ b/common/lib/xmodule/xmodule/modulestore/split_mongo/mongo_connection.py @@ -532,5 +532,6 @@ class MongoConnection(object): ('course', pymongo.ASCENDING), ('run', pymongo.ASCENDING) ], - unique=True + unique=True, + background=True ) From 350d15876ab1d813ac41e01c7a85f3b2a3df1d36 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Fri, 14 Aug 2015 14:21:50 -0400 Subject: [PATCH 27/80] Expand instructor definition Per discussions, for the purposes of the teams API, an 'instructor' is any of: -course staff -global staff -discussion privileged users This change will include the last case, which previously did not have instructor access. Changes will be documented on the teams API wiki: https://openedx.atlassian.net/wiki/display/TNL/Team+API Tests have also been added to confirm this functionality. TNL-2984 --- lms/djangoapps/teams/tests/test_views.py | 14 +++++- lms/djangoapps/teams/views.py | 59 +++++++++++++++--------- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/lms/djangoapps/teams/tests/test_views.py b/lms/djangoapps/teams/tests/test_views.py index b97252fadd..70efdbcc4d 100644 --- a/lms/djangoapps/teams/tests/test_views.py +++ b/lms/djangoapps/teams/tests/test_views.py @@ -375,6 +375,7 @@ class TestListTeamsAPI(TeamAPITestCase): ('student_enrolled', 200), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -467,7 +468,8 @@ class TestCreateTeamAPI(TeamAPITestCase): ('student_unenrolled', 403), ('student_enrolled_not_on_team', 200), ('staff', 200), - ('course_staff', 200) + ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -580,6 +582,7 @@ class TestDetailTeamAPI(TeamAPITestCase): ('student_enrolled', 200), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -617,6 +620,7 @@ class TestUpdateTeamAPI(TeamAPITestCase): ('student_enrolled', 403), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -631,6 +635,7 @@ class TestUpdateTeamAPI(TeamAPITestCase): ('student_enrolled', 404), ('staff', 404), ('course_staff', 404), + ('community_ta', 404), ) @ddt.unpack def test_access_bad_id(self, user, status): @@ -666,6 +671,7 @@ class TestListTopicsAPI(TeamAPITestCase): ('student_enrolled', 200), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -733,6 +739,7 @@ class TestDetailTopicAPI(TeamAPITestCase): ('student_enrolled', 200), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -768,6 +775,7 @@ class TestListMembershipAPI(TeamAPITestCase): ('student_enrolled_both_courses_other_team', 200), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -784,6 +792,7 @@ class TestListMembershipAPI(TeamAPITestCase): ('student_enrolled_both_courses_other_team', 200, True), ('staff', 200, True), ('course_staff', 200, True), + ('community_ta', 200, True), ) @ddt.unpack def test_access_by_username(self, user, status, has_content): @@ -874,6 +883,7 @@ class TestCreateMembershipAPI(TeamAPITestCase): ('student_enrolled_both_courses_other_team', 404), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -948,6 +958,7 @@ class TestDetailMembershipAPI(TeamAPITestCase): ('student_enrolled', 200), ('staff', 200), ('course_staff', 200), + ('community_ta', 200), ) @ddt.unpack def test_access(self, user, status): @@ -1013,6 +1024,7 @@ class TestDeleteMembershipAPI(TeamAPITestCase): ('student_enrolled', 204), ('staff', 204), ('course_staff', 204), + ('community_ta', 204), ) @ddt.unpack def test_access(self, user, status): diff --git a/lms/djangoapps/teams/views.py b/lms/djangoapps/teams/views.py index 91038b3145..2605a70322 100644 --- a/lms/djangoapps/teams/views.py +++ b/lms/djangoapps/teams/views.py @@ -51,7 +51,6 @@ from .serializers import ( ) from .errors import AlreadyOnTeamInCourse, NotEnrolledInCourseForTeam - TEAM_MEMBERSHIPS_PER_PAGE = 2 TOPICS_PER_PAGE = 12 @@ -120,7 +119,7 @@ class TeamsDashboardView(View): def has_team_api_access(user, course_key, access_username=None): """Returns True if the user has access to the Team API for the course given by `course_key`. The user must either be enrolled in the course, - be course staff, or be global staff. + be course staff, be global staff, or have discussion privileges. Args: user (User): The user to check access for. @@ -134,6 +133,8 @@ def has_team_api_access(user, course_key, access_username=None): return True if CourseStaffRole(course_key).has_user(user): return True + if has_discussion_privileges(user, course_key): + return True if not access_username or access_username == user.username: return CourseEnrollment.is_enrolled(user, course_key) return False @@ -250,8 +251,9 @@ class TeamsListView(ExpandableFieldViewMixin, GenericAPIView): If the user is not logged in, a 401 error is returned. - If the user is not enrolled in the course, or is not course or - global staff, a 403 error is returned. + If the user is not enrolled in the course, is not course or + global staff, or does not have discussion privileges a 403 error + is returned. If the course_id is not valid or extra fields are included in the request, a 400 error is returned. @@ -467,8 +469,8 @@ class TeamsDetailView(ExpandableFieldViewMixin, RetrievePatchAPIView): If the user is anonymous or inactive, a 401 is returned. If the user is logged in and the team does not exist, a 404 is returned. - If the user is not course or global staff and the team does exist, - a 403 is returned. + If the user is not course or global staff, does not have discussion + privileges, and the team does exist, a 403 is returned. If "application/merge-patch+json" is not the specified content type, a 415 error is returned. @@ -485,8 +487,20 @@ class TeamsDetailView(ExpandableFieldViewMixin, RetrievePatchAPIView): """Returns true if the user is enrolled or is staff.""" return has_team_api_access(request.user, obj.course_id) + class IsStaffOrPrivilegedOrReadOnly(IsStaffOrReadOnly): + """Permission that checks to see if the user is global staff, course + staff, or has discussion privileges. If none of those conditions are + met, only read access will be granted. + """ + + def has_object_permission(self, request, view, obj): + return ( + has_discussion_privileges(request.user, obj.course_id) or + IsStaffOrReadOnly.has_object_permission(self, request, view, obj) + ) + authentication_classes = (OAuth2Authentication, SessionAuthentication) - permission_classes = (permissions.IsAuthenticated, IsStaffOrReadOnly, IsEnrolledOrIsStaff,) + permission_classes = (permissions.IsAuthenticated, IsStaffOrPrivilegedOrReadOnly, IsEnrolledOrIsStaff,) lookup_field = 'team_id' serializer_class = CourseTeamSerializer parser_classes = (MergePatchParser,) @@ -765,8 +779,9 @@ class MembershipListView(ExpandableFieldViewMixin, GenericAPIView): **Response Values for POST** Any logged in user enrolled in a course can enroll themselves in a - team in the course. Course and global staff can enroll any user in - a team, with a few exceptions noted below. + team in the course. Course staff, global staff, and discussion + privileged users can enroll any user in a team, with a few + exceptions noted below. If the user is not logged in and active, a 401 error is returned. @@ -775,11 +790,11 @@ class MembershipListView(ExpandableFieldViewMixin, GenericAPIView): If the specified team does not exist, a 404 error is returned. - If the user is not staff and is not enrolled in the course - associated with the team they are trying to join, or if they are - trying to add a user other than themselves to a team, a 404 error - is returned. This is to prevent leaking information about the - existence of teams and users. + If the user is not staff, does not have discussion privileges, + and is not enrolled in the course associated with the team they + are trying to join, or if they are trying to add a user other + than themselves to a team, a 404 error is returned. This is to + prevent leaking information about the existence of teams and users. If the specified user does not exist, a 404 error is returned. @@ -789,7 +804,8 @@ class MembershipListView(ExpandableFieldViewMixin, GenericAPIView): If the user is not enrolled in the course associated with the team they are trying to join, a 400 error is returned. This can occur - when a staff user posts a request adding another user to a team. + when a staff or discussion privileged user posts a request adding + another user to a team. """ authentication_classes = (OAuth2Authentication, SessionAuthentication) @@ -961,18 +977,19 @@ class MembershipDetailView(ExpandableFieldViewMixin, GenericAPIView): **Response Values for DELETE** Any logged in user enrolled in a course can remove themselves from - a team in the course. Course and global staff can remove any user - from a team. Successfully deleting a membership will return a 204 - response with no content. + a team in the course. Course staff, global staff, and discussion + privileged users can remove any user from a team. Successfully + deleting a membership will return a 204 response with no content. If the user is not logged in and active, a 401 error is returned. If the specified team or username does not exist, a 404 error is returned. - If the user is not staff and is attempting to remove another user - from a team, a 404 error is returned. This prevents leaking - information about team and user existence. + If the user is not staff or a discussion privileged user and is + attempting to remove another user from a team, a 404 error is + returned. This prevents leaking information about team and user + existence. If the membership does not exist, a 404 error is returned. """ From 53f1b2de0c0a76f5ce2acd027a465656e002555c Mon Sep 17 00:00:00 2001 From: Zia Fazal Date: Tue, 18 Aug 2015 13:37:06 +0500 Subject: [PATCH 28/80] fix for organization id drop down not populating --- lms/djangoapps/certificates/admin.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/certificates/admin.py b/lms/djangoapps/certificates/admin.py index 46f8b037a0..f3be84a074 100644 --- a/lms/djangoapps/certificates/admin.py +++ b/lms/djangoapps/certificates/admin.py @@ -18,10 +18,14 @@ class CertificateTemplateForm(forms.ModelForm): """ Django admin form for CertificateTemplate model """ - organizations = get_organizations() - org_choices = [(org["id"], org["name"]) for org in organizations] - org_choices.insert(0, ('', 'None')) - organization_id = forms.TypedChoiceField(choices=org_choices, required=False, coerce=int, empty_value=None) + def __init__(self, *args, **kwargs): + super(CertificateTemplateForm, self).__init__(*args, **kwargs) + organizations = get_organizations() + org_choices = [(org["id"], org["name"]) for org in organizations] + org_choices.insert(0, ('', 'None')) + self.fields['organization_id'] = forms.TypedChoiceField( + choices=org_choices, required=False, coerce=int, empty_value=None + ) class Meta(object): """ Meta definitions for CertificateTemplateForm """ From 722c5bb90dc9711870362cbcd1dc61aa9600a5e0 Mon Sep 17 00:00:00 2001 From: Ahsan Ulhaq Date: Tue, 18 Aug 2015 17:42:03 +0500 Subject: [PATCH 29/80] Style issues on the credit status in the dashboard ECOM-2117 --- lms/static/js/dashboard/credit.js | 2 +- lms/static/sass/multicourse/_dashboard.scss | 25 +++++++++++-------- .../dashboard/_dashboard_credit_info.html | 5 ++-- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lms/static/js/dashboard/credit.js b/lms/static/js/dashboard/credit.js index 2173ffc792..71c7733671 100644 --- a/lms/static/js/dashboard/credit.js +++ b/lms/static/js/dashboard/credit.js @@ -31,7 +31,7 @@ 'username': username }; $.ajax({ - url: 'api/credit/v1/provider/' + provider_id + '/request/', + url: 'api/credit/v1/providers/' + provider_id + '/request/', type: 'POST', headers: { 'X-CSRFToken': $.cookie('csrftoken') diff --git a/lms/static/sass/multicourse/_dashboard.scss b/lms/static/sass/multicourse/_dashboard.scss index cafc33646a..3066cc570c 100644 --- a/lms/static/sass/multicourse/_dashboard.scss +++ b/lms/static/sass/multicourse/_dashboard.scss @@ -548,16 +548,7 @@ padding: 0; } - .credit-eligibility-msg { - @include float(left); - margin-top: 10px; - } - - .purchase_credit { - @include float(right); - } - - .pending-credit-btn{ + .credit-btn{ @include float(right); } @@ -758,6 +749,20 @@ font-weight: bold; } } + .credit-eligibility-msg { + @include float(left); + margin-top: 10px; + } + + .credit-request-pending-msg { + @include float(left); + margin-top: 10px; + } + + .credit-request-approved-msg{ + width: flex-grid(10, 12); + @include float(left); + } .actions { diff --git a/lms/templates/dashboard/_dashboard_credit_info.html b/lms/templates/dashboard/_dashboard_credit_info.html index 2b47712de7..9eceea6daa 100644 --- a/lms/templates/dashboard/_dashboard_credit_info.html +++ b/lms/templates/dashboard/_dashboard_credit_info.html @@ -22,6 +22,7 @@ % if not credit_status["purchased"] and not credit_status["error"] :

      ${_("You are now eligible for credit. Congratulations!")} +

      ${_("Get credit")} @@ -54,12 +55,12 @@

      ## Translators: link_to_provider_site is a link to an external webpage. The text of the link will be the name of a ## credit provider, such as 'State University' or 'Happy Fun Company' - ${_("Your credit has been processed and approved. Congratulations. Please see {link_to_provider_site} for more information.").format( + ${_("Your credit has been processed and approved. Congratulations!. Please see {link_to_provider_site} for more information.").format( link_to_provider_site=provider_link, ) }

      - ${_("Access credit")} + ${_("Access credit")} % elif credit_status["request_status"] == "rejected" and not credit_status["error"] :

      ## Translators: link_to_provider_site is a link to an external webpage. The text of the link will be the name of a From ab3b2ebd9a14cb821b3d29fe30017cf3530bdd53 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Mon, 17 Aug 2015 17:09:25 -0400 Subject: [PATCH 30/80] Fixing problematic bok_choy test By moving the team_page.first_member_username access to occur before click_first_profile_image() is called, we avoid a potential issue where the wrapper() method defined in page_object.py, which decorates the property, calls into _verify_page() and raises a WrongPageError. --- common/test/acceptance/tests/lms/test_teams.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/test/acceptance/tests/lms/test_teams.py b/common/test/acceptance/tests/lms/test_teams.py index dfa521ac06..5844f0e4c9 100644 --- a/common/test/acceptance/tests/lms/test_teams.py +++ b/common/test/acceptance/tests/lms/test_teams.py @@ -954,9 +954,11 @@ class TeamPageTest(TeamsTabBase): self._set_team_configuration_and_membership() self.team_page.visit() + learner_name = self.team_page.first_member_username + self.team_page.click_first_profile_image() - learner_profile_page = LearnerProfilePage(self.browser, self.team_page.first_member_username) + learner_profile_page = LearnerProfilePage(self.browser, learner_name) learner_profile_page.wait_for_page() learner_profile_page.wait_for_field('username') self.assertTrue(learner_profile_page.field_is_visible('username')) From 207ce4eda545539a226edcd3425b935d489b76ae Mon Sep 17 00:00:00 2001 From: Clinton Blackburn Date: Fri, 14 Aug 2015 17:25:10 -0400 Subject: [PATCH 31/80] Resolved decompression errors during tests Note that this change will require deleting all CourseStructure data. This data should be regenerated using the generate_course_structure management command. XCOM-513 --- common/djangoapps/util/models.py | 40 +++++++++++--------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/common/djangoapps/util/models.py b/common/djangoapps/util/models.py index 1c1ade043e..ff353a8039 100644 --- a/common/djangoapps/util/models.py +++ b/common/djangoapps/util/models.py @@ -4,12 +4,10 @@ import gzip import logging from django.db import models -from django.db.models.signals import post_init from django.utils.text import compress_string from config_models.models import ConfigurationModel - logger = logging.getLogger(__name__) # pylint: disable=invalid-name @@ -25,27 +23,31 @@ class RateLimitConfiguration(ConfigurationModel): pass -def uncompress_string(s): +def decompress_string(value): """ Helper function to reverse CompressedTextField.get_prep_value. """ try: - val = s.encode('utf').decode('base64') + val = value.encode('utf').decode('base64') zbuf = cStringIO.StringIO(val) zfile = gzip.GzipFile(fileobj=zbuf) ret = zfile.read() zfile.close() except Exception as e: logger.error('String decompression failed. There may be corrupted data in the database: %s', e) - ret = s + ret = value return ret class CompressedTextField(models.TextField): - """transparently compress data before hitting the db and uncompress after fetching""" + """ TextField that transparently compresses data when saving to the database, and decompresses the data + when retrieving it from the database. """ + + __metaclass__ = models.SubfieldBase def get_prep_value(self, value): + """ Compress the text data. """ if value is not None: if isinstance(value, unicode): value = value.encode('utf8') @@ -53,28 +55,12 @@ class CompressedTextField(models.TextField): value = value.encode('base64').decode('utf8') return value - def post_init(self, instance=None, **kwargs): # pylint: disable=unused-argument - value = self._get_val_from_obj(instance) - if value: - setattr(instance, self.attname, value) + def to_python(self, value): + """ Decompresses the value from the database. """ + if isinstance(value, unicode): + value = decompress_string(value) - def contribute_to_class(self, cls, name): - super(CompressedTextField, self).contribute_to_class(cls, name) - post_init.connect(self.post_init, sender=cls) - - def _get_val_from_obj(self, obj): - if obj: - value = uncompress_string(getattr(obj, self.attname)) - if value is not None: - try: - value = value.decode('utf8') - except UnicodeDecodeError: - pass - return value - else: - return self.get_default() - else: - return self.get_default() + return value def south_field_triple(self): """Returns a suitable description of this field for South.""" From ce8f311256d0ff861deb1ab60b616b1cb66b060c Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Fri, 14 Aug 2015 16:01:36 -0400 Subject: [PATCH 32/80] Add a new last_activity_at field. TNL-3068 --- ...ussion_topic_id__add_field_courseteam_l.py | 94 +++++++++++++++++++ lms/djangoapps/teams/models.py | 13 ++- lms/djangoapps/teams/serializers.py | 7 +- lms/djangoapps/teams/tests/factories.py | 7 ++ lms/djangoapps/teams/tests/test_models.py | 20 +++- lms/djangoapps/teams/tests/test_views.py | 13 ++- lms/djangoapps/teams/views.py | 12 +++ 7 files changed, 158 insertions(+), 8 deletions(-) create mode 100644 lms/djangoapps/teams/migrations/0004_auto__add_field_courseteam_discussion_topic_id__add_field_courseteam_l.py diff --git a/lms/djangoapps/teams/migrations/0004_auto__add_field_courseteam_discussion_topic_id__add_field_courseteam_l.py b/lms/djangoapps/teams/migrations/0004_auto__add_field_courseteam_discussion_topic_id__add_field_courseteam_l.py new file mode 100644 index 0000000000..024c06d6e6 --- /dev/null +++ b/lms/djangoapps/teams/migrations/0004_auto__add_field_courseteam_discussion_topic_id__add_field_courseteam_l.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +import pytz +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'CourseTeam.last_activity_at' + db.add_column('teams_courseteam', 'last_activity_at', + self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2015, 8, 17, 0, 0).replace(tzinfo=pytz.utc)), + keep_default=False) + + # Adding field 'CourseTeamMembership.last_activity_at' + db.add_column('teams_courseteammembership', 'last_activity_at', + self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2015, 8, 17, 0, 0).replace(tzinfo=pytz.utc)), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'CourseTeam.last_activity_at' + db.delete_column('teams_courseteam', 'last_activity_at') + + # Deleting field 'CourseTeamMembership.last_activity_at' + db.delete_column('teams_courseteammembership', 'last_activity_at') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'teams.courseteam': { + 'Meta': {'object_name': 'CourseTeam'}, + 'country': ('django_countries.fields.CountryField', [], {'max_length': '2', 'blank': 'True'}), + 'course_id': ('xmodule_django.models.CourseKeyField', [], {'max_length': '255', 'db_index': 'True'}), + 'date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '300'}), + 'discussion_topic_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'language': ('student.models.LanguageField', [], {'max_length': '16', 'blank': 'True'}), + 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}), + 'team_id': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}), + 'topic_id': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'db_index': 'True', 'related_name': "'teams'", 'symmetrical': 'False', 'through': "orm['teams.CourseTeamMembership']", 'to': "orm['auth.User']"}) + }, + 'teams.courseteammembership': { + 'Meta': {'unique_together': "(('user', 'team'),)", 'object_name': 'CourseTeamMembership'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_activity_at': ('django.db.models.fields.DateTimeField', [], {}), + 'team': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'membership'", 'to': "orm['teams.CourseTeam']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + } + } + + complete_apps = ['teams'] diff --git a/lms/djangoapps/teams/models.py b/lms/djangoapps/teams/models.py index 6e2a4f012e..a0d872e1ae 100644 --- a/lms/djangoapps/teams/models.py +++ b/lms/djangoapps/teams/models.py @@ -1,6 +1,8 @@ """Django models related to teams functionality.""" from uuid import uuid4 +import pytz +from datetime import datetime from django.contrib.auth.models import User from django.db import models @@ -23,13 +25,13 @@ class CourseTeam(models.Model): course_id = CourseKeyField(max_length=255, db_index=True) topic_id = models.CharField(max_length=255, db_index=True, blank=True) date_created = models.DateTimeField(auto_now_add=True) - # last_activity is computed through a query description = models.CharField(max_length=300) country = CountryField(blank=True) language = LanguageField( blank=True, help_text=ugettext_lazy("Optional language the team uses as ISO 639-1 code."), ) + last_activity_at = models.DateTimeField() users = models.ManyToManyField(User, db_index=True, related_name='teams', through='CourseTeamMembership') @classmethod @@ -62,6 +64,7 @@ class CourseTeam(models.Model): description=description, country=country if country else '', language=language if language else '', + last_activity_at=datetime.utcnow().replace(tzinfo=pytz.utc) ) return course_team @@ -88,6 +91,14 @@ class CourseTeamMembership(models.Model): user = models.ForeignKey(User) team = models.ForeignKey(CourseTeam, related_name='membership') date_joined = models.DateTimeField(auto_now_add=True) + last_activity_at = models.DateTimeField() + + def save(self, *args, **kwargs): + """ Customize save method to set the last_activity_at if it does not currently exist. """ + if not self.last_activity_at: + self.last_activity_at = datetime.utcnow().replace(tzinfo=pytz.utc) + + super(CourseTeamMembership, self).save(*args, **kwargs) @classmethod def get_memberships(cls, username=None, course_ids=None, team_id=None): diff --git a/lms/djangoapps/teams/serializers.py b/lms/djangoapps/teams/serializers.py index d9262ddbb2..4d9b59e3c9 100644 --- a/lms/djangoapps/teams/serializers.py +++ b/lms/djangoapps/teams/serializers.py @@ -58,9 +58,10 @@ class CourseTeamSerializer(serializers.ModelSerializer): "description", "country", "language", + "last_activity_at", "membership", ) - read_only_fields = ("course_id", "date_created", "discussion_topic_id") + read_only_fields = ("course_id", "date_created", "discussion_topic_id", "last_activity_at") class CourseTeamCreationSerializer(serializers.ModelSerializer): @@ -118,8 +119,8 @@ class MembershipSerializer(serializers.ModelSerializer): class Meta(object): """Defines meta information for the ModelSerializer.""" model = CourseTeamMembership - fields = ("user", "team", "date_joined") - read_only_fields = ("date_joined",) + fields = ("user", "team", "date_joined", "last_activity_at") + read_only_fields = ("date_joined", "last_activity_at") class PaginatedMembershipSerializer(PaginationSerializer): diff --git a/lms/djangoapps/teams/tests/factories.py b/lms/djangoapps/teams/tests/factories.py index 1a491d296a..07077a5161 100644 --- a/lms/djangoapps/teams/tests/factories.py +++ b/lms/djangoapps/teams/tests/factories.py @@ -1,5 +1,7 @@ """Factories for testing the Teams API.""" +import pytz +from datetime import datetime from uuid import uuid4 import factory @@ -8,6 +10,9 @@ from factory.django import DjangoModelFactory from ..models import CourseTeam, CourseTeamMembership +LAST_ACTIVITY_AT = datetime(2015, 8, 15, 0, 0, 0, tzinfo=pytz.utc) + + class CourseTeamFactory(DjangoModelFactory): """Factory for CourseTeams. @@ -20,8 +25,10 @@ class CourseTeamFactory(DjangoModelFactory): discussion_topic_id = factory.LazyAttribute(lambda a: uuid4().hex) name = "Awesome Team" description = "A simple description" + last_activity_at = LAST_ACTIVITY_AT class CourseTeamMembershipFactory(DjangoModelFactory): """Factory for CourseTeamMemberships.""" FACTORY_FOR = CourseTeamMembership + last_activity_at = LAST_ACTIVITY_AT diff --git a/lms/djangoapps/teams/tests/test_models.py b/lms/djangoapps/teams/tests/test_models.py index ee6f523517..ba82f7f053 100644 --- a/lms/djangoapps/teams/tests/test_models.py +++ b/lms/djangoapps/teams/tests/test_models.py @@ -29,9 +29,23 @@ class TeamMembershipTest(SharedModuleStoreTestCase): self.team1 = CourseTeamFactory(course_id=COURSE_KEY1, team_id='team1') self.team2 = CourseTeamFactory(course_id=COURSE_KEY2, team_id='team2') - self.team_membership11 = CourseTeamMembershipFactory(user=self.user1, team=self.team1) - self.team_membership12 = CourseTeamMembershipFactory(user=self.user2, team=self.team1) - self.team_membership21 = CourseTeamMembershipFactory(user=self.user1, team=self.team2) + self.team_membership11 = CourseTeamMembership(user=self.user1, team=self.team1) + self.team_membership11.save() + self.team_membership12 = CourseTeamMembership(user=self.user2, team=self.team1) + self.team_membership12.save() + self.team_membership21 = CourseTeamMembership(user=self.user1, team=self.team2) + self.team_membership21.save() + + def test_membership_last_activity_set(self): + current_last_activity = self.team_membership11.last_activity_at + # Assert that the first save in the setUp sets a value. + self.assertIsNotNone(current_last_activity) + + self.team_membership11.save() + + # Verify that we only change the last activity_at when it doesn't + # already exist. + self.assertEqual(self.team_membership11.last_activity_at, current_last_activity) @ddt.data( (None, None, None, 3), diff --git a/lms/djangoapps/teams/tests/test_views.py b/lms/djangoapps/teams/tests/test_views.py index b97252fadd..26c0ff9048 100644 --- a/lms/djangoapps/teams/tests/test_views.py +++ b/lms/djangoapps/teams/tests/test_views.py @@ -1,6 +1,9 @@ # -*- coding: utf-8 -*- """Tests for the teams API at the HTTP request level.""" import json +import pytz +from datetime import datetime +from dateutil import parser import ddt @@ -13,7 +16,7 @@ from courseware.tests.factories import StaffFactory from student.tests.factories import UserFactory, AdminFactory, CourseEnrollmentFactory from student.models import CourseEnrollment from xmodule.modulestore.tests.factories import CourseFactory -from .factories import CourseTeamFactory +from .factories import CourseTeamFactory, LAST_ACTIVITY_AT from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase from django_comment_common.models import Role, FORUM_ROLE_COMMUNITY_TA @@ -540,6 +543,13 @@ class TestCreateTeamAPI(TeamAPITestCase): team_membership = team['membership'] del team['membership'] + # verify that it's been set to a time today. + self.assertEqual( + parser.parse(team['last_activity_at']).date(), + datetime.utcnow().replace(tzinfo=pytz.utc).date() + ) + del team['last_activity_at'] + # Verify that the creating user gets added to the team. self.assertEqual(len(team_membership), 1) member = team_membership[0]['user'] @@ -587,6 +597,7 @@ class TestDetailTeamAPI(TeamAPITestCase): if status == 200: self.assertEqual(team['description'], self.test_team_1.description) self.assertEqual(team['discussion_topic_id'], self.test_team_1.discussion_topic_id) + self.assertEqual(parser.parse(team['last_activity_at']), LAST_ACTIVITY_AT) def test_does_not_exist(self): self.get_team_detail('no_such_team', 404) diff --git a/lms/djangoapps/teams/views.py b/lms/djangoapps/teams/views.py index 91038b3145..e0f12a8213 100644 --- a/lms/djangoapps/teams/views.py +++ b/lms/djangoapps/teams/views.py @@ -221,6 +221,9 @@ class TeamsListView(ExpandableFieldViewMixin, GenericAPIView): * language: Optionally specifies which language the team is associated with. + * last_activity_at: The date of the last activity of any team member + within the team. + * membership: A list of the users that are members of the team. See membership endpoint for more detail. @@ -449,6 +452,9 @@ class TeamsDetailView(ExpandableFieldViewMixin, RetrievePatchAPIView): * membership: A list of the users that are members of the team. See membership endpoint for more detail. + * last_activity_at: The date of the last activity of any team member + within the team. + For all text fields, clients rendering the values should take care to HTML escape them to avoid script injections, as the data is stored exactly as specified. The intention is that plain text is @@ -740,6 +746,9 @@ class MembershipListView(ExpandableFieldViewMixin, GenericAPIView): * date_joined: The date and time the membership was created. + * last_activity_at: The date of the last activity of the user + within the team. + For all text fields, clients rendering the values should take care to HTML escape them to avoid script injections, as the data is stored exactly as specified. The intention is that plain text is @@ -942,6 +951,9 @@ class MembershipDetailView(ExpandableFieldViewMixin, GenericAPIView): * date_joined: The date and time the membership was created. + * last_activity_at: The date of the last activity of any team member + within the team. + For all text fields, clients rendering the values should take care to HTML escape them to avoid script injections, as the data is stored exactly as specified. The intention is that plain text is From e4a1ebd11c78ad9a6112698e6fe89e02c1759b78 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Tue, 18 Aug 2015 09:15:32 -0700 Subject: [PATCH 33/80] Specify course key when retrieving credit requirements. Fix an exception that could occur if a user had completed the final grade credit requirement in > 1 course. --- .../core/djangoapps/credit/api/provider.py | 1 + .../core/djangoapps/credit/tests/test_api.py | 28 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/openedx/core/djangoapps/credit/api/provider.py b/openedx/core/djangoapps/credit/api/provider.py index 7e87966d1d..2f8e0fcb62 100644 --- a/openedx/core/djangoapps/credit/api/provider.py +++ b/openedx/core/djangoapps/credit/api/provider.py @@ -246,6 +246,7 @@ def create_credit_request(course_key, provider_id, username): username=username, requirement__namespace="grade", requirement__name="grade", + requirement__course__course_key=course_key, status="satisfied" ).reason["final_grade"] except (CreditRequirementStatus.DoesNotExist, TypeError, KeyError): diff --git a/openedx/core/djangoapps/credit/tests/test_api.py b/openedx/core/djangoapps/credit/tests/test_api.py index c13a3e249a..b86b74fff2 100644 --- a/openedx/core/djangoapps/credit/tests/test_api.py +++ b/openedx/core/djangoapps/credit/tests/test_api.py @@ -76,11 +76,12 @@ class CreditApiTestBase(ModuleStoreTestCase): super(CreditApiTestBase, self).setUp() self.course_key = CourseKey.from_string("edX/DemoX/Demo_Course") - def add_credit_course(self, enabled=True): + def add_credit_course(self, course_key=None, enabled=True): """Mark the course as a credit """ - credit_course = CreditCourse.objects.create(course_key=self.course_key, enabled=enabled) + course_key = course_key or self.course_key + credit_course = CreditCourse.objects.create(course_key=course_key, enabled=enabled) - CreditProvider.objects.create( + CreditProvider.objects.get_or_create( provider_id=self.PROVIDER_ID, display_name=self.PROVIDER_NAME, provider_url=self.PROVIDER_URL, @@ -684,6 +685,19 @@ class CreditProviderIntegrationApiTests(CreditApiTestBase): with self.assertRaises(UserIsNotEligible): api.create_credit_request(self.course_key, self.PROVIDER_ID, self.USER_INFO['username']) + def test_create_credit_request_for_second_course(self): + # Create the first request + first_request = api.create_credit_request(self.course_key, self.PROVIDER_ID, self.USER_INFO["username"]) + + # Create a request for a second course + other_course_key = CourseKey.from_string("edX/other/2015") + self._configure_credit(course_key=other_course_key) + second_request = api.create_credit_request(other_course_key, self.PROVIDER_ID, self.USER_INFO["username"]) + + # Check that the requests have the correct course number + self.assertEqual(first_request["parameters"]["course_num"], self.course_key.course) + self.assertEqual(second_request["parameters"]["course_num"], other_course_key.course) + def test_create_request_null_mailing_address(self): # User did not specify a mailing address self.user.profile.mailing_address = None @@ -735,7 +749,7 @@ class CreditProviderIntegrationApiTests(CreditApiTestBase): requests = api.get_credit_requests_for_user(self.USER_INFO["username"]) self.assertEqual(requests, []) - def _configure_credit(self): + def _configure_credit(self, course_key=None): """ Configure a credit course and its requirements. @@ -743,7 +757,9 @@ class CreditProviderIntegrationApiTests(CreditApiTestBase): that the user has satisfied. """ - credit_course = self.add_credit_course() + course_key = course_key or self.course_key + + credit_course = self.add_credit_course(course_key=course_key) requirement = CreditRequirement.objects.create( course=credit_course, namespace="grade", @@ -760,7 +776,7 @@ class CreditProviderIntegrationApiTests(CreditApiTestBase): CreditEligibility.objects.create( username=self.USER_INFO['username'], - course=CreditCourse.objects.get(course_key=self.course_key) + course=CreditCourse.objects.get(course_key=course_key) ) def _assert_credit_status(self, expected_status): From c3234c1cfc8a5891238531ed582849b27228c290 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 18 Aug 2015 14:38:43 -0400 Subject: [PATCH 34/80] Upgrade Django to 1.4.22 https://www.djangoproject.com/weblog/2015/aug/18/security-releases/ --- requirements/edx/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 5f6b84ce9f..0a0fc2707b 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -34,7 +34,7 @@ django-storages==1.1.5 django-threaded-multihost==1.4-1 django-method-override==0.1.0 djangorestframework==2.3.14 -django==1.4.21 +django==1.4.22 elasticsearch==0.4.5 facebook-sdk==0.4.0 feedparser==5.1.3 From 2aa7e266cf2184f659fe9b808d77c23e82ade327 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Wed, 3 Jun 2015 16:46:30 -0400 Subject: [PATCH 35/80] Clean up the Django ORM usage a bit --- lms/templates/discussion/_user_profile.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lms/templates/discussion/_user_profile.html b/lms/templates/discussion/_user_profile.html index 72494cfc50..ea732716f0 100644 --- a/lms/templates/discussion/_user_profile.html +++ b/lms/templates/discussion/_user_profile.html @@ -3,7 +3,8 @@

      diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py index 3cb3f3ab9a..c65c7b3243 100644 --- a/common/djangoapps/student/models.py +++ b/common/djangoapps/student/models.py @@ -35,6 +35,7 @@ from django.db.models.signals import pre_save, post_save from django.dispatch import receiver, Signal from django.core.exceptions import ObjectDoesNotExist from django.utils.translation import ugettext_noop +from django.core.cache import cache from django_countries.fields import CountryField import dogstats_wrapper as dog_stats_api from eventtracking import tracker @@ -846,6 +847,9 @@ class CourseEnrollment(models.Model): # Maintain a history of requirement status updates for auditing purposes history = HistoricalRecords() + # cache key format e.g enrollment...mode = 'honor' + COURSE_ENROLLMENT_CACHE_KEY = u"enrollment.{}.{}.mode" + class Meta(object): # pylint: disable=missing-docstring unique_together = (('user', 'course_id'),) ordering = ('user', 'course_id') @@ -1338,6 +1342,49 @@ class CourseEnrollment(models.Model): """ return CourseMode.is_verified_slug(self.mode) + @classmethod + def is_enrolled_as_verified(cls, user, course_key): + """ + Check whether the course enrollment is for a verified mode. + + Arguments: + user (User): The user object. + course_key (CourseKey): The identifier for the course. + + Returns: bool + + """ + enrollment = cls.get_enrollment(user, course_key) + return ( + enrollment is not None and + enrollment.is_active and + enrollment.is_verified_enrollment() + ) + + @classmethod + def cache_key_name(cls, user_id, course_key): + """Return cache key name to be used to cache current configuration. + Args: + user_id(int): Id of user. + course_key(unicode): Unicode of course key + + Returns: + Unicode cache key + """ + return cls.COURSE_ENROLLMENT_CACHE_KEY.format(user_id, unicode(course_key)) + + +@receiver(models.signals.post_save, sender=CourseEnrollment) +@receiver(models.signals.post_delete, sender=CourseEnrollment) +def invalidate_enrollment_mode_cache(sender, instance, **kwargs): # pylint: disable=unused-argument, invalid-name + """Invalidate the cache of CourseEnrollment model. """ + + cache_key = CourseEnrollment.cache_key_name( + instance.user.id, + unicode(instance.course_id) + ) + cache.delete(cache_key) + class ManualEnrollmentAudit(models.Model): """ diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 405000c06b..01cf4de5cd 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -1533,3 +1533,39 @@ class CourseDescriptor(CourseFields, SequenceDescriptor, LicenseMixin): Returns the topics that have been configured for teams for this course, else None. """ return self.teams_configuration.get('topics', None) + + def get_user_partitions_for_scheme(self, scheme): + """ + Retrieve all user partitions defined in the course for a particular + partition scheme. + + Arguments: + scheme (object): The user partition scheme. + + Returns: + list of `UserPartition` + + """ + return [ + p for p in self.user_partitions + if p.scheme == scheme + ] + + def set_user_partitions_for_scheme(self, partitions, scheme): + """ + Set the user partitions for a particular scheme. + + Preserves partitions associated with other schemes. + + Arguments: + scheme (object): The user partition scheme. + + Returns: + list of `UserPartition` + + """ + other_partitions = [ + p for p in self.user_partitions # pylint: disable=access-member-before-definition + if p.scheme != scheme + ] + self.user_partitions = other_partitions + partitions # pylint: disable=attribute-defined-outside-init diff --git a/common/lib/xmodule/xmodule/modulestore/__init__.py b/common/lib/xmodule/xmodule/modulestore/__init__.py index 42aec05184..cb64b0ba6f 100644 --- a/common/lib/xmodule/xmodule/modulestore/__init__.py +++ b/common/lib/xmodule/xmodule/modulestore/__init__.py @@ -101,6 +101,9 @@ class ModuleStoreEnum(object): # user ID to use for tests that do not have a django user available test = -3 + # user ID for automatic update by the system + system = -4 + class SortOrder(object): """ Values for sorting asset metadata. @@ -264,6 +267,12 @@ class BulkOperationsMixin(object): if not bulk_ops_record.active: return + # Send the pre-publish signal within the context of the bulk operation. + # Writes performed by signal handlers will be persisted when the bulk + # operation ends. + if emit_signals and bulk_ops_record.is_root: + self.send_pre_publish_signal(bulk_ops_record, structure_key) + bulk_ops_record.unnest() # If this wasn't the outermost context, then don't close out the @@ -293,6 +302,14 @@ class BulkOperationsMixin(object): """ return self._get_bulk_ops_record(course_key, ignore_case).active + def send_pre_publish_signal(self, bulk_ops_record, course_id): + """ + Send a signal just before items are published in the course. + """ + signal_handler = getattr(self, "signal_handler", None) + if signal_handler and bulk_ops_record.has_publish_item: + signal_handler.send("pre_publish", course_key=course_id) + def send_bulk_published_signal(self, bulk_ops_record, course_id): """ Sends out the signal that items have been published from within this course. diff --git a/common/lib/xmodule/xmodule/modulestore/django.py b/common/lib/xmodule/xmodule/modulestore/django.py index 8b91916b45..9f61a4e8d6 100644 --- a/common/lib/xmodule/xmodule/modulestore/django.py +++ b/common/lib/xmodule/xmodule/modulestore/django.py @@ -86,11 +86,13 @@ class SignalHandler(object): almost no work. Its main job is to kick off the celery task that will do the actual work. """ + pre_publish = django.dispatch.Signal(providing_args=["course_key"]) course_published = django.dispatch.Signal(providing_args=["course_key"]) course_deleted = django.dispatch.Signal(providing_args=["course_key"]) library_updated = django.dispatch.Signal(providing_args=["library_key"]) _mapping = { + "pre_publish": pre_publish, "course_published": course_published, "course_deleted": course_deleted, "library_updated": library_updated, diff --git a/common/lib/xmodule/xmodule/partitions/partitions.py b/common/lib/xmodule/xmodule/partitions/partitions.py index 31d8b79456..190e11062e 100644 --- a/common/lib/xmodule/xmodule/partitions/partitions.py +++ b/common/lib/xmodule/xmodule/partitions/partitions.py @@ -84,18 +84,23 @@ class Group(namedtuple("Group", "id name")): USER_PARTITION_SCHEME_NAMESPACE = 'openedx.user_partition_scheme' -class UserPartition(namedtuple("UserPartition", "id name description groups scheme")): - """ - A named way to partition users into groups, primarily intended for running - experiments. It is expected that each user will be in at most one group in a - partition. +class UserPartition(namedtuple("UserPartition", "id name description groups scheme parameters active")): + """A named way to partition users into groups, primarily intended for + running experiments. It is expected that each user will be in at most one + group in a partition. - A Partition has an id, name, scheme, description, and a list of groups. - The id is intended to be unique within the context where these are used. (e.g. for - partitions of users within a course, the ids should be unique per-course). - The scheme is used to assign users into groups. + A Partition has an id, name, scheme, description, parameters, and a list + of groups. The id is intended to be unique within the context where these + are used. (e.g., for partitions of users within a course, the ids should + be unique per-course). The scheme is used to assign users into groups. + The parameters field is used to save extra parameters e.g., location of + the block in case of VerificationPartitionScheme. + + Partitions can be marked as inactive by setting the "active" flag to False. + Any group access rule referencing inactive partitions will be ignored + when performing access checks. """ - VERSION = 2 + VERSION = 3 # The collection of user partition scheme extensions. scheme_extensions = None @@ -103,11 +108,14 @@ class UserPartition(namedtuple("UserPartition", "id name description groups sche # The default scheme to be used when upgrading version 1 partitions. VERSION_1_SCHEME = "random" - def __new__(cls, id, name, description, groups, scheme=None, scheme_id=VERSION_1_SCHEME): + def __new__(cls, id, name, description, groups, scheme=None, parameters=None, active=True, scheme_id=VERSION_1_SCHEME): # pylint: disable=line-too-long # pylint: disable=super-on-old-class if not scheme: scheme = UserPartition.get_scheme(scheme_id) - return super(UserPartition, cls).__new__(cls, int(id), name, description, groups, scheme) + if parameters is None: + parameters = {} + + return super(UserPartition, cls).__new__(cls, int(id), name, description, groups, scheme, parameters, active) @staticmethod def get_scheme(name): @@ -137,7 +145,9 @@ class UserPartition(namedtuple("UserPartition", "id name description groups sche "name": self.name, "scheme": self.scheme.name, "description": self.description, + "parameters": self.parameters, "groups": [g.to_json() for g in self.groups], + "active": bool(self.active), "version": UserPartition.VERSION } @@ -165,13 +175,16 @@ class UserPartition(namedtuple("UserPartition", "id name description groups sche # Version changes should be backwards compatible in case the code # gets rolled back. If we see a version number greater than the current # version, we should try to read it rather than raising an exception. - elif value["version"] >= UserPartition.VERSION: + elif value["version"] >= 2: if "scheme" not in value: raise TypeError("UserPartition dict {0} missing value key 'scheme'".format(value)) + scheme_id = value["scheme"] else: raise TypeError("UserPartition dict {0} has unexpected version".format(value)) + parameters = value.get("parameters", {}) + active = value.get("active", True) groups = [Group.from_json(g) for g in value["groups"]] scheme = UserPartition.get_scheme(scheme_id) if not scheme: @@ -183,12 +196,22 @@ class UserPartition(namedtuple("UserPartition", "id name description groups sche value["description"], groups, scheme, + parameters, + active, ) def get_group(self, group_id): """ - Returns the group with the specified id. Raises NoSuchUserPartitionGroupError if not found. + Returns the group with the specified id. + + Arguments: + group_id (int): ID of the partition group. + + Raises: + NoSuchUserPartitionGroupError: The specified group could not be found. + """ + # pylint: disable=no-member for group in self.groups: if group.id == group_id: return group diff --git a/common/lib/xmodule/xmodule/partitions/tests/test_partitions.py b/common/lib/xmodule/xmodule/partitions/tests/test_partitions.py index b5db22a238..af2bf96919 100644 --- a/common/lib/xmodule/xmodule/partitions/tests/test_partitions.py +++ b/common/lib/xmodule/xmodule/partitions/tests/test_partitions.py @@ -110,6 +110,7 @@ class PartitionTestCase(TestCase): TEST_ID = 0 TEST_NAME = "Mock Partition" TEST_DESCRIPTION = "for testing purposes" + TEST_PARAMETERS = {"location": "block-v1:edX+DemoX+Demo+type@block@uuid"} TEST_GROUPS = [Group(0, 'Group 1'), Group(1, 'Group 2')] TEST_SCHEME_NAME = "mock" @@ -136,7 +137,8 @@ class PartitionTestCase(TestCase): self.TEST_NAME, self.TEST_DESCRIPTION, self.TEST_GROUPS, - extensions[0].plugin + extensions[0].plugin, + self.TEST_PARAMETERS, ) # Make sure the names are set on the schemes (which happens normally in code, but may not happen in tests). @@ -149,17 +151,28 @@ class TestUserPartition(PartitionTestCase): def test_construct(self): user_partition = UserPartition( - self.TEST_ID, self.TEST_NAME, self.TEST_DESCRIPTION, self.TEST_GROUPS, MockUserPartitionScheme() + self.TEST_ID, + self.TEST_NAME, + self.TEST_DESCRIPTION, + self.TEST_GROUPS, + MockUserPartitionScheme(), + self.TEST_PARAMETERS, ) self.assertEqual(user_partition.id, self.TEST_ID) self.assertEqual(user_partition.name, self.TEST_NAME) - self.assertEqual(user_partition.description, self.TEST_DESCRIPTION) - self.assertEqual(user_partition.groups, self.TEST_GROUPS) - self.assertEquals(user_partition.scheme.name, self.TEST_SCHEME_NAME) + self.assertEqual(user_partition.description, self.TEST_DESCRIPTION) # pylint: disable=no-member + self.assertEqual(user_partition.groups, self.TEST_GROUPS) # pylint: disable=no-member + self.assertEquals(user_partition.scheme.name, self.TEST_SCHEME_NAME) # pylint: disable=no-member + self.assertEquals(user_partition.parameters, self.TEST_PARAMETERS) # pylint: disable=no-member def test_string_id(self): user_partition = UserPartition( - "70", self.TEST_NAME, self.TEST_DESCRIPTION, self.TEST_GROUPS + "70", + self.TEST_NAME, + self.TEST_DESCRIPTION, + self.TEST_GROUPS, + MockUserPartitionScheme(), + self.TEST_PARAMETERS, ) self.assertEqual(user_partition.id, 70) @@ -169,9 +182,11 @@ class TestUserPartition(PartitionTestCase): "id": self.TEST_ID, "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": self.user_partition.VERSION, - "scheme": self.TEST_SCHEME_NAME + "scheme": self.TEST_SCHEME_NAME, + "active": True, } self.assertEqual(jsonified, act_jsonified) @@ -180,22 +195,26 @@ class TestUserPartition(PartitionTestCase): "id": self.TEST_ID, "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": UserPartition.VERSION, "scheme": "mock", } user_partition = UserPartition.from_json(jsonified) - self.assertEqual(user_partition.id, self.TEST_ID) - self.assertEqual(user_partition.name, self.TEST_NAME) - self.assertEqual(user_partition.description, self.TEST_DESCRIPTION) - for act_group in user_partition.groups: + self.assertEqual(user_partition.id, self.TEST_ID) # pylint: disable=no-member + self.assertEqual(user_partition.name, self.TEST_NAME) # pylint: disable=no-member + self.assertEqual(user_partition.description, self.TEST_DESCRIPTION) # pylint: disable=no-member + self.assertEqual(user_partition.parameters, self.TEST_PARAMETERS) # pylint: disable=no-member + + for act_group in user_partition.groups: # pylint: disable=no-member self.assertIn(act_group.id, [0, 1]) exp_group = self.TEST_GROUPS[act_group.id] self.assertEqual(exp_group.id, act_group.id) self.assertEqual(exp_group.name, act_group.name) def test_version_upgrade(self): - # Version 1 partitions did not have a scheme specified + # Test that version 1 partitions did not have a scheme specified + # and have empty parameters jsonified = { "id": self.TEST_ID, "name": self.TEST_NAME, @@ -204,13 +223,61 @@ class TestUserPartition(PartitionTestCase): "version": 1, } user_partition = UserPartition.from_json(jsonified) - self.assertEqual(user_partition.scheme.name, "random") + self.assertEqual(user_partition.scheme.name, "random") # pylint: disable=no-member + self.assertEqual(user_partition.parameters, {}) + self.assertTrue(user_partition.active) + + def test_version_upgrade_2_to_3(self): + # Test that version 3 user partition raises error if 'scheme' field is + # not provided (same behavior as version 2) + jsonified = { + 'id': self.TEST_ID, + "name": self.TEST_NAME, + "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, + "groups": [group.to_json() for group in self.TEST_GROUPS], + "version": 2, + } + with self.assertRaisesRegexp(TypeError, "missing value key 'scheme'"): + UserPartition.from_json(jsonified) + + # Test that version 3 partitions have a scheme specified + # and a field 'parameters' (optional while setting user partition but + # always present in response) + jsonified = { + "id": self.TEST_ID, + "name": self.TEST_NAME, + "description": self.TEST_DESCRIPTION, + "groups": [group.to_json() for group in self.TEST_GROUPS], + "version": 2, + "scheme": self.TEST_SCHEME_NAME, + } + user_partition = UserPartition.from_json(jsonified) + self.assertEqual(user_partition.scheme.name, self.TEST_SCHEME_NAME) + self.assertEqual(user_partition.parameters, {}) + self.assertTrue(user_partition.active) + + # now test that parameters dict is present in response with same value + # as provided + jsonified = { + "id": self.TEST_ID, + "name": self.TEST_NAME, + "description": self.TEST_DESCRIPTION, + "groups": [group.to_json() for group in self.TEST_GROUPS], + "parameters": self.TEST_PARAMETERS, + "version": 3, + "scheme": self.TEST_SCHEME_NAME, + } + user_partition = UserPartition.from_json(jsonified) + self.assertEqual(user_partition.parameters, self.TEST_PARAMETERS) + self.assertTrue(user_partition.active) def test_from_json_broken(self): # Missing field jsonified = { "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": UserPartition.VERSION, "scheme": self.TEST_SCHEME_NAME, @@ -223,6 +290,7 @@ class TestUserPartition(PartitionTestCase): 'id': self.TEST_ID, "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": UserPartition.VERSION, } @@ -234,6 +302,7 @@ class TestUserPartition(PartitionTestCase): 'id': self.TEST_ID, "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": UserPartition.VERSION, "scheme": "no_such_scheme", @@ -246,6 +315,7 @@ class TestUserPartition(PartitionTestCase): 'id': self.TEST_ID, "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": -1, "scheme": self.TEST_SCHEME_NAME, @@ -258,6 +328,7 @@ class TestUserPartition(PartitionTestCase): 'id': self.TEST_ID, "name": self.TEST_NAME, "description": self.TEST_DESCRIPTION, + "parameters": self.TEST_PARAMETERS, "groups": [group.to_json() for group in self.TEST_GROUPS], "version": UserPartition.VERSION, "scheme": "mock", @@ -266,6 +337,18 @@ class TestUserPartition(PartitionTestCase): user_partition = UserPartition.from_json(jsonified) self.assertNotIn("programmer", user_partition.to_json()) + # No error on missing parameters key (which is optional) + jsonified = { + 'id': self.TEST_ID, + "name": self.TEST_NAME, + "description": self.TEST_DESCRIPTION, + "groups": [group.to_json() for group in self.TEST_GROUPS], + "version": UserPartition.VERSION, + "scheme": "mock", + } + user_partition = UserPartition.from_json(jsonified) + self.assertEqual(user_partition.parameters, {}) + def test_get_group(self): """ UserPartition.get_group correctly returns the group referenced by the diff --git a/common/test/acceptance/pages/studio/component_editor.py b/common/test/acceptance/pages/studio/component_editor.py index 03ad24a994..2448e84eb8 100644 --- a/common/test/acceptance/pages/studio/component_editor.py +++ b/common/test/acceptance/pages/studio/component_editor.py @@ -108,19 +108,19 @@ class ComponentVisibilityEditorView(BaseComponentEditorView): """ A :class:`.PageObject` representing the rendered view of a component visibility editor. """ - OPTION_SELECTOR = '.modal-section-content li.field' + OPTION_SELECTOR = '.modal-section-content .field' @property def all_options(self): """ - Return all visibility 'li' options. + Return all visibility options. """ return self.q(css=self._bounded_selector(self.OPTION_SELECTOR)).results @property def selected_options(self): """ - Return all selected visibility 'li' options. + Return all selected visibility options. """ results = [] for option in self.all_options: @@ -131,7 +131,7 @@ class ComponentVisibilityEditorView(BaseComponentEditorView): def select_option(self, label_text, save=True): """ - Click the first li which has a label matching `label_text`. + Click the first option which has a label matching `label_text`. Arguments: label_text (str): Text of a label accompanying the input diff --git a/lms/djangoapps/ccx/tests/test_field_override_performance.py b/lms/djangoapps/ccx/tests/test_field_override_performance.py index 4b92a2b5f3..ed0f7a2782 100644 --- a/lms/djangoapps/ccx/tests/test_field_override_performance.py +++ b/lms/djangoapps/ccx/tests/test_field_override_performance.py @@ -24,7 +24,7 @@ from xblock.core import XBlock from xmodule.modulestore.django import modulestore from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, \ TEST_DATA_SPLIT_MODULESTORE, TEST_DATA_MONGO_MODULESTORE -from xmodule.modulestore.tests.factories import check_mongo_calls, CourseFactory, check_sum_of_calls +from xmodule.modulestore.tests.factories import check_mongo_calls_range, CourseFactory, check_sum_of_calls from xmodule.modulestore.tests.utils import ProceduralCourseTestMixin from ccx_keys.locator import CCXLocator from ccx.tests.factories import CcxFactory @@ -142,7 +142,7 @@ class FieldOverridePerformanceTestCase(ProceduralCourseTestMixin, Assert that mongodb is queried ``calls`` times in the surrounded context. """ - return check_mongo_calls(calls) + return check_mongo_calls_range(max_finds=calls) def assertXBlockInstantiations(self, instantiations): """ @@ -214,24 +214,24 @@ class TestFieldOverrideMongoPerformance(FieldOverridePerformanceTestCase): TEST_DATA = { # (providers, course_width, enable_ccx, view_as_ccx): # of sql queries, # of mongo queries, # of xblocks - ('no_overrides', 1, True, False): (24, 7, 14), - ('no_overrides', 2, True, False): (69, 7, 85), - ('no_overrides', 3, True, False): (264, 7, 336), - ('ccx', 1, True, False): (24, 7, 14), - ('ccx', 2, True, False): (69, 7, 85), - ('ccx', 3, True, False): (264, 7, 336), - ('ccx', 1, True, True): (24, 7, 14), - ('ccx', 2, True, True): (69, 7, 85), - ('ccx', 3, True, True): (264, 7, 336), - ('no_overrides', 1, False, False): (24, 7, 14), - ('no_overrides', 2, False, False): (69, 7, 85), - ('no_overrides', 3, False, False): (264, 7, 336), - ('ccx', 1, False, False): (24, 7, 14), - ('ccx', 2, False, False): (69, 7, 85), - ('ccx', 3, False, False): (264, 7, 336), - ('ccx', 1, False, True): (24, 7, 14), - ('ccx', 2, False, True): (69, 7, 85), - ('ccx', 3, False, True): (264, 7, 336), + ('no_overrides', 1, True, False): (24, 6, 13), + ('no_overrides', 2, True, False): (69, 6, 84), + ('no_overrides', 3, True, False): (264, 6, 335), + ('ccx', 1, True, False): (24, 6, 13), + ('ccx', 2, True, False): (69, 6, 84), + ('ccx', 3, True, False): (264, 6, 335), + ('ccx', 1, True, True): (24, 6, 13), + ('ccx', 2, True, True): (69, 6, 84), + ('ccx', 3, True, True): (264, 6, 335), + ('no_overrides', 1, False, False): (24, 6, 13), + ('no_overrides', 2, False, False): (69, 6, 84), + ('no_overrides', 3, False, False): (264, 6, 335), + ('ccx', 1, False, False): (24, 6, 13), + ('ccx', 2, False, False): (69, 6, 84), + ('ccx', 3, False, False): (264, 6, 335), + ('ccx', 1, False, True): (24, 6, 13), + ('ccx', 2, False, True): (69, 6, 84), + ('ccx', 3, False, True): (264, 6, 335), } diff --git a/lms/djangoapps/courseware/access.py b/lms/djangoapps/courseware/access.py index 4f2378cc9e..a7e199e450 100644 --- a/lms/djangoapps/courseware/access.py +++ b/lms/djangoapps/courseware/access.py @@ -487,16 +487,24 @@ def _has_group_access(descriptor, user, course_key): # resolve the partition IDs in group_access to actual # partition objects, skipping those which contain empty group directives. - # if a referenced partition could not be found, access will be denied. - try: - partitions = [ - descriptor._get_user_partition(partition_id) # pylint: disable=protected-access - for partition_id, group_ids in merged_access.items() - if group_ids is not None - ] - except NoSuchUserPartitionError: - log.warning("Error looking up user partition, access will be denied.", exc_info=True) - return ACCESS_DENIED + # If a referenced partition could not be found, it will be denied + # If the partition is found but is no longer active (meaning it's been disabled) + # then skip the access check for that partition. + partitions = [] + for partition_id, group_ids in merged_access.items(): + try: + partition = descriptor._get_user_partition(partition_id) # pylint: disable=protected-access + if partition.active: + if group_ids is not None: + partitions.append(partition) + else: + log.debug( + "Skipping partition with ID %s in course %s because it is no longer active", + partition.id, course_key + ) + except NoSuchUserPartitionError: + log.warning("Error looking up user partition, access will be denied.", exc_info=True) + return ACCESS_DENIED # next resolve the group IDs specified within each partition partition_groups = [] diff --git a/lms/djangoapps/courseware/testutils.py b/lms/djangoapps/courseware/testutils.py index 40aae1c188..b0e4e8b31f 100644 --- a/lms/djangoapps/courseware/testutils.py +++ b/lms/djangoapps/courseware/testutils.py @@ -93,7 +93,7 @@ class RenderXBlockTestMixin(object): return response @ddt.data( - (ModuleStoreEnum.Type.mongo, 8), + (ModuleStoreEnum.Type.mongo, 7), (ModuleStoreEnum.Type.split, 5), ) @ddt.unpack diff --git a/lms/djangoapps/lms_xblock/mixin.py b/lms/djangoapps/lms_xblock/mixin.py index 9c7b2e3475..493dd9624e 100644 --- a/lms/djangoapps/lms_xblock/mixin.py +++ b/lms/djangoapps/lms_xblock/mixin.py @@ -151,11 +151,13 @@ class LmsBlockMixin(XBlockMixin): except NoSuchUserPartitionError: has_invalid_user_partitions = True else: - for group_id in group_ids: - try: - user_partition.get_group(group_id) - except NoSuchUserPartitionGroupError: - has_invalid_groups = True + # Skip the validation check if the partition has been disabled + if user_partition.active: + for group_id in group_ids: + try: + user_partition.get_group(group_id) + except NoSuchUserPartitionGroupError: + has_invalid_groups = True if has_invalid_user_partitions: validation.add( diff --git a/lms/djangoapps/verify_student/models.py b/lms/djangoapps/verify_student/models.py index 0b25c7e96a..4202538f33 100644 --- a/lms/djangoapps/verify_student/models.py +++ b/lms/djangoapps/verify_student/models.py @@ -1126,11 +1126,16 @@ class VerificationStatus(models.Model): A verification status represents a user’s progress through the verification process for a particular checkpoint. """ + SUBMITTED_STATUS = "submitted" + APPROVED_STATUS = "approved" + DENIED_STATUS = "denied" + ERROR_STATUS = "error" + VERIFICATION_STATUS_CHOICES = ( - ("submitted", "submitted"), - ("approved", "approved"), - ("denied", "denied"), - ("error", "error") + (SUBMITTED_STATUS, SUBMITTED_STATUS), + (APPROVED_STATUS, APPROVED_STATUS), + (DENIED_STATUS, DENIED_STATUS), + (ERROR_STATUS, ERROR_STATUS) ) checkpoint = models.ForeignKey(VerificationCheckpoint, related_name="checkpoint_status") @@ -1199,15 +1204,15 @@ class VerificationStatus(models.Model): return None @classmethod - def get_user_attempts(cls, user_id, course_key, related_assessment_location): + def get_user_attempts(cls, user_id, course_key, checkpoint_location): """ Get re-verification attempts against a user for a given 'checkpoint' and 'course_id'. Arguments: - user_id(str): User Id string - course_key(str): A CourseKey of a course - related_assessment_location(str): Verification checkpoint location + user_id (str): User Id string + course_key (str): A CourseKey of a course + checkpoint_location (str): Verification checkpoint location Returns: Count of re-verification attempts @@ -1216,8 +1221,8 @@ class VerificationStatus(models.Model): return cls.objects.filter( user_id=user_id, checkpoint__course_id=course_key, - checkpoint__checkpoint_location=related_assessment_location, - status="submitted" + checkpoint__checkpoint_location=checkpoint_location, + status=cls.SUBMITTED_STATUS ).count() @classmethod @@ -1236,6 +1241,49 @@ class VerificationStatus(models.Model): except cls.DoesNotExist: return "" + @classmethod + def get_all_checkpoints(cls, user_id, course_key): + """Return dict of all the checkpoints with their status. + Args: + user_id(int): Id of user. + course_key(unicode): Unicode of course key + + Returns: + dict: {checkpoint:status} + """ + all_checks_points = cls.objects.filter( + user_id=user_id, checkpoint__course_id=course_key + ) + check_points = {} + for check in all_checks_points: + check_points[check.checkpoint.checkpoint_location] = check.status + + return check_points + + @classmethod + def cache_key_name(cls, user_id, course_key): + """Return the name of the key to use to cache the current configuration + Args: + user_id(int): Id of user. + course_key(unicode): Unicode of course key + + Returns: + Unicode cache key + """ + return u"verification.{}.{}".format(user_id, unicode(course_key)) + + +@receiver(models.signals.post_save, sender=VerificationStatus) +@receiver(models.signals.post_delete, sender=VerificationStatus) +def invalidate_verification_status_cache(sender, instance, **kwargs): # pylint: disable=unused-argument, invalid-name + """Invalidate the cache of VerificationStatus model. """ + + cache_key = VerificationStatus.cache_key_name( + instance.user.id, + unicode(instance.checkpoint.course_id) + ) + cache.delete(cache_key) + # DEPRECATED: this feature has been permanently enabled. # Once the application code has been updated in production, @@ -1283,15 +1331,40 @@ class SkippedReverification(models.Model): cls.objects.create(checkpoint=checkpoint, user_id=user_id, course_id=course_id) @classmethod - def check_user_skipped_reverification_exists(cls, user, course_id): + def check_user_skipped_reverification_exists(cls, user_id, course_id): """Check existence of a user's skipped re-verification attempt for a specific course. Arguments: - user(User): user object + user_id(str): user id course_id(CourseKey): CourseKey Returns: Boolean """ - return cls.objects.filter(user=user, course_id=course_id).exists() + has_skipped = cls.objects.filter(user_id=user_id, course_id=course_id).exists() + return has_skipped + + @classmethod + def cache_key_name(cls, user_id, course_key): + """Return the name of the key to use to cache the current configuration + Arguments: + user(User): user object + course_key(CourseKey): CourseKey + + Returns: + string: cache key name + """ + return u"skipped_reverification.{}.{}".format(user_id, unicode(course_key)) + + +@receiver(models.signals.post_save, sender=SkippedReverification) +@receiver(models.signals.post_delete, sender=SkippedReverification) +def invalidate_skipped_verification_cache(sender, instance, **kwargs): # pylint: disable=unused-argument, invalid-name + """Invalidate the cache of skipped verification model. """ + + cache_key = SkippedReverification.cache_key_name( + instance.user.id, + unicode(instance.course_id) + ) + cache.delete(cache_key) diff --git a/lms/djangoapps/verify_student/services.py b/lms/djangoapps/verify_student/services.py index 64f615bc63..cdf0a38df4 100644 --- a/lms/djangoapps/verify_student/services.py +++ b/lms/djangoapps/verify_student/services.py @@ -10,6 +10,7 @@ from django.db import IntegrityError from opaque_keys.edx.keys import CourseKey +from student.models import User, CourseEnrollment from verify_student.models import VerificationCheckpoint, VerificationStatus, SkippedReverification @@ -21,24 +22,28 @@ class ReverificationService(object): Reverification XBlock service """ + SKIPPED_STATUS = "skipped" + NON_VERIFIED_TRACK = "not-verified" + def get_status(self, user_id, course_id, related_assessment_location): """Get verification attempt status against a user for a given 'checkpoint' and 'course_id'. Args: - user_id(str): User Id string - course_id(str): A string of course id - related_assessment_location(str): Location of Reverification XBlock + user_id (str): User Id string + course_id (str): A string of course id + related_assessment_location (str): Location of Reverification XBlock - Returns: - "skipped" if the user has skipped the re-verification or - Verification Status string if the user has submitted photo - verification attempt else None + Returns: str or None """ + user = User.objects.get(id=user_id) course_key = CourseKey.from_string(course_id) - has_skipped = SkippedReverification.check_user_skipped_reverification_exists(user_id, course_key) - if has_skipped: - return "skipped" + + if not CourseEnrollment.is_enrolled_as_verified(user, course_key): + return self.NON_VERIFIED_TRACK + elif SkippedReverification.check_user_skipped_reverification_exists(user_id, course_key): + return self.SKIPPED_STATUS + try: checkpoint_status = VerificationStatus.objects.filter( user_id=user_id, diff --git a/lms/djangoapps/verify_student/tests/test_models.py b/lms/djangoapps/verify_student/tests/test_models.py index 8d7b4cb914..86f78d19ab 100644 --- a/lms/djangoapps/verify_student/tests/test_models.py +++ b/lms/djangoapps/verify_student/tests/test_models.py @@ -688,14 +688,12 @@ class VerificationStatusTest(ModuleStoreTestCase): status='submitted' ) - self.assertEqual( - VerificationStatus.get_user_attempts( - user_id=self.user.id, - course_key=self.course.id, - related_assessment_location=self.first_checkpoint_location - ), - 1 + actual_attempts = VerificationStatus.get_user_attempts( + self.user.id, + self.course.id, + self.first_checkpoint_location ) + self.assertEqual(actual_attempts, 1) class SkippedReverificationTest(ModuleStoreTestCase): @@ -763,12 +761,18 @@ class SkippedReverificationTest(ModuleStoreTestCase): checkpoint=self.checkpoint, user_id=self.user.id, course_id=unicode(self.course.id) ) self.assertTrue( - SkippedReverification.check_user_skipped_reverification_exists(course_id=self.course.id, user=self.user) + SkippedReverification.check_user_skipped_reverification_exists( + user_id=self.user.id, + course_id=self.course.id + ) ) user2 = UserFactory.create() self.assertFalse( - SkippedReverification.check_user_skipped_reverification_exists(course_id=self.course.id, user=user2) + SkippedReverification.check_user_skipped_reverification_exists( + user_id=user2.id, + course_id=self.course.id + ) ) diff --git a/lms/djangoapps/verify_student/tests/test_services.py b/lms/djangoapps/verify_student/tests/test_services.py index 8ff66d4de9..85568c3d9f 100644 --- a/lms/djangoapps/verify_student/tests/test_services.py +++ b/lms/djangoapps/verify_student/tests/test_services.py @@ -4,7 +4,9 @@ Tests of re-verification service. import ddt +from course_modes.models import CourseMode from course_modes.tests.factories import CourseModeFactory +from student.models import CourseEnrollment from student.tests.factories import UserFactory from verify_student.models import VerificationCheckpoint, VerificationStatus, SkippedReverification from verify_student.services import ReverificationService @@ -35,6 +37,9 @@ class TestReverificationService(ModuleStoreTestCase): org=self.course_key.org, course=self.course_key.course ) + # Enroll in a verified mode + self.enrollment = CourseEnrollment.enroll(self.user, self.course_key, mode=CourseMode.VERIFIED) + @ddt.data('final', 'midterm') def test_start_verification(self, checkpoint_name): """Test the 'start_verification' service method. @@ -107,6 +112,12 @@ class TestReverificationService(ModuleStoreTestCase): 1 ) + # testing service for skipped attempt. + self.assertEqual( + reverification_service.get_status(self.user.id, unicode(self.course_key), self.final_checkpoint_location), + 'skipped' + ) + def test_get_attempts(self): """Check verification attempts count against a user for a given 'checkpoint' and 'course_id'. @@ -129,3 +140,12 @@ class TestReverificationService(ModuleStoreTestCase): reverification_service.get_attempts(self.user.id, course_id, self.final_checkpoint_location), 1 ) + + def test_not_in_verified_track(self): + # No longer enrolled in a verified track + self.enrollment.update_enrollment(mode=CourseMode.HONOR) + + # Should be marked as "skipped" (opted out) + service = ReverificationService() + status = service.get_status(self.user.id, unicode(self.course_key), self.final_checkpoint_location) + self.assertEqual(status, service.NON_VERIFIED_TRACK) diff --git a/lms/templates/courseware/course_navigation.html b/lms/templates/courseware/course_navigation.html index 691b94b57b..cc76636ea8 100644 --- a/lms/templates/courseware/course_navigation.html +++ b/lms/templates/courseware/course_navigation.html @@ -25,7 +25,7 @@ def selected(is_selected): return "selected" if is_selected else "" show_preview_menu = not disable_preview_menu and staff_access and active_page in ["courseware", "info"] -cohorted_user_partition = get_cohorted_user_partition(course.id) +cohorted_user_partition = get_cohorted_user_partition(course) masquerade_user_name = masquerade.user_name if masquerade else None masquerade_group_id = masquerade.group_id if masquerade else None staff_selected = selected(not masquerade or masquerade.role != "student") diff --git a/lms/templates/instructor/instructor_dashboard_2/cohort_management.html b/lms/templates/instructor/instructor_dashboard_2/cohort_management.html index db7d3e7dc5..7a46a00d93 100644 --- a/lms/templates/instructor/instructor_dashboard_2/cohort_management.html +++ b/lms/templates/instructor/instructor_dashboard_2/cohort_management.html @@ -20,7 +20,7 @@ from openedx.core.djangoapps.course_groups.partition_scheme import get_cohorted_ <%block name="js_extra"> <%static:require_module module_name="js/groups/views/cohorts_dashboard_factory" class_name="CohortsFactory"> <% - cohorted_user_partition = get_cohorted_user_partition(course.id) + cohorted_user_partition = get_cohorted_user_partition(course) content_groups = cohorted_user_partition.groups if cohorted_user_partition else [] %> var cohortUserPartitionId = ${cohorted_user_partition.id if cohorted_user_partition else 'null'}, diff --git a/openedx/core/djangoapps/course_groups/partition_scheme.py b/openedx/core/djangoapps/course_groups/partition_scheme.py index 346528e825..05f1e5015c 100644 --- a/openedx/core/djangoapps/course_groups/partition_scheme.py +++ b/openedx/core/djangoapps/course_groups/partition_scheme.py @@ -3,7 +3,6 @@ Provides a UserPartition driver for cohorts. """ import logging -from courseware import courses from courseware.masquerade import ( # pylint: disable=import-error get_course_masquerade, get_masquerading_group_info, @@ -100,13 +99,12 @@ class CohortPartitionScheme(object): return None -def get_cohorted_user_partition(course_key): +def get_cohorted_user_partition(course): """ Returns the first user partition from the specified course which uses the CohortPartitionScheme, or None if one is not found. Note that it is currently recommended that each course have only one cohorted user partition. """ - course = courses.get_course_by_id(course_key) for user_partition in course.user_partitions: if user_partition.scheme == CohortPartitionScheme: return user_partition diff --git a/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py b/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py index 55f558780d..093eca653f 100644 --- a/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py +++ b/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py @@ -317,14 +317,14 @@ class TestGetCohortedUserPartition(ModuleStoreTestCase): self.course.user_partitions.append(self.random_user_partition) self.course.user_partitions.append(self.cohort_user_partition) self.course.user_partitions.append(self.second_cohort_user_partition) - self.assertEqual(self.cohort_user_partition, get_cohorted_user_partition(self.course_key)) + self.assertEqual(self.cohort_user_partition, get_cohorted_user_partition(self.course)) def test_no_cohort_user_partitions(self): """ Test get_cohorted_user_partition returns None when there are no cohorted user partitions. """ self.course.user_partitions.append(self.random_user_partition) - self.assertIsNone(get_cohorted_user_partition(self.course_key)) + self.assertIsNone(get_cohorted_user_partition(self.course)) class TestMasqueradedGroup(StaffMasqueradeTestCase): diff --git a/openedx/core/djangoapps/credit/partition_schemes.py b/openedx/core/djangoapps/credit/partition_schemes.py new file mode 100644 index 0000000000..db364a1011 --- /dev/null +++ b/openedx/core/djangoapps/credit/partition_schemes.py @@ -0,0 +1,136 @@ +""" +Partition scheme for in-course reverification. + +This is responsible for placing users into one of two groups, +ALLOW or DENY, for a partition associated with a particular +in-course reverification checkpoint. + +NOTE: This really should be defined in the verify_student app, +which owns the verification and reverification process. +It isn't defined there now because (a) we need access to this in both Studio +and the LMS, but verify_student is specific to the LMS, and +(b) in-course reverification checkpoints currently have messaging that's +specific to credit requirements. + +""" +import logging + +from django.core.cache import cache + +from lms.djangoapps.verify_student.models import SkippedReverification, VerificationStatus +from student.models import CourseEnrollment +from xmodule.partitions.partitions import NoSuchUserPartitionGroupError + + +log = logging.getLogger(__name__) + + +class VerificationPartitionScheme(object): + """ + Assign users to groups for a particular verification checkpoint. + + Users in the ALLOW group can see gated content; + users in the DENY group cannot. + """ + + DENY = 0 + ALLOW = 1 + + @classmethod + def get_group_for_user(cls, course_key, user, user_partition, **kwargs): # pylint: disable=unused-argument + """ + Return the user's group depending their enrollment and verification + status. + + Args: + course_key (CourseKey): CourseKey + user (User): user object + user_partition (UserPartition): The user partition object. + + Returns: + string of allowed access group + """ + checkpoint = user_partition.parameters['location'] + + # Retrieve all information we need to determine the user's group + # as a multi-get from the cache. + is_verified, has_skipped, has_completed = _get_user_statuses(user, course_key, checkpoint) + + # Decide whether the user should have access to content gated by this checkpoint. + # Intuitively, we allow access if the user doesn't need to do anything at the checkpoint, + # either because the user is in a non-verified track or the user has already submitted. + # + # Note that we do NOT wait the user's reverification attempt to be approved, + # since this can take some time and the user might miss an assignment deadline. + partition_group = cls.DENY + if not is_verified or has_skipped or has_completed: + partition_group = cls.ALLOW + + # Return matching user partition group if it exists + try: + return user_partition.get_group(partition_group) + except NoSuchUserPartitionGroupError: + log.error( + ( + u"Could not find group with ID %s for verified partition " + "with ID %s in course %s. The user will not be assigned a group." + ), + partition_group, + user_partition.id, + course_key + ) + return None + + +def _get_user_statuses(user, course_key, checkpoint): + """ + Retrieve all the information we need to determine the user's group. + + This will retrieve the information as a multi-get from the cache. + + Args: + user (User): User object + course_key (CourseKey): Identifier for the course. + checkpoint (unicode): Location of the checkpoint in the course (serialized usage key) + + Returns: + tuple of booleans of the form (is_verified, has_skipped, has_completed) + + """ + enrollment_cache_key = CourseEnrollment.cache_key_name(user.id, unicode(course_key)) + has_skipped_cache_key = SkippedReverification.cache_key_name(user.id, unicode(course_key)) + verification_status_cache_key = VerificationStatus.cache_key_name(user.id, unicode(course_key)) + + # Try a multi-get from the cache + cache_values = cache.get_many([ + enrollment_cache_key, + has_skipped_cache_key, + verification_status_cache_key + ]) + + # Retrieve whether the user is enrolled in a verified mode. + is_verified = cache_values.get(enrollment_cache_key) + if is_verified is None: + is_verified = CourseEnrollment.is_enrolled_as_verified(user, course_key) + cache.set(enrollment_cache_key, is_verified) + + # Retrieve whether the user has skipped any checkpoints in this course + has_skipped = cache_values.get(has_skipped_cache_key) + if has_skipped is None: + has_skipped = SkippedReverification.check_user_skipped_reverification_exists(user, course_key) + cache.set(has_skipped_cache_key, has_skipped) + + # Retrieve the user's verification status for each checkpoint in the course. + verification_statuses = cache_values.get(verification_status_cache_key) + if verification_statuses is None: + verification_statuses = VerificationStatus.get_all_checkpoints(user.id, course_key) + cache.set(verification_status_cache_key, verification_statuses) + + # Check whether the user has completed this checkpoint + # "Completion" here means *any* submission, regardless of its status + # since we want to show the user the content if they've submitted + # photos. + checkpoint = verification_statuses.get(checkpoint) + has_completed_check = bool(checkpoint) + + return (is_verified, has_skipped, has_completed_check) diff --git a/openedx/core/djangoapps/credit/signals.py b/openedx/core/djangoapps/credit/signals.py index aed3ef8032..fbec5c9bd8 100644 --- a/openedx/core/djangoapps/credit/signals.py +++ b/openedx/core/djangoapps/credit/signals.py @@ -8,14 +8,15 @@ from django.dispatch import receiver from django.utils import timezone from opaque_keys.edx.keys import CourseKey -from xmodule.modulestore.django import SignalHandler from openedx.core.djangoapps.signals.signals import GRADES_UPDATED +from openedx.core.djangoapps.credit.verification_access import update_verification_partitions +from xmodule.modulestore.django import SignalHandler log = logging.getLogger(__name__) -def on_course_publish(course_key): # pylint: disable=unused-argument +def on_course_publish(course_key): """ Will receive a delegated 'course_published' signal from cms/djangoapps/contentstore/signals.py and kick off a celery task to update the credit course requirements. @@ -33,6 +34,25 @@ def on_course_publish(course_key): # pylint: disable=unused-argument log.info(u'Added task to update credit requirements for course "%s" to the task queue', course_key) +@receiver(SignalHandler.pre_publish) +def on_pre_publish(sender, course_key, **kwargs): # pylint: disable=unused-argument + """ + Create user partitions for verification checkpoints. + + This is a pre-publish step since we need to write to the course descriptor. + """ + from openedx.core.djangoapps.credit import api + if api.is_credit_course(course_key): + # For now, we are tagging content with in-course-reverification access groups + # only in credit courses on publish. In the long run, this is not where we want to put this. + # This really should be a transformation on the course structure performed as a pre-processing + # step by the LMS, and the transformation should be owned by the verify_student app. + # Since none of that infrastructure currently exists, we're doing it this way instead. + log.info(u"Starting to update in-course reverification access rules") + update_verification_partitions(course_key) + log.info(u"Finished updating in-course reverification access rules") + + @receiver(GRADES_UPDATED) def listen_for_grade_calculation(sender, username, grade_summary, course_key, deadline, **kwargs): # pylint: disable=unused-argument """Receive 'MIN_GRADE_REQUIREMENT_STATUS' signal and update minimum grade diff --git a/openedx/core/djangoapps/credit/tasks.py b/openedx/core/djangoapps/credit/tasks.py index 2e8908f91a..51c2af2874 100644 --- a/openedx/core/djangoapps/credit/tasks.py +++ b/openedx/core/djangoapps/credit/tasks.py @@ -15,8 +15,9 @@ from opaque_keys.edx.keys import CourseKey from .api import set_credit_requirements from openedx.core.djangoapps.credit.exceptions import InvalidCreditRequirements from openedx.core.djangoapps.credit.models import CreditCourse -from xmodule.modulestore.django import modulestore +from openedx.core.djangoapps.credit.utils import get_course_blocks from xmodule.modulestore import ModuleStoreEnum +from xmodule.modulestore.django import modulestore from xmodule.modulestore.exceptions import ItemNotFoundError LOGGER = get_task_logger(__name__) @@ -139,34 +140,13 @@ def _get_credit_course_requirement_xblocks(course_key): # pylint: disable=inval return requirements -def _is_in_course_tree(block): - """ - Check that the XBlock is in the course tree. - - It's possible that the XBlock is not in the course tree - if its parent has been deleted and is now an orphan. - """ - ancestor = block.get_parent() - while ancestor is not None and ancestor.location.category != "course": - ancestor = ancestor.get_parent() - - return ancestor is not None - - def _get_xblocks(course_key, category): """ Retrieve all XBlocks in the course for a particular category. Returns only XBlocks that are published and haven't been deleted. """ - xblocks = [ - block for block in modulestore().get_items( - course_key, - qualifiers={"category": category}, - revision=ModuleStoreEnum.RevisionOption.published_only, - ) - if _is_in_course_tree(block) - ] + xblocks = get_course_blocks(course_key, category) # Secondary sort on credit requirement name xblocks = sorted(xblocks, key=lambda block: block.get_credit_requirement_display_name()) diff --git a/openedx/core/djangoapps/credit/tests/test_partition.py b/openedx/core/djangoapps/credit/tests/test_partition.py new file mode 100644 index 0000000000..f6d74f51b0 --- /dev/null +++ b/openedx/core/djangoapps/credit/tests/test_partition.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- +""" +Tests for In-Course Reverification Access Control Partition scheme +""" + +import ddt +import unittest + +from django.conf import settings + +from lms.djangoapps.verify_student.models import ( + VerificationCheckpoint, + VerificationStatus, + SkippedReverification, +) +from openedx.core.djangoapps.credit.partition_schemes import VerificationPartitionScheme +from student.models import CourseEnrollment +from student.tests.factories import UserFactory +from xmodule.partitions.partitions import UserPartition, Group +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory + + +@ddt.ddt +@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms') +class ReverificationPartitionTest(ModuleStoreTestCase): + """Tests for the Reverification Partition Scheme. """ + + SUBMITTED = "submitted" + APPROVED = "approved" + DENIED = "denied" + + def setUp(self): + super(ReverificationPartitionTest, self).setUp() + + # creating course, checkpoint location and user partition mock object. + self.course = CourseFactory.create() + self.checkpoint_location = u'i4x://{org}/{course}/edx-reverification-block/first_uuid'.format( + org=self.course.id.org, course=self.course.id.course + ) + + scheme = UserPartition.get_scheme("verification") + self.user_partition = UserPartition( + id=0, + name=u"Verification Checkpoint", + description=u"Verification Checkpoint", + scheme=scheme, + parameters={"location": self.checkpoint_location}, + groups=[ + Group(scheme.ALLOW, "Allow access to content"), + Group(scheme.DENY, "Deny access to content"), + ] + ) + + self.first_checkpoint = VerificationCheckpoint.objects.create( + course_id=self.course.id, + checkpoint_location=self.checkpoint_location + ) + + def create_user_and_enroll(self, enrollment_type): + """Create and enroll users with provided enrollment type.""" + + user = UserFactory.create() + CourseEnrollment.objects.create( + user=user, + course_id=self.course.id, + mode=enrollment_type, + is_active=True + ) + return user + + def add_verification_status(self, user, status): + """Adding the verification status for a user.""" + + VerificationStatus.add_status_from_checkpoints( + checkpoints=[self.first_checkpoint], + user=user, + status=status + ) + + @ddt.data( + ("verified", SUBMITTED, VerificationPartitionScheme.ALLOW), + ("verified", APPROVED, VerificationPartitionScheme.ALLOW), + ("verified", DENIED, VerificationPartitionScheme.ALLOW), + ("verified", None, VerificationPartitionScheme.DENY), + ("honor", None, VerificationPartitionScheme.ALLOW), + ) + @ddt.unpack + def test_get_group_for_user(self, enrollment_type, verification_status, expected_group): + # creating user and enroll them. + user = self.create_user_and_enroll(enrollment_type) + if verification_status: + self.add_verification_status(user, verification_status) + + self._assert_group_assignment(user, expected_group) + + def test_get_group_for_user_with_skipped(self): + # Check that a user is in verified allow group if that user has skipped + # any ICRV block. + user = self.create_user_and_enroll('verified') + + SkippedReverification.add_skipped_reverification_attempt( + checkpoint=self.first_checkpoint, + user_id=user.id, + course_id=self.course.id + ) + + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + def test_cache_with_skipped_icrv(self): + # Check that a user is in verified allow group if that user has skipped + # any ICRV block. + user = self.create_user_and_enroll('verified') + SkippedReverification.add_skipped_reverification_attempt( + checkpoint=self.first_checkpoint, + user_id=user.id, + course_id=self.course.id + ) + # this will warm the cache. + with self.assertNumQueries(3): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + # no db queries this time. + with self.assertNumQueries(0): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + def test_cache_with_submitted_status(self): + # Check that a user is in verified allow group if that user has approved status at + # any ICRV block. + user = self.create_user_and_enroll('verified') + self.add_verification_status(user, VerificationStatus.APPROVED_STATUS) + # this will warm the cache. + with self.assertNumQueries(4): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + # no db queries this time. + with self.assertNumQueries(0): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + def test_cache_with_denied_status(self): + # Check that a user is in verified allow group if that user has denied at + # any ICRV block. + user = self.create_user_and_enroll('verified') + self.add_verification_status(user, VerificationStatus.DENIED_STATUS) + + # this will warm the cache. + with self.assertNumQueries(4): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + # no db queries this time. + with self.assertNumQueries(0): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + def test_cache_with_honor(self): + # Check that a user is in honor mode. + # any ICRV block. + user = self.create_user_and_enroll('honor') + # this will warm the cache. + with self.assertNumQueries(3): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + # no db queries this time. + with self.assertNumQueries(0): + self._assert_group_assignment(user, VerificationPartitionScheme.ALLOW) + + def test_cache_with_verified_deny_group(self): + # Check that a user is in verified mode. But not perform any action + + user = self.create_user_and_enroll('verified') + # this will warm the cache. + with self.assertNumQueries(3): + self._assert_group_assignment(user, VerificationPartitionScheme.DENY) + + # no db queries this time. + with self.assertNumQueries(0): + self._assert_group_assignment(user, VerificationPartitionScheme.DENY) + + def _assert_group_assignment(self, user, expected_group_id): + """Check that the user was assigned to a group. """ + actual_group = VerificationPartitionScheme.get_group_for_user(self.course.id, user, self.user_partition) + self.assertEqual(actual_group.id, expected_group_id) diff --git a/openedx/core/djangoapps/credit/tests/test_tasks.py b/openedx/core/djangoapps/credit/tests/test_tasks.py index 32e5aa099c..70f838d7c7 100644 --- a/openedx/core/djangoapps/credit/tests/test_tasks.py +++ b/openedx/core/djangoapps/credit/tests/test_tasks.py @@ -208,7 +208,7 @@ class TestTaskExecution(ModuleStoreTestCase): self.add_credit_course(self.course.id) self.add_icrv_xblock() - with check_mongo_calls_range(max_finds=7): + with check_mongo_calls_range(max_finds=11): on_course_publish(self.course.id) def test_remove_icrv_requirement(self): diff --git a/openedx/core/djangoapps/credit/tests/test_verification_access.py b/openedx/core/djangoapps/credit/tests/test_verification_access.py new file mode 100644 index 0000000000..e7a0db47e6 --- /dev/null +++ b/openedx/core/djangoapps/credit/tests/test_verification_access.py @@ -0,0 +1,270 @@ +""" +Tests for in-course reverification user partition creation. + +This should really belong to the verify_student app, +but we can't move it there because it's in the LMS and we're +currently applying these rules on publish from Studio. + +In the future, this functionality should be a course transformation +defined in the verify_student app, and these tests should be moved +into verify_student. + +""" + +from mock import patch + +from django.conf import settings + +from openedx.core.djangoapps.credit.models import CreditCourse +from openedx.core.djangoapps.credit.partition_schemes import VerificationPartitionScheme +from openedx.core.djangoapps.credit.verification_access import update_verification_partitions +from openedx.core.djangoapps.credit.signals import on_pre_publish +from xmodule.modulestore import ModuleStoreEnum +from xmodule.modulestore.django import SignalHandler +from xmodule.modulestore.exceptions import ItemNotFoundError +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, TEST_DATA_SPLIT_MODULESTORE +from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory, check_mongo_calls_range +from xmodule.partitions.partitions import Group, UserPartition + + +class CreateVerificationPartitionTest(ModuleStoreTestCase): + """ + Tests for applying verification access rules. + """ + + # Run the tests in split modulestore + # While verification access will work in old-Mongo, it's not something + # we're committed to supporting, since this feature is meant for use + # in new courses. + MODULESTORE = TEST_DATA_SPLIT_MODULESTORE + + @patch.dict(settings.FEATURES, {"ENABLE_COURSEWARE_INDEX": False}) + def setUp(self): + super(CreateVerificationPartitionTest, self).setUp() + + # Disconnect the signal receiver -- we'll invoke the update code ourselves + SignalHandler.pre_publish.disconnect(receiver=on_pre_publish) + self.addCleanup(SignalHandler.pre_publish.connect, receiver=on_pre_publish) + + # Create a dummy course with a single verification checkpoint + # Because we need to check "exam" content surrounding the ICRV checkpoint, + # we need to create a fairly large course structure, with multiple sections, + # subsections, verticals, units, and items. + self.course = CourseFactory() + self.sections = [ + ItemFactory.create(parent=self.course, category='chapter', display_name='Test Section A'), + ItemFactory.create(parent=self.course, category='chapter', display_name='Test Section B'), + ] + self.subsections = [ + ItemFactory.create(parent=self.sections[0], category='sequential', display_name='Test Subsection A 1'), + ItemFactory.create(parent=self.sections[0], category='sequential', display_name='Test Subsection A 2'), + ItemFactory.create(parent=self.sections[1], category='sequential', display_name='Test Subsection B 1'), + ItemFactory.create(parent=self.sections[1], category='sequential', display_name='Test Subsection B 2'), + ] + self.verticals = [ + ItemFactory.create(parent=self.subsections[0], category='vertical', display_name='Test Unit A 1 a'), + ItemFactory.create(parent=self.subsections[0], category='vertical', display_name='Test Unit A 1 b'), + ItemFactory.create(parent=self.subsections[1], category='vertical', display_name='Test Unit A 2 a'), + ItemFactory.create(parent=self.subsections[1], category='vertical', display_name='Test Unit A 2 b'), + ItemFactory.create(parent=self.subsections[2], category='vertical', display_name='Test Unit B 1 a'), + ItemFactory.create(parent=self.subsections[2], category='vertical', display_name='Test Unit B 1 b'), + ItemFactory.create(parent=self.subsections[3], category='vertical', display_name='Test Unit B 2 a'), + ItemFactory.create(parent=self.subsections[3], category='vertical', display_name='Test Unit B 2 b'), + ] + self.icrv = ItemFactory.create(parent=self.verticals[0], category='edx-reverification-block') + self.sibling_problem = ItemFactory.create(parent=self.verticals[0], category='problem') + + def test_creates_user_partitions(self): + self._update_partitions() + + # Check that a new user partition was created for the ICRV block + self.assertEqual(len(self.course.user_partitions), 1) + partition = self.course.user_partitions[0] + self.assertEqual(partition.scheme.name, "verification") + self.assertEqual(partition.parameters["location"], unicode(self.icrv.location)) + + # Check that the groups for the partition were created correctly + self.assertEqual(len(partition.groups), 2) + self.assertItemsEqual( + [g.id for g in partition.groups], + [ + VerificationPartitionScheme.ALLOW, + VerificationPartitionScheme.DENY, + ] + ) + + @patch.dict(settings.FEATURES, {"ENABLE_COURSEWARE_INDEX": False}) + def test_removes_deleted_user_partitions(self): + self._update_partitions() + + # Delete the reverification block, then update the partitions + self.store.delete_item( + self.icrv.location, + ModuleStoreEnum.UserID.test, + revision=ModuleStoreEnum.RevisionOption.published_only + ) + self._update_partitions() + + # Check that the user partition was marked as inactive + self.assertEqual(len(self.course.user_partitions), 1) + partition = self.course.user_partitions[0] + self.assertFalse(partition.active) + self.assertEqual(partition.scheme.name, "verification") + + @patch.dict(settings.FEATURES, {"ENABLE_COURSEWARE_INDEX": False}) + def test_preserves_partition_id_for_verified_partitions(self): + self._update_partitions() + partition_id = self.course.user_partitions[0].id + self._update_partitions() + new_partition_id = self.course.user_partitions[0].id + self.assertEqual(partition_id, new_partition_id) + + @patch.dict(settings.FEATURES, {"ENABLE_COURSEWARE_INDEX": False}) + def test_preserves_existing_user_partitions(self): + # Add other, non-verified partition to the course + self.course.user_partitions = [ + UserPartition( + id=0, + name='Cohort user partition', + scheme=UserPartition.get_scheme('cohort'), + description='Cohorted user partition', + groups=[ + Group(id=0, name="Group A"), + Group(id=1, name="Group B"), + ], + ), + UserPartition( + id=1, + name='Random user partition', + scheme=UserPartition.get_scheme('random'), + description='Random user partition', + groups=[ + Group(id=0, name="Group A"), + Group(id=1, name="Group B"), + ], + ), + ] + self.course = self.store.update_item(self.course, ModuleStoreEnum.UserID.test) + + # Update the verification partitions. + # The existing partitions should still be available + self._update_partitions() + partition_ids = [p.id for p in self.course.user_partitions] + self.assertEqual(len(partition_ids), 3) + self.assertIn(0, partition_ids) + self.assertIn(1, partition_ids) + + def test_multiple_reverification_blocks(self): + # Add an additional ICRV block in another section + other_icrv = ItemFactory.create(parent=self.verticals[3], category='edx-reverification-block') + self._update_partitions() + + # Expect that both ICRV blocks have corresponding partitions + self.assertEqual(len(self.course.user_partitions), 2) + partition_locations = [p.parameters.get("location") for p in self.course.user_partitions] + self.assertIn(unicode(self.icrv.location), partition_locations) + self.assertIn(unicode(other_icrv.location), partition_locations) + + # Delete the first ICRV block and update partitions + icrv_location = self.icrv.location + self.store.delete_item( + self.icrv.location, + ModuleStoreEnum.UserID.test, + revision=ModuleStoreEnum.RevisionOption.published_only + ) + self._update_partitions() + + # Expect that the correct partition is marked as inactive + self.assertEqual(len(self.course.user_partitions), 2) + partitions_by_loc = { + p.parameters["location"]: p + for p in self.course.user_partitions + } + self.assertFalse(partitions_by_loc[unicode(icrv_location)].active) + self.assertTrue(partitions_by_loc[unicode(other_icrv.location)].active) + + def test_query_counts_with_no_reverification_blocks(self): + # Delete the ICRV block, so the number of ICRV blocks is zero + self.store.delete_item( + self.icrv.location, + ModuleStoreEnum.UserID.test, + revision=ModuleStoreEnum.RevisionOption.published_only + ) + + # 2 calls: get the course (definitions + structures) + # 2 calls: look up ICRV blocks in the course (definitions + structures) + with check_mongo_calls_range(max_finds=4, max_sends=2): + self._update_partitions(reload_items=False) + + def test_query_counts_with_one_reverification_block(self): + # One ICRV block created in the setup method + # Additional call to load the ICRV block + with check_mongo_calls_range(max_finds=5, max_sends=3): + self._update_partitions(reload_items=False) + + def test_query_counts_with_multiple_reverification_blocks(self): + # Total of two ICRV blocks (one created in setup method) + # Additional call to load each ICRV block + ItemFactory.create(parent=self.verticals[3], category='edx-reverification-block') + with check_mongo_calls_range(max_finds=6, max_sends=3): + self._update_partitions(reload_items=False) + + def _update_partitions(self, reload_items=True): + """Update user partitions in the course descriptor, then reload the content. """ + update_verification_partitions(self.course.id) # pylint: disable=no-member + + # Reload each component so we can see the changes + if reload_items: + self.course = self.store.get_course(self.course.id) # pylint: disable=no-member + self.sections = [self._reload_item(section.location) for section in self.sections] + self.subsections = [self._reload_item(subsection.location) for subsection in self.subsections] + self.verticals = [self._reload_item(vertical.location) for vertical in self.verticals] + self.icrv = self._reload_item(self.icrv.location) + self.sibling_problem = self._reload_item(self.sibling_problem.location) + + def _reload_item(self, location): + """Safely reload an item from the moduelstore. """ + try: + return self.store.get_item(location) + except ItemNotFoundError: + return None + + +class WriteOnPublishTest(ModuleStoreTestCase): + """ + Verify that updates to the course descriptor's + user partitions are written automatically on publish. + """ + MODULESTORE = TEST_DATA_SPLIT_MODULESTORE + + @patch.dict(settings.FEATURES, {"ENABLE_COURSEWARE_INDEX": False}) + def setUp(self): + super(WriteOnPublishTest, self).setUp() + + # Create a dummy course with an ICRV block + self.course = CourseFactory() + self.section = ItemFactory.create(parent=self.course, category='chapter', display_name='Test Section') + self.subsection = ItemFactory.create(parent=self.section, category='sequential', display_name='Test Subsection') + self.vertical = ItemFactory.create(parent=self.subsection, category='vertical', display_name='Test Unit') + self.icrv = ItemFactory.create(parent=self.vertical, category='edx-reverification-block') + + # Mark the course as credit + CreditCourse.objects.create(course_key=self.course.id, enabled=True) # pylint: disable=no-member + + @patch.dict(settings.FEATURES, {"ENABLE_COURSEWARE_INDEX": False}) + def test_can_write_on_publish_signal(self): + # Sanity check -- initially user partitions should be empty + self.assertEqual(self.course.user_partitions, []) + + # Make and publish a change to a block, which should trigger the publish signal + with self.store.bulk_operations(self.course.id): # pylint: disable=no-member + self.icrv.display_name = "Updated display name" + self.store.update_item(self.icrv, ModuleStoreEnum.UserID.test) + self.store.publish(self.icrv.location, ModuleStoreEnum.UserID.test) + + # Within the test, the course pre-publish signal should have fired synchronously + # Since the course is marked as credit, the in-course verification partitions + # should have been created. + # We need to verify that these changes were actually persisted to the modulestore. + retrieved_course = self.store.get_course(self.course.id) # pylint: disable=no-member + self.assertEqual(len(retrieved_course.user_partitions), 1) diff --git a/openedx/core/djangoapps/credit/utils.py b/openedx/core/djangoapps/credit/utils.py new file mode 100644 index 0000000000..ad4c6cb486 --- /dev/null +++ b/openedx/core/djangoapps/credit/utils.py @@ -0,0 +1,38 @@ +""" +Utilities for the credit app. +""" +from xmodule.modulestore import ModuleStoreEnum +from xmodule.modulestore.django import modulestore + + +def get_course_blocks(course_key, category): + """ + Retrieve all XBlocks in the course for a particular category. + + Returns only XBlocks that are published and haven't been deleted. + """ + # Note: we need to check if found components have been orphaned + # due to a bug in split modulestore (PLAT-799). Once that bug + # is resolved, we can skip the `_is_in_course_tree()` check entirely. + return [ + block for block in modulestore().get_items( + course_key, + qualifiers={"category": category}, + revision=ModuleStoreEnum.RevisionOption.published_only, + ) + if _is_in_course_tree(block) + ] + + +def _is_in_course_tree(block): + """ + Check that the XBlock is in the course tree. + + It's possible that the XBlock is not in the course tree + if its parent has been deleted and is now an orphan. + """ + ancestor = block.get_parent() + while ancestor is not None and ancestor.location.category != "course": + ancestor = ancestor.get_parent() + + return ancestor is not None diff --git a/openedx/core/djangoapps/credit/verification_access.py b/openedx/core/djangoapps/credit/verification_access.py new file mode 100644 index 0000000000..5a5c625718 --- /dev/null +++ b/openedx/core/djangoapps/credit/verification_access.py @@ -0,0 +1,187 @@ +""" +Create in-course reverification access groups in a course. + +We model the rules as a set of user partitions, one for each +verification checkpoint in a course. + +For example, suppose that a course has two verification checkpoints, +one at midterm A and one at the midterm B. + +Then the user partitions would look like this: + +Midterm A: |-- ALLOW --|-- DENY --| +Midterm B: |-- ALLOW --|-- DENY --| + +where the groups are defined as: + +* ALLOW: The user has access to content gated by the checkpoint. +* DENY: The user does not have access to content gated by the checkpoint. + +""" +import logging + +from util.db import generate_int_id +from openedx.core.djangoapps.credit.utils import get_course_blocks +from xmodule.modulestore.django import modulestore +from xmodule.modulestore import ModuleStoreEnum +from xmodule.partitions.partitions import Group, UserPartition + + +log = logging.getLogger(__name__) + + +VERIFICATION_SCHEME_NAME = "verification" +VERIFICATION_BLOCK_CATEGORY = "edx-reverification-block" + + +def update_verification_partitions(course_key): + """ + Create a user partition for each verification checkpoint in the course. + + This will modify the published version of the course descriptor. + It ensures that any in-course reverification XBlocks in the course + have an associated user partition. Other user partitions (e.g. cohorts) + will be preserved. Partitions associated with deleted reverification checkpoints + will be marked as inactive and will not be used to restrict access. + + Arguments: + course_key (CourseKey): identifier for the course. + + Returns: + None + """ + # Batch all the queries we're about to do and suppress + # the "publish" signal to avoid an infinite call loop. + with modulestore().bulk_operations(course_key, emit_signals=False): + + # Retrieve all in-course reverification blocks in the course + icrv_blocks = get_course_blocks(course_key, VERIFICATION_BLOCK_CATEGORY) + + # Update the verification definitions in the course descriptor + # This will also clean out old verification partitions if checkpoints + # have been deleted. + _set_verification_partitions(course_key, icrv_blocks) + + +def _unique_partition_id(course): + """Return a unique user partition ID for the course. """ + # Exclude all previously used IDs, even for partitions that have been disabled + # (e.g. if the course author deleted an in-course reverifification block but + # there are courseware components that reference the disabled partition). + used_ids = set(p.id for p in course.user_partitions) + return generate_int_id(used_ids=used_ids) + + +def _other_partitions(verified_partitions, exclude_partitions, course_key): + """ + Retrieve all partitions NOT associated with the current set of ICRV blocks. + + Any partition associated with a deleted ICRV block will be marked as inactive + so its access rules will no longer be enforced. + + Arguments: + all_partitions (list of UserPartition): All verified partitions defined in the course. + exclude_partitions (list of UserPartition): Partitions to exclude (e.g. the ICRV partitions already added) + course_key (CourseKey): Identifier for the course (used for logging). + + Returns: list of `UserPartition`s + + """ + results = [] + partition_by_id = { + p.id: p for p in verified_partitions + } + other_partition_ids = set(p.id for p in verified_partitions) - set(p.id for p in exclude_partitions) + + for pid in other_partition_ids: + partition = partition_by_id[pid] + results.append( + UserPartition( + id=partition.id, + name=partition.name, + description=partition.description, + scheme=partition.scheme, + parameters=partition.parameters, + groups=partition.groups, + active=False, + ) + ) + log.info( + ( + "Disabled partition %s in course %s because the " + "associated in-course-reverification checkpoint does not exist." + ), + partition.id, course_key + ) + + return results + + +def _set_verification_partitions(course_key, icrv_blocks): + """ + Create or update user partitions in the course. + + Ensures that each ICRV block in the course has an associated user partition + with the groups ALLOW and DENY. + + Arguments: + course_key (CourseKey): Identifier for the course. + icrv_blocks (list of XBlock): In-course reverification blocks, e.g. reverification checkpoints. + + Returns: + list of UserPartition + """ + scheme = UserPartition.get_scheme(VERIFICATION_SCHEME_NAME) + if scheme is None: + log.error("Could not retrieve user partition scheme with ID %s", VERIFICATION_SCHEME_NAME) + return [] + + course = modulestore().get_course(course_key) + if course is None: + log.error("Could not find course %s", course_key) + return [] + + verified_partitions = course.get_user_partitions_for_scheme(scheme) + partition_id_for_location = { + p.parameters["location"]: p.id + for p in verified_partitions + if "location" in p.parameters + } + + partitions = [] + for block in icrv_blocks: + partition = UserPartition( + id=partition_id_for_location.get( + unicode(block.location), + _unique_partition_id(course) + ), + name=block.related_assessment, + description=u"Verification checkpoint at {}".format(block.related_assessment), + scheme=scheme, + parameters={"location": unicode(block.location)}, + groups=[ + Group(scheme.ALLOW, "Completed verification at {}".format(block.related_assessment)), + Group(scheme.DENY, "Did not complete verification at {}".format(block.related_assessment)), + ] + ) + partitions.append(partition) + + log.info( + ( + "Configured partition %s for course %s using a verified partition scheme " + "for the in-course-reverification checkpoint at location %s" + ), + partition.id, + course_key, + partition.parameters["location"] + ) + + # Preserve existing, non-verified partitions from the course + # Mark partitions for deleted in-course reverification as disabled. + partitions += _other_partitions(verified_partitions, partitions, course_key) + course.set_user_partitions_for_scheme(partitions, scheme) + modulestore().update_item(course, ModuleStoreEnum.UserID.system) + + log.info("Saved updated partitions for the course %s", course_key) + + return partitions diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 1357eb107f..7adcab832f 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -53,7 +53,7 @@ git+https://github.com/edx/edx-oauth2-provider.git@0.5.6#egg=oauth2-provider==0. git+https://github.com/edx/edx-lint.git@ed8c8d2a0267d4d42f43642d193e25f8bd575d9b#egg=edx_lint==0.2.3 -e git+https://github.com/edx/xblock-utils.git@213a97a50276d6a2504d8133650b2930ead357a0#egg=xblock-utils -e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive --e git+https://github.com/edx/edx-reverification-block.git@1e8f5a7fd589951a90bd31a0824a2c01ac9598ce#egg=edx-reverification-block +-e git+https://github.com/edx/edx-reverification-block.git@30fcf2fea305ed6649adcee9c831afaefba635c5#egg=edx-reverification-block git+https://github.com/edx/ecommerce-api-client.git@1.1.0#egg=ecommerce-api-client==1.1.0 -e git+https://github.com/edx/edx-user-state-client.git@30c0ad4b9f57f8d48d6943eb585ec8a9205f4469#egg=edx-user-state-client -e git+https://github.com/edx/edx-organizations.git@release-2015-08-03#egg=edx-organizations diff --git a/setup.py b/setup.py index 1b2ef6ec30..6bae27c051 100644 --- a/setup.py +++ b/setup.py @@ -6,13 +6,14 @@ from setuptools import setup setup( name="Open edX", - version="0.4", + version="0.5", install_requires=["setuptools"], requires=[], # NOTE: These are not the names we should be installing. This tree should # be reorganized to be a more conventional Python tree. packages=[ "openedx.core.djangoapps.course_groups", + "openedx.core.djangoapps.credit", "openedx.core.djangoapps.user_api", "lms", "cms", @@ -45,6 +46,7 @@ setup( "openedx.user_partition_scheme": [ "random = openedx.core.djangoapps.user_api.partition_schemes:RandomUserPartitionScheme", "cohort = openedx.core.djangoapps.course_groups.partition_scheme:CohortPartitionScheme", + "verification = openedx.core.djangoapps.credit.partition_schemes:VerificationPartitionScheme", ], } ) From 36a7d1223e0d17a14347c9bbcdd56d30241016bf Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 20 Aug 2015 11:44:16 -0400 Subject: [PATCH 60/80] Use latest edx-lint. Adds getattr/setattr string literal checking. There are 80 of these new violations in the tree, so up the lint threshold also. --- requirements/edx/github.txt | 2 +- scripts/all-tests.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 137b977c65..852f305acf 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -50,7 +50,7 @@ git+https://github.com/edx/edx-oauth2-provider.git@0.5.6#egg=oauth2-provider==0. -e git+https://github.com/pmitros/RecommenderXBlock.git@518234bc354edbfc2651b9e534ddb54f96080779#egg=recommender-xblock -e git+https://github.com/edx/edx-search.git@release-2015-07-22#egg=edx-search -e git+https://github.com/edx/edx-milestones.git@release-2015-06-17#egg=edx-milestones -git+https://github.com/edx/edx-lint.git@ed8c8d2a0267d4d42f43642d193e25f8bd575d9b#egg=edx_lint==0.2.3 +git+https://github.com/edx/edx-lint.git@b109a40c61277c52dcb396bf15e33755f5dbf5fa#egg=edx_lint==0.2.4 -e git+https://github.com/edx/xblock-utils.git@213a97a50276d6a2504d8133650b2930ead357a0#egg=xblock-utils -e git+https://github.com/edx-solutions/xblock-google-drive.git@138e6fa0bf3a2013e904a085b9fed77dab7f3f21#egg=xblock-google-drive -e git+https://github.com/edx/edx-reverification-block.git@1e8f5a7fd589951a90bd31a0824a2c01ac9598ce#egg=edx-reverification-block diff --git a/scripts/all-tests.sh b/scripts/all-tests.sh index 382b63bc46..64e92514ca 100755 --- a/scripts/all-tests.sh +++ b/scripts/all-tests.sh @@ -11,7 +11,7 @@ set -e ############################################################################### # Violations thresholds for failing the build -export PYLINT_THRESHOLD=6200 +export PYLINT_THRESHOLD=6275 export JSHINT_THRESHOLD=3700 doCheckVars() { From 9310c82f0f4a50bf665eda70ea9de293d794567b Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Wed, 19 Aug 2015 14:31:40 -0400 Subject: [PATCH 61/80] Update credit services to gracefully handle operations on a course which is actually not credit enabled --- openedx/core/djangoapps/credit/services.py | 42 ++++++++++++++----- .../djangoapps/credit/tests/test_services.py | 33 ++++++++++++++- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/openedx/core/djangoapps/credit/services.py b/openedx/core/djangoapps/credit/services.py index e9363cdee2..211812dd6b 100644 --- a/openedx/core/djangoapps/credit/services.py +++ b/openedx/core/djangoapps/credit/services.py @@ -31,6 +31,22 @@ class CreditService(object): Course Credit XBlock service """ + def is_credit_course(self, course_key_or_id): + """ + Returns boolean if the passed in course_id (string) or course_key is + a credit_course + """ + + # This seems to need to be here otherwise we get + # circular references when starting up the app + from openedx.core.djangoapps.credit.api.eligibility import ( + is_credit_course, + ) + + course_key = _get_course_key(course_key_or_id) + + return is_credit_course(course_key) + def get_credit_state(self, user_id, course_key_or_id): """ Return all information about the user's credit state inside of a given @@ -46,6 +62,7 @@ class CreditService(object): { 'enrollment_mode': the mode that the user is enrolled in the course 'profile_fullname': the name that the student registered under, used for verification + 'is_credit_course': if the course has been marked as a credit bearing course 'credit_requirement_status': the user's status in fulfilling those requirements } """ @@ -72,12 +89,10 @@ class CreditService(object): # not enrolled return None - if not is_credit_course(course_key): - return None - return { 'enrollment_mode': enrollment.mode, 'profile_fullname': user.profile.name, + 'is_credit_course': is_credit_course(course_key), 'credit_requirement_status': get_credit_requirement_status(course_key, user.username) } @@ -90,6 +105,19 @@ class CreditService(object): For more information, see documentation on this method name in api.eligibility.py """ + # This seems to need to be here otherwise we get + # circular references when starting up the app + from openedx.core.djangoapps.credit.api.eligibility import ( + is_credit_course, + set_credit_requirement_status as api_set_credit_requirement_status + ) + + course_key = _get_course_key(course_key_or_id) + + # quick exit, if course is not credit enabled + if not is_credit_course(course_key): + return + # always log any update activity to the credit requirements # table. This will be to help debug any issues that might # arise in production @@ -114,14 +142,6 @@ class CreditService(object): except ObjectDoesNotExist: return None - course_key = _get_course_key(course_key_or_id) - - # This seems to need to be here otherwise we get - # circular references when starting up the app - from openedx.core.djangoapps.credit.api.eligibility import ( - set_credit_requirement_status as api_set_credit_requirement_status - ) - api_set_credit_requirement_status( user.username, course_key, diff --git a/openedx/core/djangoapps/credit/tests/test_services.py b/openedx/core/djangoapps/credit/tests/test_services.py index bffbb012aa..c413bef032 100644 --- a/openedx/core/djangoapps/credit/tests/test_services.py +++ b/openedx/core/djangoapps/credit/tests/test_services.py @@ -63,7 +63,9 @@ class CreditServiceTests(ModuleStoreTestCase): self.credit_course.enabled = False self.credit_course.save() - self.assertIsNone(self.service.get_credit_state(self.user.id, self.course.id)) + credit_state = self.service.get_credit_state(self.user.id, self.course.id) + self.assertIsNotNone(credit_state) + self.assertFalse(credit_state['is_credit_course']) def test_no_profile_name(self): """ @@ -82,6 +84,8 @@ class CreditServiceTests(ModuleStoreTestCase): Happy path through the service """ + self.assertTrue(self.service.is_credit_course(self.course.id)) + CourseEnrollment.enroll(self.user, self.course.id) # set course requirements @@ -110,12 +114,39 @@ class CreditServiceTests(ModuleStoreTestCase): credit_state = self.service.get_credit_state(self.user.id, self.course.id) self.assertIsNotNone(credit_state) + self.assertTrue(credit_state['is_credit_course']) self.assertEqual(credit_state['enrollment_mode'], 'honor') self.assertEqual(credit_state['profile_fullname'], 'Foo Bar') self.assertEqual(len(credit_state['credit_requirement_status']), 1) self.assertEqual(credit_state['credit_requirement_status'][0]['name'], 'grade') self.assertEqual(credit_state['credit_requirement_status'][0]['status'], 'satisfied') + def test_set_status_non_credit(self): + """ + assert that we can still try to update a credit status but return quickly if + a course is not credit eligible + """ + + no_credit_course = CourseFactory.create(org='NoCredit', number='NoCredit', display_name='Demo_Course') + + self.assertFalse(self.service.is_credit_course(no_credit_course.id)) + + CourseEnrollment.enroll(self.user, no_credit_course.id) + + # this should be a no-op + self.service.set_credit_requirement_status( + self.user.id, + no_credit_course.id, + 'grade', + 'grade' + ) + + credit_state = self.service.get_credit_state(self.user.id, no_credit_course.id) + + self.assertIsNotNone(credit_state) + self.assertFalse(credit_state['is_credit_course']) + self.assertEqual(len(credit_state['credit_requirement_status']), 0) + def test_bad_user(self): """ Try setting requirements status with a bad user_id From 5c855bdc7bdb68a38ede37b5912317a90e90b2c9 Mon Sep 17 00:00:00 2001 From: Peter Fogg Date: Thu, 20 Aug 2015 15:15:14 -0400 Subject: [PATCH 62/80] Fix quality violation. --- lms/djangoapps/django_comment_client/base/tests.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/django_comment_client/base/tests.py b/lms/djangoapps/django_comment_client/base/tests.py index 3091b78217..0b48675e31 100644 --- a/lms/djangoapps/django_comment_client/base/tests.py +++ b/lms/djangoapps/django_comment_client/base/tests.py @@ -322,7 +322,10 @@ class ViewsTestCaseMixin(object): # the thread did, overwriting any changes. with patch.object(Thread, 'save'): response = self.client.post( - reverse("update_thread", kwargs={"thread_id": "dummy", "course_id": self.course_id.to_deprecated_string()}), + reverse("update_thread", kwargs={ + "thread_id": "dummy", + "course_id": self.course_id.to_deprecated_string() + }), data={"body": "foo", "title": "foo", "commentable_id": "some_topic"} ) self.assertEqual(response.status_code, 200) From cf259b42e7b830abc33b507b486f270241f48dce Mon Sep 17 00:00:00 2001 From: Will Daly Date: Thu, 20 Aug 2015 12:37:53 -0700 Subject: [PATCH 63/80] Upgrade django-babel-underscore to 0.3.0 --- requirements/edx/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 0a0fc2707b..aaebb6858f 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -13,7 +13,7 @@ celery==3.1.18 cssselect==0.9.1 dealer==2.0.4 defusedxml==0.4.1 -django-babel-underscore==0.1.0 +django-babel-underscore==0.3.0 django-celery==3.1.16 django-countries==3.3 django-extensions==1.2.5 From f4b0d55a2da19e49cb7d24ebeab19651246cc2e6 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Thu, 20 Aug 2015 12:43:50 -0700 Subject: [PATCH 64/80] Upgrade django-cors-headers to 1.1.0 --- requirements/edx/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 0a0fc2707b..9cda4f2198 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -116,7 +116,7 @@ transifex-client==0.10 ipaddr==2.1.11 # Used to allow to configure CORS headers for cross-domain requests -django-cors-headers==0.13 +django-cors-headers==1.1.0 # Debug toolbar django_debug_toolbar==1.2.2 From 3547821b1acee92a89993538e8fa0f6f2a7ad571 Mon Sep 17 00:00:00 2001 From: Alison Hodges Date: Wed, 19 Aug 2015 12:03:24 -0400 Subject: [PATCH 65/80] Adds a comment to reduce confusion over remaining role name differences --- cms/templates/manage_users.html | 1 + .../instructor/instructor_dashboard_2/membership.html | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cms/templates/manage_users.html b/cms/templates/manage_users.html index 6f838ec0d5..9c9f49a26f 100644 --- a/cms/templates/manage_users.html +++ b/cms/templates/manage_users.html @@ -95,6 +95,7 @@ from django.core.urlresolvers import reverse

      ${_("Course Team Roles")}

      ${_("Course team members with the Staff role are course co-authors. They have full writing and editing privileges on all course content.")}

      + ## Note that the "Admin" role below is identified as "Instructor" in the Django admin panel.

      ${_("Admins are course team members who can add and remove other course team members.")}

      ${_("All course team members are automatically enrolled in the course and can access content in Studio, the LMS, and Insights.")}

      diff --git a/lms/templates/instructor/instructor_dashboard_2/membership.html b/lms/templates/instructor/instructor_dashboard_2/membership.html index 03fb666144..102903320f 100644 --- a/lms/templates/instructor/instructor_dashboard_2/membership.html +++ b/lms/templates/instructor/instructor_dashboard_2/membership.html @@ -193,6 +193,7 @@ from openedx.core.djangoapps.course_groups.partition_scheme import get_cohorted_ data-add-button-label="${_("Add Staff")}" >
      + ## Note that "Admin" is identified as "Instructor" in the Django admin panel.
      + > +
      Date: Thu, 20 Aug 2015 20:21:54 -0400 Subject: [PATCH 66/80] alter columns in proctoring exam report --- lms/djangoapps/instructor/views/api.py | 12 ++++-------- .../instructor_analytics/tests/test_basic.py | 12 ++++-------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py index 712b9e26fe..f4a4887d81 100644 --- a/lms/djangoapps/instructor/views/api.py +++ b/lms/djangoapps/instructor/views/api.py @@ -1278,17 +1278,13 @@ def get_proctored_exam_results(request, course_id): get the proctored exam resultsreport for the particular course. """ query_features = [ - 'created', - 'modified', - 'started_at', - 'exam_name', 'user_email', - 'completed_at', - 'external_id', + 'exam_name', 'allowed_time_limit_mins', - 'status', - 'attempt_code', 'is_sample_attempt', + 'started_at', + 'completed_at', + 'status', ] course_key = CourseKey.from_string(course_id) diff --git a/lms/djangoapps/instructor_analytics/tests/test_basic.py b/lms/djangoapps/instructor_analytics/tests/test_basic.py index 80b8cfaaff..3b9595e41a 100644 --- a/lms/djangoapps/instructor_analytics/tests/test_basic.py +++ b/lms/djangoapps/instructor_analytics/tests/test_basic.py @@ -130,17 +130,13 @@ class TestAnalyticsBasic(ModuleStoreTestCase): def test_get_student_exam_attempt_features(self): query_features = [ - 'created', - 'modified', - 'started_at', - 'exam_name', 'user_email', - 'completed_at', - 'external_id', + 'exam_name', 'allowed_time_limit_mins', - 'status', - 'attempt_code', 'is_sample_attempt', + 'started_at', + 'completed_at', + 'status', ] proctored_exam_id = create_exam(self.course_key, 'Test Content', 'Test Exam', 1) From 02d47d62f4731e4d5a069b7571b60f41ae586475 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Thu, 20 Aug 2015 21:24:43 -0400 Subject: [PATCH 67/80] Update edx-proctoring version to 0.7.1 --- requirements/edx/github.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index c3478996dd..9d8895bc85 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -58,7 +58,7 @@ git+https://github.com/edx/ecommerce-api-client.git@1.1.0#egg=ecommerce-api-clie -e git+https://github.com/edx/edx-user-state-client.git@30c0ad4b9f57f8d48d6943eb585ec8a9205f4469#egg=edx-user-state-client -e git+https://github.com/edx/edx-organizations.git@release-2015-08-03#egg=edx-organizations -git+https://github.com/edx/edx-proctoring.git@0.6.2#egg=edx-proctoring==0.6.2 +git+https://github.com/edx/edx-proctoring.git@0.7.1#egg=edx-proctoring==0.7.1 # Third Party XBlocks -e git+https://github.com/mitodl/edx-sga@172a90fd2738f8142c10478356b2d9ed3e55334a#egg=edx-sga From 90b94a46bcdb5c65b6e47ddf6e6bb14c49d29a4e Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Thu, 20 Aug 2015 11:21:29 -0400 Subject: [PATCH 68/80] Potential fix for flaky TeamDiscussionView js tests Adding waitsFor check in the beforeEach method. The condition I'm waiting for here is shamelessly borrowed from bok-choy's wait_for_ajax._is_ajax_finished() method: https://github.com/edx/bok-choy/blob/master/bok_choy/page_object.py#L431 This seems to fix the errors I was able to generate with the set_timeout, which themselves looked ver similar to the failing master tests, so I *think* this will fix our woes, but since I was never able to get the tests to fail exactly the same way I can't be sure. Since there don't seem to be any drawbacks, this is going into mainline as-is and we'll monitor for the sporadic failures over the next few weeks. --- .../js/spec/views/team_discussion_spec.js | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js b/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js index 889577224b..a8bc9d888f 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js @@ -8,12 +8,20 @@ define([ var discussionView, createDiscussionView, createPost, expandReplies, postReply; beforeEach(function() { - setFixtures('
      '); - $('.discussion-module').data('course-id', TeamSpecHelpers.testCourseID); - $('.discussion-module').data('discussion-id', TeamSpecHelpers.testTeamDiscussionID); - $('.discussion-module').data('user-create-comment', true); - $('.discussion-module').data('user-create-subcomment', true); - DiscussionSpecHelper.setUnderscoreFixtures(); + runs(function() { + setFixtures('
      '); + $('.discussion-module').data('course-id', TeamSpecHelpers.testCourseID); + $('.discussion-module').data('discussion-id', TeamSpecHelpers.testTeamDiscussionID); + $('.discussion-module').data('user-create-comment', true); + $('.discussion-module').data('user-create-subcomment', true); + DiscussionSpecHelper.setUnderscoreFixtures(); + }); + + waitsFor( + function() {return typeof(jQuery)!='undefined' && jQuery.active==0;}, + "Ajax did not finish", + 10000 + }) }); createDiscussionView = function(requests, threads) { From 7c61e08dcd49dae56985d79cb45734bbf8bd4262 Mon Sep 17 00:00:00 2001 From: Mushtaq Ali Date: Thu, 20 Aug 2015 16:14:22 +0500 Subject: [PATCH 69/80] Fix course info sidebar #3095 --- lms/static/sass/course/_info.scss | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lms/static/sass/course/_info.scss b/lms/static/sass/course/_info.scss index c67617bc9f..6518d908f3 100644 --- a/lms/static/sass/course/_info.scss +++ b/lms/static/sass/course/_info.scss @@ -78,6 +78,8 @@ div.info-wrapper { } section.handouts { + padding: 20px 30px; + margin: 0; @extend .sidebar; border-radius: 0 4px 4px 0; @include border-left(1px solid #ddd); @@ -96,15 +98,20 @@ div.info-wrapper { h1 { @include text-align(left); margin-bottom: 0; - padding: 32px 26px 20px 26px; + padding: 12px 26px 20px 0; font-size: 18px; font-style: normal; font-weight: bold; } + ul { + background-color: #f6f6f6; + margin-bottom: 14px; + } + ol { + margin-bottom: 14px; li { - margin: 0 26px 14px 26px; @include text-align(left); a { From 8f3310c04bcf0a2f400794a0323e890fd7c00ad6 Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Fri, 21 Aug 2015 10:49:56 -0400 Subject: [PATCH 70/80] Update translations (autogenerated message) --- conf/locale/ar/LC_MESSAGES/django.mo | Bin 645195 -> 642805 bytes conf/locale/ar/LC_MESSAGES/django.po | 180 ++---- conf/locale/ar/LC_MESSAGES/djangojs.mo | Bin 175075 -> 175081 bytes conf/locale/ar/LC_MESSAGES/djangojs.po | 35 +- conf/locale/eo/LC_MESSAGES/django.mo | Bin 981247 -> 981616 bytes conf/locale/eo/LC_MESSAGES/django.po | 220 +++---- conf/locale/eo/LC_MESSAGES/djangojs.mo | Bin 266492 -> 268276 bytes conf/locale/eo/LC_MESSAGES/djangojs.po | 77 ++- conf/locale/es_419/LC_MESSAGES/django.mo | Bin 506510 -> 541133 bytes conf/locale/es_419/LC_MESSAGES/django.po | 602 ++++++++++++------ conf/locale/es_419/LC_MESSAGES/djangojs.mo | Bin 134872 -> 147352 bytes conf/locale/es_419/LC_MESSAGES/djangojs.po | 220 ++++--- conf/locale/fr/LC_MESSAGES/django.mo | Bin 351028 -> 350204 bytes conf/locale/fr/LC_MESSAGES/django.po | 156 ++--- conf/locale/fr/LC_MESSAGES/djangojs.mo | Bin 116996 -> 116996 bytes conf/locale/fr/LC_MESSAGES/djangojs.po | 25 +- conf/locale/he/LC_MESSAGES/django.mo | Bin 6292 -> 6225 bytes conf/locale/he/LC_MESSAGES/django.po | 154 ++--- conf/locale/he/LC_MESSAGES/djangojs.mo | Bin 1515 -> 1515 bytes conf/locale/he/LC_MESSAGES/djangojs.po | 25 +- conf/locale/hi/LC_MESSAGES/django.mo | Bin 203850 -> 203291 bytes conf/locale/hi/LC_MESSAGES/django.po | 156 ++--- conf/locale/hi/LC_MESSAGES/djangojs.mo | Bin 40937 -> 40937 bytes conf/locale/hi/LC_MESSAGES/djangojs.po | 25 +- conf/locale/ko_KR/LC_MESSAGES/django.mo | Bin 513138 -> 509967 bytes conf/locale/ko_KR/LC_MESSAGES/django.po | 696 ++++++++++----------- conf/locale/ko_KR/LC_MESSAGES/djangojs.mo | Bin 70742 -> 71047 bytes conf/locale/ko_KR/LC_MESSAGES/djangojs.po | 99 +-- conf/locale/pt_BR/LC_MESSAGES/django.mo | Bin 216350 -> 215977 bytes conf/locale/pt_BR/LC_MESSAGES/django.po | 156 ++--- conf/locale/pt_BR/LC_MESSAGES/djangojs.mo | Bin 51859 -> 51859 bytes conf/locale/pt_BR/LC_MESSAGES/djangojs.po | 26 +- conf/locale/rtl/LC_MESSAGES/django.mo | Bin 656817 -> 656636 bytes conf/locale/rtl/LC_MESSAGES/django.po | 243 ++++--- conf/locale/rtl/LC_MESSAGES/djangojs.mo | Bin 176252 -> 177119 bytes conf/locale/rtl/LC_MESSAGES/djangojs.po | 72 ++- conf/locale/ru/LC_MESSAGES/django.mo | Bin 46041 -> 45705 bytes conf/locale/ru/LC_MESSAGES/django.po | 160 ++--- conf/locale/ru/LC_MESSAGES/djangojs.mo | Bin 17014 -> 17014 bytes conf/locale/ru/LC_MESSAGES/djangojs.po | 25 +- conf/locale/zh_CN/LC_MESSAGES/django.mo | Bin 263330 -> 262917 bytes conf/locale/zh_CN/LC_MESSAGES/django.po | 157 ++--- conf/locale/zh_CN/LC_MESSAGES/djangojs.mo | Bin 99181 -> 99181 bytes conf/locale/zh_CN/LC_MESSAGES/djangojs.po | 29 +- 44 files changed, 1823 insertions(+), 1715 deletions(-) diff --git a/conf/locale/ar/LC_MESSAGES/django.mo b/conf/locale/ar/LC_MESSAGES/django.mo index 85021243b8d6c3940bfadc2477b04a2febf2c358..e45d076fda1f41171865de2f70ff8276f79bd955 100644 GIT binary patch delta 81970 zcmXWkb)Xg17RT{9MN3P^y>xfyrKKB0rMpAA4j|nf(k&s4beA;pL`p!q5u}xP-`}ix z|9oc8nb>>nwf4-p_sToDA@l3`nZwr;24^_@??PP1Nri`dvz^FsIz821$Jt-P=d8g4 z*cLmN^f_bj0=~qirF_mKtXtaWEW=V!K4%WzM(rO|#^>C_c4d9eYOGn#=d8egaf#!E zoyFyS&H{Fnui$g;;BDN6zgF})uW)!JpR)z~edTl1r(BhN&QwfQ#pg`K^|%{LRrNXB z@js03bDS;Jd`>1jQr+jo#wRs=&Urq6SJOIhvX;*o%>A7nwS7(w4tRmZIUr44JMbH9 zMmuLc8~H@cP5TYD#!U5nP7fT9OF92D`e`q1=yMX_3j7kcV-r3(X?Fg8xcG&m1KxC>+A0Zfl4F+To{x{lM> zIu;$(&WIXFj>f*QJHm48&`7_-tk?_V;6l_1Yf&B9jO3>CD=OLk#IZP(_$t(Kn%W4{ zA$jan#};@P4`AkIJ|_Yn;%to7JnVD2u(7nc&q;_0Tlk#pm=Sfs+L#C1VrHC;heJodYV1LT^Kp*N~5h&5m=TyUOm{$k#X-_PKgK!P%##skgxs^cOs0k{xT~G_w zFx0v*3H#v+RB}cPw4}^}I=%)fSzCnJP@NCL2waX?@hIws&rwMh802#fVJb{a&;P

      >0kvhHemVnDs0RszW7EOK&UB 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 delta 83876 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 mEJ2NYt7qtxw{a5{ve%d$69sJ~ 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 J*c$#3*-fxXE; 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

      agUKN}VKRZS_x*9hy^EaRhi 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\n" "Language-Team: Arabic (http://www.transifex.com/open-edx/edx-platform/language/ar/)\n" @@ -501,10 +501,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "يجب أن يتألّف اسمك القانوني من حرفين على الأقلّ" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"يجب ألّا يتألّف اسم المستخدم سوى من أحرف بين A-Z وأرقام بين 0-9، من دون " -"تضمين مسافات. " #: common/djangoapps/student/forms.py #, python-format @@ -5586,43 +5586,6 @@ msgstr "{currency_symbol}{price}" msgid "Free" msgstr "مجّانًا" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "{first_institutions}، و{last_institution}" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "{first_institution} و{second_institution}" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -"أرغب باستلام رسائل إلكترونية من {institution_series} للتعرّف على برامجهم " -"الأخرى" -msgstr[1] "" -"أرغب باستلام رسائل إلكترونية من {institution_series} للتعرّف على برامجها " -"الأخرى" -msgstr[2] "" -"أرغب باستلام رسائل إلكترونية من {institution_series} للتعرّف على برامجهم " -"الأخرى" -msgstr[3] "" -"أرغب باستلام رسائل إلكترونية من {institution_series} للتعرّف على برامجهم " -"الأخرى" -msgstr[4] "" -"أرغب باستلام رسائل إلكترونية من {institution_series} للتعرّف على برامجهم " -"الأخرى" -msgstr[5] "" -"أودّ استلام رسائل البريد الإلكتروني من {institution_series} والتعرّف على " -"برامجهم الأخرى." - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "موقع غير صحيح." @@ -8426,10 +8389,6 @@ msgstr "الرقم التعريفي الذي جرى توفيره حول المو msgid "text_search is not yet supported." msgstr "إنّ خاصّية البحث في النصّ text_search غير مدعومة بعد." -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "إنّ خاصّية النشاط الأخير last_activity غير مدعومة بعد." - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -8442,6 +8401,10 @@ msgstr "إنّ خاصّية تقديم طلبية {ordering} غير مدعومة msgid "The supplied course_id {course_id} is not valid." msgstr "الرقم التعريفي الذي جرى توفيره حول المساق {course_id} غير صالح." +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "يجب تحديد اسم المستخدم أو الرقم التعريفي للفريق." @@ -8454,6 +8417,10 @@ msgstr "اسم المستخدم مطلوب." msgid "Team id is required." msgstr "الرقم التعريفي للفريق مطلوب." +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "سبق أنّ تسجَّل المستخدم {username} كعضو في أحد فرق هذا المساق." @@ -9515,7 +9482,7 @@ msgstr "فاطمة الفهري" #. below a field meant to hold the user's full name. #: openedx/core/djangoapps/user_api/views.py lms/templates/register.html msgid "Needed for any certificates you may earn" -msgstr "مطلوب لأي شهادة قد تنالها " +msgstr "مطلوب لأي شهادة قد تنالها - يفضل باللغة العربية" #. Translators: This label appears above a field on the registration form #. meant to hold the user's public username. @@ -9577,9 +9544,7 @@ msgstr "أوافق على {terms_of_service} الخاصين بمنصّة {platfo #: openedx/core/djangoapps/user_api/views.py msgid "You must agree to the {platform_name} {terms_of_service}." -msgstr "" -"يجب الموافقة على شروط الخدمة {terms_of_service} الخاصة بمنصّة " -"{platform_name}. " +msgstr "يجب الموافقة على {terms_of_service} الخاصين بمنصّة {platform_name}. " #: openedx/core/djangoapps/user_api/accounts/api.py msgid "The '{field_name}' field cannot be edited." @@ -9716,6 +9681,10 @@ msgstr "موقع المساق الذي تم تقديمه غير صحيح" msgid "Missing branch on fresh clone" msgstr "هناك فرع ناقص على النسخة الجديدة" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -10099,6 +10068,11 @@ msgstr "إلغاء" msgid "Course Number" msgstr "رقم المساق " +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr " خطأ:" @@ -11970,6 +11944,11 @@ msgstr "سياسة التقييم" msgid "Batch Enrollment" msgstr "التسجيل على دفعات" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "عناوين البريد الإلكتروني/أسماء المستخدمين" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -11987,11 +11966,6 @@ msgstr "" "لن تتلقى إشعاراً عن رسائل البريد الإلكتروني التي ترتد ولا يتم استلامها، لذا " "يرجى التحقق جيّداً من عدم وجود أخطاء إملائيّة." -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "عناوين البريد الإلكتروني/أسماء المستخدمين" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -12039,7 +12013,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "تسجيل" @@ -12048,6 +12021,10 @@ msgstr "تسجيل" msgid "Student List Management" msgstr "إدارة قوائم الطلاب" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "تنبيه" @@ -12441,7 +12418,6 @@ msgid "This section is graded." msgstr "هذا القسم جرى تقييمه." #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "نأسف لحدوث خطأ. يُرجى إعادة المحاولة لاحقًا. " @@ -12482,8 +12458,8 @@ msgid "Enrollment is Closed" msgstr "أُغلِق باب التسجيل" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" -msgstr "إضافة {course_name} إلى السلّة ({price})" +msgid "Add {course_name} to Cart ({price} USD)" +msgstr "" #: lms/templates/courseware/course_about.html msgid "Register for {course_name}" @@ -12561,7 +12537,6 @@ msgid "Additional Resources" msgstr "مصادر إضافية" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "تسجيل" @@ -12967,54 +12942,6 @@ msgstr "" msgid "Course errors" msgstr "أخطاء المساق " -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "لمحة عن {course_id} " - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "قريبًا" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "لمحة عن {course_number} " - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "إمكانية الدخول إلى محتويات المساق " - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "أنت مسجَّل" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "سجِّل في" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "واختر مسارك كطالب في هذا المساق" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "وتابع لاستكمال عملية التحقّق" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "أُغلِق باب التسجيل" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "أخبار- MITx 6.002x " @@ -13329,6 +13256,10 @@ msgstr "انتهى - {end_date}" msgid "Started - {start_date}" msgstr "بدأ - {start_date}" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "قريبًا" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "يبدأ - {start_date}" @@ -13540,8 +13471,8 @@ msgstr "استكمال الحصول على الوحدات الدراسية" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -13737,10 +13668,6 @@ msgstr "حسب أكبر عدد من الأنشطة" msgid "by most votes" msgstr "حسب أكبر عدد من الأصوات" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "," - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -14808,6 +14735,10 @@ msgstr "اسم المساق:" msgid "Course Display Name:" msgstr "الاسم الظاهر للمساق:" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "هل بدأ المساق؟" @@ -14824,6 +14755,10 @@ msgstr "لا" msgid "Has the course ended?" msgstr "هل انتهى المساق؟" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "الدرجات المحدّدة لسلّم التقييم:" @@ -17954,10 +17889,6 @@ msgstr "" msgid "View Live" msgstr "المشاهدة عبر بثّ مباشر" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "تاريخ بداية المساق:" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "تعديل تاريخ البداية" @@ -20442,6 +20373,21 @@ msgstr "" "لم تعد مجموعة المحتوى موجودة. يُرجى اختيار غيرها أو إتاحة إمكانية الدخول " "لجميع الطلّاب وأفراد طاقم المساق." +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/ar/LC_MESSAGES/djangojs.mo b/conf/locale/ar/LC_MESSAGES/djangojs.mo index 7e992cff14f54ec0596d1c95cd22605e8758fba4..5dc68dd392313ba8ea69ba680fca21bafb44afba 100644 GIT binary patch delta 10909 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 Jn&Mt8@qfBY^xyyh delta 10964 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 diff --git a/conf/locale/ar/LC_MESSAGES/djangojs.po b/conf/locale/ar/LC_MESSAGES/djangojs.po index 666ab70e07..9aa50546e7 100644 --- a/conf/locale/ar/LC_MESSAGES/djangojs.po +++ b/conf/locale/ar/LC_MESSAGES/djangojs.po @@ -80,8 +80,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 02:41+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Arabic (http://www.transifex.com/open-edx/edx-platform/language/ar/)\n" "MIME-Version: 1.0\n" @@ -2193,7 +2193,7 @@ msgstr "جرى الإسقاط على الهدف" #: common/static/js/src/jquery.timeago.locale.js #, c-format msgid "%s ago" -msgstr "منذ %s ثوانٍ " +msgstr "منذ %s " #. Translators: %s will be a time quantity, such as "4 minutes" or "1 day" #: common/static/js/src/jquery.timeago.locale.js @@ -2517,7 +2517,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -5985,7 +5985,7 @@ msgstr "هل أنت جديد على %(platformName)s؟" #: lms/templates/student_account/login.underscore msgid "Create an account" -msgstr "إنشاء حساب " +msgstr " أنشئ حساباً جديداً اﻵن." #: lms/templates/student_account/password_reset.underscore #: lms/templates/student_account/register.underscore @@ -6028,12 +6028,12 @@ msgstr "" #: lms/templates/student_account/register.underscore msgid "Create an account using" -msgstr "إنشاء حساب باستخدام" +msgstr "أنشئ حساباً باستخدام" #: lms/templates/student_account/register.underscore #, python-format msgid "Create account using %(providerName)s." -msgstr "إنشاء حساب باستخدام %(providerName)s." +msgstr "أنشئ حساباً باستخدام %(providerName)s." #: lms/templates/student_account/register.underscore msgid "or create a new one here" @@ -6568,7 +6568,7 @@ msgstr "الحالة" #: cms/templates/js/add-xblock-component-menu-problem.underscore msgid "Common Problem Types" -msgstr "أنواع المسائل الشائعة" +msgstr "المسائل الشائعة" #: cms/templates/js/add-xblock-component.underscore msgid "Add New Component" @@ -7442,6 +7442,25 @@ msgstr "" "يُرجى التحقّق من الملاحظات والتعليقات التالية بشأن التحقّق، وتطبيقها على " "الإعدادات الخاصة بمساقك:" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "تعديل الاسم" diff --git a/conf/locale/eo/LC_MESSAGES/django.mo b/conf/locale/eo/LC_MESSAGES/django.mo index 62d8af62ea4a423830c98d7c9f159b6b4c035269..3d1669bb3c2517b70477a52aa413f6a050d58d4c 100644 GIT binary patch delta 84306 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 sFN(gh&D372?{Ax_TkO@Kfkf+gsAzg~Us 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 z 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�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\n" "MIME-Version: 1.0\n" @@ -460,10 +460,12 @@ msgstr "" "ѕιт αмєт, ¢σηѕє¢тєтυя α#" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"Ûsérnämé shöüld önlý çönsïst öf À-Z änd 0-9, wïth nö späçés. Ⱡ'σяєм ιρѕυм " -"∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α#" +"Ûsérnämés müst çöntäïn önlý léttérs, nümßérs, ündérsçörés (_), änd hýphéns " +"(-). Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєт#" #: common/djangoapps/student/forms.py #, python-format @@ -3210,7 +3212,7 @@ msgstr "" "∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση " "υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє " "∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє ¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα" -" ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт ¢υρι∂αтαт ηση ρяσι∂єηт, ѕυηт ιη ¢#" +" ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт ¢υρι∂αтαт ηση ρяσι∂єηт, ѕυηт#" #: common/lib/xmodule/xmodule/course_module.py msgid "External Login Domain" @@ -6308,31 +6310,6 @@ msgstr "{currency_symbol}{price} Ⱡ'σяєм ιρѕυ#" msgid "Free" msgstr "Fréé Ⱡ'σяєм ι#" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "{first_institutions}, änd {last_institution} Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "{first_institution} änd {second_institution} Ⱡ'σяєм ιρѕυм ∂σłσя #" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -"Ì wöüld lïké tö réçéïvé émäïl fröm {institution_series} änd léärn äßöüt ïts " -"öthér prögräms. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυ#" -msgstr[1] "" -"Ì wöüld lïké tö réçéïvé émäïl fröm {institution_series} änd léärn äßöüt " -"théïr öthér prögräms. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυ#" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "Ìnvälïd löçätïön. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#" @@ -9558,11 +9535,6 @@ msgid "text_search is not yet supported." msgstr "" "téxt_séärçh ïs nöt ýét süppörtéd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тє#" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" -"läst_äçtïvïtý ïs nöt ýét süppörtéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєт#" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -9579,6 +9551,12 @@ msgstr "" "Thé süpplïéd çöürsé_ïd {course_id} ïs nöt välïd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт " "αмєт, ¢σηѕє¢тєтυя#" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" +"Ýöü äré älréädý ïn ä téäm ïn thïs çöürsé. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " +"¢σηѕє¢тєтυя #" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -9593,6 +9571,10 @@ msgstr "Ûsérnämé ïs réqüïréd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕι msgid "Team id is required." msgstr "Téäm ïd ïs réqüïréd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "Thïs téäm ïs älréädý füll. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -11028,6 +11010,10 @@ msgstr "Bäd çöürsé löçätïön prövïdéd Ⱡ'σяєм ιρѕυм ∂σ msgid "Missing branch on fresh clone" msgstr "Mïssïng ßränçh ön frésh çlöné Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢#" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "Délétéd gröüp Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -11462,6 +11448,11 @@ msgstr "Çänçél Ⱡ'σяєм ιρѕυ#" msgid "Course Number" msgstr "Çöürsé Nümßér Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "Çöürsé Stärt Däté: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "Érrör: Ⱡ'σяєм ιρѕυ#" @@ -12615,7 +12606,7 @@ msgstr "" #: lms/templates/provider_login.html #, python-format msgid "Return To %s" -msgstr "Rétürn Tö %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" +msgstr "Rétürn Tö %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" #: lms/templates/register-shib.html msgid "Preferences for {platform_name}" @@ -13536,6 +13527,11 @@ msgstr "Grädïng Pölïçý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#" msgid "Batch Enrollment" msgstr "Bätçh Énröllmént Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "Émäïl Àddréssés/Ûsérnämés Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -13553,11 +13549,6 @@ msgstr "" "Ýöü wïll nöt gét nötïfïçätïön för émäïls thät ßöünçé, sö pléäsé döüßlé-çhéçk" " spéllïng. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢#" -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "Émäïl Àddréssés/Ûsérnämés Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -13612,7 +13603,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "Énröll Ⱡ'σяєм ιρѕυ#" @@ -13621,6 +13611,10 @@ msgstr "Énröll Ⱡ'σяєм ιρѕυ#" msgid "Student List Management" msgstr "Stüdént Lïst Mänägémént Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "Éntér üsérnämé ör émäïl Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "WÀRNÌNG Ⱡ'σяєм ιρѕυм #" @@ -14053,7 +14047,6 @@ msgid "This section is graded." msgstr "Thïs séçtïön ïs grädéd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "" "Àn érrör öççürréd. Pléäsé trý ägäïn lätér. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " @@ -14106,8 +14099,10 @@ msgid "Enrollment is Closed" msgstr "Énröllmént ïs Çlöséd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" -msgstr "Àdd {course_name} tö Çärt ({price}) Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" +msgid "Add {course_name} to Cart ({price} USD)" +msgstr "" +"Àdd {course_name} tö Çärt ({price} ÛSD) Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт " +"αмєт, ¢σηѕє¢т#" #: lms/templates/courseware/course_about.html msgid "Register for {course_name}" @@ -14196,7 +14191,6 @@ msgid "Additional Resources" msgstr "Àddïtïönäl Résöürçés Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "énröll Ⱡ'σяєм ιρѕυ#" @@ -14665,54 +14659,6 @@ msgstr "" msgid "Course errors" msgstr "Çöürsé érrörs Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "Àßöüt {course_id} Ⱡ'σяєм ιρѕυм ∂σł#" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "Çömïng Söön Ⱡ'σяєм ιρѕυм ∂σłσя #" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "Àßöüt {course_number} Ⱡ'σяєм ιρѕυм ∂σł#" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "Àççéss Çöürséwäré Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "Ýöü Àré Énrölléd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "Énröll ïn Ⱡ'σяєм ιρѕυм ∂σł#" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "änd çhöösé ýöür stüdént träçk Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢#" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "änd pröçééd tö vérïfïçätïön Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє#" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "Énröllmént Ìs Çlöséd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "Néws - MÌTx 6.002x Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#" @@ -15099,6 +15045,10 @@ msgstr "Éndéd - {end_date} Ⱡ'σяєм ιρѕυм ∂σłσя #" msgid "Started - {start_date}" msgstr "Stärtéd - {start_date} Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "Çömïng Söön Ⱡ'σяєм ιρѕυм ∂σłσя #" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "Stärts - {start_date} Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" @@ -15350,11 +15300,11 @@ msgstr "Fïnälïzé çrédït Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" -"Ýöür çrédït häs ßéén pröçésséd änd äpprövéd. Çöngrätülätïöns. Pléäsé " -"séé {link_to_provider_site} för möré ïnförmätïön. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#" +"Ýöür çrédït häs ßéén pröçésséd änd äpprövéd. Çöngrätülätïöns!. Pléäsé" +" séé {link_to_provider_site} för möré ïnförmätïön. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт #" #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Access credit" @@ -15568,23 +15518,19 @@ msgstr "ßý möst äçtïvïtý Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм msgid "by most votes" msgstr "ßý möst vötés Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr ", Ⱡ'σя#" - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" msgid_plural "%s discussions started" -msgstr[0] "%s dïsçüssïön stärtéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" -msgstr[1] "%s dïsçüssïöns stärtéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#" +msgstr[0] "%s dïsçüssïön stärtéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#" +msgstr[1] "%s dïsçüssïöns stärtéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s comment" msgid_plural "%s comments" -msgstr[0] "%s çömmént Ⱡ'σяєм ιρѕυм ∂σłσ#" -msgstr[1] "%s çömménts Ⱡ'σяєм ιρѕυм ∂σłσя #" +msgstr[0] "%s çömmént Ⱡ'σяєм ιρѕυм ∂σłσя #" +msgstr[1] "%s çömménts Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" #: lms/templates/discussion/index.html #: lms/templates/discussion/user_profile.html @@ -16830,6 +16776,10 @@ msgstr "Çöürsé Nämé: Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" msgid "Course Display Name:" msgstr "Çöürsé Dïspläý Nämé: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "Çöürsé Énd Däté: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αм#" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "Häs thé çöürsé stärtéd? Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" @@ -16846,6 +16796,10 @@ msgstr "Nö Ⱡ'σя#" msgid "Has the course ended?" msgstr "Häs thé çöürsé éndéd? Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "Nümßér öf séçtïöns: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "Grädé Çütöffs: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#" @@ -20464,10 +20418,6 @@ msgstr "" msgid "View Live" msgstr "Vïéw Lïvé Ⱡ'σяєм ιρѕυм ∂σł#" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "Çöürsé Stärt Däté: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "Édït Stärt Däté Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#" @@ -23464,6 +23414,30 @@ msgstr "" "Çöntént gröüp nö löngér éxïsts. Pléäsé çhöösé änöthér ör ällöw äççéss tö Àll" " Stüdénts änd stäff Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "Vérïfïçätïön Çhéçkpöïnt Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" +"Vérïfïçätïön çhéçkpöïnt tö çömplété Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєт#" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" +"Léärnérs whö réqüïré vérïfïçätïön müst päss thé séléçtéd çhéçkpöïnt tö séé " +"thé çöntént ïn thïs çömpönént. Léärnérs whö dö nöt réqüïré vérïfïçätïön séé " +"thïs çöntént ßý défäült. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя " +"α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα" +" αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ " +"ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη " +"яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє ¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα " +"ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт ¢υρι∂αтαт ηση ρяσι∂єηт, ѕυηт ιη ¢υłρ#" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" @@ -23817,7 +23791,7 @@ msgstr "" #, python-format msgid "A slug named \"%s\" already exists." msgstr "" -"À slüg näméd \"%s\" älréädý éxïsts. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тє#" +"À slüg näméd \"%s\" älréädý éxïsts. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєт#" #: wiki/forms.py msgid "Yes, I am sure" @@ -24174,7 +24148,7 @@ msgstr "ättäçhmént révïsïöns Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт #: wiki/plugins/attachments/views.py #, python-format msgid "%s was successfully added." -msgstr "%s wäs süççéssfüllý äddéd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#" +msgstr "%s wäs süççéssfüllý äddéd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє#" #: wiki/plugins/attachments/views.py #, python-format @@ -24195,7 +24169,7 @@ msgstr "" msgid "%s uploaded and replaces old attachment." msgstr "" "%s üplöädéd änd répläçés öld ättäçhmént. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " -"¢σηѕє¢тєтυя#" +"¢σηѕє¢тєтυя #" #: wiki/plugins/attachments/views.py msgid "" @@ -24221,7 +24195,7 @@ msgstr "" #: wiki/plugins/attachments/views.py #, python-format msgid "The file %s was deleted." -msgstr "Thé fïlé %s wäs délétéd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢ση#" +msgstr "Thé fïlé %s wäs délétéd. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#" #: wiki/plugins/attachments/views.py #, python-format @@ -24233,12 +24207,12 @@ msgstr "" #: wiki/plugins/attachments/wiki_plugin.py #, python-format msgid "A file was changed: %s" -msgstr "À fïlé wäs çhängéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#" +msgstr "À fïlé wäs çhängéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" #: wiki/plugins/attachments/wiki_plugin.py #, python-format msgid "A file was deleted: %s" -msgstr "À fïlé wäs délétéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#" +msgstr "À fïlé wäs délétéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" #: wiki/plugins/images/forms.py #, python-format @@ -24264,7 +24238,7 @@ msgstr "ïmägés Ⱡ'σяєм ιρѕυ#" #: wiki/plugins/images/models.py #, python-format msgid "Image: %s" -msgstr "Ìmägé: %s Ⱡ'σяєм ιρѕυм ∂σł#" +msgstr "Ìmägé: %s Ⱡ'σяєм ιρѕυм ∂σłσ#" #: wiki/plugins/images/models.py msgid "Current revision not set!!" @@ -24281,7 +24255,7 @@ msgstr "ïmägé révïsïöns Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#" #: wiki/plugins/images/models.py #, python-format msgid "Image Revsion: %d" -msgstr "Ìmägé Révsïön: %d Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#" +msgstr "Ìmägé Révsïön: %d Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#" #: wiki/plugins/images/views.py #, python-format @@ -24291,7 +24265,7 @@ msgstr "%s häs ßéén réstöréd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт #: wiki/plugins/images/views.py #, python-format msgid "%s has been marked as deleted" -msgstr "%s häs ßéén märkéd äs délétéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢#" +msgstr "%s häs ßéén märkéd äs délétéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢т#" #: wiki/plugins/images/views.py #, python-format @@ -24312,7 +24286,7 @@ msgstr "Ìmägés Ⱡ'σяєм ιρѕυ#" #: wiki/plugins/images/wiki_plugin.py #, python-format msgid "An image was added: %s" -msgstr "Àn ïmägé wäs äddéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢#" +msgstr "Àn ïmägé wäs äddéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" #: wiki/plugins/links/wiki_plugin.py msgid "Links" @@ -24354,7 +24328,7 @@ msgstr "" #: wiki/plugins/notifications/models.py #, python-format msgid "Article deleted: %s" -msgstr "Àrtïçlé délétéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#" +msgstr "Àrtïçlé délétéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #" #: wiki/plugins/notifications/models.py #, python-format @@ -24364,7 +24338,7 @@ msgstr "Àrtïçlé mödïfïéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт #: wiki/plugins/notifications/models.py #, python-format msgid "New article created: %s" -msgstr "Néw ärtïçlé çréätéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" +msgstr "Néw ärtïçlé çréätéd: %s Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢ση#" #: wiki/views/accounts.py msgid "You are now sign up... and now you can sign in!" diff --git a/conf/locale/eo/LC_MESSAGES/djangojs.mo b/conf/locale/eo/LC_MESSAGES/djangojs.mo index e2ddeb9dabd4ac53d2fcbb58258b4a78eb455c67..1bba9bbbf2b43aace65b18b0ae20595b6ccf913a 100644 GIT binary patch delta 31220 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 delta 30534 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 diff --git a/conf/locale/eo/LC_MESSAGES/djangojs.po b/conf/locale/eo/LC_MESSAGES/djangojs.po index b9aedff5c3..8e0912161c 100644 --- a/conf/locale/eo/LC_MESSAGES/djangojs.po +++ b/conf/locale/eo/LC_MESSAGES/djangojs.po @@ -26,8 +26,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.1a\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:51+0000\n" -"PO-Revision-Date: 2015-08-14 13:52:03.060189\n" +"POT-Creation-Date: 2015-08-21 14:38+0000\n" +"PO-Revision-Date: 2015-08-21 14:39:20.002663\n" "Last-Translator: \n" "Language-Team: openedx-translation \n" "MIME-Version: 1.0\n" @@ -2177,13 +2177,13 @@ msgstr "dröppéd ön tärgét Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє #: common/static/js/src/jquery.timeago.locale.js #, c-format msgid "%s ago" -msgstr "%s ägö Ⱡ'σяєм ιρѕυ#" +msgstr "%s ägö Ⱡ'σяєм ιρѕυм #" #. Translators: %s will be a time quantity, such as "4 minutes" or "1 day" #: common/static/js/src/jquery.timeago.locale.js #, c-format msgid "%s from now" -msgstr "%s fröm nöw Ⱡ'σяєм ιρѕυм ∂σłσя #" +msgstr "%s fröm nöw Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" #: common/static/js/src/jquery.timeago.locale.js msgid "less than a minute" @@ -2197,8 +2197,8 @@ msgstr "äßöüt ä mïnüté Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#" #, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "%d mïnüté Ⱡ'σяєм ιρѕυм ∂σł#" -msgstr[1] "%d mïnütés Ⱡ'σяєм ιρѕυм ∂σłσ#" +msgstr[0] "%d mïnüté Ⱡ'σяєм ιρѕυм ∂σłσ#" +msgstr[1] "%d mïnütés Ⱡ'σяєм ιρѕυм ∂σłσя #" #: common/static/js/src/jquery.timeago.locale.js msgid "about an hour" @@ -2208,8 +2208,8 @@ msgstr "äßöüt än höür Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" #, c-format msgid "about %d hour" msgid_plural "about %d hours" -msgstr[0] "äßöüt %d höür Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" -msgstr[1] "äßöüt %d höürs Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#" +msgstr[0] "äßöüt %d höür Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт#" +msgstr[1] "äßöüt %d höürs Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт α#" #: common/static/js/src/jquery.timeago.locale.js msgid "a day" @@ -2219,8 +2219,8 @@ msgstr "ä däý Ⱡ'σяєм ιρѕ#" #, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "%d däý Ⱡ'σяєм ιρѕυ#" -msgstr[1] "%d däýs Ⱡ'σяєм ιρѕυм #" +msgstr[0] "%d däý Ⱡ'σяєм ιρѕυм #" +msgstr[1] "%d däýs Ⱡ'σяєм ιρѕυм ∂#" #: common/static/js/src/jquery.timeago.locale.js msgid "about a month" @@ -2230,8 +2230,8 @@ msgstr "äßöüt ä mönth Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" #, c-format msgid "%d month" msgid_plural "%d months" -msgstr[0] "%d mönth Ⱡ'σяєм ιρѕυм ∂#" -msgstr[1] "%d mönths Ⱡ'σяєм ιρѕυм ∂σł#" +msgstr[0] "%d mönth Ⱡ'σяєм ιρѕυм ∂σł#" +msgstr[1] "%d mönths Ⱡ'σяєм ιρѕυм ∂σłσ#" #: common/static/js/src/jquery.timeago.locale.js msgid "about a year" @@ -2241,8 +2241,8 @@ msgstr "äßöüt ä ýéär Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" #, c-format msgid "%d year" msgid_plural "%d years" -msgstr[0] "%d ýéär Ⱡ'σяєм ιρѕυм #" -msgstr[1] "%d ýéärs Ⱡ'σяєм ιρѕυм ∂#" +msgstr[0] "%d ýéär Ⱡ'σяєм ιρѕυм ∂#" +msgstr[1] "%d ýéärs Ⱡ'σяєм ιρѕυм ∂σł#" #. Translators: please note that this is not a literal flag, but rather a #. report @@ -2502,9 +2502,9 @@ msgstr "" "ѕιт αмєт, ¢σηѕє¢тєтυя α#" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" -"Ýöü äré nöt çürréntlý ä mémßér öf äný téäms. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " +"Ýöü äré nöt çürréntlý ä mémßér öf äný téäm. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " "¢σηѕє¢тєтυя #" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -3691,8 +3691,8 @@ msgstr "" #, c-format msgid "Viewing %s course" msgid_plural "Viewing %s courses" -msgstr[0] "Vïéwïng %s çöürsé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмє#" -msgstr[1] "Vïéwïng %s çöürsés Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#" +msgstr[0] "Vïéwïng %s çöürsé Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт#" +msgstr[1] "Vïéwïng %s çöürsés Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#" #: lms/static/js/discovery/views/search_form.js #, c-format @@ -3976,8 +3976,8 @@ msgstr "Märk énröllmént çödé äs ünüséd Ⱡ'σяєм ιρѕυм ∂σ #, c-format msgid "%s result" msgid_plural "%s results" -msgstr[0] "%s résült Ⱡ'σяєм ιρѕυм ∂σł#" -msgstr[1] "%s résülts Ⱡ'σяєм ιρѕυм ∂σłσ#" +msgstr[0] "%s résült Ⱡ'σяєм ιρѕυм ∂σłσ#" +msgstr[1] "%s résülts Ⱡ'σяєм ιρѕυм ∂σłσя #" #: lms/static/js/student_account/account.js msgid "The data could not be saved." @@ -4647,7 +4647,7 @@ msgstr "" #: cms/static/js/collections/group.js #, c-format msgid "Group %s" -msgstr "Gröüp %s Ⱡ'σяєм ιρѕυм ∂#" +msgstr "Gröüp %s Ⱡ'σяєм ιρѕυм ∂σł#" #. Translators: Dictionary used for creation ids that are used in #. default group names. For example: A, B, AA in Group A, @@ -5882,7 +5882,7 @@ msgid "" msgstr "" " Ⱡ'σяєм " -"ιρѕυм ∂#" +"ιρѕυм ∂σł#" #: lms/templates/commerce/receipt.underscore #: lms/templates/verify_student/payment_confirmation_step.underscore @@ -7518,7 +7518,7 @@ msgstr "Çhäptér Nämé Ⱡ'σяєм ιρѕυм ∂σłσя ѕ#" #: cms/templates/js/edit-chapter.underscore #, python-format msgid "Chapter %s" -msgstr "Çhäptér %s Ⱡ'σяєм ιρѕυм ∂σłσ#" +msgstr "Çhäptér %s Ⱡ'σяєм ιρѕυм ∂σłσя #" #: cms/templates/js/edit-chapter.underscore msgid "provide the title/name of the chapter that will be used in navigating" @@ -8107,6 +8107,37 @@ msgstr "" "Pléäsé çhéçk thé föllöwïng välïdätïön féédßäçks änd réfléçt thém ïn ýöür " "çöürsé séttïngs: Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕ#" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "Vérïfïçätïön Çhéçkpöïnt Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σ#" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" +"Müst çömplété vérïfïçätïön çhéçkpöïnt Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " +"¢σηѕє¢тєтυ#" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" +"Vérïfïçätïön çhéçkpöïnt tö ßé çömplétéd Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, " +"¢σηѕє¢тєтυя#" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" +"Léärnérs whö réqüïré vérïfïçätïön müst päss thé séléçtéd çhéçkpöïnt tö séé " +"thé çöntént ïn thïs ünït. Léärnérs whö dö nöt réqüïré vérïfïçätïön séé thïs " +"çöntént ßý défäült. Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg " +"єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт " +"єηιм α∂ мιηιм νєηιαм, qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт " +"αłιqυιρ єχ єα ¢σммσ∂σ ¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη " +"νσłυρтαтє νєłιт єѕѕє ¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт " +"σ¢¢αє¢αт ¢υρι∂αтαт ηση ρяσι∂єηт, ѕυηт ιη ¢υłρα qυι σ#" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "Édït thé nämé Ⱡ'σяєм ιρѕυм ∂σłσя ѕι#" diff --git a/conf/locale/es_419/LC_MESSAGES/django.mo b/conf/locale/es_419/LC_MESSAGES/django.mo index 39005ee4b055a245915d7022a57f0a710ee83c14..d433140de643c5195959c3fd3e5e00ecacd9339f 100644 GIT binary patch delta 113175 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

      }lfbXk%l0H3yJJUu2ATaB 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

      =dA#l|6a^u%C& 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\n" "Language-Team: Spanish (Latin America) (http://www.transifex.com/open-edx/edx-platform/language/es_419/)\n" @@ -304,7 +304,7 @@ msgstr "Modo" #: common/djangoapps/course_modes/admin.py msgid "Verification Deadline" -msgstr "" +msgstr "Fecha límite de verificación" #: common/djangoapps/course_modes/admin.py msgid "" @@ -312,6 +312,9 @@ msgid "" "photos for verification. This appies ONLY to modes that require " "verification." msgstr "" +"OPCIONAL: Después de esta fecha/hora, los usuarios no podrán enviar fotos de" +" verificación. Esto aplica ÚNICAMENTE para los modos que requieren " +"verificación." #: common/djangoapps/course_modes/models.py #: lms/djangoapps/shoppingcart/reports.py cms/templates/widgets/header.html @@ -336,13 +339,14 @@ msgstr "Curso" msgid "Display Name" msgstr "Nombre para mostrar:" +#: common/djangoapps/course_modes/models.py #: lms/templates/courseware/course_about.html msgid "Price" msgstr "Precio" #: common/djangoapps/course_modes/models.py msgid "Upgrade Deadline" -msgstr "" +msgstr "Actualizar la fecha límite" #: common/djangoapps/course_modes/models.py msgid "" @@ -350,6 +354,9 @@ msgid "" "this mode. Leave this blank if users can enroll in this mode until " "enrollment closes for the course." msgstr "" +"OPCIONAL: Después de esta fecha/hora, los usuarios no podrán inscribirse en " +"este modo. Deje este campo vacío para que los usuarios puedan inscribirse en" +" este modo hasta el cierre de las inscripciones para el curso." #: common/djangoapps/course_modes/models.py msgid "" @@ -357,6 +364,9 @@ msgid "" "ecommerce service. Leave this blank if the course has not yet been migrated" " to the ecommerce service." msgstr "" +"OPCIONAL: Este es el SKU (stock keeping unit) de este modo en el sistema de " +"ecommerce externo. Deje este campo vacío si el curso no ha sido migrado al " +"servicio de ecommerce." #: common/djangoapps/course_modes/models.py msgid "Honor Code Certificate" @@ -367,6 +377,8 @@ msgid "" "Professional education modes are not allowed to have expiration_datetime " "set." msgstr "" +"Los modos de educación profesional no pueden tener configuradas fechas y " +"horas de expiración." #: common/djangoapps/course_modes/models.py msgid "Your verification is pending" @@ -518,6 +530,9 @@ msgid "" "You have already created an account using an external login like WebAuth or " "Shibboleth. Please contact {tech_support_email} for support." msgstr "" +"Usted ya ha creado una cuenta usuando un inicio de sesión externo como " +"WebAuth o Shibboleth. Por favor contacte {tech_support_email} para obtener " +"asistencia." #: common/djangoapps/student/forms.py msgid "Username must be minimum of two characters long" @@ -536,10 +551,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "Su nombre legal debe tener por lo menos dos caracteres" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"El nombre de usuario solo debe contener los caracteres A-Z y 0-9, sin " -"espacios." #: common/djangoapps/student/forms.py #, python-format @@ -704,19 +719,19 @@ msgstr "El código de idioma ISO 639-1 para este idioma." #: common/djangoapps/student/models.py msgid "Namespace of enrollment attribute" -msgstr "" +msgstr "Espacio de nombres del atributo de inscripción." #: common/djangoapps/student/models.py msgid "Name of the enrollment attribute" -msgstr "" +msgstr "Nombre del atributo de inscripción." #: common/djangoapps/student/models.py msgid "Value of the enrollment attribute" -msgstr "" +msgstr "Valor del atributo de inscripción." #: common/djangoapps/student/views.py msgid "The course you are looking for does not start until {date}." -msgstr "" +msgstr "El curso que está buscando comienza el {date}." #: common/djangoapps/student/views.py msgid "Course id not specified" @@ -765,6 +780,8 @@ msgid "" "If you don't have an {platform_name} account yet, click " "Register at the top of the page." msgstr "" +"Si aun no tiene una cuenta en {platform_name}, haga clic en " +"Registrarse en la parte superior de la página." #: common/djangoapps/student/views.py msgid "There was an error receiving your login information. Please email us." @@ -1380,7 +1397,7 @@ msgstr "Demasiado similar a una palabra restringida del diccionario." #: common/djangoapps/xblock_django/models.py msgid "Space-separated list of XBlocks which should not render." -msgstr "" +msgstr "Lista separada por espacios, de los XBlocks que no deben mostrarse." #: common/lib/capa/capa/capa_problem.py msgid "Cannot rescore problems with possible file submissions" @@ -1398,7 +1415,7 @@ msgstr "incorrecto" #: common/lib/capa/capa/inputtypes.py msgid "partially correct" -msgstr "" +msgstr "parcialmente correcto" #: common/lib/capa/capa/inputtypes.py msgid "incomplete" @@ -1424,7 +1441,7 @@ msgstr "Esto es incorrecto." #: common/lib/capa/capa/inputtypes.py msgid "This is partially correct." -msgstr "" +msgstr "Esto es parcialmente correcto." #: common/lib/capa/capa/inputtypes.py msgid "This is unanswered." @@ -1937,6 +1954,9 @@ msgid "" "Defines when to randomize the variables specified in the associated Python " "script. For problems that do not randomize values, specify \"Never\". " msgstr "" +"Define cuando aleatorizar las variables especificadas en el script de Python" +" asociado. Para problemas que no tienen valores aleatorizados, ingrese " +"\"Nunca\"." #: common/lib/xmodule/xmodule/capa_base.py msgid "On Reset" @@ -3090,11 +3110,13 @@ msgstr "Nombre (largo) para el certificado" #: common/lib/xmodule/xmodule/course_module.py msgid "Certificate Web/HTML View Enabled" -msgstr "" +msgstr "Certificado Web / Vista HTML habilitada" #: common/lib/xmodule/xmodule/course_module.py msgid "If true, certificate Web/HTML views are enabled for the course." msgstr "" +"Si está activado, los certificados Web / vistas HTML estarán habilitadas " +"para el curso." #. Translators: This field is the container for course-specific certifcate #. configuration values @@ -3347,13 +3369,15 @@ msgstr "" #: common/lib/xmodule/xmodule/course_module.py msgid "Enable Proctored Exams" -msgstr "" +msgstr "Habilitar examenes supervisados" #: common/lib/xmodule/xmodule/course_module.py msgid "" "Enter true or false. If this value is true, timed and proctored exams are " "enabled in your course." msgstr "" +"Ingrese true o false. Cuando ingrese true, los examenes cronometrados y " +"supervisados estarán habilitados en su curso." #: common/lib/xmodule/xmodule/course_module.py msgid "Minimum Grade for Credit" @@ -3972,41 +3996,47 @@ msgstr "" #: common/lib/xmodule/xmodule/seq_module.py msgid "Is Time Limited" -msgstr "" +msgstr "Tiempo limitado" #: common/lib/xmodule/xmodule/seq_module.py msgid "" "This setting indicates whether students have a limited time to view or " "interact with this courseware component." msgstr "" +"Esta configuración indica si el estudiante tiene un tiempo limitado para ver" +" o interactuar con este contenido." #: common/lib/xmodule/xmodule/seq_module.py msgid "Time Limit in Minutes" -msgstr "" +msgstr "Tiempo límite en minutos" #: common/lib/xmodule/xmodule/seq_module.py msgid "" "The number of minutes available to students for viewing or interacting with " "this courseware component." msgstr "" +"Número de minutos disponibles para los estudiantes para ver o interactuar " +"con este contenido." #: common/lib/xmodule/xmodule/seq_module.py msgid "Is Proctoring Enabled" -msgstr "" +msgstr "El modo supervisado está activado." #: common/lib/xmodule/xmodule/seq_module.py msgid "This setting indicates whether this exam is a proctored exam." -msgstr "" +msgstr "Esta configuración indica si el examen es supervisado." #: common/lib/xmodule/xmodule/seq_module.py msgid "Is Practice Exam" -msgstr "" +msgstr "Es examen de práctica" #: common/lib/xmodule/xmodule/seq_module.py msgid "" "This setting indicates whether this exam is for testing purposes only. " "Practice exams are not verified." msgstr "" +"Esta configuración indica si el examen tiene solo propósitos de prueba. Los " +"exámenes de práctica no son verificados." #: common/lib/xmodule/xmodule/split_test_module.py msgid "Group ID {group_id}" @@ -4282,6 +4312,11 @@ msgid "" "problems in your course. Valid values are \"always\", \"onreset\", " "\"never\", and \"per_student\"." msgstr "" +"Define el valor por defecto de frecuencia para la aleatorización de " +"variables en los problemas. Debe estar configurado en \"never\" a menos de " +"que planee tener un script de Python que identifique y aleatorize los " +"valores de la mayoría de problemas del curso. Los valores válidos son " +"\"always\", \"onreset\", \"never\", y \"per_student\"." #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "Days Early for Beta Users" @@ -5192,55 +5227,55 @@ msgstr "Solo puede tener una imagen por defecto." #: lms/djangoapps/certificates/models.py msgid "Name of template." -msgstr "" +msgstr "Nombre de la plantilla." #: lms/djangoapps/certificates/models.py msgid "Description and/or admin notes." -msgstr "" +msgstr "Descripción y/o notas del administrador." #: lms/djangoapps/certificates/models.py msgid "Django template HTML." -msgstr "" +msgstr "Template HTML de Django" #: lms/djangoapps/certificates/models.py msgid "Organization of template." -msgstr "" +msgstr "Organización de la plantilla" #: lms/djangoapps/certificates/models.py msgid "The course mode for this template." -msgstr "" +msgstr "Modo de curso para esta plantilla." #: lms/djangoapps/certificates/models.py msgid "On/Off switch." -msgstr "" +msgstr "Interruptor Encendido/Apagado." #: lms/djangoapps/certificates/models.py msgid "Description of the asset." -msgstr "" +msgstr "Descripción del recurso." #: lms/djangoapps/certificates/models.py msgid "Asset file. It could be an image or css file." -msgstr "" +msgstr "Archivo del recurso. Puede ser una imágen o un archivo css." #: lms/djangoapps/certificates/views/support.py msgid "User {username} does not exist" -msgstr "" +msgstr "El usuario {username} no existe" #: lms/djangoapps/certificates/views/support.py msgid "{course_key} is not a valid course key" -msgstr "" +msgstr "{course_key} no es una referencia de curso válida" #: lms/djangoapps/certificates/views/support.py msgid "The course {course_key} does not exist" -msgstr "" +msgstr "El curso {course_key} no existe" #: lms/djangoapps/certificates/views/support.py msgid "User {username} is not enrolled in the course {course_key}" -msgstr "" +msgstr "El usuario {username} no está incrito en el curso {course_key}" #: lms/djangoapps/certificates/views/support.py msgid "An unexpected error occurred while regenerating certificates." -msgstr "" +msgstr "Se produjo un error inesperado en la regeneración de certificados." #. Translators: This text describes the 'Honor' course certificate type. #: lms/djangoapps/certificates/views/webview.py @@ -5606,35 +5641,39 @@ msgstr "Visite la wiki de un curso para añadir un artículo." #: lms/djangoapps/courseware/access_response.py msgid "Course has not started" -msgstr "" +msgstr "El curso no ha comenzado aún" #: lms/djangoapps/courseware/access_response.py msgid "Course does not start until {}" -msgstr "" +msgstr "El curso no comenzará hasta {}" #: lms/djangoapps/courseware/access_response.py msgid "You have unfulfilled milestones" -msgstr "" +msgstr "Tiene hitos sin completar" #: lms/djangoapps/courseware/access_response.py msgid "You do not have access to this course" -msgstr "" +msgstr "Usted no tiene acceso a este curso" #: lms/djangoapps/courseware/access_response.py msgid "You do not have access to this course on a mobile device" -msgstr "" +msgstr "Usted no tiene acceso a este curso desde dispositivos móviles" #: lms/djangoapps/courseware/masquerade.py msgid "" "There is no user with the username or email address {user_name} enrolled in " "this course." msgstr "" +"No hay ningún usuario ni correo electrónico inscrito en este curso que " +"coincida con {user_name}." #: lms/djangoapps/courseware/masquerade.py msgid "" "This type of component cannot be shown while viewing the course as a " "specific student." msgstr "" +"Este tipo de componente no se puede mostrar en la vista del curso como un " +"estudiante específico." #: lms/djangoapps/courseware/tabs.py #: lms/templates/courseware/courseware-error.html @@ -5684,31 +5723,6 @@ msgstr "{currency_symbol}{price}" msgid "Free" msgstr "Gratis" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "{first_institutions}, y {last_institution}" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "{first_institution} y {second_institution}" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -"Me gustaría recibir correo electrónico de {institution_series} y aprender " -"sobre sus otros programas" -msgstr[1] "" -"Me gustaría recibir correo electrónico de {institution_series} y aprender " -"sobre sus otros programas" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "Localizacion invalida" @@ -6243,6 +6257,9 @@ msgid "" "The enrolled learner profile report is being created. To view the status of " "the report, see Pending Instructor Tasks below." msgstr "" +"El reporte con el perfil del estudiante está siendo generado. Puede ver el " +"estado de la tarea de generación en la sección de 'Tareas Pendientes de " +"Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6250,6 +6267,9 @@ msgid "" " report, see Pending Instructor Tasks below. You will be able to download " "the report when it is complete." msgstr "" +"El reporte de inscripciones está siendo generado. Puede ver el estado de la " +"tarea de generación en la sección de 'Tareas Pendientes de Instructor'. " +"Podrá descargar el reporte una vez esté completado." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6257,6 +6277,9 @@ msgid "" "about learners who can enroll in the course. To view the status of the " "report, see Pending Instructor Tasks below." msgstr "" +"El reporte de inscripciones está siendo generado. Este contiene información " +"de los estudiantes que pueden inscribirse al curso. Puede ver el estado de " +"la tarea de generación en la sección de 'Tareas Pendientes de Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "The file must contain a 'cohort' column containing cohort names." @@ -6321,6 +6344,9 @@ msgid "" "The detailed enrollment report is being created. To view the status of the " "report, see Pending Instructor Tasks below." msgstr "" +"El reporte de inscripciones detallado está siendo generado. Puede ver el " +"estado de la tarea de generación en la sección de 'Tareas Pendientes de " +"Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6328,12 +6354,17 @@ msgid "" "report, see Pending Instructor Tasks below. You will be able to download the" " report when it is complete." msgstr "" +"El reporte de inscripciones detallado está siendo generado. Puede ver el " +"estado de la tarea de generación en la sección de 'Tareas Pendientes de " +"Instructor'. Podrá descargar el reporte una vez esté completado." #: lms/djangoapps/instructor/views/api.py msgid "" "The executive summary report is being created. To view the status of the " "report, see Pending Instructor Tasks below." msgstr "" +"El resumen ejecutivo está siendo generado. Puede ver el estado de la tarea " +"de generación en la sección de 'Tareas Pendientes de Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6341,12 +6372,18 @@ msgid "" "of the report, see Pending Instructor Tasks below. You will be able to " "download the report when it is complete." msgstr "" +"El resumen ejecutivo está siendo generado. Puede ver el estado de la tarea " +"de generación en la sección de 'Tareas Pendientes de Instructor'. Podrá " +"descargar el reporte una vez esté completado." #: lms/djangoapps/instructor/views/api.py msgid "" "The proctored exam results report is being created. To view the status of " "the report, see Pending Instructor Tasks below." msgstr "" +"El reporte de resultados de examen supervisado está siendo generado. Puede " +"ver el estado de la tarea de generación en la sección de 'Tareas Pendientes " +"de Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6354,6 +6391,9 @@ msgid "" "status of the report, see Pending Instructor Tasks below. You will be able " "to download the report when it is complete." msgstr "" +"El reporte de resultados de examen supervisado está siendo generado. Puede " +"ver el estado de la tarea de generación en la sección de 'Tareas Pendientes " +"de Instructor'. Podrá descargar el reporte una vez esté completado." #: lms/djangoapps/instructor/views/api.py msgid "Could not parse amount as a decimal" @@ -6413,6 +6453,8 @@ msgid "" "The grade report is being created. To view the status of the report, see " "Pending Instructor Tasks below." msgstr "" +"El reporte de calificaciones está siendo generado. Puede ver el estado de la" +" tarea de generación en la sección de 'Tareas Pendientes de Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6420,12 +6462,18 @@ msgid "" "report, see Pending Instructor Tasks below. You will be able to download the" " report when it is complete." msgstr "" +"El reporte de calificaciones está siendo generado. Puede ver el estado de la" +" tarea de generación en la sección de 'Tareas Pendientes de Instructor'. " +"Podrá descargar el reporte una vez esté completado." #: lms/djangoapps/instructor/views/api.py msgid "" "The problem grade report is being created. To view the status of the report," " see Pending Instructor Tasks below." msgstr "" +"El reporte de calificaciones de un problema está siendo generado. Puede ver " +"el estado de la tarea de generación en la sección de 'Tareas Pendientes de " +"Instructor'." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -6433,6 +6481,9 @@ msgid "" " report, see Pending Instructor Tasks below. You will be able to download " "the report when it is complete." msgstr "" +"Un reporte de calificación de problema está siendo generado. Puede ver el " +"estado de la tarea de generación en la sección de 'Tareas Pendientes de " +"Instructor'. Podrá descargar el reporte una vez esté completado." #: lms/djangoapps/instructor/views/api.py msgid "Successfully changed due date for student {0} for {1} to {2}" @@ -6465,6 +6516,9 @@ msgid "" "started. You can view the status of the generation task in the \"Pending " "Tasks\" section." msgstr "" +"La tarea de generación de certificados para todos los estudiantes de este " +"curso ha sido iniciada. Podrá ver el estado de la tarea en la sección " +"\"Tareas pendientes\" más abajo." #: lms/djangoapps/instructor/views/coupons.py msgid "coupon id is None" @@ -6539,7 +6593,7 @@ msgstr "E-Commerce" #: lms/djangoapps/instructor/views/instructor_dashboard.py msgid "Proctoring" -msgstr "" +msgstr "Supervisión" #: lms/djangoapps/instructor/views/instructor_dashboard.py #: lms/djangoapps/support/views/index.py cms/templates/certificates.html @@ -6588,6 +6642,8 @@ msgstr "Descarga de Datos" #: lms/djangoapps/instructor/views/instructor_dashboard.py msgid "For analytics about your course, go to {analytics_dashboard_name}." msgstr "" +"Para ver información analítica de su curso visite " +"{analytics_dashboard_name}." #: lms/djangoapps/instructor/views/instructor_dashboard.py msgid "Analytics" @@ -6875,7 +6931,7 @@ msgstr "generating_enrollment_report" #. messages as {action}. #: lms/djangoapps/instructor_task/tasks.py msgid "certificates generated" -msgstr "" +msgstr "Certificados generados" #. Translators: This is a past-tense verb that is inserted into task progress #. messages as {action}. @@ -8490,7 +8546,7 @@ msgstr "No se especificó una dirección de correo electrónico." #: lms/djangoapps/support/views/index.py msgid "View and regenerate certificates." -msgstr "" +msgstr "Ver y regenerar certificados" #: lms/djangoapps/support/views/index.py lms/templates/support/refund.html msgid "Manual Refund" @@ -8498,7 +8554,7 @@ msgstr "Devolución manual" #: lms/djangoapps/support/views/index.py msgid "Track refunds issued directly through CyberSource." -msgstr "" +msgstr "Rastrear devoluciones emitidas directamente a través de CyberSource" #: lms/djangoapps/support/views/refund.py #: lms/templates/shoppingcart/billing_details.html @@ -8552,28 +8608,28 @@ msgstr "Debe suministrar un ID de curso" #: lms/djangoapps/teams/views.py msgid "The supplied topic id {topic_id} is not valid" -msgstr "" +msgstr "El ID de tema proporcionado {topic_id} no es válido" #: lms/djangoapps/teams/views.py msgid "text_search is not yet supported." msgstr "text_search actualmente no está soportado" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "last_activity actualmente no está soportado." - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the #. list by lower case name. #: lms/djangoapps/teams/views.py msgid "The ordering {ordering} is not supported" -msgstr "" +msgstr "El orden {ordering} no está soportado" #: lms/djangoapps/teams/views.py msgid "The supplied course_id {course_id} is not valid." msgstr "El ID de curso proporcionado {course_id} no es válido." +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "Ya está en un equipo para este curso." + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "Debe especificarse el nombre de usuario o el ID del equipo." @@ -8586,6 +8642,10 @@ msgstr "Se requiere el nombre de usuario" msgid "Team id is required." msgstr "Se requiere la id del equipo." +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "El usuario {username} ya es un miembro del equipo del curso." @@ -8631,13 +8691,15 @@ msgstr "Hubo un error verificando las fotos de su documento de identidad." #: lms/djangoapps/verify_student/models.py msgid "The course for which this deadline applies" -msgstr "" +msgstr "Curso al que se aplica esta fecha límite." #: lms/djangoapps/verify_student/models.py msgid "" "The datetime after which users are no longer allowed to submit photos for " "verification." msgstr "" +"La fecha y hora después de la cual los usuarios ya no podrán enviar fotos de" +" verificación." #: lms/djangoapps/verify_student/views.py msgid "Intro" @@ -8686,18 +8748,20 @@ msgid "" "Photo ID image is required if the user does not have an initial verification" " attempt." msgstr "" +"La imagen de ID con foto es requerida si el usuario no tiene un intento " +"inicial de verificación." #: lms/djangoapps/verify_student/views.py msgid "Missing required parameter face_image" -msgstr "" +msgstr "Falta el parámetro obligatorio face_image" #: lms/djangoapps/verify_student/views.py msgid "Invalid course key" -msgstr "" +msgstr "Llave de curso inválida" #: lms/djangoapps/verify_student/views.py msgid "Invalid checkpoint location" -msgstr "" +msgstr "Localizacion de punto de control inválida" #: lms/djangoapps/verify_student/views.py msgid "No profile found for user" @@ -9079,6 +9143,7 @@ msgstr "Borrar artículo" #: lms/templates/wiki/delete.html #: lms/templates/wiki/plugins/attachments/index.html +#: cms/templates/component.html cms/templates/studio_xblock_wrapper.html msgid "Delete" msgstr "Borrar" @@ -9501,7 +9566,7 @@ msgstr "Ya existe una cohorte con ese nombre." #: openedx/core/djangoapps/credit/email_utils.py msgid "Course Credit Eligibility" -msgstr "" +msgstr "Elegibilidad para créditos del curso" #: openedx/core/djangoapps/credit/models.py msgid "" @@ -9549,10 +9614,13 @@ msgid "" "her request for credit. This is displayed to students *after* they have " "requested credit." msgstr "" +"URL del proveedor de créditos, donde el usuario puede revisar el estado de " +"su solicitud de crédito. Esta es mostrada a los usuarios después de que han " +"solicitado los créditos." #: openedx/core/djangoapps/credit/models.py msgid "Description for the credit provider displayed to users." -msgstr "" +msgstr "Descripción del proveedor de créditos mostrada a los usuarios." #: openedx/core/djangoapps/credit/models.py msgid "" @@ -9560,6 +9628,9 @@ msgid "" "*after* paying for the credit to get credit for a credit course against a " "credit provider." msgstr "" +"Texto plano o contenido HTML para mostrar los pasos siguientes después de " +"pagar por el crédito para obtener créditos para un curso por cuenta de un " +"proveedor." #: openedx/core/djangoapps/credit/models.py msgid "" @@ -9567,6 +9638,10 @@ msgid "" "eligibility email content which is sent when user has met all credit " "eligibility requirements." msgstr "" +"Texto plano o contenido HTML para mostrar un mensaje personalizado dentro " +"del correo de elegibilidad para créditos que se enviará a los usuarios " +"cuando hayan cumplido todos los requerimientos de elegibilidad para " +"créditos." #: openedx/core/djangoapps/credit/models.py msgid "" @@ -9574,14 +9649,17 @@ msgid "" "receipt email content which is sent *after* paying to get credit for a " "credit course." msgstr "" +"Texto plano o contenido HTML para mostrar un mensaje personalizado dentro " +"del correo que se envía después de que el usuario ha pagado para obtener " +"crédito por un curso." #: openedx/core/djangoapps/credit/models.py msgid "Thumbnail image url of the credit provider." -msgstr "" +msgstr "URL de la imagen miniatura del proveedor de crédito." #: openedx/core/djangoapps/credit/models.py msgid "Deadline for purchasing and requesting credit." -msgstr "" +msgstr "Fecha límite para comprar y solicitar crédito." #: openedx/core/djangoapps/profile_images/images.py msgid "bytes" @@ -9866,6 +9944,10 @@ msgstr "Ubicación de curso erronea" msgid "Missing branch on fresh clone" msgstr "No se encuentra la rama en el nuevo clon" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "Grupo borrado" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9996,15 +10078,15 @@ msgstr "Vacío" #: cms/djangoapps/contentstore/views/import_export.py msgid "We only support uploading a .tar.gz file." -msgstr "" +msgstr "Solo está soportada la carga de archivos .tar.gz." #: cms/djangoapps/contentstore/views/import_export.py msgid "File upload corrupted. Please try again" -msgstr "" +msgstr "La carga del archivo ha fallado. Por favor intente nuevamente." #: cms/djangoapps/contentstore/views/import_export.py msgid "Could not find the {0} file in the package." -msgstr "" +msgstr "No se ha encontrado el archivo {0} en el paquete." #: cms/djangoapps/contentstore/views/item.py msgid "Invalid data" @@ -10259,6 +10341,11 @@ msgstr "Cancelar" msgid "Course Number" msgstr "Código del curso" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "Error:" @@ -10367,7 +10454,7 @@ msgstr "Navegación del curso" #: cms/templates/widgets/header.html lms/templates/navigation-edx.html #: lms/templates/navigation.html msgid "Account" -msgstr "" +msgstr "Cuenta" #: cms/templates/widgets/header.html lms/templates/help_modal.html #: lms/templates/static_templates/help.html wiki/plugins/help/wiki_plugin.py @@ -10585,11 +10672,11 @@ msgstr "Reiniciar búsqueda" #: lms/templates/dashboard.html msgid "Find New Courses" -msgstr "" +msgstr "Encontrar nuevos cursos" #: lms/templates/dashboard.html msgid "Account Status Info" -msgstr "" +msgstr "Información de estado de la cuenta" #: lms/templates/dashboard.html msgid "Order History" @@ -11219,7 +11306,7 @@ msgstr "Despliegue de más opciones" #: lms/templates/navigation-edx.html lms/templates/navigation.html msgid "Profile" -msgstr "" +msgstr "Perfil" #: lms/templates/navigation-edx.html lms/templates/navigation.html #: lms/templates/shoppingcart/shopping_cart.html @@ -11526,6 +11613,9 @@ msgid "" "You have re-enabled forum notification emails from {platform_name}. You may " "{dashboard_link_start}return to your dashboard{link_end}." msgstr "" +"Ha habilitado nuevamente los correos electrónicos de notificación de foros " +"desde {platform_name}. Haga clic {dashboard_link_start}aquí{link_end} para " +"volver al panel de control. " #: lms/templates/seq_module.html msgid "Previous" @@ -11864,6 +11954,10 @@ msgid "" "You may {dashboard_link_start}return to your dashboard{link_end}. If you did" " not mean to do this, {undo_link_start}you can re-subscribe{link_end}." msgstr "" +"Ya no recibirá correos electrónicos de notificación de foros desde " +"{platform_name}. Haga clic {dashboard_link_start}aquí{link_end} para " +"regresar al panel de control. Si desea volver a suscriibirse a las " +"notificaciones, haga clic {undo_link_start}aquí{link_end}." #: lms/templates/using.html msgid "Using the system" @@ -12121,7 +12215,7 @@ msgstr "Panel de Control para tutores CCX" #: lms/templates/ccx/coach_dashboard.html msgid "Name your CCX" -msgstr "" +msgstr "Nombre para su CCX" #: lms/templates/ccx/coach_dashboard.html #: lms/templates/courseware/legacy_instructor_dashboard.html @@ -12142,6 +12236,11 @@ msgstr "Política de Calificaciones" msgid "Batch Enrollment" msgstr "Inscripciones en lote" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "Casilla de Correo electrónico/Nombres de usuario" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -12159,11 +12258,6 @@ msgstr "" "No recibirá notificaciones de los correos con rebotes, por lo tanto, debe " "asegurarse de que los correos estén bien escritos." -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "Casilla de Correo electrónico/Nombres de usuario" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -12212,7 +12306,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "Inscribirse" @@ -12221,6 +12314,10 @@ msgstr "Inscribirse" msgid "Student List Management" msgstr "Gestión de lista de Estudiantes" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "ALERTA" @@ -12250,12 +12347,16 @@ msgstr "Guardar Política de Calificaciones" #: lms/templates/ccx/schedule.html msgid "Date format four digit year dash two digit month dash two digit day" msgstr "" +"Formato de fecha, cuatro dígitos para el año, guión, dos dígitos para el " +"mes, guión, dos dígitos para el día." #. Translators: This explains to people using a screen reader how to interpret #. the format of HH:MM #: lms/templates/ccx/schedule.html msgid "Time format two digit hours colon two digit minutes" msgstr "" +"Formato de hora, dos dígitos para la hora, dos puntos, dos dígitos para los " +"minutos." #: lms/templates/ccx/schedule.html msgid "Set date" @@ -12282,12 +12383,16 @@ msgstr "Fecha inicial:" #: lms/templates/ccx/schedule.html msgid "format four digit year dash two digit month dash two digit day" msgstr "" +"Formato de fecha, cuatro dígitos para el año, guión, dos dígitos para el " +"mes, guión, dos dígitos para el día." #. Translators: This explains to people using a screen reader how to interpret #. the format of HH:MM #: lms/templates/ccx/schedule.html msgid "Start time format two digit hours colon two digit minutes" msgstr "" +"Formato de hora de inicio, dos dígitos para la hora, dos puntos, dos dígitos" +" para los minutos." #: lms/templates/ccx/schedule.html msgid "(Optional)" @@ -12298,6 +12403,8 @@ msgstr "(Opcional)" #: lms/templates/ccx/schedule.html msgid "Due Time format two digit hours colon two digit minutes" msgstr "" +"Formato de hora límite, dos dígitos para la hora, dos puntos, dos dígitos " +"para los minutos." #: lms/templates/ccx/schedule.html msgid "Add Unit" @@ -12325,24 +12432,25 @@ msgstr "Descargar calificaciones de estudiantes" #: lms/templates/certificates/_accomplishment-banner.html msgid "Print or share your certificate:" -msgstr "" +msgstr "Imprima o comparta su Constancia de Honor" #: lms/templates/certificates/_accomplishment-banner.html msgid "I completed the {course_title} course on {platform_name}." -msgstr "" +msgstr "Completé el {course_title} en {platform_name}" #: lms/templates/certificates/_accomplishment-banner.html msgid "" "I completed a course on {platform_name}. Take a look at my certificate." msgstr "" +"Completé un curso abierto en {platform_name}. Mira mi Constancia de Honor." #: lms/templates/certificates/_accomplishment-banner.html msgid "Click the link to see my certificate." -msgstr "" +msgstr "Haz click en el link para ver mi Constancia de Honor" #: lms/templates/certificates/_accomplishment-banner.html msgid "Post on Facebook" -msgstr "" +msgstr "Compartir en Facebook" #: lms/templates/certificates/_accomplishment-banner.html #: lms/templates/dashboard/_dashboard_course_listing.html @@ -12351,7 +12459,7 @@ msgstr "Compartir en Twitter" #: lms/templates/certificates/_accomplishment-banner.html msgid "Tweet this Accomplishment. Pop up window." -msgstr "" +msgstr "Compartir este logro en Twitter. Ventana pop-up." #: lms/templates/certificates/_accomplishment-banner.html msgid "Add to LinkedIn Profile" @@ -12614,10 +12722,9 @@ msgstr "fecha límite: {date}" #: lms/templates/courseware/accordion.html msgid "This section is graded." -msgstr "" +msgstr "Esta sección es calificable" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "Ocurrió un error. Por favor intente nuevamente más tarde." @@ -12658,8 +12765,8 @@ msgid "Enrollment is Closed" msgstr "Inscripción cerrada" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" -msgstr "Añadir {course_name} al carrito ({price})" +msgid "Add {course_name} to Cart ({price} USD)" +msgstr "" #: lms/templates/courseware/course_about.html msgid "Register for {course_name}" @@ -12739,7 +12846,6 @@ msgid "Additional Resources" msgstr "Recursos Adicionales" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "Inscribirse" @@ -12753,7 +12859,7 @@ msgstr "Ver este curso como:" #: lms/templates/courseware/course_navigation.html msgid "Specific student" -msgstr "" +msgstr "Estudiante específico" #: lms/templates/courseware/course_navigation.html msgid "Student in {content_group}" @@ -12765,11 +12871,11 @@ msgstr "Nombre de usuario o correo electrónico" #: lms/templates/courseware/course_navigation.html msgid "Set preview mode" -msgstr "" +msgstr "Configurar modo de vista previa" #: lms/templates/courseware/course_navigation.html msgid "You are now viewing the course as {user_name}." -msgstr "" +msgstr "Ahora está viendo el curso como {user_name}." #: lms/templates/courseware/course_navigation.html msgid "Course Material" @@ -12795,11 +12901,11 @@ msgstr "" #: lms/templates/courseware/courses.html msgid "List of Courses" -msgstr "" +msgstr "Lista de cursos" #: lms/templates/courseware/courses.html msgid "Refine Your Search" -msgstr "" +msgstr "Refinar su búsqueda" #: lms/templates/courseware/courseware-chromeless.html #: lms/templates/courseware/courseware.html @@ -12879,10 +12985,12 @@ msgid "" "You are not currently enrolled in this course. {link_start}Sign up " "now!{link_end}" msgstr "" +"Actualmente, no está inscrito a este curso. {link_start}Inscríbase " +"aquí!{link_end}" #: lms/templates/courseware/info.html msgid "View Updates in Studio" -msgstr "" +msgstr "Ver actualizaciones en Studio" #: lms/templates/courseware/info.html msgid "Course Updates & News" @@ -13154,54 +13262,6 @@ msgstr "" msgid "Course errors" msgstr "Errores del curso" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "Acerca de {course_id}" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "Próximamente" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "Acerca de {course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "Acceder al Contenido del Curso" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "Usted está inscrito" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "Inscribirse a" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "y seleccione su ruta de estudiante" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "y proceda a la verificación" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "Las inscripciones están cerradas" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "Noticias - MITx 6.002x" @@ -13281,23 +13341,29 @@ msgstr "Requisitos para obtener Crédito del curso" #: lms/templates/courseware/progress.html msgid "{student_name}, you are no longer eligible for credit in this course." msgstr "" +"{student_name}, usted ya no es elegible para obtener créditos en este curso." #: lms/templates/courseware/progress.html msgid "" "{student_name}, you have met the requirements for credit in this course." msgstr "" +"{student_name}, usted ha completado los requerimientos para obtener crédito " +"por este curso." #: lms/templates/courseware/progress.html msgid "{a_start}Go to your dashboard{a_end} to purchase course credit." msgstr "" +"Visite su {a_start}Panel de control{a_end} para adquirir créditos de curso." #: lms/templates/courseware/progress.html msgid "{student_name}, you have not yet met the requirements for credit." msgstr "" +"{student_name}, usted no ha completado los requerimientos para obtener " +"crédito por este curso." #: lms/templates/courseware/progress.html msgid "Information about course credit requirements" -msgstr "" +msgstr "Información acerca de requerimientos de créditos para el curso" #: lms/templates/courseware/progress.html msgid "display_name" @@ -13321,7 +13387,7 @@ msgstr "Menos" #: lms/templates/courseware/progress.html msgid "{earned} of {total} possible points" -msgstr "" +msgstr "{earned} de {total} puntos posibles" #: lms/templates/courseware/progress.html msgid "Problem Scores: " @@ -13359,6 +13425,9 @@ msgid "" "completing your {platform_name} course! {link_start}Get your credit " "now.{link_end}" msgstr "" +"Felicitaciones! Usted es elegible para recibir créditos por haber completado" +" exitosamente el curso en {platform_name}. {link_start}Obtenga sus créditos " +"ahora{link_end}." #: lms/templates/credit_notifications/credit_eligibility_email.html msgid "" @@ -13366,6 +13435,9 @@ msgid "" "finish a degree already started, or fulfill requirements at a different " "academic institution." msgstr "" +"Los créditos de curso pueden ayudarle a avanzar hacia su grado " +"universitario, a terminar un programa iniciado, o a cumplir con requisitos " +"de otra institución académica." #: lms/templates/credit_notifications/credit_eligibility_email.html msgid "" @@ -13373,12 +13445,16 @@ msgid "" "dashboard{link_end} and click the Get Credit button. No application, " "transcript, or grade report is required." msgstr "" +"Para obtener créditos de curso, visite su {link_start}Panel de control de " +"{platform_name}{link_end} y haga clic en el botón Obtener Créditos." #: lms/templates/credit_notifications/credit_eligibility_email.html msgid "" "We hope you enjoyed the course, and we hope to see you in future " "{platform_name} courses!" msgstr "" +"Esperamos que haya disfrutado del curso, y esperamos verlo en el futuro en " +"nuevos cursos de {platform_name}!" #: lms/templates/credit_notifications/credit_eligibility_email.html #: lms/templates/emails/activation_email.txt @@ -13391,6 +13467,8 @@ msgid "" "{link_start}Click here for more information on credit at " "{platform_name}{link_end}." msgstr "" +"{link_start}Haga clic aquí para más información sobre los créditos en " +"{platform_name}{link_end}." #: lms/templates/dashboard/_dashboard_certificate_information.html msgid "" @@ -13518,6 +13596,10 @@ msgstr "Curso terminado - {end_date}" msgid "Started - {start_date}" msgstr "Inicio: {start_date}" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "Próximamente" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "Inicio del curso - {start_date}" @@ -13686,14 +13768,16 @@ msgstr "" msgid "" "An error occurred with this transaction. For help, contact {support_email}." msgstr "" +"Ocurrió un error con esta transacción. Para obtener asistencia, contacte a " +"{support_email}." #: lms/templates/dashboard/_dashboard_credit_info.html msgid "You are now eligible for credit. Congratulations!" -msgstr "" +msgstr "Usted es eligible para créditos. Felicitaciones!" #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Get credit" -msgstr "" +msgstr "Obtener créditos" #. Translators: link_to_provider_site is a link to an external webpage. The #. text of the link will be the name of a @@ -13703,10 +13787,12 @@ msgid "" "Thank you. Your credit is processing. Please see {link_to_provider_site} for" " more information." msgstr "" +"Gracias. Su crédito está siendo procesado. Visite {link_to_provider_site} " +"para mayor información." #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Learn more" -msgstr "" +msgstr "Aprender más" #. Translators: link_to_provider_site is a link to an external webpage. The #. text of the link will be the name of a @@ -13716,23 +13802,25 @@ msgid "" "Thank you for your purchase. Please proceed to {link_to_provider_site} to " "finalize your credit." msgstr "" +"Gracias por su compra. Visite {link_to_provider_site} para finalizar su " +"crédito." #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Finalize credit" -msgstr "" +msgstr "Finalizar crédito" #. Translators: link_to_provider_site is a link to an external webpage. The #. text of the link will be the name of a #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Access credit" -msgstr "" +msgstr "Accesar créditos" #. Translators: link_to_provider_site is a link to an external webpage. The #. text of the link will be the name of a @@ -13742,10 +13830,12 @@ msgid "" "Your credit has been processed but denied. Please contact " "{link_to_provider_site} for more information." msgstr "" +"Su crédito ha sido procesado y negado. Por favor contacte " +"{link_to_provider_site} para más información." #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Contact {provider}" -msgstr "" +msgstr "Contactar a {provider}" #: lms/templates/dashboard/_dashboard_info_language.html msgid "edit" @@ -13925,10 +14015,6 @@ msgstr "por mayor actividad" msgid "by most votes" msgstr "por mayor número de votos" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "," - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -14972,7 +15058,7 @@ msgstr "" #: lms/templates/instructor/instructor_dashboard_2/certificates.html msgid "Generate Certificates" -msgstr "" +msgstr "Generar certificados" #: lms/templates/instructor/instructor_dashboard_2/certificates.html #: lms/templates/instructor/instructor_dashboard_2/course_info.html @@ -14981,7 +15067,7 @@ msgstr "" #: lms/templates/instructor/instructor_dashboard_2/send_email.html #: lms/templates/instructor/instructor_dashboard_2/student_admin.html msgid "Pending Tasks" -msgstr "" +msgstr "Tareas pendientes" #: lms/templates/instructor/instructor_dashboard_2/certificates.html #: lms/templates/instructor/instructor_dashboard_2/course_info.html @@ -15001,6 +15087,8 @@ msgstr "Información de inscripción" #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Number of enrollees (admins, staff, and students) by track" msgstr "" +"Número total de inscritos (incluye administradores, personal de apoyo y " +"estudiantes) por ruta" #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Audit" @@ -15022,6 +15110,10 @@ msgstr "Nombre del curso:" msgid "Course Display Name:" msgstr "Nombre para mostrar del curso:" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "¿Ha comenzado ya el curso?" @@ -15038,6 +15130,10 @@ msgstr "No" msgid "Has the course ended?" msgstr "¿Ha terminado ya el curso?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "Cortes de calificaciones:" @@ -15141,10 +15237,12 @@ msgstr "Descargar la lista de estudiantes que pueden inscribirse al curso." msgid "" "Click to generate a CSV file of all proctored exam results in this course." msgstr "" +"Haga clic para generar un archivo CSV con el registro de todos los " +"resultados de examen para este curso" #: lms/templates/instructor/instructor_dashboard_2/data_download.html msgid "Generate Proctored Exam Results Report" -msgstr "" +msgstr "Generar reporte de resultados para examenes supervisados" #: lms/templates/instructor/instructor_dashboard_2/data_download.html msgid "" @@ -15881,6 +15979,8 @@ msgid "" "Note: Users must have an activated {platform_name} account before they can " "be enrolled as beta testers." msgstr "" +"Nota: Los usuarios deben tener una cuenta activa en {platform_name} antes de" +" que puedan ser registrados como usuarios de prueba." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -15908,14 +16008,14 @@ msgstr "Eliminar usuario de prueba" #. users can be added to. #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Course Team Management" -msgstr "" +msgstr "Administración del equipo del curso" #. Translators: an "Administrator Group" is a group, such as Course Staff, #. that #. users can be added to. #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Select a course team role:" -msgstr "" +msgstr "Seleccione un rol del equipo del curso:" #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Getting available lists..." @@ -15927,6 +16027,11 @@ msgid "" "Admin must give you the Admin role to add Staff or Beta Testers, or the " "Discussion Admin role to add discussion moderators and TAs." msgstr "" +"Los miembros del equipo de curso no pueden modificar estas listas. Para " +"administrar la pertenencia de los miembros en el curso, un administrador " +"debe otorgarle permisos para añadir Miembros del equipo o usuarios de " +"pruebas, o el rol de administrador de discusiones para añadir moderadores y " +"profesores asistentes." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -15935,6 +16040,12 @@ msgid "" "all course data. Staff also have access to your course in Studio and " "Insights. You can only give course team roles to enrolled users." msgstr "" +"Los miembros del equipo del curso con rol de funcionarios, pueden ayudarle a" +" gestionar algunos aspectos de su curso. Pueden registrar y dar de baja a " +"los estudiantes, así como modificar sus calificaciones y ver todos los datos" +" del curso. Los funcionarios también tendrán acceso por Studio e Insights. " +"Usted solo puede asignar privilegios de equipo del curso a usuarios que " +"estén inscritos." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Staff" @@ -15948,10 +16059,16 @@ msgid "" " to manage course team membership. You can only give course team roles to " "enrolled users." msgstr "" +"Los miembros del equipo del curso con rol de administradores, pueden " +"ayudarle a gestionar algunos aspectos de su curso. Pueden hacer todas las " +"tareas de los funcionarios, y además añadir o eliminar funcionarios y " +"administradores, otorgar roles de moderación de foros y roles de usuarios de" +" pruebas. Usted solo puede asignar privilegios de equipo del curso a " +"usuarios que estén inscritos." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Admin" -msgstr "" +msgstr "Agregar administrador" #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Beta Testers" @@ -15963,6 +16080,10 @@ msgid "" "sure that the content works, but have no additional privileges. You can only" " give course team roles to enrolled users." msgstr "" +"Los Usuarios de pruebas beta pueden ver el contenido del curso antes de que " +"el resto de los alumnos. Pueden asegurarse de que el contenido funcione, " +"pero no tienen privilegios adicionales. Usted solo puede asignar privilegios" +" de equipo del curso a usuarios que estén inscritos." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Beta Tester" @@ -15980,6 +16101,12 @@ msgid "" "moderation roles to manage course team membership. You can only give course " "team roles to enrolled users." msgstr "" +"Los administradores de discusiones pueden editar o borrar publicaciones, " +"limpiar marcas de uso indebido, cerrar y reabrir discusiones, validar " +"respeustas, y ver las publicaciones de todas las cohortes. Sus publicaciones" +" se marcan como \"Funcionarios\". También pueden añadir o borrar roles de " +"moderador de discusiones. Usted solo puede asignar privilegios de equipo del" +" curso a usuarios que estén inscritos." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Discussion Admin" @@ -15997,6 +16124,12 @@ msgid "" " by adding or removing discussion moderation roles. You can only give course" " team roles to enrolled users." msgstr "" +"Los moderadores de discusiones pueden editar o borrar publicaciones, limpiar" +" marcas de uso indebido, cerrar y reabrir discusiones, validar respeustas, y" +" ver las publicaciones de todas las cohortes. Sus publicaciones se marcan " +"como \"Funcionarios\". No pueden añadir o borrar roles de moderador de " +"discusiones. Usted solo puede asignar privilegios de equipo del curso a " +"usuarios que estén inscritos." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Moderator" @@ -16014,6 +16147,13 @@ msgid "" "from all cohorts. Their posts are marked as 'Community TA'. You can only " "give course team roles to enrolled users." msgstr "" +"Los Profesores asistentes de la comunidad, son miembros de la comunidad que " +"usted encuentra de mucha ayuda en los foros de discusión. Pueden editar o " +"borrar publicaciones, limpiar marcas de uso indebido, cerrar y reabrir " +"discusiones, validar respeustas, y ver las publicaciones de todas las " +"cohortes. Sus publicaciones se marcan como \"Profesores asistentes\". Usted " +"solo puede asignar privilegios de equipo del curso a usuarios que estén " +"inscritos." #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Community TA" @@ -16118,11 +16258,11 @@ msgstr "No hay problemas en esta sección." #: lms/templates/instructor/instructor_dashboard_2/proctoring.html msgid "Allowance Section" -msgstr "" +msgstr "Sección de asignaciones" #: lms/templates/instructor/instructor_dashboard_2/proctoring.html msgid "Student Proctored Exam Section" -msgstr "" +msgstr "Sección de examenes de estudiante supervisados" #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "Send Email" @@ -16138,11 +16278,11 @@ msgstr "Mi mismo" #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "Staff and admins" -msgstr "" +msgstr "Personal del curso y administradores" #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "All (students, staff, and admins)" -msgstr "" +msgstr "Todos (estudiantes, equipo del curso y administradores)" #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "Subject: " @@ -16321,6 +16461,10 @@ msgid "" " the 'Pending Tasks' table. To see status for all tasks submitted for this " "problem and student, click on this button:" msgstr "" +"Las tareas de re puntuación en segundo plano y el estado de las tareas " +"activas aparecerán en la tabla de 'Tareas pendientes'. Para ver el estado de" +" todas las tareas enviadas para este problema y estudiante, haga clic en " +"este botón:" #: lms/templates/instructor/instructor_dashboard_2/student_admin.html msgid "Show Background Task History for Student" @@ -16520,6 +16664,14 @@ msgid "" "{end_ul_tag}\n" "{end_p_tag}\n" msgstr "" +"\n" +"{p_tag}Usted no tiene ninguna calificación de pares pendiente. Para tener calificaciones de pares:\n" +"{ul_tag}\n" +"{li_tag}Usted debe haber enviado una respuesta a un problema de calificación de pares.{end_li_tag}\n" +"{li_tag}El instructor debe haber calificado los ensayos que se usan para explicarle mejor a usted los criterios de calificación.{end_li_tag}\n" +"{li_tag}Debe haber envíos que estén pendientes de ser calificados.{end_li_tag}\n" +"{end_ul_tag}\n" +"{end_p_tag}\n" #: lms/templates/peer_grading/peer_grading.html #: lms/templates/peer_grading/peer_grading_closed.html @@ -17298,11 +17450,11 @@ msgstr "Vincular" #: lms/templates/support/certificates.html lms/templates/support/index.html msgid "Student Support" -msgstr "" +msgstr "Soporte a estudiantes" #: lms/templates/support/certificates.html msgid "Student Support: Certificates" -msgstr "" +msgstr "Soporte a estudiantes: Certificados" #: lms/templates/survey/survey.html msgid "User Survey" @@ -17376,23 +17528,27 @@ msgstr "La fecha límite de verificación ya pasó" #: lms/templates/verify_student/missed_deadline.html msgid "Upgrade Deadline Has Passed" -msgstr "" +msgstr "La fecha límite para hacer upgrades ha pasado." #: lms/templates/verify_student/missed_deadline.html msgid "" "The verification deadline for {course_name} was {date}. Verification is no " "longer available." msgstr "" +"La fecha límite para verificaciones para {course_name} fué el {date}. Ya no " +"está disponible la verificación" #: lms/templates/verify_student/missed_deadline.html msgid "" "The deadline to upgrade to a verified certificate for this course has " "passed. You can still earn an honor code certificate." msgstr "" +"La fecha límite para solicitar un certificado verificado para este curso ya " +"ha pasado. Todavía puede aplicar para un certificado de código de honor." #: lms/templates/verify_student/pay_and_verify.html msgid "Upgrade Your Enrollment For {course_name}." -msgstr "Actualizar su inscripción para {course_name}." +msgstr "Hacer upgrade su inscripción para {course_name}." #: lms/templates/verify_student/pay_and_verify.html msgid "Receipt For {course_name}" @@ -18138,23 +18294,23 @@ msgstr "Descartar" #: cms/templates/course_outline.html msgid "Warning" -msgstr "" +msgstr "Atención" #: cms/templates/course_outline.html msgid "This course uses features that are no longer supported." -msgstr "" +msgstr "Este curso utiliza funcionalidades que ya no están soportadas." #: cms/templates/course_outline.html msgid "You must delete or replace the following components." -msgstr "" +msgstr "Debe borrar o reemplazar los siguientes componentes." #: cms/templates/course_outline.html msgid "Unsupported Components" -msgstr "" +msgstr "Componentes no soportados" #: cms/templates/course_outline.html msgid "Deprecated Component" -msgstr "" +msgstr "Componente obsoleto" #: cms/templates/course_outline.html msgid "" @@ -18163,10 +18319,15 @@ msgid "" "the {link_start}Advanced Settings page{link_end}, locate the \"Advanced " "Module List\" setting, and then delete the following modules from the list." msgstr "" +"Para evitar errores, {platform_name} recomienda que elimine las " +"funcionalidades no soportadas de la configuración avanzada del curso. Para " +"hacer esto, visite la página de {link_start}configuración " +"avanzada{link_end}, localice el campo \"Lista de módulos avanzados\" y borre" +" de la lista los modulos siguientes." #: cms/templates/course_outline.html msgid "Unsupported Advance Modules" -msgstr "" +msgstr "Módulos avanzados no soportados" #: cms/templates/course_outline.html msgid "Click to add a new section" @@ -18202,10 +18363,6 @@ msgstr "" msgid "View Live" msgstr "Ver en vivo" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "Fecha de inicio del curso:" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "Editar la fecha de inicio" @@ -19816,6 +19973,8 @@ msgstr "Dirección de correo electrónico del usuario" #: cms/templates/manage_users.html msgid "Provide the email address of the user you want to add as Staff" msgstr "" +"Ingrese el correo electrónico del usuario al cual quiere agregar como " +"Funcionario del curso" #: cms/templates/manage_users.html cms/templates/manage_users_lib.html msgid "Add User" @@ -19847,6 +20006,9 @@ msgid "" "Course team members with the Staff role are course co-authors. They have " "full writing and editing privileges on all course content." msgstr "" +"Los miembros de el equipo del curso con el rol de funcionarios son coautores" +" del curso. Ellos tienen privilegios completos de escritura y edición sobre " +"todo el contenido del curso." #: cms/templates/manage_users.html msgid "" @@ -19861,6 +20023,8 @@ msgid "" "All course team members are automatically enrolled in the course and can " "access content in Studio, the LMS, and Insights." msgstr "" +"Todos los miembros del curso estan automaticamente inscritos en el mismo y " +"pueden acceder al contenido en Studio, el LMS, e Insights" #: cms/templates/manage_users.html msgid "Transferring Ownership" @@ -19873,6 +20037,11 @@ msgid "" " make another user the Admin, then ask that user to remove you from the " "Course Team list." msgstr "" +"Todos los cursos deben tener un administrador. Si usted es uno y quiere " +"transferir la titularidad del curso, haga clic en Agregar acceso de " +"administrador para para elegir a otro usuario como Adminstrador, " +"luego puede pedirle dicho usuario que lo elimine de la lista de " +"administradores del curso." #: cms/templates/manage_users_lib.html msgid "Library User Access" @@ -19924,12 +20093,17 @@ msgid "" "Library Users can view library content and can reference or use library " "components in their courses, but they cannot edit the contents of a library." msgstr "" +"Los usuarios de la librería pueden ver el contenido de la misma y pueden " +"referenciar o utilizar los elementos de la libriria en sus cursos, sin " +"embargo no pueden editar los contenidos de la librería." #: cms/templates/manage_users_lib.html msgid "" "Library Staff are content co-authors. They have full editing privileges on " "the contents of a library." msgstr "" +"Los miembros de la librería son coautores del curso. Tienen todos los " +"privilegios de edición de los contenidos de la librería." #: cms/templates/manage_users_lib.html msgid "" @@ -19937,6 +20111,9 @@ msgid "" "other team members. There must be at least one user with the Admin role in a" " library." msgstr "" +"Los administradores de librerías tienen privilegios de edición y también " +"pueden añadir o remover a otros miembros. Toda librería siempre debe tener " +"al menos un usuario administrador." #: cms/templates/register.html cms/templates/widgets/header.html msgid "Sign Up" @@ -20107,15 +20284,15 @@ msgstr "" #: cms/templates/settings.html msgid "Course Credit Requirements" -msgstr "" +msgstr "Requerimientos de créditos para el curso" #: cms/templates/settings.html msgid "Steps required to earn course credit" -msgstr "" +msgstr "Pasos requeridos para obtener Crédito del curso" #: cms/templates/settings.html msgid "Minimum Grade" -msgstr "" +msgstr "Calificación mínima" #: cms/templates/settings.html msgid "Successful Proctored Exam" @@ -20127,7 +20304,7 @@ msgstr "Examen supervisado {number}" #: cms/templates/settings.html msgid "ID Verification" -msgstr "" +msgstr "Verificación de ID" #: cms/templates/settings.html msgid "In-Course Reverification {number}" @@ -20481,19 +20658,19 @@ msgstr "" #: cms/templates/settings_graders.html msgid "Credit Eligibility" -msgstr "" +msgstr "Elegibilidad para créditos" #: cms/templates/settings_graders.html msgid "Settings for course credit eligibility" -msgstr "" +msgstr "Configuración de elegibilidad para créditos del curso" #: cms/templates/settings_graders.html msgid "Minimum Credit-Eligible Grade:" -msgstr "" +msgstr "Calificación minima para elegibilidad para créditos:" #: cms/templates/settings_graders.html msgid "Must be greater than or equal to the course passing grade" -msgstr "" +msgstr "Debe ser mayor o igual a la calificación mínima para aprobar." #: cms/templates/settings_graders.html msgid "Grading Rules & Policies" @@ -20759,6 +20936,21 @@ msgstr "" "El contenido del curso ya no existe. Por favor seleccione otro o conceda " "acceso a todos los estudiantes y al personal" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/es_419/LC_MESSAGES/djangojs.mo b/conf/locale/es_419/LC_MESSAGES/djangojs.mo index 127d22cda5e1a29bd66a21a52f220a5c074254b1..36fb2892ffdae852f7a3e393f7aee9f876b04f9e 100644 GIT binary patch delta 40705 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 a!JNi9pZQbGF&H06&VABYRV1ogp8p36L{qc? delta 29105 zcmZA91#}fxqlV#`2o4GE5FA2*;10pvDems>b|_L@0|YD5;$8wApvAQ~v`Bzr#i2-X zzwdYU=3lHk>rS3+vwhDw$xrXxFR?ED6w7lhQNV16D|4XZq`?w79Orrr$7xnqsg850 zyW<37G{(Y*=;8|u!B?0Pll5?%>==gO*cc1oe9Vleu@Jt*e3-MR<1}y_kJEyH9^8t> z@EWGWl)W4$BNnkX#RSAhU=o~yiSTC(#;r)dox>OxPom02V>mvs=IL$9^}=Ah%Im$)!-#m{uA`a9{o&*`k+QQ924RMjE@UY4Xwry+-B1+q8hw|D*qZ) zE>?f)PfZ{x0cGSx?SXQb99!A+L8z&nh}m!kYJ@wGZR1=)jqE0>;)kf2dxPqz-vGyn zjR`O@ra;y6-2lc{h(LW3)bJ$CgsZSKp1>e1G|*H~5!Vr~jZ5(pPQt~59A_Ek9L#>f zGpPDv4{@Bdm=!ex2mr(<`hcWOuCZ>Jo zErH}1Z=9Kl%&2%lR0nEcTI`LgaGK3ujB3b>+3_H1hWpF5)d5h|BHwtN_(@+ikgc{*5sHNC~ zs&5Cz!BePB8;xrBzsbzMcK2rzVqxAXrh;OqkyOK^*woq^GZP<&YH%H@q0Oj~dNCgE zMm2aG)qx8b8y{I;VNBv*JOtFEm{ZM*Bm_0Grl=_%f$G2vR7Y20YP^gZ>1$NEnA6O2 zsZbp%iE6kkYG4gf?X?`(R|46}*Tpq?v+@pb;o5Ku$4P(AK|32`W@;VG!|zTC!lU@-Bs zsAGEzvta6(W-pXM)l&<##_doY>xEi^;pmU!Fs9D`Bm$bU2-KR*wf=&tV1teCM2++i zY9`L3ru1*rh+boH{AAOMMwtA%$Vi>8sQL$^mS7CV)A>I|Kx=vhwf1i?4W^o9W}-0a z_*FqoXlO*(HR1X@CItCUZAGP znPWN-fHjCFLp9V66XROc-r0kp_yu!fXr%c}X@HuU-B=C}p*kLWu6c7NnoIxn0?9{0 za%_N_i5^%OCt^O_kLu_vOo)NJ6jV`i)S8B%_CzRZWW`Y<4@Z@&j@p#p<7RA!wK4g8 z<}aE+r}@UR3rq!R7Mib68Bh(BMO9E8Q({xpn)XLEFd8%9WYkPA#oxj>GlhnvV_kfLNon6HvxW#Z#FAKXty$|asN=XA zRlzpYF8>Wx(FxRMx`68FZ5w}taf!dfI2gFjHq>UliYoU6)leWCLKVkD#gkwlrbdlCgH6weYPaYH=3jxbHldoe zzO}iv18PcpqHhMQqfr%4LXCK#b%k}4b*J^9^%SbzOCAF1=}lBc_tCd@sF4S5G*g`p z;}g$qErEK`R7Fi~bJS9FLe(=I_54%}!j(4Ni+b)T`l06vfl36fVFt{)iS@+F$o_Gz zBLC-%|J8ApVA0Kv^9No=b$nTr>A+glRByus_&chho7?6XQEfg7LSS{EQfncz#s<;WoWGszc3v`K*6W z0%~xWFM)TsEiez&&{`Y+9W~XbP#ud#jr0v_=3;C!9nFraFAr+3ltxW;CCrOeQENX8 zsL;Yr6C_$(ZWkq!)H)_p_p(-ec8L=v=mi^H6#Cu#-d-Km)1jCQC!v<$XH-YFpw@gZY6ecCI(`?` zk>?nKuTc#p-(@y&9@J(HN2S+7)$8dUsJ+ng zfLX(yn1=XBRL6coJ+~FLS%0(n2T%>(KrPt=)E@hc>UffarUQAW$F#!9b zMli^xkH)IRr(t8fjJdGDA=A+|n3MQvEQ22~1WO(^Z@d;*iTHHPfR``}zCXJonOE??{{$c(g@d`5&PkD@&7?#3T_yY#u zE!5K7JI4ISAn=?7e|(GDL?1C81|2sKq`{KJGhj??iCV*ss5KpmdXddWP5BB8#NSZ$ z>_e41h1#6=F(-cU5YU?EJYm+hC~EB*U~z1T>fi!Y!#|^r;~LC|2T*(BHLBx@PnxC6 ziaLIIQO}n{Jy#X8Vq4VS@=PS4DVdKN(PE5`QK*sZ!|(6{Y7_aNGWjV{6=Xw|D{RxN zqXy6fHN|aFd!{?8BS$bUo|))D%y~U|fxw%AKgS z{1f%uLkz}Gs2NOfmSw~=r~&jvr4L5U#5nZV`JYNaBbkXB!9vuC)}oeXi**O8W4o=# zt(Q<0-a&QrF~-5z=S;&%Q2D7)^=CkJJPbYRaU}vl*a)>tJE1BVh1GBhs^Mr1!MmvQ z8}m=IWVuisE@&-_L6xZ z6KX`E)`B)Y996E8O|OB8h&Qt7U2S@A)KU$@c{l;LW2R_R|5a2+{z28}d1W&`U}6&d zE}N-OhH4-)hGAjsgq<)uo<&XVdsIb!S4=z>YA*z%HeE_ogCUp<^Px6-6{E+gM?e)d z$5z-L^WkAEf$uOB3tcrII;}Ae@oCrt_h5U>{kP++$62@%%U&}LK13~nd)<7)ijUd@ zB`{FuzY_uN#vZ6O_V_aR`y6U1CZhJhY)p>Jt-CNi@$(phuTUdScEb!PE$X~yL3JQM zYUHJDyb1<;Ncf(BrmzD}!fvR7Z&4lcyJm%gG3A zO?F(u}FU>dA|m5BF5 z&72qeW8sHU^rex4Isr+Gc%)6`G@g4jPuOAUkYPJ;(ahX&c@8R+e1Jvf`4#6 zrhaZ3+=kVN-@;s&`#&=y%}`T01Hm*usos2pl)JL43bhp{o+8?#ySqL!`%Cc_4p z6}zKmViso5DtZY7k`Rq5cpa0ncCT?4@p$h{2ae$Y;;&KVyT3PI+4`d512G;B$AmZ$ z3*tf>KZn7@Z({(yLVxX|_XIQppHU;o!&y>+q8J}bp(?I!(;H(<;w>;acEBV!0%KqV zs-F2az6|x5vKBMpL)1(p_{e)fySN|$tz8*Z1s#-u-7!55##A^DgK!Hb#e*0JFQeA> zj?Itz$$VK&jT&)d)IhqRHuWG>$IqfC5rGE;v{oN&MzYUl1i4WiDPk>;{={pema0Cg z;jUN~XW$6@3w8eMeK9k+6>}5cY2yzt7V#%vn18L^8xqvBPpGMF;JCi@7N`-l!?f5R zHPsQA23MhGi1WE|JGd5>dx;*U@r z3XALdUcp_lfzJPI0-EB-sHuC7n$owJ4im(4eVZp2YVDih80?K|_%-ScSu?&_!eN-5 z_;}Rb`W3a-Ueq2rj@qmjFuu-z$^>RjvY|#^8E4}d9E_=gT;IR*nT2|%-$t!%!eH0; z1}ub=iFd$)_yV;gITE_gLhOUnF({FVFF|eUl8Nak?K?FI=#@ASYvX(j#Yfg;Nlbnj z)G=y@+Wirza+^>cyMlUU$Kv&Q9*bi*CQN3mi($kgFfSfNkJjonfd~vuZZ^+utWG>I zh3k7!)J5&qE;tEi;2=z!()E4p&Oy!8JM4~qQ@PHscoTgMrZzKn5VaQ`ppJX)G_J?D z_T$o+Q!p9Tq2*Wrqp=SrNNdjj4_KP`Vw{NAaVvI7=lWhmA?eMMRK(q+55R0#FvRt} zu$rSbZ$C_ryF)ntsR>*oL9fL3s9l;UgX?&)2I|EVn9+4IU?$YsS3oU67gUAgP{->m zs^Z{GX34@($E_afy)hfLDHo%jU+y8G7tVgvJNhif!|OKw81>+L)aeMwY)(g9R7Dw3 zFRpAho*z}dD5}14s25NjR6C7P^>;$O5k370=v_Vn^|3kIx)QZZcc6ND3=82s)SE9| z7GrKyeks&UHbpf&5Y>^fsD`GYj^SLJz7F~9@i^NEsE2=G0G>rZynuQ$Mxz@14|Ael zRx|S4s25WKtb;>PGjsxV&i_Q!dkxj0yBLBmQRR|m)68-H(h$%C*-@{={HUq*pgJ%X zwdRXZ9Xx;~@F?nIIWW6eX8ewG_2%dP~$4_pg@OSu#^u$`z)c|9NJUn96rf_DEi9F2bYP5O_h5l=;JqD82R)}fZ@5NcOnLapgz zR6WTHm>J7~$}fdFesxi=@Ybk-P4^H;Phh3>2x_uGP zpIn2Ax=s}F4OkA_6mxywZdYJV;>S=OeT}Lwptz|oHC88{8ySGd8A_lP31d*N-aDud zjgS&1UI)X8PsRy&5_S9NxL2o%_A0J#hr%==`50 zpf}xB%#Q#1GWdpD+Ke;&C*-Ly#JfOVm`yKBo7ABsfg4uMfQM-ExYHcG?Bm2e1SEIhhZ$*vt zG-@whKppSrsDTDoG@CI4dUBBvMnLa@7FZsap&EFA+GMX#yZSTgv;Wg zQ4MyhVop&X)W`Tt)M;3Q+Jt*i?VLg#-;1bvo>k%eYj?)4YCgR(qmD~B>O8l=#5e)< z%KQm6vSX-I6OHjOb~RH^GSr(g7i#LuqUvjoZEz@d!)vI4R`XOhBOi{M!bR4Ns1fW% zHF&|s@1Qp62hv%A;f=0RdfzD;(t*id|~7M4b0TWMy01l&0J2*gyA;79qQ9= z0IHq^sHIto8pvk!Xww|G8Mja)e}SqvZbP#asZkFW!J1eFbKqRmCftwez$w&o|DaCI z3)FKl8`<{-s(gA>hjKRJ{A;T6lAz5Jj@n#xQES-=RbgM$gQHPneTvUQ8SPMYhhv3H=J>( zcl%*%h&Qk>7HMuq-V61iG7HsEiWcVY0qIb?zB6hs^u;_l7q!PcM+t-w_y^TcKucpe zRD+{XYq$_Kwd+w!b{N(1^QaL$M9t7gRD*%7OnwlqA)XmK;AuR8g<8AL5uJbkHfAl4 zqt@^oYRX=t*50qJIUR{m9SKJ@R0l(_32L(qMeT`cs2QAN)7N1J;(M_l-a>sQG;C)- z|JxJLdG3YE7>)io1GD37Y>T_GAZBcDzE(HFiNvR&I-aV7X{ZzyBHjucVNFJXSaJM*RaT62E~S?b2-B&3C`@xQ+N9sF9BBVUF82JV^X++=V~)G!3=t z<@)|D=Lgi(FY9ewi#k=CF(;lwovzQQ_R{t-Gghn*=YJsyEl4PbA5ib~(tXVoRYE<` z9`&Lcg{o*CYR$J}Ry=`P;}_PX{Y*WDQJb?gHpe=sO}tUM{0i64WByiiv%fhOp##k3 zX@c6ty-*DgvCgpht8D&m)TTU&YAD+J2z5$6q243$2AU3KM{V9P)afbeA)sAe)7k=6 zQ4iEijI@qNb!57AC4NVIHx|c7sCu#uGB2XSsE(CIt#v(AhvuU?uo_jrXR{6LM6K0+ z)aUgR)b39>*fdlO)q#$v_reI&n$Ja@n#C9g*Q4Hm+fhq&$fifz^xM|wMvwE^Cd3_L z9!z1)f~p`N>U~fV)j(aF-W=6XZ|ex_Br&s`Fo$z-k1l7@+SOGg(H=vgEC2A(p z{=oUyhd>Sj>T!9@h7C|tKLWK`W}-&00CVGJR0B6{`Uh0QiALFupz14vdaf#}zSgKs z*dH}BV@BD}|40&aE?1yBv6ArBEI0iAo=YDn9`=)w8e& zMxq)%gW5CKQ8V{=G*hY`z969n#u?-KK2#c^&i`Ok{%F*@dp@e8OKkcMRKsUbOK=m_ zq35Vq@OxB;GLLnA|7blAh7doA>d+Gpf&2tMp7871N9B1HEOLqm=`CZ-u1gs z4W$@orZNL+NeW;H)h-KM?h<_9ksScP*ZmU zH4`sU9f~p8j4T=I{1-wsTpmNQChEg#Fsfs7P@8R&jqgIe^Dm-0@EG-TvN^}e`;>hMFXjBioTmzl=- z*T`xU(3G~q#n>J-m4VaEg9%X&q(|+M+?WANqo%esYOM#M%1uW#yckvQO00?Nur_|c zX;^&*=U<=uS7(^14w-32o)2@AUI%q5Mxsu`Lez2Ei5k%%)Rg~;>ew^Xo^d100ODX_ z;>l1mSrZ3gN7Qk?5yAP_gLg?7f^Sf3-)ELd{}D42k3==}J8Dx!qt^Zg>V@?XHR8b8 zrlavuYn>CdH^Na%+SSG=D5|y{KS979(V`KV*N<- z`5uXyv1|A}#-D4x8@9!2#5Z9s{D|QgI?tRYPgepZNSKZJ@Eoe4!1?C97RABDyI@be zjXSXZ0`na(!9sKXS6id8Jo&MIa((|9PfgTj+=&|45!4LcM1P(C`viQ)0kx)ni%fxF zEKNK)s)B~73fiIe!U)uEUx<2sBWmprp_cFzX2e^lO&Yk^mu{3gRQX} zcCqn`)*GmXAE0K+e~H-(;i!h1qn_`LYG?>*FU&xll6j~-@EfYbcTpX9hra**Kh{#S z_UTcZEDSaB8mQer1vSFes0Q}f^b0oqKhzAx`q^yCq^Mn<9@VkAsE#g0)wdP3=gy)> zfvW`c9=M0<*&EdEj`52bc`z0t9*TM|v_|E3M?E(XwRy*3Eu4#bAKb?V=qxj*q@lGB zYG$S^jT3F06|uQ7@2?Ri=T0s3qu#T7pHW5v)Nq>_zsnvmdpD zWmg;Ppf+7A)J*n8&D=QDr>hU4e6kbB@+Ur;aKcHry z!g}*Dc2QMQD5s2oBo51Pe65iI_kZ#)aH9pdu5MJKZc(EB-|iS7#l>nPE(wU z`SBs@jhAkVS^K7_H{=ZLhoA8n_TB0_SFqGJbIwzF&E_nK`eITR3*tc3=~|CE6;WQ! zzt-Y73F_H->kZUyeT3SjUroy6VAJ2A zW<1Ug&i^t3iFVjygzDjbRE0-T6<$P5`D09vFEE44znI-=Mp*DS^QqSb2avxJ+hNw< zO~aE=n|K{+$&Xqqdv=-geH1g3@gA38`rWSYpWE)W=GbEznu%fLAHi^Zi+Zl;Uh{e1 z0xJ_=i^cIJ=D@Ih=6`Z&f<1}v$L8qCx8HoZoQ_3ExQ&{+vI~4Sn;T- zXfW0zz6@*PTWp1u{xHAYuEJWxpI|O5bXav{g{$18?XlR$YA z-k?TO;)JPqHmboZSPnx^8hhYW;+s(olsRR-XmrN9#3!TPbk|Wck?yqlP^yADZ8uS; zt>GD#PE$FJfR5W1>wVN3r#WjjO%2qCOlPc!3-A}bh1#S)o-?o9*{B!Pa@3R`M2+~i zO^@}b*$dfFyT1& z3u`y(SRF-m^gq;_(*Lqqig47@)W%-e67?y11~tGZsDbd`-5iAtl^vL$L}2B4;J0ji^`Q5Eh$&BT5i|I>OEwS;$219*&jKF)QY9w!9>O>tJN zjm1zSo`hQSY1Rd(PqUSn1$Uu3@DFN)FEBfPz&M!shS{`vP)k<=b;=rHCY+3wbpAIH zs7AtD?2P4anm5%3>_Ge@D!=V5^CH@a4T$^yjO` z@0XxErhI*DNc>lch4?7chgRYL%%@&2Tta*YPQfNG%wJaTqjvwymu6tgP{;S& zOON?R^O1yXBy@gdzF^Ei{a(KvwQK*h@#m;_dc4=h!l;>QgAZ{!YR!kfF`pqvF)#51 zZ_S%A9M$1L_$&VEAy9`v+jr)}W-F@UfcK_>^tga{RUC(RaSrzQU^Y?UM>Av1@e%3o zQE$GxpX~pj@!6DXf+I-Zj5@A)znBj#PcZ_;NobDh**t8C=TK{ukH7w@!n(K`=inI( zcl~@zlF-l3_i>#cUy|MdRZmlYKi{63g*w(zHXab*=R1y>j2@>n0UfWVsESvj)_PE& zpA&-f@jLttm3|*}+~UOW^G$Ut%t?Gb=D}#Jh_Pe(`Q8t;QJbtV|G_}~fI2m9EI;3yEk5dnlLYnZO^e5Tk8+P;8SPg4%>dt?f|HO+z)j#JU>Q@y)0X9z%`% zJZeVnqet)NX9Qe)gL>c{>N6l=9D0aZQRPZvVJwe&K@CGScm{ROqiy`2jX%Szq<=;| zpCztYlJ8J6Q6jFN$Mn_lBHuSeclnh>a4xge(O&BWc5I+81o%`|oeQmcX=B`VsR{umBH4arY&>0y%Zg4#NNPV3>U-fVi%f*p_E` zi#tcjPiq^=$uk$Zb-l1@DJXlFw9b@m>(BYWMWh*-RcvLS2v;U8AqCo#wvUIW;xW>; z+e+f$S@QFfR+GG1lsQe>8=J2N`x1Uh{weNclsQ8@y(e=UUVh_QJUX556WerZ(!O4m zNS{qS2W}$&7AF0si>V0fYm2Tx@>&tUP5D2G|848x`v7~AD*AZW=XSjAzCJ$vIxw8=ON#4(-4dT|-Mn5Q9RA-_& znI$RsJDJT0*H9+cND5TtK1(G!yGMHn2uaXM*98)MUz{2SqV)N=^=U~y{Mydc85 zdg6QT4BWpdP2)ded)1NfDekY=I2z#N(0NY&D;4ItVeLT0W4WK$xXGpSJfkZqvvq^~ zMYaPINxw~cYVJ?mb9v66GQRmAMFZ)$GgA0~tuWYDbi!5;NPb7|uNU89o#8fqj%V(W z(U7wGE+)AFEPujPaK9uVRF#f6(c>Qe-;oekIf`?9G zF594}X)C#6)AU#rcT&u5TseW+XBX0ody9qbszRq(QF(Gv|B~RZT zJS_?E{o2{VU59WQ9;i=7I^ylP^`$I6GtmdfkgxB(e^G|t*L)YhpE(OjpFtVE4m%r3 zJ@rjzVv+v!+DUr#Z}Ps=JMkq64{eD@6i)R`fgb7rm6j)e8HQt8JWM*jZ8(Lw0~pO} z(!O3RNz=8NTi*a1P~Sv+jU#PmmJ%OByqRB4-ufg?CgE>vPel*0A(d1k&B48rYg@$G z#)%_(bqesjpj0vL{^V}tu1Qt%c8(Ov_w z44u%G-QfH4y@KZ`yMqRHbGM+(Mq77kd_>y!@F4Jx=Wb^JTr*!Po(F=4cwo@G^-pCRRN^u+8xp@}3!S5q?Zj`{_)X%vrjmBv zrWH_UXdo+T%`gS=+k{8@O7aFG{1>#cy2LelJa*9-<6b~xyazRbl+8y0+ns$ znM{%sWaEm)r>6YGD^bZ!D$YP!FyS8De-UoPz1`MD(22Cq_9MR*cWiE#{K5KGvx)*S zsjvtMqbWF(_zCXfgjau42}#a!%3rW)Er{2raa{{2JB2$P_hg%<^lZc%@{Fzu+=mEf zB!3+qB+pakn+6IH{+YxV+-bP`Q1Afi>SA!_5-&=6IpR%in%GC$Me>$XaXh?8T{8)1 zA^kG$Cyl>f`L61ih%_#bGmDHrZH6z2AC-8h5%+NlRU$t#`8|l&wFT-D*0207`PsRj z6YfPh{So}@wS~B@>Ntrq`ZI3={LQwd-@Kpb{I{aAnne0h@E_Ebm4d(HueNYkTbc5z z5pHbb<*@^0hERvD%iNW?8x#NV%`+`YThFcQsjbr&(f*suU7ZI8aWA3aL>FaQ?ZKFGJUB44AL|s+% zd*l@o(~z**x#mY<%AXx#DJ-_g)6!ewlHF!6GfnWy!iV0*lb2M1B0 z7x5ptn^5Q;X}wgKbQg71Aa4eiA}t5uVpJ5&=qC}^HIn!te8qj6G>vcr<X>iK z%_pts*Y`hpP6ra6k(rx9BMBF`qu5JYBko?5X+`?iD~z-OZ;g+zIc*iN&-OvjdVU0unStJfa91Pzj@wo5xHj{^SS(^Y@V$LFIcfXJ ztH|And$|g8l_LC_vOV!PZe1DdGdT$FCM^T^E$#&RooO?T&E!tcorVY1&fol)OM%^_ zeIWc3cN5afV`nO>f!|)Cr2R)iu5S_t@a$XLaA_>U-Hkgg=|{N-`^x@r|8pcrs71v| zX!sZf*4jqO6W6tYcp=gY+w`9aFQ>wAoBuauW)ojS`bE+rZ2B_vC%p>K{X#f4;ZfXI zDgVpY_AB$y8ScNhb(OXccOkxlcm)jPAzgjByOQ6EwA#4crZ1&|YurOge?a3#b*?399o)K5D119LaATPDu zGrI`Sv(Jv8%nTaVRhGL7>Bnq*y!QWT5*Cs07$J zR`RuMFnQaE_*2Jm>X=ISr*G=oO8PX)RK1-$T(m# z3Q_SU(k_rT%05icnMnFSl=+pkqQuJ*pGo*5cRV}oKk}TeEw-+Tl==OeI*OAXOq#AA zNgq$x^Ozq)xzF2&mAR1kdJ4=Xt*R2ZYLoW$ibMKx@=H+RW&BKDS~^jha6j^f*}B${ zf1kW(_}QkZj-kYt6F;u=e}X`NTlp|DuTn`C3h4UXrnj)ZAnh*UVz?G#+DePr^0kR4 zp(788FC{-O@uT>PJ2UleRi)ot*Y!6OU30h>^3Wv;-SnlHANi@EGU<=FH<7oP_}6P7 zX^Cmjz)fUAv7SGXzR)cQrWNL&a3fDg{T(eC%eQIn$!#E5EgV~Sry zqB|`j{O)FsDu1_)Uqt2y*Q3fltmhZ;@!yG2GoHi^j4JXne?Y{Ix1mvM-(~cVNcE{r zg#YJ_5tY9TiF){@r0ey%?!Pg;S7N*KT<@j0?kv~4HNM;2jVux5riyGG9jFy|XL1KWjmPz0Iq*d;B76)Nott#}e;`n(hpLZ>_p+H`n`j zJ-25}FaNpo+*scJ?cAJ!ke=pWqjZe-YKHzM-&X!pH0-&pz@xp6$fxD(wo7eUFU2y;Qi(Gx#o$4)j#SM?)Epf}; z7ZAxmxyj=lcHfQmkDU3~Z5bK)ue&w!(Gz!&ciL0>?d|;B9T&?R{@#7X_&&NPSjf-r z0(bTbzx1=C{YH6*yMF)pN7jqsH`?pQ^otQIvS5&3ipah}eu=#6g8YJmBA=%7YY@3V r#ILs3o8B+l^&ZIJw=RWuNHM?KZe*MiewiX;m+;H&ZCt{ywEzDB?!C8h diff --git a/conf/locale/es_419/LC_MESSAGES/djangojs.po b/conf/locale/es_419/LC_MESSAGES/djangojs.po index 3e17009d89..d80fae9013 100644 --- a/conf/locale/es_419/LC_MESSAGES/djangojs.po +++ b/conf/locale/es_419/LC_MESSAGES/djangojs.po @@ -95,8 +95,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 02:41+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Spanish (Latin America) (http://www.transifex.com/open-edx/edx-platform/language/es_419/)\n" "MIME-Version: 1.0\n" @@ -1192,9 +1192,11 @@ msgstr "Documento nuevo" msgid "New window" msgstr "Nueva ventana" +#. #-#-#-#-# djangojs-partial.po (edx-platform) #-#-#-#-# #. Translators: this is a message from the raw HTML editor displayed in the #. browser when a user needs to edit HTML #: common/lib/xmodule/xmodule/js/src/html/edit.js +#: cms/templates/js/paging-header.underscore msgid "Next" msgstr "Siguiente" @@ -2163,11 +2165,11 @@ msgstr "¿Está seguro de que desea borrar esta respuesta?" #: common/static/common/js/components/views/paging_header.js msgid "Showing %(first_index)s out of %(num_items)s total" -msgstr "" +msgstr "Mostrando %(first_index)s de un total de %(num_items)s " #: common/static/common/js/components/views/paging_header.js msgid "Showing %(first_index)s-%(last_index)s out of %(num_items)s total" -msgstr "" +msgstr "Mostrando %(first_index)s-%(last_index)s de un total de %(num_items)s" #: common/static/js/capa/drag_and_drop/base_image.js msgid "Drop target image" @@ -2403,39 +2405,43 @@ msgstr "Etiquetas:" #: lms/djangoapps/support/static/support/js/views/certificates.js msgid "An unexpected error occurred. Please try again." -msgstr "" +msgstr "Se produjo un error inesperado. Por favor, inténtelo nuevamente." +#: lms/djangoapps/teams/static/teams/js/collections/team.js +#: lms/djangoapps/teams/static/teams/js/collections/topic.js #: lms/templates/edxnotes/tab-item.underscore msgid "name" msgstr "nombre" #: lms/djangoapps/teams/static/teams/js/collections/team.js msgid "open_slots" -msgstr "" +msgstr "open_slots" #. Translators: This refers to the number of teams (a count of how many teams #. there are) #: lms/djangoapps/teams/static/teams/js/collections/topic.js msgid "team count" -msgstr "" +msgstr "Cantidad de equipos" #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Team Name (Required) *" -msgstr "" +msgstr "Nombre del equipo (Requerido) *" #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "A name that identifies your team (maximum 255 characters)." -msgstr "" +msgstr "Nombre que identifica al equipo (máximo 255 caracteres)." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Team Description (Required) *" -msgstr "" +msgstr "Descripción del equipo (Requerido) *" #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "" "A short description of the team to help other learners understand the goals " "or direction of the team (maximum 300 characters)." msgstr "" +"Descripción corta del equipo para ayudar a otros estudiantes a entender los " +"objetivos o enfoques del equipo (máximo 300 caracteres)." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js #: lms/static/js/student_account/views/account_settings_factory.js @@ -2445,7 +2451,7 @@ msgstr "Idioma" #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "" "The language that team members primarily use to communicate with each other." -msgstr "" +msgstr "El idioma que usan los miembros del equipo para comunicarse." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js #: lms/static/js/student_profile/views/learner_profile_factory.js @@ -2454,7 +2460,7 @@ msgstr "País" #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "The country that team members primarily identify with." -msgstr "" +msgstr "El país que identifica de forma primaria a los miembros del equipo." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js #: lms/static/js/views/fields.js @@ -2463,64 +2469,66 @@ msgstr "Ocurrió un error. Por favor, intente nuevamente." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Check the highlighted fields below and try again." -msgstr "" +msgstr "Revise los campos resaltados abajo e intente nuevamente." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Enter team name." -msgstr "" +msgstr "Ingrese el nombre del equipo." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Team name cannot have more than 255 characters." -msgstr "" +msgstr "El nombre del equipo no puede tener más de 255 caracteres." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Enter team description." -msgstr "" +msgstr "Ingrese la descripción del equipo." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Team description cannot have more than 300 characters." -msgstr "" +msgstr "La descripción no puede tener más de 300 caracteres." #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." -msgstr "" +msgid "You are not currently a member of any team." +msgstr "Usted no es actualmente miembro de ningún equipo." #: lms/djangoapps/teams/static/teams/js/views/team_card.js msgid "View %(span_start)s %(team_name)s %(span_end)s" -msgstr "" +msgstr "Ver %(span_start)s %(team_name)s %(span_end)s" #: lms/djangoapps/teams/static/teams/js/views/team_join.js #: lms/djangoapps/teams/static/teams/js/views/team_profile.js msgid "An error occurred. Try again." -msgstr "" +msgstr "Ocurrió un error. Intente nuevamente." #: lms/djangoapps/teams/static/teams/js/views/team_join.js msgid "You already belong to another team." -msgstr "" +msgstr "Usted ya pertenece a otro equipo." #: lms/djangoapps/teams/static/teams/js/views/team_join.js msgid "This team is full." -msgstr "" +msgstr "Este equipo está lleno." #: lms/djangoapps/teams/static/teams/js/views/team_utils.js msgid "%(memberCount)s / %(maxMemberCount)s Member" msgid_plural "%(memberCount)s / %(maxMemberCount)s Members" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%(memberCount)s / %(maxMemberCount)s Miembro" +msgstr[1] "%(memberCount)s / %(maxMemberCount)s Miembros" #: lms/djangoapps/teams/static/teams/js/views/teams.js msgid "All teams" -msgstr "" +msgstr "Todos los equipos" #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "teams" -msgstr "" +msgstr "equipos" #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "" "See all teams in your course, organized by topic. Join a team to collaborate" " with other learners who are interested in the same topic as you are." msgstr "" +"Revise los equipos de su curso, organizados por tema. Únase a un equipo para" +" colaborar con otros que estén interesados en los mismos temas." #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "Teams" @@ -2528,40 +2536,42 @@ msgstr "Equipos" #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "My Team" -msgstr "" +msgstr "Mi equipo" #. Translators: sr_start and sr_end surround text meant only for screen #. readers. The whole string will be shown to users as "Browse teams" if they #. are using a screenreader, and "Browse" otherwise. #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "Browse %(sr_start)s teams %(sr_end)s" -msgstr "" +msgstr "Explorar %(sr_start)s equpos %(sr_end)s" #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "" "Create a new team if you can't find existing teams to join, or if you would " "like to learn with friends you know." msgstr "" +"Cree un nuevo equipo si no puede encontrar uno existente para unirse o si " +"desea aprender con personas que ya conoce." #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "Create a New Team" -msgstr "" +msgstr "Crear un nuevo equipo" #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "All Topics" -msgstr "" +msgstr "Todos los temas" #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "The page \"%(route)s\" could not be found." -msgstr "" +msgstr "La página \"%(route)s\" no pudo ser encontrada." #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "The topic \"%(topic)s\" could not be found." -msgstr "" +msgstr "El tema \"%(topic)s no pudo ser encontrado." #: lms/djangoapps/teams/static/teams/js/views/teams_tab.js msgid "The team \"%(team)s\" could not be found." -msgstr "" +msgstr "El equipo \"%(team)s no pudo ser encontrado." #: lms/djangoapps/teams/static/teams/js/views/topic_card.js msgid "%(team_count)s Team" @@ -2571,7 +2581,7 @@ msgstr[1] "%(team_count)s Equipos" #: lms/djangoapps/teams/static/teams/js/views/topic_card.js msgid "View Teams in the %(topic_name)s Topic" -msgstr "" +msgstr "Ver equipos en el tema %(topic_name)s" #: lms/djangoapps/teams/static/teams/js/views/topic_teams.js msgid "" @@ -2580,10 +2590,14 @@ msgid "" " find a team to join, {create_span_start}create a new team in this " "topic{span_end}." msgstr "" +"Intente {browse_span_start}explorar todos los equipos{span_end} o " +"{search_span_start}buscar descripciones de equipos{span_end}. Sí aún no " +"puede encontrar un equipo para unirse, {create_span_start}cree un nuevo " +"equipo en este tema{span_end}." #: lms/djangoapps/teams/static/teams/js/views/topics.js msgid "All topics" -msgstr "" +msgstr "Todos los temas" #: lms/static/coffee/src/calculator.js msgid "Open Calculator" @@ -2600,6 +2614,8 @@ msgstr "Cuerpo de la publicación" #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error generating proctored exam results. Please try again." msgstr "" +"Error al generar el reporte de resultados de examenes supervisados. Por " +"favor intente nuevamente." #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error generating student profile information. Please try again." @@ -2638,19 +2654,19 @@ msgstr "" #: lms/static/coffee/src/instructor_dashboard/instructor_analytics.js msgid "Unavailable metric display." -msgstr "" +msgstr "Métrica no disponible para visualización" #: lms/static/coffee/src/instructor_dashboard/instructor_analytics.js msgid "Error fetching grade distributions." -msgstr "" +msgstr "Error al generar las distribuciones de calificaciones." #: lms/static/coffee/src/instructor_dashboard/instructor_analytics.js msgid "Last Updated: <%= timestamp %>" -msgstr "" +msgstr "Última actualización: <%= timestamp %>" #: lms/static/coffee/src/instructor_dashboard/instructor_analytics.js msgid "<%= num_students %> students scored." -msgstr "" +msgstr "<%= num_students %> estudiantes calificados." #: lms/static/coffee/src/instructor_dashboard/membership.js #: lms/static/js/student_account/views/account_settings_factory.js @@ -2739,6 +2755,8 @@ msgstr "" #: lms/static/coffee/src/instructor_dashboard/membership.js msgid "These users were successfully removed as beta testers:" msgstr "" +"Los siguientes usuarios fueron eliminados exitosamente como usuarios de " +"prueba:" #. Translators: A list of users appears after this sentence; #: lms/static/coffee/src/instructor_dashboard/membership.js @@ -3463,7 +3481,7 @@ msgstr "Todas las unidades" #: lms/static/js/ccx/schedule.js lms/static/js/ccx/schedule.js.c #: lms/templates/ccx/schedule.underscore msgid "Click to change" -msgstr "" +msgstr "Haga clic para modificar" #: lms/static/js/ccx/schedule.js msgid "Select a chapter" @@ -3475,11 +3493,11 @@ msgstr "Guardar cambios" #: lms/static/js/ccx/schedule.js msgid "Enter Due Date and Time" -msgstr "" +msgstr "Ingrese fecha y hora límites" #: lms/static/js/ccx/schedule.js msgid "Enter Start Date and Time" -msgstr "" +msgstr "Ingrese fecha y hora" #: lms/static/js/courseware/credit_progress.js #: lms/templates/discovery/facet.underscore @@ -3503,8 +3521,8 @@ msgstr "Ocurrió un error. Por favor intente nuevamente más tarde." #, c-format msgid "Viewing %s course" msgid_plural "Viewing %s courses" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Mostrando %s curso" +msgstr[1] "Mostrando %s cursos" #: lms/static/js/discovery/views/search_form.js #, c-format @@ -3716,10 +3734,11 @@ msgstr "¡Evitar que estudiantes generen certificados para este curso ?" #: lms/static/js/instructor_dashboard/certificates.js msgid "Start generating certificates for all students in this course?" msgstr "" +"¿Comenzar a generar los certificados para todos los alumnos de este curso?" #: lms/static/js/instructor_dashboard/certificates.js msgid "Error while generating certificates. Please try again." -msgstr "" +msgstr "Error al generar los certificados. Por favor inténtelo nuevamente." #: lms/static/js/instructor_dashboard/ecommerce.js msgid "" @@ -4295,17 +4314,19 @@ msgstr "La Institución del signatario no debe tener más de 40 caracteres." #: cms/static/js/certificates/views/certificate_details.js msgid "Edit this certificate?" -msgstr "" +msgstr "¿Editar este certificado?" #: cms/static/js/certificates/views/certificate_details.js msgid "" "This certificate has already been activated and is live. Are you sure you " "want to continue editing?" msgstr "" +"Este certificado ya ha sido activado y está publicado. ¿Está seguro de que " +"desea continuar editándolo?" #: cms/static/js/certificates/views/certificate_details.js msgid "Yes, allow edits to the active Certificate" -msgstr "" +msgstr "Si, permitir modificaciones al certificado activo." #. Translators: This field pertains to the custom label for a certificate. #. Translators: this refers to a collection of certificates. @@ -4573,14 +4594,19 @@ msgid "" "The course must have at least one active certificate configuration before it" " can be started." msgstr "" +"El curso debe tener al menos una configuración de certificado activo antes " +"de que pueda ser iniciado." #: cms/static/js/models/settings/course_details.js msgid "The course end date must be later than the course start date." msgstr "" +"La fecha de finalización del curso debe ser posterior a la fecha de inicio." #: cms/static/js/models/settings/course_details.js msgid "The course start date must be later than the enrollment start date." msgstr "" +"La fecha de inicio del curso debe ser posterior a la fecha de inicio de " +"inscripciones." #: cms/static/js/models/settings/course_details.js msgid "The enrollment start date cannot be after the enrollment end date." @@ -4970,6 +4996,8 @@ msgid "" "Showing %(current_item_range)s out of %(total_items_count)s, filtered by " "%(asset_type)s, sorted by %(sort_name)s ascending" msgstr "" +"Mostrando %(current_item_range)s de %(total_items_count)s, filtrados por " +"%(asset_type)s, ordenados por %(sort_name)s ascendentemente" #. Translators: sample result: #. "Showing 0-9 out of 25 total, filtered by Images, sorted by Date Added @@ -4979,6 +5007,8 @@ msgid "" "Showing %(current_item_range)s out of %(total_items_count)s, filtered by " "%(asset_type)s, sorted by %(sort_name)s descending" msgstr "" +"Mostrando %(current_item_range)s de %(total_items_count)s, filtrados por " +"%(asset_type)s, ordenados por %(sort_name)s descendentemente" #. Translators: sample result: #. "Showing 0-9 out of 25 total, sorted by Date Added ascending" @@ -4987,6 +5017,8 @@ msgid "" "Showing %(current_item_range)s out of %(total_items_count)s, sorted by " "%(sort_name)s ascending" msgstr "" +"Mostrando %(current_item_range)s de %(total_items_count)s, ordenados por " +"%(sort_name)s ascendentemente" #. Translators: sample result: #. "Showing 0-9 out of 25 total, sorted by Date Added descending" @@ -4995,12 +5027,14 @@ msgid "" "Showing %(current_item_range)s out of %(total_items_count)s, sorted by " "%(sort_name)s descending" msgstr "" +"Mostrando %(current_item_range)s de %(total_items_count)s, ordenados por " +"%(sort_name)s descendentemente" #. Translators: turns into "25 total" to be used in other sentences, e.g. #. "Showing 0-9 out of 25 total". #: cms/static/js/views/paging_header.js msgid "%(total_items)s total" -msgstr "" +msgstr "%(total_items)s total" #. Translators: This is listed as the duration for a video #. that has not yet reached the point in its processing by @@ -5222,11 +5256,12 @@ msgstr "" #: cms/static/js/views/settings/main.js msgid "Course Credit Requirements" -msgstr "" +msgstr "Requerimientos de créditos para el curso" #: cms/static/js/views/settings/main.js msgid "The minimum grade for course credit is not set." msgstr "" +"La calificación mínima para obtener créditos por el curso no está definida." #: cms/static/js/views/settings/main.js msgid "%(hours)s:%(minutes)s (current UTC time)" @@ -5368,11 +5403,11 @@ msgstr "Estado" #: lms/templates/ccx/schedule.underscore msgid "Expand All" -msgstr "" +msgstr "Expandir todo" #: lms/templates/ccx/schedule.underscore msgid "Collapse All" -msgstr "" +msgstr "Colapsar todo" #: lms/templates/ccx/schedule.underscore msgid "Unit" @@ -5388,11 +5423,11 @@ msgstr "eliminar todo" #: lms/templates/ccx/schedule.underscore msgid "toggle chapter" -msgstr "" +msgstr "Mover capítulo" #: lms/templates/ccx/schedule.underscore msgid "Section" -msgstr "" +msgstr "Sección" #: lms/templates/ccx/schedule.underscore msgid "remove" @@ -5400,11 +5435,11 @@ msgstr "eliminar" #: lms/templates/ccx/schedule.underscore msgid "toggle subsection" -msgstr "" +msgstr "Mover Subsección" #: lms/templates/ccx/schedule.underscore msgid "Subsection" -msgstr "" +msgstr "Subsección" #: lms/templates/commerce/provider.underscore #: lms/templates/commerce/receipt.underscore @@ -5415,7 +5450,7 @@ msgstr "gettext(" #: lms/templates/commerce/provider.underscore #, python-format msgid "%s" -msgstr "" +msgstr "%s" #: lms/templates/commerce/provider.underscore #, python-format @@ -5423,6 +5458,8 @@ msgid "" "" msgstr "" +"" #: lms/templates/commerce/receipt.underscore #: lms/templates/verify_student/payment_confirmation_step.underscore @@ -5500,11 +5537,11 @@ msgstr "Verificar ahora" #: lms/templates/courseware/proctored-exam-controls.underscore msgid "Mark Exam As Completed" -msgstr "" +msgstr "Marcar el examen como completado" #: lms/templates/courseware/proctored-exam-status.underscore msgid "End My Exam" -msgstr "" +msgstr "Terminar mi examen" #: lms/templates/dashboard/donation.underscore msgid "Donate" @@ -5520,7 +5557,7 @@ msgstr "Empieza" #: lms/templates/discovery/filter_bar.underscore msgid "Clear All" -msgstr "" +msgstr "Borrar todo" #: lms/templates/edxnotes/note-item.underscore msgid "Highlighted text" @@ -5906,14 +5943,19 @@ msgid "" "Sign in here using your email address and password, or use one of the " "providers listed below." msgstr "" +"Regístrese aquí utilizando su correo electrónico y contraseña, o también " +"puede utilizar algunos de los proveedores en la lista abajo." #: lms/templates/student_account/login.underscore msgid "Sign in here using your email address and password." msgstr "" +"Regístrese aquí utilizando su dirección de correo electrónico y contraseña " #: lms/templates/student_account/login.underscore msgid "If you do not yet have an account, use the button below to register." msgstr "" +"Si todavía no tienes una cuenta, puedes utilizar el botón abajo para " +"registrarte " #: lms/templates/student_account/login.underscore msgid "or sign in with" @@ -5922,7 +5964,7 @@ msgstr "o inicie sesión con" #: lms/templates/student_account/login.underscore #, python-format msgid "Sign in with %(providerName)s" -msgstr "" +msgstr "Iniciar sesión usando %(providerName)s" #: lms/templates/student_account/login.underscore #: lms/templates/student_account/register.underscore @@ -5984,7 +6026,7 @@ msgstr "Crear una cuenta usando" #: lms/templates/student_account/register.underscore #, python-format msgid "Create account using %(providerName)s." -msgstr "" +msgstr "Crear una cuenta usando %(providerName)s" #: lms/templates/student_account/register.underscore msgid "or create a new one here" @@ -6646,6 +6688,8 @@ msgid "" "Specify an alternative to the official course title to display on " "certificates. Leave blank to use the official course title." msgstr "" +"Especificar una alternativa al título oficial del curso para ser visualizado" +" en los certificados. Dejar vacío para utilizar el título oficial del curso." #: cms/templates/js/certificate-editor.underscore msgid "Add Signatory" @@ -6786,11 +6830,11 @@ msgstr "Fecha de entrega:" #: cms/templates/js/course-outline.underscore msgid "Proctored Exam" -msgstr "" +msgstr "Examen supervisado" #: cms/templates/js/course-outline.underscore msgid "Timed and Proctored Exam" -msgstr "" +msgstr "Examen supervisado y cronometrado" #: cms/templates/js/course-outline.underscore #: cms/templates/js/xblock-outline.underscore @@ -7100,7 +7144,7 @@ msgstr "Añada su primer libro de texto" #: cms/templates/js/paging-header.underscore msgid "Previous" -msgstr "" +msgstr "Anterior" #: cms/templates/js/previous-video-upload-list.underscore msgid "Previous Uploads" @@ -7247,6 +7291,8 @@ msgid "" "The name of this signatory as it should appear on certificates. Maximum 40 " "characters." msgstr "" +"El nombre del firmante como debe aparecer en los certificados. Máximo 40 " +"caracteres." #: cms/templates/js/signatory-editor.underscore msgid "Title of the signatory" @@ -7257,6 +7303,8 @@ msgid "" "The title of this signatory as it should appear on certificates. Maximum 2 " "lines, 40 characters each." msgstr "" +"El título del firmante como debe aparecer en los certificados. Máximo 2 " +"líneas, 40 caracteres cada una." #: cms/templates/js/signatory-editor.underscore msgid "Organization of the signatory" @@ -7267,6 +7315,8 @@ msgid "" "The organization that this signatory belongs to, as it should appear on " "certificates. Maximum 40 characters." msgstr "" +"La organización a la que pertenece el firmante, como debe aparecer en los " +"certificados. Máximo 40 caracteres." #: cms/templates/js/signatory-editor.underscore msgid "Signature Image" @@ -7353,15 +7403,15 @@ msgstr "Borrar el usuario, {username}" #: cms/templates/js/timed-examination-preference-editor.underscore msgid "Timed Exam" -msgstr "" +msgstr "Examen cronometrado" #: cms/templates/js/timed-examination-preference-editor.underscore msgid "This exam is timed" -msgstr "" +msgstr "Este examen tiene el tiempo controlado" #: cms/templates/js/timed-examination-preference-editor.underscore msgid "Time Allotted (HH:MM):" -msgstr "" +msgstr "Tiempo permitido (HH:MM):" #: cms/templates/js/timed-examination-preference-editor.underscore #, python-format @@ -7370,10 +7420,14 @@ msgid "" "certain cases, students can be granted allowances that give them extra time " "to complete the exam." msgstr "" +"Los estudiantes verán una notificación cuando solo quede un 20% antes de " +"terminar el tiempo y cuando quede el 5% otra notificación. En ciertos casos," +" los estudiantes podran recibir asignaciones de tipo adicional para " +"completar el examen." #: cms/templates/js/timed-examination-preference-editor.underscore msgid "This exam is for practice only" -msgstr "" +msgstr "Este examen es para practicar únicamente" #: cms/templates/js/timed-examination-preference-editor.underscore msgid "" @@ -7381,10 +7435,14 @@ msgid "" "example problems. Make sure this practice exam is set up as an ungraded " "exam." msgstr "" +"Los estudiantes pueden experimentar el proceso de configuración del software" +" de supervisión de examentes e intentar la resolución de algunos problemas " +"de ejemplo. Asegurese de que estos exámenes de práctica estén configurados " +"como exámenes no calificados." #: cms/templates/js/timed-examination-preference-editor.underscore msgid "This exam is proctored" -msgstr "" +msgstr "Este examen es supervisado" #: cms/templates/js/timed-examination-preference-editor.underscore msgid "" @@ -7392,6 +7450,9 @@ msgid "" " only students who choose the proctored option are eligible for credit. " "Proctored exams must also be timed exams." msgstr "" +"Los estudiantes puede elegir tomar este examen con o sin supervisión en " +"línea, pero solo los que elijan la supervisión podrán obtener créditos. Los " +"examenes supervisados deben ser también con tiempo controlado." #: cms/templates/js/upload-dialog.underscore msgid "File upload succeeded" @@ -7405,6 +7466,25 @@ msgstr "" "Por favor revisa la retroalimentación de validación y reflejalo en tu " "configuración de curso." +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "Editar el nombre" diff --git a/conf/locale/fr/LC_MESSAGES/django.mo b/conf/locale/fr/LC_MESSAGES/django.mo index 50d863a7ab080bb3244f5e965733ee5d3a196d82..410854afc4baabc715908dacd102cc70364652e6 100644 GIT binary patch delta 62557 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

      >B{!Dh^H2Qvr{eQpIVOOUxlCroVEMTGD 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 AHUIzs delta 63249 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

      *Y^g^v* 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\n" "Language-Team: French (http://www.transifex.com/open-edx/edx-platform/language/fr/)\n" @@ -530,10 +530,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "Votre nom légal doit contenir au minimum deux caractères" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"Le nom d'utilisateur ne peut être composé que des caractères A-Z et 0-9 et " -"ne peut pas contenir d'espaces." #: common/djangoapps/student/forms.py #, python-format @@ -5454,27 +5454,6 @@ msgstr "" msgid "Free" msgstr "" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -msgstr[1] "" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "Localisation invalide." @@ -8146,10 +8125,6 @@ msgstr "" msgid "text_search is not yet supported." msgstr "" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -8162,6 +8137,10 @@ msgstr "" msgid "The supplied course_id {course_id} is not valid." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -8174,6 +8153,10 @@ msgstr "Le nom d'utilisateur est requis" msgid "Team id is required." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -9429,6 +9412,10 @@ msgstr "Mauvais emplacement du cours fourni" msgid "Missing branch on fresh clone" msgstr "Branche manquante sur le nouveau clone" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9815,6 +9802,11 @@ msgstr "Annuler" msgid "Course Number" msgstr "Numéro du cours" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "Erreur :" @@ -11669,6 +11661,11 @@ msgstr "Règles de notation" msgid "Batch Enrollment" msgstr "Inscription Automatique" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "Adresses e-mail/nom d'utilisateurs" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -11686,11 +11683,6 @@ msgstr "" "Vous ne recevrez pas de notification pour les e-mails rejetés, donc soyez " "doublement attentif à l'orthographe." -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "Adresses e-mail/nom d'utilisateurs" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -11737,7 +11729,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "S'inscrire" @@ -11746,6 +11737,10 @@ msgstr "S'inscrire" msgid "Student List Management" msgstr "Gestion de la liste des étudiants" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "AVERTISSEMENT" @@ -12129,7 +12124,6 @@ msgid "This section is graded." msgstr "Cette section est notée." #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "Une erreur s'est produite. Merci d'essayer de nouveau plus tard." @@ -12170,7 +12164,7 @@ msgid "Enrollment is Closed" msgstr "Les inscriptions sont fermées" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" +msgid "Add {course_name} to Cart ({price} USD)" msgstr "" #: lms/templates/courseware/course_about.html @@ -12249,7 +12243,6 @@ msgid "Additional Resources" msgstr "Ressources complémentaires" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "S'inscrire" @@ -12657,54 +12650,6 @@ msgstr "" msgid "Course errors" msgstr "Erreurs du cours" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "A propos de {course_id}" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "Bientôt" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "A propos de {course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "Accéder au cours" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "Vous êtes inscrit" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "S'inscrire" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "et choisir votre parcours étudiant" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "et procéder à la vérification de l'identité" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "Les inscriptions sont fermées" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "Actualités - MITx 6.002x" @@ -13016,6 +12961,10 @@ msgstr "Terminé - {end_date}" msgid "Started - {start_date}" msgstr "Commencé - {start_date}" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "Bientôt" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "Commence - {start_date}" @@ -13216,8 +13165,8 @@ msgstr "" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -13416,10 +13365,6 @@ msgstr "par maximum d'activité" msgid "by most votes" msgstr "par maximum de votes" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "," - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -14456,6 +14401,10 @@ msgstr "Nom du cours :" msgid "Course Display Name:" msgstr "Nom d'affichage du cours :" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "Le cours a-t-il commencé ?" @@ -14472,6 +14421,10 @@ msgstr "Non" msgid "Has the course ended?" msgstr "Le cours est-il terminé ?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "Seuils de notation:" @@ -17500,10 +17453,6 @@ msgstr "Cliquez pour ouvrir le cours dans le LMS et un nouvel onglet" msgid "View Live" msgstr "Aperçu réel" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "Date de début du cours :" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "Modifier la date de début" @@ -19850,6 +19799,21 @@ msgid "" " Students and staff" msgstr "" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/fr/LC_MESSAGES/djangojs.mo b/conf/locale/fr/LC_MESSAGES/djangojs.mo index 6189cb6af6f88d26fe549cdf92558adce2822bda..4a7947aedb828c7dda272cb8e76f2355776a232d 100644 GIT binary patch delta 37 rcmZpf#NINAyu1w#`nL-VOu7!^Pq10yRF!>xZ9IZglo+3*WS delta 37 ncmZpf#NINAy\n" "Language-Team: French (http://www.transifex.com/open-edx/edx-platform/language/fr/)\n" "MIME-Version: 1.0\n" @@ -2509,7 +2509,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -7357,6 +7357,25 @@ msgstr "" "Veuillez vérifier les commentaires de validation suivants et en tenir compte" " dans les paramètres de votre cours:" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "Modifier le nom" diff --git a/conf/locale/he/LC_MESSAGES/django.mo b/conf/locale/he/LC_MESSAGES/django.mo index f276665a43a51f19557ec373b04d47fdb4817d20..d3279a7da96bb890ea9e17c150052fc524501d63 100644 GIT binary patch delta 1211 zcmYk+%}Z2K7{~FaX?$%Q^EJ~loodo?vbi&6CTLKQe0-FhU z85D#N!88>`n>LlS$aaRcag~__(n4_2_jl(69p>E6x#!&b-19p3yycYty*8XRQZM-c z`O_}53pl=;3+X}FtO6IDi&)2f0r%oZtii8XjvH8tf3O;Na1TaG%&M>nYcXED_w6(V zeP9R`a0FZM1}fkLD&RDh;VecmhYIuvJ$!`;Tt~gvz)O0*73qV;QE|GsRAL$<=9>*r z;2j%A1-^(eyoUU2lFJItphhr8RE_v1HsBO?;5_oPcU&&x5~@8$Zxp8w)qV!mfgz0Y zeH*3FiPv!u@8C;Z!sj^2^c3(EZym>9_#RuBR|Q;i{=`+5Zwn*Tf2Ozc8>%Dg?p~wR z5>}zlH>{n4OyD8Rpw{jZ>cKH=#apgE=jtD0BlWLc`!XudZ|63ugCT|EU;3o6lO?!;q zZ{P?j-XOi!chCD2crHi>x#|R*DBcE}k@&&U)c#P?%Q~h?+6(&lztl#7r4N#Jyau9m zR|hm0ohl_QE5MxjbRH delta 1276 zcmXZcTS(JU0LSr@ZCLG)@NFi*~*Hx4dL=?>; z>17XAjEH1Kl)iR(jiP@`>CJ~igYc!Gpzm)xhn@fD{LeZ6b3gmgmkFf5HM*t@VIQ%T z_-TzXF}$&s2jQ8^m@1sL&fz-V-(Wo!umOKyCH}>7bi0kI!y2r{R`jAD8!=omZDO|I zEUKeXRKqFUjMq>NXHgC3umWeX7GI$ne2)QKz;5(XS>NqP)jx=g&BTzOIl{wZ(#9Mo zQA5T#EG;T7a(W_T3v32G*jw5pkBuo)ksALo&uS>kaLS5W0qMx%Dlpvupq zhyKkd33WJ*JMk(G;!}KyEBG8|Se_Sn+G9*F*0Zkfa1hmCIkS+pxX3oPpeDA;Xr(&Q zK)k5;4oqt=`$*7-8L|#zJMSk@dpLorH)->yv5oiFw!C1=zheve|7>{^AFJJ-}hhu$1qHXSv-Yb zs2s!qm3LDfXY|XMNs~~6ml?J?zK+x@1}!n;F@2@i;#SaJ@v3&)Jbk;xrqyu2O^dBW zT|EVzeBCAub`MdL(RJ7PEADj{>hSF%YH5SS4x)m#LRWJ;QL|If0rD49rNbK{?IUg^ zmJ#*$p)Jtr?ImipbojJAx@BP^p)?O&CtWoKw#alAQ>A;YRoOx8y>r`jw_$8Nk&OF} zrA87d-_S@Z9?5sQqZO5bkS`F7g!=P|n)0%?oO8>0?A&*zeNN7~N8*8#^Er>4DRQ%s J{6y_S)qli(dwc)@ diff --git a/conf/locale/he/LC_MESSAGES/django.po b/conf/locale/he/LC_MESSAGES/django.po index dcf7584421..c4747d6637 100644 --- a/conf/locale/he/LC_MESSAGES/django.po +++ b/conf/locale/he/LC_MESSAGES/django.po @@ -61,7 +61,7 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" +"POT-Creation-Date: 2015-08-21 14:18+0000\n" "PO-Revision-Date: 2015-05-28 20:00+0000\n" "Last-Translator: Nadav Stark \n" "Language-Team: Hebrew (http://www.transifex.com/open-edx/edx-platform/language/he/)\n" @@ -415,7 +415,9 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" #: common/djangoapps/student/forms.py @@ -4914,27 +4916,6 @@ msgstr "" msgid "Free" msgstr "" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -msgstr[1] "" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "" @@ -7430,10 +7411,6 @@ msgstr "" msgid "text_search is not yet supported." msgstr "" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -7446,6 +7423,10 @@ msgstr "" msgid "The supplied course_id {course_id} is not valid." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -7458,6 +7439,10 @@ msgstr "" msgid "Team id is required." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -8634,6 +8619,10 @@ msgstr "" msgid "Missing branch on fresh clone" msgstr "" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -8998,6 +8987,11 @@ msgstr "" msgid "Course Number" msgstr "מספר הקורס" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "" @@ -10755,6 +10749,11 @@ msgstr "תקנון ציונים" msgid "Batch Enrollment" msgstr "" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -10768,11 +10767,6 @@ msgid "" " spelling." msgstr "" -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -10812,7 +10806,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "" @@ -10821,6 +10814,10 @@ msgstr "" msgid "Student List Management" msgstr "" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "" @@ -11195,7 +11192,6 @@ msgid "This section is graded." msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "" @@ -11232,7 +11228,7 @@ msgid "Enrollment is Closed" msgstr "" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" +msgid "Add {course_name} to Cart ({price} USD)" msgstr "" #: lms/templates/courseware/course_about.html @@ -11309,7 +11305,6 @@ msgid "Additional Resources" msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "" @@ -11681,54 +11676,6 @@ msgstr "" msgid "Course errors" msgstr "" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "" @@ -12018,6 +11965,10 @@ msgstr "" msgid "Started - {start_date}" msgstr "" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "" @@ -12207,8 +12158,8 @@ msgstr "" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -12398,10 +12349,6 @@ msgstr "" msgid "by most votes" msgstr "" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "" - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -13322,6 +13269,10 @@ msgstr "" msgid "Course Display Name:" msgstr "" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "" @@ -13338,6 +13289,10 @@ msgstr "" msgid "Has the course ended?" msgstr "" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "" @@ -16153,10 +16108,6 @@ msgstr "" msgid "View Live" msgstr "" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "תאריך תחילת קורס:" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "" @@ -18286,6 +18237,21 @@ msgid "" " Students and staff" msgstr "" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/he/LC_MESSAGES/djangojs.mo b/conf/locale/he/LC_MESSAGES/djangojs.mo index 943926930f75e3d47ff297cfc8b6d89f9c4b90a7..b535c98d18b25e6d2aed8e72e8023c0057250cad 100644 GIT binary patch delta 34 ncmaFO{hE7&7&C{Fp@N}_m7)1$Ic5bA$H2(S#Bj44^HL@Nog)ZK delta 34 jcmaFO{hE7&7&C{ViGrcAm5I@0Ic5bI$7Hh`^HL@NomU7^ diff --git a/conf/locale/he/LC_MESSAGES/djangojs.po b/conf/locale/he/LC_MESSAGES/djangojs.po index 02dd1f474a..ff427cfb05 100644 --- a/conf/locale/he/LC_MESSAGES/djangojs.po +++ b/conf/locale/he/LC_MESSAGES/djangojs.po @@ -44,8 +44,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 02:41+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Hebrew (http://www.transifex.com/open-edx/edx-platform/language/he/)\n" "MIME-Version: 1.0\n" @@ -2351,7 +2351,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -6896,6 +6896,25 @@ msgid "" "course settings:" msgstr "" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "" diff --git a/conf/locale/hi/LC_MESSAGES/django.mo b/conf/locale/hi/LC_MESSAGES/django.mo index b69e17e699773a456718d0233bfa9fd2a3a7cf75..1aba656f1beb7648e519b53fe6e7c6ec3f528904 100644 GIT binary patch delta 27315 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�g2eOgt+4QV!M@mvAbZ|JEcq<4DsMLi%HlIb!33Ii`lmGUH45H})%( z8O5%xjMaahKztIqaL`{=^aCdHiv0JVFdJ-W8lb?;b_*_q?IH5)W(N!PyzN;q-V7i{%$J@AnhdeETC*C zX*+HDD$)|LZ?<(zB0UA+w(PGtri1z?imj{+38yKrkppts3dT{;N4%7cC!|bMc5P+I z+h~GLS(~qD2KHCv^&{;EUhbn?GyV#8}`O0myI-|;vZF-EjnrG?THlcKzJJa zDk^PG{0H)%Q1%gNuT+3-Bw=mQalWl5nD}6uK80|&&J{E0Kijtb?N7yXa|CT0-M>Pl zLM^)X?iDn!W!K(4dbV!bzSUr-)c>S(>D{?S>mH=GY}vYJ&!941xxUSNwBB}V(5qqj zgL<~>+PhP$psrmy^$%*>TU0Ma@$yqo@P~Y~w+68s#8q~8} zb1KQTZQGaP*`w#pACxz^NdA1g-e>hyO6$w9t7K(g?C7z+X~~?Iv0Wb0b6!Ebuj#fu za}o^jrJ3{mq8l^X!iex6Bf_VQsaVsut71*}Wy2yt5#h5UR*Z=V-w_eM)oV&b_{@m# z&1wyKyUBx%5#a~PS6Q+m!q-QHubxxtwHs6}hl!E9n!1Tlf(XYAC9>IzaDqt@;o-zd hCbYt9#cHoGr(O|0XV?Ze-JCCTe9?9l+T`Br@PBt<>FfXi diff --git a/conf/locale/hi/LC_MESSAGES/django.po b/conf/locale/hi/LC_MESSAGES/django.po index 3b60265015..ee7e0c414b 100644 --- a/conf/locale/hi/LC_MESSAGES/django.po +++ b/conf/locale/hi/LC_MESSAGES/django.po @@ -72,7 +72,7 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" +"POT-Creation-Date: 2015-08-21 14:18+0000\n" "PO-Revision-Date: 2015-06-28 20:21+0000\n" "Last-Translator: ria1234 \n" "Language-Team: Hindi (http://www.transifex.com/open-edx/edx-platform/language/hi/)\n" @@ -422,10 +422,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "आपका कानूनी नाम कम से कम दो अक्षर लंबा होना चाहिए" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"उपयोगकर्ता नाम केवल A-Z और 0-9 से मिलकर बना होना चाहिए, बिना किसी रिक्त " -"स्थान के।" #: common/djangoapps/student/forms.py #, python-format @@ -4952,27 +4952,6 @@ msgstr "" msgid "Free" msgstr "" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -msgstr[1] "" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "" @@ -7557,10 +7536,6 @@ msgstr "" msgid "text_search is not yet supported." msgstr "" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -7573,6 +7548,10 @@ msgstr "" msgid "The supplied course_id {course_id} is not valid." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -7585,6 +7564,10 @@ msgstr "" msgid "Team id is required." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -8794,6 +8777,10 @@ msgstr "" msgid "Missing branch on fresh clone" msgstr "" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9155,6 +9142,11 @@ msgstr "रद्द करें" msgid "Course Number" msgstr "पाठ्यक्रम संख्या" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "त्रुटि:" @@ -10972,6 +10964,11 @@ msgstr "" msgid "Batch Enrollment" msgstr "बैच दाखिला" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -10987,11 +10984,6 @@ msgstr "" "बाउंस अथवा वापिस आई हुई ई-मेल की सूचना नहीं दी जायेगी, कृपया वर्तनी की दोहरी" " जांच कर लें। " -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -11038,7 +11030,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "दाखिला दें" @@ -11047,6 +11038,10 @@ msgstr "दाखिला दें" msgid "Student List Management" msgstr "" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "" @@ -11428,7 +11423,6 @@ msgid "This section is graded." msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "कुछ गड़बड़ हो गई। कृपया बाद में फिर से कोशिश कीजिए।" @@ -11469,7 +11463,7 @@ msgid "Enrollment is Closed" msgstr "" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" +msgid "Add {course_name} to Cart ({price} USD)" msgstr "" #: lms/templates/courseware/course_about.html @@ -11546,7 +11540,6 @@ msgid "Additional Resources" msgstr "अतिरिक्त संसाधन" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "" @@ -11914,54 +11907,6 @@ msgstr "" msgid "Course errors" msgstr "पाठ्यक्रम लोड करने में कोई त्रुटि हुई है" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "{course_id} के बारे में" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "जल्द ही आ रहा हैं।" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "के बारे में {course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "पाठ्यक्रम में जाएं" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "समाचार - MITx 6.002x" @@ -12272,6 +12217,10 @@ msgstr "" msgid "Started - {start_date}" msgstr "" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "जल्द ही आ रहा हैं।" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "" @@ -12465,8 +12414,8 @@ msgstr "" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -12660,10 +12609,6 @@ msgstr "" msgid "by most votes" msgstr "" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "," - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -13597,6 +13542,10 @@ msgstr "पाठ्यक्रम का नाम:" msgid "Course Display Name:" msgstr "पाठ्यक्रम का प्रदर्शित नाम:" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "क्या पाठ्यक्रम शुरू हो गया है?" @@ -13613,6 +13562,10 @@ msgstr "नहीं" msgid "Has the course ended?" msgstr "क्या पाठ्यक्रम समाप्त हो चुका है?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "ग्रेड का न्यूनतम स्तर:" @@ -16494,10 +16447,6 @@ msgstr "" msgid "View Live" msgstr "" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "" @@ -18627,6 +18576,21 @@ msgid "" " Students and staff" msgstr "" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/hi/LC_MESSAGES/djangojs.mo b/conf/locale/hi/LC_MESSAGES/djangojs.mo index 49c51403a27994ff06d1d722ff4bbe293cc0b19f..adc0b21aafab3c6f94486ccc05af049c7a59e4a1 100644 GIT binary patch delta 36 pcmaF4pXud(rVY+k97cu;h9*{q=99gx6hIsUBP$cb&Baz_sQ}^w3ljhU delta 36 lcmaF4pXud(rVY+k9EK(ehQ?MVMw7j*6kr^a&Baz_sQ}_P3mE_a diff --git a/conf/locale/hi/LC_MESSAGES/djangojs.po b/conf/locale/hi/LC_MESSAGES/djangojs.po index eb531dc10d..a575ccc3e3 100644 --- a/conf/locale/hi/LC_MESSAGES/djangojs.po +++ b/conf/locale/hi/LC_MESSAGES/djangojs.po @@ -46,8 +46,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 02:41+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Hindi (http://www.transifex.com/open-edx/edx-platform/language/hi/)\n" "MIME-Version: 1.0\n" @@ -2370,7 +2370,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -6962,6 +6962,25 @@ msgid "" "course settings:" msgstr "" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "" diff --git a/conf/locale/ko_KR/LC_MESSAGES/django.mo b/conf/locale/ko_KR/LC_MESSAGES/django.mo index 9439a162abd6637d463b3a0dad03e174eb17539c..97749a9ff2c0226e5fb2f6ccc6aa07b9d1cbe94e 100644 GIT binary patch delta 87030 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 XWM<4TyTylDjgZyiRhPdaKX?B>o^N?+ diff --git a/conf/locale/ko_KR/LC_MESSAGES/django.po b/conf/locale/ko_KR/LC_MESSAGES/django.po index 93fe23c48b..6ee070db15 100644 --- a/conf/locale/ko_KR/LC_MESSAGES/django.po +++ b/conf/locale/ko_KR/LC_MESSAGES/django.po @@ -87,7 +87,7 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" +"POT-Creation-Date: 2015-08-21 14:18+0000\n" "PO-Revision-Date: 2015-08-14 05:59+0000\n" "Last-Translator: Hongseob Lee \n" "Language-Team: Korean (Korea) (http://www.transifex.com/open-edx/edx-platform/language/ko_KR/)\n" @@ -306,7 +306,7 @@ msgstr "인증된 학습자로 등록되었습니다." #: common/djangoapps/course_modes/models.py lms/envs/devstack.py #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Verified" -msgstr "인증되었습니다." +msgstr "인증" #: common/djangoapps/course_modes/models.py #: lms/templates/dashboard/_dashboard_course_listing.html @@ -448,8 +448,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "실명은 최소 두 글자 이상이어야 합니다." #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." -msgstr "아이디는 영어 알파벳 및 0-9로 구성되어야 하며 공백이 없어야 됩니다." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." +msgstr "" #: common/djangoapps/student/forms.py #, python-format @@ -513,7 +515,7 @@ msgstr "비밀번호" msgid "" "Your account has been disabled. If you believe this was done in error, " "please contact us at {support_email}" -msgstr "귀하의 계정이 비활성화 되었습니다. 이것이 오류라고 생각되면 아래로 연락 주시기 바랍니다: {support_email}" +msgstr "귀하의 계정이 비활성화 되었습니다. 이것이 오류로 보일 경우 {support_email}로 메일 보내주세요." #: common/djangoapps/student/middleware.py msgid "Disabled Account" @@ -669,13 +671,13 @@ msgstr "{platform_name} 계정이 아직 없으시다면, 페이지 상단의 < #: common/djangoapps/student/views.py msgid "There was an error receiving your login information. Please email us." -msgstr "로그인 정보를 받는 데 오류가 있었습니다. 저희에게 이메일 보내주십시오." +msgstr "로그인 정보를 받는 중 오류가 발생했습니다. 저희에게 이메일 보내주십시오." #: common/djangoapps/student/views.py msgid "" "This account has been temporarily locked due to excessive login failures. " "Try again later." -msgstr "이 계정은 로그인 실패 허용 횟수 초과로 인하여 일시적으로 잠금 상태입니다. 나중에 다시 시도해주세요." +msgstr "이 계정은 로그인 실패 허용 횟수 초과로 인하여 일시적으로 잠금 상태입니다. 잠시 후에 다시 시도하세요." #: common/djangoapps/student/views.py msgid "" @@ -688,7 +690,7 @@ msgstr "" #: common/djangoapps/student/views.py msgid "Too many failed login attempts. Try again later." -msgstr "로그인 실패 허용 횟수 초과. 나중에 다시 시도해주십시오." +msgstr "로그인 실패 허용 횟수 초과. 잠시 후에 다시 시도하세요." #: common/djangoapps/student/views.py lms/templates/provider_login.html msgid "Email or password is incorrect." @@ -792,7 +794,7 @@ msgstr "이 이메일 주소의 계정이 이미 존재합니다." #: common/djangoapps/student/views.py msgid "Unable to send email activation link. Please try again later." -msgstr "이메일 활성화 링크를 보낼 수 없습니다. 나중에 다시 시도해주십시오." +msgstr "이메일 활성화 링크를 보낼 수 없습니다. 잠시 후에 다시 시도하세요." #: common/djangoapps/third_party_auth/models.py msgid "Authentication with {} is currently unavailable." @@ -1458,7 +1460,7 @@ msgstr "계승함수가 영역외에서 계산되었습니다:'{student_answer}' #: common/lib/capa/capa/responsetypes.py msgid "Invalid math syntax: '{student_answer}'" -msgstr "수식 입력문에 오류가 있습니다: '{student_answer}'" +msgstr "수식 입력문에 오류가 발생했습니다. '{student_answer}'" #: common/lib/capa/capa/responsetypes.py msgid "You may not use complex numbers in range tolerance problems" @@ -1527,7 +1529,7 @@ msgstr "기호수식 입력" #. translated. #: common/lib/capa/capa/responsetypes.py msgid "An error occurred with SymbolicResponse. The error was: {error_msg}" -msgstr "SymbolicResponse에서 오류 발생했습니다. 오류: {error_msg} " +msgstr "SymbolicResponse에서 오류가 발생했습니다. 오류: {error_msg} " #: common/lib/capa/capa/responsetypes.py msgid "Code Input" @@ -1591,7 +1593,7 @@ msgstr "회로도 작성 도구" #. translated. #: common/lib/capa/capa/responsetypes.py msgid "Error in evaluating SchematicResponse. The error was: {error_msg}" -msgstr "회로도 평가에 문제가 있습니다. 오류 내용: : {error_msg}" +msgstr "회로도 평가에 오류가 발생했습니다. 오류 내용: {error_msg}" #: common/lib/capa/capa/responsetypes.py msgid "Image Mapped Input" @@ -1691,7 +1693,7 @@ msgstr "마감일 이후 추가 제출이 허용되는 시한" #: common/lib/xmodule/xmodule/modulestore/inheritance.py #: lms/templates/problem.html msgid "Show Answer" -msgstr "답 보기" +msgstr "정답 보기" #: common/lib/xmodule/xmodule/capa_base.py msgid "" @@ -1798,7 +1800,7 @@ msgstr "마지막 제출시간 " #: common/lib/xmodule/xmodule/capa_base.py msgid "Timer Between Attempts" -msgstr "다음 시도까지 허용되는 시간 타이머" +msgstr "다음 시도까지 지연 시간" #: common/lib/xmodule/xmodule/capa_base.py msgid "" @@ -1887,13 +1889,13 @@ msgstr "문제를 다시 확인하기 위해서는 문제가 재설정되어야 #: common/lib/xmodule/xmodule/capa_base.py msgid "You must wait at least {wait} seconds between submissions." -msgstr "다음 제출까지 최소 {wait} 초를 대기해야 합니다." +msgstr "다음 문제 풀이까지 {wait}를 대기해야 합니다." #: common/lib/xmodule/xmodule/capa_base.py msgid "" "You must wait at least {wait_secs} between submissions. {remaining_secs} " "remaining." -msgstr "다음 제출까지 최소 {wait_secs}초를 기다려야 합니다. {remaining_secs} 남았습니다." +msgstr "다음 문제 풀이까지 {wait_secs}를 기다려야 합니다. {remaining_secs} 남았습니다." #. Translators: {msg} will be replaced with a problem's error message. #: common/lib/xmodule/xmodule/capa_base.py @@ -2096,7 +2098,7 @@ msgstr "ORA1 은 이제 지원되지 않습니다. ORA2 구성요소로 대치 #: common/lib/xmodule/xmodule/course_metadata_utils.py #: lms/djangoapps/instructor/paidcourse_enrollment_report.py msgid "TBD" -msgstr "개강일 미지정" +msgstr "미지정" #: common/lib/xmodule/xmodule/course_module.py msgid "LTI Passports" @@ -2134,7 +2136,7 @@ msgstr "이 강좌가 종료되는 날짜" #: common/lib/xmodule/xmodule/course_module.py msgid "Cosmetic Course Display Price" -msgstr "Cosmetic Course Display Price" +msgstr "강좌 가격" #: common/lib/xmodule/xmodule/course_module.py msgid "" @@ -2142,8 +2144,7 @@ msgid "" " registration price is set by an administrator in the database, that price " "will be displayed instead of this one." msgstr "" -"학습자가 강좌를 수강 신청할 때 표시되는 가격입니다. 데이터베이스에서 관리자가 유료 강좌 신청 가격을 설정했다면, 이것 대신 그 가격이 " -"표시됩니다." +"학습자가 수강 신청할 때 표시될 가격입니다. 데이터베이스에서 관리자가 유료 강좌 가격을 설정했다면, 이것 대신 그 가격이 표시됩니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Course Advertised Start Date" @@ -2155,8 +2156,8 @@ msgid "" "is different from the set start date. To advertise the set start date, enter" " null." msgstr "" -"강좌 시작일을 홍보하고 싶은 날짜를 입력하세요. 두 날짜가 다른 경우에 입력하면 됩니다. 두 날짜가 같은 경우에는, null을 " -"입력하십시오." +"개강 홍보를 시작할 날짜를 입력하세요. 개강일과 홍보일을 다르게 하고 싶은 경우에 입력하면 됩니다. 두 날짜가 같은 경우에는, null을" +" 입력하십시오." #: common/lib/xmodule/xmodule/course_module.py msgid "Pre-Requisite Courses" @@ -2168,7 +2169,7 @@ msgstr "선수 과목의 과목 키 값" #: common/lib/xmodule/xmodule/course_module.py msgid "Grading policy definition for this class" -msgstr "강좌 채점 규정 " +msgstr "성적 규정 " #: common/lib/xmodule/xmodule/course_module.py msgid "Show Calculator" @@ -2301,8 +2302,8 @@ msgid "" "Enter true or false. If true, the course appears in the list of new courses " "on edx.org, and a New! badge temporarily appears next to the course image." msgstr "" -"True 또는 False를 입력합니다. True의 경우, 사이트 내 새로운 강좌 목록에 나타납니다, 또한 New! 배지가 일시적으로 강좌" -" 이미지 옆에 나타납니다." +"True 또는 False를 입력합니다. True를 입력하면, 새로운 강좌 목록에 나타납니다, 또한 New! 배지가 일시적으로 강좌 대표 " +"이미지 옆에 나타납니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Mobile Course Available" @@ -2369,7 +2370,7 @@ msgid "" " name of the tab (usually the name of the book) as well as the URLs and " "titles of all the chapters in the book." msgstr "" -"HTML 교재가 학습실에서 별도의 탭으로 표시될 수 있도록, 교재의 모든 주제의 URL과 제목과 함께 탭의 이름(보통 교재명 사용)을 " +"HTML 교재가 별도의 탭으로 표시될 수 있도록, 교재 내 모든 챕터의 URL과 챕터 이름, 그리고 탭의 이름(보통 교재명 사용)을 " "입력하세요." #: common/lib/xmodule/xmodule/course_module.py @@ -2467,13 +2468,13 @@ msgstr "강좌 세부 정보 & 일정 편집" #: common/lib/xmodule/xmodule/course_module.py msgid "Draft Your Course's Grading Policy" -msgstr "강좌 채점 규정 초안 작성" +msgstr "성적 규정 초안 작성" #: common/lib/xmodule/xmodule/course_module.py msgid "" "Set up your assignment types and grading policy even if you haven't created " "all your assignments." -msgstr "과제를 생성하지 않았더라도 과제 유형 및 채점 규정을 설정할 수 있습니다." +msgstr "과제를 생성하지 않았더라도 과제 유형 및 성적 규정을 설정할 수 있습니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Edit Grading Settings" @@ -2527,11 +2528,11 @@ msgstr "과제를 부여할 소주제를 설정하세요. 해당 소주제의 #: common/lib/xmodule/xmodule/course_module.py msgid "Reordering Course Content" -msgstr "강좌 콘텐츠 순서 변경하기" +msgstr "강좌 주제 순서 변경하기" #: common/lib/xmodule/xmodule/course_module.py msgid "Use drag and drop to reorder the content in your course." -msgstr "강좌 콘텐츠를 다시 배열하기 위해 마우스로 끌고 옵니다." +msgstr "주제의 순서를 다시 배열하기 위해 마우스로 끌고 옵니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Renaming Sections" @@ -2543,7 +2544,7 @@ msgstr "강좌 개요에서 주제명을 클릭하면, 해당 주제명을 다 #: common/lib/xmodule/xmodule/course_module.py msgid "Deleting Course Content" -msgstr "강좌 내용 삭제하기" +msgstr "주제 및 소주제 삭제하기" #: common/lib/xmodule/xmodule/course_module.py msgid "" @@ -2560,9 +2561,7 @@ msgid "" "Some course authors find using a section for unsorted, in-progress work " "useful. To do this, create a section and set the release date to the distant" " future." -msgstr "" -"주제에 참여 가능 시간을 설정하지 않는 것이 때론 더 유용하기도 합니다. 이 방식을 원한다면, 주제를 만들 때 게시일을 먼 미래로 " -"설정하면 됩니다." +msgstr "이것을 원한다면, 주제를 만들 때 게시일을 먼 미래로 설정하면 됩니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Explore edX's Support Tools" @@ -2619,9 +2618,7 @@ msgid "" "Courses on edX have an About page that includes a course video, description," " and more. Draft the text students will read before deciding to enroll in " "your course." -msgstr "" -"KMOOC의 강좌에는 강좌 소개 영상, 설명 등이 들어가는 강좌 안내가 있습니다. 학습자가 등록하기 전에 참고할 소개 페이지의 초안을 " -"작성하세요." +msgstr "학습자가 등록하기 전에 참고할 강좌 소개 페이지의 초안을 작성하세요." #: common/lib/xmodule/xmodule/course_module.py msgid "Edit Course Schedule & Details" @@ -2653,7 +2650,7 @@ msgstr "선수 과목 추가" msgid "" "Let students know what knowledge and/or skills they should have before they " "enroll in your course." -msgstr "학습자들이 이 강좌에 등록하기 전에 반드시 알고 있어야 할 지식 또는 기술을 입력해주세요." +msgstr "학습자들이 이 강좌에 등록하기 전에 반드시 알고 있어야 할 선수 강좌를 입력해주세요." #: common/lib/xmodule/xmodule/course_module.py msgid "Course Info Sidebar Name" @@ -2664,7 +2661,7 @@ msgid "" "Enter the heading that you want students to see above your course handouts " "on the Course Info page. Your course handouts appear in the right panel of " "the page." -msgstr "학습자가 강좌 정보에서 볼 강의 자료의 제목을 입력해주세요. 학습 자료는 화면의 오른쪽에 있게 됩니다." +msgstr "학습 자료는 화면의 오른쪽에 있게 됩니다." #: common/lib/xmodule/xmodule/course_module.py msgid "" @@ -2703,8 +2700,8 @@ msgid "" "Enter true or false. If true, students can download certificates before the " "course ends, if they've met certificate requirements." msgstr "" -"True 또는 False를 입력합니다. True의 경우, 수료증 취득 요건을 만족한 학습자들에 한해 강좌 종료 전, 수료증을 다운로드할 " -"수 있습니다." +"True 또는 False를 입력합니다. True를 입력하면, 수료증 취득 요건을 만족한 학습자들에 한해 강좌 종료 전, 수료증을 " +"다운로드할 수 있습니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Certificates Display Behavior" @@ -2880,7 +2877,7 @@ msgstr "모두에게 위키 접근 허용하기" msgid "" "Enter true or false. If true, edX users can view the course wiki even if " "they're not enrolled in the course." -msgstr "True 또는 False를 입력하세요. True의 경우, 강좌를 등록하지 않은 사람이라도 위키를 볼 수 있습니다." +msgstr "True 또는 False를 입력하세요. True를 입력하면, 수강하지 않는 사람도 위키를 볼 수 있습니다." #: common/lib/xmodule/xmodule/course_module.py msgid "Invitation Only" @@ -3676,7 +3673,7 @@ msgstr "실험은 비활성화된 집단이 포함되어 있습니다. 콘텐츠 #: common/lib/xmodule/xmodule/split_test_module.py msgid "This content experiment has issues that affect content visibility." -msgstr "이 콘텐츠 실험은 콘텐츠 가시성에 영향을 미치는 이슈를 가지고 있습니다." +msgstr "이 콘텐츠 실험으로 학습자 공개 설정이 변경될 수 있습니다." #: common/lib/xmodule/xmodule/tabs.py msgid "External Discussion" @@ -3849,7 +3846,7 @@ msgstr "베타 사용자들에게 조기 공개할 기간" msgid "" "Enter the number of days before the start date that beta users can access " "the course." -msgstr "베타 사용자가 강좌에 접근할 수 있는 시작일 이전의 날짜 수를 입력합니다." +msgstr "베타 사용자가 강좌에 접근할 수 있는 기간을 숫자로 입력해주세요." #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "Static Asset Path" @@ -3880,8 +3877,8 @@ msgid "" "Enter true or false. If true, you can use the LaTeX templates for HTML " "components and advanced Problem components." msgstr "" -"True 또는 False를 입력합니다. True의 경우, HTML 구성 요소와 고급 문제 구성 요소에 대한 LaTeX 템플릿을 사용할 수" -" 있습니다." +"True 또는 False를 입력합니다. True를 입력하면, HTML 구성 요소와 고급 문제 구성 요소에 대한 LaTeX 템플릿을 사용할" +" 수 있습니다." #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "" @@ -3927,12 +3924,12 @@ msgstr "학습자들이 어떻게 집단으로 구성될 지를 정하는 설정 #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "Enable video caching system" -msgstr "Video caching 사용하기" +msgstr "비디오 캐싱 사용하기" #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "" "Enter true or false. If true, video caching will be used for HTML5 videos." -msgstr "True 또는 False를 입력합니다. True의 경우, 비디오 캐싱은 HTML5 비디오에 사용됩니다." +msgstr "True 또는 False를 입력합니다. True를 입력하면, 비디오 캐싱은 HTML5 비디오에 사용됩니다." #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "Video Pre-Roll" @@ -3976,7 +3973,7 @@ msgstr "학습자 노트 활성화" #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "" "Enter true or false. If true, students can use the Student Notes feature." -msgstr "True 또는 False를 입력하세요. True의 경우, 학습자는 학습자 노트 기능을 사용할 수 있습니다." +msgstr "True 또는 False를 입력하세요. True를 입력하면, 학습자가 학습자 노트 기능을 사용할 수 있습니다." #: common/lib/xmodule/xmodule/modulestore/inheritance.py msgid "" @@ -4110,7 +4107,7 @@ msgstr "피드백이 저장되었습니다." #: common/lib/xmodule/xmodule/open_ended_grading_classes/open_ended_module.py msgid "Unable to save your feedback. Please try again later." -msgstr "피드백을 저장할 수 없습니다. 다시 시도해 주십시오." +msgstr "피드백을 저장할 수 없습니다. 잠시 후에 다시 시도하세요." #: common/lib/xmodule/xmodule/open_ended_grading_classes/open_ended_module.py msgid "Successfully saved your submission." @@ -4123,7 +4120,7 @@ msgstr "제출물이 저장되었습니다." #: common/lib/xmodule/xmodule/open_ended_grading_classes/open_ended_module.py msgid "" "Unable to submit your submission to the grader. Please try again later." -msgstr "제출할 수 없습니다. 다시 시도해 주십시오. " +msgstr "제출할 수 없습니다. 잠시 후에 다시 시도하세요." #. Translators: the `grader` refers to the grading service open response #. problems @@ -4143,7 +4140,7 @@ msgstr "채점자로부터 피드백을 받을 수 없습니다." #: common/lib/xmodule/xmodule/open_ended_grading_classes/open_ended_module.py msgid "Error handling action. Please try again." -msgstr "handling action에 오류가 있습니다. 다시 시도해 주십시오." +msgstr "handling action에 오류가 발생했습니다. 다시 시도하세요." #. Translators: this string appears once an openended response #. is submitted but before it has been graded @@ -4232,7 +4229,7 @@ msgstr "비디오 URL 기본값" msgid "" "The name students see. This name appears in the course ribbon and as a " "header for the video." -msgstr "학습자가 보는 이름입니다. 이는 강좌 ribbon에 헤더로 보입니다." +msgstr "학습자가 보는 제목입니다. 강좌 ribbon에 제목으로 보입니다." #: common/lib/xmodule/xmodule/video_module/video_xfields.py msgid "Component Display Name" @@ -4576,11 +4573,11 @@ msgstr "" msgid "" "Completed the course \"{course_name}\" ({course_mode}, {start_date} - " "{end_date})" -msgstr "\"{course_name}\" ({course_mode}, {start_date} - {end_date}) 강좌를 마쳤습니다." +msgstr "\"{course_name}\" ({course_mode}, {start_date} - {end_date}) 강좌를 수료했습니다." #: lms/djangoapps/certificates/badge_handler.py msgid "Completed the course \"{course_name}\" ({course_mode})" -msgstr "\"{course_name}\"({course_mode}) 강좌를 마쳤습니다." +msgstr "\"{course_name}\"({course_mode}) 강좌를 수료했습니다." #: lms/djangoapps/certificates/models.py msgid "" @@ -4714,8 +4711,8 @@ msgid "" "agreed to abide by {platform_name}'s honor code and completed all of the " "required tasks for this course under its guidelines." msgstr "" -"{cert_type} 수료증은 {platform_name} 학습자가 {platform_name}의 명예 과정을 수강하면서 해당 강좌의" -" 방침에 따라 과제를 모두 완료했음을 증명합니다. " +"{cert_type}수료증은 {platform_name} 학습자가 {platform_name}의 명예 과정을 수강하면서 해당 강좌의 " +"방침에 따라 과제를 모두 완료했음을 증명합니다. " #. Translators: This text describes the 'ID Verified' course certificate #. type, which is a higher level of @@ -4728,8 +4725,8 @@ msgid "" "required tasks for this course under its guidelines, as well as having their" " photo ID checked to verify their identity." msgstr "" -"{cert_type} 수료증은 {platform_name} 학습자가 {platform_name}의 명예 과정을 수강하면서 해당 강좌의" -" 방침에 따라 과제를 모두 완료했으며, 사진을 통한 신분 확인 절차까지 거쳤음을 증명합니다. " +"{cert_type}수료증은 {platform_name} 학습자가 {platform_name}의 명예 과정을 수강하면서 해당 강좌의 " +"방침에 따라 과제를 모두 완료했으며, 사진을 통한 신분 확인 절차까지 거쳤음을 증명합니다. " #. Translators: This text describes the 'XSeries' course certificate type. #. An XSeries is a collection of @@ -5008,7 +5005,7 @@ msgstr "결제를 처리하는 동안 시스템 오류가 발생하였습니다. #: lms/djangoapps/commerce/views.py msgid "Please wait a few minutes and then try again." -msgstr "잠시 기다린 후 다시 시도하세요. " +msgstr "잠시 후에 다시 시도하세요." #: lms/djangoapps/commerce/views.py msgid "For help, contact {payment_support_link}." @@ -5127,26 +5124,6 @@ msgstr "{currency_symbol}{price}" msgid "Free" msgstr "무료" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "{first_institutions} 및 {last_institution}" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "{first_institution} 및 {second_institution}" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "{institution_series} 에서 보내는 이메일을 수신하고 다른 프로그램에 대한 정보를 받겠습니다." - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "유효하지 않은 위치" @@ -5481,7 +5458,7 @@ msgstr "EdxNotes Service를 이용할 수 없습니다. 잠시후 다시 시도 #: lms/djangoapps/edxnotes/helpers.py msgid "Server error. Please try again in a few minutes." -msgstr "서버 오류. 잠시 후 다시 시도해 주십시오. " +msgstr "서버 오류. 잠시 후에 다시 시도하세요." #: lms/djangoapps/edxnotes/helpers.py msgid "No endpoint was provided for EdxNotes." @@ -5561,7 +5538,7 @@ msgid "" "An account with email {email} exists but the provided username {username} is" " different. Enrolling anyway with {email}." msgstr "" -"{email} 의 계정이 존재하지만, 입력된 이용자 이름{username}이 다릅니다. 우선 {email}로 등록이 필요합니다. " +"{email} 의 계정이 존재하지만, {username} 입력된 아이디가 다릅니다. 우선 {email}로 등록이 필요합니다. " #: lms/djangoapps/instructor/views/api.py msgid "Username {user} already exists." @@ -5637,7 +5614,7 @@ msgstr "성별" #: lms/djangoapps/instructor/views/api.py #: lms/djangoapps/instructor_task/tasks_helper.py msgid "Level of Education" -msgstr "교육 수준" +msgstr "최종 학력" #: lms/djangoapps/instructor/views/api.py #: lms/djangoapps/instructor_task/tasks_helper.py lms/templates/register.html @@ -5946,7 +5923,7 @@ msgid "" "To gain insights into student enrollment and participation {link_start}visit" " {analytics_dashboard_name}, our new course analytics product{link_end}." msgstr "" -"학습자의 수강 현황이 궁금하시면, {link_start} {analytics_dashboard_name}을 " +"학습자의 수강 현황이 궁금하시면, {link_start} {analytics_dashboard_name}를 " "방문하세요{link_end}. 강좌 분석을 지원합니다." #: lms/djangoapps/instructor/views/instructor_dashboard.py @@ -6536,7 +6513,7 @@ msgstr "기본 탭" msgid "" "Enter the tab that is selected in the XBlock. If not set, the Courseware tab" " is selected." -msgstr "XBlock안에 선택된 탭을 입력합니다. 만약 설정하지 않으면 Courseware 탭이 선택됩니다." +msgstr "XBlock에서 선택된 탭을 입력합니다. 만약 설정하지 않으면 강좌내용 탭이 선택됩니다." #: lms/djangoapps/lms_xblock/mixin.py msgid "LaTeX Source File Name" @@ -7294,7 +7271,7 @@ msgstr "요청된 금액이 처음 승인된 금액을 초과합니다." #: lms/djangoapps/shoppingcart/processors/CyberSource.py msgid "Processor Failure. Possible fix: retry the payment" -msgstr "처리기 실패. 가능한 해결책: 지불을 다시 시도해 보십시오." +msgstr "처리에 실패했습니다. 잠시 후에 다시 시도하세요." #: lms/djangoapps/shoppingcart/processors/CyberSource.py msgid "The authorization has already been captured" @@ -7816,10 +7793,6 @@ msgstr "제공된 주제 ID {topic_id}가 유효하지 않습니다." msgid "text_search is not yet supported." msgstr "text_search는 제공되지 않습니다." -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "last_activity는 아직 제공되지 않습니다." - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -7832,6 +7805,10 @@ msgstr "{ordering} 정렬은 제공되지 않습니다." msgid "The supplied course_id {course_id} is not valid." msgstr "제공된 강좌 ID {course_id}가 유효하지 않습니다. " +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "아이디 혹은 team_id 를 입력해야 합니다. " @@ -7844,6 +7821,10 @@ msgstr "아이디가 필요합니다. " msgid "Team id is required." msgstr "팀 id가 필요합니다." +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "이용자 {username}은 이미 본 강좌의 운영팀원입니다. " @@ -7880,7 +7861,7 @@ msgstr "사진에서 얼굴이 보이지 않았습니다." #: lms/djangoapps/verify_student/models.py msgid "There was an error verifying your ID photos." -msgstr "신분증 사진 확인에 오류가 있었습니다. " +msgstr "신분증 사진 확인 중 오류가 발생했습니다." #: lms/djangoapps/verify_student/models.py msgid "The course for which this deadline applies" @@ -8121,7 +8102,7 @@ msgstr "" #: lms/templates/registration/password_reset_confirm.html msgid "The following errors occurred while processing your registration: " -msgstr "등록 처리 중 다음 오류가 일어났습니다." +msgstr "등록 처리 중 다음 오류가 발생했습니다." #: lms/templates/registration/password_reset_confirm.html msgid "You must complete all fields." @@ -8135,7 +8116,7 @@ msgstr "두 암호 필드가 일치하지 않습니다." msgid "" "We're sorry, our systems seem to be having trouble processing your password " "reset" -msgstr "죄송합니다. 암호 재설정을 처리하는 도중에 문제가 발생한 것 같습니다." +msgstr "죄송합니다. 비밀번호 재설정 처리 중, 오류가 발생했습니다. " #: lms/templates/registration/password_reset_confirm.html #, python-format @@ -8198,7 +8179,7 @@ msgid "" " " msgstr "" "\n" -"암호 재설정 링크가 무효합니다. 아마도 이미 링크가 사용되었기 때문일 수 있습니다. %(start_link)s 로그인 페이지 %(end_link)s 로 돌아가서 암호 재설정 과정을 다시 시작하십시오." +"해당 링크가 이전에 사용된 적이 있습니다. %(start_link)s 로그인 페이지%(end_link)s로 돌아가서 비밀번호 재설정 과정을 다시 시작하세요." #: lms/templates/registration/password_reset_confirm.html msgid "Password Reset Help" @@ -8411,9 +8392,7 @@ msgid "" "to see how the article looked at this stage. At the bottom of this page, you" " can change to a particular revision or merge an old revision with the " "current one." -msgstr "" -"편집된 행이 나타난 목록을 보기 위해 각 수정본을 클릭하세요. 각 단계에서 미리보기 버튼을 클릭하세요. 이 페이지의 하단에서 수정본으로" -" 변경하거나 이전 버전을 현재 버전으로 병합할 수 있습니다." +msgstr "변경 사항을 보기 위해 각 수정본을 클릭하세요. 수정본으로 변경하거나 이전 버전을 현재 버전으로 병합할 수 있습니다." #: lms/templates/wiki/history.html msgid "(no log message)" @@ -8871,7 +8850,7 @@ msgstr "" #. below a field meant to hold the user's full name. #: openedx/core/djangoapps/user_api/views.py lms/templates/register.html msgid "Needed for any certificates you may earn" -msgstr "앞으로 받게될 수료증에 필요합니다." +msgstr "앞으로 받게 될 수료증에 필요합니다." #. Translators: This label appears above a field on the registration form #. meant to hold the user's public username. @@ -8889,7 +8868,7 @@ msgstr "강좌에서 표시되길 원하는 이름 - {bold_start}(변경 불가 #. a field on the registration form meant to hold the user's username. #: openedx/core/djangoapps/user_api/views.py msgid "JaneDoe" -msgstr "Hong Gil Dong" +msgstr "홍길동" #. Translators: This label appears above a dropdown menu on the registration #. form used to select the user's highest completed level of education. @@ -8927,7 +8906,7 @@ msgstr "서비스 조항 및 명예 규범" #: openedx/core/djangoapps/user_api/views.py msgid "I agree to the {platform_name} {terms_of_service}." -msgstr "{platform_name}의 {terms_of_service} 에 동의 합니다. " +msgstr "{platform_name}의 {terms_of_service}에 동의합니다. " #: openedx/core/djangoapps/user_api/views.py msgid "You must agree to the {platform_name} {terms_of_service}." @@ -9059,6 +9038,10 @@ msgstr "" msgid "Missing branch on fresh clone" msgstr "" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9118,7 +9101,7 @@ msgstr "" msgid "" "There is already a course defined with the same organization and course " "number. Please change either organization or course number to be unique." -msgstr "동일 기관, 강좌 번호, 강좌 운영에 이미 입력된 강좌가 있습니다. 기관이나 강좌 번호가 유일하도록 변경하세요" +msgstr "동일 기관, 강좌 번호, 기관별 강좌 번호로 이미 다른 강좌가 있습니다. 기관이나 강좌 번호가 유일하도록 변경하세요" #: cms/djangoapps/contentstore/views/course.py msgid "" @@ -9417,6 +9400,11 @@ msgstr "취소" msgid "Course Number" msgstr "강좌 번호" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "오류:" @@ -9457,14 +9445,14 @@ msgstr "예: username@domain.com" #: cms/templates/login.html lms/templates/login.html msgid "Forgot password?" -msgstr "비밀번호를 잊어버렸습니까?" +msgstr "비밀번호를 잊어버리셨나요?" #. Translators: This is the placeholder text for a field that requests the #. user's full name. #: cms/templates/register.html lms/templates/register.html #: lms/templates/verify_student/face_upload.html msgid "example: Jane Doe" -msgstr "예: Jane Doe" +msgstr "예: 홍길동" #: cms/templates/register.html lms/templates/register-shib.html #: lms/templates/register.html lms/templates/signup_modal.html @@ -9490,7 +9478,7 @@ msgstr "강좌 종료일" #: cms/templates/settings.html lms/templates/courseware/course_about.html msgid "Requirements" -msgstr "요구사항" +msgstr "학습 시간 및 선수 강좌" #: cms/templates/studio_xblock_wrapper.html lms/templates/help_modal.html #: lms/templates/module-error.html @@ -9571,7 +9559,7 @@ msgstr "{} 에 등록 | 유형을 선택하세요" #: common/templates/course_modes/choose.html msgid "Sorry, there was an error when trying to enroll you" -msgstr "죄송합니다. 등록에 오류가 있었습니다." +msgstr "죄송합니다. 등록에 오류가 발생했습니다." #: common/templates/course_modes/choose.html msgid "Congratulations! You are now enrolled in {course_name}" @@ -10023,7 +10011,7 @@ msgstr "질문에 대한 요약" #: lms/templates/help_modal.html msgid "An error has occurred." -msgstr "오류발생" +msgstr "오류가 발생했습니다." #: lms/templates/help_modal.html msgid "Please {link_start}send us e-mail{link_end}." @@ -10031,7 +10019,7 @@ msgstr "{link_start}이메일{link_end}을 보내주세요." #: lms/templates/help_modal.html msgid "Please try again later." -msgstr "다음에 다시 시도하세요." +msgstr "잠시 후에 다시 시도하세요." #: lms/templates/imageannotation.html msgid "Note: only instructors may annotate." @@ -10171,7 +10159,7 @@ msgstr "이메일 혹은 암호가 부정확합니다." #: lms/templates/login.html msgid "An error occurred when signing you in to {platform_name}." -msgstr "{platform_name}에 로그인 하는동안 오류가 발생했습니다." +msgstr "{platform_name}에 로그인 하는 동안 오류가 발생했습니다." #: lms/templates/login.html msgid "" @@ -10282,7 +10270,7 @@ msgstr "작업중" #: lms/templates/module-error.html #: lms/templates/courseware/courseware-error.html msgid "There has been an error on the {platform_name} servers" -msgstr "{platform_name} 서버에서 오류가 있었습니다." +msgstr "{platform_name} 서버에서 오류가 발생했습니다." #: lms/templates/module-error.html msgid "" @@ -10386,7 +10374,7 @@ msgstr "저장" #: lms/templates/problem.html msgid "You have used {num_used} of {num_total} submissions" -msgstr "{num_total} 제출 중에서 {num_used} 를 사용하였습니다." +msgstr "총 풀이 가능 횟수 {num_total}회 중 {num_used}회 풀었습니다." #: lms/templates/provider_login.html msgid "Log In" @@ -10548,7 +10536,7 @@ msgstr "{provider_name}에 가입하세요!" #: lms/templates/register.html msgid "Create your own {platform_name} account below" -msgstr "당신만의 {platform_name} 계정 생성을 밑에서 하세요." +msgstr "{platform_name}에 가입하세요." #. Translators: selected_provider is the name of an external, third-party user #. authentication service (like Google or LinkedIn). @@ -11204,13 +11192,18 @@ msgstr "일정" #: lms/templates/ccx/coach_dashboard.html #: lms/templates/ccx/grading_policy.html msgid "Grading Policy" -msgstr "채점 규정" +msgstr "성적 규정" #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Batch Enrollment" msgstr "일괄 등록" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "이메일 주소/사용자이름" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -11222,12 +11215,7 @@ msgstr "학습자 일괄 추가를 위해 줄바꿈 혹은 쉼표로 이메일/ msgid "" "You will not get notification for emails that bounce, so please double-check" " spelling." -msgstr "이메일이 정확한지 확인하세요. 반송된 이메일은 확인할 수 없습니다." - -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "이메일 주소/사용자이름" +msgstr "이메일 주소가 정확한지 확인해야 합니다. 반송되는 이메일을 확인할 수 없기 때문입니다." #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html @@ -11255,12 +11243,12 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Checking this box has no effect if 'Unenroll' is selected." -msgstr "'등록 취소'가 선택되어있는 경우 박스를 선택시 아무 효과도 없습니다." +msgstr "'수강 취소'가 선택 되어 있는 경우, 적용되지 않습니다." #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Notify users by email" -msgstr "사용자 이메일로 안내" +msgstr "이메일로 등록에 대해 알려줍니다." #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html @@ -11271,7 +11259,6 @@ msgstr "이옵션이 체크 되어 있으면, 사용자들은 이메일 #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "등록" @@ -11280,6 +11267,10 @@ msgstr "등록" msgid "Student List Management" msgstr "학습자 목록 관리" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "경고" @@ -11294,11 +11285,11 @@ msgstr "" #: lms/templates/ccx/grading_policy.html msgid "Most coaches should not need to make changes to the grading policy." -msgstr "대부분의 코치는 채점 규정을 변경할 필요가 없습니다. " +msgstr "대부분의 코치는 성적 규정을 변경할 필요가 없습니다. " #: lms/templates/ccx/grading_policy.html msgid "Save Grading Policy" -msgstr "채점 규정 저장하기" +msgstr "성적 규정 저장하기" #. Translators: This explains to people using a screen reader how to interpret #. the format of YYYY-MM-DD @@ -11322,7 +11313,7 @@ msgstr "저장되지 않은 변경사항이 있습니다." #: lms/templates/ccx/schedule.html msgid "There was an error saving changes." -msgstr "변경을 저장하는데 오류가 있었습니다." +msgstr "변경 사항 저장 중 오류가 발생했습니다." #: lms/templates/ccx/schedule.html msgid "Schedule a Unit" @@ -11406,7 +11397,7 @@ msgstr "Twitter에 공유하기" #: lms/templates/certificates/_accomplishment-banner.html msgid "Tweet this Accomplishment. Pop up window." -msgstr "이 성취 결과를 트윗하고, 윈도우로 뛰우기" +msgstr "이 성과를 트윗하고, 윈도우로 보기." #: lms/templates/certificates/_accomplishment-banner.html msgid "Add to LinkedIn Profile" @@ -11602,7 +11593,7 @@ msgstr[0] "{num} 포인트: {explanatory_text}" #: lms/templates/combinedopenended/openended/open_ended_error.html msgid "There was an error with your submission. Please contact course staff." -msgstr "제출하는데 오류가 있었습니다. 강좌 운영팀에게 연락하십시오." +msgstr "제출 중 오류가 발생했습니다. 강좌 운영팀에게 연락하세요." #: lms/templates/combinedopenended/openended/open_ended_rubric.html msgid "Rubric" @@ -11631,7 +11622,7 @@ msgstr "취소여부 확인하기" msgid "" "Your transaction has been cancelled. If you feel an error has occurred, " "contact {email}." -msgstr "전송이 취소되었습니다. 오류가 발생한것 같으로 여겨지면, {email}로 이메일 주세요." +msgstr "전송이 취소되었습니다. 오류가 발생한 것으로 보일 경우 {email}로 메일 보내세요." #: lms/templates/commerce/checkout_receipt.html msgid "Loading Order Data..." @@ -11655,9 +11646,8 @@ msgid "This section is graded." msgstr "이 주제는 채점되었습니다." #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." -msgstr "오류가 발생하였습니다. 다음에 다시 시도하세요." +msgstr "오류가 발생했습니다. 잠시 후에 다시 시도하세요." #: lms/templates/courseware/course_about.html msgid "" @@ -11671,7 +11661,7 @@ msgstr "" #: lms/templates/courseware/course_about.html msgid "You are registered for this course" -msgstr "이 강좌에 등록되었습니다." +msgstr "수강중입니다." #: lms/templates/courseware/course_about.html msgid "View Courseware" @@ -11694,8 +11684,8 @@ msgid "Enrollment is Closed" msgstr "등록마감" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" -msgstr "{course_name}을 ({price}) 장바구니에 추가하기" +msgid "Add {course_name} to Cart ({price} USD)" +msgstr "" #: lms/templates/courseware/course_about.html msgid "Register for {course_name}" @@ -11749,11 +11739,11 @@ msgstr "개강일" #: lms/templates/courseware/course_about.html msgid "Classes End" -msgstr "수업 종료" +msgstr "종강일" #: lms/templates/courseware/course_about.html msgid "Estimated Effort" -msgstr "예상 학습 시간" +msgstr "학습 권장 시간" #: lms/templates/courseware/course_about.html msgid "Prerequisites" @@ -11771,7 +11761,6 @@ msgid "Additional Resources" msgstr "추가 자원" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "등록" @@ -11958,7 +11947,7 @@ msgstr "심리 측정" #: lms/templates/courseware/legacy_instructor_dashboard.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Admin" -msgstr "관리자" +msgstr "교수자" #: lms/templates/courseware/legacy_instructor_dashboard.html msgid "Forum Admin" @@ -12106,7 +12095,7 @@ msgstr "이메일을 보내기 위해, 교수자 대시보드의 이메일영역 #: lms/templates/courseware/legacy_instructor_dashboard.html msgid "Pending Instructor Tasks" -msgstr "대기중인 작업목록" +msgstr "대기중인 작업 목록" #: lms/templates/courseware/legacy_instructor_dashboard.html msgid "Task Type" @@ -12150,54 +12139,6 @@ msgstr "강좌 통계는 교수자 대시보드의 관리자 섹션에서 볼 msgid "Course errors" msgstr "강좌 오류" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "{course_id} 소개" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "곧 나옴" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr " {course_number} 소개" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "강좌 내용 접근" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "당신은 등록이 되어있습니다. " - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "에 등록하였습니다." - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "학습자 유형 선택하세요" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "그리고 인증 절차를 진행합니다." - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "등록이 마감되었습니다" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "새소식 - MITx 6.002x" @@ -12336,7 +12277,7 @@ msgstr " {course.display_number_with_default} 강좌 정보" msgid "" "You were most recently in {section_link}. If you're done with that, choose " "another section on the left." -msgstr "이전에 {section_link}을 학습했습니다. 완료했다면, 왼쪽에서 다른 학습 주제를 선택하세요." +msgstr "{section_link} 학습을 완료했습니다. 왼쪽에서 다음 주제를 선택하세요." #: lms/templates/credit_notifications/credit_eligibility_email.html #: lms/templates/emails/business_order_confirmation_email.txt @@ -12389,7 +12330,7 @@ msgstr "" msgid "" "Final course details are being wrapped up at this time. Your final standing " "will be available shortly." -msgstr "최종 강좌 세부 사항이 지금 마무리 단계에 있습니다. 최종 출판본이 곧 사용가능할 것 입니다." +msgstr "곧 강좌를 수강할 수 있습니다." #: lms/templates/dashboard/_dashboard_certificate_information.html msgid "Your final grade:" @@ -12486,7 +12427,7 @@ msgstr "{course_number} {course_name} 홈페이지" #: lms/templates/dashboard/_dashboard_course_listing.html msgid "{course_number} {course_name} Cover Image" -msgstr "{course_number} {course_name} 표지 이미지" +msgstr "{course_number} {course_name} 대표 이미지" #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Enrolled as: " @@ -12500,6 +12441,10 @@ msgstr "종료 - {end_date}" msgid "Started - {start_date}" msgstr "개강 - {start_date}" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "준비중입니다." + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "개강 - {start_date}" @@ -12696,8 +12641,8 @@ msgstr "학점 완료하기" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -12794,7 +12739,7 @@ msgstr "게시물 보기" #: lms/templates/discussion/_discussion_module_studio.html msgid "To view live discussions, click Preview or View Live in Unit Settings." -msgstr "실시간 토론을 보려면, 학습 활동 설정에서 미리 보기나 실시간 보기를 클릭" +msgstr "게시판을 보려면, 학습 활동 설정에서 미리 보기나 적용 결과 보기를 클릭하세요." #: lms/templates/discussion/_discussion_module_studio.html msgid "Discussion ID: {discussion_id}" @@ -12802,11 +12747,11 @@ msgstr "토의 ID: {discussion_id}" #: lms/templates/discussion/_filter_dropdown.html msgid "Filter Topics" -msgstr "토픽 필터" +msgstr "제목 검색" #: lms/templates/discussion/_filter_dropdown.html msgid "filter topics" -msgstr "토픽 필터" +msgstr "제목 검색" #: lms/templates/discussion/_filter_dropdown.html #: lms/templates/discussion/_thread_list_template.html @@ -12845,7 +12790,7 @@ msgstr "필터:" #. Translators: This is a menu option for showing all forum threads unfiltered #: lms/templates/discussion/_thread_list_template.html msgid "Show all" -msgstr "다 보기" +msgstr "전체 보기" #. Translators: This is a menu option for showing only unread forum threads #: lms/templates/discussion/_thread_list_template.html @@ -12875,21 +12820,17 @@ msgstr "정렬:" #. Translators: This is a menu option for sorting forum threads #: lms/templates/discussion/_thread_list_template.html msgid "by recent activity" -msgstr "최근 활동으로 " +msgstr "등록 순" #. Translators: This is a menu option for sorting forum threads #: lms/templates/discussion/_thread_list_template.html msgid "by most activity" -msgstr "활동빈도 순으로 " +msgstr "댓글 순" #. Translators: This is a menu option for sorting forum threads #: lms/templates/discussion/_thread_list_template.html msgid "by most votes" -msgstr "투표순으로" - -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "," +msgstr "추천 순" #: lms/templates/discussion/_user_profile.html #, python-format @@ -13106,7 +13047,7 @@ msgstr "이 메일은 {site_name}에서 {email_address}으로 보내진 자동 #: lms/templates/emails/add_beta_tester_email_subject.txt msgid "You have been invited to a beta test for {course_name}" -msgstr "당신은 {course_name}에 베타테스터로 초대되었습니다" +msgstr "{course_name} 베타테스터로 초대되었습니다." #: lms/templates/emails/business_order_confirmation_email.txt msgid "Thank you for your purchase of " @@ -13222,8 +13163,7 @@ msgstr " [[성함]]에게 " msgid "" "To enroll in {course_names} we have provided a registration URL for you. " "Please follow the instructions below to claim your access." -msgstr "" -" {course_names} 에 등록할 수 있게 하기 위해, 저희가 등록 URL을 준비했습니다. 아래의 안내를 참고하세요. " +msgstr " {course_names} 등록 URL입니다. 아래의 안내를 참고하세요. " #. Translators: please translate the text inside [[ ]]. This is meant as a #. template for course teams to use. @@ -13318,7 +13258,7 @@ msgstr "친애하는 학습자에게," msgid "" "You have been invited to join {course_name} at {site_name} by a member of " "the course staff." -msgstr "강좌 스태프멤버가 당신을 {site_name}의 {course_name}에 초대하였습니다." +msgstr "강좌 운영팀이 귀하를 {site_name} {course_name}에 초대하였습니다." #: lms/templates/emails/enroll_email_allowedmessage.txt msgid "To access the course visit {course_url} and login." @@ -13342,7 +13282,7 @@ msgstr "" msgid "" "Once you have registered and activated your account, you will see " "{course_name} listed on your dashboard." -msgstr "등록하고 계정을 활성화시키면 대시보드에 등록된 {course_name}을 볼수 있습니다. " +msgstr "계정을 활성화하면 대시보드에 등록된 {course_name}을 볼 수 있습니다. " #: lms/templates/emails/enroll_email_allowedmessage.txt msgid "" @@ -13352,11 +13292,11 @@ msgstr "등록하고 계정을 활성화 시켰으면, {course_about_url}를 방 #: lms/templates/emails/enroll_email_allowedmessage.txt msgid "You can then enroll in {course_name}." -msgstr "이제는 {course_name}에 등록할 수 있습니다 " +msgstr "{course_name}에 등록할 수 있습니다 " #: lms/templates/emails/enroll_email_allowedsubject.txt msgid "You have been invited to register for {course_name}" -msgstr "당신은 {course_name} 에 등록초대 되었습니다." +msgstr "{course_name}에 초대받았습니다." #: lms/templates/emails/enroll_email_enrolledmessage.txt msgid "" @@ -13373,7 +13313,7 @@ msgstr "이 메일은 {site_name}에서 {full_name}으로 보내진 자동메일 #: lms/templates/emails/enroll_email_enrolledsubject.txt msgid "You have been enrolled in {course_name}" -msgstr "당신은 {course_name}에 등록되었습니다" +msgstr "{course_name}에 등록되었습니다" #: lms/templates/emails/order_confirmation_email.txt msgid "" @@ -13546,8 +13486,8 @@ msgid "" "name from {old_name} to {new_name}. If you need further assistance, please " "e-mail the tech support at {email}" msgstr "" -"죄송합니다. 귀하가 요청한 {old_name} 에서 {new_name}로 이름 변경의 승인이 아직 처리되지 않았습니다. 도움이 " -"필요하다면, 기술 지원팀 {email}으로 이메일 보내주세요." +"죄송합니다. 귀하가 요청한 {old_name}에서 {new_name}로 이름 변경의 승인이 아직 처리되지 않았습니다. 도움이 필요하다면," +" 기술 지원팀 {email}으로 이메일 보내주세요." #: lms/templates/emails/reject_name_change.txt msgid "" @@ -13555,17 +13495,15 @@ msgid "" "name from {old_name} to {new_name}. If you need further assistance, please " "e-mail the course staff at {email}." msgstr "" -"죄송합니다. 귀하가 요청한 {old_name} 에서 {new_name}로 이름 변경의 승인이 아직 처리되지 않았습니다. 도움이 " -"필요하다면, 강좌 운영팀 {email}으로 이메일 보내주세요." +"죄송합니다. 귀하가 요청한 {old_name}에서 {new_name}로 이름 변경의 승인이 아직 처리되지 않았습니다. 도움이 필요하다면," +" 강좌 운영팀 {email}으로 이메일 보내주세요." #: lms/templates/emails/remove_beta_tester_email_message.txt msgid "" "You have been removed as a beta tester for {course_name} at {site_name} by a" " member of the course staff. The course will remain on your dashboard, but " "you will no longer be part of the beta testing group." -msgstr "" -"강좌 운영팀원이 당신을 {site_name}의 {course_name} 베타테스터에서 삭제하였습니다.\n" -"해당 강좌는 대시보드 남아 있지만, 더이상 베타테스트 팀원이 아닙니다." +msgstr "강좌 운영팀원이 당신을 {site_name}의 {course_name} 베타테스터에서 삭제하였습니다. " #: lms/templates/emails/remove_beta_tester_email_message.txt #: lms/templates/emails/unenroll_email_enrolledmessage.txt @@ -13574,13 +13512,13 @@ msgstr "당신의 다른 강좌에 영향을 주지 않습니다." #: lms/templates/emails/remove_beta_tester_email_subject.txt msgid "You have been removed from a beta test for {course_name}" -msgstr "당신은 {course_name}에 베타테스터에서 삭제되었습니다" +msgstr "{course_name} 베타테스터가 아닙니다." #: lms/templates/emails/reverification_processed.txt msgid "" "We have successfully verified your identity for the {assessment} assessment " "in the {course_name} course." -msgstr "{course_name} 강좌의 {assessment} 평가를 위해 귀하의 신분 인증이 성공적으로 이루어졌습니다. " +msgstr "{course_name} 강좌의 {assessment} 평가를 위해 본인 인증이 성공적으로 이루어졌습니다. " #: lms/templates/emails/reverification_processed.txt msgid "" @@ -13588,8 +13526,8 @@ msgid "" "{course_name} course. You have used {used_attempts} out of " "{allowed_attempts} attempts to verify your identity." msgstr "" -"{course_name} 강좌의 {assessment} 평가를 위한 신분 인증을 할 수 없습니다. {allowed_attempts} " -"중에서 {used_attempts} 로는 신분 인증이 안 됩니다. " +"{course_name} 강좌의 {assessment} 평가를 위한 본인 인증을 할 수 없습니다. {allowed_attempts} " +"중에서 {used_attempts} 로는 본인 인증이 안 됩니다. " #: lms/templates/emails/reverification_processed.txt msgid "" @@ -13632,7 +13570,7 @@ msgstr "친애하는 학습자에게," msgid "" "You have been un-enrolled from course {course_name} by a member of the " "course staff. Please disregard the invitation previously sent." -msgstr "강좌 스태프멤버가 당신을 강좌 {course_name}에 등록하였습니다. 전에 발송된 초청장은 무시하세요." +msgstr "강좌 운영팀이 귀하를 {course_name} 강좌에 등록하였습니다. 전에 발송된 초청장은 무시하세요." #: lms/templates/emails/unenroll_email_enrolledmessage.txt msgid "" @@ -13640,12 +13578,12 @@ msgid "" " course staff. The course will no longer appear on your {site_name} " "dashboard." msgstr "" -"강좌 운영팀이 당신을 {site_name}의 {course_name}에 등록취소하였습니다. 강좌가 {site_name} 의 " +"강좌 운영팀이 당신을 {site_name}의 {course_name}에 등록 취소하였습니다. 강좌가 {site_name}의 " "대시보드에 나타나지 않을 것입니다." #: lms/templates/emails/unenroll_email_subject.txt msgid "You have been un-enrolled from {course_name}" -msgstr "당신은 {course_name}에 등록취소되었습니다" +msgstr "{course_name}에 등록 취소되었습니다." #: lms/templates/embargo/default_courseware.html #: lms/templates/embargo/default_enrollment.html @@ -13838,7 +13776,7 @@ msgstr "활성 작업의 상태는 아래 표에 나타납니다." #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Enrollment Information" -msgstr "등록정보" +msgstr "등록 정보" #. Translators: 'track' refers to the enrollment type ('honor', 'verified', or #. 'audit') @@ -13856,15 +13794,19 @@ msgstr "전문" #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Basic Course Information" -msgstr "기본적인 강좌정보" +msgstr "강좌 기본 정보" #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Course Name:" -msgstr "강좌명." +msgstr "기관별 강좌 번호" #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Course Display Name:" -msgstr "강좌 표시 이름:" +msgstr "강좌 이름:" + +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" @@ -13882,6 +13824,10 @@ msgstr "아니요" msgid "Has the course ended?" msgstr "강좌가 끝났습니까?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "평가 컷오프:" @@ -13904,8 +13850,8 @@ msgid "" "exams and problem sets), and can be changed on the 'Grading' page (under " "'Settings') in Studio." msgstr "" -"강좌의 채점 정보를 표시하려면 클릭하세요. 채점 설정은 채점된 소주제(시험과 문제 세트 등)를 나누었으며, 스튜디오의 '채점' ('설정'" -" 메뉴 아래) 페이지에서 바뀔 수 있습니다. " +"강좌의 채점 정보를 표시하려면 클릭하세요. 스튜디오의 '과제 평가' ('설정' 메뉴 아래) 메뉴에서 설정(문제 세트, 평가 등)을 변경할" +" 수 있습니다." #: lms/templates/instructor/instructor_dashboard_2/data_download.html msgid "Grading Configuration" @@ -13974,7 +13920,7 @@ msgstr "" msgid "" "For smaller courses, click to list profile information for enrolled students" " directly on this page:" -msgstr "소규모 강좌를 위해, 여기에서 등록된 학습자의 프로필 리스트를 클릭하세요." +msgstr "소규모 강좌의 경우, 아래 버튼을 클릭하면 등록된 학습자의 프로필 목록을 볼 수 있습니다." #: lms/templates/instructor/instructor_dashboard_2/data_download.html msgid "List enrolled students' profile information" @@ -14024,8 +13970,8 @@ msgid "" "Note: To keep student data secure, you cannot save or email these " "links for direct access. Copies of links expire within 5 minutes." msgstr "" -"주의: 학습자 데이터의 보안을 위해, 바로 접근할 수 있는 링크를 저장하거나 이메일로보낼 수 없습니다. 링크의 복사본은 5분" -" 후 소멸됩니다." +"주의: 학습자 데이터의 보안을 위해, 바로 접근할 수 있는 링크를 저장하거나 이메일로 보낼 수 없습니다. 링크의 복사본은 " +"5분 후 소멸됩니다." #: lms/templates/instructor/instructor_dashboard_2/e-commerce.html msgid "Enrollment Codes" @@ -14723,7 +14669,7 @@ msgstr "" #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Add Admin" -msgstr "운영자 추가" +msgstr "교수자 추가" #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Beta Testers" @@ -14942,13 +14888,14 @@ msgstr "주 1회 이상 이메일 발송은 삼가해 주세요. 이메일 발 msgid "" "Have you read over the email to make sure it says everything you want to " "say?" -msgstr "의도한 전달 내용이 정확히 담겨 있는지 확인했습니까?" +msgstr "의도한 바가 잘 드러나도록 작성했는지 확인하셨나요?" #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "" "Have you sent the email to yourself first to make sure you're happy with how" " it's displayed, and that embedded links and images work properly?" -msgstr "이메일이 잘 작성되었는지 확인하기 위해 나에게만 우선 발송했습니까? 이메일 내용 중 링크와 이미지는 잘 보이나요?" +msgstr "" +"이메일이 잘 작성되었는지 확인하기 위해 우선 나에게만 발송하셨는지요? 이메일 내용 중 링크와 이미지는 잘 보이는지 확인하세요." #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "CAUTION!" @@ -14980,7 +14927,7 @@ msgstr "발송된 이메일 내용을 보기 위해 다음 버튼을 클릭하 #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "Sent Email History" -msgstr "이메일 기록 보내기" +msgstr "이메일 기록 보기" #: lms/templates/instructor/instructor_dashboard_2/send_email.html msgid "To read an email, click its subject." @@ -15010,7 +14957,7 @@ msgstr "금액 설정" #: lms/templates/instructor/instructor_dashboard_2/student_admin.html msgid "Student Gradebook" -msgstr "학습자 성적표" +msgstr "학습자 성적기록부" #: lms/templates/instructor/instructor_dashboard_2/student_admin.html msgid "" @@ -15073,7 +15020,7 @@ msgid "" "problem and student, click on this button:" msgstr "" "재채점은 백그라운드에서 이루어지며, 작업의 상태는 '대기중인 작업' 표에 나타날 것입니다. 문제와 학습자 관련, 모든 제출된 작업의 " -"상태를 보려면 이 버튼을 클릭하세요. " +"상태를 보려면 이 버튼을 클릭하세요. " #: lms/templates/instructor/instructor_dashboard_2/student_admin.html msgid "Show Background Task History for Student" @@ -15137,8 +15084,8 @@ msgid "" "appear in a table on the Course Info tab. To see status for all tasks " "submitted for this problem, click on this button" msgstr "" -"이것은 활성 작업 상태는 강좌 정보탭에서 테이블을 나타내기 위해 백그라운드에서 나타납니다. 문제를 위한 상태와 와 학습자를 보기위해 이 " -"버튼을 클릭합니다 :" +"이 작업은 백그라운드에서 이루어지며, 작업 상태가 공지 사항 탭의 표에 나타날 것입니다. 전체 작업의 상태를 보려면, 이 버튼을 " +"누르세요." #: lms/templates/instructor/instructor_dashboard_2/student_admin.html msgid "Show Background Task History for Problem" @@ -15553,7 +15500,7 @@ msgstr "결제 오류" #: lms/templates/shoppingcart/error.html msgid "There was an error processing your order!" -msgstr "주문을 처리하는데 오류가 있었습니다." +msgstr "주문을 처리하는데 오류가 발생했습니다." #: lms/templates/shoppingcart/receipt.html msgid "Thank you for your purchase!" @@ -15856,9 +15803,7 @@ msgid "" "The page that you were looking for was not found. Go back to the " "{link_start}homepage{link_end} or let us know about any pages that may have " "been moved at {email}." -msgstr "" -"찾으시는 페이지는 찾을 수 없습니다. {link_start}홈 페이지{link_end}로 돌아가거나 이동된 페이지들에 대해서 " -"{email}로 알려 주세요." +msgstr "페이지를 찾을 수 없습니다. {link_start}홈페이지{link_end}로 돌아가거나, {email}로 문의하세요." #: lms/templates/static_templates/about.html #: lms/templates/static_templates/blog.html @@ -15922,13 +15867,13 @@ msgstr "" #: lms/templates/static_templates/server-error.html msgid "There has been a 500 error on the {platform_name} servers" -msgstr "{platform_name} 서버에서 500 오류가 있었습니다." +msgstr "{platform_name} 500 오류" #: lms/templates/static_templates/server-error.html msgid "" "Please wait a few seconds and then reload the page. If the problem persists," " please email us at {email}." -msgstr "몇 초 기다렸다가 페이지를 다시 로드해 보세요. 문제가 지속되면 {email}로 이메일 주세요." +msgstr "잠시 후 다시 시도하세요. 문제가 지속되면 {email}로 연락 바랍니다." #: lms/templates/static_templates/server-overloaded.html msgid "Currently the {platform_name} servers are overloaded" @@ -16053,7 +15998,7 @@ msgstr "당신의 이름을 편집하는 동안 다음 오류가 발생했습니 #: lms/templates/verify_student/incourse_reverify.html msgid "Re-Verify for {course_name}" -msgstr "{course_number} 재인증" +msgstr "{course_name} 재인증" #: lms/templates/verify_student/missed_deadline.html msgid "Verification Deadline Has Passed" @@ -16171,13 +16116,13 @@ msgstr "{studio_name} 서버 오류" #: cms/templates/500.html msgid "The {studio_name} servers encountered an error" -msgstr "{studio_name}서버에서 오류가 발생하였습니다." +msgstr "{studio_name}서버에서 오류가 발생했습니다." #: cms/templates/500.html msgid "" "An error occurred in {studio_name} and the page could not be loaded. Please " "try again in a few moments." -msgstr "{studio_name} 에서 오류가 발생하여 페이지가 로드될 수 없었습니다. 잠시 후에 다시 시도해 보세요." +msgstr "{studio_name} 에서 오류가 발생하여 페이지가 로드될 수 없었습니다. 잠시 후에 다시 시도하세요." #: cms/templates/500.html msgid "" @@ -16278,7 +16223,7 @@ msgid "" "To add files to use in your course, click {em_start}Upload New File{em_end}." " Then follow the prompts to upload a file from your computer." msgstr "" -"강좌에 사용할 파일을 추가하려면 {em_start}새 파일 업로드하기{em_end}를 클릭하세요. 그후 컴퓨터에서 파일을 업로드하세요." +"강좌에 사용할 파일을 추가하려면 {em_start}새 파일 업로드{em_end}를 클릭하세요. 그후 컴퓨터에서 파일을 업로드하세요." #: cms/templates/asset_index.html msgid "" @@ -16304,7 +16249,7 @@ msgid "" "Use the {em_start}{studio_name} URL{em_end} value to link to the file or " "image from a component, a course update, or a course handout." msgstr "" -"강좌에서 사용할 구성요소 및 학습자료의 링크를 {em_start}{studio_name} URL{em_end} 값으로 사용하세요." +"구성요소 및 학습자료의 {em_start}{studio_name} URL{em_end}을 링크하면 강좌에서 활용할 수 있습니다." #: cms/templates/asset_index.html msgid "" @@ -16312,7 +16257,7 @@ msgid "" "from outside of your course. {em_start}Note:{em_end} If you lock a file, the" " Web URL no longer works for external access to a file." msgstr "" -"외부에서 파일이나 이미지를 가져올 경우 {em_start}웹 URL 값{em_end}을 사용합니다. " +"외부에서 파일이나 이미지를 가져올 경우 {em_start}웹 URL 값{em_end}을 사용하세요. " "{em_start}주의:{em_end} 파일 사용을 제한하면, 웹 URL이 있어도 파일에 접근할 수 없습니다." #: cms/templates/asset_index.html @@ -16323,7 +16268,7 @@ msgstr "URL을 복사하려면 URL 값을 더블 클릭 후, 블록 처리된 #: cms/templates/asset_index.html msgid "Learn more about managing files" -msgstr "파일을 관리하는 방법에 대해 자세히 알아보기" +msgstr "파일 관리 방법에 대해 자세히 알아보기" #: cms/templates/asset_index.html msgid "Max per-file size: {max_filesize}MB" @@ -16355,7 +16300,7 @@ msgid "" " acknowledge their accomplishment. If you are a course team member with the " "Admin role in Studio, you can configure your course certificate." msgstr "" -"강좌 수료 직후, 학습자는 성과를 인정받을 수 있는 수료증을 받을 수 있습니다. 강좌 운영팀 중 관리자가 수료증을 설정할 수 있습니다." +"강좌 수료 직후, 학습자는 성과를 인정받을 수 있는 수료증을 받을 수 있습니다. 강좌 운영팀 중 교수자가 수료증을 설정할 수 있습니다." " " #: cms/templates/certificates.html @@ -16455,13 +16400,13 @@ msgstr "강좌 준비 점검은?" msgid "" "Course checklists are tools to help you understand and keep track of all the" " steps necessary to get your course ready for students." -msgstr "강좌 준비 점검은 개강 전 필요한 모든 단계를 살피면서 개강 준비를 완료하도록 합니다." +msgstr "강좌 준비 점검은 개강 전 필요한 모든 단계를 살피면서 개강 준비를 완료하도록 도와줍니다." #: cms/templates/checklists.html msgid "" "Any changes you make to these checklists are saved automatically and are " "immediately visible to other course team members." -msgstr "해당 체크 리스트에 변경 사항이 생길 때마다 자동으로 저장되고, 다른 강좌 운영팀 구성원도 이를 바로 볼 수 있습니다." +msgstr "변경 사항이 생길 때마다 자동으로 저장되고, 다른 강좌 운영팀 구성원도 이를 바로 볼 수 있습니다." #: cms/templates/checklists.html msgid "{studio_name} checklists" @@ -16490,7 +16435,7 @@ msgstr "LMS에서 강좌내용 열기 " #: cms/templates/container.html msgid "View Live Version" -msgstr "실시간 보기" +msgstr "적용 결과 보기" #: cms/templates/container.html msgid "Preview the courseware in the LMS" @@ -16588,7 +16533,7 @@ msgstr "강좌 재운영을 위한 식별 정보를 제공합니다. 원래 강 msgid "" "Note: Together, the organization, course number, and course run must " "uniquely identify this new course instance." -msgstr "기관과 강좌 번호, 강좌 운영은 고유해야 합니다." +msgstr "기관과 강좌 번호, 기관별 강좌 번호는 고유해야 합니다." #: cms/templates/course-create-rerun.html msgid "Required Information to Create a re-run of a course" @@ -16643,7 +16588,7 @@ msgstr "기관 안에서 새로운 강의를 식별하는 고유 번호입니다 #: cms/templates/course-create-rerun.html cms/templates/index.html #: cms/templates/settings.html msgid "Course Run" -msgstr "강좌 운영 번호" +msgstr "기관별 강좌 번호" #. Translators: This is an example for the "run" used to identify different #. instances of a course, seen when filling out the form to create a new @@ -16728,8 +16673,8 @@ msgid "" "the course team; review course updates and other assets for dated material; " "and seed the discussions and wiki." msgstr "" -"현재 강좌 콘텐츠를 볼 수 없으며, 수강신청한 학습자가 없습니다. 이 경우, 다음과 같은 조치를 시도해보세요. 강좌 시작일을 포함해 모든" -" 날짜 확인 및 재설정, 강좌 운영팀 설정, 강좌 업데이트 및 다른 자료 검토, 게시판과 위키 업데이트를 할 수 있습니다. " +"현재 강좌 콘텐츠를 볼 수 없으며, 수강신청한 학습자가 없습니다. 이 경우, 다음과 같은 조치를 시도해보세요. 개강일을 포함해 모든 날짜" +" 확인 및 재설정, 강좌 운영팀 설정, 강좌 업데이트 및 다른 자료 검토, 게시판과 위키 업데이트를 할 수 있습니다. " #: cms/templates/course_outline.html cms/templates/index.html msgid "Dismiss" @@ -16800,11 +16745,7 @@ msgstr "새 탭에서 학습자가 보는 화면을 보려면 클릭하세요." #: cms/templates/course_outline.html cms/templates/edit-tabs.html #: cms/templates/index.html msgid "View Live" -msgstr "미리 보기" - -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "강좌 시작 날짜:" +msgstr "적용 결과 보기" #: cms/templates/course_outline.html msgid "Edit Start Date" @@ -16822,7 +16763,7 @@ msgstr "주제, 소주제, 학습활동을 추가하세요." msgid "" "Create a section, then add subsections and units. Open a unit to add course " "components." -msgstr "먼저 주제를 만들고, 소주제와 학습 활동을 추가하시면 됩니다. 학습활동에 구성요소를 넣어보세요." +msgstr "먼저 주제를 만들고, 소주제와 학습활동을 추가하시면 됩니다. 학습활동에 구성요소를 넣어보세요." #: cms/templates/course_outline.html msgid "Reorganizing your course" @@ -16830,11 +16771,11 @@ msgstr "강좌 다시 구성하기" #: cms/templates/course_outline.html msgid "Drag sections, subsections, and units to new locations in the outline." -msgstr "주제, 소주제 및 학습활동을 새 위치로 마우스로 끌고 오세요." +msgstr "주제, 소주제 및 학습활동을 드래그 아이콘을 클릭한 채로 새 위치로 드래그 하세요." #: cms/templates/course_outline.html msgid "Setting release dates and grading policies" -msgstr "공개일과 채점 규정 설정하기" +msgstr "공개일과 성적 규정 설정하기" #: cms/templates/course_outline.html msgid "" @@ -16842,11 +16783,12 @@ msgid "" "date. When you configure a subsection, you can also set the grading policy " "and due date." msgstr "" -"공개일 설정은 주제 또는 소주제의 '설정' 아이콘을 클릭하시면 됩니다. 소주제를 설정할 때, 채점 규정과 마감일도 설정할 수 있습니다." +"공개일을 설정하려면, 주제 또는 소주제의 '설정' 아이콘을 클릭하면 됩니다. 소주제를 설정할 때, 성적 규정과 마감일도 설정할 수 " +"있습니다." #: cms/templates/course_outline.html msgid "Changing the content students see" -msgstr "콘텐츠 보이게 하거나 숨기기" +msgstr "콘텐츠 공개 설정" #: cms/templates/course_outline.html msgid "" @@ -16858,11 +16800,12 @@ msgstr "콘텐츠를 게시하려면, 주제, 소주제, 학습활동에서 '게 msgid "" "To hide content from students, select the Configure icon for a section, " "subsection, or unit, then select {em_start}Hide from students{em_end}." -msgstr "학습자에게 콘텐츠를 보이지 않게 하려면, {em_start}학습자에게 보이지 않게 하기{em_end}를 선택하세요." +msgstr "" +"학습자에게 콘텐츠를 보이지 않게 하려면, 주제 및 소주제의 설정에서 {em_start}학습자에게 감추기기{em_end}를 선택하세요." #: cms/templates/course_outline.html msgid "Learn more about the course outline" -msgstr "강좌 개요에 대해서 더 자세히 알아보기" +msgstr "강좌 개요에 대해 더 자세히 알아보기" #. Translators: Pages refer to the tabs that appear in the top navigation of #. each course. @@ -16873,7 +16816,7 @@ msgstr "강좌 메뉴" #: cms/templates/edit-tabs.html msgid "New Page" -msgstr "신규 페이지" +msgstr "신규 메뉴" #: cms/templates/edit-tabs.html msgid "" @@ -16896,15 +16839,15 @@ msgstr "이페이지는 저장될수 없습니다." #: cms/templates/edit-tabs.html msgid "You can add additional custom pages to your course." -msgstr " 강좌에 사용자 정의 페이지를 추가할 수 있습니다." +msgstr " 강좌에 사용자 정의 메뉴를 추가할 수 있습니다." #: cms/templates/edit-tabs.html msgid "Add a New Page" -msgstr " 신규 페이지 추가" +msgstr " 신규 메뉴 추가" #: cms/templates/edit-tabs.html msgid "What are pages?" -msgstr " 페이지란?" +msgstr "메뉴란?" #: cms/templates/edit-tabs.html msgid "" @@ -16912,12 +16855,12 @@ msgid "" "(Courseware, Course info, Discussion, Wiki, and Progress) are followed by " "textbooks and custom pages that you create." msgstr "" -"페이지가 강좌의 상단에 수평으로 정렬됩니다. 기본 페이지들(강좌 내용, 강좌 정보, 게시판, 위키, 진도) 다음에 귀하가 생성하는 교재 " -"및 사용자 정의 페이지가 뒤 따르게 될 것입니다." +"메뉴는 강좌의 상단에 수평으로 정렬됩니다. 기본 메뉴들(강좌 내용, 강좌 정보, 게시판, 위키, 진도) 다음에, 귀하가 추가할 경우 교재" +" 및 사용자 정의 페이지가 뒤 따르게 될 것입니다." #: cms/templates/edit-tabs.html msgid "Custom pages" -msgstr "사용자 정의 페이지란?" +msgstr "사용자 정의 메뉴란?" #: cms/templates/edit-tabs.html msgid "" @@ -16925,8 +16868,8 @@ msgid "" "course content. For example, you can create pages for the grading policy, " "course slides, and a course calendar. " msgstr "" -"귀하는 강좌 콘텐츠를 제공할 사용자 정의 페이지를 생성하고 편집할 수 있습니다. 예를 들어, 채점 규정, 강좌 슬라이드, 강좌 일정 등의" -" 페이지를 만들 수 있습니다. " +"강좌 콘텐츠를 제공할 사용자 정의 메뉴를 생성하고 편집할 수 있습니다. 예를 들어, 성적 규정, 강좌 슬라이드, 강좌 일정 등의 메뉴를 " +"만들 수 있습니다. " #: cms/templates/edit-tabs.html msgid "How do pages look to students in my course?" @@ -16983,13 +16926,12 @@ msgid "" " still having problems accessing things, please feel free to " "{link_start}contact {studio_name} support{link_end} for further help." msgstr "" -"죄송합니다. 당신이 찾고자 하는 {studio_name} 페이지를 우리가 찾을 수 없습니다. {studio_name} 대시보드로 " -"돌아가서 다시 시도해 보십시요. 아직 접속하는데 문제가 있다면 추가 도움을 위해 {link_start}{studio_name} 지원 " -"연락처{link_end} 로 연락주십시요." +"죄송합니다. {studio_name}페이지를 찾을 수 없습니다. {studio_name}대시보드로 돌아가서 다시 시도하세요. 도움이 " +"필요하시면 {link_start}{studio_name}지원 연락처{link_end}로 연락하세요." #: cms/templates/error.html msgid "The Server Encountered an Error" -msgstr "서버에 오류가 발생하였습니다" +msgstr "오류가 발생했습니다." #: cms/templates/error.html msgid "" @@ -17000,7 +16942,7 @@ msgid "" "further help." msgstr "" "죄송합니다. 요청을 처리하는 동안 서버에 문제가 발생했습니다. {studio_name} 대시보드로 돌아가거나 다시 요청을 시도 할 수 " -"있습니다. 문제가 계속 발생하면, {link_start}{studio_name} 지원 연락처 {link_end}로 연락 주세요!" +"있습니다. 문제가 계속 발생하면, {link_start}{studio_name} 지원 연락처 {link_end}로 연락하세요." #: cms/templates/error.html msgid "Back to dashboard" @@ -17074,7 +17016,7 @@ msgstr "강좌 콘텐츠 내보내기" #: cms/templates/export.html msgid "Data {em_start}exported with{em_end} your course:" -msgstr "강좌의 {em_start}내보내기{em_end}된 데이터" +msgstr " {em_start}내보내기{em_end} 가능 데이터" #: cms/templates/export.html msgid "" @@ -17103,7 +17045,7 @@ msgstr "강좌 설정" #: cms/templates/export.html msgid "Data {em_start}not exported{em_end} with your course:" -msgstr "{em_start} export {em_end}되지 않는 데이터" +msgstr "{em_start} 내보내기{em_end} 불가 데이터" #: cms/templates/export.html msgid "User Data" @@ -17133,7 +17075,7 @@ msgstr "" #: cms/templates/export.html msgid "Opening the downloaded file" -msgstr "다운로드파일 여는중" +msgstr "다운로드된 파일 열기" #. Translators: ".tar.gz" is a file extension, and should not be translated #: cms/templates/export.html @@ -17165,7 +17107,7 @@ msgstr "" #: cms/templates/export.html msgid "What content is exported?" -msgstr "어떤 content가 내보내지는가?" +msgstr "어떤 콘텐츠가 내보내지는가?" #: cms/templates/export.html msgid "" @@ -17175,8 +17117,8 @@ msgid "" "data, grading information, discussion forum data, course settings, and " "course team information, is not exported." msgstr "" -"강좌 콘텐츠와 구조 (주제, 소주제, 학습활동 포함)가 내보내기 되었습니다. MATLAB API 키와 LTI Passport 포함 고급 " -"설정 값 또한 내보내집니다. 학습자 데이터, 채점 정보, 게시판 데이터 등의 다른 자료들은 내보내기 되지 않습니다. " +"강좌 콘텐츠와 구조 (주제, 소주제, 학습활동 포함)가 내보내기 됩니다. MATLAB API 키와 LTI Passport 포함 고급 설정" +" 값 또한 내보내집니다. 학습자 데이터, 채점 정보, 게시판 데이터 등의 다른 자료들은 내보내기 되지 않습니다. " #. Translators: ".tar.gz" is a file extension, and should not be translated #: cms/templates/export.html @@ -17260,9 +17202,7 @@ msgid "" "If you have cohorts enabled in your course, you can use content groups to " "create cohort-specific courseware. In other words, you can customize the " "content that particular cohorts see in your course." -msgstr "" -"귀하의 강좌에서 학습 집단을 활성화하면, 콘텐츠 그룹을 학습 집단별 강좌에 사용할 수 있습니다. 즉, 특정 학습 집단이 볼 수 있는 " -"콘텐츠로 맞춤 설정할 수 있는 것입니다. " +msgstr "귀하의 강좌에서 학습 집단을 활성화하면, 특정 학습 집단이 볼 수 있는 콘텐츠를 맞춤 설정할 수 있습니다." #: cms/templates/group_configurations.html msgid "" @@ -17272,8 +17212,8 @@ msgid "" "Only learners in the cohorts that are associated with the specified content " "groups see the additional content." msgstr "" -"각 콘텐츠 그룹은 1개 이상의 학습 집단과 관련지을 수 있습니다. 전체 학습자를 위한 강좌 콘텐츠 외에도, 지정한 콘텐츠 그룹에게만 해당" -" 콘텐츠를 볼 수 있게 할 수 있습니다. 지정 콘텐츠 그룹과 관련 있는 학습 집단의 학습자만 추가 콘텐츠를 볼 수 있습니다. " +"각 콘텐츠 그룹은 1개 이상의 학습 집단과 연결할 수 있습니다. 전체 학습자를 위한 강좌 콘텐츠 외에도, 지정한 콘텐츠 그룹만 특정 " +"콘텐츠를 볼 수 있도록 할 수 있습니다. " #: cms/templates/group_configurations.html msgid "" @@ -17283,9 +17223,9 @@ msgid "" "use by a unit. To delete a content group, hover over its box and click the " "delete icon." msgstr "" -"새 콘텐츠 그룹을 추가하려면 {em_start}새 콘텐츠 그룹{em_end}을 클릭합니다. 콘텐츠 그룹의 이름을 변경하려면, 박스 상단의" -" {em_start}수정{em_end}을 클릭하세요. 학습 활동에서 활용하지 않는다면 콘텐츠 그룹을 삭제할 수 있습니다. 삭제는 박스 " -"상단의 삭제 아이콘을 클릭하면 됩니다." +"신규 콘텐츠 그룹을 추가하려면 {em_start}첫 번째 콘텐츠 그룹을 추가하세요{em_end}를 클릭합니다. 콘텐츠 그룹의 이름을 " +"변경하려면, 박스 상단의 {em_start}편집{em_end}을 클릭하세요. 추후 학습 활동에서 활용하지 않는다면 콘텐츠 그룹을 삭제할 " +"수 있습니다. 삭제는 박스 상단의 삭제 아이콘을 클릭하면 됩니다." #: cms/templates/group_configurations.html msgid "Learn More" @@ -17338,7 +17278,7 @@ msgstr "{studio_name}는 강좌가 잘 구성되도록 도와줍니다." #: cms/templates/howitworks.html msgid "Keeping Your Course Organized" -msgstr "자유롭게 강좌를 구성하실 수 있습니다." +msgstr "자유롭게 강좌를 구성할 수 있습니다." #: cms/templates/howitworks.html msgid "" @@ -17483,7 +17423,7 @@ msgstr "로그인 & {platform_name} 강좌 만들기 시작" #: cms/templates/howitworks.html msgid "Already have a {studio_name} Account? Sign In" -msgstr "{studio_name}계정이 있나요? 로그인 하세요." +msgstr "{studio_name}계정이 있으신가요? " #: cms/templates/howitworks.html msgid "Outlining Your Course" @@ -17895,11 +17835,11 @@ msgstr "강의가 처리중입니다." #: cms/templates/index.html msgid "Course Run:" -msgstr "강좌 운영 번호:" +msgstr "기관별 강좌 번호" #: cms/templates/index.html msgid "This course run is currently being created." -msgstr "course run 이 만들어지고 있습니다." +msgstr "기관별 강좌 번호가 만들어지고 있습니다." #. Translators: This is a status message, used to inform the user of what the #. system is doing. This status means that the user has requested to re-run an @@ -17937,7 +17877,7 @@ msgstr "강의 다시 시작하기" #: cms/templates/index.html msgid "Are you staff on an existing {studio_name} course?" -msgstr "{studio_name} 강의 스태프입니까?" +msgstr "{studio_name} 관리자입니까?" #: cms/templates/index.html msgid "" @@ -18058,8 +17998,8 @@ msgid "" " of the page to access our continually updated documentation and other " "{studio_name} resources." msgstr "" -" {studio_name}에 대해 더 알고 싶으시면 오른쪽 상단의 도움말을 클릭하세요. 페이지 하단의 링크를 통해, 계속 업데이트 되고 " -"있는 도움말과 다른 {studio_name} 자료들도 이용하실 수 있습니다." +" {studio_name}에 대해 더 알고 싶으시면 화면 오른쪽 상단이나 아래의 도움말을 클릭하세요. 하단의 링크를 통해 다른 " +"{studio_name} 자료들도 이용하실 수 있습니다." #: cms/templates/index.html msgid "Getting Started with {studio_name}" @@ -18075,38 +18015,38 @@ msgstr "{studio_name}에 대한 도움 요청" #: cms/templates/index.html msgid "Can I create courses in {studio_name}?" -msgstr "{studio_name}에서 강좌를 생성할 수 있을까요?" +msgstr "{studio_name}에서 강좌를 개설할 수 있나요?" #: cms/templates/index.html msgid "" "In order to create courses in {studio_name}, you must {link_start}contact " "{platform_name} staff to help you create a course{link_end}." msgstr "" -"{studio_name}에 강의를 만들기 위해서, {link_start}강의를 만들때 도움이 필요하다면{platform_name} " +"{studio_name}에 강좌를 개설하기 위해서, {link_start}강의를 만들때 도움이 필요하다면{platform_name} " "스태프에게 연락하세요{link_end}." #: cms/templates/index.html msgid "" "In order to create courses in {studio_name}, you must have course creator " "privileges to create your own course." -msgstr "{studio_name},에서 강좌를 만들기 위해서 강의 생성자 권한을 가져야 합니다." +msgstr "{studio_name},에서 강좌를 개설하기 위해서 강좌 개설자 권한을 가져야 합니다." #: cms/templates/index.html msgid "" "Your request to author courses in {studio_name} has been denied. Please " "{link_start}contact {platform_name} Staff with further questions{link_end}." msgstr "" -" {studio_name}에서 강의만들기 요청이 거절되었습니다. {link_start}더 질문이 있다면 {platform_name} " -"스태프에게 연락하세요{link_end}." +" {studio_name}에서 강좌 개설 요청이 거절되었습니다. {link_start} 문의 사항이 있으시면 " +"{platform_name} 관리자에게 연락하세요{link_end}." #: cms/templates/index.html #, python-format msgid "Thanks for signing up, %(name)s!" -msgstr "%(name)s 님, 등록해 주셔서 감사합니다." +msgstr "%(name)s님, 환영합니다!" #: cms/templates/index.html msgid "We need to verify your email address" -msgstr "이메일 주소를 검토할 필요가 있습니다." +msgstr "이메일 확인이 필요합니다." #: cms/templates/index.html #, python-format @@ -18115,8 +18055,7 @@ msgid "" "email address (%(email)s). An activation message and next steps should be " "waiting for you there." msgstr "" -"거의 다 되었습니다! 등록을 완료하기 위해서는 이메일 주소(%(email)s)가 맞는지 확인해야 합니다. 활성화 메시지 및 다음 단계가" -" 당신을 기다리고 있을 것입니다." +"등록 절차를 완료하려면 이메일 주소(%(email)s)를 인증받아야 합니다. 입력한 이메일 주소로 발송된 등록 이메일을 확인해주세요." #: cms/templates/index.html msgid "Need help?" @@ -18128,8 +18067,7 @@ msgid "" "INBOX. Still can't find the verification email? Request help via the link " "below." msgstr "" -"이메일이 받은 편지함에 없는 경우에는 정크 또는 스팸 메일 폴더를 확인하시기 바랍니다. 아직 확인 이메일을 찾을 수 없습니까? 아래의 " -"링크를 통해 도움을 요청하십시요." +"이메일을 받지 못한 경우에는 스팸 메일함을 확인하시기 바랍니다. 그래도 인증 메일을 확인할 수 없다면 아래 링크를 통해 도움을 받으세요." #: cms/templates/index.html msgid "Request help with your {studio_name} account" @@ -18151,7 +18089,7 @@ msgstr "콘텐츠 추가하기" msgid "" "Add components to your library for use in courses, using Add New Component " "at the bottom of this page." -msgstr "강좌에서 사용하기 위해 귀하의 콘텐츠 보관함에 구성요소를 추가합니다. 페이지 하단의 '새 구성요소 추가하기'를 클릭하세요." +msgstr "강좌에서 사용하기 위해 귀하의 콘텐츠 보관함에 구성요소를 추가합니다. 상단의 새 구성요소 추가하기'를 클릭하세요." #: cms/templates/library.html msgid "" @@ -18218,19 +18156,19 @@ msgstr "강좌 팀 설정" #: cms/templates/manage_users.html cms/templates/manage_users_lib.html msgid "New Team Member" -msgstr "신규 팀원 추가" +msgstr "신규 구성원 추가" #: cms/templates/manage_users.html msgid "Add a User to Your Course's Team" -msgstr "강좌 운영팀에 사용자 추가하기" +msgstr "강좌 운영팀 구성원 추가하기" #: cms/templates/manage_users.html cms/templates/manage_users_lib.html msgid "New Team Member Information" -msgstr "신규 팀원 정보" +msgstr "신규 구성원 정보" #: cms/templates/manage_users.html cms/templates/manage_users_lib.html msgid "User's Email Address" -msgstr "사용자의 이메일 주소" +msgstr "새로 추가할 구성원 이메일 주소" #: cms/templates/manage_users.html msgid "Provide the email address of the user you want to add as Staff" @@ -18238,7 +18176,7 @@ msgstr "관리자로 추가하고 싶은 이용자의 이메일 주소를 제공 #: cms/templates/manage_users.html cms/templates/manage_users_lib.html msgid "Add User" -msgstr "사용자 추가" +msgstr "구성원 추가" #: cms/templates/manage_users.html msgid "Add Team Members to This Course" @@ -18248,11 +18186,11 @@ msgstr "운영 팀원 추가" msgid "" "Adding team members makes course authoring collaborative. Users must be " "signed up for {studio_name} and have an active account." -msgstr "팀원을 추가해서 강좌 제작을 협업할 수 있습니다. 사용자는 {studio_name}에 등록되어 있고 계정이 있어야 합니다." +msgstr "운영팀 구성원을 추가해서 강좌 제작을 함께할 수 있습니다. {studio_name}에 등록되어 있고 계정이 있어야 합니다." #: cms/templates/manage_users.html msgid "Add a New Team Member" -msgstr "신규 팀원 추가" +msgstr "신규 구성원 추가" #: cms/templates/manage_users.html msgid "Course Team Roles" @@ -18268,7 +18206,7 @@ msgstr "관리자와 함께 강좌 운영팀 구성원들이 강좌의 공동 msgid "" "Admins are course team members who can add and remove other course team " "members." -msgstr "관리자는 강좌 운영팀의 다른 구성원을 추가하거나 삭제할 수 있습니다." +msgstr "교수자는 강좌 운영팀의 다른 구성원을 추가하거나 삭제할 수 있습니다." #: cms/templates/manage_users.html msgid "" @@ -18329,7 +18267,7 @@ msgstr "콘텐츠 보관함 접근 역할" #: cms/templates/manage_users_lib.html msgid "There are three access roles for libraries: User, Staff, and Admin." -msgstr "콘텐츠 보관함에 이용자, 운영팀, 관리자가 접근할 수 있습니다." +msgstr "콘텐츠 보관함에 이용자, 운영팀, 교수자가 접근할 수 있습니다." #: cms/templates/manage_users_lib.html msgid "" @@ -18337,7 +18275,7 @@ msgid "" "components in their courses, but they cannot edit the contents of a library." msgstr "" "콘텐츠 보관함 사용자는 콘텐츠를 볼 수 있고 참조할 수 있으며, 구성요소를 자신의 강좌에서 사용할 수도 있습니다. 하지만 콘텐츠를 수정할" -" 수는 없습니다. " +" 수는 없습니다. " #: cms/templates/manage_users_lib.html msgid "" @@ -18351,8 +18289,8 @@ msgid "" "other team members. There must be at least one user with the Admin role in a" " library." msgstr "" -"콘텐츠 보관함 관리자는 전체 수정 권한을 가지며 다른 강좌 운영팀 구성원을 추가하고 삭제할 수 있습니다. 이를 위해 보관함에 관리자가 " -"최소 1명 이상 있어야 합니다. " +"교수자는 콘텐츠 보관함의 전체 수정 권한을 가지며, 다른 강좌 운영팀 구성원을 추가하고 삭제할 수 있습니다. 이를 위해 보관함에 교수자가" +" 최소 1명 이상 있어야 합니다. " #: cms/templates/register.html cms/templates/widgets/header.html msgid "Sign Up" @@ -18364,7 +18302,7 @@ msgstr "{studio_name} 가입" #: cms/templates/register.html msgid "Already have a {studio_name} Account? Sign in" -msgstr "{studio_name}계정이 있나요? 로그인 하세요." +msgstr "{studio_name}계정이 있으신가요?" #: cms/templates/register.html msgid "" @@ -18380,7 +18318,7 @@ msgstr "{studio_name}에 로그인하기 위한 필요 정보" msgid "" "This will be used in public discussions with your courses and in our edX101 " "support forums" -msgstr "이것은 내 강좌들의 공개된 토론과 edX101 지원 포럼에서 사용될 것입니다" +msgstr "edX101 지원 게시판이나, 강좌 게시판 등에서 나를 나타내는 아이디입니다." #: cms/templates/register.html msgid "Your Location" @@ -18409,8 +18347,8 @@ msgid "" "members, teaching assistants and course staff, and members of instructional " "technology groups." msgstr "" -"{studio_name}는 {platform_name} 플랫폼을 활용하여 온라인 교육 과정을 만들고자 하는 사람들을 위한 것입니다. " -"교수자, 조교, 강좌 운영팀 등이 사용하실 수 있습니다." +"{studio_name}는 {platform_name} 플랫폼을 활용하여 온라인 강좌를 만들고자 하는 사람들을 위한 것입니다. 교수자, " +"조교, 강좌 운영팀 등이 사용하실 수 있습니다." #: cms/templates/register.html msgid "" @@ -18605,7 +18543,7 @@ msgstr "강좌 세부정보" #: cms/templates/settings.html msgid "Provide useful information about your course" -msgstr "강좌에 대한 유용한 정보를 제공하세요." +msgstr "강좌 관련 세부 정보" #: cms/templates/settings.html msgid "" @@ -18643,40 +18581,41 @@ msgstr "강좌 요약" #, python-format msgid "" "Introductions, prerequisites, FAQs that are used on %s (formatted in HTML)" -msgstr "소개, 선수조건, %s 에서 사용된 자주하는질문들(HTML 형식)" +msgstr "%s 에 들어가게 될 내용으로 강좌 소개, 선수 과목, 자주 하는 질문 등의 내용을 입력하면 됩니다.(HTML 형식)" #: cms/templates/settings.html msgid "Course Image" -msgstr "강좌 이미지" +msgstr "강좌 대표 이미지" #: cms/templates/settings.html msgid "" "You can manage this image along with all of your other files " "& uploads" -msgstr "다른 것들 files & uploads과 함께 이 이미지를 관리할 수 있습니다" +msgstr "파일 업로드에서 이 이미지를 변경할 수 있습니다" #: cms/templates/settings.html msgid "" "Your course currently does not have an image. Please upload one (JPEG or PNG" " format, and minimum suggested dimensions are 375px wide by 200px tall)" msgstr "" -"강좌에 이미지가 없습니다. 이미지를 업로드 하십시요 (JPEG 혹은 PNG 형식, 최소 추천 크기 :가로 375px 세로 200px)" +"강좌 대표 이미지가 없습니다. 이미지를 업로드하세요 (JPEG 혹은 PNG 형식, 최소 이미지 크기: 가로 375px, 세로 " +"200px)" #. Translators: This is the placeholder text for a field that requests the URL #. for a course image #: cms/templates/settings.html msgid "Your course image URL" -msgstr "강좌 이미지 URL" +msgstr "강좌 대표 이미지 URL" #: cms/templates/settings.html msgid "" "Please provide a valid path and name to your course image (Note: only JPEG " "or PNG format supported)" -msgstr "강좌 이미지에 대한 유효한 경로와 이름을 입력하세요 ( JPEG 혹은 PNG 형식만 지원됨)" +msgstr "강좌 대표 이미지에 대한 유효한 경로와 이름을 입력하세요. ( JPEG 혹은 PNG 형식만 지원)" #: cms/templates/settings.html msgid "Upload Course Image" -msgstr "강좌 이미지 업로드" +msgstr "강좌 대표 이미지 업로드" #: cms/templates/settings.html msgid "Course Introduction Video" @@ -18698,15 +18637,15 @@ msgstr "Youtube 영상의 ID를 입력하세요. (URL의 뒷 부분 코드)" #: cms/templates/settings.html msgid "Expectations of the students taking this course" -msgstr "본 강좌를 수강하는 학습자에게 요구하는 사항" +msgstr "효과적인 학습을 위해 학습 시간 및 선수 강좌를 입력합니다." #: cms/templates/settings.html msgid "Hours of Effort per Week" -msgstr "주당 학습 시간" +msgstr "주당 학습 권장 시간" #: cms/templates/settings.html msgid "Time spent on all course work" -msgstr "학습자가 강좌에 들이는 총 시간" +msgstr "주당 학습에 투자하길 권장하는 시간" #: cms/templates/settings.html msgid "Prerequisite Course" @@ -18714,7 +18653,7 @@ msgstr "선수 강좌" #: cms/templates/settings.html msgid "Course that students must complete before beginning this course" -msgstr "본 강좌를 수강하기 전에 반드시 들어야 하는 과정" +msgstr "본 강좌를 수강하기 전에 반드시 들어야 하는 강좌" #: cms/templates/settings.html msgid "set pre-requisite course" @@ -18775,16 +18714,16 @@ msgid "" "video, and estimated time requirements. Students use About pages to choose " "new courses to take." msgstr "" -"'강좌 소개'에 강좌 개관, 강좌 이미지, 소개 영상, 예상 소요 시간이 안내될 것입니다. 이를 통해 학습자가 수강을 결정할 수 있도록 " -"합니다." +"'강좌 소개'에 강좌 개관, 강좌 대표 이미지, 소개 영상, 예상 소요 시간이 안내될 것입니다. 이를 통해 학습자가 수강을 결정할 수 " +"있도록 합니다." #: cms/templates/settings_advanced.html msgid "Your policy changes have been saved." -msgstr "정책 변경사항이 저장되었습니다." +msgstr "변경사항이 저장되었습니다." #: cms/templates/settings_advanced.html msgid "There was an error saving your information. Please see below." -msgstr "정보를 저장하는데 오류가 있었습니다. 아래를 보십시요." +msgstr "정보 저장 중 오류가 발생했습니다. 아래를 참고하세요." #: cms/templates/settings_advanced.html msgid "Manual Policy Definition" @@ -18794,7 +18733,7 @@ msgstr "직접 설정하기" msgid "" "Warning: Do not modify these policies unless you are " "familiar with their purpose." -msgstr "주의: 아래의 설정에 대해 정확히 모르시면 수정하지마시길 권해드립니다." +msgstr "주의: 꼭 필요한 경우가 아니라면, 수정하지 않으시는 것이 좋습니다." #: cms/templates/settings_advanced.html msgid "Show Deprecated Settings" @@ -18858,7 +18797,7 @@ msgstr "통과 기준 점수 이상을 받아야 합니다." #: cms/templates/settings_graders.html msgid "Grading Rules & Policies" -msgstr "채점 규정" +msgstr "성적 규정" #: cms/templates/settings_graders.html msgid "Deadlines, requirements, and logistics around grading student work" @@ -18866,11 +18805,11 @@ msgstr "채점에 관한 마감일, 요구사항, 세부 절차 " #: cms/templates/settings_graders.html msgid "Grace Period on Deadline:" -msgstr "마감 유예 시간" +msgstr "추가 제출 기간" #: cms/templates/settings_graders.html msgid "Leeway on due dates" -msgstr "마감일에 대한 여지" +msgstr "마감일이 지난 이후에, 학습자가 제출할 수 있는 기간을 의미합니다." #: cms/templates/settings_graders.html msgid "Assignment Types" @@ -18878,7 +18817,7 @@ msgstr "과제명" #: cms/templates/settings_graders.html msgid "Categories and labels for any exercises that are gradable" -msgstr "채점이 가능한 모든 연습문제에 대한 범주와 라벨" +msgstr "성적 산출을 위한 항목별 세부 정보" #: cms/templates/settings_graders.html msgid "New Assignment Type" @@ -18893,7 +18832,7 @@ msgid "" "You can use the slider under Overall Grade Range to specify whether your " "course is pass/fail or graded by letter, and to establish the thresholds for" " each grade." -msgstr "강좌의 통과 또는 과락 여부를 지정할 '전반적 성적 범위' 아래의 슬라이더를 활용할 수 있습니다. " +msgstr "왼쪽의 슬라이더를 움직여서 강좌의 통과 또는 과락 범위를 지정하세요." #: cms/templates/settings_graders.html msgid "" @@ -18906,7 +18845,7 @@ msgid "" "You can also create assignment types, such as homework, labs, quizzes, and " "exams, and specify how much of a student's grade each assignment type is " "worth." -msgstr "그리고 숙제, 실험, 퀴즈, 시험 등을 만들 수 있고, 각 항목의 성적 가중치를 정할 수 있습니다." +msgstr "그리고 숙제, 실험, 퀴즈, 시험 등으로 과제 유형을 분류할 수 있고, 각 항목의 성적 가중치를 정할 수 있습니다." #: cms/templates/studio_xblock_wrapper.html msgid "Expand or Collapse" @@ -18914,11 +18853,11 @@ msgstr "확장/붕괴" #: cms/templates/studio_xblock_wrapper.html msgid "Visibility Settings" -msgstr "보이기 설정" +msgstr "공개 설정" #: cms/templates/studio_xblock_wrapper.html msgid "Visibility" -msgstr "보이기" +msgstr "공개 설정 " #: cms/templates/studio_xblock_wrapper.html msgid "This block contains multiple components." @@ -19048,8 +18987,8 @@ msgid "" "course content. Create one or more content groups, and make specific " "components visible to them." msgstr "" -"학습자 집단이 특정 콘텐츠에 접근할 수 있도록 콘텐츠 그룹을 사용합니다. 1개 이상의 콘텐츠 그룹을 만들고, 특정 구성요소를 해당 그룹의" -" 학습자들이 볼 수 있도록 하세요." +"학습 집단이 특정 콘텐츠에 접근할 수 있도록 콘텐츠 그룹을 사용합니다. 1개 이상의 콘텐츠 그룹을 만들고, 특정 구성요소를 해당 집단의 " +"학습자들이 볼 수 있도록 하세요." #: cms/templates/visibility_editor.html msgid "Manage content groups" @@ -19063,8 +19002,8 @@ msgid "" "contained in is hidden from students. Visibility settings here will be " "trumped by this." msgstr "" -"{screen_reader_start} 경고: {screen_reader_end} 구성요소가 포함된 학습활동이 학습자에게 가려져 " -"있습니다. 이로 인해 Visibility 설정이 적용되지 않습니다." +"{screen_reader_start} 주의: {screen_reader_end} 이 구성요소가 포함된 학습활동이 학습자에게 감추어져 " +"있습니다. 이로 인해 학습자에게 공개되지 않습니다." #: cms/templates/visibility_editor.html msgid "Make visible to:" @@ -19088,6 +19027,21 @@ msgid "" " Students and staff" msgstr "해당 콘텐츠 그룹이 없습니다. 다른 것를 선택하거나 전체 학생 및 직원에 대한 접근을 허용하세요." +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" @@ -19126,26 +19080,24 @@ msgid "" "Your request for course creation rights to {studio_name} have been denied. " "If you believe this was in error, please contact {email}" msgstr "" -" {studio_name} 에서의 강좌 생성 권한 요청이 거절 되었습니다. 이것이 오류라고 생각되면 연락 주시기 바랍니다. " -"{email}" +" {studio_name} 에서의 강좌 개설 권한 요청이 거절 되었습니다. 이것이 오류로 보일 경우 {email}로 연락하세요." #: cms/templates/emails/course_creator_granted.txt msgid "" "Your request for course creation rights to {studio_name} have been granted. To create your first course, visit\n" "\n" "{url}" -msgstr "{studio_name} 강좌 생성 권한 요청이 승인 되었습니다. {url}에서 귀하의 첫 강좌를 만들어주세요. " +msgstr "{studio_name} 강좌 개설 권한 요청이 승인되었습니다. {url}에서 귀하의 첫 강좌를 개설해주세요. " #: cms/templates/emails/course_creator_revoked.txt msgid "" "Your course creation rights to {studio_name} have been revoked. If you " "believe this was in error, please contact {email}" -msgstr "" -"{studio_name} 에서의 강좌 생성 권한이 폐지되었습니다. 이것이 오류라고 생각되면 {email}로 연락 주시기 바랍니다. " +msgstr "{studio_name} 에서의 강좌 개설 권한이 폐지되었습니다. 이것이 오류로 보일 경우 {email}로 연락하세요. " #: cms/templates/emails/course_creator_subject.txt msgid "Your course creator status for {studio_name}" -msgstr "{studio_name}에 강의 생성 상태" +msgstr "{studio_name} 강좌 개설 준비 상태" #: cms/templates/registration/activation_complete.html msgid "You can now {link_start}login{link_end}." @@ -19275,7 +19227,7 @@ msgstr "edX101 에 등록" #: cms/templates/widgets/sock.html msgid "How to use {studio_name} to build your course" -msgstr "강좌를 만들기 위한 {studio_name}사용법" +msgstr "강좌를 개설하기 위한 {studio_name}사용법" #: cms/templates/widgets/sock.html msgid "Have problems, questions, or suggestions about {studio_name}?" diff --git a/conf/locale/ko_KR/LC_MESSAGES/djangojs.mo b/conf/locale/ko_KR/LC_MESSAGES/djangojs.mo index f191bcfe5f2496b5f6d672e6a79f134a97d635d8..c4b6b78e492ad90a966620bf8639b439fa735981 100644 GIT binary patch delta 17474 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 IHQ)7r00z|7KL7v# diff --git a/conf/locale/ko_KR/LC_MESSAGES/djangojs.po b/conf/locale/ko_KR/LC_MESSAGES/djangojs.po index fcc526a28a..09ea189121 100644 --- a/conf/locale/ko_KR/LC_MESSAGES/djangojs.po +++ b/conf/locale/ko_KR/LC_MESSAGES/djangojs.po @@ -53,9 +53,9 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" -"Last-Translator: Sarina Canelake \n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 13:15+0000\n" +"Last-Translator: Hongseob Lee \n" "Language-Team: Korean (Korea) (http://www.transifex.com/open-edx/edx-platform/language/ko_KR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -249,13 +249,13 @@ msgstr "답:" #. student must solve.; #: common/lib/xmodule/xmodule/js/src/capa/display.js msgid "Hide Answer" -msgstr "답 숨기기" +msgstr "정답 감추기" #. Translators: the word Answer here refers to the answer to a problem the #. student must solve.; #: common/lib/xmodule/xmodule/js/src/capa/display.js msgid "Show Answer" -msgstr "답 보기" +msgstr "정답 보기" #: common/lib/xmodule/xmodule/js/src/capa/display.js msgid "Answer hidden" @@ -1583,11 +1583,11 @@ msgstr "" #: common/lib/xmodule/xmodule/js/src/problem/edit.js msgid "incorrect" -msgstr "틀렸습니다." +msgstr "오답을 입력하세요." #: common/lib/xmodule/xmodule/js/src/problem/edit.js msgid "correct" -msgstr "맞았습니다." +msgstr "정답을 입력하세요." #: common/lib/xmodule/xmodule/js/src/problem/edit.js msgid "answer" @@ -1799,12 +1799,12 @@ msgstr "죄송합니다" #: common/static/coffee/src/discussion/discussion_module_view.js msgid "We had some trouble loading the discussion. Please try again." -msgstr "게시판을 로딩하는데 문제가 있습니다. 다시 시도하세요" +msgstr "게시판을 로딩하는데 문제가 있습니다. 다시 시도하세요." #: common/static/coffee/src/discussion/discussion_module_view.js msgid "" "We had some trouble loading the threads you requested. Please try again." -msgstr "요청한 게시물을 로딩하는데 문제가 있습니다. 다시 시도하세요" +msgstr "요청한 게시물을 로딩하는 중 오류가 발생했습니다. 다시 시도하세요." #: common/static/coffee/src/discussion/utils.js msgid "Loading content" @@ -1848,12 +1848,12 @@ msgstr "이 게시물 구독 취소에 오류가 발생했습니다. 다시 시 #: common/static/coffee/src/discussion/views/discussion_content_view.js msgid "" "We had some trouble marking this response as an answer. Please try again." -msgstr "이 답변을 정답으로 채택하는데 오류가 발생했습니다. 다시 시도하세요." +msgstr "채택하는 도중 오류가 발생했습니다. 다시 시도하세요." #: common/static/coffee/src/discussion/views/discussion_content_view.js msgid "" "We had some trouble removing this response as an answer. Please try again." -msgstr "정답으로 채택된 이 답변을 제거하는데 오류가 발생했습니다. 다시 시도하세요." +msgstr "채택 취소 중 오류가 발생했습니다. 다시 시도하세요." #: common/static/coffee/src/discussion/views/discussion_content_view.js msgid "We had some trouble marking this response endorsed. Please try again." @@ -1945,7 +1945,7 @@ msgstr "선택한 게시물은 삭제되었습니다. 다른 게시물을 선택 #: common/static/coffee/src/discussion/views/discussion_thread_view.js msgid "We had some trouble loading responses. Please reload the page." -msgstr "답변 로드중 문제가 생겼습니다. 페이지를 다시 로드하세요." +msgstr "오류가 발생했습니다. 다시 시도하세요." #: common/static/coffee/src/discussion/views/discussion_thread_view.js msgid "We had some trouble loading more responses. Please try again." @@ -1984,7 +1984,7 @@ msgstr "이 게시물을 삭제하시겠습니까?" #: common/static/coffee/src/discussion/views/discussion_user_profile_view.js msgid "We had some trouble loading the page you requested. Please try again." -msgstr "당신이 요청한 페이지를 로딩하는데 문제가 있습니다. 다시 시도하세요" +msgstr "요청한 페이지를 로딩 중 오류가 발생했습니다. 잠시 후에 다시 시도하세요." #: common/static/coffee/src/discussion/views/new_post_view.js msgid "Your post will be discarded." @@ -2000,7 +2000,7 @@ msgstr "이 댓글을 삭제하시겠습니까?" #: common/static/coffee/src/discussion/views/response_comment_view.js msgid "We had some trouble deleting this comment. Please try again." -msgstr "코멘트를 삭제하는데 문제가 있습니다. 다시 시도하세요" +msgstr "코멘트를 삭제하는데 오류가 발생했습니다. 다시 시도하세요." #: common/static/coffee/src/discussion/views/thread_response_view.js msgid "Are you sure you want to delete this response?" @@ -2289,7 +2289,7 @@ msgstr "" #: lms/djangoapps/teams/static/teams/js/views/edit_team.js #: lms/static/js/views/fields.js msgid "An error occurred. Please try again." -msgstr "오류가 발생했습니다. 다시 시도해 주세요. " +msgstr "오류가 발생했습니다. 잠시 후에 다시 시도하세요." #: lms/djangoapps/teams/static/teams/js/views/edit_team.js msgid "Check the highlighted fields below and try again." @@ -2312,7 +2312,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -2431,7 +2431,7 @@ msgstr "" #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error generating student profile information. Please try again." -msgstr "학습자 프로필 정보를 만드는데 오류가 발생했습니다. 다시 시도하세요." +msgstr "학습자 프로필 정보를 만드는 중 오류가 발생했습니다. 다시 시도하세요." #: lms/static/coffee/src/instructor_dashboard/data_download.js #: lms/templates/search/search_loading.underscore @@ -2445,7 +2445,7 @@ msgstr "학습자 목록 가져오기 에러." #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error generating list of students who may enroll. Please try again." -msgstr "수강신청한 학습자 목록을 생성하는 데 오류가 발생했습니다. 다시 시도해주세요." +msgstr "수강신청한 학습자 목록을 생성하는 중 오류가 발생했습니다. 다시 시도하세요." #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error retrieving grading configuration." @@ -2453,11 +2453,11 @@ msgstr "성적설정 가져오기 에러" #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error generating grades. Please try again." -msgstr "성적생성 에러, 다시 시도하세요" +msgstr "성적 생성 중 오류가 발생했습니다. 다시 시도하세요." #: lms/static/coffee/src/instructor_dashboard/data_download.js msgid "Error generating problem grade report. Please try again." -msgstr "성적 보고서 생성 오류입니다. 다시 시도하세요." +msgstr "성적 보고서 생성 중 오류가 발생했습니다. 다시 시도하세요." #: lms/static/coffee/src/instructor_dashboard/instructor_analytics.js msgid "Unavailable metric display." @@ -2520,7 +2520,7 @@ msgstr "오류: 자신을 교수자 그룹에서 제거할 수 없습니다. " #: lms/static/coffee/src/instructor_dashboard/membership.js msgid "Errors" -msgstr "오류들" +msgstr "오류" #: lms/static/coffee/src/instructor_dashboard/membership.js msgid "The following errors were generated:" @@ -2617,12 +2617,12 @@ msgstr "이 사용자들은 등록하면 바로 수강신청할 수 있습니다 msgid "" "Successfully sent enrollment emails to the following users. They will be " "enrolled once they register:" -msgstr "성공적으로 등록이메일을 다음 사용자에게 발송. 그들이 확인하면 등록이 완료됨:" +msgstr "다음 사용자에게 성공적으로 등록 이메일을 발송했습니다. 가입신청하면 강좌에 등록이 될 것입니다: " #. Translators: A list of users appears after this sentence; #: lms/static/coffee/src/instructor_dashboard/membership.js msgid "These users will be enrolled once they register:" -msgstr "그들이 확인하면 등록이 완료됨:" +msgstr "가입 신청하면 강좌에 등록이 될 것입니다: " #. Translators: A list of users appears after this sentence; #: lms/static/coffee/src/instructor_dashboard/membership.js @@ -2804,7 +2804,7 @@ msgid "" "Make sure that entrance exam has problems in it and student identifier is " "correct." msgstr "" -" '{student_id}' 학습자의 사전 평가 재채점에 오류가 발생했습니다. 사전 평가에 문항이 있는지와 학습자 ID가 정확한지 " +" '{student_id}' 학습자의 사전 평가 재채점에 오류가 발생했습니다. 사전 평가에 문항이 있는지와 학습자 아이디가 정확한지 " "확인하세요." #: lms/static/coffee/src/instructor_dashboard/student_admin.js @@ -3239,7 +3239,7 @@ msgstr "기부 처리가 될 수 없습니다." #: lms/static/js/dashboard/legacy.js msgid "An error occurred. Please try again later." -msgstr "오류가 발생하였습니다. 다음에 다시 시도하십시요." +msgstr "오류가 발생했습니다. 잠시 후에 다시 시도하세요." #: lms/static/js/discovery/views/search_form.js #, c-format @@ -3255,7 +3255,7 @@ msgstr "\"%s\"를 찾을 수 없습니다. " #: lms/static/js/discovery/views/search_form.js #: lms/templates/search/search_error.underscore msgid "There was an error, try searching again." -msgstr "오류가 발생했습니다. 다시 검색해 보세요." +msgstr "오류가 발생했습니다. 다시 검색하세요." #: lms/static/js/edxnotes/plugins/accessibility.js msgid "Focus grabber" @@ -3443,7 +3443,7 @@ msgstr "본 강좌의 모든 학습자를 위한 강좌 수료증 생성을 시 #: lms/static/js/instructor_dashboard/certificates.js msgid "Error while generating certificates. Please try again." -msgstr "강좌 수료증을 생성하는 동안 오류가 발생했습니다. 다시 시도하세요." +msgstr "강좌 수료증을 발급하는 동안 오류가 발생했습니다. 다시 시도하세요." #: lms/static/js/instructor_dashboard/ecommerce.js msgid "" @@ -3523,7 +3523,7 @@ msgstr "계정 기본 정보 (필수)" msgid "" "The name that identifies you throughout {platform_name}. You cannot change " "your username." -msgstr "{platform_name}에서 귀하를 나타낼 이름입니다. 이용자 이름은 변경할 수 없습니다. " +msgstr "{platform_name}에서 귀하를 나타낼 이름입니다. 아이디는 변경할 수 없습니다. " #: lms/static/js/student_account/views/account_settings_factory.js msgid "Full Name" @@ -3543,7 +3543,7 @@ msgstr "이메일 주소" msgid "" "The email address you use to sign in. Communications from {platform_name} " "and your courses are sent to this address." -msgstr "로그인에 사용되는 이메일 주소입니다. {platform_name}과 수강하는 강좌에서 이 이메일 주소로 메일을 발송합니다. " +msgstr "로그인에 사용되는 이메일 주소입니다. {platform_name}와 수강중인 강좌에서 이 이메일 주소로 메일을 발송합니다. " #: lms/static/js/student_account/views/account_settings_factory.js #: lms/templates/student_account/account.underscore @@ -3563,13 +3563,13 @@ msgstr "비밀번호 재설정" msgid "" "When you click \"Reset Password\", a message will be sent to your email " "address. Click the link in the message to reset your password." -msgstr "\"암호 재설정\"을 선택하면, 이메일로 메세지가 발송됩니다. 암호를 재설정하기 위해 메세지에 포함된 링크를 클릭해 주십시오. " +msgstr "\"비밀번호 재설정\"을 선택하면, 이메일로 메세지가 발송됩니다. 메일로 발송된 링크를 클릭하면 비밀번호를 재설정할 수 있습니다. " #: lms/static/js/student_account/views/account_settings_factory.js msgid "" "The language used throughout this site. This site is currently available in " "a limited number of languages." -msgstr "사용되는 언어. 현재 제한된 언어만 이용가능합니다. " +msgstr "K-MOOC에서 사용할 언어를 선택하세요. " #: lms/static/js/student_account/views/account_settings_factory.js msgid "Country or Region" @@ -3589,7 +3589,7 @@ msgstr "성 " #: lms/static/js/student_account/views/account_settings_factory.js msgid "Year of Birth" -msgstr "생년" +msgstr "출생 연도" #: lms/static/js/student_account/views/account_settings_factory.js #: lms/static/js/student_profile/views/learner_profile_factory.js @@ -3706,7 +3706,7 @@ msgstr "적합한 이미지 형식(PNG 및 JPEG)인지 확인해 주십시오." #: lms/static/js/verify_student/views/incourse_reverify_view.js #: lms/static/js/verify_student/views/review_photos_step_view.js msgid "An error has occurred. Please try again later." -msgstr "오류가 발생했습니다. 다시 시도해주세요." +msgstr "오류가 발생했습니다. 다시 시도하세요." #: lms/static/js/verify_student/views/incourse_reverify_view.js #: lms/static/js/verify_student/views/review_photos_step_view.js @@ -3745,7 +3745,7 @@ msgstr "{processor}로 결제하기" #: lms/static/js/verify_student/views/make_payment_step_view.js msgid "An error has occurred. Please try again." -msgstr "오류가 발생했습니다. 다시 시도해주세요." +msgstr "오류가 발생했습니다. 다시 시도하세요." #: lms/static/js/verify_student/views/make_payment_step_view.js msgid "Could not submit order" @@ -5457,7 +5457,7 @@ msgstr "" #: lms/templates/student_account/login.underscore msgid "We couldn't sign you in." -msgstr "" +msgstr "로그인 실패" #: lms/templates/student_account/login.underscore #, python-format @@ -5499,7 +5499,7 @@ msgstr "" #: lms/templates/student_account/login.underscore msgid "Create an account" -msgstr "" +msgstr "가입하기" #: lms/templates/student_account/password_reset.underscore #: lms/templates/student_account/register.underscore @@ -5538,7 +5538,7 @@ msgstr "" #: lms/templates/student_account/register.underscore msgid "Create an account using" -msgstr "" +msgstr "가입하기" #: lms/templates/student_account/register.underscore #, python-format @@ -5551,11 +5551,11 @@ msgstr "" #: lms/templates/student_account/register.underscore msgid "Create a new account" -msgstr "" +msgstr "가입하기" #: lms/templates/student_account/register.underscore msgid "Create your account" -msgstr "" +msgstr "가입하기" #: lms/templates/student_account/register.underscore msgid "Required field" @@ -6197,7 +6197,7 @@ msgstr "" #: cms/templates/js/content-group-editor.underscore msgid "Content Group Name" -msgstr "컨텐츠 그룹의 이름" +msgstr "콘텐츠 그룹 이름" #: cms/templates/js/content-group-editor.underscore msgid "Content Group ID" @@ -6866,6 +6866,25 @@ msgid "" "course settings:" msgstr "" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "" diff --git a/conf/locale/pt_BR/LC_MESSAGES/django.mo b/conf/locale/pt_BR/LC_MESSAGES/django.mo index 59d3b5d6f7a70312f15365d03d18127d92e95603..9d2de4108f748ea84dceee97036a87de876b9ef9 100644 GIT binary patch delta 38940 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 X9UlIrXIuD}-fgkBMfCb5DEt2aO%vgh delta 39324 zcmZAA1$-4pqxbPWC&Aqv4o-0QKyY_=4Gt;6DX_Q}cXxMpr+9I9D_X2A-opL;&rI&y z`|ju2erIN9XJ*ItoDg_c&y2NTPAvCc{J`lBN8%`slM>GscAP%Z9A`jxr8-W-nU1p- z8)18lG|O?uU{`#JpKuvIn(a9J&lxqxah_t@xsI~}qt0`j1-KEnVfFcr^BMz4oZvXF z^Pa#i5(Y1HoERR*DYD3ME)g%c*l`A7(j|^l3}>R!FJntwvD9&LVH9c)#X=a4^KmKV z#9i(<@rZAu6^ZaTM#nqIvpUbvOa0DU0{KYz6O&@5m5!4WOJZW|hS_lhrot_l5HDaB z{2h~H>{X5v8G}&Qb7N{OhjFp3z1|B|&H%-!-&7{V;1~^dXjYO zOaX;3J@FP8gu_tz)?-?{hMG2?QFE!&dh-CIFc$H#)>#;d_=@%Pzs6`C32N~HOo3NW z>F=!G4UW^7ctTVUjmHGI0+Zk#jDnX?4ZelyiMJRBy&KIC#7D)`qsqy*k^WZ!RY}l| zZ7~-1!)Q1PW8-AZiHk4>o=1)8Z5#gs#}NOFad7A+bA1Z-C%zOl)TuX{p>wf z-(u@qRM!Mnp~iR`#>ah_kX3LVZxDa7)jaY3ZKmh0 zq4K*g324^F-)>r*3^k@%u?*Hht&W)(f@iQG#@s<;une}sFieaWZTfT6{Rwwc7B)m( zABO7LIT&4?vW!3m5;mf`^a|=pe@9jP2Gs-UcA1vvMm=F!)Us=U>cMdI;V9JPTV>Z z66<0U)ZE!*(|00!jB^X+hGc1Q2u_%5(4N2}JY};5IOJf^U`U(ukEtmu|9%W@=FzR~gqps<~>Lk1(p(#$p zipR{3cmw|=9_v@f$&1c$(-Zk{G||df2`{4>oa%&m!t|($vSK34g{rU|M!{OB2W#XK z(6Shb>iYSpv0Q<=ajU(4%3gnf=}CWq8k$%q&E!jhDklh|U;#O43s9?J6~@5b)?ZOQa1mAE zJ?lGEIo`8c?u>t20xB>KYK(KCmPc#UavOpwU><4%*?@YIv#9%?qK4`ts^FNvnFmOY znsm8P`%48(hxJi=e?Lr0{mv=^D&R2s@H$4t�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, 2014 +# Antonio Henrique Dianin , 2015 # brk0_0, 2013 # Cleomir Waiczyk , 2015 # Edgar Aparecido Pereira de Melo , 2014 @@ -222,7 +223,7 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" +"POT-Creation-Date: 2015-08-21 14:18+0000\n" "PO-Revision-Date: 2015-07-20 00:15+0000\n" "Last-Translator: javiercencig \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/open-edx/edx-platform/language/pt_BR/)\n" @@ -569,9 +570,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "O seu nome legal deve conter no mínimo dois caracteres" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"O nome de usuário deve conter apenas letras e números, sem espaços. 0-9" #: common/djangoapps/student/forms.py #, python-format @@ -5319,27 +5321,6 @@ msgstr "" msgid "Free" msgstr "" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -msgstr[1] "" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "Localização inválida." @@ -7946,10 +7927,6 @@ msgstr "" msgid "text_search is not yet supported." msgstr "" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -7962,6 +7939,10 @@ msgstr "" msgid "The supplied course_id {course_id} is not valid." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -7974,6 +7955,10 @@ msgstr "" msgid "Team id is required." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -9195,6 +9180,10 @@ msgstr "A localização de curso fornecida está incorreta" msgid "Missing branch on fresh clone" msgstr "Esta faltando um branch na clonagem recente" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9565,6 +9554,11 @@ msgstr "Cancelar" msgid "Course Number" msgstr "Número do curso" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "Erro:" @@ -11395,6 +11389,11 @@ msgstr "Política de avaliação" msgid "Batch Enrollment" msgstr "Inscrição em lote" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "Endereços de e-mail/Nomes de usuário" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -11412,11 +11411,6 @@ msgstr "" "Você não receberá notificações caso as mensagens para o seu e-mail retornem," " por favor, certifique-se que o seu e-mail foi digitado corretamente." -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "Endereços de e-mail/Nomes de usuário" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -11465,7 +11459,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "Inscrever-se" @@ -11474,6 +11467,10 @@ msgstr "Inscrever-se" msgid "Student List Management" msgstr "" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "" @@ -11864,7 +11861,6 @@ msgid "This section is graded." msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "Ocorreu um erro. Por favor, tente novamente mais tarde." @@ -11905,7 +11901,7 @@ msgid "Enrollment is Closed" msgstr "" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" +msgid "Add {course_name} to Cart ({price} USD)" msgstr "" #: lms/templates/courseware/course_about.html @@ -11985,7 +11981,6 @@ msgid "Additional Resources" msgstr "Recursos adicionais " #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "" @@ -12371,54 +12366,6 @@ msgstr "" msgid "Course errors" msgstr "Erros do curso" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "Sobre {course_id}" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "Em breve" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "Sobre {course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "Acesso ao material didático" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "Notícias - MITx 6.002x" @@ -12731,6 +12678,10 @@ msgstr "" msgid "Started - {start_date}" msgstr "" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "Em breve" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "" @@ -12924,8 +12875,8 @@ msgstr "" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -13120,10 +13071,6 @@ msgstr "" msgid "by most votes" msgstr "" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr ", " - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -14124,6 +14071,10 @@ msgstr "Nome do curso:" msgid "Course Display Name:" msgstr "Nome de exibição do curso:" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "O curso já começou?" @@ -14140,6 +14091,10 @@ msgstr "Não" msgid "Has the course ended?" msgstr "O curso terminou?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "Notas de corte:" @@ -17083,10 +17038,6 @@ msgstr "" msgid "View Live" msgstr "" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "" @@ -19237,6 +19188,21 @@ msgid "" " Students and staff" msgstr "" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo b/conf/locale/pt_BR/LC_MESSAGES/djangojs.mo index dc2e5fba410ad296ca330749c961a55763d29e55..8a76fe7434fd4ac10ee3275a7c7c96d1ac91921c 100644 GIT binary patch delta 63 zcmbO{m3i`1<_%S421bSoh9*{q=Gq28z!l)H8S)7@lr|Xhfl4_-3WMF8jYha-Z QRA*phWn#E_RoTm609Y~-;{X5v delta 63 zcmbO{m3i`1<_%S428JdIhQ?MVM%o5Iz!l)H8S)7@lr|Xhfl4_-3WMF8jYha-Z MRcEq!RoTm609Z>B=>Px# diff --git a/conf/locale/pt_BR/LC_MESSAGES/djangojs.po b/conf/locale/pt_BR/LC_MESSAGES/djangojs.po index da60890bb1..6bbec3370f 100644 --- a/conf/locale/pt_BR/LC_MESSAGES/djangojs.po +++ b/conf/locale/pt_BR/LC_MESSAGES/djangojs.po @@ -63,6 +63,7 @@ # Álex Filipe , 2014 # Allan Melo , 2015 # Andrei Bosco Bezerra Torres , 2013 +# Antonio Henrique Dianin , 2015 # brk0_0, 2013 # Bruno Horphoz , 2014 # brunojm , 2014 @@ -150,8 +151,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 02:41+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/open-edx/edx-platform/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -2435,7 +2436,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -7079,6 +7080,25 @@ msgid "" "course settings:" msgstr "" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "" diff --git a/conf/locale/rtl/LC_MESSAGES/django.mo b/conf/locale/rtl/LC_MESSAGES/django.mo index 74dfde36697ce014a92efa32c0a845692d86d43f..959700de459e6e0b5eeb010ba0309105082c58fb 100644 GIT binary patch delta 84420 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 DrUYlh delta 84765 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

      qjPkb6e5mC6!_KT+4Ve+eS@krcRY@K#1 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\n" "MIME-Version: 1.0\n" @@ -412,8 +412,12 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "غخعق مثلشم رشوث وعسف زث ش وهرهوعو خب فصخ ذاشقشذفثقس مخرل" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." -msgstr "عسثقرشوث ساخعمي خرمغ ذخرسهسف خب ش-ظ شري 0-9, صهفا رخ سحشذثس." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." +msgstr "" +"عسثقرشوثس وعسف ذخرفشهر خرمغ مثففثقس, رعوزثقس, عريثقسذخقثس (_), شري اغحاثرس " +"(-)." #: common/djangoapps/student/forms.py #, python-format @@ -2785,8 +2789,8 @@ msgid "" "YYYY-MM-DD, or \"%Y-%d-%m\" for YYYY-DD-MM." msgstr "" "ثرفثق فاث بخقوشف بخق يعث يشفثس. فاث يثبشعمف هس وخر يي, غغغغ. ثرفثق " -"\"%و-%ي-%غ\" بخق وو-يي-غغغغ, \"%ي-%و-%غ\" بخق يي-وو-غغغغ, \"%غ-%و-%ي\" بخق " -"غغغغ-وو-يي, خق \"%غ-%ي-%و\" بخق غغغغ-يي-وو." +"\"%و-%d-%غ\" بخق وو-يي-غغغغ, \"%d-%و-%غ\" بخق يي-وو-غغغغ, \"%غ-%و-%d\" بخق " +"غغغغ-وو-يي, خق \"%غ-%d-%و\" بخق غغغغ-يي-وو." #: common/lib/xmodule/xmodule/course_module.py msgid "External Login Domain" @@ -5422,31 +5426,6 @@ msgstr "{currency_symbol}{price}" msgid "Free" msgstr "بقثث" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "{first_institutions}, شري {last_institution}" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "{first_institution} شري {second_institution}" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -"ه صخعمي مهنث فخ قثذثهدث ثوشهم بقخو {institution_series} شري مثشقر شزخعف هفس " -"خفاثق حقخلقشوس." -msgstr[1] "" -"ه صخعمي مهنث فخ قثذثهدث ثوشهم بقخو {institution_series} شري مثشقر شزخعف " -"فاثهق خفاثق حقخلقشوس." - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "هردشمهي مخذشفهخر." @@ -6206,12 +6185,12 @@ msgstr "سعذذثسسبعممغ قثسثف يعث يشفث بخق سفعيثر #: lms/djangoapps/instructor/views/api.py #, python-format msgid "This student (%s) will skip the entrance exam." -msgstr "فاهس سفعيثرف (%س) صهمم سنهح فاث ثرفقشرذث ثطشو." +msgstr "فاهس سفعيثرف (%s) صهمم سنهح فاث ثرفقشرذث ثطشو." #: lms/djangoapps/instructor/views/api.py #, python-format msgid "This student (%s) is already allowed to skip the entrance exam." -msgstr "فاهس سفعيثرف (%س) هس شمقثشيغ شممخصثي فخ سنهح فاث ثرفقشرذث ثطشو." +msgstr "فاهس سفعيثرف (%s) هس شمقثشيغ شممخصثي فخ سنهح فاث ثرفقشرذث ثطشو." #: lms/djangoapps/instructor/views/api.py msgid "" @@ -8270,10 +8249,6 @@ msgstr "فاث سعححمهثي فخحهذ هي {topic_id} هس رخف دشمه msgid "text_search is not yet supported." msgstr "فثطف_سثشقذا هس رخف غثف سعححخقفثي." -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "مشسف_شذفهدهفغ هس رخف غثف سعححخقفثي" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -8286,6 +8261,10 @@ msgstr "فاث خقيثقهرل {ordering} هس رخف سعححخقفثي" msgid "The supplied course_id {course_id} is not valid." msgstr "فاث سعححمهثي ذخعقسث_هي {course_id} هس رخف دشمهي." +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "غخع شقث شمقثشيغ هر ش فثشو هر فاهس ذخعقسث." + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "عسثقرشوث خق فثشو_هي وعسف زث سحثذهبهثي." @@ -8298,6 +8277,10 @@ msgstr "عسثقرشوث هس قثضعهقثي." msgid "Team id is required." msgstr "فثشو هي هس قثضعهقثي." +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "فاهس فثشو هس شمقثشيغ بعمم." + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "فاث عسثق {username} هس شمقثشيغ ش وثوزثق خب ش فثشو هر فاهس ذخعقسث." @@ -9578,6 +9561,10 @@ msgstr "زشي ذخعقسث مخذشفهخر حقخدهيثي" msgid "Missing branch on fresh clone" msgstr "وهسسهرل زقشرذا خر بقثسا ذمخرث" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "يثمثفثي لقخعح" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9965,6 +9952,11 @@ msgstr "ذشرذثم" msgid "Course Number" msgstr "ذخعقسث رعوزثق" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "ذخعقسث سفشقف يشفث:" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "ثققخق:" @@ -10989,7 +10981,7 @@ msgstr "" #: lms/templates/provider_login.html #, python-format msgid "Return To %s" -msgstr "قثفعقر فخ %س" +msgstr "قثفعقر فخ %s" #: lms/templates/register-shib.html msgid "Preferences for {platform_name}" @@ -11824,6 +11816,11 @@ msgstr "لقشيهرل حخمهذغ" msgid "Batch Enrollment" msgstr "زشفذا ثرقخمموثرف" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "ثوشهم شييقثسسثس/عسثقرشوثس" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -11840,11 +11837,6 @@ msgstr "" "غخع صهمم رخف لثف رخفهبهذشفهخر بخق ثوشهمس فاشف زخعرذث, سخ حمثشسث يخعزمث-ذاثذن" " سحثممهرل." -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "ثوشهم شييقثسسثس/عسثقرشوثس" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -11891,7 +11883,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "ثرقخمم" @@ -11900,6 +11891,10 @@ msgstr "ثرقخمم" msgid "Student List Management" msgstr "سفعيثرف مهسف وشرشلثوثرف" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "ثرفثق عسثقرشوث خق ثوشهم" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "صشقرهرل" @@ -12293,7 +12288,6 @@ msgid "This section is graded." msgstr "فاهس سثذفهخر هس لقشيثي." #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "شر ثققخق خذذعققثي. حمثشسث فقغ شلشهر مشفثق." @@ -12334,8 +12328,8 @@ msgid "Enrollment is Closed" msgstr "ثرقخمموثرف هس ذمخسثي" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" -msgstr "شيي {course_name} فخ ذشقف ({price})" +msgid "Add {course_name} to Cart ({price} USD)" +msgstr "شيي {course_name} فخ ذشقف ({price} عسي)" #: lms/templates/courseware/course_about.html msgid "Register for {course_name}" @@ -12413,7 +12407,6 @@ msgid "Additional Resources" msgstr "شييهفهخرشم قثسخعقذثس" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "ثرقخمم" @@ -12825,54 +12818,6 @@ msgstr "" msgid "Course errors" msgstr "ذخعقسث ثققخقس" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "شزخعف {course_id}" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "ذخوهرل سخخر" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "شزخعف {course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "شذذثسس ذخعقسثصشقث" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "غخع شقث ثرقخممثي" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "ثرقخمم هر" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "شري ذاخخسث غخعق سفعيثرف فقشذن" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "شري حقخذثثي فخ دثقهبهذشفهخر" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "ثرقخمموثرف هس ذمخسثي" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "رثصس - وهفط 6.002ط" @@ -13199,6 +13144,10 @@ msgstr "ثريثي - {end_date}" msgid "Started - {start_date}" msgstr "سفشقفثي - {start_date}" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "ذخوهرل سخخر" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "سفشقفس - {start_date}" @@ -13410,11 +13359,11 @@ msgstr "بهرشمهظث ذقثيهف" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" -"غخعق ذقثيهف اشس زثثر حقخذثسسثي شري شححقخدثي. ذخرلقشفعمشفهخرس. حمثشسث " -"سثث {link_to_provider_site} بخق وخقث هربخقوشفهخر." +"غخعق ذقثيهف اشس زثثر حقخذثسسثي شري شححقخدثي. ذخرلقشفعمشفهخرس!. حمثشسث" +" سثث {link_to_provider_site} بخق وخقث هربخقوشفهخر." #: lms/templates/dashboard/_dashboard_credit_info.html msgid "Access credit" @@ -13613,23 +13562,19 @@ msgstr "زغ وخسف شذفهدهفغ" msgid "by most votes" msgstr "زغ وخسف دخفثس" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr ", " - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" msgid_plural "%s discussions started" -msgstr[0] "%س يهسذعسسهخر سفشقفثي" -msgstr[1] "%س يهسذعسسهخرس سفشقفثي" +msgstr[0] "%s يهسذعسسهخر سفشقفثي" +msgstr[1] "%s يهسذعسسهخرس سفشقفثي" #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s comment" msgid_plural "%s comments" -msgstr[0] "%س ذخووثرف" -msgstr[1] "%س ذخووثرفس" +msgstr[0] "%s ذخووثرف" +msgstr[1] "%s ذخووثرفس" #: lms/templates/discussion/index.html #: lms/templates/discussion/user_profile.html @@ -14679,6 +14624,10 @@ msgstr "ذخعقسث رشوث:" msgid "Course Display Name:" msgstr "ذخعقسث يهسحمشغ رشوث:" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "ذخعقسث ثري يشفث:" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "اشس فاث ذخعقسث سفشقفثي?" @@ -14695,6 +14644,10 @@ msgstr "رخ" msgid "Has the course ended?" msgstr "اشس فاث ذخعقسث ثريثي?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "رعوزثق خب سثذفهخرس:" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "لقشيث ذعفخببس:" @@ -17842,10 +17795,6 @@ msgstr "ذمهذن فخ خحثر فاث ذخعقسثصشقث هر فاث موس msgid "View Live" msgstr "دهثص مهدث" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "ذخعقسث سفشقف يشفث:" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "ثيهف سفشقف يشفث" @@ -19864,7 +19813,7 @@ msgstr "غخعق ذخعقسث سعووشقغ حشلث" msgid "" "Introductions, prerequisites, FAQs that are used on %s (formatted in HTML)" msgstr "" -"هرفقخيعذفهخرس, حقثقثضعهسهفثس, بشضس فاشف شقث عسثي خر %س (بخقوشففثي هر افوم)" +"هرفقخيعذفهخرس, حقثقثضعهسهفثس, بشضس فاشف شقث عسثي خر %s (بخقوشففثي هر افوم)" #: cms/templates/settings.html msgid "Course Image" @@ -20354,6 +20303,24 @@ msgstr "" "ذخرفثرف لقخعح رخ مخرلثق ثطهسفس. حمثشسث ذاخخسث شرخفاثق خق شممخص شذذثسس فخ شمم" " سفعيثرفس شري سفشبب" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "دثقهبهذشفهخر ذاثذنحخهرف" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "دثقهبهذشفهخر ذاثذنحخهرف فخ ذخوحمثفث" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" +"مثشقرثقس صاخ قثضعهقث دثقهبهذشفهخر وعسف حشسس فاث سثمثذفثي ذاثذنحخهرف فخ سثث " +"فاث ذخرفثرف هر فاهس ذخوحخرثرف. مثشقرثقس صاخ يخ رخف قثضعهقث دثقهبهذشفهخر سثث " +"فاهس ذخرفثرف زغ يثبشعمف." + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" @@ -20651,12 +20618,12 @@ msgstr "ش سمعل وشغ رخف زثلهر صهفا شر عريثقسذخقث. #: wiki/forms.py #, python-format msgid "A deleted article with slug \"%s\" already exists." -msgstr "ش يثمثفثي شقفهذمث صهفا سمعل \"%س\" شمقثشيغ ثطهسفس." +msgstr "ش يثمثفثي شقفهذمث صهفا سمعل \"%s\" شمقثشيغ ثطهسفس." #: wiki/forms.py #, python-format msgid "A slug named \"%s\" already exists." -msgstr "ش سمعل رشوثي \"%س\" شمقثشيغ ثطهسفس." +msgstr "ش سمعل رشوثي \"%s\" شمقثشيغ ثطهسفس." #: wiki/forms.py msgid "Yes, I am sure" @@ -20918,7 +20885,7 @@ msgstr "ش رخر-قخخف رخفث وعسف شمصشغس اشدث ش سمعل." #: wiki/models/urlpath.py #, python-format msgid "There is already a root node on %s" -msgstr "فاثقث هس شمقثشيغ ش قخخف رخيث خر %س" +msgstr "فاثقث هس شمقثشيغ ش قخخف رخيث خر %s" #: wiki/models/urlpath.py msgid "" @@ -20983,12 +20950,12 @@ msgstr "شففشذاوثرف قثدهسهخرس" #: wiki/plugins/attachments/views.py #, python-format msgid "%s was successfully added." -msgstr "%س صشس سعذذثسسبعممغ شييثي." +msgstr "%s صشس سعذذثسسبعممغ شييثي." #: wiki/plugins/attachments/views.py #, python-format msgid "Your file could not be saved: %s" -msgstr "غخعق بهمث ذخعمي رخف زث سشدثي: %س" +msgstr "غخعق بهمث ذخعمي رخف زث سشدثي: %s" #: wiki/plugins/attachments/views.py msgid "" @@ -21001,7 +20968,7 @@ msgstr "" #: wiki/plugins/attachments/views.py #, python-format msgid "%s uploaded and replaces old attachment." -msgstr "%س عحمخشيثي شري قثحمشذثس خمي شففشذاوثرف." +msgstr "%s عحمخشيثي شري قثحمشذثس خمي شففشذاوثرف." #: wiki/plugins/attachments/views.py msgid "" @@ -21014,7 +20981,7 @@ msgstr "" #: wiki/plugins/attachments/views.py #, python-format msgid "Current revision changed for %s." -msgstr "ذعققثرف قثدهسهخر ذاشرلثي بخق %س." +msgstr "ذعققثرف قثدهسهخر ذاشرلثي بخق %s." #: wiki/plugins/attachments/views.py #, python-format @@ -21024,22 +20991,22 @@ msgstr "شييثي ش قثبثقثرذث فخ \"%(att)s\" بقخو \"%(art)s\"." #: wiki/plugins/attachments/views.py #, python-format msgid "The file %s was deleted." -msgstr "فاث بهمث %س صشس يثمثفثي." +msgstr "فاث بهمث %s صشس يثمثفثي." #: wiki/plugins/attachments/views.py #, python-format msgid "This article is no longer related to the file %s." -msgstr "فاهس شقفهذمث هس رخ مخرلثق قثمشفثي فخ فاث بهمث %س." +msgstr "فاهس شقفهذمث هس رخ مخرلثق قثمشفثي فخ فاث بهمث %s." #: wiki/plugins/attachments/wiki_plugin.py #, python-format msgid "A file was changed: %s" -msgstr "ش بهمث صشس ذاشرلثي: %س" +msgstr "ش بهمث صشس ذاشرلثي: %s" #: wiki/plugins/attachments/wiki_plugin.py #, python-format msgid "A file was deleted: %s" -msgstr "ش بهمث صشس يثمثفثي: %س" +msgstr "ش بهمث صشس يثمثفثي: %s" #: wiki/plugins/images/forms.py #, python-format @@ -21047,7 +21014,7 @@ msgid "" "New image %s was successfully uploaded. You can use it by selecting it from " "the list of available images." msgstr "" -"رثص هوشلث %س صشس سعذذثسسبعممغ عحمخشيثي. غخع ذشر عسث هف زغ سثمثذفهرل هف بقخو " +"رثص هوشلث %s صشس سعذذثسسبعممغ عحمخشيثي. غخع ذشر عسث هف زغ سثمثذفهرل هف بقخو " "فاث مهسف خب شدشهمشزمث هوشلثس." #: wiki/plugins/images/forms.py @@ -21065,7 +21032,7 @@ msgstr "هوشلثس" #: wiki/plugins/images/models.py #, python-format msgid "Image: %s" -msgstr "هوشلث: %س" +msgstr "هوشلث: %s" #: wiki/plugins/images/models.py msgid "Current revision not set!!" @@ -21082,17 +21049,17 @@ msgstr "هوشلث قثدهسهخرس" #: wiki/plugins/images/models.py #, python-format msgid "Image Revsion: %d" -msgstr "هوشلث قثدسهخر: %ي" +msgstr "هوشلث قثدسهخر: %d" #: wiki/plugins/images/views.py #, python-format msgid "%s has been restored" -msgstr "%س اشس زثثر قثسفخقثي" +msgstr "%s اشس زثثر قثسفخقثي" #: wiki/plugins/images/views.py #, python-format msgid "%s has been marked as deleted" -msgstr "%س اشس زثثر وشقنثي شس يثمثفثي" +msgstr "%s اشس زثثر وشقنثي شس يثمثفثي" #: wiki/plugins/images/views.py #, python-format @@ -21111,7 +21078,7 @@ msgstr "هوشلثس" #: wiki/plugins/images/wiki_plugin.py #, python-format msgid "An image was added: %s" -msgstr "شر هوشلث صشس شييثي: %س" +msgstr "شر هوشلث صشس شييثي: %s" #: wiki/plugins/links/wiki_plugin.py msgid "Links" @@ -21145,17 +21112,17 @@ msgstr "%(user)s سعزسذقهزهرل فخ %(article)s (%(type)s)" #: wiki/plugins/notifications/models.py #, python-format msgid "Article deleted: %s" -msgstr "شقفهذمث يثمثفثي: %س" +msgstr "شقفهذمث يثمثفثي: %s" #: wiki/plugins/notifications/models.py #, python-format msgid "Article modified: %s" -msgstr "شقفهذمث وخيهبهثي: %س" +msgstr "شقفهذمث وخيهبهثي: %s" #: wiki/plugins/notifications/models.py #, python-format msgid "New article created: %s" -msgstr "رثص شقفهذمث ذقثشفثي: %س" +msgstr "رثص شقفهذمث ذقثشفثي: %s" #: wiki/views/accounts.py msgid "You are now sign up... and now you can sign in!" @@ -21172,12 +21139,12 @@ msgstr "غخع شقث رخص مخللثي هر! اشدث بعر!" #: wiki/views/article.py #, python-format msgid "New article '%s' created." -msgstr "رثص شقفهذمث '%س' ذقثشفثي." +msgstr "رثص شقفهذمث '%s' ذقثشفثي." #: wiki/views/article.py #, python-format msgid "There was an error creating this article: %s" -msgstr "فاثقث صشس شر ثققخق ذقثشفهرل فاهس شقفهذمث: %س" +msgstr "فاثقث صشس شر ثققخق ذقثشفهرل فاهس شقفهذمث: %s" #: wiki/views/article.py msgid "There was an error creating this article." @@ -21201,7 +21168,7 @@ msgid "" "The article \"%s\" is now marked as deleted! Thanks for keeping the site " "free from unwanted material!" msgstr "" -"فاث شقفهذمث \"%س\" هس رخص وشقنثي شس يثمثفثي! فاشرنس بخق نثثحهرل فاث سهفث " +"فاث شقفهذمث \"%s\" هس رخص وشقنثي شس يثمثفثي! فاشرنس بخق نثثحهرل فاث سهفث " "بقثث بقخو عرصشرفثي وشفثقهشم!" #: wiki/views/article.py @@ -21219,12 +21186,12 @@ msgstr "قثسفخقهرل شقفهذمث" #: wiki/views/article.py #, python-format msgid "The article \"%s\" and its children are now restored." -msgstr "فاث شقفهذمث \"%س\" شري هفس ذاهميقثر شقث رخص قثسفخقثي." +msgstr "فاث شقفهذمث \"%s\" شري هفس ذاهميقثر شقث رخص قثسفخقثي." #: wiki/views/article.py #, python-format msgid "The article %s is now set to display revision #%d" -msgstr "فاث شقفهذمث %س هس رخص سثف فخ يهسحمشغ قثدهسهخر #%ي" +msgstr "فاث شقفهذمث %s هس رخص سثف فخ يهسحمشغ قثدهسهخر #%d" #: wiki/views/article.py msgid "New title" diff --git a/conf/locale/rtl/LC_MESSAGES/djangojs.mo b/conf/locale/rtl/LC_MESSAGES/djangojs.mo index fe6e7e105fd7b8834b5e9f4ded7e9c4a55da34ac..bea7fde16d67a073c58a6d216227a3c67cad4945 100644 GIT binary patch delta 31262 zcmZwQ1$-4p!}t9?C%C)I!99fFPH=a33lJQF+ri!4N^y4!T8fq8QY3-mg;FS#QlwaU zfB&7~et7Qp+0SSB&diSO?9A-RNv>X>?!~$LdmR6rB+=$M9Al$9PC6`=*Kyj#bext= zmFhV6`a4b{ypOT)6?*U^`tUQR#tZ`-Cnpv|6>W#*@BkLVkC+vM20Bg=Y=ps%<9DVK zXiUNpR0SypIZkpcizSp1GvG|jjN7bNFahy5m<*#0cAO-b8r9*v7z0aVT&#%7R~O4+ zsH@*`))G+0-%$l$*!UMLNIb?6$El7bFbS5- z8XMwk48dx{sFU`cDFjB~PnZcS4R@S0*cs#DXw=ZpKy`2-roauzlX8Bv*MCNJ>@up} z-!T9?Q@J|c4K)%2Ffoose|!RS38A)@1P3&h05ol_OzG)m7W{jxq~T* zH?!$|P$N4AbKqpu4emsyn{(AqKXqp}Nl?WPQ9XT$>gh*}jWI_$PEt&ax}FVHVGwFE zHAQt`24=y{7>1WHA(j|r>Zy(@-_XX}jG}?fB!rQ$0#oqdrr??r z?0^?AHwI5Iw!*B$C!#vE1=a9bjDeppCI(D2cN`Zr5-CuRHan`kzYqasY=#Vi(+>ON zL(Hf2Nsdz$C!jiT33VqQF)!wx>^Kdu3D&?(sQmA+GL~aFJL3dgkAI;$uyCs5T+=*V zOCXqpVbjcV+lE@F4^cz=FUG~h)6Jcw$JoTPqDCkXbps)&$yg0lz6I)zd!ruJNYowA zLUnvE7S}p?NI(^)pJ9e72WqkfqlU6FM#Eax`WT;h6MH=r;}P#}M%_?9 zR6`?BH#82lJQrai+<|^293!9(+(b>L|44yvK$ zs0MapT|9}+F~uCSQ})3E#OKao{FU)15@O*E)U&&XsqqbJ2ougV&pIutqk*XO`lyb! zMm^J>s5@SQ(QzeeB-W!I!A{f-pGK9xKbP@W2cDCV4FAKam~92cYU3hI&NPQ1#A6jo3QWq~3|@z*#?mU;;N#BM@hysURup&a$G0 zz7QtI5Ni|EB!_!djfFDtJ{3|Nob5uEJvFT72RKqz@H&`0gPGzj7_1}ho?qma&#S54Z z6D(nu!cwSb*8x-F5LAa}V`5y4y5r5526v%G?gDBA?qC9ZhPr_dHa*c&O?IAtdIGAT zB%9Sp|aI33loFQ|OkzcU>xhDnLnwegPV&IK$+`ZUajKcU+B6O+-t z^MQan%a@rRr$s%ZoEU(?s5>r#dd6i?&$NQIHmZCx8xKW|KyOsJk*Fb`h`P}gSQ6Kx zUl)F}89t+Wmg0NUKvv`#Ir&jTIT+L8c+@jqiRthpY9tIBQpGtY{C;`y*L zZozW+dO69ulft}vbqD1z1J*>PcSGIr0Ms1~MNP6Ps17YdjnF1k2ex4?Jc?>4;Y#yJ z8e>`FT`@Oq#5{OyCEe;wz_ZE>O&C@n-WxSrcVk98j9KtDY7%-@n~_M3MTr+it%@F~ zjxI-aXgjK&W2i@Z7BwfXVKjW~C!jljhRXO3HCvrEY!Z+V>*6tt!lY}B&rubeT4z48 zokKP7998}u>QTg4Zyu=+HJJlZ?Nq`{=&wycL)sf-;26{_o{Z6P8EQ_f#s;|4rpMS| z8jOc(Fa^fKY#4xns2dB$tXKvMV+Yg-EHw6v!>-I0!)0T<7RUqV2gRy*)cci z)v*HhN3G-iSOQ<6CRM(zro%l@tK$|9#COPGIlZ=-j-=Xd%I8Ooa2M=G`_3=|9A`dRZB3NX%d2~Ij{ZKW7+qGfb8GI^DVu)q#~r z$NkPG0;*^yy3Y=E=NC~!{RH)_|Fywi4~ZG|s!4kkIw3kBC=MXdh=`#3JZS$3^ePvK{rZ#%9F&4mPs5vm@IODGh=h}qtQ5{&1`W&za%ivYah)GZI2^S0EMm&en zaNtQZM~0!|lTr1|Ky_rPjc>N`{iuAWPcr`L2wWgRJ$;5f@E_C`+U_Say9Z+s@iC~O z-i;cJxKrZ@=o$S$Ks@-Iw-{)9|rHJBS?UW)8RHcWWNP4_#62}CEM1ge5^sEVtZ z3{E}NqiBpHuqUcR&oK}K&YBwtMs>VA>d`dAxY!Lf7Y3q6W-P|R?=YIX{t5U<*n(>4 z0&3_Vqh|Lzn;zqwsW=1bPJ&R6tRkx8O)xLEMKv@H^{m%oMLdZ0&^d29P#@E3{kI~Z zp&pFt`9h438&N~I57pztSP6f&@dOvloux+Q%Z|M<55~r&_WD|kPka}~#iOVjIFEka z!F>W6y4R?TaW9(5l-imOE0CTMD`N-jjvKKMro3bxK~2;Mw#3xf&pI77+18^vb{ym3 z`AdwyX5~#1bcg@i3;~zTkj6(1o0Fz(S+ldo1;S9`%J5bB&25RI!U?EI(-F#TB zg*k{1LgibI9q>4I#vC`yhus-CoVY(Q(%jKz%u2!~ERS!nEf$M1cen`k?3SU{_j(M# zZI}dip`PhasLA*Xmc~fbP^Y+QMlb`WCLWB8xZkNsAQ1_TFd242J)@zh3P+&|OvePc z9#dch=D`c7Iq(7XtYh6Wk1`vUBp!(Ba931E`d}&?jKNy}vk9o+Nz|P@Kt0Phm>8X3 zO$A9%1yf^o3`R}1W~e(3!=%^~)uGX-8=8rEaSbNNEB5*mOsMt$mVh$GxNQoiMNP(B zs38x=W>^Y!C-YI0>^oGs4XFG-pziRLy?zljg11m3`UKU%7Z`-zJB+^?C`dpRltvA4 zWz?ND!onD8)0bdb;u}#T^AuI#C)Dyvbk~evPE^AsZM-U`Bi;h_s0X1&a?)MKU(a%- z&A8uYIENa-+t?VNq3)pkJ(FG)H4=?cldu))M%tlnpd0FjhM*qJ80$n-$EH~q-}9S< zbtI_5-Kd@(M9qOnRKpKZ*Z)8@@DerDUvL)2yl*DuBGesjM~&c7)a1R4s_z-rz_+N5 zl=nX{>%Ib!0edM5kGo zpyrT&0|E7L59Y#)sGh#Zv>5F-h7o-@6qjIYO!>%h+TZ{T#_Je@u^*dRUIWV#Z-=^} z71#MQW8ObZ{lOSUye`JT0~lB9|0n?s;dva6cd;6_dTPGgS%<3VE~?-ojDvq#-`RBU zGm|ei>Uu)dev-zf=dDFdpqY!wD?H$+!=*{%IPzjq2EMs1Cff>7P)`F5tO& zrYTVkWkap&V%P=4@GxG%^*Hl|`TD;2U*?gtN53lWY7=^6EaHPucRC8yfr+SPx)@{Q z4(mbGou0&)cnRBLBx+6+e`&r~=#IIGZ@_$b74xI_Z^pkTf#AQ{WN-y;!I-c3svP&A z8gBKEnXUaWkoZWJ}4H)n780O>`weI%!w@>kGmg?!_>qN zpgMLHbKrki1+#lRTJ26x?2j)nR4E<3rob6&&xP065}O2goai3j38)Soh~{w{e2Quy zDHrQwY1HhViJ9;qR>Rxa6m!JzxRZ4xYNR%!M&u@zQ;#yl^tjKc4Qgo5pfbdd<#8WP zJuE?d1ZKwls5}1^HPq2#d)zOfbK_#-?NO`aGuFUdaZJPgu@Lc9SOg={Uz|X~xE^=o zsD|OhhoCBcf$1@6JdgW3-2$izhF}NWhS_vIzQ>t>#jzD0#URX>z~la4Qx}U7?`7lb zF$M8c3HVEbBn0k|5R8ALdY(0*X}B(`fu5*GFc+uc2~@fIiA+VI7@PPo)G8WporRhc zOHmE(MNPi*sF8e~$nSAqlPMFMXBUK8r}a?+Fd05YZERmq^~6YF;{HSg%8-x}vtVP?5Dme&xB@j7wxBAw zV$-8ABk@O=2BW9+xEq%blM@d@J&MYxM_A8ZABd%iPe5+m@0=u{JGqWpF2A9AUOJU| z#*I+VunQ`EH0ll(qdK_Sx*aughft61M^wW%P^;=Qj=*xMJ?_SI1l^ziGo|skFO}@5 zp>2eE3pPhR+YYFXg`tM_m`y)}dUTgitK>eagI_QQrc7&wzAUCA-Vn95_d$)!D2%D~ zKb3$!RL(`+*(y{AwxBw&7n9;4n|=v(=TWF~kFW~9M%_TEbmoRaQ2BbJ>K%r9wBu17 z*@AvO+rtF(%pRZ${EK?l(bAh|9~X7!L8y)uLm!5qDr}Fba1xfpl~@Yzpq_Qw3?{u9 zYOc*grC-g!`maPFNk+55G{x$~S72rQ6Sead^qD=oC#r(qFa)z?GCN!-Y6NzmDt?dZ zNYTt@;|WK#vl-Q~S6B`6XYqTS*8~P<@i#+kW2?jNQ3Yv3;!;eO&*RL*9jJKuK(i|DqHf?NYO771-{XFDQwnnvpJwzs z`v@q*L(~w(2r|p1Fe+nx%!|WO?}&|f4R2#P+*QE%8nt5<4)(a;pmah#!i6{o&!Og2 z+kzhV^Ts+%srUbD0-D9~3VGbmW(9E&@gvwCixoCQwgh_+PhQ01?7%VTHdxe*Tqo2V znS$CcE}`Z`u3~0&1fn`r1@#skihZ^Iw-e9?lBKxE{gEjICleoqdoW%Jvy&Y|J(4H* z1EwlzHkuo#9q$WjR;MUsCT&~PyJIA3V_J$@O}jAy|3beSURT<@{Z69h!0(t2EPC2ttr9_R45B0h&YORLax?7aK)XsGu>tT-aW~2tADjJDuU<#^ZbI^w?P$PN_-4R6Pzh=FM zs^9;NKn((a+l0~;%urT94Ox9u2RowX#&Fb~ti)2d4)y;34YkvK!A_W=qPdZA*pB!P zY=cQFnN<{yx%K|PPe2vNt8Cui1#r8Eb&Q&vkE@uGiB{F)knAKwAEv-eSQPc>nqer; z#1{A#HFEWK*YDhG2r~9%r1^e_a9vNVtx=lUOy()|drz5D!N!yCv4Ms7d+} z)q%t{O-Bo&KB&|~P10_tInW=KZz5`>H=^4?jHC5mzm}<>73vucMP(R|VfX-5QO(+B zh})nZ$p|cr3s5`bc^r*S9kWcw;B=y^a3KcQH6L2fq8?HCdaVBk1U3-RYjbLSvooDR zHSh&BDN{8t73RcT#H*r~TVK>N8im^HXX9f$h?;yW8=6(I0X1TW(TBgFM(TA#*1vY9 z1dYsO%8qKd1M1liLmw_i=O7xf5-q4t3VsF&4h)CTq(HNttD zn2r~1!unUmRY}nLZHww@Kh%&I39N~O zIvP)62=OGLreh7U3Gqp&hVP^1#tYOZozJL|NYcqX^B`3D>d1!0-~SVMPQqfmffGBM zovv*ck28w+PSmm~6lU&ZB-SB*6-Q#$uDnKZ4UWN7-OQ?4iu;Mj=*~vNi2jIr)X#db zN{9#a)Q|bBzwy1yPpuCzI~hWHn-3ygP%n=Ks5{$=niB^xGhRU5>EGx>r;m9}XTr2Z zt6)a#fE92I*2PoU6;t(PZqU9nhJc1@9;)Jvs0PoYUM@GS4^bWZ(_Rkl|LtH zqbiJ=#G$ASY$$fXRj7P1`~SXHC@hU}hj`pSM6QO)w|a=*Yy`(i(6hga zs^}wX2r~^e&$cLr5O0b~UyS-(upR5+dDIQM%aH!rbVsCJ5DKkS0#HA`+2=ud)gg4x^WV^!k!Pz~prXr5gIq{ogQeK;L; z$J;O%51~fxFVqOcpJeudY^V_oL8W)aqBt7e@Ba@F&|B{m>Ji*SHSA0_caR%T5v_~G zFx3>(fqJM()fe@WT84S?II5nP*clT|H9wdPLbY=kwJ%&pzb3RB&DjldSvNS#Fu`AyVF#h&hQf03C2mELtBKINzi(} zfNJ0ghTJs|!9qNu#%{2Lnp(b@Ze1d(kC$^Yn-l}I%9WFSV z<)tmP>TI*qwLx82gu3Ics5^>4O~z}e4!uW>P~thZVH{4p7>>lfsL5A!uKB3d3iT2@ zfttjL=9!mMYd--EO{)1G_t$ILP(5FPC2=Q~!xxwv^Di)ytvOaAJ`J1WFQ|PXaG@EI z8mNzM-BI-oLtUSSF>xd6#{D~OhSR7=a1%q=fL`Nt;zbtoF`4*DYmKF5WG;Va9>q=6 zP8V~T`RJ7z^%5$Cnrt0WlX*C*BkQm*?nBz+?>`A>1Y&(}hAcU1M=OcyP-R?*ZEgB{ z)J76*xmjK*Q56?NJ(7y3M_2!u2UT_z{hG>zy8_Bk}gT z%nz5RtiPa!_%2q&IJ?a-v_`Gp9;lI+j0JEzHo^y}RZ#4(DOU}(N*ZHZ3`5m(2DPO}S^dA; zz#G)F3;4kdVIYFjNO7Sr;1p z&N`d0*Lu==6*Z&}ZT!78){kZ+Qljp-khPMvv9+^xkad!EF{(qGFr(K0J_2ee5(DuC zYR^x9)I95w)<&og8of}@csA-Kv=;U9Igi>mo}gVg9BFj+1$bQ)21VbF%I=yMs2yjqB{BpGhwPT z=7UWM)G{B7S}hmReg8XW%?E-MsGgU>V%QQjRP(GWQFpoxwZ1Q+mS?haW+aNEo_Sl; zD)OU7c7aXbfMapzgdZ>c*Pbcz+w8hRU}I3*v4+0rm6=p2ByiWq9NlvoAcwro=yC z7Ho9YjL=}zGhU3^KMrGIyofC@`ZZH;J5)z{qbBQg)Faztpwbs$9IgN5 z1XRH$)J}HLW;l&n&sXq1{)aj6-YxSxpIE<|p>2bjjKfirbOEYkn^AM&80rz+MBT{0 zs1C%t&E(bkPfj2$)cD#R;Z@YLdxLspY3`Vgm&W?UYoRu<<)~+U5xe7C z495<4O$TnEUOvyzujQ2Cp4liGqn6JgR1fE%db|`n<95_bCDna%XL(ThD&RS+iCSK% zADHX8Q6p0xH6krhH_#V#0}CFo{xzfrY{mzu$@IzUd1$`diGhPiAB?N;6}G|oznP(Z ziyEn9kIc?i&e{jn;7U}-PGKsHMBVt`k68b@!(5Neos~vqtc&_g*beo&orSY70=3mv z``uL35RVb>fqFd$Ju#2478WGl9o4brsB-5}llKM|#>ajFntbX0Fq11Us-lLdp7*iN z$8y9EqBg2esG(2#)Z9Qi)DQ>Zc&v}K zQ&G?Qchvj8&I_~GPsOstFJlo*{Fj+@Rk14ZC0H4ML*>i!(){wO8?Gas>2Ka0?3}0Z z0r5Xxx%vFgxqr-^#d~dfR13F};RNaq`@Jzc+;G(To`KqsmZEmVRj6lr3YGsJ_QgL? zL*4SNd4%0ik8~F55g$eO{eOjkCgCg8GfMN$%-(FM0;N&Qvj^%~PC^ao9@OlP{jW*S zf~vR<_Q1BN4qrfZ?Jcp{_1!`;ki25j&>w}r~ zy-;^N4V8aBYHsX9cl~2S;%`wmSmUD^sc_UBn~Lu5|2NnR7f_S&chpPe9WKY%pG-$K zq9$1c`tUsJj$fee@Qb~k;IkRQtf&z!g__J&P(Q48N9`l0KC}K+!A%l0#LrMYi}|1V zktr)GeE@dA+33T!s0velF+W(8LXBV;YRjE!|F zoCIZ*PUd&P>*CHY7)*vjnq<9N4KIz@C@qF+_XMKb?i@TG_Q%L z^Ak{og-{zp2x>zbh-!F>y*?k+z$(;GAHnDzCKu{Xt_GMJ_zyLL>7#kwcR>kMePK8W zhod?YGrHGZ-u{dPG^tu*d|ZiYV7v7Q9wmMO^{8gX@Vawg1!f{1ftuA(HvK&Y5>FV@ z>%R5MphmQ%bpUD(&BP$R|JM?zPQndTPcz5zy0fNpY;2f6AQ)ly1zMTg}R}ia6MkdRyaJK8L?ZKL+}6S@xAWP=lL*%41Vl_M^P`G z+zGty|Ey*ewkDn|p}Dhg)H9xiT5gMR6dpxAx(bQB?&PbDKM)^-der3;n-QpknY8{x z2|U6HI1zg!@w!{^TU14@lbV8IsQqC8YNV#v^zTvmHrw>4Ev()^qk_wWE((&md!X+L-Q~buEgAU0<~fMW%Z^rBas|6S##qI zERId_H1@*G>Amjnie_6Mpyo<&2Cw@~$+!%x{{tk{%}7J^IIfS`j72h;h8t)0x?Acf z)KE8=t19Rz1Fv%fTIF0{hf*a`KBdZU)(Sky9IVLgk*h`;d@C_x}Ft9{0(Svvr= zY{sIN%QDnPv)jghLTy;TqIS5Cs7V-<&Fi$oCfES?qdFQtyVrS-sZb-CB!}s+KN|t{ zG!WI(@~DQ}pk5k-aX%xn0^1UAk<07;fN==75Kooc>;A80e?r!?(>ITC6>4O!;uV~c z*K58r%I9^z@;QZdwf>6)dYuhqn1DmDKz^_L>2x!mBz_lr;F=(>`FW+@iSIP!?l8(*MPpn7xG8{bf@)jwZeXA7i1CUgsA~TgvO~#=o$f zda}B-+2J1Hdg7DHc%4XwJh-ga{o}H@Azt^F&h4=}*Ei!Fe1~dqN_nsQ5iSzP6Hivb z>wJ$(ur`*gXlDIn)DC(Z`(v|8jKp377YS&m8(-Nxf-lIkafVd!y1%JBi)Dxxsp@q< z>-EP9#DBn0^j2f;(BUqq2FF!5FPp2V<<`1}nL9hMBk?3P%_A9Dll8CldXI#oSiF|k zDUTnqFqWxpcC3EbjQA7O(3P)aURv+)E%DNIz3zVzp-??DV&||3=~?QVowPaX^Zqf^ zGW>vq^HEKD%M%`hqhGtImK!-a#jy}>)G&0NW5o%e+YiyQP2GnXQ zfLaZeP#f3)tcEL4H}(uQXEOPln8{KHwN9s@dbkkz73b?D8*Zti7uDRFwiR+bG znEdftnhzo=QROqB-tW24hauP&+hYmpId0ScYi0Hif5z5kBPfG0$XErNU~MdjYf&4< zP1Fwe98=(1R73IGnDlI@tvC?%DY-Oe#4yyBJ_%LNd>h|@;adND3Fw*UZfn+O4^#tt zP+RReR0WCKnVm2LYR4>u8sc84jcYmP#KWjZ@EG+dKiKQ}+nbH2CaPlxF}2qJEdt9( zc!TQs+z#fg_9F%o{|%L%w4=F$vY4EBeQOug$c;cf>v32ax1(0oJG_UzL%r^QYpz}= zGh+W?1=@FFb~Xt$FcI;FsAn09D^w8UW0Ec=-G{n^Jg8Y+12vh(V0GMq+PXiXRzcP< z^MR!WYGekZ9@RAT>qF&I0-DA9P_N-Ls1Dr3toX>L$LVVBJPoQ`5RSo`sJU?ogE0y< zLh-tpdNX5j;)PI;swbAkDcxBA>gib$RNx=fvyR=}%!w4Jo;E{`Oc&I%AB^R2H)_b= zU|00@FzgWj;ej^zxfKDBRo2AA|9_L_LzSeZ21PbdKOP z;<@^o3cla~;(fxs?k^Ocpz`ZSvOb?<3*xJXnrG__GkbP1)K0k@OJe-tX3|!}n8cr;M(!nQL_cFO%r?U8l&w*Z zay9;mr*R(o_c8+7qic>dkKlXM5br_FftQ#WKcePFhEe7Y12GlxMOX`Wq9&m;+T3X% zmLs|pKjLjXi&10Dh^-mxe(Lr+*~XbIaUiOqE!YS@;ybK2-o&d-Fhln}CT66vP4v3I zj4C>bju0<7*-Wm6Q_SarKB$-0VblnJvgy;OnwQi~ETe~)YnmB>E~pLTAgUuTu`ZUG z?sfk#VFp&Bp+B)7>A^G2%V`}pCZ2Ydc|?7&CGoTP6m!n@y8pw2q;tIPpY_hh+@z39SC&hxte!IA3oz3!jgd_?W}*A}oU=)ls2rop?5%ql6e*u1s};|lV< zM$L)&OZfPW%h2r*)*+sAsh1yY`I-;?g$Y#s&fLie)U$epHE8I?GP4DjSZ>}4er!zo z4Xi@Gz?EjQ4M5HEWvF$YZk5;lj<+%DPA6g*?!r2hPruqc@*Zng|E0LFYK^&*d#IOA zmbKTNg!wNb4@y~g*U4d0Kwov*`e7-7?Iqi*CSs)I>3o2@w$ zYVXgD(Xb5arRJ|dKzGm!HQT44?)X<6fxqKy?6k#<)O%D#F}9ip(x5t)3$=PGphk2M zCdYA@440tFZAaCA0{iRzf6*pX+GaXZ7j*~SF%YL?c|44I$vE4+?zh^pF$2*7s10f! zuEl*Agl%?s-T$rFOk6}f!%p)9%RVeiywfgqnDw`oKmZB1(1W=cpQ~Pegd(zvu%2T! z!kI{`$JstQzYCy12h!tU7}x&BHl+VU{*)SDjwPhMCVv;y&exPMzd&~~apokg7xDMZ zKZoV*9u=*3OjLhQ=)5FN^(|CKDD;>(H{>4OiR-w}$!6*PQn4|eC`5Wa)RBgAyn~#$ zoKpxlQ)S;A+JBr#TTu)yY6$n*xR>~CI-!022h=fvYkCnKC!UqF2o?We^PeTm9_Hky z+$q$Ng^mm$Ul!u!h+pGmpq+-C|LRqclt3I6ppsIy*W_`okk;gzxYBf_B>!Wsed7G~ z$VvLwV?T8T(I^|F!}rY2KwD2^%EYnxR*<=8G(Is_CUZ(Mti&AlqL$dV$GT{9+I30c z|CKatd^#?XUB?;Dp`7tmob!$Cm-ZpQ%|p;#rQ7Js9GiC1+JUA+xIWXCD^L1+&f}!b zC;!)@b984;`!31-rR}}s;#zJl>ZgOR2OlOJkB#>y-%=YsLb_gQI`mV;3)(trud!V8 zU!-wr(B`i;jSnBrpTzrcZY8ZX26OU7fIDH_j}HC0(3FY>a~7kqzsR6tw!M)l#OrXT zwQ;_)bw4xp#YZ+x`L`2Zi3e!3n@!J+!|jdc$39%kPF-OEw9jvy9p0(#c2g8}w8sZn zj!aiL4-?K$z7x90(a2WT&^FMKv{9tprQ8tGHrw>RZf<_0rR;msv3+lLCfa`*lBXQ$ z-_t;1%uc!3q(!q0D%%$u{v&|)3v=;%&O^4LjJBfjHd9aHp)^>RQ^#NAD?p`H3BM%I zAF7cM zeR$Kc+u;5iY#SItUVhW%q@q*&ve21J9c59+Qo_HZK6j5KZ4vPyD^{vpOW5)4NMF{~EGI*nY<660dystF~qo9mZL~Uh6`YA8a?qQOjYFe+f=M1h-rSiO_&BB4U z;aSR0{3+^~O5QPCn?$%d>8pr0aIY}%gmpx4E+o9ejWHAW{gjiM3O16Eh6WOGv98Um zJevsDB>ger7KER1E+T(y&Vi)qv*$$8vJfwZEy&9sP&jSrfQ~(+>&QTSKc2Jc<8ic~ zjGM?%oPupR+iv)Hk$&<+DD`y?dwb7;%e)o@(R@ff7rTFKF&3K6l{-PtHw!-Wf zi@YaD;}f6rD`#n&*GH!k*nEqrqXp-6^3@`}?>F_gCI4R1*Q5Tg1Dt~dHgWz&;o)4+ z5tDcnaed}{Kv+i`d+i6pi3rEX|2UU$>S)bbi-xL@KM9RKqI_J!`AFMf%j)Nc3Z#3v zo|*Kr`cJ2P_@;LWi5Dc(WZP&6zMw!C(ze@t6{+l=y}p{XVK&^AJfnzzM?5X{d_BgI zwui_C${oOIUoRl{&s&-^JLd=r#ip_PR8Y}YnvFuGN$WuTH^L$0sYZnn#7|OY0%=b% zEot8#KaoC-v}Tmek2Nufv`04IQ1od1&meIqmA1xz$kde!XQ=!k@)Mi0k}#jPoqojm zka0NUr0|*q{+Ne6KEj#xpH4V$3o6qQF1F|5W(vJ0ei(-!KlnQTVhrx=7i9(71arUFU zj(_ywUSB-jAyYpRiepbMR^-eo7IZS^jjyIb#!#QD_raKHJ`X z%_LV*xE|LZVmj2(iE;s)BWyf2*L0+y0|zl9Ccx8NPtO^LaB=ERL3j+_P=0s)p^ode zf*VwNmrRSv)PqXC9>WN1v5_FI>o`fC`6lSpqTF!e$*~pJ(^IxGVIA!VZ{gZ&(ihOq zb;4ChbKAd7hC$ynqyovvRF%S`Q~}}foU15Q*XB!2xTWnxVy<0Oej8W$qPAg$carWQ z{v10~?q|~K<2$vlPe5Ofm1Js210A_okHi}GS`_K+2-mjpd0bCz!w+nu&4{1p>_vP! z*DF%~DQ2M%sGyxRZE!P*@PSmsMs=FO&KXX3kyia-(8fZ@06R0Dv!Tt9b|Awg@ z&PVztAOV5qoQWwg-B!MWN)~b6wecsmv9iQ7ah9Rt0_6Y0HgJpZJ5C+x$Xgm;x-s$+ z58&Kp>#9MSy_}7?o>D&vcA@ctWVlBK{m4|Ai?3~F)$xM#5aN6KDO5%aXq1}Lq!{L?GL^G2T>?F z30alO(U1%0NGneVx=~;W@l%|W2$ST@roytAhO;-}@ti?ii1$t9r6})^-c$wt*HMDB zFXZ);C!Rk4>6k`B0nSnsI?sjb_>M+(B&I+%;yDNxwQ0?W*XP{9`R!4gyx)<~pY$I& z_fzK$n`gBx`#q*3-x1RFe;wom5a~f;6Ec52cG8KWq@TvToNu{Smy0n8S0Fte`4bUO zZ43N`W4X4AN+Z6h=c>JalxsR-QTD0rP*&31`@d-~Dnm3fB%^{Dgwx_6GGF6dN}gxL z!);;Z)$yNg>?s`@O}r}QzqnV-KZQuILYeO<-dn4Fi%l#B{)Qc%a=qzxckScM56*SecJCMjW+?=#Q zr2WYCZ;!#G}xYxCE`jhv~;7iJr~ zL!Md0bJ{W^NZ-x*ku)!-jyVfE#7jMgKwR77o?NI!fn-#6bI#>vN&N?G6Bn($u_`%+ zVP8t+!)=s`M|g~_cCO94lYCQX@*wdun8CI(k#HET?jZdQ;rTYdx^%*JH=Oi`nj!yj zv5&6U<3}?5!THt}D)UX@!-Tin3i1&CgEEEGFm|+!udw+^=D)wlEFeCUND<1-v1RL% zKGMz46KZA~?qN;FU0xvk3uhafww!_k2=BDrQ6uM|=PUqH_k)MoJDMXqq(+#a8lBu+x)AQiK8^}$FxyGpGI|@BhuLf z-G38Ouq|f_&X`m_j{=o3I%g>1D^%XtHa>z9Q_1JU2B@Pv*Frdt5S~ljvGEhT-4DC*V{@13ID?N8=TX*wwv^c_S$UX_ej4>*$Xsq zo^v$UzQYpO%jPSHtH@i0ygKwwcLK?D30tTzX9mun19tW7|FX8fUEiLeeZzeNyY%w) z4eirEtZ%4qKxp5vPGKF|^$Y9O)7PVact2n7cH!Z^eqBO+;i26_JM;_f=lU}Yukb(JbQ*tq zSN|uwy5BzZe`@U*aX7VSVWNn}xjh%s#0oCpD^RFJ!D0*YR`U3g*jVur!9jsRLBU0e z6pUzH$&(?vzoRc|a^&vF15UQDp~ziscw*Fq$Q_aUqeew;`rq-dIU=`4?%?`5bNy?~ zT#Y;sxhZmY)M#D%8rGF?AE{#_x4NPAQ5i=^ZjGAgqou8pdz2P6nsU2ncU;sc;t|c*+S(p9p2V%XTds3ETYY5M6uC*^bqlV= z^XAMD=!+U>Zs-5k*5t^o3j&XNQmC0UF>T2O1?qTHC5_w}c|fDPDRMoHx_1=O<)SAf zR&vvo?Yi~IEvj0h?ADMhay$3%zj_t1`iAGjv;`TCdg3Mje_eMLBtGg%UEu$9$==XT zZimbNS9?*DBW8wrmwSCY5-!m}#*l{{xs9>d6uHM8k+D9WLH#b?BA$To%z+CMhIvy) ztP1nKNVOo`?@b)BdbGDl=2Sdk#$6RS+~`g>ILeo;W5ny#-l5Sv9V7Z|@Wze#{{acP Bu}A;_ delta 30610 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

      E)=%ahKKK9K>boi91W`d< z3JfDNE8#wbf3SJ4Ft)913HhDK3&k{)tIm0f^AKfTk@f(WlfMIRb9Umo8RYlCO`J0c zcP0J0es~&ApdtxTM|mnZZ6hBje1Y>9(scCa4Cd*p691PQB*e9(t-;Kcn?ODB$=5N8 zc+~L&Y3+#wa?N4Vli@Y4x#;6Rek8QCg%1+fQGx;uZAIM(&*#*UlKhR_q$A;5IF9sk zoCk^jLmf?2h@&axB1lh89nCpA5&ug3D%TVwoEy_n&NrKgj$K@Qo$v`0b^qO_4LXas z@FDr_sb~=w4zU?)NPlJo-ENA|2HJ|=K>vj$y`mrUR2c4UZC{92;U&Dn7yzrmL)wkW+r_!r;Zm` zoV0?}7l%5klU9Ln9@5L$do&^cwOg7Atqpw;kzYxSIt~&3{-2xQp`t#{_B;LG{IGrS z@p*pRi=H`OJG^2VPnf@_Z}|0Gp7W_=K4NRcp2$%V>;GTE|H?#cir7ktHMT@l z)aFO*jaVPCBXYEx8x>Jr#P$Hv$K;CGWWsABM@MXmoDjebH%07p(@0q#v7P&mjU1(f z@C7wIcf8(+?K6iA%^AL;mgiA+BHmBN+z|{@j HxH10^hth3Q diff --git a/conf/locale/rtl/LC_MESSAGES/djangojs.po b/conf/locale/rtl/LC_MESSAGES/djangojs.po index 990ca0812f..fec15a3609 100644 --- a/conf/locale/rtl/LC_MESSAGES/djangojs.po +++ b/conf/locale/rtl/LC_MESSAGES/djangojs.po @@ -26,8 +26,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.1a\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:51+0000\n" -"PO-Revision-Date: 2015-08-14 13:52:03.060189\n" +"POT-Creation-Date: 2015-08-21 14:38+0000\n" +"PO-Revision-Date: 2015-08-21 14:39:20.002663\n" "Last-Translator: \n" "Language-Team: openedx-translation \n" "MIME-Version: 1.0\n" @@ -2097,13 +2097,13 @@ msgstr "يقخححثي خر فشقلثف" #: common/static/js/src/jquery.timeago.locale.js #, c-format msgid "%s ago" -msgstr "%س شلخ" +msgstr "%s شلخ" #. Translators: %s will be a time quantity, such as "4 minutes" or "1 day" #: common/static/js/src/jquery.timeago.locale.js #, c-format msgid "%s from now" -msgstr "%س بقخو رخص" +msgstr "%s بقخو رخص" #: common/static/js/src/jquery.timeago.locale.js msgid "less than a minute" @@ -2117,8 +2117,8 @@ msgstr "شزخعف ش وهرعفث" #, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "%ي وهرعفث" -msgstr[1] "%ي وهرعفثس" +msgstr[0] "%d وهرعفث" +msgstr[1] "%d وهرعفثس" #: common/static/js/src/jquery.timeago.locale.js msgid "about an hour" @@ -2128,8 +2128,8 @@ msgstr "شزخعف شر اخعق" #, c-format msgid "about %d hour" msgid_plural "about %d hours" -msgstr[0] "شزخعف %ي اخعق" -msgstr[1] "شزخعف %ي اخعقس" +msgstr[0] "شزخعف %d اخعق" +msgstr[1] "شزخعف %d اخعقس" #: common/static/js/src/jquery.timeago.locale.js msgid "a day" @@ -2139,8 +2139,8 @@ msgstr "ش يشغ" #, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "%ي يشغ" -msgstr[1] "%ي يشغس" +msgstr[0] "%d يشغ" +msgstr[1] "%d يشغس" #: common/static/js/src/jquery.timeago.locale.js msgid "about a month" @@ -2150,8 +2150,8 @@ msgstr "شزخعف ش وخرفا" #, c-format msgid "%d month" msgid_plural "%d months" -msgstr[0] "%ي وخرفا" -msgstr[1] "%ي وخرفاس" +msgstr[0] "%d وخرفا" +msgstr[1] "%d وخرفاس" #: common/static/js/src/jquery.timeago.locale.js msgid "about a year" @@ -2161,8 +2161,8 @@ msgstr "شزخعف ش غثشق" #, c-format msgid "%d year" msgid_plural "%d years" -msgstr[0] "%ي غثشق" -msgstr[1] "%ي غثشقس" +msgstr[0] "%d غثشق" +msgstr[1] "%d غثشقس" #. Translators: please note that this is not a literal flag, but rather a #. report @@ -2390,8 +2390,8 @@ msgid "Team description cannot have more than 300 characters." msgstr "فثشو يثسذقهحفهخر ذشررخف اشدث وخقث فاشر 300 ذاشقشذفثقس." #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." -msgstr "غخع شقث رخف ذعققثرفمغ ش وثوزثق خب شرغ فثشوس." +msgid "You are not currently a member of any team." +msgstr "غخع شقث رخف ذعققثرفمغ ش وثوزثق خب شرغ فثشو." #: lms/djangoapps/teams/static/teams/js/views/team_card.js msgid "View %(span_start)s %(team_name)s %(span_end)s" @@ -3384,13 +3384,13 @@ msgstr "شر ثققخق خذذعققثي. حمثشسث فقغ شلشهر مشف #, c-format msgid "Viewing %s course" msgid_plural "Viewing %s courses" -msgstr[0] "دهثصهرل %س ذخعقسث" -msgstr[1] "دهثصهرل %س ذخعقسثس" +msgstr[0] "دهثصهرل %s ذخعقسث" +msgstr[1] "دهثصهرل %s ذخعقسثس" #: lms/static/js/discovery/views/search_form.js #, c-format msgid "We couldn't find any results for \"%s\"." -msgstr "صث ذخعمير'ف بهري شرغ قثسعمفس بخق \"%س\"." +msgstr "صث ذخعمير'ف بهري شرغ قثسعمفس بخق \"%s\"." #: lms/static/js/discovery/views/search_form.js #: lms/templates/search/search_error.underscore @@ -3624,8 +3624,8 @@ msgstr "وشقن ثرقخمموثرف ذخيث شس عرعسثي" #, c-format msgid "%s result" msgid_plural "%s results" -msgstr[0] "%س قثسعمف" -msgstr[1] "%س قثسعمفس" +msgstr[0] "%s قثسعمف" +msgstr[1] "%s قثسعمفس" #: lms/static/js/student_account/account.js msgid "The data could not be saved." @@ -4207,7 +4207,7 @@ msgstr "هوشلث وعسف زث 450حط ط 150حط فقشرسحشقثرف حر #: cms/static/js/collections/group.js #, c-format msgid "Group %s" -msgstr "لقخعح %س" +msgstr "لقخعح %s" #. Translators: Dictionary used for creation ids that are used in #. default group names. For example: A, B, AA in Group A, @@ -5285,7 +5285,7 @@ msgid "" "class=\"complete-course\" onClick=completeOrder(this)>%s" msgstr "" "" +"class=\"complete-course\" onClick=completeOrder(this)>%s" #: lms/templates/commerce/receipt.underscore #: lms/templates/verify_student/payment_confirmation_step.underscore @@ -6732,7 +6732,7 @@ msgstr "ذاشحفثق رشوث" #: cms/templates/js/edit-chapter.underscore #, python-format msgid "Chapter %s" -msgstr "ذاشحفثق %س" +msgstr "ذاشحفثق %s" #: cms/templates/js/edit-chapter.underscore msgid "provide the title/name of the chapter that will be used in navigating" @@ -6745,7 +6745,7 @@ msgstr "ذاشحفثق شسسثف" #: cms/templates/js/edit-chapter.underscore #, python-format msgid "path/to/introductionToCookieBaking-CH%d.pdf" -msgstr "حشفا/فخ/هرفقخيعذفهخرفخذخخنهثزشنهرل-ذا%ي.حيب" +msgstr "حشفا/فخ/هرفقخيعذفهخرفخذخخنهثزشنهرل-ذا%d.حيب" #: cms/templates/js/edit-chapter.underscore msgid "upload a PDF file or provide the path to a Studio asset file" @@ -7256,6 +7256,28 @@ msgstr "" "حمثشسث ذاثذن فاث بخممخصهرل دشمهيشفهخر بثثيزشذنس شري قثبمثذف فاثو هر غخعق " "ذخعقسث سثففهرلس:" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "دثقهبهذشفهخر ذاثذنحخهرف" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "وعسف ذخوحمثفث دثقهبهذشفهخر ذاثذنحخهرف" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "دثقهبهذشفهخر ذاثذنحخهرف فخ زث ذخوحمثفثي" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" +"مثشقرثقس صاخ قثضعهقث دثقهبهذشفهخر وعسف حشسس فاث سثمثذفثي ذاثذنحخهرف فخ سثث " +"فاث ذخرفثرف هر فاهس عرهف. مثشقرثقس صاخ يخ رخف قثضعهقث دثقهبهذشفهخر سثث فاهس " +"ذخرفثرف زغ يثبشعمف." + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "ثيهف فاث رشوث" diff --git a/conf/locale/ru/LC_MESSAGES/django.mo b/conf/locale/ru/LC_MESSAGES/django.mo index 19035c95c96d19d966f1a688e0c4a4eff0ea954a..91b0c8574c2b4ea8ba5547d822510fe02b44c9c2 100644 GIT binary patch delta 10194 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 SD~{vAXvh0%PTuQ>g8m06n|bH} diff --git a/conf/locale/ru/LC_MESSAGES/django.po b/conf/locale/ru/LC_MESSAGES/django.po index 77b30f5a71..8755062b86 100644 --- a/conf/locale/ru/LC_MESSAGES/django.po +++ b/conf/locale/ru/LC_MESSAGES/django.po @@ -180,7 +180,7 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" +"POT-Creation-Date: 2015-08-21 14:18+0000\n" "PO-Revision-Date: 2015-08-05 08:47+0000\n" "Last-Translator: Weyedide \n" "Language-Team: Russian (http://www.transifex.com/open-edx/edx-platform/language/ru/)\n" @@ -528,10 +528,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." msgstr "" -"Имя пользователя должно содержать только буквы от A до Z и цифры от 0 до 9, " -"без пробелов." #: common/djangoapps/student/forms.py #, python-format @@ -5056,29 +5056,6 @@ msgstr "" msgid "Free" msgstr "" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "" @@ -7568,10 +7545,6 @@ msgstr "" msgid "text_search is not yet supported." msgstr "" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -7584,6 +7557,10 @@ msgstr "" msgid "The supplied course_id {course_id} is not valid." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -7596,6 +7573,10 @@ msgstr "" msgid "Team id is required." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -8766,6 +8747,10 @@ msgstr "" msgid "Missing branch on fresh clone" msgstr "" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9128,6 +9113,11 @@ msgstr "Отмена" msgid "Course Number" msgstr "Номер курса" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "Ошибка:" @@ -10890,6 +10880,11 @@ msgstr "" msgid "Batch Enrollment" msgstr "" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "Электронные адреса/Имена пользователей" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -10905,11 +10900,6 @@ msgid "" " spelling." msgstr "" -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "Электронные адреса/Имена пользователей" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -10949,7 +10939,6 @@ msgstr "" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "" @@ -10958,6 +10947,10 @@ msgstr "" msgid "Student List Management" msgstr "" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "" @@ -11336,7 +11329,6 @@ msgid "This section is graded." msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "" @@ -11373,7 +11365,7 @@ msgid "Enrollment is Closed" msgstr "" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" +msgid "Add {course_name} to Cart ({price} USD)" msgstr "" #: lms/templates/courseware/course_about.html @@ -11450,7 +11442,6 @@ msgid "Additional Resources" msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "" @@ -11816,54 +11807,6 @@ msgstr "" msgid "Course errors" msgstr "" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "О курсе {course_id}" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "Скоро" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "О курсе {course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "Новости - MITx 6.002x" @@ -12155,6 +12098,10 @@ msgstr "" msgid "Started - {start_date}" msgstr "" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "Скоро" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "" @@ -12346,8 +12293,8 @@ msgstr "" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -12537,10 +12484,6 @@ msgstr "" msgid "by most votes" msgstr "" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr ", " - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -13471,6 +13414,10 @@ msgstr "Название Курса:" msgid "Course Display Name:" msgstr "" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "Курс уже начался?" @@ -13487,6 +13434,10 @@ msgstr "Нет" msgid "Has the course ended?" msgstr "Курс уже закончился?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "" @@ -16310,10 +16261,6 @@ msgstr "" msgid "View Live" msgstr "" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "" @@ -18443,6 +18390,21 @@ msgid "" " Students and staff" msgstr "" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" @@ -18573,7 +18535,7 @@ msgstr "" #: cms/templates/widgets/problem-edit.html msgid "Explanation" -msgstr "" +msgstr "Пояснение" #: cms/templates/widgets/problem-edit.html msgid "Advanced Editor" diff --git a/conf/locale/ru/LC_MESSAGES/djangojs.mo b/conf/locale/ru/LC_MESSAGES/djangojs.mo index eecff248636337b1c95978c58846c0627b78a5e2..577a5d5b7be7d2546daca9e486ecf370a219e254 100644 GIT binary patch delta 36 pcmey?!uYL)al=P>4kJSaLlY}Q^T|Ku6+j#VBP$cb&58=4N&xOx3kv`M delta 36 lcmey?!uYL)al=P>4nq?KLt`rwqsc$z6<{2b&58=4N&xPQ3lRVS diff --git a/conf/locale/ru/LC_MESSAGES/djangojs.po b/conf/locale/ru/LC_MESSAGES/djangojs.po index 87249e232e..f420177e64 100644 --- a/conf/locale/ru/LC_MESSAGES/djangojs.po +++ b/conf/locale/ru/LC_MESSAGES/djangojs.po @@ -101,8 +101,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 02:41+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Russian (http://www.transifex.com/open-edx/edx-platform/language/ru/)\n" "MIME-Version: 1.0\n" @@ -2413,7 +2413,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -6998,6 +6998,25 @@ msgid "" "course settings:" msgstr "" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "" diff --git a/conf/locale/zh_CN/LC_MESSAGES/django.mo b/conf/locale/zh_CN/LC_MESSAGES/django.mo index 326cc644d07f96a954a8770ce9d5bcaac8092835..ac803d8b9d954cdb29928b1d689aa5dea893fc4d 100644 GIT binary patch delta 48242 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 diff --git a/conf/locale/zh_CN/LC_MESSAGES/django.po b/conf/locale/zh_CN/LC_MESSAGES/django.po index be3b387f1b..76f8d184ec 100644 --- a/conf/locale/zh_CN/LC_MESSAGES/django.po +++ b/conf/locale/zh_CN/LC_MESSAGES/django.po @@ -182,6 +182,7 @@ # 竹轩 , 2014 # 胡超威 , 2014 # 顾翔 , 2014 +# 黄鸿飞 <853885165@qq.com>, 2015 # #-#-#-#-# mako-studio.po (edx-platform) #-#-#-#-# # edX translation file # Copyright (C) 2015 edX @@ -231,6 +232,7 @@ # 张太红 , 2014 # 张太红 , 2014 # 竹轩 , 2014 +# 黄鸿飞 <853885165@qq.com>, 2015 # #-#-#-#-# messages.po (edx-platform) #-#-#-#-# # edX translation file # Copyright (C) 2013 edX @@ -261,7 +263,7 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" +"POT-Creation-Date: 2015-08-21 14:18+0000\n" "PO-Revision-Date: 2015-06-18 03:04+0000\n" "Last-Translator: louyihua \n" "Language-Team: Chinese (China) (http://www.transifex.com/open-edx/edx-platform/language/zh_CN/)\n" @@ -600,8 +602,10 @@ msgid "Your legal name must be a minimum of two characters long" msgstr "你的合法名字必须至少包含两个字符的长度" #: common/djangoapps/student/forms.py -msgid "Username should only consist of A-Z and 0-9, with no spaces." -msgstr "用户名只能包含英文字母A-Z大小写和阿拉伯数字0-9,不能包含空格。" +msgid "" +"Usernames must contain only letters, numbers, underscores (_), and hyphens " +"(-)." +msgstr "" #: common/djangoapps/student/forms.py #, python-format @@ -5091,26 +5095,6 @@ msgstr "" msgid "Free" msgstr "免费" -#. Translators: The join of three or more institution names (e.g., Harvard, -#. MIT, and Dartmouth). -#: lms/djangoapps/courseware/views.py -msgid "{first_institutions}, and {last_institution}" -msgstr "" - -#. Translators: The join of two institution names (e.g., Harvard and MIT). -#: lms/djangoapps/courseware/views.py -msgid "{first_institution} and {second_institution}" -msgstr "" - -#: lms/djangoapps/courseware/views.py -msgid "" -"I would like to receive email from {institution_series} and learn about its " -"other programs." -msgid_plural "" -"I would like to receive email from {institution_series} and learn about " -"their other programs." -msgstr[0] "" - #: lms/djangoapps/courseware/views.py msgid "Invalid location." msgstr "" @@ -7646,10 +7630,6 @@ msgstr "" msgid "text_search is not yet supported." msgstr "" -#: lms/djangoapps/teams/views.py -msgid "last_activity is not yet supported" -msgstr "" - #. Translators: 'ordering' is a string describing a way #. of ordering a list. For example, {ordering} may be #. 'name', indicating that the user wants to sort the @@ -7662,6 +7642,10 @@ msgstr "" msgid "The supplied course_id {course_id} is not valid." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "You are already in a team in this course." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "username or team_id must be specified." msgstr "" @@ -7674,6 +7658,10 @@ msgstr "" msgid "Team id is required." msgstr "" +#: lms/djangoapps/teams/views.py +msgid "This team is already full." +msgstr "" + #: lms/djangoapps/teams/views.py msgid "The user {username} is already a member of a team in this course." msgstr "" @@ -8857,6 +8845,10 @@ msgstr "提供了错误的课程地址" msgid "Missing branch on fresh clone" msgstr "在最近的复制中,丢失一些分支" +#: cms/djangoapps/contentstore/utils.py +msgid "Deleted group" +msgstr "" + #: cms/djangoapps/contentstore/management/commands/git_export.py msgid "" "Take the specified course and attempt to export it to a git repository\n" @@ -9230,6 +9222,11 @@ msgstr "取消" msgid "Course Number" msgstr "课程代码" +#: cms/templates/course_outline.html +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course Start Date:" +msgstr "" + #: cms/templates/html_error.html lms/templates/module-error.html msgid "Error:" msgstr "错误:" @@ -10999,6 +10996,11 @@ msgstr "评分标准" msgid "Batch Enrollment" msgstr "批量选课" +#: lms/templates/ccx/enrollment.html +#: lms/templates/instructor/instructor_dashboard_2/membership.html +msgid "Email Addresses/Usernames" +msgstr "电子邮箱地址/用户名" + #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "" @@ -11012,11 +11014,6 @@ msgid "" " spelling." msgstr "对该类问题您不会受到提示邮件,因此请仔细检查,确保拼写无误。" -#: lms/templates/ccx/enrollment.html -#: lms/templates/instructor/instructor_dashboard_2/membership.html -msgid "Email Addresses/Usernames" -msgstr "电子邮箱地址/用户名" - #: lms/templates/ccx/enrollment.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Auto Enroll" @@ -11056,7 +11053,6 @@ msgstr "如果 勾选该选项,用户将受到一封通知邮件。" #: lms/templates/ccx/enrollment.html #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html #: lms/templates/instructor/instructor_dashboard_2/membership.html msgid "Enroll" msgstr "选修" @@ -11065,6 +11061,10 @@ msgstr "选修" msgid "Student List Management" msgstr "管理学生列表" +#: lms/templates/ccx/enrollment.html +msgid "Enter username or email" +msgstr "" + #: lms/templates/ccx/grading_policy.html msgid "WARNING" msgstr "警告" @@ -11439,7 +11439,6 @@ msgid "This section is graded." msgstr "" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "An error occurred. Please try again later." msgstr "出现错误,请稍后再试。" @@ -11477,7 +11476,7 @@ msgid "Enrollment is Closed" msgstr "选课已关闭" #: lms/templates/courseware/course_about.html -msgid "Add {course_name} to Cart ({price})" +msgid "Add {course_name} to Cart ({price} USD)" msgstr "" #: lms/templates/courseware/course_about.html @@ -11554,7 +11553,6 @@ msgid "Additional Resources" msgstr "额外资源" #: lms/templates/courseware/course_about.html -#: lms/templates/courseware/mktg_course_about.html msgid "enroll" msgstr "" @@ -11922,54 +11920,6 @@ msgstr "" msgid "Course errors" msgstr "课程错误" -#: lms/templates/courseware/mktg_coming_soon.html -msgid "About {course_id}" -msgstr "关于{course_id}" - -#: lms/templates/courseware/mktg_coming_soon.html -#: lms/templates/dashboard/_dashboard_course_listing.html -msgid "Coming Soon" -msgstr "即将上线" - -#: lms/templates/courseware/mktg_course_about.html -msgid "About {course_number}" -msgstr "关于{course_number}" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Access Courseware" -msgstr "进入课程页面" - -#: lms/templates/courseware/mktg_course_about.html -msgid "You Are Enrolled" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enroll in" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. The "choose your student track" means users can select between taking the -#. course as an auditor, as a verified student, etc -#: lms/templates/courseware/mktg_course_about.html -msgid "and choose your student track" -msgstr "" - -#. Translators: This is the second line on a button users can click. The -#. first -#. line is "Enroll in COURSE_NAME" -#. 'Verification' here refers to verifying one's identity in order to receive -#. a -#. verified certificate. -#: lms/templates/courseware/mktg_course_about.html -msgid "and proceed to verification" -msgstr "" - -#: lms/templates/courseware/mktg_course_about.html -msgid "Enrollment Is Closed" -msgstr "" - #: lms/templates/courseware/news.html msgid "News - MITx 6.002x" msgstr "新闻 - MITx 6.002x" @@ -12263,6 +12213,10 @@ msgstr "" msgid "Started - {start_date}" msgstr "" +#: lms/templates/dashboard/_dashboard_course_listing.html +msgid "Coming Soon" +msgstr "即将上线" + #: lms/templates/dashboard/_dashboard_course_listing.html msgid "Starts - {start_date}" msgstr "" @@ -12453,8 +12407,8 @@ msgstr "" #. credit provider, such as 'State University' or 'Happy Fun Company' #: lms/templates/dashboard/_dashboard_credit_info.html msgid "" -"Your credit has been processed and approved. Congratulations. Please " -"see {link_to_provider_site} for more information." +"Your credit has been processed and approved. Congratulations!. Please" +" see {link_to_provider_site} for more information." msgstr "" #: lms/templates/dashboard/_dashboard_credit_info.html @@ -12644,10 +12598,6 @@ msgstr "" msgid "by most votes" msgstr "" -#: lms/templates/discussion/_user_profile.html -msgid ", " -msgstr "," - #: lms/templates/discussion/_user_profile.html #, python-format msgid "%s discussion started" @@ -13581,6 +13531,10 @@ msgstr "课程名称:" msgid "Course Display Name:" msgstr "课程显示名称:" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Course End Date:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Has the course started?" msgstr "课程开始了吗?" @@ -13597,6 +13551,10 @@ msgstr "尚未" msgid "Has the course ended?" msgstr "课程结束了吗?" +#: lms/templates/instructor/instructor_dashboard_2/course_info.html +msgid "Number of sections:" +msgstr "" + #: lms/templates/instructor/instructor_dashboard_2/course_info.html msgid "Grade Cutoffs:" msgstr "分数线:" @@ -16419,10 +16377,6 @@ msgstr "点击以在新的标签页中使用LMS打开课件" msgid "View Live" msgstr "在线查看" -#: cms/templates/course_outline.html -msgid "Course Start Date:" -msgstr "课程开始日期:" - #: cms/templates/course_outline.html msgid "Edit Start Date" msgstr "编辑开始日期" @@ -18611,6 +18565,21 @@ msgid "" " Students and staff" msgstr "内容组已不复存在。请选择另一个,或者允许所有学生及教员访问" +#: cms/templates/visibility_editor.html +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "Verification checkpoint to complete" +msgstr "" + +#: cms/templates/visibility_editor.html +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this component. Learners who do not require verification see " +"this content by default." +msgstr "" + #: cms/templates/emails/activation_email.txt msgid "" "Thank you for signing up for {studio_name}! To activate your account, please" diff --git a/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo b/conf/locale/zh_CN/LC_MESSAGES/djangojs.mo index a9b460b92cfb8606bdf714aea5e94053ac411b47..858d4c7b1620f01662a2f200f998ad48c6aff630 100644 GIT binary patch delta 36 ocmaFc#`d<2ZG+-h4kJSaLlY}Q^U0cD6~G)LD delta 36 lcmaFc#`d<2ZG+-h4nq?KLt`rwqsf|I6<{2b&4FKK`T+2X3{e08 diff --git a/conf/locale/zh_CN/LC_MESSAGES/djangojs.po b/conf/locale/zh_CN/LC_MESSAGES/djangojs.po index fa693f7d0a..f15920ca35 100644 --- a/conf/locale/zh_CN/LC_MESSAGES/djangojs.po +++ b/conf/locale/zh_CN/LC_MESSAGES/djangojs.po @@ -36,7 +36,7 @@ # Jianfei Wang , 2013 # 沈世奇 , 2013 # Wentao Han , 2013 -# wzhd, 2015 +# wzhd , 2015 # 熊冬升 , 2013 # yan9yu, 2014 # youjialin , 2014 @@ -81,7 +81,7 @@ # 沈世奇 , 2013 # wanghe <1636807295@qq.com>, 2014 # Wentao Han , 2015 -# wzhd, 2015 +# wzhd , 2015 # 熊冬升 , 2013 # xianwei yang , 2014 # 刘知远 , 2013 @@ -127,8 +127,8 @@ msgid "" msgstr "" "Project-Id-Version: edx-platform\n" "Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n" -"POT-Creation-Date: 2015-08-14 13:42+0000\n" -"PO-Revision-Date: 2015-08-14 13:44+0000\n" +"POT-Creation-Date: 2015-08-21 14:17+0000\n" +"PO-Revision-Date: 2015-08-21 12:22+0000\n" "Last-Translator: Sarina Canelake \n" "Language-Team: Chinese (China) (http://www.transifex.com/open-edx/edx-platform/language/zh_CN/)\n" "MIME-Version: 1.0\n" @@ -2418,7 +2418,7 @@ msgid "Team description cannot have more than 300 characters." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/my_teams.js -msgid "You are not currently a member of any teams." +msgid "You are not currently a member of any team." msgstr "" #: lms/djangoapps/teams/static/teams/js/views/team_card.js @@ -6960,6 +6960,25 @@ msgid "" "course settings:" msgstr "请检查以下验证反馈并结合这样反馈修改您的课程设置:" +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification Checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Must complete verification checkpoint" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "Verification checkpoint to be completed" +msgstr "" + +#: cms/templates/js/verification-access-editor.underscore +msgid "" +"Learners who require verification must pass the selected checkpoint to see " +"the content in this unit. Learners who do not require verification see this " +"content by default." +msgstr "" + #: cms/templates/js/xblock-string-field-editor.underscore msgid "Edit the name" msgstr "编辑名称" From 3901c03d3009d43194a641caea095a83dc9d8b73 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Fri, 21 Aug 2015 09:00:42 -0700 Subject: [PATCH 71/80] Upgrade django-ipware to 1.1.0 --- requirements/edx/base.txt | 1 + requirements/edx/github.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 1b600398e8..c25f493229 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -19,6 +19,7 @@ django-countries==3.3 django-extensions==1.2.5 django-filter==0.6.0 django-followit==0.0.3 +django-ipware==1.1.0 django-keyedcache==1.4-6 django-kombu==0.9.4 django-mako==0.1.5pre diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 301d34abc4..14906bfa0b 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -16,7 +16,6 @@ git+https://github.com/edx/django-staticfiles.git@031bdeaea85798b8c284e2a09977df git+https://github.com/edx/nltk.git@2.0.6#egg=nltk==2.0.6 -e git+https://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev -e git+https://github.com/eventbrite/zendesk.git@d53fe0e81b623f084e91776bcf6369f8b7b63879#egg=zendesk --e git+https://github.com/un33k/django-ipware.git@42cb1bb1dc680a60c6452e8bb2b843c2a0382c90#egg=django-ipware -e git+https://github.com/appliedsec/pygeoip.git@95e69341cebf5a6a9fbf7c4f5439d458898bdc3b#egg=pygeoip -e git+https://github.com/jazkarta/edx-jsme.git@c5bfa5d361d6685d8c643838fc0055c25f8b7999#egg=edx-jsme -e git+https://github.com/pmitros/django-pyfs.git@d175715e0fe3367ec0f1ee429c242d603f6e8b10#egg=djpyfs From 0f590adde2839aa4f14c4ee9f2b843b528b48343 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Fri, 21 Aug 2015 08:38:51 -0700 Subject: [PATCH 72/80] Upgrade django-extensions to 1.5.5 --- requirements/edx/base.txt | 2 +- requirements/edx/github.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 1b600398e8..448f6f7e60 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -16,7 +16,7 @@ defusedxml==0.4.1 django-babel-underscore==0.3.0 django-celery==3.1.16 django-countries==3.3 -django-extensions==1.2.5 +django-extensions==1.5.5 django-filter==0.6.0 django-followit==0.0.3 django-keyedcache==1.4-6 diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index 301d34abc4..6d8e941842 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -40,8 +40,8 @@ git+https://github.com/edx/rfc6266.git@v0.0.5-edx#egg=rfc6266==0.0.5-edx -e git+https://github.com/edx/event-tracking.git@0.2.0#egg=event-tracking -e git+https://github.com/edx-solutions/django-splash.git@7579d052afcf474ece1239153cffe1c89935bc4f#egg=django-splash -e git+https://github.com/edx/acid-block.git@e46f9cda8a03e121a00c7e347084d142d22ebfb7#egg=acid-xblock --e git+https://github.com/edx/edx-ora2.git@release-2015-08-19T17.17#egg=edx-ora2 --e git+https://github.com/edx/edx-submissions.git@7c766502058e04bc9094e6cbe286e949794b80b3#egg=edx-submissions +-e git+https://github.com/edx/edx-ora2.git@release-2015-08-21T16.14#egg=edx-ora2 +-e git+https://github.com/edx/edx-submissions.git@906c7b7a27e1a8684834334a4bf7fb50a3aede30#egg=edx-submissions -e git+https://github.com/edx/opaque-keys.git@27dc382ea587483b1e3889a3d19cbd90b9023a06#egg=opaque-keys git+https://github.com/edx/ease.git@release-2015-07-14#egg=ease==0.1.3 git+https://github.com/edx/i18n-tools.git@v0.1.3#egg=i18n-tools==v0.1.3 From 5d53c4a12a8835497d6dc9fde5b68e44c0e80a50 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Fri, 21 Aug 2015 07:46:24 -0700 Subject: [PATCH 73/80] Remove django-followit and django-keyedcache --- docs/shared/requirements.txt | 2 -- requirements/edx/base.txt | 2 -- 2 files changed, 4 deletions(-) diff --git a/docs/shared/requirements.txt b/docs/shared/requirements.txt index 7d194fa2bb..bbda26ef24 100644 --- a/docs/shared/requirements.txt +++ b/docs/shared/requirements.txt @@ -12,8 +12,6 @@ distribute>=0.6.28, <0.7 django-celery==3.0.17 django-countries==1.5 django-filter==0.6.0 -django-followit==0.0.3 -django-keyedcache==1.4-6 django-kombu==0.9.4 django-mako==0.1.5pre django-masquerade==0.1.6 diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index c25f493229..d3c5cf192f 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -18,9 +18,7 @@ django-celery==3.1.16 django-countries==3.3 django-extensions==1.2.5 django-filter==0.6.0 -django-followit==0.0.3 django-ipware==1.1.0 -django-keyedcache==1.4-6 django-kombu==0.9.4 django-mako==0.1.5pre django-model-utils==1.4.0 From f07c303628dcfc729ac1abf2f0837b8390a716a3 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Fri, 21 Aug 2015 13:56:44 -0400 Subject: [PATCH 74/80] Revert "JS Flakiness in TeamDiscussionView" --- .../js/spec/views/team_discussion_spec.js | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js b/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js index a8bc9d888f..889577224b 100644 --- a/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js +++ b/lms/djangoapps/teams/static/teams/js/spec/views/team_discussion_spec.js @@ -8,20 +8,12 @@ define([ var discussionView, createDiscussionView, createPost, expandReplies, postReply; beforeEach(function() { - runs(function() { - setFixtures('

      '); - $('.discussion-module').data('course-id', TeamSpecHelpers.testCourseID); - $('.discussion-module').data('discussion-id', TeamSpecHelpers.testTeamDiscussionID); - $('.discussion-module').data('user-create-comment', true); - $('.discussion-module').data('user-create-subcomment', true); - DiscussionSpecHelper.setUnderscoreFixtures(); - }); - - waitsFor( - function() {return typeof(jQuery)!='undefined' && jQuery.active==0;}, - "Ajax did not finish", - 10000 - }) + setFixtures('
      '); + $('.discussion-module').data('course-id', TeamSpecHelpers.testCourseID); + $('.discussion-module').data('discussion-id', TeamSpecHelpers.testTeamDiscussionID); + $('.discussion-module').data('user-create-comment', true); + $('.discussion-module').data('user-create-subcomment', true); + DiscussionSpecHelper.setUnderscoreFixtures(); }); createDiscussionView = function(requests, threads) { From 01425c0baf8167afeda39d8ddb0844f390086417 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 21 Aug 2015 16:55:37 -0400 Subject: [PATCH 75/80] bump version of edx-proctoring --- requirements/edx/github.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/edx/github.txt b/requirements/edx/github.txt index dd67c1b95d..907a747c70 100644 --- a/requirements/edx/github.txt +++ b/requirements/edx/github.txt @@ -57,7 +57,7 @@ git+https://github.com/edx/ecommerce-api-client.git@1.1.0#egg=ecommerce-api-clie -e git+https://github.com/edx/edx-user-state-client.git@30c0ad4b9f57f8d48d6943eb585ec8a9205f4469#egg=edx-user-state-client -e git+https://github.com/edx/edx-organizations.git@release-2015-08-03#egg=edx-organizations -git+https://github.com/edx/edx-proctoring.git@0.7.1#egg=edx-proctoring==0.7.1 +git+https://github.com/edx/edx-proctoring.git@0.7.2#egg=edx-proctoring==0.7.2 # Third Party XBlocks -e git+https://github.com/mitodl/edx-sga@172a90fd2738f8142c10478356b2d9ed3e55334a#egg=edx-sga From 88a038aa1ee8f7115f1da9d38034b098a7ec8863 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 21 Aug 2015 18:08:13 +0500 Subject: [PATCH 76/80] Fixed email parm function for CCX email modified: lms/djangoapps/instructor/tests/test_enrollment.py --- lms/djangoapps/ccx/views.py | 2 +- lms/djangoapps/instructor/enrollment.py | 14 ++- .../instructor/tests/test_enrollment.py | 109 +++++++++++++++++- .../emails/enroll_email_enrolledmessage.txt | 2 +- .../emails/enroll_email_enrolledsubject.txt | 2 +- 5 files changed, 120 insertions(+), 9 deletions(-) diff --git a/lms/djangoapps/ccx/views.py b/lms/djangoapps/ccx/views.py index 931ba33b08..f34bd8acb4 100644 --- a/lms/djangoapps/ccx/views.py +++ b/lms/djangoapps/ccx/views.py @@ -410,7 +410,7 @@ def ccx_invite(request, course, ccx=None): try: validate_email(email) course_key = CCXLocator.from_course_locator(course.id, ccx.id) - email_params = get_email_params(course, auto_enroll) + email_params = get_email_params(course, auto_enroll, course_key=course_key, display_name=ccx.display_name) if action == 'Enroll': enroll_email( course_key, diff --git a/lms/djangoapps/instructor/enrollment.py b/lms/djangoapps/instructor/enrollment.py index ebfea8437a..305ee8b636 100644 --- a/lms/djangoapps/instructor/enrollment.py +++ b/lms/djangoapps/instructor/enrollment.py @@ -261,7 +261,7 @@ def _reset_module_attempts(studentmodule): studentmodule.save() -def get_email_params(course, auto_enroll, secure=True): +def get_email_params(course, auto_enroll, secure=True, course_key=None, display_name=None): """ Generate parameters used when parsing email templates. @@ -270,6 +270,8 @@ def get_email_params(course, auto_enroll, secure=True): """ protocol = 'https' if secure else 'http' + course_key = course_key or course.id.to_deprecated_string() + display_name = display_name or course.display_name_with_default stripped_site_name = microsite.get_value( 'SITE_NAME', @@ -285,7 +287,7 @@ def get_email_params(course, auto_enroll, secure=True): course_url = u'{proto}://{site}{path}'.format( proto=protocol, site=stripped_site_name, - path=reverse('course_root', kwargs={'course_id': course.id.to_deprecated_string()}) + path=reverse('course_root', kwargs={'course_id': course_key}) ) # We can't get the url to the course's About page if the marketing site is enabled. @@ -294,7 +296,7 @@ def get_email_params(course, auto_enroll, secure=True): course_about_url = u'{proto}://{site}{path}'.format( proto=protocol, site=stripped_site_name, - path=reverse('about_course', kwargs={'course_id': course.id.to_deprecated_string()}) + path=reverse('about_course', kwargs={'course_id': course_key}) ) is_shib_course = uses_shib(course) @@ -304,6 +306,7 @@ def get_email_params(course, auto_enroll, secure=True): 'site_name': stripped_site_name, 'registration_url': registration_url, 'course': course, + 'display_name': display_name, 'auto_enroll': auto_enroll, 'course_url': course_url, 'course_about_url': course_about_url, @@ -321,6 +324,7 @@ def send_mail_to_student(student, param_dict, language=None): [ `site_name`: name given to edX instance (a `str`) `registration_url`: url for registration (a `str`) + `display_name` : display name of a course (a `str`) `course_id`: id of course (a `str`) `auto_enroll`: user input option (a `str`) `course_url`: url of course (a `str`) @@ -338,8 +342,8 @@ def send_mail_to_student(student, param_dict, language=None): """ # add some helpers and microconfig subsitutions - if 'course' in param_dict: - param_dict['course_name'] = param_dict['course'].display_name_with_default + if 'display_name' in param_dict: + param_dict['course_name'] = param_dict['display_name'] param_dict['site_name'] = microsite.get_value( 'SITE_NAME', diff --git a/lms/djangoapps/instructor/tests/test_enrollment.py b/lms/djangoapps/instructor/tests/test_enrollment.py index 1a6e3d268e..02b8dca271 100644 --- a/lms/djangoapps/instructor/tests/test_enrollment.py +++ b/lms/djangoapps/instructor/tests/test_enrollment.py @@ -5,6 +5,7 @@ Unit tests for instructor.enrollment methods. import json import mock +from mock import patch from abc import ABCMeta from courseware.models import StudentModule from django.conf import settings @@ -12,11 +13,17 @@ from django.test import TestCase from django.utils.translation import get_language from django.utils.translation import override as override_language from nose.plugins.attrib import attr +from ccx_keys.locator import CCXLocator from student.tests.factories import UserFactory from xmodule.modulestore.django import modulestore from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory +from ccx.tests.factories import CcxFactory from student.models import CourseEnrollment, CourseEnrollmentAllowed +from student.roles import CourseCcxCoachRole # pylint: disable=import-error +from student.tests.factories import ( # pylint: disable=import-error + AdminFactory +) from instructor.enrollment import ( EmailEnrollmentState, enroll_email, @@ -30,7 +37,7 @@ from opaque_keys.edx.locations import SlashSeparatedCourseKey from submissions import api as sub_api from student.models import anonymous_id_for_user -from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, TEST_DATA_SPLIT_MODULESTORE @attr('shard_1') @@ -566,6 +573,53 @@ class TestSendBetaRoleEmail(TestCase): send_beta_role_email(bad_action, self.user, self.email_params) +@attr('shard_1') +class TestGetEmailParamsCCX(ModuleStoreTestCase): + """ + Test what URLs the function get_email_params for CCX student enrollment. + """ + + MODULESTORE = TEST_DATA_SPLIT_MODULESTORE + + @patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True}) + def setUp(self): + super(TestGetEmailParamsCCX, self).setUp() + + self.course = CourseFactory.create() + self.coach = AdminFactory.create() + role = CourseCcxCoachRole(self.course.id) + role.add_users(self.coach) + self.ccx = CcxFactory(course_id=self.course.id, coach=self.coach) + self.course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id) + # Explicitly construct what we expect the course URLs to be + site = settings.SITE_NAME + self.course_url = u'https://{}/courses/{}/'.format( + site, + self.course_key + ) + self.course_about_url = self.course_url + 'about' + self.registration_url = u'https://{}/register'.format( + site, + ) + + @patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True}) + def test_ccx_enrollment_email_params(self): + # For a CCX, what do we expect to get for the URLs? + # Also make sure `auto_enroll` is properly passed through. + result = get_email_params( + self.course, + True, + course_key=self.course_key, + display_name=self.ccx.display_name + ) + + self.assertEqual(result['display_name'], self.ccx.display_name) + self.assertEqual(result['auto_enroll'], True) + self.assertEqual(result['course_about_url'], self.course_about_url) + self.assertEqual(result['registration_url'], self.registration_url) + self.assertEqual(result['course_url'], self.course_url) + + @attr('shard_1') class TestGetEmailParams(ModuleStoreTestCase): """ @@ -615,13 +669,18 @@ class TestGetEmailParams(ModuleStoreTestCase): class TestRenderMessageToString(ModuleStoreTestCase): """ Test that email templates can be rendered in a language chosen manually. + Test CCX enrollmet email. """ + MODULESTORE = TEST_DATA_SPLIT_MODULESTORE + def setUp(self): super(TestRenderMessageToString, self).setUp() self.subject_template = 'emails/enroll_email_allowedsubject.txt' self.message_template = 'emails/enroll_email_allowedmessage.txt' self.course = CourseFactory.create() + self.course_key = None + self.ccx = None def get_email_params(self): """ @@ -633,6 +692,27 @@ class TestRenderMessageToString(ModuleStoreTestCase): return email_params + def get_email_params_ccx(self): + """ + Returns a dictionary of parameters used to render an email for CCX. + """ + coach = AdminFactory.create() + role = CourseCcxCoachRole(self.course.id) + role.add_users(coach) + self.ccx = CcxFactory(course_id=self.course.id, coach=coach) + self.course_key = CCXLocator.from_course_locator(self.course.id, self.ccx.id) + + email_params = get_email_params( + self.course, + True, + course_key=self.course_key, + display_name=self.ccx.display_name + ) + email_params["email_address"] = "user@example.com" + email_params["full_name"] = "Jean Reno" + + return email_params + def get_subject_and_message(self, language): """ Returns the subject and message rendered in the specified language. @@ -644,6 +724,18 @@ class TestRenderMessageToString(ModuleStoreTestCase): language=language ) + def get_subject_and_message_ccx(self): + """ + Returns the subject and message rendered in the specified language for CCX. + """ + subject_template = 'emails/enroll_email_enrolledsubject.txt' + message_template = 'emails/enroll_email_enrolledmessage.txt' + return render_message_to_string( + subject_template, + message_template, + self.get_email_params_ccx() + ) + def test_subject_and_message_translation(self): subject, message = self.get_subject_and_message('fr') language_after_rendering = get_language() @@ -658,3 +750,18 @@ class TestRenderMessageToString(ModuleStoreTestCase): subject, message = self.get_subject_and_message(None) self.assertIn("You have been", subject) self.assertIn("You have been", message) + + @patch.dict('django.conf.settings.FEATURES', {'CUSTOM_COURSES_EDX': True}) + def test_render_message_ccx(self): + """ + Test email template renders for CCX. + """ + subject, message = self.get_subject_and_message_ccx() + self.assertIn(self.ccx.display_name, subject) + self.assertIn(self.ccx.display_name, message) + site = settings.SITE_NAME + course_url = u'https://{}/courses/{}/'.format( + site, + self.course_key + ) + self.assertIn(course_url, message) diff --git a/lms/templates/emails/enroll_email_enrolledmessage.txt b/lms/templates/emails/enroll_email_enrolledmessage.txt index a0a817473e..2fe1bcb236 100644 --- a/lms/templates/emails/enroll_email_enrolledmessage.txt +++ b/lms/templates/emails/enroll_email_enrolledmessage.txt @@ -5,7 +5,7 @@ ${_("Dear {full_name}").format(full_name=full_name)} ${_("You have been enrolled in {course_name} at {site_name} by a member " "of the course staff. The course should now appear on your {site_name} " "dashboard.").format( - course_name=course.display_name_with_default, + course_name=display_name or course.display_name_with_default, site_name=site_name )} diff --git a/lms/templates/emails/enroll_email_enrolledsubject.txt b/lms/templates/emails/enroll_email_enrolledsubject.txt index f13675f99a..accb21886e 100644 --- a/lms/templates/emails/enroll_email_enrolledsubject.txt +++ b/lms/templates/emails/enroll_email_enrolledsubject.txt @@ -1,5 +1,5 @@ <%! from django.utils.translation import ugettext as _ %> ${_("You have been enrolled in {course_name}").format( - course_name=course.display_name_with_default + course_name=display_name or course.display_name_with_default )} \ No newline at end of file From 28368a0d71f699bb201df19714739ce439bd0d1f Mon Sep 17 00:00:00 2001 From: Fred Smith Date: Tue, 25 Aug 2015 09:29:17 -0400 Subject: [PATCH 77/80] DEVOPS-2620 - get setting from environment for DISPLAY_ANALYTICS_ENROLLMENTS --- lms/envs/aws.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lms/envs/aws.py b/lms/envs/aws.py index ffc1311480..f1311f6248 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -463,6 +463,7 @@ ANALYTICS_DATA_TOKEN = AUTH_TOKENS.get("ANALYTICS_DATA_TOKEN", ANALYTICS_DATA_TO # Analytics Dashboard ANALYTICS_DASHBOARD_URL = ENV_TOKENS.get("ANALYTICS_DASHBOARD_URL", ANALYTICS_DASHBOARD_URL) ANALYTICS_DASHBOARD_NAME = ENV_TOKENS.get("ANALYTICS_DASHBOARD_NAME", PLATFORM_NAME + " Insights") +DISPLAY_ANALYTICS_ENROLLMENTS = ENV_TOKENS.get("DISPLAY_ANALYTICS_ENROLLMENTS", True) # Zendesk ZENDESK_USER = AUTH_TOKENS.get("ZENDESK_USER") From 79a075328fd1048525cd2205a6049969fd3ba921 Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Thu, 13 Aug 2015 11:17:54 -0700 Subject: [PATCH 78/80] Allow configuring sensitive third_party_auth settings via lms.auth.json --- common/djangoapps/third_party_auth/admin.py | 20 ++++++-- common/djangoapps/third_party_auth/models.py | 48 +++++++++++++++---- .../third_party_auth/tests/test_provider.py | 14 +++++- .../third_party_auth/tests/test_views.py | 37 ++++++++++++-- lms/envs/aws.py | 9 ++++ 5 files changed, 111 insertions(+), 17 deletions(-) diff --git a/common/djangoapps/third_party_auth/admin.py b/common/djangoapps/third_party_auth/admin.py index 8495ef3a2b..a949f3fcb0 100644 --- a/common/djangoapps/third_party_auth/admin.py +++ b/common/djangoapps/third_party_auth/admin.py @@ -9,7 +9,17 @@ from config_models.admin import ConfigurationModelAdmin, KeyedConfigurationModel from .models import OAuth2ProviderConfig, SAMLProviderConfig, SAMLConfiguration, SAMLProviderData from .tasks import fetch_saml_metadata -admin.site.register(OAuth2ProviderConfig, KeyedConfigurationModelAdmin) + +class OAuth2ProviderConfigAdmin(KeyedConfigurationModelAdmin): + """ Django Admin class for OAuth2ProviderConfig """ + def get_list_display(self, request): + """ Don't show every single field in the admin change list """ + return ( + 'name', 'enabled', 'backend_name', 'secondary', 'skip_registration_form', + 'skip_email_verification', 'change_date', 'changed_by', 'edit_link', + ) + +admin.site.register(OAuth2ProviderConfig, OAuth2ProviderConfigAdmin) class SAMLProviderConfigAdmin(KeyedConfigurationModelAdmin): @@ -55,10 +65,12 @@ class SAMLConfigurationAdmin(ConfigurationModelAdmin): def key_summary(self, inst): """ Short summary of the key pairs configured """ - if not inst.public_key or not inst.private_key: + public_key = inst.get_setting('SP_PUBLIC_CERT') + private_key = inst.get_setting('SP_PRIVATE_KEY') + if not public_key or not private_key: return u'Key pair incomplete/missing' - pub1, pub2 = inst.public_key[0:10], inst.public_key[-10:] - priv1, priv2 = inst.private_key[0:10], inst.private_key[-10:] + pub1, pub2 = public_key[0:10], public_key[-10:] + priv1, priv2 = private_key[0:10], private_key[-10:] return u'Public: {}…{}
      Private: {}…{}'.format(pub1, pub2, priv1, priv2) key_summary.allow_tags = True diff --git a/common/djangoapps/third_party_auth/models.py b/common/djangoapps/third_party_auth/models.py index 12224c7bbf..fcabea6c89 100644 --- a/common/djangoapps/third_party_auth/models.py +++ b/common/djangoapps/third_party_auth/models.py @@ -178,7 +178,16 @@ class OAuth2ProviderConfig(ProviderConfig): ) ) key = models.TextField(blank=True, verbose_name="Client ID") - secret = models.TextField(blank=True, verbose_name="Client Secret") + secret = models.TextField( + blank=True, + verbose_name="Client Secret", + help_text=( + 'For increased security, you can avoid storing this in your database by leaving ' + ' this field blank and setting ' + 'SOCIAL_AUTH_OAUTH_SECRETS = {"(backend name)": "secret", ...} ' + 'in your instance\'s Django settings (or lms.auth.json)' + ) + ) other_settings = models.TextField(blank=True, help_text="Optional JSON object with advanced settings, if any.") class Meta(object): # pylint: disable=missing-docstring @@ -192,8 +201,13 @@ class OAuth2ProviderConfig(ProviderConfig): def get_setting(self, name): """ Get the value of a setting, or raise KeyError """ - if name in ("KEY", "SECRET"): - return getattr(self, name.lower()) + if name == "KEY": + return self.key + if name == "SECRET": + if self.secret: + return self.secret + # To allow instances to avoid storing secrets in the DB, the secret can also be set via Django: + return getattr(settings, 'SOCIAL_AUTH_OAUTH_SECRETS', {}).get(self.backend_name, '') if self.other_settings: other_settings = json.loads(self.other_settings) assert isinstance(other_settings, dict), "other_settings should be a JSON object (dictionary)" @@ -310,10 +324,22 @@ class SAMLConfiguration(ConfigurationModel): help_text=( 'To generate a key pair as two files, run ' '"openssl req -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key". ' - 'Paste the contents of saml.key here.' - ) + 'Paste the contents of saml.key here. ' + 'For increased security, you can avoid storing this in your database by leaving ' + 'this field blank and setting it via the SOCIAL_AUTH_SAML_SP_PRIVATE_KEY setting ' + 'in your instance\'s Django settings (or lms.auth.json).' + ), + blank=True, + ) + public_key = models.TextField( + help_text=( + 'Public key certificate. ' + 'For increased security, you can avoid storing this in your database by leaving ' + 'this field blank and setting it via the SOCIAL_AUTH_SAML_SP_PUBLIC_CERT setting ' + 'in your instance\'s Django settings (or lms.auth.json).' + ), + blank=True, ) - public_key = models.TextField(help_text="Public key certificate.") entity_id = models.CharField(max_length=255, default="http://saml.example.com", verbose_name="Entity ID") org_info_str = models.TextField( verbose_name="Organization Info", @@ -360,9 +386,15 @@ class SAMLConfiguration(ConfigurationModel): if name == "SP_ENTITY_ID": return self.entity_id if name == "SP_PUBLIC_CERT": - return self.public_key + if self.public_key: + return self.public_key + # To allow instances to avoid storing keys in the DB, the key pair can also be set via Django: + return getattr(settings, 'SOCIAL_AUTH_SAML_SP_PUBLIC_CERT', '') if name == "SP_PRIVATE_KEY": - return self.private_key + if self.private_key: + return self.private_key + # To allow instances to avoid storing keys in the DB, the private key can also be set via Django: + return getattr(settings, 'SOCIAL_AUTH_SAML_SP_PRIVATE_KEY', '') other_config = json.loads(self.other_config_str) if name in ("TECHNICAL_CONTACT", "SUPPORT_CONTACT"): contact = { diff --git a/common/djangoapps/third_party_auth/tests/test_provider.py b/common/djangoapps/third_party_auth/tests/test_provider.py index 06a09b7b4f..ff67df5d0d 100644 --- a/common/djangoapps/third_party_auth/tests/test_provider.py +++ b/common/djangoapps/third_party_auth/tests/test_provider.py @@ -23,7 +23,7 @@ class RegistryTest(testutil.TestCase): enabled_providers = provider.Registry.enabled() self.assertEqual(len(enabled_providers), 1) self.assertEqual(enabled_providers[0].name, "Google") - self.assertEqual(enabled_providers[0].secret, "opensesame") + self.assertEqual(enabled_providers[0].get_setting("SECRET"), "opensesame") self.configure_google_provider(enabled=False) enabled_providers = provider.Registry.enabled() @@ -32,7 +32,17 @@ class RegistryTest(testutil.TestCase): self.configure_google_provider(enabled=True, secret="alohomora") enabled_providers = provider.Registry.enabled() self.assertEqual(len(enabled_providers), 1) - self.assertEqual(enabled_providers[0].secret, "alohomora") + self.assertEqual(enabled_providers[0].get_setting("SECRET"), "alohomora") + + def test_secure_configuration(self): + """ Test that some sensitive values can be configured via Django settings """ + self.configure_google_provider(enabled=True, secret="") + enabled_providers = provider.Registry.enabled() + self.assertEqual(len(enabled_providers), 1) + self.assertEqual(enabled_providers[0].name, "Google") + self.assertEqual(enabled_providers[0].get_setting("SECRET"), "") + with self.settings(SOCIAL_AUTH_OAUTH_SECRETS={'google-oauth2': 'secret42'}): + self.assertEqual(enabled_providers[0].get_setting("SECRET"), "secret42") def test_cannot_load_arbitrary_backends(self): """ Test that only backend_names listed in settings.AUTHENTICATION_BACKENDS can be used """ diff --git a/common/djangoapps/third_party_auth/tests/test_views.py b/common/djangoapps/third_party_auth/tests/test_views.py index 583efddb99..3b9122c1a7 100644 --- a/common/djangoapps/third_party_auth/tests/test_views.py +++ b/common/djangoapps/third_party_auth/tests/test_views.py @@ -4,6 +4,7 @@ Test the views served by third_party_auth. # pylint: disable=no-member import ddt from lxml import etree +from onelogin.saml2.errors import OneLogin_Saml2_Error import unittest from .testutil import AUTH_FEATURE_ENABLED, SAMLTestCase @@ -26,8 +27,7 @@ class SAMLMetadataTest(SAMLTestCase): response = self.client.get(self.METADATA_URL) self.assertEqual(response.status_code, 404) - @ddt.data('saml_key', 'saml_key_alt') # Test two slightly different key pair export formats - def test_metadata(self, key_name): + def test_metadata(self): self.enable_saml() doc = self._fetch_metadata() # Check the ACS URL: @@ -62,13 +62,44 @@ class SAMLMetadataTest(SAMLTestCase): support_email="joe@example.com" ) - def test_signed_metadata(self): + @ddt.data( + # Test two slightly different key pair export formats + ('saml_key', 'MIICsDCCAhmgAw'), + ('saml_key_alt', 'MIICWDCCAcGgAw'), + ) + @ddt.unpack + def test_signed_metadata(self, key_name, pub_key_starts_with): self.enable_saml( + private_key=self._get_private_key(key_name), + public_key=self._get_public_key(key_name), other_config_str='{"SECURITY_CONFIG": {"signMetadata": true} }', ) + self._validate_signed_metadata(pub_key_starts_with=pub_key_starts_with) + + def test_secure_key_configuration(self): + """ Test that the SAML private key can be stored in Django settings and not the DB """ + self.enable_saml( + public_key='', + private_key='', + other_config_str='{"SECURITY_CONFIG": {"signMetadata": true} }', + ) + with self.assertRaises(OneLogin_Saml2_Error): + self._fetch_metadata() # OneLogin_Saml2_Error: Cannot sign metadata: missing SP private key. + with self.settings( + SOCIAL_AUTH_SAML_SP_PRIVATE_KEY=self._get_private_key('saml_key'), + SOCIAL_AUTH_SAML_SP_PUBLIC_CERT=self._get_public_key('saml_key'), + ): + self._validate_signed_metadata() + + def _validate_signed_metadata(self, pub_key_starts_with='MIICsDCCAhmgAw'): + """ Fetch the SAML metadata and do some validation """ doc = self._fetch_metadata() sig_node = doc.find(".//{}".format(etree.QName(XMLDSIG_XML_NS, 'SignatureValue'))) self.assertIsNotNone(sig_node) + # Check that the right public key was used: + pub_key_node = doc.find(".//{}".format(etree.QName(XMLDSIG_XML_NS, 'X509Certificate'))) + self.assertIsNotNone(pub_key_node) + self.assertIn(pub_key_starts_with, pub_key_node.text) def _fetch_metadata(self): """ Fetch and parse the metadata XML at self.METADATA_URL """ diff --git a/lms/envs/aws.py b/lms/envs/aws.py index f1311f6248..7f2b8cc39f 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -559,6 +559,15 @@ if FEATURES.get('ENABLE_THIRD_PARTY_AUTH'): # The reduced session expiry time during the third party login pipeline. (Value in seconds) SOCIAL_AUTH_PIPELINE_TIMEOUT = ENV_TOKENS.get('SOCIAL_AUTH_PIPELINE_TIMEOUT', 600) + # Most provider configuration is done via ConfigurationModels but for a few sensitive values + # we allow configuration via AUTH_TOKENS instead (optionally). + # The SAML private/public key values do not need the delimiter lines (such as + # "-----BEGIN PRIVATE KEY-----", "-----END PRIVATE KEY-----" etc.) but they may be included + # if you want (though it's easier to format the key values as JSON without the delimiters). + SOCIAL_AUTH_SAML_SP_PRIVATE_KEY = AUTH_TOKENS.get('SOCIAL_AUTH_SAML_SP_PRIVATE_KEY', '') + SOCIAL_AUTH_SAML_SP_PUBLIC_CERT = AUTH_TOKENS.get('SOCIAL_AUTH_SAML_SP_PUBLIC_CERT', '') + SOCIAL_AUTH_OAUTH_SECRETS = AUTH_TOKENS.get('SOCIAL_AUTH_OAUTH_SECRETS', {}) + # third_party_auth config moved to ConfigurationModels. This is for data migration only: THIRD_PARTY_AUTH_OLD_CONFIG = AUTH_TOKENS.get('THIRD_PARTY_AUTH', None) From 96fc306337cba13c9e6d8c2300aa03aeacd2779e Mon Sep 17 00:00:00 2001 From: Chris Rodriguez Date: Fri, 21 Aug 2015 10:17:40 -0400 Subject: [PATCH 79/80] Fixes modal color --- lms/static/sass/shared/_modal.scss | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lms/static/sass/shared/_modal.scss b/lms/static/sass/shared/_modal.scss index fd6da29cb5..f3aacb5e5c 100644 --- a/lms/static/sass/shared/_modal.scss +++ b/lms/static/sass/shared/_modal.scss @@ -12,15 +12,15 @@ .modal { @extend %ui-depth1; - background: $gray-d2; - border-radius: 3px; - box-shadow: 0 0px 5px 0 $shadow-d1; - color: $white; display: none; + position: absolute; left: 50%; padding: 8px; - position: absolute; width: grid-width(5); + border-radius: 3px; + box-shadow: 0 0px 5px 0 $shadow-d1; + background: $gray-d2; + color: $base-font-color; &.video-modal { left: 50%; @@ -62,6 +62,11 @@ padding-bottom: ($baseline/2); position: relative; + p { + font-size: .9em; + line-height: 1.4; + } + header { @extend %ui-depth1; margin-bottom: ($baseline*1.5); From 16ac5801c90b50e14b70eda3629499d15893ba85 Mon Sep 17 00:00:00 2001 From: Fred Smith Date: Wed, 26 Aug 2015 11:10:21 -0400 Subject: [PATCH 80/80] =?UTF-8?q?Revert=20"DEVOPS-2620=20-=20get=20setting?= =?UTF-8?q?=20from=20environment=20for=20DISPLAY=5FANALYTICS=5FENRO?= =?UTF-8?q?=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/envs/aws.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 7f2b8cc39f..cb0c4965d5 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -463,7 +463,6 @@ ANALYTICS_DATA_TOKEN = AUTH_TOKENS.get("ANALYTICS_DATA_TOKEN", ANALYTICS_DATA_TO # Analytics Dashboard ANALYTICS_DASHBOARD_URL = ENV_TOKENS.get("ANALYTICS_DASHBOARD_URL", ANALYTICS_DASHBOARD_URL) ANALYTICS_DASHBOARD_NAME = ENV_TOKENS.get("ANALYTICS_DASHBOARD_NAME", PLATFORM_NAME + " Insights") -DISPLAY_ANALYTICS_ENROLLMENTS = ENV_TOKENS.get("DISPLAY_ANALYTICS_ENROLLMENTS", True) # Zendesk ZENDESK_USER = AUTH_TOKENS.get("ZENDESK_USER")