Compare commits
45 Commits
open-relea
...
sarina/upd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a65826fd5 | ||
|
|
ad47bfacd4 | ||
|
|
9e9bac997b | ||
|
|
014fbeac71 | ||
|
|
0b214faeca | ||
|
|
abff65a11a | ||
|
|
2f6eed237a | ||
|
|
7253c9bba3 | ||
|
|
a84d3c09e8 | ||
|
|
f5e1f1cf6b | ||
|
|
8096a389da | ||
|
|
1a21850fc4 | ||
|
|
efae5ecd4b | ||
|
|
1e043325d6 | ||
|
|
0bfce5594d | ||
|
|
dbe2787785 | ||
|
|
20e98319af | ||
|
|
2063049747 | ||
|
|
a7def9ce25 | ||
|
|
2418207149 | ||
|
|
5da5967e97 | ||
|
|
45b2bf5b13 | ||
|
|
7527f6c764 | ||
|
|
bdfa1fdeb3 | ||
|
|
79f58cc8d0 | ||
|
|
437d0a37a9 | ||
|
|
0e24a0767b | ||
|
|
91abf56977 | ||
|
|
f0734d86db | ||
|
|
3581d633c1 | ||
|
|
b8895bef33 | ||
|
|
89d0d12559 | ||
|
|
34fe291268 | ||
|
|
4b1e292e1c | ||
|
|
90eb6fd0c3 | ||
|
|
50da8a0f0b | ||
|
|
7dcd328f2e | ||
|
|
e2d66cc605 | ||
|
|
f5fc721b3b | ||
|
|
c4bbb6fa70 | ||
|
|
748aee2cff | ||
|
|
31473d3f49 | ||
|
|
4de727791a | ||
|
|
d1d04d5585 | ||
|
|
6f41a14012 |
1
.env
1
.env
@@ -27,3 +27,4 @@ USER_INFO_COOKIE_NAME=''
|
||||
ENABLE_PROGRESS_GRAPH_SETTINGS=false
|
||||
ENABLE_TEAM_TYPE_SETTING=false
|
||||
ENABLE_NEW_EDITOR_PAGES=true
|
||||
BBB_LEARN_MORE_URL=''
|
||||
|
||||
@@ -29,3 +29,4 @@ USER_INFO_COOKIE_NAME='edx-user-info'
|
||||
ENABLE_PROGRESS_GRAPH_SETTINGS=false
|
||||
ENABLE_TEAM_TYPE_SETTING=false
|
||||
ENABLE_NEW_EDITOR_PAGES=true
|
||||
BBB_LEARN_MORE_URL=''
|
||||
|
||||
@@ -28,3 +28,4 @@ USER_INFO_COOKIE_NAME='edx-user-info'
|
||||
ENABLE_PROGRESS_GRAPH_SETTINGS=false
|
||||
ENABLE_TEAM_TYPE_SETTING=false
|
||||
ENABLE_NEW_EDITOR_PAGES=true
|
||||
BBB_LEARN_MORE_URL=''
|
||||
|
||||
4
Makefile
Executable file → Normal file
4
Makefile
Executable file → Normal file
@@ -1,6 +1,6 @@
|
||||
transifex_resource = frontend-app-course-authoring
|
||||
export TRANSIFEX_RESOURCE = ${transifex_resource}
|
||||
transifex_langs = "ar,fr,es_419,zh_CN"
|
||||
transifex_langs = "ar,fr,es_419,zh_CN,pt,it,de,uk,ru,hi,fr_CA"
|
||||
|
||||
transifex_utils = ./node_modules/.bin/transifex-utils.js
|
||||
i18n = ./src/i18n
|
||||
@@ -47,7 +47,7 @@ push_translations:
|
||||
|
||||
# Pulls translations from Transifex.
|
||||
pull_translations:
|
||||
tx pull -f --mode reviewed --languages=$(transifex_langs)
|
||||
tx pull -t -f --mode reviewed --languages=$(transifex_langs)
|
||||
|
||||
# This target is used by Travis.
|
||||
validate-no-uncommitted-package-lock-changes:
|
||||
|
||||
162
README.rst
162
README.rst
@@ -1,17 +1,158 @@
|
||||
|Build Status| |Codecov| |license|
|
||||
|
||||
#############################
|
||||
frontend-app-course-authoring
|
||||
=============================
|
||||
#############################
|
||||
|
||||
Please tag `@edx/teaching-and-learning <https://github.com/orgs/edx/teams/teaching-and-learning>`_ on any PRs or issues. Thanks.
|
||||
|
||||
Prerequisite
|
||||
************
|
||||
Introduction
|
||||
************
|
||||
|
||||
This is the Course Authoring micro-frontend, currently under development by `2U <https://2u.com>`_.
|
||||
|
||||
Its purpose is to provide both a framework and UI for new or replacement React-based authoring features outside ``edx-platform``. You can find the current set described below.
|
||||
|
||||
********
|
||||
Features
|
||||
********
|
||||
|
||||
Feature: Pages and Resources Studio Tab
|
||||
=======================================
|
||||
|
||||
Enables a "Pages & Resources" menu item in Studio, under the "Content" menu.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
The following are external requirements for this feature to function correctly:
|
||||
|
||||
* ``edx-platform`` Django settings:
|
||||
|
||||
* ``COURSE_AUTHORING_MICROFRONTEND_URL``: must be set in the CMS environment and point to this MFE's deployment URL.
|
||||
|
||||
* ``edx-platform`` Waffle flags:
|
||||
|
||||
* ``discussions.pages_and_resources_mfe``: must be enabled for the set of users meant to access this feature.
|
||||
|
||||
* `frontend-app-learning <https://github.com/openedx/frontend-app-learning>`_: This MFE expects it to be the LMS frontend.
|
||||
* `frontend-app-discussions <https://github.com/openedx/frontend-app-discussions/>`_: This is what the "Discussions" configuration provided by this feature actually configures. Without it, discussion settings are ignored.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
In additional to the standard settings, the following local configuration items are required:
|
||||
|
||||
* ``LEARNING_BASE_URL``: points to Learning MFE; necessary so that the `View Live` button works
|
||||
* ``ENABLE_PROGRESS_GRAPH_SETTINGS``: allow enabling or disabling the learner progress graph course-wide
|
||||
|
||||
Feature Description
|
||||
-------------------
|
||||
|
||||
Clicking on the "Pages & Resources" menu item takes the user to the course's ``pages-and-resources`` standalone page in this MFE. (In a devstack, for instance: http://localhost:2001/course/course-v1:edX+DemoX+Demo_Course/pages-and-resources.)
|
||||
|
||||
UX-wise, **Pages & Resources** is meant to look like a Studio tab, so reproduces Studio's header.
|
||||
|
||||
For a particular course, this page allows one to:
|
||||
|
||||
* Configure the new Discussions MFE (making this a requirement for it). This includes:
|
||||
|
||||
* Enabling/disabling the feature entirely
|
||||
* Picking a different discussion provider, while showing a comparison matrix between them:
|
||||
|
||||
* edX
|
||||
* Ed Discussion
|
||||
* InScribe
|
||||
* Piazza
|
||||
* Yellowdig
|
||||
|
||||
* Allowing to configure the selected provider
|
||||
|
||||
* Enable/Disable learner progress
|
||||
* Enable/Disable learner notes
|
||||
* Enable/Disable the learner wiki
|
||||
* Enable/Disable the LMS calculator
|
||||
* Go to the textbook management page in Studio (in a devstack: http://localhost:18010/textbooks/course-v1:edX+DemoX+Demo_Course)
|
||||
* Go to the custom page management page in Studio(in a devstack http://localhost:18010/tabs/course-v1:edX+DemoX+Demo_Course)
|
||||
|
||||
Feature: New React XBlock Editors
|
||||
=================================
|
||||
|
||||
This allows an operator to enable the use of new React editors for the HTML, Video, and Problem XBlocks, all of which are provided here.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* ``edx-platform`` Django settings:
|
||||
|
||||
* ``COURSE_AUTHORING_MICROFRONTEND_URL``: must be set in the CMS environment and point to this MFE's deployment URL.
|
||||
|
||||
* ``edx-platform`` Waffle flags:
|
||||
|
||||
* ``new_core_editors.use_new_text_editor``: must be enabled for the new HTML Xblock editor to be used in Studio
|
||||
* ``new_core_editors.use_new_video_editor``: must be enabled for the new Video Xblock editor to be used in Studio
|
||||
* ``new_core_editors.use_new_problem_editor``: must be enabled for the new Problem Xblock editor to be used in Studio
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
In additional to the standard settings, the following local configuration item is required:
|
||||
|
||||
* ``ENABLE_NEW_EDITOR_PAGES``: must be enabled in order to actually present the new XBlock editors
|
||||
|
||||
Feature Description
|
||||
-------------------
|
||||
|
||||
When a corresponding waffle flag is set, upon editing a block in Studio, the view is rendered by this MFE instead of by the XBlock's authoring view. The user remains in Studio.
|
||||
|
||||
.. note::
|
||||
|
||||
The new editors themselves are currently implemented in a repository outside ``openedx``: `frontend-lib-content-components <https://github.com/edx/frontend-lib-content-components/>`_, a dependency of this MFE. This repository is slated to be moved to the ``openedx`` org, however.
|
||||
|
||||
Feature: New Proctoring Exams View
|
||||
==================================
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* ``edx-platform`` Django settings:
|
||||
|
||||
* ``COURSE_AUTHORING_MICROFRONTEND_URL``: must be set in the CMS environment and point to this MFE's deployment URL.
|
||||
* ``ZENDESK_*``: necessary if automatic ZenDesk ticket creation is desired
|
||||
|
||||
* ``edx-platform`` Feature flags:
|
||||
|
||||
* ``ENABLE_EXAM_SETTINGS_HTML_VIEW``: this feature flag must be enabled for the link to the settings view to be shown
|
||||
|
||||
* `edx-exams <https://github.com/edx/edx-exams>`_: for this feature to work, the ``edx-exams`` IDA must be deployed and its API accessible by the browser
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
In additional to the standard settings, the following local configuration item is required:
|
||||
|
||||
* ``EXAMS_BASE_URL``: URL to the ``edx-exams`` deployment
|
||||
|
||||
Feature Description
|
||||
-------------------
|
||||
|
||||
In Studio, a new item ("Proctored Exam Settings") is added to "Other Course Settings" in the course's "Certificates" settings page. When clicked, this takes the author to the corresponding page in the Course Authoring MFE, where one can:
|
||||
|
||||
* Enable proctored exams for the course
|
||||
* Allow opting out of proctored exams
|
||||
* Select a proctoring provider
|
||||
* Enable automatic creation of Zendesk tickets for "suspicious" proctored exam attempts
|
||||
|
||||
|
||||
**********
|
||||
Developing
|
||||
**********
|
||||
|
||||
`Devstack <https://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/installation/index.html>`_. If you start Devstack with ``make dev.up.studio`` that should give you everything you need as a companion to this frontend.
|
||||
|
||||
Installation and Startup
|
||||
------------------------
|
||||
========================
|
||||
|
||||
1. Clone the repo:
|
||||
|
||||
@@ -32,8 +173,21 @@ If your devstack includes the default Demo course, you can visit the following U
|
||||
- `Proctored Exam Settings <http://localhost:2001/course/course-v1:edX+DemoX+Demo_Course/proctored-exam-settings>`_
|
||||
- `Pages and Resources <http://localhost:2001/course/course-v1:edX+DemoX+Demo_Course/pages-and-resources>`_ (work in progress)
|
||||
|
||||
Troubleshooting
|
||||
========================
|
||||
|
||||
* ``npm ERR! gyp ERR! build error`` while running npm install on Macs with M1 processors: Probably due to a compatibility issue of node-canvas with M1.
|
||||
|
||||
Run ``brew install pkg-config pixman cairo pango libpng jpeg giflib librsvg`` before ``npm install`` to get the correct versions of the dependencies.
|
||||
If there is still an error, look for "no package [...] found" in the error message and install missing package via brew.
|
||||
(https://github.com/Automattic/node-canvas/issues/1733)
|
||||
|
||||
*********
|
||||
Deploying
|
||||
*********
|
||||
|
||||
Production Build
|
||||
----------------
|
||||
================
|
||||
|
||||
The production build is created with ``npm run build``.
|
||||
|
||||
|
||||
908
package-lock.json
generated
908
package-lock.json
generated
@@ -12,9 +12,9 @@
|
||||
"@edx/brand": "npm:@edx/brand-openedx@1.1.0",
|
||||
"@edx/frontend-build": "^11.0.0",
|
||||
"@edx/frontend-component-footer": "11.1.1",
|
||||
"@edx/frontend-lib-content-components": "^1.43.0",
|
||||
"@edx/frontend-lib-content-components": "^1.72.0",
|
||||
"@edx/frontend-platform": "2.5.1",
|
||||
"@edx/paragon": "20.6.1",
|
||||
"@edx/paragon": "^20.21.0",
|
||||
"@fortawesome/fontawesome-svg-core": "1.2.28",
|
||||
"@fortawesome/free-brands-svg-icons": "5.11.2",
|
||||
"@fortawesome/free-regular-svg-icons": "5.11.2",
|
||||
@@ -2167,9 +2167,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@edx/frontend-lib-content-components": {
|
||||
"version": "1.43.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/frontend-lib-content-components/-/frontend-lib-content-components-1.43.0.tgz",
|
||||
"integrity": "sha512-ohbR5T7aL1XvLcMtS8IkKC7Vi+bv/ftqNGC5Q97/qkuDWE6YTWZwNZ/OA7Pg8G9j2zoG+rrNLSPRNyUrWm2JYA==",
|
||||
"version": "1.72.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/frontend-lib-content-components/-/frontend-lib-content-components-1.72.0.tgz",
|
||||
"integrity": "sha512-YdD+n15NGA0IOVKXjkNEmgYqZTGvSdz9/jNSuiMwiyM3PdlYYd2Ud14uxdKo+F31AvLscs9VPGmoKz89H5O75g==",
|
||||
"dependencies": {
|
||||
"@codemirror/lang-html": "^6.0.0",
|
||||
"@codemirror/state": "^6.0.0",
|
||||
@@ -2177,7 +2177,9 @@
|
||||
"@reduxjs/toolkit": "^1.8.1",
|
||||
"@tinymce/tinymce-react": "^3.14.0",
|
||||
"babel-polyfill": "6.26.0",
|
||||
"canvas": "^2.10.1",
|
||||
"codemirror": "^6.0.0",
|
||||
"fast-xml-parser": "^4.0.10",
|
||||
"lodash-es": "^4.17.21",
|
||||
"react-redux": "^7.2.8",
|
||||
"react-responsive": "8.2.0",
|
||||
@@ -2194,7 +2196,7 @@
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@edx/frontend-platform": ">1.15.0",
|
||||
"@edx/paragon": "^20.0.0",
|
||||
"@edx/paragon": "^20.21.0",
|
||||
"prop-types": "^15.5.10",
|
||||
"react": "^16.14.0",
|
||||
"react-dom": "^16.14.0"
|
||||
@@ -2223,6 +2225,21 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@edx/frontend-lib-content-components/node_modules/fast-xml-parser": {
|
||||
"version": "4.0.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.12.tgz",
|
||||
"integrity": "sha512-/Nmo3823Rfx7UTJosQNz6hBVbszfv1Unb7A4iNJZhvCGCgtIHv/uODmrYIH8vc05+XKZ4hNIOv6SlBejvJgATw==",
|
||||
"dependencies": {
|
||||
"strnum": "^1.0.5"
|
||||
},
|
||||
"bin": {
|
||||
"fxparser": "src/cli/cli.js"
|
||||
},
|
||||
"funding": {
|
||||
"type": "paypal",
|
||||
"url": "https://paypal.me/naturalintelligence"
|
||||
}
|
||||
},
|
||||
"node_modules/@edx/frontend-lib-content-components/node_modules/immer": {
|
||||
"version": "9.0.15",
|
||||
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
|
||||
@@ -2376,14 +2393,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@edx/paragon": {
|
||||
"version": "20.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.6.1.tgz",
|
||||
"integrity": "sha512-iLazRgEvoR6NYcnXEGMPViqMgGlvZN/mT5IBarBaIesXVgZvLGY12SUEIEFcWZrTuwaPFVvktLR9/PGjLIA+9Q==",
|
||||
"version": "20.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.21.0.tgz",
|
||||
"integrity": "sha512-p9g/ONfWsZ6UxX7hNEoO2nUI0qhdGqQZYvLk3MpE0NMmTUYafpCBpRwOGYTXOXpIBzRENRiJUGJ/59XL0MelOw==",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.1.1",
|
||||
"@fortawesome/react-fontawesome": "^0.1.18",
|
||||
"@popperjs/core": "^2.11.4",
|
||||
"bootstrap": "^4.6.1",
|
||||
"bootstrap": "^4.6.2",
|
||||
"classnames": "^2.3.1",
|
||||
"email-prop-type": "^3.0.0",
|
||||
"file-selector": "^0.6.0",
|
||||
@@ -2392,7 +2409,7 @@
|
||||
"lodash.uniqby": "^4.7.0",
|
||||
"mailto-link": "^2.0.0",
|
||||
"prop-types": "^15.8.1",
|
||||
"react-bootstrap": "^1.6.4",
|
||||
"react-bootstrap": "^1.6.5",
|
||||
"react-dropzone": "^14.2.1",
|
||||
"react-focus-on": "^3.5.4",
|
||||
"react-loading-skeleton": "^3.1.0",
|
||||
@@ -2402,7 +2419,8 @@
|
||||
"react-table": "^7.7.0",
|
||||
"react-transition-group": "^4.4.2",
|
||||
"tabbable": "^5.3.3",
|
||||
"uncontrollable": "^7.2.1"
|
||||
"uncontrollable": "^7.2.1",
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.8.6 || ^17.0.0",
|
||||
@@ -2527,6 +2545,14 @@
|
||||
"react-dom": ">=16.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@edx/paragon/node_modules/uuid": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/@edx/reactifex": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/reactifex/-/reactifex-1.1.0.tgz",
|
||||
@@ -3656,6 +3682,91 @@
|
||||
"@lezer/common": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
|
||||
"integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
|
||||
"dependencies": {
|
||||
"detect-libc": "^2.0.0",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"make-dir": "^3.1.0",
|
||||
"node-fetch": "^2.6.7",
|
||||
"nopt": "^5.0.0",
|
||||
"npmlog": "^5.0.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"semver": "^7.3.5",
|
||||
"tar": "^6.1.11"
|
||||
},
|
||||
"bin": {
|
||||
"node-pre-gyp": "bin/node-pre-gyp"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
||||
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
|
||||
"dependencies": {
|
||||
"semver": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
"bin": {
|
||||
"rimraf": "bin.js"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@mapbox/node-pre-gyp/node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/@newrelic/publish-sourcemap": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@newrelic/publish-sourcemap/-/publish-sourcemap-5.1.0.tgz",
|
||||
@@ -5161,6 +5272,11 @@
|
||||
"integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
@@ -5272,7 +5388,6 @@
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
||||
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"debug": "4"
|
||||
},
|
||||
@@ -5411,7 +5526,6 @@
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@@ -5441,6 +5555,11 @@
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/aproba": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
|
||||
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
|
||||
},
|
||||
"node_modules/arch": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
|
||||
@@ -5485,6 +5604,31 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/are-we-there-yet": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
|
||||
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
|
||||
"dependencies": {
|
||||
"delegates": "^1.0.0",
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/are-we-there-yet/node_modules/readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
@@ -6721,13 +6865,19 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/bootstrap": {
|
||||
"version": "4.6.1",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz",
|
||||
"integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/bootstrap"
|
||||
},
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
|
||||
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/twbs"
|
||||
},
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/bootstrap"
|
||||
}
|
||||
],
|
||||
"peerDependencies": {
|
||||
"jquery": "1.9.1 - 3",
|
||||
"popper.js": "^1.16.1"
|
||||
@@ -7097,6 +7247,20 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/canvas": {
|
||||
"version": "2.10.1",
|
||||
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.10.1.tgz",
|
||||
"integrity": "sha512-29pIjn9uwTUsIgJUNd7GXxKk8sg4iyJwLm1wIilNIqX1mVzXSc2nUij9exW1LqNpis1d2ebMYfMqTWcokZ4pdA==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.0",
|
||||
"nan": "^2.15.0",
|
||||
"simple-get": "^3.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/capture-exit": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
|
||||
@@ -7235,6 +7399,14 @@
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/chownr": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
||||
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/chrome-trace-event": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
|
||||
@@ -7537,6 +7709,14 @@
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/color-support": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
|
||||
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
|
||||
"bin": {
|
||||
"color-support": "bin.js"
|
||||
}
|
||||
},
|
||||
"node_modules/colord": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
|
||||
@@ -7664,6 +7844,11 @@
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
|
||||
},
|
||||
"node_modules/contains-path": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
|
||||
@@ -8186,7 +8371,6 @@
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
@@ -8647,6 +8831,11 @@
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/delegates": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
|
||||
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
@@ -8674,6 +8863,14 @@
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/detect-libc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
|
||||
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/detect-newline": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
|
||||
@@ -11317,6 +11514,17 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-minipass": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
|
||||
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
|
||||
"dependencies": {
|
||||
"minipass": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-monkey": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
|
||||
@@ -11387,6 +11595,36 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gauge": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
|
||||
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
|
||||
"dependencies": {
|
||||
"aproba": "^1.0.3 || ^2.0.0",
|
||||
"color-support": "^1.1.2",
|
||||
"console-control-strings": "^1.0.0",
|
||||
"has-unicode": "^2.0.1",
|
||||
"object-assign": "^4.1.1",
|
||||
"signal-exit": "^3.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^6.0.1",
|
||||
"wide-align": "^1.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/gauge/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/gensync": {
|
||||
"version": "1.0.0-beta.2",
|
||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||
@@ -11648,7 +11886,6 @@
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
@@ -11919,6 +12156,11 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/has-unicode": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
|
||||
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
|
||||
},
|
||||
"node_modules/has-value": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
|
||||
@@ -12260,7 +12502,6 @@
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
||||
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
@@ -13503,7 +13744,6 @@
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
@@ -16460,9 +16700,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jquery": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
|
||||
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
|
||||
"integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/js-tokens": {
|
||||
@@ -17235,6 +17475,39 @@
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/minipass": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
|
||||
"integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/minipass/node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/minizlib": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
|
||||
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
|
||||
"dependencies": {
|
||||
"minipass": "^3.0.0",
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/minizlib/node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/mixin-deep": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
|
||||
@@ -17318,8 +17591,7 @@
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"dev": true
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/multicast-dns": {
|
||||
"version": "6.2.3",
|
||||
@@ -17362,6 +17634,11 @@
|
||||
"npm": ">=5"
|
||||
}
|
||||
},
|
||||
"node_modules/nan": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
|
||||
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
@@ -17461,6 +17738,44 @@
|
||||
"tslib": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"encoding": "^0.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"encoding": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch/node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"node_modules/node-fetch/node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"node_modules/node-fetch/node_modules/whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"dependencies": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-forge": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
|
||||
@@ -17559,6 +17874,20 @@
|
||||
"integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/nopt": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
|
||||
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
|
||||
"dependencies": {
|
||||
"abbrev": "1"
|
||||
},
|
||||
"bin": {
|
||||
"nopt": "bin/nopt.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-package-data": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
||||
@@ -17646,6 +17975,17 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/npmlog": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
|
||||
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
|
||||
"dependencies": {
|
||||
"are-we-there-yet": "^2.0.0",
|
||||
"console-control-strings": "^1.1.0",
|
||||
"gauge": "^3.0.0",
|
||||
"set-blocking": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/nth-check": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
||||
@@ -21255,8 +21595,7 @@
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"dev": true
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"node_modules/safe-json-parse": {
|
||||
"version": "4.0.0",
|
||||
@@ -21794,8 +22133,7 @@
|
||||
"node_modules/set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||
},
|
||||
"node_modules/set-value": {
|
||||
"version": "2.0.1",
|
||||
@@ -21907,8 +22245,58 @@
|
||||
"node_modules/signal-exit": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
|
||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
|
||||
},
|
||||
"node_modules/simple-concat": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
|
||||
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/simple-get": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
|
||||
"integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
|
||||
"dependencies": {
|
||||
"decompress-response": "^4.2.0",
|
||||
"once": "^1.3.1",
|
||||
"simple-concat": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/simple-get/node_modules/decompress-response": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
|
||||
"integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
|
||||
"dependencies": {
|
||||
"mimic-response": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/simple-get/node_modules/mimic-response": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
|
||||
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/sirv": {
|
||||
"version": "1.0.19",
|
||||
@@ -22583,7 +22971,6 @@
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
@@ -22617,7 +23004,6 @@
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
@@ -22630,14 +23016,12 @@
|
||||
"node_modules/string-width/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"node_modules/string-width/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
@@ -22807,9 +23191,7 @@
|
||||
"node_modules/strnum": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
||||
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
|
||||
},
|
||||
"node_modules/style-loader": {
|
||||
"version": "2.0.0",
|
||||
@@ -23125,6 +23507,22 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/tar": {
|
||||
"version": "6.1.11",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
|
||||
"integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
|
||||
"dependencies": {
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
"minipass": "^3.0.0",
|
||||
"minizlib": "^2.1.1",
|
||||
"mkdirp": "^1.0.3",
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/tar-stream": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
|
||||
@@ -23144,6 +23542,22 @@
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tar/node_modules/mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
|
||||
"bin": {
|
||||
"mkdirp": "bin/cmd.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/tar/node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/temp-dir": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
|
||||
@@ -23959,8 +24373,7 @@
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"node_modules/utila": {
|
||||
"version": "0.4.0",
|
||||
@@ -24929,6 +25342,14 @@
|
||||
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/wide-align": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
|
||||
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
|
||||
"dependencies": {
|
||||
"string-width": "^1.0.2 || 2 || 3 || 4"
|
||||
}
|
||||
},
|
||||
"node_modules/wildcard": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
|
||||
@@ -26677,9 +27098,9 @@
|
||||
}
|
||||
},
|
||||
"@edx/frontend-lib-content-components": {
|
||||
"version": "1.43.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/frontend-lib-content-components/-/frontend-lib-content-components-1.43.0.tgz",
|
||||
"integrity": "sha512-ohbR5T7aL1XvLcMtS8IkKC7Vi+bv/ftqNGC5Q97/qkuDWE6YTWZwNZ/OA7Pg8G9j2zoG+rrNLSPRNyUrWm2JYA==",
|
||||
"version": "1.72.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/frontend-lib-content-components/-/frontend-lib-content-components-1.72.0.tgz",
|
||||
"integrity": "sha512-YdD+n15NGA0IOVKXjkNEmgYqZTGvSdz9/jNSuiMwiyM3PdlYYd2Ud14uxdKo+F31AvLscs9VPGmoKz89H5O75g==",
|
||||
"requires": {
|
||||
"@codemirror/lang-html": "^6.0.0",
|
||||
"@codemirror/state": "^6.0.0",
|
||||
@@ -26687,7 +27108,9 @@
|
||||
"@reduxjs/toolkit": "^1.8.1",
|
||||
"@tinymce/tinymce-react": "^3.14.0",
|
||||
"babel-polyfill": "6.26.0",
|
||||
"canvas": "^2.10.1",
|
||||
"codemirror": "^6.0.0",
|
||||
"fast-xml-parser": "^4.0.10",
|
||||
"lodash-es": "^4.17.21",
|
||||
"react-redux": "^7.2.8",
|
||||
"react-responsive": "8.2.0",
|
||||
@@ -26714,6 +27137,14 @@
|
||||
"reselect": "^4.1.5"
|
||||
}
|
||||
},
|
||||
"fast-xml-parser": {
|
||||
"version": "4.0.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.12.tgz",
|
||||
"integrity": "sha512-/Nmo3823Rfx7UTJosQNz6hBVbszfv1Unb7A4iNJZhvCGCgtIHv/uODmrYIH8vc05+XKZ4hNIOv6SlBejvJgATw==",
|
||||
"requires": {
|
||||
"strnum": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"immer": {
|
||||
"version": "9.0.15",
|
||||
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
|
||||
@@ -26828,14 +27259,14 @@
|
||||
}
|
||||
},
|
||||
"@edx/paragon": {
|
||||
"version": "20.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.6.1.tgz",
|
||||
"integrity": "sha512-iLazRgEvoR6NYcnXEGMPViqMgGlvZN/mT5IBarBaIesXVgZvLGY12SUEIEFcWZrTuwaPFVvktLR9/PGjLIA+9Q==",
|
||||
"version": "20.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.21.0.tgz",
|
||||
"integrity": "sha512-p9g/ONfWsZ6UxX7hNEoO2nUI0qhdGqQZYvLk3MpE0NMmTUYafpCBpRwOGYTXOXpIBzRENRiJUGJ/59XL0MelOw==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.1.1",
|
||||
"@fortawesome/react-fontawesome": "^0.1.18",
|
||||
"@popperjs/core": "^2.11.4",
|
||||
"bootstrap": "^4.6.1",
|
||||
"bootstrap": "^4.6.2",
|
||||
"classnames": "^2.3.1",
|
||||
"email-prop-type": "^3.0.0",
|
||||
"file-selector": "^0.6.0",
|
||||
@@ -26844,7 +27275,7 @@
|
||||
"lodash.uniqby": "^4.7.0",
|
||||
"mailto-link": "^2.0.0",
|
||||
"prop-types": "^15.8.1",
|
||||
"react-bootstrap": "^1.6.4",
|
||||
"react-bootstrap": "^1.6.5",
|
||||
"react-dropzone": "^14.2.1",
|
||||
"react-focus-on": "^3.5.4",
|
||||
"react-loading-skeleton": "^3.1.0",
|
||||
@@ -26854,7 +27285,8 @@
|
||||
"react-table": "^7.7.0",
|
||||
"react-transition-group": "^4.4.2",
|
||||
"tabbable": "^5.3.3",
|
||||
"uncontrollable": "^7.2.1"
|
||||
"uncontrollable": "^7.2.1",
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": {
|
||||
@@ -26942,6 +27374,11 @@
|
||||
"loose-envify": "^1.4.0",
|
||||
"prop-types": "^15.6.2"
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -27843,6 +28280,68 @@
|
||||
"@lezer/common": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"@mapbox/node-pre-gyp": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
|
||||
"integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
|
||||
"requires": {
|
||||
"detect-libc": "^2.0.0",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"make-dir": "^3.1.0",
|
||||
"node-fetch": "^2.6.7",
|
||||
"nopt": "^5.0.0",
|
||||
"npmlog": "^5.0.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"semver": "^7.3.5",
|
||||
"tar": "^6.1.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
||||
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
|
||||
"requires": {
|
||||
"semver": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.8",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
|
||||
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@newrelic/publish-sourcemap": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@newrelic/publish-sourcemap/-/publish-sourcemap-5.1.0.tgz",
|
||||
@@ -29056,6 +29555,11 @@
|
||||
"integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
|
||||
"dev": true
|
||||
},
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
||||
},
|
||||
"accepts": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
@@ -29141,7 +29645,6 @@
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
||||
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "4"
|
||||
}
|
||||
@@ -29239,8 +29742,7 @@
|
||||
"ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
@@ -29261,6 +29763,11 @@
|
||||
"picomatch": "^2.0.4"
|
||||
}
|
||||
},
|
||||
"aproba": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
|
||||
"integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
|
||||
},
|
||||
"arch": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
|
||||
@@ -29287,6 +29794,27 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"are-we-there-yet": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
|
||||
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
|
||||
"requires": {
|
||||
"delegates": "^1.0.0",
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
@@ -30264,9 +30792,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"bootstrap": {
|
||||
"version": "4.6.1",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz",
|
||||
"integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==",
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
|
||||
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"brace-expansion": {
|
||||
@@ -30546,6 +31074,16 @@
|
||||
"integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ==",
|
||||
"dev": true
|
||||
},
|
||||
"canvas": {
|
||||
"version": "2.10.1",
|
||||
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.10.1.tgz",
|
||||
"integrity": "sha512-29pIjn9uwTUsIgJUNd7GXxKk8sg4iyJwLm1wIilNIqX1mVzXSc2nUij9exW1LqNpis1d2ebMYfMqTWcokZ4pdA==",
|
||||
"requires": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.0",
|
||||
"nan": "^2.15.0",
|
||||
"simple-get": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"capture-exit": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
|
||||
@@ -30649,6 +31187,11 @@
|
||||
"readdirp": "~3.6.0"
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
||||
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
|
||||
},
|
||||
"chrome-trace-event": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
|
||||
@@ -30900,6 +31443,11 @@
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"color-support": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
|
||||
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
|
||||
},
|
||||
"colord": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
|
||||
@@ -31014,6 +31562,11 @@
|
||||
"integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
|
||||
"dev": true
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
"integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
|
||||
},
|
||||
"contains-path": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
|
||||
@@ -31403,7 +31956,6 @@
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
@@ -31753,6 +32305,11 @@
|
||||
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
||||
"dev": true
|
||||
},
|
||||
"delegates": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
|
||||
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
|
||||
},
|
||||
"depd": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
|
||||
@@ -31770,6 +32327,11 @@
|
||||
"integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
|
||||
"dev": true
|
||||
},
|
||||
"detect-libc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
|
||||
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
|
||||
},
|
||||
"detect-newline": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
|
||||
@@ -33824,6 +34386,14 @@
|
||||
"universalify": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
|
||||
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
|
||||
"requires": {
|
||||
"minipass": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"fs-monkey": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
|
||||
@@ -33878,6 +34448,32 @@
|
||||
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
|
||||
"dev": true
|
||||
},
|
||||
"gauge": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
|
||||
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
|
||||
"requires": {
|
||||
"aproba": "^1.0.3 || ^2.0.0",
|
||||
"color-support": "^1.1.2",
|
||||
"console-control-strings": "^1.0.0",
|
||||
"has-unicode": "^2.0.1",
|
||||
"object-assign": "^4.1.1",
|
||||
"signal-exit": "^3.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^6.0.1",
|
||||
"wide-align": "^1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"requires": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"gensync": {
|
||||
"version": "1.0.0-beta.2",
|
||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||
@@ -34059,7 +34655,6 @@
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
@@ -34268,6 +34863,11 @@
|
||||
"has-symbols": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"has-unicode": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
|
||||
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
|
||||
},
|
||||
"has-value": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
|
||||
@@ -34537,7 +35137,6 @@
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
||||
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
@@ -35433,8 +36032,7 @@
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||
},
|
||||
"is-function": {
|
||||
"version": "1.0.2",
|
||||
@@ -37664,9 +38262,9 @@
|
||||
}
|
||||
},
|
||||
"jquery": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
|
||||
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
|
||||
"integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==",
|
||||
"peer": true
|
||||
},
|
||||
"js-tokens": {
|
||||
@@ -38294,6 +38892,37 @@
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
||||
"dev": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
|
||||
"integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
|
||||
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
|
||||
"requires": {
|
||||
"minipass": "^3.0.0",
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"mixin-deep": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
|
||||
@@ -38355,8 +38984,7 @@
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"dev": true
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"multicast-dns": {
|
||||
"version": "6.2.3",
|
||||
@@ -38389,6 +39017,11 @@
|
||||
"global": "^4.4.0"
|
||||
}
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
|
||||
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
|
||||
@@ -38468,6 +39101,35 @@
|
||||
"tslib": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"requires": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"requires": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
|
||||
@@ -38547,6 +39209,14 @@
|
||||
"integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
|
||||
"dev": true
|
||||
},
|
||||
"nopt": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
|
||||
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
|
||||
"requires": {
|
||||
"abbrev": "1"
|
||||
}
|
||||
},
|
||||
"normalize-package-data": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
||||
@@ -38614,6 +39284,17 @@
|
||||
"path-key": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"npmlog": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
|
||||
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
|
||||
"requires": {
|
||||
"are-we-there-yet": "^2.0.0",
|
||||
"console-control-strings": "^1.1.0",
|
||||
"gauge": "^3.0.0",
|
||||
"set-blocking": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"nth-check": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
||||
@@ -41248,8 +41929,7 @@
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"dev": true
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"safe-json-parse": {
|
||||
"version": "4.0.0",
|
||||
@@ -41687,8 +42367,7 @@
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
|
||||
},
|
||||
"set-value": {
|
||||
"version": "2.0.1",
|
||||
@@ -41781,8 +42460,37 @@
|
||||
"signal-exit": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
|
||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
|
||||
},
|
||||
"simple-concat": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
|
||||
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
|
||||
},
|
||||
"simple-get": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
|
||||
"integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
|
||||
"requires": {
|
||||
"decompress-response": "^4.2.0",
|
||||
"once": "^1.3.1",
|
||||
"simple-concat": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"decompress-response": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
|
||||
"integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
|
||||
"requires": {
|
||||
"mimic-response": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"mimic-response": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
|
||||
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"sirv": {
|
||||
"version": "1.0.19",
|
||||
@@ -42352,7 +43060,6 @@
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
@@ -42382,7 +43089,6 @@
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
@@ -42392,14 +43098,12 @@
|
||||
"emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"dev": true
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
}
|
||||
@@ -42528,9 +43232,7 @@
|
||||
"strnum": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
||||
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
|
||||
},
|
||||
"style-loader": {
|
||||
"version": "2.0.0",
|
||||
@@ -42771,6 +43473,31 @@
|
||||
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
|
||||
"dev": true
|
||||
},
|
||||
"tar": {
|
||||
"version": "6.1.11",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
|
||||
"integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
|
||||
"requires": {
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
"minipass": "^3.0.0",
|
||||
"minizlib": "^2.1.1",
|
||||
"mkdirp": "^1.0.3",
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"tar-stream": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
|
||||
@@ -43386,8 +44113,7 @@
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"utila": {
|
||||
"version": "0.4.0",
|
||||
@@ -44104,6 +44830,14 @@
|
||||
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"wide-align": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
|
||||
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
|
||||
"requires": {
|
||||
"string-width": "^1.0.2 || 2 || 3 || 4"
|
||||
}
|
||||
},
|
||||
"wildcard": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
|
||||
|
||||
@@ -36,9 +36,9 @@
|
||||
"@edx/brand": "npm:@edx/brand-openedx@1.1.0",
|
||||
"@edx/frontend-build": "^11.0.0",
|
||||
"@edx/frontend-component-footer": "11.1.1",
|
||||
"@edx/frontend-lib-content-components": "^1.43.0",
|
||||
"@edx/frontend-lib-content-components": "^1.72.0",
|
||||
"@edx/frontend-platform": "2.5.1",
|
||||
"@edx/paragon": "20.6.1",
|
||||
"@edx/paragon": "^20.21.0",
|
||||
"@fortawesome/fontawesome-svg-core": "1.2.28",
|
||||
"@fortawesome/free-brands-svg-icons": "5.11.2",
|
||||
"@fortawesome/free-regular-svg-icons": "5.11.2",
|
||||
|
||||
@@ -51,7 +51,7 @@ export default function CourseAuthoringPage({ courseId, children }) {
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="bg-light-200">
|
||||
<div className={pathname.includes('/editor/') ? '' : 'bg-light-200'}>
|
||||
{/* While V2 Editors are tempoarily served from thier own pages
|
||||
using url pattern containing /editor/,
|
||||
we shouldn't have the header and footer on these pages.
|
||||
|
||||
@@ -2,6 +2,7 @@ import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { useParams } from 'react-router';
|
||||
import { EditorPage } from '@edx/frontend-lib-content-components';
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
|
||||
const EditorContainer = ({
|
||||
courseId,
|
||||
@@ -13,8 +14,8 @@ const EditorContainer = ({
|
||||
courseId={courseId}
|
||||
blockType={blockType}
|
||||
blockId={blockId}
|
||||
studioEndpointUrl={process.env.STUDIO_BASE_URL}
|
||||
lmsEndpointUrl={process.env.LMS_BASE_URL}
|
||||
studioEndpointUrl={getConfig().STUDIO_BASE_URL}
|
||||
lmsEndpointUrl={getConfig().LMS_BASE_URL}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -2,11 +2,11 @@ import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button, Card } from '@edx/paragon';
|
||||
|
||||
const DeletePopup = ({
|
||||
const ConfirmationPopup = ({
|
||||
label,
|
||||
bodyText,
|
||||
onDelete,
|
||||
deleteLabel,
|
||||
onConfirm,
|
||||
confirmLabel,
|
||||
onCancel,
|
||||
cancelLabel,
|
||||
}) => (
|
||||
@@ -22,21 +22,21 @@ const DeletePopup = ({
|
||||
<Button variant="tertiary" onClick={onCancel}>
|
||||
{cancelLabel}
|
||||
</Button>
|
||||
<Button variant="outline-brand" className="ml-2" onClick={onDelete}>
|
||||
{deleteLabel}
|
||||
<Button variant="outline-brand" className="ml-2" onClick={onConfirm}>
|
||||
{confirmLabel}
|
||||
</Button>
|
||||
</Card.Footer>
|
||||
</Card.Body>
|
||||
</Card>
|
||||
);
|
||||
|
||||
DeletePopup.propTypes = {
|
||||
ConfirmationPopup.propTypes = {
|
||||
label: PropTypes.string.isRequired,
|
||||
bodyText: PropTypes.string.isRequired,
|
||||
onDelete: PropTypes.func.isRequired,
|
||||
onConfirm: PropTypes.func.isRequired,
|
||||
onCancel: PropTypes.func.isRequired,
|
||||
deleteLabel: PropTypes.string.isRequired,
|
||||
confirmLabel: PropTypes.string.isRequired,
|
||||
cancelLabel: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default DeletePopup;
|
||||
export default ConfirmationPopup;
|
||||
@@ -13,6 +13,7 @@ export default function FormSwitchGroup({
|
||||
onChange,
|
||||
onBlur,
|
||||
checked,
|
||||
disabled,
|
||||
}) {
|
||||
const helpTextId = `${id}HelpText`;
|
||||
|
||||
@@ -36,6 +37,7 @@ export default function FormSwitchGroup({
|
||||
onChange={onChange}
|
||||
onBlur={onBlur}
|
||||
checked={checked}
|
||||
disabled={disabled}
|
||||
/>
|
||||
</div>
|
||||
<Form.Text
|
||||
@@ -57,9 +59,11 @@ FormSwitchGroup.propTypes = {
|
||||
onChange: PropTypes.func.isRequired,
|
||||
onBlur: PropTypes.func,
|
||||
checked: PropTypes.bool.isRequired,
|
||||
disabled: PropTypes.bool,
|
||||
};
|
||||
FormSwitchGroup.defaultProps = {
|
||||
className: null,
|
||||
onBlur: null,
|
||||
name: null,
|
||||
disabled: false,
|
||||
};
|
||||
|
||||
@@ -1,31 +1,27 @@
|
||||
import arMessages from './messages/ar.json';
|
||||
import caMessages from './messages/ca.json';
|
||||
// no need to import en messages-- they are in the defaultMessage field
|
||||
import es419Messages from './messages/es_419.json';
|
||||
import frMessages from './messages/fr.json';
|
||||
import es419Messages from './messages/es_419.json';
|
||||
import zhcnMessages from './messages/zh_CN.json';
|
||||
import heMessages from './messages/he.json';
|
||||
import idMessages from './messages/id.json';
|
||||
import kokrMessages from './messages/ko_kr.json';
|
||||
import plMessages from './messages/pl.json';
|
||||
import ptbrMessages from './messages/pt_br.json';
|
||||
import ruMessages from './messages/ru.json';
|
||||
import thMessages from './messages/th.json';
|
||||
import ptMessages from './messages/pt.json';
|
||||
import itMessages from './messages/it.json';
|
||||
import ukMessages from './messages/uk.json';
|
||||
import deMessages from './messages/de.json';
|
||||
import ruMessages from './messages/ru.json';
|
||||
import hiMessages from './messages/hi.json';
|
||||
import frCAMessages from './messages/fr_CA.json';
|
||||
// no need to import en messages-- they are in the defaultMessage field
|
||||
|
||||
const messages = {
|
||||
ar: arMessages,
|
||||
'es-419': es419Messages,
|
||||
fr: frMessages,
|
||||
'zh-cn': zhcnMessages,
|
||||
ca: caMessages,
|
||||
he: heMessages,
|
||||
id: idMessages,
|
||||
'ko-kr': kokrMessages,
|
||||
pl: plMessages,
|
||||
'pt-br': ptbrMessages,
|
||||
pt: ptMessages,
|
||||
it: itMessages,
|
||||
de: deMessages,
|
||||
hi: hiMessages,
|
||||
'fr-ca': frCAMessages,
|
||||
ru: ruMessages,
|
||||
th: thMessages,
|
||||
uk: ukMessages,
|
||||
};
|
||||
|
||||
|
||||
@@ -42,7 +42,12 @@
|
||||
"authoring.discussions.configure": "تهيئة المناقشات",
|
||||
"authoring.discussions.ok": "حسناً",
|
||||
"authoring.discussions.cancel": "إلغاء",
|
||||
"authoring.discussions.confirm": "تأكيد",
|
||||
"authoring.discussions.confirmConfigurationChange": "أمتأكد أنك تريد تغيير إعدادات المناقشة؟",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "هل تريد تفعيل المناقشات على الوحدات في الأقسام الفرعية المنقّطة؟",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "هل تريد تعطيل المناقشات على الوحدات في الأقسام الفرعية المنقّطة؟",
|
||||
"authoring.discussions.confirmEnableDiscussions": "سيؤدي تفعيل هذا الخيار إلى تمكين المناقشة تلقائيًا على جميع وحدات الأقسام الفرعية المنقطّة باستثناء الامتحانات الموقوتة.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "سيؤدي تعطيل هذا الخيار إلى تعطيل المناقشة تلقائيًا في جميع وحدات الأقسام الفرعية المنقّطة. سيتم إدراج مواضيع المناقشة التي تحتوي رسالة واحدة على الأقل ضمن \"المواضيع المؤرشفة\" تحت تبويب المواضيع على صفحة المناقشات.",
|
||||
"authoring.discussions.backButton": "رجوع",
|
||||
"authoring.discussions.saveButton": "حفظ",
|
||||
"authoring.discussions.savingButton": "الحفظ جارٍ",
|
||||
@@ -61,6 +66,8 @@
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "اختر من بين مواضيع المناقشة العامة على مستوى مساقك، أي المواضيع تريد أن تقسّم.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "عام",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "أسئلة للأساتذة المساعدين",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "لضبط هذه الإعدادات، قم بتفعيل الأفواج على ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "لوحة معلومات الأستاذ",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "رؤية المناقشات ذات السياق.",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "تفعيل المناقشات على الوحدات المتواجدة في أقسام فرعية منقّطة",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "السماح للطلاب بالتفاعل مع المناقشات على جميع صفحات الوحدات باستثناء الامتحانات الموقوتة.",
|
||||
@@ -208,7 +215,8 @@
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "تتطلب هذه التهيئة مشاركة {provider} أسماء المستخدمين الخاصة بالمتعلمين و فريق المساق.",
|
||||
"authoring.live.piiSharingEnableHelpText": "لتفعيل هذه الميزة، يرجى الاتصال بفريق دعم edX لتفعيل مشاركة معلومات التعريف الشخصية لهذا المساق.",
|
||||
"authoring.live.freePlanMessage": "الخطة المجانية مهيأة سلفًا، و لا حاجة ﻷي تهيئة إضافية.",
|
||||
"authoring.live.freePlanMessage": "الخطة المجانية مهيئة سلفًا، ولا حاجة ﻷي تهيئة إضافية. باختيار الخطة المجانية ، فإنك توافق على بنود Blindside Networks الواردة في",
|
||||
"authoring.live.privacyPolicy": "سياسة خصوصيتها.",
|
||||
"course-authoring.pages-resources.heading": "الصفحات و الموارد",
|
||||
"course-authoring.pages-resources.resources.settings.button": "الإعدادات",
|
||||
"course-authoring.pages-resources.viewLive.button": "مشاهدة النسخة الحية",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
352
src/i18n/messages/de.json
Normal file
352
src/i18n/messages/de.json
Normal file
@@ -0,0 +1,352 @@
|
||||
{
|
||||
"authoring.alert.error.connection": "We encountered a technical error when loading this page. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.loading": "Loading...",
|
||||
"authoring.alert.error.permission": "You are not authorized to view this page. If you feel you should have access, please reach out to your course team admin to be given access.",
|
||||
"authoring.alert.save.error.connection": "We encountered a technical error when applying changes. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.alert.support.text": "Support Page",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Cancel",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Save",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Saving",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Saved",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Retry",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Enabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Disabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "We couldn't apply your changes.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Please check your entries and try again.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configure calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "The calculator supports numbers, operators, constants,\n functions, and other mathematical concepts. When enabled, an icon to\n access the calculator appears on all pages in the body of your course.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "Learn more about the calculator",
|
||||
"authoring.discussions.documentationPage": "Visit the {name} documentation page",
|
||||
"authoring.discussions.formInstructions": "Complete the fields below to set up your discussion tool.",
|
||||
"authoring.discussions.consumerKey": "Consumer Key",
|
||||
"authoring.discussions.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.discussions.consumerSecret": "Consumer Secret",
|
||||
"authoring.discussions.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.discussions.launchUrl": "Launch URL",
|
||||
"authoring.discussions.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "To enable {providerName} for your course, please contact their support team at {supportEmail} to learn more about pricing and usage.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "To fully configure {providerName} will also require sharing usernames and emails for learners and course team. Please contact your edX project coordinator to enable PII sharing for this course.",
|
||||
"authoring.discussions.piiSharing": "Optionally share a user's username and/or email with the LTI provider:",
|
||||
"authoring.discussions.piiShareUsername": "Share username",
|
||||
"authoring.discussions.piiShareEmail": "Share email",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact: {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Students will lose access to any active or previous discussion posts for your course.",
|
||||
"authoring.discussions.configure.app": "Configure {name}",
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
"authoring.discussions.savedButton": "Saved",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divide discussions by cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Learners will only be able to view and respond to discussions posted by members of their cohort.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divide course-wide discussion topics",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Group in context discussion at the subsection level",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Learners will be able to view any post in the sub-section no matter which unit page they are viewing. While this is not recommended, if your course has short learning sequences or low enrollment grouping may increase engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Anonymous posting",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Allow anonymous discussion posts",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "If enabled, learners can create posts that are anonymous to all users.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Allow anonymous discussion posts to peers",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Learners will be able to post anonymously to other peers but all posts will be visible to course staff.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Email notifications for reported content",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Discussion Admins, Moderators, Community TAs and Group Community TAs (only for their own cohort) will receive an email notification when content is reported.",
|
||||
"authoring.discussions.discussionTopics": "Discussion topics",
|
||||
"authoring.discussions.discussionTopics.label": "General discussion topics",
|
||||
"authoring.discussions.discussionTopics.help": "Discussions can include general topics not contained to the course structure. All courses have a general topic by default.",
|
||||
"authoring.discussions.discussionTopic.required": "Topic name is a required field",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "It looks like this name is already in use",
|
||||
"authoring.discussions.addTopicButton": "Add topic",
|
||||
"authoring.discussions.deleteButton": "Delete",
|
||||
"authoring.discussions.cancelButton": "Cancel",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "edX recommends that you do not delete discussion topics once your course is running.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Delete this topic?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Rename general topic",
|
||||
"authoring.discussions.generalTopicHelp.help": "This is the default discussion topic for your course.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configure topic",
|
||||
"authoring.discussions.addTopicHelpText": "Choose a unique name for your topic",
|
||||
"authoring.discussions.blackoutDates": "Discussion blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "If added, learners will not be able to post in discussions between these dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Add blackout date range",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configure blackout date range",
|
||||
"authoring.discussions.blackoutStartDate.help": "Enter a start date, e.g. 12/10/2023",
|
||||
"authoring.discussions.blackoutEndDate.help": "Enter an end date, e.g. 12/17/2023",
|
||||
"authoring.discussions.blackoutStartTime.help": "Enter a start time, e.g. 09:00 AM",
|
||||
"authoring.discussions.blackoutEndTime.help": "Enter an end time, e.g. 05:00 PM",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "These blackout dates are currently active. If deleted, learners will be able to post in discussions during these dates. Are you sure you want to proceed?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "If deleted, learners will be able to post in discussions during these dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Are you sure you want to delete these blackout dates?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Delete active blackout dates?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Delete blackout dates?",
|
||||
"authoring.blackoutDates.delete": "Delete Blackout Dates",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "Start date is a required field",
|
||||
"authoring.blackoutDates.endDate.required": "End date is a required field",
|
||||
"authoring.blackoutDates.startDate.inPast": "Start date cannot be after end date",
|
||||
"authoring.blackoutDates.endDate.inPast": "End date cannot be before start date",
|
||||
"authoring.blackoutDates.startTime.inPast": "Start time cannot be after end time",
|
||||
"authoring.blackoutDates.endTime.inPast": "End time cannot be before start time",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Enter a valid start time",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Enter a valid end time",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Enter a valid start Date",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Enter a valid end date",
|
||||
"authoring.topics.delete": "Delete Topic",
|
||||
"authoring.topics.expand": "Expand",
|
||||
"authoring.topics.collapse": "Collapse",
|
||||
"authoring.blackoutDates.start.date": "Start date",
|
||||
"authoring.blackoutDates.start.time": "Start time (optional) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "End date",
|
||||
"authoring.blackoutDates.end.time": "End time (optional) ({zone})",
|
||||
"authoring.discussions.heading": "Select a discussion tool for this course",
|
||||
"authoring.discussions.supportedFeatures": "Supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Show supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Hide supported features",
|
||||
"authoring.discussions.noApps": "There are no discussions providers available for your course.",
|
||||
"authoring.discussions.nextButton": "Next",
|
||||
"authoring.discussions.appFullSupport": "Full support",
|
||||
"authoring.discussions.appBasicSupport": "Basic support",
|
||||
"authoring.discussions.selectApp": "Select {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza is designed to connect students, TAs, and professors so every student can get the help they need when they need it.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offers educators a gameful learning digital solution to improve student engagement by building learning communities for any course modality.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe leverages the power of community + artificial intelligence to connect individuals to the answers, resources, and people they need to succeed.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse is modern forum software for your community. Use it as a mailing list, discussion forum, long-form chat room, and more!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion helps scale class communication in a beautiful and intuitive interface. Questions reach and benefit the whole class. Less emails, more time saved.",
|
||||
"authoring.discussions.featureName-discussion-page": "Discussion page",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Embedded course sections",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Advanced in context discussion",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Anonymous posting",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Automatic learner enrollment",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Blackout discussion dates",
|
||||
"authoring.discussions.featureName-community-ta-support": "Community TA support",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Course cohort support",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Direct messages from instructors",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Discussion content prompts",
|
||||
"authoring.discussions.featureName-email-notifications": "Email notifications",
|
||||
"authoring.discussions.featureName-graded-discussions": "Graded discussions",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "In-platform notifications",
|
||||
"authoring.discussions.featureName-internationalization-support": "Internationalization support",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "LTI advanced sharing",
|
||||
"authoring.discussions.featureName-basic-configuration": "Basic configuration",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Primary discussion app experience",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Question & discussion support",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Report content to moderators",
|
||||
"authoring.discussions.featureName-research-data-events": "Research data events",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplified in-context discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "User mentions",
|
||||
"authoring.discussions.featureName-wcag-2.1": "WCAG 2.1 support",
|
||||
"authoring.discussions.wcag-2.0-support": "WCAG 2.0 support",
|
||||
"authoring.discussions.basic-support": "Basic support",
|
||||
"authoring.discussions.partial-support": "Partial support",
|
||||
"authoring.discussions.full-support": "Full support",
|
||||
"authoring.discussions.common-support": "Commonly requested",
|
||||
"authoring.discussions.settings": "Settings",
|
||||
"authoring.discussions.applyButton": "Apply",
|
||||
"authoring.discussions.applyingButton": "Applying",
|
||||
"authoring.discussions.appliedButton": "Applied",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Discussion provider can't be changed after course has started, please reach out to partner support.",
|
||||
"authoring.discussions.providerSelection": "Provider selection",
|
||||
"authoring.discussions.Incomplete": "Incomplete",
|
||||
"course-authoring.pages-resources.notes.heading": "Configure notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Learners can access their notes either in the body of the\n course of on a notes page. On the notes page, a learner can see all the\n notes made during the course. The page also contains links to the location\n of the notes in the course body.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Learn more about notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Select a plan",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configure Live",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "Live",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Schedule meetings and conduct live course sessions with learners.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "Learn more about live",
|
||||
"authoring.live.selectProvider": "Select a video conferencing tool",
|
||||
"authoring.live.formInstructions": "Complete the fields below to set up your video conferencing tool.",
|
||||
"authoring.live.consumerKey": "Consumer Key",
|
||||
"authoring.live.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.live.consumerSecret": "Consumer Secret",
|
||||
"authoring.live.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.live.launchUrl": "Launch URL",
|
||||
"authoring.live.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.live.launchEmail": "Launch Email",
|
||||
"authoring.live.launchEmail.required": "Launch Email is a required field",
|
||||
"authoring.live.provider.helpText": "This configuration will require sharing username and emails of learners and the course team with {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "This configuration will require sharing usernames and emails of learners and the course team with {provider}. To access the LTI configuration for {provider}, please request your edX project coordinator to get PII sharing enabled for this course.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Microsoft Teams",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
"course-authoring.badge.enabled": "Enabled",
|
||||
"authoring.proctoring.no": "No",
|
||||
"authoring.proctoring.yes": "Yes",
|
||||
"authoring.proctoring.support.text": "Support Page",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Proctored exams",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Enable and configure proctored exams in your course.",
|
||||
"authoring.proctoring.enabled": "Enabled",
|
||||
"authoring.proctoring.learn.more": "Learn more about proctoring",
|
||||
"authoring.proctoring.provider.label": "Proctoring provider",
|
||||
"authoring.proctoring.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"authoring.proctoring.escalationemail.label": "Proctortrack escalation email",
|
||||
"authoring.proctoring.escalationemail.help": "Provide an email address to be contacted by the support team for escalations (e.g. appeals, delayed reviews).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.proctoring.allowoptout.label": "Allow learners to opt out of proctoring on proctored exams",
|
||||
"authoring.proctoring.createzendesk.label": "Create Zendesk tickets for suspicious attempts",
|
||||
"authoring.proctoring.error.single": "There is 1 error in this form.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.proctoring.save": "Save",
|
||||
"authoring.proctoring.saving": "Saving...",
|
||||
"authoring.proctoring.cancel": "Cancel",
|
||||
"authoring.proctoring.studio.link.text": "Go back to your course in Studio",
|
||||
"authoring.proctoring.alert.success": "\n Proctored exam settings saved successfully. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n We encountered a technical error while trying to save proctored exam settings.\n This might be a temporary issue, so please try again in a few minutes.\n If the problem persists,\n please go to the {support_link} for help.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configure progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "As students work through graded assignments, scores\n will appear under the progress tab. The progress tab contains a chart of\n all graded assignments in the course, with a list of all assignments and\n scores below.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Learn more about progress",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Enable progress graph",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "If enabled, students can view the progress graph",
|
||||
"authoring.pagesAndResources.teams.heading": "Configure teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Allow learners to work together on specific projects or activities.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Learn more about teams",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "The maximum number of learners that can join a team",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Enter max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "Max team size must be a positive number larger than zero.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Max team size cannot be greater than {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groups",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Groups are spaces where learners can create or join teams.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configure group",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Name",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choose a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Enter a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "It looks like this name is already in use",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Enter details about this group",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Enter a description for this group",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Control who can see, create and join teams",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Open",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Learners can create, join, leave, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Public managed",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Only course staff can control teams and memberships. Learners can see other teams.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Private managed",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Only course staff can control teams, memberships, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Max team size (optional)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Override the global max team size",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Add group",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Delete",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Expand group editor",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Close group editor",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Delete",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Cancel",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Delete this group?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommends that you do not delete groups once your course is running.\n Your group will no longer be visible in the LMS and learners will not be able to leave teams associated with it.\n Please delete learners from teams before deleting the associated group.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "No groups found",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Add one or more groups to enable teams.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configure wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "The course wiki can be set up based on the needs of your\n course. Common uses might include sharing answers to course FAQs, sharing\n editable course information, or providing access to learner-created\n resources.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Learn more about the wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Enable public wiki access",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "If enabled, edX users can view the course wiki even when\n they're not enrolled in the course.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "If checked, proctored exams are enabled in your course.",
|
||||
"authoring.examsettings.allowoptout.label": "Allow Opting Out of Proctored Exams",
|
||||
"authoring.examsettings.allowoptout.help": "\n If this value is \"Yes\", learners can choose to take proctored exams without proctoring.\n If this value is \"No\", all learners must take the exam with proctoring.\n ",
|
||||
"authoring.examsettings.provider.label": "Proctoring Provider",
|
||||
"authoring.examsettings.escalationemail.label": "Proctortrack Escalation Email",
|
||||
"authoring.examsettings.escalationemail.help": "\n Required if \"proctortrack\" is selected as your proctoring provider. Enter an email address to be\n contacted by the support team whenever there are escalations (e.g. appeals, delayed reviews, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Create Zendesk Tickets for Suspicious Proctored Exam Attempts",
|
||||
"authoring.examsettings.createzendesk.help": "If this value is \"Yes\", a Zendesk ticket will be created for suspicious proctored exam attempts.",
|
||||
"authoring.examsettings.submit": "Submit",
|
||||
"authoring.examsettings.alert.success": "\n Proctored exam settings saved successfully.\n You can go back to your course in Studio {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "No",
|
||||
"authoring.examsettings.allowoptout.yes": "Yes",
|
||||
"authoring.examsettings.createzendesk.no": "No",
|
||||
"authoring.examsettings.createzendesk.yes": "Yes",
|
||||
"authoring.examsettings.support.text": "Support Page",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Enable Proctored Exams",
|
||||
"authoring.examsettings.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.examsettings.error.single": "There is 1 error in this form.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.examsettings.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"header.links.content": "Content",
|
||||
"header.links.settings": "Settings",
|
||||
"header.links.content.tools": "Tools",
|
||||
"header.links.outline": "Outline",
|
||||
"header.links.updates": "Updates",
|
||||
"header.links.pages": "Pages & Resources",
|
||||
"header.links.filesAndUploads": "Files & Uploads",
|
||||
"header.links.textbooks": "Textbooks",
|
||||
"header.links.videoUploads": "Video Uploads",
|
||||
"header.links.scheduleAndDetails": "Schedule & Details",
|
||||
"header.links.grading": "Grading",
|
||||
"header.links.courseTeam": "Course Team",
|
||||
"header.links.groupConfigurations": "Group Configurations",
|
||||
"header.links.proctoredExamSettings": "Proctored Exam Settings",
|
||||
"header.links.advancedSettings": "Advanced Settings",
|
||||
"header.links.certificates": "Certificates",
|
||||
"header.links.publisher": "Publisher",
|
||||
"header.links.import": "Import",
|
||||
"header.links.export": "Export",
|
||||
"header.links.checklists": "Checklists",
|
||||
"header.user.menu.studio": "Studio Home",
|
||||
"header.user.menu.maintenance": "Maintenance",
|
||||
"header.user.menu.logout": "Logout",
|
||||
"header.label.account.menu": "Account Menu",
|
||||
"header.label.account.menu.for": "Account menu for {username}",
|
||||
"header.label.main.nav": "Main",
|
||||
"header.label.main.menu": "Main Menu",
|
||||
"header.label.main.header": "Main",
|
||||
"header.label.secondary.nav": "Secondary",
|
||||
"header.label.courseOutline": "Back to course outline in Studio"
|
||||
}
|
||||
@@ -42,7 +42,12 @@
|
||||
"authoring.discussions.configure": "Configura discusiones",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancelar",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "¿Estas seguro que deseas cambiar la configuración de las discusiones? ",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Volver atrás",
|
||||
"authoring.discussions.saveButton": "Guardar",
|
||||
"authoring.discussions.savingButton": "Guardando",
|
||||
@@ -61,6 +66,8 @@
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Escoge cuales de los temas de tus discusiones de todo el cursos te gustaría dividir.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Preguntas para las herramientas asistidas",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "visualización de las discusioness en contexto",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Habilitar discusiones en unidades de subsecciones calificables",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Permítele a los estudiantes participar con discusiones en todas las unidades de página calificables con excepción de los exámenes cronometrados.",
|
||||
@@ -208,7 +215,8 @@
|
||||
"authoring.live.appName-bigBlueButton": "GranBotónAzul",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "Esta configuración requerirá compartir los nombres de usuario de los alumnos y el equipo del curso con {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "Para habilitar esta función, comuníquese con el equipo de soporte de edX para habilitar el uso compartido de PII para este curso.",
|
||||
"authoring.live.freePlanMessage": "El plan gratuito está preconfigurado y no se requieren configuraciones adicionales.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Páginas & Recursos",
|
||||
"course-authoring.pages-resources.resources.settings.button": "configuraciones",
|
||||
"course-authoring.pages-resources.viewLive.button": "Ver en vivo",
|
||||
|
||||
@@ -42,7 +42,12 @@
|
||||
"authoring.discussions.configure": "Configurez les discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Annuler",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Voulez-vous vraiment modifier les paramètres de discussion ?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Retour",
|
||||
"authoring.discussions.saveButton": "Enregistrer",
|
||||
"authoring.discussions.savingButton": "Enregistrement",
|
||||
@@ -61,6 +66,8 @@
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choisissez lequel des sujets de discussion à l'échelle du cours vous souhaitez diviser.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "Général",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions pour les assistants d'enseignement",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibilité des discussions en contexte",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Permettez aux apprenants de participer à la discussion sur toutes les pages d'unités notées, à l'exception des examens chronométrés.",
|
||||
@@ -208,7 +215,8 @@
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages et ressources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "paramètres",
|
||||
"course-authoring.pages-resources.viewLive.button": "Aperçu temps réel",
|
||||
|
||||
352
src/i18n/messages/fr_CA.json
Normal file
352
src/i18n/messages/fr_CA.json
Normal file
@@ -0,0 +1,352 @@
|
||||
{
|
||||
"authoring.alert.error.connection": "Nous avons rencontré une erreur technique lors du chargement de cette page. Cela peut être un problème temporaire, veuillez donc réessayer dans quelques minutes. Si le problème persiste, accédez à {support_link} pour obtenir de l'aide.",
|
||||
"authoring.loading": "Chargement...",
|
||||
"authoring.alert.error.permission": "Vous n'êtes pas autorisé à afficher cette page. Si vous croyez que vous devriez avoir accès à cette page, veuillez contacter l'équipe administrative du cours pour obtenir la permission.",
|
||||
"authoring.alert.save.error.connection": "Nous avons rencontré une erreur technique lors de l'application des modifications. Cela peut être un problème temporaire, veuillez donc réessayer dans quelques minutes. Si le problème persiste, accédez à {support_link} pour obtenir de l'aide.",
|
||||
"authoring.alert.support.text": "Page de support",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Annuler",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Sauvegarder",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Sauvegarde en cours",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Sauvegardé",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Réessayez",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Activé",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Désactivé",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "Nous n'avons pas pu appliquer vos changements.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Veuillez vérifier vos entrées et réessayer.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configurer la calculatrice",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculatrice",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "La calculatrice prend en charge les nombres, les opérateurs, les constantes,\n fonctions et autres concepts mathématiques. Lorsqu'elle est activée, une icône pour\n accéder à la calculatrice apparaît sur toutes les pages du corps de votre cours.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "En savoir plus sur la calculatrice",
|
||||
"authoring.discussions.documentationPage": "Visitez la page de documentation de {name}",
|
||||
"authoring.discussions.formInstructions": "Complétez les champs ci-dessous pour configurer votre outil de discussion.",
|
||||
"authoring.discussions.consumerKey": "Clé du consommateur",
|
||||
"authoring.discussions.consumerKey.required": "La clé du consommateur est un champ obligatoire",
|
||||
"authoring.discussions.consumerSecret": "Secret du consommateur",
|
||||
"authoring.discussions.consumerSecret.required": "Le secret du consommateur est un champ obligatoire",
|
||||
"authoring.discussions.launchUrl": "URL de lancement",
|
||||
"authoring.discussions.launchUrl.required": "L'URL de lancement est un champ obligatoire",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "Pour activer {providerName} pour votre cours, veuillez contacter leur équipe d'assistance à {supportEmail} pour en savoir plus sur les prix et l'utilisation.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "Pour configurer entièrement {providerName}, il faudra également partager les noms d'utilisateur et les courriels pour les apprenants et l'équipe du cours. Veuillez contacter votre coordinateur de projet edX pour activer le partage de PII pour ce cours.",
|
||||
"authoring.discussions.piiSharing": "Partagez en option le nom d'utilisateur et/ou l'adresse courriel d'un utilisateur avec le fournisseur LTI :",
|
||||
"authoring.discussions.piiShareUsername": "Partager le nom d'utilisateur",
|
||||
"authoring.discussions.piiShareEmail": "Partager l'adresse courriel",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact : {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "Documentation générale",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Documentation d’accessibilité",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Documentation de configuration",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Apprenez-en plus sur {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "Aide externe et documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Les étudiants perdront l'accès à tous les messages de discussion actifs ou précédents pour votre cours.",
|
||||
"authoring.discussions.configure.app": "Configurer {name}",
|
||||
"authoring.discussions.configure": "Configurez les discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Annuler",
|
||||
"authoring.discussions.confirm": "Confirmer",
|
||||
"authoring.discussions.confirmConfigurationChange": "Voulez-vous vraiment modifier les paramètres de discussion ?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Activer les discussions sur les unités dans les sous-sections notées ?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Désactiver les discussions sur les unités dans les sous-sections notées ?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "L'activation de cette bascule activera automatiquement la discussion sur toutes les unités dans les sous-sections notées, qui ne sont pas des examens chronométrés.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "La désactivation de cette bascule désactivera automatiquement la discussion sur toutes les unités dans les sous-sections notées. Les sujets de discussion contenant au moins 1 fil de discussion seront répertoriés et accessibles sous \"Archivés\" dans l'onglet Sujets de la page Discussions.",
|
||||
"authoring.discussions.backButton": "Retour",
|
||||
"authoring.discussions.saveButton": "Sauvegarder",
|
||||
"authoring.discussions.savingButton": "Sauvegarde en cours",
|
||||
"authoring.discussions.savedButton": "Sauvegardé",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohortes",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divisez les discussions par cohortes",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Les apprenants ne pourront voir et répondre qu'aux discussions publiées par les membres de leur cohorte.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divisez les sujets de discussion à l'échelle du cours",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choisissez lequel des sujets de discussion à l'échelle du cours vous souhaitez diviser.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "Général",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions pour les assistants d'enseignement",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "Pour ajuster ces paramètres, activez les cohortes sur le",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "tableau de bord de l'instructeur",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibilité des discussions en contexte",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Activer les discussions sur les unités dans les sous-sections notées",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Permettez aux apprenants de participer à la discussion sur toutes les pages d'unités notées, à l'exception des examens chronométrés.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Discussion de groupe en contexte au niveau des sous-sections",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Les apprenants pourront voir n'importe quel article de la sous-section, quelle que soit la page d'unité qu'ils consultent. Bien que cela ne soit pas recommandé, si votre cours comporte de courtes séquences d'apprentissage ou un faible regroupement d'inscription cela peut augmenter l'engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Publication anonyme",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Autoriser les posts de discussion anonymes",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "Si activé, les apprenants pourront créer des publications qui resteront anonymes à tous les utilisateurs.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Autorisez les posts de discussion anonymes aux pairs",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Les apprenants seront capables de poster de manière anonymes aux autres pairs mais tous les posts seront visibles par l'équipe du cours.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Notifications par courriel pour le contenu signalé",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Les administrateurs de discussion, les modérateurs, les assistants de communauté et les assistants de communauté de groupe (uniquement pour leur propre cohorte) recevront une notification par courriel lorsque du contenu est signalé.",
|
||||
"authoring.discussions.discussionTopics": "Sujets de discussions",
|
||||
"authoring.discussions.discussionTopics.label": "Sujets de discussion généraux",
|
||||
"authoring.discussions.discussionTopics.help": "Les discussions peuvent inclure des sujets généraux non contenus dans la structure du cours. Tous les cours ont un sujet général par défaut.",
|
||||
"authoring.discussions.discussionTopic.required": "Le nom du sujet est un champ obligatoire",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "Il semble que ce nom soit déjà utilisé",
|
||||
"authoring.discussions.addTopicButton": "Ajoutez un sujet",
|
||||
"authoring.discussions.deleteButton": "Supprimer",
|
||||
"authoring.discussions.cancelButton": "Annuler",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "EDUlib vous recommande de ne pas supprimer les sujets de discussion une fois que votre cours est en cours.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Supprimer ce sujet ?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Renommez le sujet général",
|
||||
"authoring.discussions.generalTopicHelp.help": "Ceci est le sujet de discussion par défaut pour votre cours.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configurez le sujet",
|
||||
"authoring.discussions.addTopicHelpText": "Choisissez un nom unique pour votre sujet",
|
||||
"authoring.discussions.blackoutDates": "Dates d'interdiction des discussions",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Dates d'interdiction",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "S'ils sont ajoutés, les apprenants ne pourront pas participer aux discussions entre ces dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Ajouter une plage de dates d'interdiction",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configurer la plage de dates d'interdiction",
|
||||
"authoring.discussions.blackoutStartDate.help": "Entrez une date de début, par exemple le 12/10/2023.",
|
||||
"authoring.discussions.blackoutEndDate.help": "Entrez une date de fin, par exemple le 17/12/2023.",
|
||||
"authoring.discussions.blackoutStartTime.help": "Entrez une heure de début, par exemple 09h00",
|
||||
"authoring.discussions.blackoutEndTime.help": "Entrez une heure de fin, par exemple 17h00",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "Ces dates d'interdiction sont actuellement actives. Si elles sont supprimées, les apprenants pourront publier dans les discussions pendant ces dates. Êtes-vous sûr de vouloir continuer ?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "Si supprimé, les apprenants pourront participer aux discussions pendant ces dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Êtes-vous sûr de vouloir supprimer ces dates d'interdiction ?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Supprimer les dates d'interdiction actives ?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Supprimer les dates d'interdiction ?",
|
||||
"authoring.blackoutDates.delete": "Supprimer les dates d'interdiction",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "La date de début est un champ obligatoire",
|
||||
"authoring.blackoutDates.endDate.required": "La date de fin est un champ obligatoire",
|
||||
"authoring.blackoutDates.startDate.inPast": "La date de début ne peut pas être après la date de fin",
|
||||
"authoring.blackoutDates.endDate.inPast": "La date de fin ne peut pas être avant la date de début",
|
||||
"authoring.blackoutDates.startTime.inPast": "L'heure de début ne peut pas être après l'heure de fin",
|
||||
"authoring.blackoutDates.endTime.inPast": "L'heure de fin ne peut pas être avant l'heure de début",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Entrer un temps de départ valide",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Entrer un temps de fin valide",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Entrer une date valide de départ",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Entrer une date valide de fin",
|
||||
"authoring.topics.delete": "Supprimer le sujet",
|
||||
"authoring.topics.expand": "Développer",
|
||||
"authoring.topics.collapse": "Replier",
|
||||
"authoring.blackoutDates.start.date": "Date de début",
|
||||
"authoring.blackoutDates.start.time": "Heure de début (facultatif) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "Date de fin",
|
||||
"authoring.blackoutDates.end.time": "Heure de fin (facultatif) ({zone})",
|
||||
"authoring.discussions.heading": "Sélectionnez un outil de discussion pour ce cours",
|
||||
"authoring.discussions.supportedFeatures": "Fonctionnalités prises en charge",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Afficher les fonctionnalités prises en charge",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Masquer les fonctionnalités prises en charge",
|
||||
"authoring.discussions.noApps": "Aucun fournisseur de discussion n'est disponible pour votre cours.",
|
||||
"authoring.discussions.nextButton": "Suivant",
|
||||
"authoring.discussions.appFullSupport": "Support complet",
|
||||
"authoring.discussions.appBasicSupport": "Support de base",
|
||||
"authoring.discussions.selectApp": "Choisissez {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Démarrez des conversations avec d'autres apprenants, posez des questions et interagissez avec d'autres apprenants du cours.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Entamez des conversations avec d'autres apprenants, posez des questions et interagissez avec d'autres apprenants du cours.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza est conçu pour connecter les étudiants, les assistants enseignants et les professeurs afin que chaque étudiant puisse obtenir l'aide dont il a besoin quand il en a besoin.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offre aux éducateurs une solution d'enseignement ludique pour augmenter l'engagement des étudiants en construisant des communautés d'apprentissage pour toutes les modalités de cours.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe exploite le pouvoir des communauté + l'intelligence artificielle pour connecter les individus aux réponses, aux ressources et aux personnes qu'ils ont besoin pour exceller.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse est un programme de forum moderne pour votre communauté. Utilisez le en tant que liste de courriel, forum de discussion, salle de conversation et bien plus!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion aide les communications en classe avec une belle interface intuitive. Les questions rejoignent et bénéficient toute la classe. Moins de courriel, plus de temps épargnés.",
|
||||
"authoring.discussions.featureName-discussion-page": "Page de discussion",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Sections de cours intégrées",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Discussion avancée en contexte",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Publication anonyme",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Inscription automatique de l'apprenant",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Dates de discussions interdites",
|
||||
"authoring.discussions.featureName-community-ta-support": "Support des assistants d'enseignement de la communauté",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Support des cohortes de cours",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Messages directs des instructeurs",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Instructions pour le contenu de discussion",
|
||||
"authoring.discussions.featureName-email-notifications": "Notifications par courriel",
|
||||
"authoring.discussions.featureName-graded-discussions": "Discussions notées",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "Notifications sur la plateforme",
|
||||
"authoring.discussions.featureName-internationalization-support": "Support pour l'Internationalisation",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "Partage avancé LTI",
|
||||
"authoring.discussions.featureName-basic-configuration": "Configuration de base",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Application de discussion primaire",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Support aux Questions et Discussions",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Signaler du contenu aux modérateurs",
|
||||
"authoring.discussions.featureName-research-data-events": "Recherche de données d'évènements",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplifié dans le contexte de la discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "Mentions utilisatrices",
|
||||
"authoring.discussions.featureName-wcag-2.1": "Support WCAG 2.1",
|
||||
"authoring.discussions.wcag-2.0-support": "Support WCAG 2.0",
|
||||
"authoring.discussions.basic-support": "Support de base",
|
||||
"authoring.discussions.partial-support": "Support partiel",
|
||||
"authoring.discussions.full-support": "Support complet",
|
||||
"authoring.discussions.common-support": "Demande fréquente",
|
||||
"authoring.discussions.settings": "Paramètres",
|
||||
"authoring.discussions.applyButton": "Appliquer",
|
||||
"authoring.discussions.applyingButton": "Appliquer",
|
||||
"authoring.discussions.appliedButton": "Appliqué",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Le fournisseur de discussion ne peut pas être modifié une fois le cours commencé, veuillez contacter l'assistance partenaire.",
|
||||
"authoring.discussions.providerSelection": "Sélection des fournisseurs",
|
||||
"authoring.discussions.Incomplete": "Incomplet",
|
||||
"course-authoring.pages-resources.notes.heading": "Configurer les notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Les apprenants peuvent accéder à leurs notes à partir du\n corps du cours ou une page de notes. Sur la page de notes, un apprenant peut voir toutes les\n notes conçues durant le cours. La page contient également les liens vers la location\n des notes dans le corps du cours.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Apprenez en plus sur notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Sélectionnez un forfait",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configurer en direct",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "En direct",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Planifiez des réunions et organisez des sessions de cours en direct avec les apprenants.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "En savoir plus sur le direct",
|
||||
"authoring.live.selectProvider": "Sélectionnez un outil de visioconférence",
|
||||
"authoring.live.formInstructions": "Complétez les champs ci-dessous pour paramétrer votre outil de visioconférence.",
|
||||
"authoring.live.consumerKey": "La clé du consommateur",
|
||||
"authoring.live.consumerKey.required": "La clé du consommateur est un champ obligatoire",
|
||||
"authoring.live.consumerSecret": "Secret du consommateur",
|
||||
"authoring.live.consumerSecret.required": "Le secret du consommateur est un champ obligatoire",
|
||||
"authoring.live.launchUrl": "URL de lancement",
|
||||
"authoring.live.launchUrl.required": "L'URL de lancement est un champ obligatoire",
|
||||
"authoring.live.launchEmail": "Lancer l'e-mail",
|
||||
"authoring.live.launchEmail.required": "L'e-mail de lancement est un champ obligatoire",
|
||||
"authoring.live.provider.helpText": "Cette configuration nécessitera le partage du nom d'utilisateur et des courriels des apprenants et de l'équipe du cours avec {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "Cette configuration nécessitera le partage des noms d'utilisateur et des courriels des apprenants et de l'équipe du cours avec {provider}. Pour accéder à la configuration LTI pour {provider}, veuillez demander à votre coordinateur de projet edX d'activer le partage des PII pour ce cours.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "Documentation générale",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Documentation d’accessibilité",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Documentation de configuration",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Apprenez-en plus sur {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "Aide externe et documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Équipes Microsoft",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "Cette configuration nécessitera le partage des noms d'utilisateur des apprenants et de l'équipe du cours avec {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "Pour activer cette fonctionnalité, contactez votre équipe d'assistance edX afin d'activer le partage des PII pour ce cours.",
|
||||
"authoring.live.freePlanMessage": "Le forfait gratuit est préconfiguré et aucune configuration supplémentaire n'est requise. En sélectionnant le forfait gratuit, vous acceptez Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Politique de confidentialité.",
|
||||
"course-authoring.pages-resources.heading": "Pages et ressources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "paramètres",
|
||||
"course-authoring.pages-resources.viewLive.button": "Aperçu temps réel",
|
||||
"course-authoring.badge.enabled": "Activé",
|
||||
"authoring.proctoring.no": "Non",
|
||||
"authoring.proctoring.yes": "Oui",
|
||||
"authoring.proctoring.support.text": "Page de support",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Examens surveillés",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Activez et configurez les examens surveillés dans votre cours.",
|
||||
"authoring.proctoring.enabled": "Activé",
|
||||
"authoring.proctoring.learn.more": "En savoir plus sur la surveillance",
|
||||
"authoring.proctoring.provider.label": "Fournisseur de service de surveillance",
|
||||
"authoring.proctoring.provider.help": "Sélectionnez le fournisseur de surveillance que vous souhaitez utiliser pour cette session de cours.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Le fournisseur de surveillance ne peut pas être modifié après la date de début du cours.",
|
||||
"authoring.proctoring.escalationemail.label": "Courriel d'escalade Proctortrack",
|
||||
"authoring.proctoring.escalationemail.help": "Fournissez une adresse courriel à contacter par l'équipe de support pour les escalades (par exemple, appels, avis retardés).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "Le champ courriel Proctortrack Escalation ne peut pas être vide si Proctortrack est le fournisseur sélectionné.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "Le champ du courriel d'escalade Proctortrack n'est pas au bon format et n'est pas valide.",
|
||||
"authoring.proctoring.allowoptout.label": "Permettre aux apprenants de se retirer de la surveillance des examens surveillés",
|
||||
"authoring.proctoring.createzendesk.label": "Créer les tickets Zendesk pour les tentatives suspectes",
|
||||
"authoring.proctoring.error.single": "Il y a 1 erreur dans ce formulaire.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "Il y a {numOfErrors} erreurs dans ce formulaire.",
|
||||
"authoring.proctoring.save": "Sauvegarder",
|
||||
"authoring.proctoring.saving": "Sauvegarde...",
|
||||
"authoring.proctoring.cancel": "Annuler",
|
||||
"authoring.proctoring.studio.link.text": "Retournez à votre cours dans Studio",
|
||||
"authoring.proctoring.alert.success": "\n Les paramètres de l'examen surveillé ont bien été enregistrés. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n Nous avons rencontré une erreur technique en tentant de sauvegarder les paramètres de l'examen surveillé.\n Ceci est probablement un problème temporaire, veuillez réessayer dans quelques minutes. \n Si le problème persiste,\n veuillez aller sur {support_link} pour de l'aide.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configurer la progression",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progression",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "Au fur et à mesure que les élèves effectuent des devoirs notés, les notes\n apparaîtront sous l'onglet de progression. L'onglet de progression contient un graphique de\n tous les devoirs notés dans le cours, avec une liste de tous les devoirs et\n les notes ci-dessous.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Apprenez en plus sur la progression",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Activer le graphique de progression",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "Si activé, les étudiants peuvent consulter le graphique de progression",
|
||||
"authoring.pagesAndResources.teams.heading": "Configurer les équipes",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Équipes",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Permettre aux apprenant de travailler ensemble sur des projets ou activités spécifiques.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Apprenez en plus à propos des équipes",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Taille de l'équipe",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Taille maximale de l'équipe",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "Le nombre maximum d'apprenants qui peuvent rejoindre une équipe",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Entrez la taille maximale de l'équipe",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "La taille maximale de l'équipe doit être un nombre positif supérieur à zéro.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Taille maximale des équipes ne peut pas être plus que {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groupes",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Les groupes sont des espaces où les apprenant peuvent rejoindre ou créer des équipes.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configurer un groupe",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Nom",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choisissez un nom unique pour ce groupe",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Entrer un nom unique pour ce groupe",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "Il semble que ce nom soit déjà utilisé",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Entrez les détails de ce groupe",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Entrer une description pour ce groupe",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Contrôlez qui peut voir, créer et rejoindre des équipes",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Ouvert",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Les apprenants peuvent créer, rejoindre, quitter et voir d'autres équipes.",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Géré par le public",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Seul le personnel du cours peut contrôler les équipes et les adhésions. Les apprenants peuvent voir les autres équipes.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Gestion privée",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Seul le personnel du cours peut contrôler les équipes, les adhésions et voir les autres équipes.",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Taille maximale de l'équipe (optionelle)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Outrepasser la taille maximale globale des équipes",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Ajouter un groupe",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Supprimer",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Développer l'éditeur de groupe",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Fermer l'éditeur du groupe",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Supprimer",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Annuler",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Supprimer ce groupe ?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommande de ne pas supprimer les groupes une fois que le cours a commencé.\nVos groupes ne seront plus visibles dans le LMS et les apprenants ne seront plus en mesure de quitter les équipes associées aux groupes supprimés.\nVeuillez retirer les apprenants des équipes avant de supprimer le groupe associé.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "Aucun groupe trouvé",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Ajouter un ou plusieurs groupes pour permettre les équipes.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configurer le wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "Le wiki du cours peut être configuré en fonction des besoins de votre\ncours. Les utilisations courantes peuvent inclure le partage de réponses aux FAQ du cours, le partage\n d'informations de cours modifiables ou donner accès à des informations créées par\n les apprenants.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Apprenez en plus sur le wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Activer l'accès public au wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "Si activé, les utilisateurs edX peuvent afficher le wiki du cours même lorsqu'ils\n ne sont pas inscrits au cours.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "Si coché, les examens surveillés seront permis dans votre cours.",
|
||||
"authoring.examsettings.allowoptout.label": "Autoriser l'exclusion des examens surveillés",
|
||||
"authoring.examsettings.allowoptout.help": "\n Si cette valeur est «Oui», les apprenants peuvent choisir de passer des examens surveillés sans surveillance.\n Si cette valeur est \"Non\", tous les apprenants doivent passer l'examen avec surveillance.\n ",
|
||||
"authoring.examsettings.provider.label": "Fournisseur de service de surveillance",
|
||||
"authoring.examsettings.escalationemail.label": "Courriel d'escalade Proctortrack",
|
||||
"authoring.examsettings.escalationemail.help": "\n Requis si «proctortrack» est choisi comme votre fournisseur de surveillance. Entrez une adresse de courriel à\n contacter par l'équipe de support lorsqu'il y a des escalades (ex. appels, revues en retard, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Créer des billets ZenDesk pour les tentatives d'examen surveillé suspectes",
|
||||
"authoring.examsettings.createzendesk.help": "Si cette valeur est «Oui», un billet ZenDesk sera créé pour les tentatives d'examen surveillé suspectes.",
|
||||
"authoring.examsettings.submit": "Soumettre",
|
||||
"authoring.examsettings.alert.success": "\n Paramètres d'examen sauvegardés avec succès.\n Vous pouvez retourner dans le Studio du cours {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "Non",
|
||||
"authoring.examsettings.allowoptout.yes": "Oui",
|
||||
"authoring.examsettings.createzendesk.no": "Non",
|
||||
"authoring.examsettings.createzendesk.yes": "Oui",
|
||||
"authoring.examsettings.support.text": "Page de support",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Activer les examens surveillés",
|
||||
"authoring.examsettings.escalationemail.error.blank": "Le champ courriel Proctortrack Escalation ne peut pas être vide si Proctortrack est le fournisseur sélectionné.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "Le champ du courriel d'escalade Proctortrack n'est pas au bon format et n'est pas valide.",
|
||||
"authoring.examsettings.error.single": "Il y a 1 erreur dans ce formulaire.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "Il y a {numOfErrors} erreurs dans ce formulaire.",
|
||||
"authoring.examsettings.provider.help": "Sélectionnez le fournisseur d'examen surveillé que vous souhaitez utiliser pour cette session de cours.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Le fournisseur de surveillance ne peut pas être modifié après la date de début du cours.",
|
||||
"header.links.content": "Contenu",
|
||||
"header.links.settings": "Paramètres",
|
||||
"header.links.content.tools": "Outils",
|
||||
"header.links.outline": "Plan du Cours",
|
||||
"header.links.updates": "Annonces",
|
||||
"header.links.pages": "Pages et ressources",
|
||||
"header.links.filesAndUploads": "Fichiers & téléversements",
|
||||
"header.links.textbooks": "Manuels",
|
||||
"header.links.videoUploads": "Téléversements des vidéos",
|
||||
"header.links.scheduleAndDetails": "Dates & Détails",
|
||||
"header.links.grading": "Évaluation",
|
||||
"header.links.courseTeam": "Équipe pédagogique",
|
||||
"header.links.groupConfigurations": "Configuration des groupes",
|
||||
"header.links.proctoredExamSettings": "Paramètres d'examen surveillé",
|
||||
"header.links.advancedSettings": "Paramètres avancés",
|
||||
"header.links.certificates": "Attestations",
|
||||
"header.links.publisher": "Éditeur",
|
||||
"header.links.import": "Importer",
|
||||
"header.links.export": "Exporter",
|
||||
"header.links.checklists": "Listes de contrôle",
|
||||
"header.user.menu.studio": "Accueil Studio",
|
||||
"header.user.menu.maintenance": "Entretien",
|
||||
"header.user.menu.logout": "Déconnexion",
|
||||
"header.label.account.menu": "Menu de compte",
|
||||
"header.label.account.menu.for": "Menu de compte pour {username}",
|
||||
"header.label.main.nav": "Principal",
|
||||
"header.label.main.menu": "Menu principal",
|
||||
"header.label.main.header": "Principal",
|
||||
"header.label.secondary.nav": "Secondaire",
|
||||
"header.label.courseOutline": "Retour au plan de cours dans Studio"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
352
src/i18n/messages/hi.json
Normal file
352
src/i18n/messages/hi.json
Normal file
@@ -0,0 +1,352 @@
|
||||
{
|
||||
"authoring.alert.error.connection": "We encountered a technical error when loading this page. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.loading": "Loading...",
|
||||
"authoring.alert.error.permission": "You are not authorized to view this page. If you feel you should have access, please reach out to your course team admin to be given access.",
|
||||
"authoring.alert.save.error.connection": "We encountered a technical error when applying changes. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.alert.support.text": "Support Page",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Cancel",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Save",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Saving",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Saved",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Retry",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Enabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Disabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "We couldn't apply your changes.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Please check your entries and try again.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configure calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "The calculator supports numbers, operators, constants,\n functions, and other mathematical concepts. When enabled, an icon to\n access the calculator appears on all pages in the body of your course.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "Learn more about the calculator",
|
||||
"authoring.discussions.documentationPage": "Visit the {name} documentation page",
|
||||
"authoring.discussions.formInstructions": "Complete the fields below to set up your discussion tool.",
|
||||
"authoring.discussions.consumerKey": "Consumer Key",
|
||||
"authoring.discussions.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.discussions.consumerSecret": "Consumer Secret",
|
||||
"authoring.discussions.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.discussions.launchUrl": "Launch URL",
|
||||
"authoring.discussions.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "To enable {providerName} for your course, please contact their support team at {supportEmail} to learn more about pricing and usage.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "To fully configure {providerName} will also require sharing usernames and emails for learners and course team. Please contact your edX project coordinator to enable PII sharing for this course.",
|
||||
"authoring.discussions.piiSharing": "Optionally share a user's username and/or email with the LTI provider:",
|
||||
"authoring.discussions.piiShareUsername": "Share username",
|
||||
"authoring.discussions.piiShareEmail": "Share email",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact: {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Students will lose access to any active or previous discussion posts for your course.",
|
||||
"authoring.discussions.configure.app": "Configure {name}",
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
"authoring.discussions.savedButton": "Saved",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divide discussions by cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Learners will only be able to view and respond to discussions posted by members of their cohort.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divide course-wide discussion topics",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Group in context discussion at the subsection level",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Learners will be able to view any post in the sub-section no matter which unit page they are viewing. While this is not recommended, if your course has short learning sequences or low enrollment grouping may increase engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Anonymous posting",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Allow anonymous discussion posts",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "If enabled, learners can create posts that are anonymous to all users.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Allow anonymous discussion posts to peers",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Learners will be able to post anonymously to other peers but all posts will be visible to course staff.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Email notifications for reported content",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Discussion Admins, Moderators, Community TAs and Group Community TAs (only for their own cohort) will receive an email notification when content is reported.",
|
||||
"authoring.discussions.discussionTopics": "Discussion topics",
|
||||
"authoring.discussions.discussionTopics.label": "General discussion topics",
|
||||
"authoring.discussions.discussionTopics.help": "Discussions can include general topics not contained to the course structure. All courses have a general topic by default.",
|
||||
"authoring.discussions.discussionTopic.required": "Topic name is a required field",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "It looks like this name is already in use",
|
||||
"authoring.discussions.addTopicButton": "Add topic",
|
||||
"authoring.discussions.deleteButton": "Delete",
|
||||
"authoring.discussions.cancelButton": "Cancel",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "edX recommends that you do not delete discussion topics once your course is running.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Delete this topic?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Rename general topic",
|
||||
"authoring.discussions.generalTopicHelp.help": "This is the default discussion topic for your course.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configure topic",
|
||||
"authoring.discussions.addTopicHelpText": "Choose a unique name for your topic",
|
||||
"authoring.discussions.blackoutDates": "Discussion blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "If added, learners will not be able to post in discussions between these dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Add blackout date range",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configure blackout date range",
|
||||
"authoring.discussions.blackoutStartDate.help": "Enter a start date, e.g. 12/10/2023",
|
||||
"authoring.discussions.blackoutEndDate.help": "Enter an end date, e.g. 12/17/2023",
|
||||
"authoring.discussions.blackoutStartTime.help": "Enter a start time, e.g. 09:00 AM",
|
||||
"authoring.discussions.blackoutEndTime.help": "Enter an end time, e.g. 05:00 PM",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "These blackout dates are currently active. If deleted, learners will be able to post in discussions during these dates. Are you sure you want to proceed?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "If deleted, learners will be able to post in discussions during these dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Are you sure you want to delete these blackout dates?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Delete active blackout dates?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Delete blackout dates?",
|
||||
"authoring.blackoutDates.delete": "Delete Blackout Dates",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "Start date is a required field",
|
||||
"authoring.blackoutDates.endDate.required": "End date is a required field",
|
||||
"authoring.blackoutDates.startDate.inPast": "Start date cannot be after end date",
|
||||
"authoring.blackoutDates.endDate.inPast": "End date cannot be before start date",
|
||||
"authoring.blackoutDates.startTime.inPast": "Start time cannot be after end time",
|
||||
"authoring.blackoutDates.endTime.inPast": "End time cannot be before start time",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Enter a valid start time",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Enter a valid end time",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Enter a valid start Date",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Enter a valid end date",
|
||||
"authoring.topics.delete": "Delete Topic",
|
||||
"authoring.topics.expand": "Expand",
|
||||
"authoring.topics.collapse": "Collapse",
|
||||
"authoring.blackoutDates.start.date": "Start date",
|
||||
"authoring.blackoutDates.start.time": "Start time (optional) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "End date",
|
||||
"authoring.blackoutDates.end.time": "End time (optional) ({zone})",
|
||||
"authoring.discussions.heading": "Select a discussion tool for this course",
|
||||
"authoring.discussions.supportedFeatures": "Supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Show supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Hide supported features",
|
||||
"authoring.discussions.noApps": "There are no discussions providers available for your course.",
|
||||
"authoring.discussions.nextButton": "Next",
|
||||
"authoring.discussions.appFullSupport": "Full support",
|
||||
"authoring.discussions.appBasicSupport": "Basic support",
|
||||
"authoring.discussions.selectApp": "Select {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza is designed to connect students, TAs, and professors so every student can get the help they need when they need it.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offers educators a gameful learning digital solution to improve student engagement by building learning communities for any course modality.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe leverages the power of community + artificial intelligence to connect individuals to the answers, resources, and people they need to succeed.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse is modern forum software for your community. Use it as a mailing list, discussion forum, long-form chat room, and more!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion helps scale class communication in a beautiful and intuitive interface. Questions reach and benefit the whole class. Less emails, more time saved.",
|
||||
"authoring.discussions.featureName-discussion-page": "Discussion page",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Embedded course sections",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Advanced in context discussion",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Anonymous posting",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Automatic learner enrollment",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Blackout discussion dates",
|
||||
"authoring.discussions.featureName-community-ta-support": "Community TA support",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Course cohort support",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Direct messages from instructors",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Discussion content prompts",
|
||||
"authoring.discussions.featureName-email-notifications": "Email notifications",
|
||||
"authoring.discussions.featureName-graded-discussions": "Graded discussions",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "In-platform notifications",
|
||||
"authoring.discussions.featureName-internationalization-support": "Internationalization support",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "LTI advanced sharing",
|
||||
"authoring.discussions.featureName-basic-configuration": "Basic configuration",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Primary discussion app experience",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Question & discussion support",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Report content to moderators",
|
||||
"authoring.discussions.featureName-research-data-events": "Research data events",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplified in-context discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "User mentions",
|
||||
"authoring.discussions.featureName-wcag-2.1": "WCAG 2.1 support",
|
||||
"authoring.discussions.wcag-2.0-support": "WCAG 2.0 support",
|
||||
"authoring.discussions.basic-support": "Basic support",
|
||||
"authoring.discussions.partial-support": "Partial support",
|
||||
"authoring.discussions.full-support": "Full support",
|
||||
"authoring.discussions.common-support": "Commonly requested",
|
||||
"authoring.discussions.settings": "Settings",
|
||||
"authoring.discussions.applyButton": "Apply",
|
||||
"authoring.discussions.applyingButton": "Applying",
|
||||
"authoring.discussions.appliedButton": "Applied",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Discussion provider can't be changed after course has started, please reach out to partner support.",
|
||||
"authoring.discussions.providerSelection": "Provider selection",
|
||||
"authoring.discussions.Incomplete": "Incomplete",
|
||||
"course-authoring.pages-resources.notes.heading": "Configure notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Learners can access their notes either in the body of the\n course of on a notes page. On the notes page, a learner can see all the\n notes made during the course. The page also contains links to the location\n of the notes in the course body.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Learn more about notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Select a plan",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configure Live",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "Live",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Schedule meetings and conduct live course sessions with learners.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "Learn more about live",
|
||||
"authoring.live.selectProvider": "Select a video conferencing tool",
|
||||
"authoring.live.formInstructions": "Complete the fields below to set up your video conferencing tool.",
|
||||
"authoring.live.consumerKey": "Consumer Key",
|
||||
"authoring.live.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.live.consumerSecret": "Consumer Secret",
|
||||
"authoring.live.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.live.launchUrl": "Launch URL",
|
||||
"authoring.live.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.live.launchEmail": "Launch Email",
|
||||
"authoring.live.launchEmail.required": "Launch Email is a required field",
|
||||
"authoring.live.provider.helpText": "This configuration will require sharing username and emails of learners and the course team with {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "This configuration will require sharing usernames and emails of learners and the course team with {provider}. To access the LTI configuration for {provider}, please request your edX project coordinator to get PII sharing enabled for this course.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Microsoft Teams",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
"course-authoring.badge.enabled": "Enabled",
|
||||
"authoring.proctoring.no": "No",
|
||||
"authoring.proctoring.yes": "Yes",
|
||||
"authoring.proctoring.support.text": "Support Page",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Proctored exams",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Enable and configure proctored exams in your course.",
|
||||
"authoring.proctoring.enabled": "Enabled",
|
||||
"authoring.proctoring.learn.more": "Learn more about proctoring",
|
||||
"authoring.proctoring.provider.label": "Proctoring provider",
|
||||
"authoring.proctoring.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"authoring.proctoring.escalationemail.label": "Proctortrack escalation email",
|
||||
"authoring.proctoring.escalationemail.help": "Provide an email address to be contacted by the support team for escalations (e.g. appeals, delayed reviews).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.proctoring.allowoptout.label": "Allow learners to opt out of proctoring on proctored exams",
|
||||
"authoring.proctoring.createzendesk.label": "Create Zendesk tickets for suspicious attempts",
|
||||
"authoring.proctoring.error.single": "There is 1 error in this form.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.proctoring.save": "Save",
|
||||
"authoring.proctoring.saving": "Saving...",
|
||||
"authoring.proctoring.cancel": "Cancel",
|
||||
"authoring.proctoring.studio.link.text": "Go back to your course in Studio",
|
||||
"authoring.proctoring.alert.success": "\n Proctored exam settings saved successfully. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n We encountered a technical error while trying to save proctored exam settings.\n This might be a temporary issue, so please try again in a few minutes.\n If the problem persists,\n please go to the {support_link} for help.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configure progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "As students work through graded assignments, scores\n will appear under the progress tab. The progress tab contains a chart of\n all graded assignments in the course, with a list of all assignments and\n scores below.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Learn more about progress",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Enable progress graph",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "If enabled, students can view the progress graph",
|
||||
"authoring.pagesAndResources.teams.heading": "Configure teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Allow learners to work together on specific projects or activities.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Learn more about teams",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "The maximum number of learners that can join a team",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Enter max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "Max team size must be a positive number larger than zero.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Max team size cannot be greater than {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groups",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Groups are spaces where learners can create or join teams.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configure group",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Name",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choose a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Enter a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "It looks like this name is already in use",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Enter details about this group",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Enter a description for this group",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Control who can see, create and join teams",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Open",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Learners can create, join, leave, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Public managed",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Only course staff can control teams and memberships. Learners can see other teams.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Private managed",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Only course staff can control teams, memberships, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Max team size (optional)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Override the global max team size",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Add group",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Delete",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Expand group editor",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Close group editor",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Delete",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Cancel",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Delete this group?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommends that you do not delete groups once your course is running.\n Your group will no longer be visible in the LMS and learners will not be able to leave teams associated with it.\n Please delete learners from teams before deleting the associated group.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "No groups found",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Add one or more groups to enable teams.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configure wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "The course wiki can be set up based on the needs of your\n course. Common uses might include sharing answers to course FAQs, sharing\n editable course information, or providing access to learner-created\n resources.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Learn more about the wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Enable public wiki access",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "If enabled, edX users can view the course wiki even when\n they're not enrolled in the course.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "If checked, proctored exams are enabled in your course.",
|
||||
"authoring.examsettings.allowoptout.label": "Allow Opting Out of Proctored Exams",
|
||||
"authoring.examsettings.allowoptout.help": "\n If this value is \"Yes\", learners can choose to take proctored exams without proctoring.\n If this value is \"No\", all learners must take the exam with proctoring.\n ",
|
||||
"authoring.examsettings.provider.label": "Proctoring Provider",
|
||||
"authoring.examsettings.escalationemail.label": "Proctortrack Escalation Email",
|
||||
"authoring.examsettings.escalationemail.help": "\n Required if \"proctortrack\" is selected as your proctoring provider. Enter an email address to be\n contacted by the support team whenever there are escalations (e.g. appeals, delayed reviews, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Create Zendesk Tickets for Suspicious Proctored Exam Attempts",
|
||||
"authoring.examsettings.createzendesk.help": "If this value is \"Yes\", a Zendesk ticket will be created for suspicious proctored exam attempts.",
|
||||
"authoring.examsettings.submit": "Submit",
|
||||
"authoring.examsettings.alert.success": "\n Proctored exam settings saved successfully.\n You can go back to your course in Studio {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "No",
|
||||
"authoring.examsettings.allowoptout.yes": "Yes",
|
||||
"authoring.examsettings.createzendesk.no": "No",
|
||||
"authoring.examsettings.createzendesk.yes": "Yes",
|
||||
"authoring.examsettings.support.text": "Support Page",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Enable Proctored Exams",
|
||||
"authoring.examsettings.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.examsettings.error.single": "There is 1 error in this form.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.examsettings.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"header.links.content": "Content",
|
||||
"header.links.settings": "Settings",
|
||||
"header.links.content.tools": "Tools",
|
||||
"header.links.outline": "Outline",
|
||||
"header.links.updates": "Updates",
|
||||
"header.links.pages": "Pages & Resources",
|
||||
"header.links.filesAndUploads": "Files & Uploads",
|
||||
"header.links.textbooks": "Textbooks",
|
||||
"header.links.videoUploads": "Video Uploads",
|
||||
"header.links.scheduleAndDetails": "Schedule & Details",
|
||||
"header.links.grading": "Grading",
|
||||
"header.links.courseTeam": "Course Team",
|
||||
"header.links.groupConfigurations": "Group Configurations",
|
||||
"header.links.proctoredExamSettings": "Proctored Exam Settings",
|
||||
"header.links.advancedSettings": "Advanced Settings",
|
||||
"header.links.certificates": "Certificates",
|
||||
"header.links.publisher": "Publisher",
|
||||
"header.links.import": "Import",
|
||||
"header.links.export": "Export",
|
||||
"header.links.checklists": "Checklists",
|
||||
"header.user.menu.studio": "Studio Home",
|
||||
"header.user.menu.maintenance": "Maintenance",
|
||||
"header.user.menu.logout": "Logout",
|
||||
"header.label.account.menu": "Account Menu",
|
||||
"header.label.account.menu.for": "Account menu for {username}",
|
||||
"header.label.main.nav": "Main",
|
||||
"header.label.main.menu": "Main Menu",
|
||||
"header.label.main.header": "Main",
|
||||
"header.label.secondary.nav": "Secondary",
|
||||
"header.label.courseOutline": "Back to course outline in Studio"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
352
src/i18n/messages/it.json
Normal file
352
src/i18n/messages/it.json
Normal file
@@ -0,0 +1,352 @@
|
||||
{
|
||||
"authoring.alert.error.connection": "We encountered a technical error when loading this page. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.loading": "Loading...",
|
||||
"authoring.alert.error.permission": "You are not authorized to view this page. If you feel you should have access, please reach out to your course team admin to be given access.",
|
||||
"authoring.alert.save.error.connection": "We encountered a technical error when applying changes. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.alert.support.text": "Support Page",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Cancel",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Save",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Saving",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Saved",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Retry",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Enabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Disabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "We couldn't apply your changes.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Please check your entries and try again.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configure calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "The calculator supports numbers, operators, constants,\n functions, and other mathematical concepts. When enabled, an icon to\n access the calculator appears on all pages in the body of your course.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "Learn more about the calculator",
|
||||
"authoring.discussions.documentationPage": "Visit the {name} documentation page",
|
||||
"authoring.discussions.formInstructions": "Complete the fields below to set up your discussion tool.",
|
||||
"authoring.discussions.consumerKey": "Consumer Key",
|
||||
"authoring.discussions.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.discussions.consumerSecret": "Consumer Secret",
|
||||
"authoring.discussions.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.discussions.launchUrl": "Launch URL",
|
||||
"authoring.discussions.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "To enable {providerName} for your course, please contact their support team at {supportEmail} to learn more about pricing and usage.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "To fully configure {providerName} will also require sharing usernames and emails for learners and course team. Please contact your edX project coordinator to enable PII sharing for this course.",
|
||||
"authoring.discussions.piiSharing": "Optionally share a user's username and/or email with the LTI provider:",
|
||||
"authoring.discussions.piiShareUsername": "Share username",
|
||||
"authoring.discussions.piiShareEmail": "Share email",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact: {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Students will lose access to any active or previous discussion posts for your course.",
|
||||
"authoring.discussions.configure.app": "Configure {name}",
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
"authoring.discussions.savedButton": "Saved",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divide discussions by cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Learners will only be able to view and respond to discussions posted by members of their cohort.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divide course-wide discussion topics",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Group in context discussion at the subsection level",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Learners will be able to view any post in the sub-section no matter which unit page they are viewing. While this is not recommended, if your course has short learning sequences or low enrollment grouping may increase engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Anonymous posting",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Allow anonymous discussion posts",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "If enabled, learners can create posts that are anonymous to all users.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Allow anonymous discussion posts to peers",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Learners will be able to post anonymously to other peers but all posts will be visible to course staff.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Email notifications for reported content",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Discussion Admins, Moderators, Community TAs and Group Community TAs (only for their own cohort) will receive an email notification when content is reported.",
|
||||
"authoring.discussions.discussionTopics": "Discussion topics",
|
||||
"authoring.discussions.discussionTopics.label": "General discussion topics",
|
||||
"authoring.discussions.discussionTopics.help": "Discussions can include general topics not contained to the course structure. All courses have a general topic by default.",
|
||||
"authoring.discussions.discussionTopic.required": "Topic name is a required field",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "It looks like this name is already in use",
|
||||
"authoring.discussions.addTopicButton": "Add topic",
|
||||
"authoring.discussions.deleteButton": "Delete",
|
||||
"authoring.discussions.cancelButton": "Cancel",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "edX recommends that you do not delete discussion topics once your course is running.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Delete this topic?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Rename general topic",
|
||||
"authoring.discussions.generalTopicHelp.help": "This is the default discussion topic for your course.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configure topic",
|
||||
"authoring.discussions.addTopicHelpText": "Choose a unique name for your topic",
|
||||
"authoring.discussions.blackoutDates": "Discussion blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "If added, learners will not be able to post in discussions between these dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Add blackout date range",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configure blackout date range",
|
||||
"authoring.discussions.blackoutStartDate.help": "Enter a start date, e.g. 12/10/2023",
|
||||
"authoring.discussions.blackoutEndDate.help": "Enter an end date, e.g. 12/17/2023",
|
||||
"authoring.discussions.blackoutStartTime.help": "Enter a start time, e.g. 09:00 AM",
|
||||
"authoring.discussions.blackoutEndTime.help": "Enter an end time, e.g. 05:00 PM",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "These blackout dates are currently active. If deleted, learners will be able to post in discussions during these dates. Are you sure you want to proceed?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "If deleted, learners will be able to post in discussions during these dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Are you sure you want to delete these blackout dates?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Delete active blackout dates?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Delete blackout dates?",
|
||||
"authoring.blackoutDates.delete": "Delete Blackout Dates",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "Start date is a required field",
|
||||
"authoring.blackoutDates.endDate.required": "End date is a required field",
|
||||
"authoring.blackoutDates.startDate.inPast": "Start date cannot be after end date",
|
||||
"authoring.blackoutDates.endDate.inPast": "End date cannot be before start date",
|
||||
"authoring.blackoutDates.startTime.inPast": "Start time cannot be after end time",
|
||||
"authoring.blackoutDates.endTime.inPast": "End time cannot be before start time",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Enter a valid start time",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Enter a valid end time",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Enter a valid start Date",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Enter a valid end date",
|
||||
"authoring.topics.delete": "Delete Topic",
|
||||
"authoring.topics.expand": "Expand",
|
||||
"authoring.topics.collapse": "Collapse",
|
||||
"authoring.blackoutDates.start.date": "Start date",
|
||||
"authoring.blackoutDates.start.time": "Start time (optional) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "End date",
|
||||
"authoring.blackoutDates.end.time": "End time (optional) ({zone})",
|
||||
"authoring.discussions.heading": "Select a discussion tool for this course",
|
||||
"authoring.discussions.supportedFeatures": "Supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Show supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Hide supported features",
|
||||
"authoring.discussions.noApps": "There are no discussions providers available for your course.",
|
||||
"authoring.discussions.nextButton": "Next",
|
||||
"authoring.discussions.appFullSupport": "Full support",
|
||||
"authoring.discussions.appBasicSupport": "Basic support",
|
||||
"authoring.discussions.selectApp": "Select {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza is designed to connect students, TAs, and professors so every student can get the help they need when they need it.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offers educators a gameful learning digital solution to improve student engagement by building learning communities for any course modality.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe leverages the power of community + artificial intelligence to connect individuals to the answers, resources, and people they need to succeed.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse is modern forum software for your community. Use it as a mailing list, discussion forum, long-form chat room, and more!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion helps scale class communication in a beautiful and intuitive interface. Questions reach and benefit the whole class. Less emails, more time saved.",
|
||||
"authoring.discussions.featureName-discussion-page": "Discussion page",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Embedded course sections",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Advanced in context discussion",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Anonymous posting",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Automatic learner enrollment",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Blackout discussion dates",
|
||||
"authoring.discussions.featureName-community-ta-support": "Community TA support",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Course cohort support",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Direct messages from instructors",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Discussion content prompts",
|
||||
"authoring.discussions.featureName-email-notifications": "Email notifications",
|
||||
"authoring.discussions.featureName-graded-discussions": "Graded discussions",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "In-platform notifications",
|
||||
"authoring.discussions.featureName-internationalization-support": "Internationalization support",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "LTI advanced sharing",
|
||||
"authoring.discussions.featureName-basic-configuration": "Basic configuration",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Primary discussion app experience",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Question & discussion support",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Report content to moderators",
|
||||
"authoring.discussions.featureName-research-data-events": "Research data events",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplified in-context discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "User mentions",
|
||||
"authoring.discussions.featureName-wcag-2.1": "WCAG 2.1 support",
|
||||
"authoring.discussions.wcag-2.0-support": "WCAG 2.0 support",
|
||||
"authoring.discussions.basic-support": "Basic support",
|
||||
"authoring.discussions.partial-support": "Partial support",
|
||||
"authoring.discussions.full-support": "Full support",
|
||||
"authoring.discussions.common-support": "Commonly requested",
|
||||
"authoring.discussions.settings": "Settings",
|
||||
"authoring.discussions.applyButton": "Apply",
|
||||
"authoring.discussions.applyingButton": "Applying",
|
||||
"authoring.discussions.appliedButton": "Applied",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Discussion provider can't be changed after course has started, please reach out to partner support.",
|
||||
"authoring.discussions.providerSelection": "Provider selection",
|
||||
"authoring.discussions.Incomplete": "Incomplete",
|
||||
"course-authoring.pages-resources.notes.heading": "Configure notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Learners can access their notes either in the body of the\n course of on a notes page. On the notes page, a learner can see all the\n notes made during the course. The page also contains links to the location\n of the notes in the course body.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Learn more about notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Select a plan",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configure Live",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "Live",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Schedule meetings and conduct live course sessions with learners.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "Learn more about live",
|
||||
"authoring.live.selectProvider": "Select a video conferencing tool",
|
||||
"authoring.live.formInstructions": "Complete the fields below to set up your video conferencing tool.",
|
||||
"authoring.live.consumerKey": "Consumer Key",
|
||||
"authoring.live.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.live.consumerSecret": "Consumer Secret",
|
||||
"authoring.live.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.live.launchUrl": "Launch URL",
|
||||
"authoring.live.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.live.launchEmail": "Launch Email",
|
||||
"authoring.live.launchEmail.required": "Launch Email is a required field",
|
||||
"authoring.live.provider.helpText": "This configuration will require sharing username and emails of learners and the course team with {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "This configuration will require sharing usernames and emails of learners and the course team with {provider}. To access the LTI configuration for {provider}, please request your edX project coordinator to get PII sharing enabled for this course.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Microsoft Teams",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
"course-authoring.badge.enabled": "Enabled",
|
||||
"authoring.proctoring.no": "No",
|
||||
"authoring.proctoring.yes": "Yes",
|
||||
"authoring.proctoring.support.text": "Support Page",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Proctored exams",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Enable and configure proctored exams in your course.",
|
||||
"authoring.proctoring.enabled": "Enabled",
|
||||
"authoring.proctoring.learn.more": "Learn more about proctoring",
|
||||
"authoring.proctoring.provider.label": "Proctoring provider",
|
||||
"authoring.proctoring.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"authoring.proctoring.escalationemail.label": "Proctortrack escalation email",
|
||||
"authoring.proctoring.escalationemail.help": "Provide an email address to be contacted by the support team for escalations (e.g. appeals, delayed reviews).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.proctoring.allowoptout.label": "Allow learners to opt out of proctoring on proctored exams",
|
||||
"authoring.proctoring.createzendesk.label": "Create Zendesk tickets for suspicious attempts",
|
||||
"authoring.proctoring.error.single": "There is 1 error in this form.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.proctoring.save": "Save",
|
||||
"authoring.proctoring.saving": "Saving...",
|
||||
"authoring.proctoring.cancel": "Cancel",
|
||||
"authoring.proctoring.studio.link.text": "Go back to your course in Studio",
|
||||
"authoring.proctoring.alert.success": "\n Proctored exam settings saved successfully. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n We encountered a technical error while trying to save proctored exam settings.\n This might be a temporary issue, so please try again in a few minutes.\n If the problem persists,\n please go to the {support_link} for help.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configure progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "As students work through graded assignments, scores\n will appear under the progress tab. The progress tab contains a chart of\n all graded assignments in the course, with a list of all assignments and\n scores below.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Learn more about progress",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Enable progress graph",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "If enabled, students can view the progress graph",
|
||||
"authoring.pagesAndResources.teams.heading": "Configure teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Allow learners to work together on specific projects or activities.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Learn more about teams",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "The maximum number of learners that can join a team",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Enter max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "Max team size must be a positive number larger than zero.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Max team size cannot be greater than {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groups",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Groups are spaces where learners can create or join teams.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configure group",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Name",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choose a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Enter a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "It looks like this name is already in use",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Enter details about this group",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Enter a description for this group",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Control who can see, create and join teams",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Open",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Learners can create, join, leave, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Public managed",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Only course staff can control teams and memberships. Learners can see other teams.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Private managed",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Only course staff can control teams, memberships, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Max team size (optional)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Override the global max team size",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Add group",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Delete",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Expand group editor",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Close group editor",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Delete",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Cancel",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Delete this group?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommends that you do not delete groups once your course is running.\n Your group will no longer be visible in the LMS and learners will not be able to leave teams associated with it.\n Please delete learners from teams before deleting the associated group.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "No groups found",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Add one or more groups to enable teams.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configure wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "The course wiki can be set up based on the needs of your\n course. Common uses might include sharing answers to course FAQs, sharing\n editable course information, or providing access to learner-created\n resources.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Learn more about the wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Enable public wiki access",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "If enabled, edX users can view the course wiki even when\n they're not enrolled in the course.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "If checked, proctored exams are enabled in your course.",
|
||||
"authoring.examsettings.allowoptout.label": "Allow Opting Out of Proctored Exams",
|
||||
"authoring.examsettings.allowoptout.help": "\n If this value is \"Yes\", learners can choose to take proctored exams without proctoring.\n If this value is \"No\", all learners must take the exam with proctoring.\n ",
|
||||
"authoring.examsettings.provider.label": "Proctoring Provider",
|
||||
"authoring.examsettings.escalationemail.label": "Proctortrack Escalation Email",
|
||||
"authoring.examsettings.escalationemail.help": "\n Required if \"proctortrack\" is selected as your proctoring provider. Enter an email address to be\n contacted by the support team whenever there are escalations (e.g. appeals, delayed reviews, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Create Zendesk Tickets for Suspicious Proctored Exam Attempts",
|
||||
"authoring.examsettings.createzendesk.help": "If this value is \"Yes\", a Zendesk ticket will be created for suspicious proctored exam attempts.",
|
||||
"authoring.examsettings.submit": "Submit",
|
||||
"authoring.examsettings.alert.success": "\n Proctored exam settings saved successfully.\n You can go back to your course in Studio {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "No",
|
||||
"authoring.examsettings.allowoptout.yes": "Yes",
|
||||
"authoring.examsettings.createzendesk.no": "No",
|
||||
"authoring.examsettings.createzendesk.yes": "Yes",
|
||||
"authoring.examsettings.support.text": "Support Page",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Enable Proctored Exams",
|
||||
"authoring.examsettings.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.examsettings.error.single": "There is 1 error in this form.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.examsettings.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"header.links.content": "Content",
|
||||
"header.links.settings": "Settings",
|
||||
"header.links.content.tools": "Tools",
|
||||
"header.links.outline": "Outline",
|
||||
"header.links.updates": "Updates",
|
||||
"header.links.pages": "Pages & Resources",
|
||||
"header.links.filesAndUploads": "Files & Uploads",
|
||||
"header.links.textbooks": "Textbooks",
|
||||
"header.links.videoUploads": "Video Uploads",
|
||||
"header.links.scheduleAndDetails": "Schedule & Details",
|
||||
"header.links.grading": "Grading",
|
||||
"header.links.courseTeam": "Course Team",
|
||||
"header.links.groupConfigurations": "Group Configurations",
|
||||
"header.links.proctoredExamSettings": "Proctored Exam Settings",
|
||||
"header.links.advancedSettings": "Advanced Settings",
|
||||
"header.links.certificates": "Certificates",
|
||||
"header.links.publisher": "Publisher",
|
||||
"header.links.import": "Import",
|
||||
"header.links.export": "Export",
|
||||
"header.links.checklists": "Checklists",
|
||||
"header.user.menu.studio": "Studio Home",
|
||||
"header.user.menu.maintenance": "Maintenance",
|
||||
"header.user.menu.logout": "Logout",
|
||||
"header.label.account.menu": "Account Menu",
|
||||
"header.label.account.menu.for": "Account menu for {username}",
|
||||
"header.label.main.nav": "Main",
|
||||
"header.label.main.menu": "Main Menu",
|
||||
"header.label.main.header": "Main",
|
||||
"header.label.secondary.nav": "Secondary",
|
||||
"header.label.courseOutline": "Back to course outline in Studio"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
352
src/i18n/messages/pt.json
Normal file
352
src/i18n/messages/pt.json
Normal file
@@ -0,0 +1,352 @@
|
||||
{
|
||||
"authoring.alert.error.connection": "We encountered a technical error when loading this page. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.loading": "Loading...",
|
||||
"authoring.alert.error.permission": "You are not authorized to view this page. If you feel you should have access, please reach out to your course team admin to be given access.",
|
||||
"authoring.alert.save.error.connection": "We encountered a technical error when applying changes. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.alert.support.text": "Support Page",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Cancel",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Save",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Saving",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Saved",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Retry",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Enabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Disabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "We couldn't apply your changes.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Please check your entries and try again.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configure calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "The calculator supports numbers, operators, constants,\n functions, and other mathematical concepts. When enabled, an icon to\n access the calculator appears on all pages in the body of your course.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "Learn more about the calculator",
|
||||
"authoring.discussions.documentationPage": "Visit the {name} documentation page",
|
||||
"authoring.discussions.formInstructions": "Complete the fields below to set up your discussion tool.",
|
||||
"authoring.discussions.consumerKey": "Consumer Key",
|
||||
"authoring.discussions.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.discussions.consumerSecret": "Consumer Secret",
|
||||
"authoring.discussions.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.discussions.launchUrl": "Launch URL",
|
||||
"authoring.discussions.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "To enable {providerName} for your course, please contact their support team at {supportEmail} to learn more about pricing and usage.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "To fully configure {providerName} will also require sharing usernames and emails for learners and course team. Please contact your edX project coordinator to enable PII sharing for this course.",
|
||||
"authoring.discussions.piiSharing": "Optionally share a user's username and/or email with the LTI provider:",
|
||||
"authoring.discussions.piiShareUsername": "Share username",
|
||||
"authoring.discussions.piiShareEmail": "Share email",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact: {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Students will lose access to any active or previous discussion posts for your course.",
|
||||
"authoring.discussions.configure.app": "Configure {name}",
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
"authoring.discussions.savedButton": "Saved",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divide discussions by cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Learners will only be able to view and respond to discussions posted by members of their cohort.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divide course-wide discussion topics",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Group in context discussion at the subsection level",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Learners will be able to view any post in the sub-section no matter which unit page they are viewing. While this is not recommended, if your course has short learning sequences or low enrollment grouping may increase engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Anonymous posting",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Allow anonymous discussion posts",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "If enabled, learners can create posts that are anonymous to all users.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Allow anonymous discussion posts to peers",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Learners will be able to post anonymously to other peers but all posts will be visible to course staff.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Email notifications for reported content",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Discussion Admins, Moderators, Community TAs and Group Community TAs (only for their own cohort) will receive an email notification when content is reported.",
|
||||
"authoring.discussions.discussionTopics": "Discussion topics",
|
||||
"authoring.discussions.discussionTopics.label": "General discussion topics",
|
||||
"authoring.discussions.discussionTopics.help": "Discussions can include general topics not contained to the course structure. All courses have a general topic by default.",
|
||||
"authoring.discussions.discussionTopic.required": "Topic name is a required field",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "It looks like this name is already in use",
|
||||
"authoring.discussions.addTopicButton": "Add topic",
|
||||
"authoring.discussions.deleteButton": "Delete",
|
||||
"authoring.discussions.cancelButton": "Cancel",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "edX recommends that you do not delete discussion topics once your course is running.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Delete this topic?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Rename general topic",
|
||||
"authoring.discussions.generalTopicHelp.help": "This is the default discussion topic for your course.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configure topic",
|
||||
"authoring.discussions.addTopicHelpText": "Choose a unique name for your topic",
|
||||
"authoring.discussions.blackoutDates": "Discussion blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "If added, learners will not be able to post in discussions between these dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Add blackout date range",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configure blackout date range",
|
||||
"authoring.discussions.blackoutStartDate.help": "Enter a start date, e.g. 12/10/2023",
|
||||
"authoring.discussions.blackoutEndDate.help": "Enter an end date, e.g. 12/17/2023",
|
||||
"authoring.discussions.blackoutStartTime.help": "Enter a start time, e.g. 09:00 AM",
|
||||
"authoring.discussions.blackoutEndTime.help": "Enter an end time, e.g. 05:00 PM",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "These blackout dates are currently active. If deleted, learners will be able to post in discussions during these dates. Are you sure you want to proceed?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "If deleted, learners will be able to post in discussions during these dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Are you sure you want to delete these blackout dates?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Delete active blackout dates?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Delete blackout dates?",
|
||||
"authoring.blackoutDates.delete": "Delete Blackout Dates",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "Start date is a required field",
|
||||
"authoring.blackoutDates.endDate.required": "End date is a required field",
|
||||
"authoring.blackoutDates.startDate.inPast": "Start date cannot be after end date",
|
||||
"authoring.blackoutDates.endDate.inPast": "End date cannot be before start date",
|
||||
"authoring.blackoutDates.startTime.inPast": "Start time cannot be after end time",
|
||||
"authoring.blackoutDates.endTime.inPast": "End time cannot be before start time",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Enter a valid start time",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Enter a valid end time",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Enter a valid start Date",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Enter a valid end date",
|
||||
"authoring.topics.delete": "Delete Topic",
|
||||
"authoring.topics.expand": "Expand",
|
||||
"authoring.topics.collapse": "Collapse",
|
||||
"authoring.blackoutDates.start.date": "Start date",
|
||||
"authoring.blackoutDates.start.time": "Start time (optional) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "End date",
|
||||
"authoring.blackoutDates.end.time": "End time (optional) ({zone})",
|
||||
"authoring.discussions.heading": "Select a discussion tool for this course",
|
||||
"authoring.discussions.supportedFeatures": "Supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Show supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Hide supported features",
|
||||
"authoring.discussions.noApps": "There are no discussions providers available for your course.",
|
||||
"authoring.discussions.nextButton": "Next",
|
||||
"authoring.discussions.appFullSupport": "Full support",
|
||||
"authoring.discussions.appBasicSupport": "Basic support",
|
||||
"authoring.discussions.selectApp": "Select {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza is designed to connect students, TAs, and professors so every student can get the help they need when they need it.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offers educators a gameful learning digital solution to improve student engagement by building learning communities for any course modality.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe leverages the power of community + artificial intelligence to connect individuals to the answers, resources, and people they need to succeed.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse is modern forum software for your community. Use it as a mailing list, discussion forum, long-form chat room, and more!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion helps scale class communication in a beautiful and intuitive interface. Questions reach and benefit the whole class. Less emails, more time saved.",
|
||||
"authoring.discussions.featureName-discussion-page": "Discussion page",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Embedded course sections",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Advanced in context discussion",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Anonymous posting",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Automatic learner enrollment",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Blackout discussion dates",
|
||||
"authoring.discussions.featureName-community-ta-support": "Community TA support",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Course cohort support",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Direct messages from instructors",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Discussion content prompts",
|
||||
"authoring.discussions.featureName-email-notifications": "Email notifications",
|
||||
"authoring.discussions.featureName-graded-discussions": "Graded discussions",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "In-platform notifications",
|
||||
"authoring.discussions.featureName-internationalization-support": "Internationalization support",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "LTI advanced sharing",
|
||||
"authoring.discussions.featureName-basic-configuration": "Basic configuration",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Primary discussion app experience",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Question & discussion support",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Report content to moderators",
|
||||
"authoring.discussions.featureName-research-data-events": "Research data events",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplified in-context discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "User mentions",
|
||||
"authoring.discussions.featureName-wcag-2.1": "WCAG 2.1 support",
|
||||
"authoring.discussions.wcag-2.0-support": "WCAG 2.0 support",
|
||||
"authoring.discussions.basic-support": "Basic support",
|
||||
"authoring.discussions.partial-support": "Partial support",
|
||||
"authoring.discussions.full-support": "Full support",
|
||||
"authoring.discussions.common-support": "Commonly requested",
|
||||
"authoring.discussions.settings": "Settings",
|
||||
"authoring.discussions.applyButton": "Apply",
|
||||
"authoring.discussions.applyingButton": "Applying",
|
||||
"authoring.discussions.appliedButton": "Applied",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Discussion provider can't be changed after course has started, please reach out to partner support.",
|
||||
"authoring.discussions.providerSelection": "Provider selection",
|
||||
"authoring.discussions.Incomplete": "Incomplete",
|
||||
"course-authoring.pages-resources.notes.heading": "Configure notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Learners can access their notes either in the body of the\n course of on a notes page. On the notes page, a learner can see all the\n notes made during the course. The page also contains links to the location\n of the notes in the course body.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Learn more about notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Select a plan",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configure Live",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "Live",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Schedule meetings and conduct live course sessions with learners.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "Learn more about live",
|
||||
"authoring.live.selectProvider": "Select a video conferencing tool",
|
||||
"authoring.live.formInstructions": "Complete the fields below to set up your video conferencing tool.",
|
||||
"authoring.live.consumerKey": "Consumer Key",
|
||||
"authoring.live.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.live.consumerSecret": "Consumer Secret",
|
||||
"authoring.live.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.live.launchUrl": "Launch URL",
|
||||
"authoring.live.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.live.launchEmail": "Launch Email",
|
||||
"authoring.live.launchEmail.required": "Launch Email is a required field",
|
||||
"authoring.live.provider.helpText": "This configuration will require sharing username and emails of learners and the course team with {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "This configuration will require sharing usernames and emails of learners and the course team with {provider}. To access the LTI configuration for {provider}, please request your edX project coordinator to get PII sharing enabled for this course.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Microsoft Teams",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
"course-authoring.badge.enabled": "Enabled",
|
||||
"authoring.proctoring.no": "No",
|
||||
"authoring.proctoring.yes": "Yes",
|
||||
"authoring.proctoring.support.text": "Support Page",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Proctored exams",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Enable and configure proctored exams in your course.",
|
||||
"authoring.proctoring.enabled": "Enabled",
|
||||
"authoring.proctoring.learn.more": "Learn more about proctoring",
|
||||
"authoring.proctoring.provider.label": "Proctoring provider",
|
||||
"authoring.proctoring.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"authoring.proctoring.escalationemail.label": "Proctortrack escalation email",
|
||||
"authoring.proctoring.escalationemail.help": "Provide an email address to be contacted by the support team for escalations (e.g. appeals, delayed reviews).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.proctoring.allowoptout.label": "Allow learners to opt out of proctoring on proctored exams",
|
||||
"authoring.proctoring.createzendesk.label": "Create Zendesk tickets for suspicious attempts",
|
||||
"authoring.proctoring.error.single": "There is 1 error in this form.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.proctoring.save": "Save",
|
||||
"authoring.proctoring.saving": "Saving...",
|
||||
"authoring.proctoring.cancel": "Cancel",
|
||||
"authoring.proctoring.studio.link.text": "Go back to your course in Studio",
|
||||
"authoring.proctoring.alert.success": "\n Proctored exam settings saved successfully. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n We encountered a technical error while trying to save proctored exam settings.\n This might be a temporary issue, so please try again in a few minutes.\n If the problem persists,\n please go to the {support_link} for help.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configure progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "As students work through graded assignments, scores\n will appear under the progress tab. The progress tab contains a chart of\n all graded assignments in the course, with a list of all assignments and\n scores below.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Learn more about progress",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Enable progress graph",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "If enabled, students can view the progress graph",
|
||||
"authoring.pagesAndResources.teams.heading": "Configure teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Allow learners to work together on specific projects or activities.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Learn more about teams",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "The maximum number of learners that can join a team",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Enter max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "Max team size must be a positive number larger than zero.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Max team size cannot be greater than {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groups",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Groups are spaces where learners can create or join teams.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configure group",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Name",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choose a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Enter a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "It looks like this name is already in use",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Enter details about this group",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Enter a description for this group",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Control who can see, create and join teams",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Open",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Learners can create, join, leave, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Public managed",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Only course staff can control teams and memberships. Learners can see other teams.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Private managed",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Only course staff can control teams, memberships, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Max team size (optional)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Override the global max team size",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Add group",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Delete",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Expand group editor",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Close group editor",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Delete",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Cancel",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Delete this group?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommends that you do not delete groups once your course is running.\n Your group will no longer be visible in the LMS and learners will not be able to leave teams associated with it.\n Please delete learners from teams before deleting the associated group.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "No groups found",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Add one or more groups to enable teams.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configure wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "The course wiki can be set up based on the needs of your\n course. Common uses might include sharing answers to course FAQs, sharing\n editable course information, or providing access to learner-created\n resources.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Learn more about the wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Enable public wiki access",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "If enabled, edX users can view the course wiki even when\n they're not enrolled in the course.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "If checked, proctored exams are enabled in your course.",
|
||||
"authoring.examsettings.allowoptout.label": "Allow Opting Out of Proctored Exams",
|
||||
"authoring.examsettings.allowoptout.help": "\n If this value is \"Yes\", learners can choose to take proctored exams without proctoring.\n If this value is \"No\", all learners must take the exam with proctoring.\n ",
|
||||
"authoring.examsettings.provider.label": "Proctoring Provider",
|
||||
"authoring.examsettings.escalationemail.label": "Proctortrack Escalation Email",
|
||||
"authoring.examsettings.escalationemail.help": "\n Required if \"proctortrack\" is selected as your proctoring provider. Enter an email address to be\n contacted by the support team whenever there are escalations (e.g. appeals, delayed reviews, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Create Zendesk Tickets for Suspicious Proctored Exam Attempts",
|
||||
"authoring.examsettings.createzendesk.help": "If this value is \"Yes\", a Zendesk ticket will be created for suspicious proctored exam attempts.",
|
||||
"authoring.examsettings.submit": "Submit",
|
||||
"authoring.examsettings.alert.success": "\n Proctored exam settings saved successfully.\n You can go back to your course in Studio {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "No",
|
||||
"authoring.examsettings.allowoptout.yes": "Yes",
|
||||
"authoring.examsettings.createzendesk.no": "No",
|
||||
"authoring.examsettings.createzendesk.yes": "Yes",
|
||||
"authoring.examsettings.support.text": "Support Page",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Enable Proctored Exams",
|
||||
"authoring.examsettings.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.examsettings.error.single": "There is 1 error in this form.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.examsettings.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"header.links.content": "Content",
|
||||
"header.links.settings": "Settings",
|
||||
"header.links.content.tools": "Tools",
|
||||
"header.links.outline": "Outline",
|
||||
"header.links.updates": "Updates",
|
||||
"header.links.pages": "Pages & Resources",
|
||||
"header.links.filesAndUploads": "Files & Uploads",
|
||||
"header.links.textbooks": "Textbooks",
|
||||
"header.links.videoUploads": "Video Uploads",
|
||||
"header.links.scheduleAndDetails": "Schedule & Details",
|
||||
"header.links.grading": "Grading",
|
||||
"header.links.courseTeam": "Course Team",
|
||||
"header.links.groupConfigurations": "Group Configurations",
|
||||
"header.links.proctoredExamSettings": "Proctored Exam Settings",
|
||||
"header.links.advancedSettings": "Advanced Settings",
|
||||
"header.links.certificates": "Certificates",
|
||||
"header.links.publisher": "Publisher",
|
||||
"header.links.import": "Import",
|
||||
"header.links.export": "Export",
|
||||
"header.links.checklists": "Checklists",
|
||||
"header.user.menu.studio": "Studio Home",
|
||||
"header.user.menu.maintenance": "Maintenance",
|
||||
"header.user.menu.logout": "Logout",
|
||||
"header.label.account.menu": "Account Menu",
|
||||
"header.label.account.menu.for": "Account menu for {username}",
|
||||
"header.label.main.nav": "Main",
|
||||
"header.label.main.menu": "Main Menu",
|
||||
"header.label.main.header": "Main",
|
||||
"header.label.secondary.nav": "Secondary",
|
||||
"header.label.courseOutline": "Back to course outline in Studio"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1 +1,352 @@
|
||||
{}
|
||||
{
|
||||
"authoring.alert.error.connection": "We encountered a technical error when loading this page. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.loading": "Loading...",
|
||||
"authoring.alert.error.permission": "You are not authorized to view this page. If you feel you should have access, please reach out to your course team admin to be given access.",
|
||||
"authoring.alert.save.error.connection": "We encountered a technical error when applying changes. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.alert.support.text": "Support Page",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Cancel",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Save",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Saving",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Saved",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Retry",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Enabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Disabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "We couldn't apply your changes.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Please check your entries and try again.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configure calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "The calculator supports numbers, operators, constants,\n functions, and other mathematical concepts. When enabled, an icon to\n access the calculator appears on all pages in the body of your course.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "Learn more about the calculator",
|
||||
"authoring.discussions.documentationPage": "Visit the {name} documentation page",
|
||||
"authoring.discussions.formInstructions": "Complete the fields below to set up your discussion tool.",
|
||||
"authoring.discussions.consumerKey": "Consumer Key",
|
||||
"authoring.discussions.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.discussions.consumerSecret": "Consumer Secret",
|
||||
"authoring.discussions.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.discussions.launchUrl": "Launch URL",
|
||||
"authoring.discussions.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "To enable {providerName} for your course, please contact their support team at {supportEmail} to learn more about pricing and usage.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "To fully configure {providerName} will also require sharing usernames and emails for learners and course team. Please contact your edX project coordinator to enable PII sharing for this course.",
|
||||
"authoring.discussions.piiSharing": "Optionally share a user's username and/or email with the LTI provider:",
|
||||
"authoring.discussions.piiShareUsername": "Share username",
|
||||
"authoring.discussions.piiShareEmail": "Share email",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact: {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Students will lose access to any active or previous discussion posts for your course.",
|
||||
"authoring.discussions.configure.app": "Configure {name}",
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
"authoring.discussions.savedButton": "Saved",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divide discussions by cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Learners will only be able to view and respond to discussions posted by members of their cohort.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divide course-wide discussion topics",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Group in context discussion at the subsection level",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Learners will be able to view any post in the sub-section no matter which unit page they are viewing. While this is not recommended, if your course has short learning sequences or low enrollment grouping may increase engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Anonymous posting",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Allow anonymous discussion posts",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "If enabled, learners can create posts that are anonymous to all users.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Allow anonymous discussion posts to peers",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Learners will be able to post anonymously to other peers but all posts will be visible to course staff.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Email notifications for reported content",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Discussion Admins, Moderators, Community TAs and Group Community TAs (only for their own cohort) will receive an email notification when content is reported.",
|
||||
"authoring.discussions.discussionTopics": "Discussion topics",
|
||||
"authoring.discussions.discussionTopics.label": "General discussion topics",
|
||||
"authoring.discussions.discussionTopics.help": "Discussions can include general topics not contained to the course structure. All courses have a general topic by default.",
|
||||
"authoring.discussions.discussionTopic.required": "Topic name is a required field",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "It looks like this name is already in use",
|
||||
"authoring.discussions.addTopicButton": "Add topic",
|
||||
"authoring.discussions.deleteButton": "Delete",
|
||||
"authoring.discussions.cancelButton": "Cancel",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "edX recommends that you do not delete discussion topics once your course is running.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Delete this topic?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Rename general topic",
|
||||
"authoring.discussions.generalTopicHelp.help": "This is the default discussion topic for your course.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configure topic",
|
||||
"authoring.discussions.addTopicHelpText": "Choose a unique name for your topic",
|
||||
"authoring.discussions.blackoutDates": "Discussion blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "If added, learners will not be able to post in discussions between these dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Add blackout date range",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configure blackout date range",
|
||||
"authoring.discussions.blackoutStartDate.help": "Enter a start date, e.g. 12/10/2023",
|
||||
"authoring.discussions.blackoutEndDate.help": "Enter an end date, e.g. 12/17/2023",
|
||||
"authoring.discussions.blackoutStartTime.help": "Enter a start time, e.g. 09:00 AM",
|
||||
"authoring.discussions.blackoutEndTime.help": "Enter an end time, e.g. 05:00 PM",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "These blackout dates are currently active. If deleted, learners will be able to post in discussions during these dates. Are you sure you want to proceed?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "If deleted, learners will be able to post in discussions during these dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Are you sure you want to delete these blackout dates?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Delete active blackout dates?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Delete blackout dates?",
|
||||
"authoring.blackoutDates.delete": "Delete Blackout Dates",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "Start date is a required field",
|
||||
"authoring.blackoutDates.endDate.required": "End date is a required field",
|
||||
"authoring.blackoutDates.startDate.inPast": "Start date cannot be after end date",
|
||||
"authoring.blackoutDates.endDate.inPast": "End date cannot be before start date",
|
||||
"authoring.blackoutDates.startTime.inPast": "Start time cannot be after end time",
|
||||
"authoring.blackoutDates.endTime.inPast": "End time cannot be before start time",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Enter a valid start time",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Enter a valid end time",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Enter a valid start Date",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Enter a valid end date",
|
||||
"authoring.topics.delete": "Delete Topic",
|
||||
"authoring.topics.expand": "Expand",
|
||||
"authoring.topics.collapse": "Collapse",
|
||||
"authoring.blackoutDates.start.date": "Start date",
|
||||
"authoring.blackoutDates.start.time": "Start time (optional) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "End date",
|
||||
"authoring.blackoutDates.end.time": "End time (optional) ({zone})",
|
||||
"authoring.discussions.heading": "Select a discussion tool for this course",
|
||||
"authoring.discussions.supportedFeatures": "Supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Show supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Hide supported features",
|
||||
"authoring.discussions.noApps": "There are no discussions providers available for your course.",
|
||||
"authoring.discussions.nextButton": "Next",
|
||||
"authoring.discussions.appFullSupport": "Full support",
|
||||
"authoring.discussions.appBasicSupport": "Basic support",
|
||||
"authoring.discussions.selectApp": "Select {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza is designed to connect students, TAs, and professors so every student can get the help they need when they need it.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offers educators a gameful learning digital solution to improve student engagement by building learning communities for any course modality.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe leverages the power of community + artificial intelligence to connect individuals to the answers, resources, and people they need to succeed.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse is modern forum software for your community. Use it as a mailing list, discussion forum, long-form chat room, and more!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion helps scale class communication in a beautiful and intuitive interface. Questions reach and benefit the whole class. Less emails, more time saved.",
|
||||
"authoring.discussions.featureName-discussion-page": "Discussion page",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Embedded course sections",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Advanced in context discussion",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Anonymous posting",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Automatic learner enrollment",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Blackout discussion dates",
|
||||
"authoring.discussions.featureName-community-ta-support": "Community TA support",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Course cohort support",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Direct messages from instructors",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Discussion content prompts",
|
||||
"authoring.discussions.featureName-email-notifications": "Email notifications",
|
||||
"authoring.discussions.featureName-graded-discussions": "Graded discussions",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "In-platform notifications",
|
||||
"authoring.discussions.featureName-internationalization-support": "Internationalization support",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "LTI advanced sharing",
|
||||
"authoring.discussions.featureName-basic-configuration": "Basic configuration",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Primary discussion app experience",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Question & discussion support",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Report content to moderators",
|
||||
"authoring.discussions.featureName-research-data-events": "Research data events",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplified in-context discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "User mentions",
|
||||
"authoring.discussions.featureName-wcag-2.1": "WCAG 2.1 support",
|
||||
"authoring.discussions.wcag-2.0-support": "WCAG 2.0 support",
|
||||
"authoring.discussions.basic-support": "Basic support",
|
||||
"authoring.discussions.partial-support": "Partial support",
|
||||
"authoring.discussions.full-support": "Full support",
|
||||
"authoring.discussions.common-support": "Commonly requested",
|
||||
"authoring.discussions.settings": "Settings",
|
||||
"authoring.discussions.applyButton": "Apply",
|
||||
"authoring.discussions.applyingButton": "Applying",
|
||||
"authoring.discussions.appliedButton": "Applied",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Discussion provider can't be changed after course has started, please reach out to partner support.",
|
||||
"authoring.discussions.providerSelection": "Provider selection",
|
||||
"authoring.discussions.Incomplete": "Incomplete",
|
||||
"course-authoring.pages-resources.notes.heading": "Configure notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Learners can access their notes either in the body of the\n course of on a notes page. On the notes page, a learner can see all the\n notes made during the course. The page also contains links to the location\n of the notes in the course body.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Learn more about notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Select a plan",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configure Live",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "Live",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Schedule meetings and conduct live course sessions with learners.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "Learn more about live",
|
||||
"authoring.live.selectProvider": "Select a video conferencing tool",
|
||||
"authoring.live.formInstructions": "Complete the fields below to set up your video conferencing tool.",
|
||||
"authoring.live.consumerKey": "Consumer Key",
|
||||
"authoring.live.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.live.consumerSecret": "Consumer Secret",
|
||||
"authoring.live.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.live.launchUrl": "Launch URL",
|
||||
"authoring.live.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.live.launchEmail": "Launch Email",
|
||||
"authoring.live.launchEmail.required": "Launch Email is a required field",
|
||||
"authoring.live.provider.helpText": "This configuration will require sharing username and emails of learners and the course team with {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "This configuration will require sharing usernames and emails of learners and the course team with {provider}. To access the LTI configuration for {provider}, please request your edX project coordinator to get PII sharing enabled for this course.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Microsoft Teams",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
"course-authoring.badge.enabled": "Enabled",
|
||||
"authoring.proctoring.no": "No",
|
||||
"authoring.proctoring.yes": "Yes",
|
||||
"authoring.proctoring.support.text": "Support Page",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Proctored exams",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Enable and configure proctored exams in your course.",
|
||||
"authoring.proctoring.enabled": "Enabled",
|
||||
"authoring.proctoring.learn.more": "Learn more about proctoring",
|
||||
"authoring.proctoring.provider.label": "Proctoring provider",
|
||||
"authoring.proctoring.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"authoring.proctoring.escalationemail.label": "Proctortrack escalation email",
|
||||
"authoring.proctoring.escalationemail.help": "Provide an email address to be contacted by the support team for escalations (e.g. appeals, delayed reviews).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.proctoring.allowoptout.label": "Allow learners to opt out of proctoring on proctored exams",
|
||||
"authoring.proctoring.createzendesk.label": "Create Zendesk tickets for suspicious attempts",
|
||||
"authoring.proctoring.error.single": "There is 1 error in this form.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.proctoring.save": "Save",
|
||||
"authoring.proctoring.saving": "Saving...",
|
||||
"authoring.proctoring.cancel": "Cancel",
|
||||
"authoring.proctoring.studio.link.text": "Go back to your course in Studio",
|
||||
"authoring.proctoring.alert.success": "\n Proctored exam settings saved successfully. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n We encountered a technical error while trying to save proctored exam settings.\n This might be a temporary issue, so please try again in a few minutes.\n If the problem persists,\n please go to the {support_link} for help.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configure progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "As students work through graded assignments, scores\n will appear under the progress tab. The progress tab contains a chart of\n all graded assignments in the course, with a list of all assignments and\n scores below.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Learn more about progress",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Enable progress graph",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "If enabled, students can view the progress graph",
|
||||
"authoring.pagesAndResources.teams.heading": "Configure teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Allow learners to work together on specific projects or activities.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Learn more about teams",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "The maximum number of learners that can join a team",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Enter max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "Max team size must be a positive number larger than zero.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Max team size cannot be greater than {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groups",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Groups are spaces where learners can create or join teams.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configure group",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Name",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choose a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Enter a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "It looks like this name is already in use",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Enter details about this group",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Enter a description for this group",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Control who can see, create and join teams",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Open",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Learners can create, join, leave, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Public managed",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Only course staff can control teams and memberships. Learners can see other teams.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Private managed",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Only course staff can control teams, memberships, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Max team size (optional)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Override the global max team size",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Add group",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Delete",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Expand group editor",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Close group editor",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Delete",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Cancel",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Delete this group?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommends that you do not delete groups once your course is running.\n Your group will no longer be visible in the LMS and learners will not be able to leave teams associated with it.\n Please delete learners from teams before deleting the associated group.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "No groups found",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Add one or more groups to enable teams.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configure wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "The course wiki can be set up based on the needs of your\n course. Common uses might include sharing answers to course FAQs, sharing\n editable course information, or providing access to learner-created\n resources.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Learn more about the wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Enable public wiki access",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "If enabled, edX users can view the course wiki even when\n they're not enrolled in the course.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "If checked, proctored exams are enabled in your course.",
|
||||
"authoring.examsettings.allowoptout.label": "Allow Opting Out of Proctored Exams",
|
||||
"authoring.examsettings.allowoptout.help": "\n If this value is \"Yes\", learners can choose to take proctored exams without proctoring.\n If this value is \"No\", all learners must take the exam with proctoring.\n ",
|
||||
"authoring.examsettings.provider.label": "Proctoring Provider",
|
||||
"authoring.examsettings.escalationemail.label": "Proctortrack Escalation Email",
|
||||
"authoring.examsettings.escalationemail.help": "\n Required if \"proctortrack\" is selected as your proctoring provider. Enter an email address to be\n contacted by the support team whenever there are escalations (e.g. appeals, delayed reviews, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Create Zendesk Tickets for Suspicious Proctored Exam Attempts",
|
||||
"authoring.examsettings.createzendesk.help": "If this value is \"Yes\", a Zendesk ticket will be created for suspicious proctored exam attempts.",
|
||||
"authoring.examsettings.submit": "Submit",
|
||||
"authoring.examsettings.alert.success": "\n Proctored exam settings saved successfully.\n You can go back to your course in Studio {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "No",
|
||||
"authoring.examsettings.allowoptout.yes": "Yes",
|
||||
"authoring.examsettings.createzendesk.no": "No",
|
||||
"authoring.examsettings.createzendesk.yes": "Yes",
|
||||
"authoring.examsettings.support.text": "Support Page",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Enable Proctored Exams",
|
||||
"authoring.examsettings.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.examsettings.error.single": "There is 1 error in this form.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.examsettings.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"header.links.content": "Content",
|
||||
"header.links.settings": "Settings",
|
||||
"header.links.content.tools": "Tools",
|
||||
"header.links.outline": "Outline",
|
||||
"header.links.updates": "Updates",
|
||||
"header.links.pages": "Pages & Resources",
|
||||
"header.links.filesAndUploads": "Files & Uploads",
|
||||
"header.links.textbooks": "Textbooks",
|
||||
"header.links.videoUploads": "Video Uploads",
|
||||
"header.links.scheduleAndDetails": "Schedule & Details",
|
||||
"header.links.grading": "Grading",
|
||||
"header.links.courseTeam": "Course Team",
|
||||
"header.links.groupConfigurations": "Group Configurations",
|
||||
"header.links.proctoredExamSettings": "Proctored Exam Settings",
|
||||
"header.links.advancedSettings": "Advanced Settings",
|
||||
"header.links.certificates": "Certificates",
|
||||
"header.links.publisher": "Publisher",
|
||||
"header.links.import": "Import",
|
||||
"header.links.export": "Export",
|
||||
"header.links.checklists": "Checklists",
|
||||
"header.user.menu.studio": "Studio Home",
|
||||
"header.user.menu.maintenance": "Maintenance",
|
||||
"header.user.menu.logout": "Logout",
|
||||
"header.label.account.menu": "Account Menu",
|
||||
"header.label.account.menu.for": "Account menu for {username}",
|
||||
"header.label.main.nav": "Main",
|
||||
"header.label.main.menu": "Main Menu",
|
||||
"header.label.main.header": "Main",
|
||||
"header.label.secondary.nav": "Secondary",
|
||||
"header.label.courseOutline": "Back to course outline in Studio"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1 +1,352 @@
|
||||
{}
|
||||
{
|
||||
"authoring.alert.error.connection": "We encountered a technical error when loading this page. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.loading": "Loading...",
|
||||
"authoring.alert.error.permission": "You are not authorized to view this page. If you feel you should have access, please reach out to your course team admin to be given access.",
|
||||
"authoring.alert.save.error.connection": "We encountered a technical error when applying changes. This might be a temporary issue, so please try again in a few minutes. If the problem persists, please go to the {supportLink} for help.",
|
||||
"authoring.alert.support.text": "Support Page",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.cancel": "Cancel",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.save": "Save",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saving": "Saving",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.saved": "Saved",
|
||||
"course-authoring.pages-resources.app-settings-modal.button.retry": "Retry",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.enabled": "Enabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.badge.disabled": "Disabled",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.title": "We couldn't apply your changes.",
|
||||
"course-authoring.pages-resources.app-settings-modal.save-error.message": "Please check your entries and try again.",
|
||||
"course-authoring.pages-resources.calculator.heading": "Configure calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.label": "Calculator",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.help": "The calculator supports numbers, operators, constants,\n functions, and other mathematical concepts. When enabled, an icon to\n access the calculator appears on all pages in the body of your course.",
|
||||
"course-authoring.pages-resources.calculator.enable-calculator.link": "Learn more about the calculator",
|
||||
"authoring.discussions.documentationPage": "Visit the {name} documentation page",
|
||||
"authoring.discussions.formInstructions": "Complete the fields below to set up your discussion tool.",
|
||||
"authoring.discussions.consumerKey": "Consumer Key",
|
||||
"authoring.discussions.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.discussions.consumerSecret": "Consumer Secret",
|
||||
"authoring.discussions.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.discussions.launchUrl": "Launch URL",
|
||||
"authoring.discussions.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.discussions.stuffOnlyConfigInfo": "To enable {providerName} for your course, please contact their support team at {supportEmail} to learn more about pricing and usage.",
|
||||
"authoring.discussions.stuffOnlyConfigGuide": "To fully configure {providerName} will also require sharing usernames and emails for learners and course team. Please contact your edX project coordinator to enable PII sharing for this course.",
|
||||
"authoring.discussions.piiSharing": "Optionally share a user's username and/or email with the LTI provider:",
|
||||
"authoring.discussions.piiShareUsername": "Share username",
|
||||
"authoring.discussions.piiShareEmail": "Share email",
|
||||
"authoring.discussions.appDocInstructions.contact": "Contact: {link}",
|
||||
"authoring.discussions.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.discussions.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.discussions.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.discussions.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.discussions.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.discussions.appDocInstructions.linkText": "{link}",
|
||||
"authoring.discussions.configurationChangeConsequences": "Students will lose access to any active or previous discussion posts for your course.",
|
||||
"authoring.discussions.configure.app": "Configure {name}",
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
"authoring.discussions.savedButton": "Saved",
|
||||
"authoring.discussions.appConfigForm.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appConfigForm.appName-yellowdig": "Yellowdig",
|
||||
"authoring.discussions.appConfigForm.appName-inscribe": "InScribe",
|
||||
"authoring.discussions.appConfigForm.appName-discourse": "Discourse",
|
||||
"authoring.discussions.appConfigForm.appName-ed-discuss": "Ed Discussion",
|
||||
"authoring.discussions.appConfigForm.appName-legacy": "edX",
|
||||
"authoring.discussions.appConfigForm.appName-openedx": "edX",
|
||||
"authoring.discussions.builtIn.divisionByGroup": "Cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.label": "Divide discussions by cohorts",
|
||||
"authoring.discussions.builtIn.divideByCohorts.help": "Learners will only be able to view and respond to discussions posted by members of their cohort.",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.label": "Divide course-wide discussion topics",
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.label": "Group in context discussion at the subsection level",
|
||||
"authoring.discussions.builtIn.groupInContextSubsection.help": "Learners will be able to view any post in the sub-section no matter which unit page they are viewing. While this is not recommended, if your course has short learning sequences or low enrollment grouping may increase engagement.",
|
||||
"authoring.discussions.builtIn.anonymousPosting": "Anonymous posting",
|
||||
"authoring.discussions.builtIn.allowAnonymous.label": "Allow anonymous discussion posts",
|
||||
"authoring.discussions.builtIn.allowAnonymous.help": "If enabled, learners can create posts that are anonymous to all users.",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.label": "Allow anonymous discussion posts to peers",
|
||||
"authoring.discussions.builtIn.allowAnonymousPeers.help": "Learners will be able to post anonymously to other peers but all posts will be visible to course staff.",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications": "Notifications",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.label": "Email notifications for reported content",
|
||||
"authoring.discussions.builtIn.reportedContentEmailNotifications.help": "Discussion Admins, Moderators, Community TAs and Group Community TAs (only for their own cohort) will receive an email notification when content is reported.",
|
||||
"authoring.discussions.discussionTopics": "Discussion topics",
|
||||
"authoring.discussions.discussionTopics.label": "General discussion topics",
|
||||
"authoring.discussions.discussionTopics.help": "Discussions can include general topics not contained to the course structure. All courses have a general topic by default.",
|
||||
"authoring.discussions.discussionTopic.required": "Topic name is a required field",
|
||||
"authoring.discussions.discussionTopic.alreadyExistError": "It looks like this name is already in use",
|
||||
"authoring.discussions.addTopicButton": "Add topic",
|
||||
"authoring.discussions.deleteButton": "Delete",
|
||||
"authoring.discussions.cancelButton": "Cancel",
|
||||
"authoring.discussions.discussionTopicDeletion.help": "edX recommends that you do not delete discussion topics once your course is running.",
|
||||
"authoring.discussions.discussionTopicDeletion.label": "Delete this topic?",
|
||||
"authoring.discussions.builtIn.renameGeneralTopic.label": "Rename general topic",
|
||||
"authoring.discussions.generalTopicHelp.help": "This is the default discussion topic for your course.",
|
||||
"authoring.discussions.builtIn.configureAdditionalTopic.label": "Configure topic",
|
||||
"authoring.discussions.addTopicHelpText": "Choose a unique name for your topic",
|
||||
"authoring.discussions.blackoutDates": "Discussion blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.label": "Blackout dates",
|
||||
"authoring.discussions.builtIn.blackoutDates.help": "If added, learners will not be able to post in discussions between these dates.",
|
||||
"authoring.discussions.addBlackoutDatesButton": "Add blackout date range",
|
||||
"authoring.discussions.builtIn.configureBlackoutDates.label": "Configure blackout date range",
|
||||
"authoring.discussions.blackoutStartDate.help": "Enter a start date, e.g. 12/10/2023",
|
||||
"authoring.discussions.blackoutEndDate.help": "Enter an end date, e.g. 12/17/2023",
|
||||
"authoring.discussions.blackoutStartTime.help": "Enter a start time, e.g. 09:00 AM",
|
||||
"authoring.discussions.blackoutEndTime.help": "Enter an end time, e.g. 05:00 PM",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.help": "These blackout dates are currently active. If deleted, learners will be able to post in discussions during these dates. Are you sure you want to proceed?",
|
||||
"authoring.discussions.blackoutDatesDeletion.help": "If deleted, learners will be able to post in discussions during these dates.",
|
||||
"authoring.discussions.completeBlackoutDatesDeletion.help": "Are you sure you want to delete these blackout dates?",
|
||||
"authoring.discussions.activeBlackoutDatesDeletion.label": "Delete active blackout dates?",
|
||||
"authoring.discussions.blackoutDatesDeletion.label": "Delete blackout dates?",
|
||||
"authoring.blackoutDates.delete": "Delete Blackout Dates",
|
||||
"authoring.blackoutDates.status": "{status}",
|
||||
"authoring.blackoutDates.startDate.required": "Start date is a required field",
|
||||
"authoring.blackoutDates.endDate.required": "End date is a required field",
|
||||
"authoring.blackoutDates.startDate.inPast": "Start date cannot be after end date",
|
||||
"authoring.blackoutDates.endDate.inPast": "End date cannot be before start date",
|
||||
"authoring.blackoutDates.startTime.inPast": "Start time cannot be after end time",
|
||||
"authoring.blackoutDates.endTime.inPast": "End time cannot be before start time",
|
||||
"authoring.blackoutDates.startTime.inValidFormat": "Enter a valid start time",
|
||||
"authoring.blackoutDates.endTime.inValidFormat": "Enter a valid end time",
|
||||
"authoring.blackoutDates.startDate.inValidFormat": "Enter a valid start Date",
|
||||
"authoring.blackoutDates.endDate.inValidFormat": "Enter a valid end date",
|
||||
"authoring.topics.delete": "Delete Topic",
|
||||
"authoring.topics.expand": "Expand",
|
||||
"authoring.topics.collapse": "Collapse",
|
||||
"authoring.blackoutDates.start.date": "Start date",
|
||||
"authoring.blackoutDates.start.time": "Start time (optional) ({zone})",
|
||||
"authoring.blackoutDates.end.date": "End date",
|
||||
"authoring.blackoutDates.end.time": "End time (optional) ({zone})",
|
||||
"authoring.discussions.heading": "Select a discussion tool for this course",
|
||||
"authoring.discussions.supportedFeatures": "Supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-show": "Show supported features",
|
||||
"authoring.discussions.supportedFeatureList-mobile-hide": "Hide supported features",
|
||||
"authoring.discussions.noApps": "There are no discussions providers available for your course.",
|
||||
"authoring.discussions.nextButton": "Next",
|
||||
"authoring.discussions.appFullSupport": "Full support",
|
||||
"authoring.discussions.appBasicSupport": "Basic support",
|
||||
"authoring.discussions.selectApp": "Select {appName}",
|
||||
"authoring.discussions.appList.appName-legacy": "edX",
|
||||
"authoring.discussions.appList.appDescription-legacy": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-openedx": "edX",
|
||||
"authoring.discussions.appList.appDescription-openedx": "Start conversations with other learners, ask questions, and interact with other learners in the course.",
|
||||
"authoring.discussions.appList.appName-piazza": "Piazza",
|
||||
"authoring.discussions.appList.appDescription-piazza": "Piazza is designed to connect students, TAs, and professors so every student can get the help they need when they need it.",
|
||||
"authoring.discussions.appList.appDescription-yellowdig": "Yellowdig offers educators a gameful learning digital solution to improve student engagement by building learning communities for any course modality.",
|
||||
"authoring.discussions.appList.appDescription-inscribe": "InScribe leverages the power of community + artificial intelligence to connect individuals to the answers, resources, and people they need to succeed.",
|
||||
"authoring.discussions.appList.appDescription-discourse": "Discourse is modern forum software for your community. Use it as a mailing list, discussion forum, long-form chat room, and more!",
|
||||
"authoring.discussions.appList.appDescription-ed-discus": "Ed Discussion helps scale class communication in a beautiful and intuitive interface. Questions reach and benefit the whole class. Less emails, more time saved.",
|
||||
"authoring.discussions.featureName-discussion-page": "Discussion page",
|
||||
"authoring.discussions.featureName-embedded-course-sections": "Embedded course sections",
|
||||
"authoring.discussions.featureName-advanced-in-context-discussion": "Advanced in context discussion",
|
||||
"authoring.discussions.featureName-anonymous-posting": "Anonymous posting",
|
||||
"authoring.discussions.featureName-automatic-learner-enrollment": "Automatic learner enrollment",
|
||||
"authoring.discussions.featureName-blackout-discussion-dates": "Blackout discussion dates",
|
||||
"authoring.discussions.featureName-community-ta-support": "Community TA support",
|
||||
"authoring.discussions.featureName-course-cohort-support": "Course cohort support",
|
||||
"authoring.discussions.featureName-direct-messages-from-instructors": "Direct messages from instructors",
|
||||
"authoring.discussions.featureName-discussion-content-prompts": "Discussion content prompts",
|
||||
"authoring.discussions.featureName-email-notifications": "Email notifications",
|
||||
"authoring.discussions.featureName-graded-discussions": "Graded discussions",
|
||||
"authoring.discussions.featureName-in-platform-notifications": "In-platform notifications",
|
||||
"authoring.discussions.featureName-internationalization-support": "Internationalization support",
|
||||
"authoring.discussions.featureName-lti-advanced-sharing-mode": "LTI advanced sharing",
|
||||
"authoring.discussions.featureName-basic-configuration": "Basic configuration",
|
||||
"authoring.discussions.featureName-primary-discussion-app-experience": "Primary discussion app experience",
|
||||
"authoring.discussions.featureName-question-&-discussion-support": "Question & discussion support",
|
||||
"authoring.discussions.featureName-report/flag-content-to-moderators": "Report content to moderators",
|
||||
"authoring.discussions.featureName-research-data-events": "Research data events",
|
||||
"authoring.discussions.featureName-simplified-in-context-discussion": "Simplified in-context discussion",
|
||||
"authoring.discussions.featureName-user-mentions": "User mentions",
|
||||
"authoring.discussions.featureName-wcag-2.1": "WCAG 2.1 support",
|
||||
"authoring.discussions.wcag-2.0-support": "WCAG 2.0 support",
|
||||
"authoring.discussions.basic-support": "Basic support",
|
||||
"authoring.discussions.partial-support": "Partial support",
|
||||
"authoring.discussions.full-support": "Full support",
|
||||
"authoring.discussions.common-support": "Commonly requested",
|
||||
"authoring.discussions.settings": "Settings",
|
||||
"authoring.discussions.applyButton": "Apply",
|
||||
"authoring.discussions.applyingButton": "Applying",
|
||||
"authoring.discussions.appliedButton": "Applied",
|
||||
"authoring.discussions.noProviderSwitchAfterCourseStarted": "Discussion provider can't be changed after course has started, please reach out to partner support.",
|
||||
"authoring.discussions.providerSelection": "Provider selection",
|
||||
"authoring.discussions.Incomplete": "Incomplete",
|
||||
"course-authoring.pages-resources.notes.heading": "Configure notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.label": "Notes",
|
||||
"course-authoring.pages-resources.notes.enable-notes.help": "Learners can access their notes either in the body of the\n course of on a notes page. On the notes page, a learner can see all the\n notes made during the course. The page also contains links to the location\n of the notes in the course body.",
|
||||
"course-authoring.pages-resources.notes.enable-notes.link": "Learn more about notes",
|
||||
"authoring.live.bbb.selectPlan.label": "Select a plan",
|
||||
"authoring.pagesAndResources.live.enableLive.heading": "Configure Live",
|
||||
"authoring.pagesAndResources.live.enableLive.label": "Live",
|
||||
"authoring.pagesAndResources.live.enableLive.help": "Schedule meetings and conduct live course sessions with learners.",
|
||||
"authoring.pagesAndResources.live.enableLive.link": "Learn more about live",
|
||||
"authoring.live.selectProvider": "Select a video conferencing tool",
|
||||
"authoring.live.formInstructions": "Complete the fields below to set up your video conferencing tool.",
|
||||
"authoring.live.consumerKey": "Consumer Key",
|
||||
"authoring.live.consumerKey.required": "Consumer key is a required field",
|
||||
"authoring.live.consumerSecret": "Consumer Secret",
|
||||
"authoring.live.consumerSecret.required": "Consumer secret is a required field",
|
||||
"authoring.live.launchUrl": "Launch URL",
|
||||
"authoring.live.launchUrl.required": "Launch URL is a required field",
|
||||
"authoring.live.launchEmail": "Launch Email",
|
||||
"authoring.live.launchEmail.required": "Launch Email is a required field",
|
||||
"authoring.live.provider.helpText": "This configuration will require sharing username and emails of learners and the course team with {providerName}.",
|
||||
"authoring.live.requestPiiSharingEnable": "This configuration will require sharing usernames and emails of learners and the course team with {provider}. To access the LTI configuration for {provider}, please request your edX project coordinator to get PII sharing enabled for this course.",
|
||||
"authoring.live.appDocInstructions.documentationLink": "General documentation",
|
||||
"authoring.live.appDocInstructions.accessibilityDocumentationLink": "Accessibility documentation",
|
||||
"authoring.live.appDocInstructions.configurationLink": "Configuration documentation",
|
||||
"authoring.live.appDocInstructions.learnMoreLink": "Learn more about {providerName}",
|
||||
"authoring.live.appDocInstructions.linkTextHeading": "External help and documentation",
|
||||
"authoring.live.appDocInstructions.linkText": "{link}",
|
||||
"authoring.live.appName-yellowdig": "Zoom",
|
||||
"authoring.live.appName-googleMeet": "Google Meet",
|
||||
"authoring.live.appName-microsoftTeams": "Microsoft Teams",
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
"course-authoring.badge.enabled": "Enabled",
|
||||
"authoring.proctoring.no": "No",
|
||||
"authoring.proctoring.yes": "Yes",
|
||||
"authoring.proctoring.support.text": "Support Page",
|
||||
"authoring.proctoring.enableproctoredexams.label": "Proctored exams",
|
||||
"authoring.proctoring.enableproctoredexams.help": "Enable and configure proctored exams in your course.",
|
||||
"authoring.proctoring.enabled": "Enabled",
|
||||
"authoring.proctoring.learn.more": "Learn more about proctoring",
|
||||
"authoring.proctoring.provider.label": "Proctoring provider",
|
||||
"authoring.proctoring.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.proctoring.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"authoring.proctoring.escalationemail.label": "Proctortrack escalation email",
|
||||
"authoring.proctoring.escalationemail.help": "Provide an email address to be contacted by the support team for escalations (e.g. appeals, delayed reviews).",
|
||||
"authoring.proctoring.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.proctoring.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.proctoring.allowoptout.label": "Allow learners to opt out of proctoring on proctored exams",
|
||||
"authoring.proctoring.createzendesk.label": "Create Zendesk tickets for suspicious attempts",
|
||||
"authoring.proctoring.error.single": "There is 1 error in this form.",
|
||||
"authoring.proctoring.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.proctoring.save": "Save",
|
||||
"authoring.proctoring.saving": "Saving...",
|
||||
"authoring.proctoring.cancel": "Cancel",
|
||||
"authoring.proctoring.studio.link.text": "Go back to your course in Studio",
|
||||
"authoring.proctoring.alert.success": "\n Proctored exam settings saved successfully. {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.alert.error": "\n We encountered a technical error while trying to save proctored exam settings.\n This might be a temporary issue, so please try again in a few minutes.\n If the problem persists,\n please go to the {support_link} for help.\n ",
|
||||
"course-authoring.pages-resources.progress.heading": "Configure progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.label": "Progress",
|
||||
"course-authoring.pages-resources.progress.enable-progress.help": "As students work through graded assignments, scores\n will appear under the progress tab. The progress tab contains a chart of\n all graded assignments in the course, with a list of all assignments and\n scores below.",
|
||||
"course-authoring.pages-resources.progress.enable-progress.link": "Learn more about progress",
|
||||
"course-authoring.pages-resources.progress.enable-graph.label": "Enable progress graph",
|
||||
"course-authoring.pages-resources.progress.enable-graph.help": "If enabled, students can view the progress graph",
|
||||
"authoring.pagesAndResources.teams.heading": "Configure teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.label": "Teams",
|
||||
"authoring.pagesAndResources.teams.enableTeams.help": "Allow learners to work together on specific projects or activities.",
|
||||
"authoring.pagesAndResources.teams.enableTeams.link": "Learn more about teams",
|
||||
"authoring.pagesAndResources.teams.teamSize.heading": "Team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSize": "Max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeHelp": "The maximum number of learners that can join a team",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeEmpty": "Enter max team size",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeInvalid": "Max team size must be a positive number larger than zero.",
|
||||
"authoring.pagesAndResources.teams.teamSize.maxTeamSizeTooHigh": "Max team size cannot be greater than {max}",
|
||||
"authoring.pagesAndResources.teams.groups.heading": "Groups",
|
||||
"authoring.pagesAndResources.teams.groups.help": "Groups are spaces where learners can create or join teams.",
|
||||
"authoring.pagesAndResources.teams.configureGroup.heading": "Configure group",
|
||||
"authoring.pagesAndResources.teams.group.name.label": "Name",
|
||||
"authoring.pagesAndResources.teams.group.name.help": "Choose a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.empty": "Enter a unique name for this group",
|
||||
"authoring.pagesAndResources.teams.group.name.error.exists": "It looks like this name is already in use",
|
||||
"authoring.pagesAndResources.teams.group.description.label": "Description",
|
||||
"authoring.pagesAndResources.teams.group.description.help": "Enter details about this group",
|
||||
"authoring.pagesAndResources.teams.group.description.error": "Enter a description for this group",
|
||||
"authoring.pagesAndResources.teams.group.type.label": "Type",
|
||||
"authoring.pagesAndResources.teams.group.type.help": "Control who can see, create and join teams",
|
||||
"authoring.pagesAndResources.teams.group.types.open": "Open",
|
||||
"authoring.pagesAndResources.teams.group.types.open.description": "Learners can create, join, leave, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed": "Public managed",
|
||||
"authoring.pagesAndResources.teams.group.types.public_managed.description": "Only course staff can control teams and memberships. Learners can see other teams.",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed": "Private managed",
|
||||
"authoring.pagesAndResources.teams.group.types.private_managed.description": "Only course staff can control teams, memberships, and see other teams",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.label": "Max team size (optional)",
|
||||
"authoring.pagesAndResources.teams.group.maxSize.help": "Override the global max team size",
|
||||
"authoring.pagesAndResources.teams.addGroup.button": "Add group",
|
||||
"authoring.pagesAndResources.teams.group.delete": "Delete",
|
||||
"authoring.pagesAndResources.teams.group.expand": "Expand group editor",
|
||||
"authoring.pagesAndResources.teams.group.collapse": "Close group editor",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.initiateDelete": "Delete",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.cancel-delete.button": "Cancel",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.heading": "Delete this group?",
|
||||
"authoring.pagesAndResources.teams.deleteGroup.body": "edX recommends that you do not delete groups once your course is running.\n Your group will no longer be visible in the LMS and learners will not be able to leave teams associated with it.\n Please delete learners from teams before deleting the associated group.",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.title": "No groups found",
|
||||
"authoring.pagesAndResources.teams.enableGroups.error.noGroupsFound.message": "Add one or more groups to enable teams.",
|
||||
"course-authoring.pages-resources.wiki.heading": "Configure wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.label": "Wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.help": "The course wiki can be set up based on the needs of your\n course. Common uses might include sharing answers to course FAQs, sharing\n editable course information, or providing access to learner-created\n resources.",
|
||||
"course-authoring.pages-resources.wiki.enable-wiki.link": "Learn more about the wiki",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.label": "Enable public wiki access",
|
||||
"course-authoring.pages-resources.wiki.enable-public-wiki.help": "If enabled, edX users can view the course wiki even when\n they're not enrolled in the course.",
|
||||
"authoring.examsettings.enableproctoredexams.help": "If checked, proctored exams are enabled in your course.",
|
||||
"authoring.examsettings.allowoptout.label": "Allow Opting Out of Proctored Exams",
|
||||
"authoring.examsettings.allowoptout.help": "\n If this value is \"Yes\", learners can choose to take proctored exams without proctoring.\n If this value is \"No\", all learners must take the exam with proctoring.\n ",
|
||||
"authoring.examsettings.provider.label": "Proctoring Provider",
|
||||
"authoring.examsettings.escalationemail.label": "Proctortrack Escalation Email",
|
||||
"authoring.examsettings.escalationemail.help": "\n Required if \"proctortrack\" is selected as your proctoring provider. Enter an email address to be\n contacted by the support team whenever there are escalations (e.g. appeals, delayed reviews, etc.).\n ",
|
||||
"authoring.examsettings.createzendesk.label": "Create Zendesk Tickets for Suspicious Proctored Exam Attempts",
|
||||
"authoring.examsettings.createzendesk.help": "If this value is \"Yes\", a Zendesk ticket will be created for suspicious proctored exam attempts.",
|
||||
"authoring.examsettings.submit": "Submit",
|
||||
"authoring.examsettings.alert.success": "\n Proctored exam settings saved successfully.\n You can go back to your course in Studio {studioCourseRunURL}.\n ",
|
||||
"authoring.examsettings.allowoptout.no": "No",
|
||||
"authoring.examsettings.allowoptout.yes": "Yes",
|
||||
"authoring.examsettings.createzendesk.no": "No",
|
||||
"authoring.examsettings.createzendesk.yes": "Yes",
|
||||
"authoring.examsettings.support.text": "Support Page",
|
||||
"authoring.examsettings.escalationemail.enableproctoredexams.label": "Enable Proctored Exams",
|
||||
"authoring.examsettings.escalationemail.error.blank": "The Proctortrack Escalation Email field cannot be empty if proctortrack is the selected provider.",
|
||||
"authoring.examsettings.escalationemail.error.invalid": "The Proctortrack Escalation Email field is in the wrong format and is not valid.",
|
||||
"authoring.examsettings.error.single": "There is 1 error in this form.",
|
||||
"authoring.examsettings.escalationemail.error.multiple": "There are {numOfErrors} errors in this form.",
|
||||
"authoring.examsettings.provider.help": "Select the proctoring provider you want to use for this course run.",
|
||||
"authoring.examsettings.provider.help.aftercoursestart": "Proctoring provider cannot be modified after course start date.",
|
||||
"header.links.content": "Content",
|
||||
"header.links.settings": "Settings",
|
||||
"header.links.content.tools": "Tools",
|
||||
"header.links.outline": "Outline",
|
||||
"header.links.updates": "Updates",
|
||||
"header.links.pages": "Pages & Resources",
|
||||
"header.links.filesAndUploads": "Files & Uploads",
|
||||
"header.links.textbooks": "Textbooks",
|
||||
"header.links.videoUploads": "Video Uploads",
|
||||
"header.links.scheduleAndDetails": "Schedule & Details",
|
||||
"header.links.grading": "Grading",
|
||||
"header.links.courseTeam": "Course Team",
|
||||
"header.links.groupConfigurations": "Group Configurations",
|
||||
"header.links.proctoredExamSettings": "Proctored Exam Settings",
|
||||
"header.links.advancedSettings": "Advanced Settings",
|
||||
"header.links.certificates": "Certificates",
|
||||
"header.links.publisher": "Publisher",
|
||||
"header.links.import": "Import",
|
||||
"header.links.export": "Export",
|
||||
"header.links.checklists": "Checklists",
|
||||
"header.user.menu.studio": "Studio Home",
|
||||
"header.user.menu.maintenance": "Maintenance",
|
||||
"header.user.menu.logout": "Logout",
|
||||
"header.label.account.menu": "Account Menu",
|
||||
"header.label.account.menu.for": "Account menu for {username}",
|
||||
"header.label.main.nav": "Main",
|
||||
"header.label.main.menu": "Main Menu",
|
||||
"header.label.main.header": "Main",
|
||||
"header.label.secondary.nav": "Secondary",
|
||||
"header.label.courseOutline": "Back to course outline in Studio"
|
||||
}
|
||||
@@ -42,7 +42,12 @@
|
||||
"authoring.discussions.configure": "Configure discussions",
|
||||
"authoring.discussions.ok": "OK",
|
||||
"authoring.discussions.cancel": "Cancel",
|
||||
"authoring.discussions.confirm": "Confirm",
|
||||
"authoring.discussions.confirmConfigurationChange": "Are you sure you want to change the discussion settings?",
|
||||
"authoring.discussions.confirmEnableDiscussionsLabel": "Enable discussions on units in graded subsections?",
|
||||
"authoring.discussions.cancelEnableDiscussionsLabel": "Disable discussions on units in graded subsections?",
|
||||
"authoring.discussions.confirmEnableDiscussions": "Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.",
|
||||
"authoring.discussions.cancelEnableDiscussions": "Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.",
|
||||
"authoring.discussions.backButton": "Back",
|
||||
"authoring.discussions.saveButton": "Save",
|
||||
"authoring.discussions.savingButton": "Saving",
|
||||
@@ -61,6 +66,8 @@
|
||||
"authoring.discussions.builtIn.divideCourseTopicsByCohorts.help": "Choose which of your general course-wide discussion topics you would like to divide.",
|
||||
"authoring.discussions.builtIn.divideGeneralTopic.label": "General",
|
||||
"authoring.discussions.builtIn.divideQuestionsForTAsTopic.label": "Questions for the TAs",
|
||||
"authoring.discussions.builtIn.cohortsEnabled.label": "To adjust these settings, enable cohorts on the ",
|
||||
"authoring.discussions.builtIn.instructorDashboard.label": "instructor dashboard",
|
||||
"authoring.discussions.builtIn.visibilityInContext": "Visibility of in-context discussions",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.label": "Enable discussions on units in graded subsections",
|
||||
"authoring.discussions.builtIn.gradedUnitPages.help": "Allow learners to engage with discussion on all graded unit pages except timed exams.",
|
||||
@@ -208,7 +215,8 @@
|
||||
"authoring.live.appName-bigBlueButton": "BigBlueButton",
|
||||
"authoring.live.requestPiiSharingEnableForBbb": "This configuration will require sharing usernames of learners and the course team with {provider}.",
|
||||
"authoring.live.piiSharingEnableHelpText": "To enable this feature, contact your edX support team to enable PII sharing for this course.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required.",
|
||||
"authoring.live.freePlanMessage": "The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks",
|
||||
"authoring.live.privacyPolicy": "Privacy Policy.",
|
||||
"course-authoring.pages-resources.heading": "Pages & Resources",
|
||||
"course-authoring.pages-resources.resources.settings.button": "settings",
|
||||
"course-authoring.pages-resources.viewLive.button": "View live",
|
||||
|
||||
@@ -51,6 +51,7 @@ initialize({
|
||||
CALCULATOR_HELP_URL: process.env.CALCULATOR_HELP_URL || null,
|
||||
ENABLE_PROGRESS_GRAPH_SETTINGS: process.env.ENABLE_PROGRESS_GRAPH_SETTINGS || 'false',
|
||||
ENABLE_TEAM_TYPE_SETTING: process.env.ENABLE_TEAM_TYPE_SETTING === 'true',
|
||||
BBB_LEARN_MORE_URL: process.env.BBB_LEARN_MORE_URL || '',
|
||||
}, 'CourseAuthoringConfig');
|
||||
},
|
||||
},
|
||||
|
||||
@@ -8,10 +8,9 @@ ensureConfig([
|
||||
'STUDIO_BASE_URL',
|
||||
], 'Course Apps API service');
|
||||
|
||||
const apiBaseUrl = getConfig().STUDIO_BASE_URL;
|
||||
|
||||
const courseAppsApiUrl = `${apiBaseUrl}/api/course_apps/v1/apps`;
|
||||
const courseAdvancedSettingsApiUrl = `${apiBaseUrl}/api/contentstore/v0/advanced_settings`;
|
||||
const getApiBaseUrl = () => getConfig().STUDIO_BASE_URL;
|
||||
const getCourseAppsApiUrl = () => `${getApiBaseUrl()}/api/course_apps/v1/apps`;
|
||||
const getCourseAdvancedSettingsApiUrl = () => `${getApiBaseUrl()}/api/contentstore/v0/advanced_settings`;
|
||||
|
||||
/**
|
||||
* Fetches the course apps installed for provided course
|
||||
@@ -20,7 +19,7 @@ const courseAdvancedSettingsApiUrl = `${apiBaseUrl}/api/contentstore/v0/advanced
|
||||
*/
|
||||
export async function getCourseApps(courseId) {
|
||||
const { data } = await getAuthenticatedHttpClient()
|
||||
.get(`${courseAppsApiUrl}/${courseId}`);
|
||||
.get(`${getCourseAppsApiUrl()}/${courseId}`);
|
||||
return camelCaseObject(data);
|
||||
}
|
||||
|
||||
@@ -33,7 +32,7 @@ export async function getCourseApps(courseId) {
|
||||
export async function updateCourseApp(courseId, appId, state) {
|
||||
await getAuthenticatedHttpClient()
|
||||
.patch(
|
||||
`${courseAppsApiUrl}/${courseId}`,
|
||||
`${getCourseAppsApiUrl()}/${courseId}`,
|
||||
{
|
||||
id: appId,
|
||||
enabled: state,
|
||||
@@ -49,7 +48,7 @@ export async function updateCourseApp(courseId, appId, state) {
|
||||
*/
|
||||
export async function getCourseAdvancedSettings(courseId, settings) {
|
||||
const { data } = await getAuthenticatedHttpClient()
|
||||
.get(`${courseAdvancedSettingsApiUrl}/${courseId}`, { filter_fields: settings.map(snakeCase).join(',') });
|
||||
.get(`${getCourseAdvancedSettingsApiUrl()}/${courseId}`, { filter_fields: settings.map(snakeCase).join(',') });
|
||||
return camelCaseObject(data);
|
||||
}
|
||||
|
||||
@@ -62,6 +61,6 @@ export async function getCourseAdvancedSettings(courseId, settings) {
|
||||
*/
|
||||
export async function updateCourseAdvancedSettings(courseId, setting, value) {
|
||||
const { data } = await getAuthenticatedHttpClient()
|
||||
.patch(`${courseAdvancedSettingsApiUrl}/${courseId}`, { [snakeCase(setting)]: { value } });
|
||||
.patch(`${getCourseAdvancedSettingsApiUrl()}/${courseId}`, { [snakeCase(setting)]: { value } });
|
||||
return camelCaseObject(data);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ function OpenedXConfigForm({
|
||||
unitLevelVisibility: true,
|
||||
allowAnonymousPostsPeers: appConfigObj?.allowAnonymousPostsPeers || false,
|
||||
reportedContentEmailNotifications: appConfigObj?.reportedContentEmailNotifications || false,
|
||||
enableReportedContentEmailNotifications: appConfigObj?.enableReportedContentEmailNotifications || false,
|
||||
enableReportedContentEmailNotifications: Boolean(appConfigObj?.enableReportedContentEmailNotifications) || false,
|
||||
blackoutDates: appConfigObj?.blackoutDates || [],
|
||||
discussionTopics: discussionTopicsModel || [],
|
||||
divideByCohorts: appConfigObj?.divideByCohorts || false,
|
||||
|
||||
@@ -50,6 +50,7 @@ const defaultAppConfig = (divideDiscussionIds = []) => ({
|
||||
enableReportedContentEmailNotifications: false,
|
||||
allowDivisionByUnit: false,
|
||||
blackoutDates: [],
|
||||
cohortsEnabled: false,
|
||||
});
|
||||
describe('OpenedXConfigForm', () => {
|
||||
let axiosMock;
|
||||
@@ -141,14 +142,17 @@ describe('OpenedXConfigForm', () => {
|
||||
...legacyApiResponse.plugin_configuration,
|
||||
reported_content_email_notifications_flag: true,
|
||||
divided_course_wide_discussions: [],
|
||||
available_division_schemes: [],
|
||||
},
|
||||
});
|
||||
createComponent();
|
||||
const { divideDiscussionIds } = defaultAppConfig(['13f106c6-6735-4e84-b097-0456cff55960', 'course']);
|
||||
|
||||
// DivisionByGroupFields
|
||||
|
||||
expect(container.querySelector('#alert')).toBeInTheDocument();
|
||||
expect(container.querySelector('#divideByCohorts')).toBeInTheDocument();
|
||||
expect(container.querySelector('#divideByCohorts')).not.toBeChecked();
|
||||
expect(container.querySelector('#divideByCohorts')).toBeDisabled();
|
||||
expect(container.querySelector('#divideCourseTopicsByCohorts')).not.toBeInTheDocument();
|
||||
|
||||
divideDiscussionIds.forEach(id => expect(
|
||||
@@ -179,6 +183,7 @@ describe('OpenedXConfigForm', () => {
|
||||
reported_content_email_notifications_flag: true,
|
||||
always_divide_inline_discussions: true,
|
||||
divided_course_wide_discussions: [],
|
||||
available_division_schemes: ['cohorts'],
|
||||
},
|
||||
});
|
||||
createComponent();
|
||||
@@ -186,14 +191,10 @@ describe('OpenedXConfigForm', () => {
|
||||
|
||||
// DivisionByGroupFields
|
||||
expect(container.querySelector('#divideByCohorts')).toBeInTheDocument();
|
||||
expect(container.querySelector('#divideByCohorts')).toBeChecked();
|
||||
expect(container.querySelector('#divideByCohorts')).not.toBeChecked();
|
||||
expect(
|
||||
container.querySelector('#divideCourseTopicsByCohorts'),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
container.querySelector('#divideCourseTopicsByCohorts'),
|
||||
).not.toBeChecked();
|
||||
|
||||
).not.toBeInTheDocument();
|
||||
divideDiscussionIds.forEach(id => expect(
|
||||
container.querySelector(`#checkbox-${id}`),
|
||||
).not.toBeInTheDocument());
|
||||
@@ -229,13 +230,10 @@ describe('OpenedXConfigForm', () => {
|
||||
|
||||
// DivisionByGroupFields
|
||||
expect(container.querySelector('#divideByCohorts')).toBeInTheDocument();
|
||||
expect(container.querySelector('#divideByCohorts')).toBeChecked();
|
||||
expect(container.querySelector('#divideCourseTopicsByCohorts')).toBeInTheDocument();
|
||||
expect(container.querySelector('#divideCourseTopicsByCohorts')).toBeChecked();
|
||||
|
||||
expect(container.querySelector('#divideByCohorts')).not.toBeChecked();
|
||||
expect(container.querySelector('#divideCourseTopicsByCohorts')).not.toBeInTheDocument();
|
||||
divideDiscussionIds.forEach(id => {
|
||||
expect(container.querySelector(`#checkbox-${id}`)).toBeInTheDocument();
|
||||
expect(container.querySelector(`#checkbox-${id}`)).toBeChecked();
|
||||
expect(container.querySelector(`#checkbox-${id}`)).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import React, { useEffect, useContext } from 'react';
|
||||
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
||||
import { Form, TransitionReplace } from '@edx/paragon';
|
||||
import {
|
||||
Form, TransitionReplace, Hyperlink, Alert,
|
||||
} from '@edx/paragon';
|
||||
import { AppContext } from '@edx/frontend-platform/react';
|
||||
import { FieldArray, useFormikContext } from 'formik';
|
||||
import _ from 'lodash';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import FormSwitchGroup from '../../../../../generic/FormSwitchGroup';
|
||||
import messages from '../../messages';
|
||||
import AppConfigFormDivider from './AppConfigFormDivider';
|
||||
@@ -21,8 +25,13 @@ const DivisionByGroupFields = ({ intl }) => {
|
||||
discussionTopics,
|
||||
divideByCohorts,
|
||||
divideCourseTopicsByCohorts,
|
||||
cohortsEnabled,
|
||||
} = appConfig;
|
||||
|
||||
const { courseId } = useParams();
|
||||
const { config } = useContext(AppContext);
|
||||
const learningCourseURL = `${config.LMS_BASE_URL}/courses/${courseId}/instructor`;
|
||||
|
||||
useEffect(() => {
|
||||
if (divideByCohorts) {
|
||||
if (!divideCourseTopicsByCohorts && _.size(discussionTopics) !== _.size(divideDiscussionIds)) {
|
||||
@@ -56,20 +65,30 @@ const DivisionByGroupFields = ({ intl }) => {
|
||||
|
||||
return (
|
||||
<>
|
||||
<h5 className="text-gray-500 mb-2 mt-4">
|
||||
<h5 className="text-gray-500 mb-4 mt-4">
|
||||
{intl.formatMessage(messages.divisionByGroup)}
|
||||
</h5>
|
||||
{!cohortsEnabled
|
||||
&& (
|
||||
<Alert className="bg-light-200 font-weight-normal h5" id="alert">
|
||||
{intl.formatMessage(messages.cohortsEnabled)}
|
||||
<Hyperlink destination={learningCourseURL} target="_blank">
|
||||
{intl.formatMessage(messages.instructorDashboard)}
|
||||
</Hyperlink>
|
||||
</Alert>
|
||||
)}
|
||||
<FormSwitchGroup
|
||||
onChange={handleChange}
|
||||
className="mt-2"
|
||||
onBlur={handleBlur}
|
||||
id="divideByCohorts"
|
||||
checked={divideByCohorts}
|
||||
checked={cohortsEnabled === false ? cohortsEnabled : divideByCohorts}
|
||||
label={intl.formatMessage(messages.divideByCohortsLabel)}
|
||||
helpText={intl.formatMessage(messages.divideByCohortsHelp)}
|
||||
disabled={!cohortsEnabled}
|
||||
/>
|
||||
<TransitionReplace>
|
||||
{divideByCohorts ? (
|
||||
{(divideByCohorts && cohortsEnabled) ? (
|
||||
<React.Fragment key="open">
|
||||
<AppConfigFormDivider />
|
||||
<FormSwitchGroup
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import React from 'react';
|
||||
import React, { useState } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
||||
import { useFormikContext } from 'formik';
|
||||
import FormSwitchGroup from '../../../../../generic/FormSwitchGroup';
|
||||
import messages from '../../messages';
|
||||
import AppConfigFormDivider from './AppConfigFormDivider';
|
||||
import ConfirmationPopup from '../../../../../generic/ConfirmationPopup';
|
||||
|
||||
function InContextDiscussionFields({
|
||||
onBlur,
|
||||
@@ -11,17 +13,45 @@ function InContextDiscussionFields({
|
||||
intl,
|
||||
values,
|
||||
}) {
|
||||
const {
|
||||
setFieldValue,
|
||||
} = useFormikContext();
|
||||
|
||||
const [showPopup, setShowPopup] = useState(false);
|
||||
|
||||
const handleConfirmation = () => {
|
||||
setFieldValue('enableGradedUnits', !values.enableGradedUnits);
|
||||
setShowPopup(false);
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<h5 className="text-gray-500 mt-4">{intl.formatMessage(messages.visibilityInContext)}</h5>
|
||||
<FormSwitchGroup
|
||||
onChange={onChange}
|
||||
onBlur={onBlur}
|
||||
id="enableGradedUnits"
|
||||
checked={values.enableGradedUnits}
|
||||
label={intl.formatMessage(messages.gradedUnitPagesLabel)}
|
||||
helpText={intl.formatMessage(messages.gradedUnitPagesHelp)}
|
||||
/>
|
||||
{showPopup
|
||||
? (
|
||||
<ConfirmationPopup
|
||||
label={values.enableGradedUnits
|
||||
? intl.formatMessage(messages.cancelEnableDiscussionsLabel)
|
||||
: intl.formatMessage(messages.confirmEnableDiscussionsLabel)}
|
||||
bodyText={values.enableGradedUnits
|
||||
? intl.formatMessage(messages.cancelEnableDiscussions)
|
||||
: intl.formatMessage(messages.confirmEnableDiscussions)}
|
||||
onConfirm={handleConfirmation}
|
||||
confirmLabel={intl.formatMessage(messages.confirm)}
|
||||
onCancel={() => setShowPopup(false)}
|
||||
cancelLabel={intl.formatMessage(messages.cancelButton)}
|
||||
/>
|
||||
)
|
||||
: (
|
||||
<FormSwitchGroup
|
||||
onChange={() => setShowPopup(true)}
|
||||
onBlur={onBlur}
|
||||
id="enableGradedUnits"
|
||||
checked={values.enableGradedUnits}
|
||||
label={intl.formatMessage(messages.gradedUnitPagesLabel)}
|
||||
helpText={intl.formatMessage(messages.gradedUnitPagesHelp)}
|
||||
/>
|
||||
)}
|
||||
<AppConfigFormDivider />
|
||||
<FormSwitchGroup
|
||||
onChange={onChange}
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
badgeVariant,
|
||||
} from '../../../../data/constants';
|
||||
import CollapsableEditor from '../../../../../../generic/CollapsableEditor';
|
||||
import DeletePopup from '../../../../../../generic/DeletePopup';
|
||||
import ConfirmationPopup from '../../../../../../generic/ConfirmationPopup';
|
||||
import CollapseCardHeading from './CollapseCardHeading';
|
||||
|
||||
const BlackoutDatesItem = ({
|
||||
@@ -51,13 +51,13 @@ const BlackoutDatesItem = ({
|
||||
|
||||
if (showDeletePopup) {
|
||||
return (
|
||||
<DeletePopup
|
||||
<ConfirmationPopup
|
||||
label={blackoutDate.status === constants.ACTIVE
|
||||
? intl.formatMessage(messages.activeBlackoutDatesDeletionLabel)
|
||||
: intl.formatMessage(messages.blackoutDatesDeletionLabel)}
|
||||
bodyText={intl.formatMessage(deleteHelperText[blackoutDate.status])}
|
||||
onDelete={onDelete}
|
||||
deleteLabel={intl.formatMessage(messages.deleteButton)}
|
||||
onConfirm={onDelete}
|
||||
confirmLabel={intl.formatMessage(messages.deleteButton)}
|
||||
onCancel={() => setShowDeletePopup(false)}
|
||||
cancelLabel={intl.formatMessage(messages.cancelButton)}
|
||||
/>
|
||||
|
||||
@@ -28,11 +28,36 @@ const messages = defineMessages({
|
||||
defaultMessage: 'Cancel',
|
||||
description: 'Button allowing the user to return to discussion provider configurations.',
|
||||
},
|
||||
confirm: {
|
||||
id: 'authoring.discussions.confirm',
|
||||
defaultMessage: 'Confirm',
|
||||
description: 'Button allowing the user to confirm Confirmation.',
|
||||
},
|
||||
confirmConfigurationChange: {
|
||||
id: 'authoring.discussions.confirmConfigurationChange',
|
||||
defaultMessage: 'Are you sure you want to change the discussion settings?',
|
||||
description: 'Asks the user whether he/she really wants to change settings.',
|
||||
},
|
||||
confirmEnableDiscussionsLabel: {
|
||||
id: 'authoring.discussions.confirmEnableDiscussionsLabel',
|
||||
defaultMessage: 'Enable discussions on units in graded subsections?',
|
||||
description: 'Asks the user whether he/she really wants to enable discussions on units in graded subsections.',
|
||||
},
|
||||
cancelEnableDiscussionsLabel: {
|
||||
id: 'authoring.discussions.cancelEnableDiscussionsLabel',
|
||||
defaultMessage: 'Disable discussions on units in graded subsections?',
|
||||
description: 'Asks the user whether he/she really wants to disable discussions on units in graded subsections.',
|
||||
},
|
||||
confirmEnableDiscussions: {
|
||||
id: 'authoring.discussions.confirmEnableDiscussions',
|
||||
defaultMessage: 'Enabling this toggle will automatically enable discussion on all units in graded subsections, that are not timed exams.',
|
||||
description: 'Asks the user whether he/she really wants to enable discussions on units in graded subsections.',
|
||||
},
|
||||
cancelEnableDiscussions: {
|
||||
id: 'authoring.discussions.cancelEnableDiscussions',
|
||||
defaultMessage: 'Disabling this toggle will automatically disable discussion on all units in graded subsections. Discussion topics containing at least 1 thread will be listed and accessible under “Archived” in Topics tab on the Discussions page.',
|
||||
description: 'Asks the user whether he/she really wants to disable discussions on units in graded subsections.',
|
||||
},
|
||||
backButton: {
|
||||
id: 'authoring.discussions.backButton',
|
||||
defaultMessage: 'Back',
|
||||
@@ -124,7 +149,16 @@ const messages = defineMessages({
|
||||
defaultMessage: 'Questions for the TAs',
|
||||
description: 'Label for a checkbox allowing a user to divide the Questions for the TAs (TA stands for "teaching assistant") course wide topic by cohorts.',
|
||||
},
|
||||
|
||||
cohortsEnabled: {
|
||||
id: 'authoring.discussions.builtIn.cohortsEnabled.label',
|
||||
defaultMessage: 'To adjust these settings, enable cohorts on the ',
|
||||
description: 'Label text informing the user to enable cohort',
|
||||
},
|
||||
instructorDashboard: {
|
||||
id: 'authoring.discussions.builtIn.instructorDashboard.label',
|
||||
defaultMessage: 'instructor dashboard',
|
||||
description: 'Label text for instructor dashboard',
|
||||
},
|
||||
// In-context discussion fields
|
||||
visibilityInContext: {
|
||||
id: 'authoring.discussions.builtIn.visibilityInContext',
|
||||
|
||||
@@ -56,6 +56,7 @@ function normalizePluginConfig(data) {
|
||||
if (!data || Object.keys(data).length < 1) {
|
||||
return {};
|
||||
}
|
||||
|
||||
const enableDivideByCohorts = data.always_divide_inline_discussions && data.division_scheme === 'cohort';
|
||||
const enableDivideCourseTopicsByCohorts = enableDivideByCohorts && data.divided_course_wide_discussions.length > 0;
|
||||
return {
|
||||
@@ -69,6 +70,8 @@ function normalizePluginConfig(data) {
|
||||
allowDivisionByUnit: false,
|
||||
divideByCohorts: enableDivideByCohorts,
|
||||
divideCourseTopicsByCohorts: enableDivideCourseTopicsByCohorts,
|
||||
cohortsEnabled: data.available_division_schemes?.includes('cohort') || false,
|
||||
groupAtSubsection: data.group_at_subsection,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -252,6 +252,7 @@ describe('Data layer integration tests', () => {
|
||||
alwaysDivideInlineDiscussions: false,
|
||||
allowDivisionByUnit: false,
|
||||
divideCourseTopicsByCohorts: false,
|
||||
cohortsEnabled: false,
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -455,6 +456,7 @@ describe('Data layer integration tests', () => {
|
||||
allowDivisionsByUnit: true,
|
||||
alwaysDivideInlineDiscussions: true,
|
||||
divideCourseTopicsByCohorts: true,
|
||||
divisionScheme: DivisionSchemes.COHORT,
|
||||
divideDiscussionIds,
|
||||
discussionTopics: [
|
||||
{ name: 'Edx', id: '13f106c6-6735-4e84-b097-0456cff55960' },
|
||||
@@ -463,7 +465,6 @@ describe('Data layer integration tests', () => {
|
||||
},
|
||||
pagesAndResourcesPath,
|
||||
), store.dispatch);
|
||||
|
||||
expect(window.location.pathname).toEqual(pagesAndResourcesPath);
|
||||
expect(store.getState().discussions).toEqual(
|
||||
expect.objectContaining({
|
||||
@@ -490,6 +491,7 @@ describe('Data layer integration tests', () => {
|
||||
// happens, but NOT what we want to have happen!
|
||||
divideByCohorts: true,
|
||||
divisionScheme: DivisionSchemes.COHORT,
|
||||
cohortsEnabled: false,
|
||||
allowDivisionByUnit: false,
|
||||
divideCourseTopicsByCohorts: true,
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
import { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
||||
import { Form, Hyperlink } from '@edx/paragon';
|
||||
import PropTypes from 'prop-types';
|
||||
@@ -19,7 +20,6 @@ function BbbSettings({
|
||||
setBbbPlan(values.tierType);
|
||||
}, [values.tierType]);
|
||||
|
||||
const appInfo = useModel('courseApps', 'live');
|
||||
const app = useModel('liveApps', 'big_blue_button');
|
||||
const isPiiDisabled = !values.piiSharingEnable;
|
||||
function getBbbPlanOptions() {
|
||||
@@ -71,7 +71,7 @@ function BbbSettings({
|
||||
</Form.Group>
|
||||
|
||||
<Hyperlink
|
||||
destination={appInfo.documentationLinks.learnMoreConfiguration}
|
||||
destination={getConfig().BBB_LEARN_MORE_URL}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
showLaunchIcon
|
||||
@@ -88,11 +88,19 @@ function BbbSettings({
|
||||
) : (
|
||||
<>
|
||||
{bbbPlan === bbbPlanTypes.commercial && <LiveCommonFields values={values} />}
|
||||
{bbbPlan === bbbPlanTypes.free
|
||||
&& (
|
||||
<p data-testid="free-plan-message">
|
||||
{bbbPlan === bbbPlanTypes.free && (
|
||||
<span data-testid="free-plan-message">
|
||||
{intl.formatMessage(messages.freePlanMessage)}
|
||||
</p>
|
||||
<Hyperlink
|
||||
destination="https://bigbluebutton.org/privacy-policy/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
showLaunchIcon
|
||||
className="text-gray-700 ml-1"
|
||||
>
|
||||
{intl.formatMessage(messages.privacyPolicy)}
|
||||
</Hyperlink>
|
||||
</span>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -57,10 +57,7 @@ function LiveSettings({
|
||||
is: (provider, tier) => provider === 'zoom' || (provider === 'big_blue_button' && tier === bbbPlanTypes.commercial),
|
||||
then: Yup.string().required(intl.formatMessage(messages.launchUrlRequired)),
|
||||
}),
|
||||
launchEmail: Yup.string().when('provider', {
|
||||
is: 'zoom',
|
||||
then: Yup.string().required(intl.formatMessage(messages.launchEmailRequired)),
|
||||
}),
|
||||
launchEmail: Yup.string(),
|
||||
};
|
||||
|
||||
const handleProviderChange = (providerId, setFieldValue, values) => {
|
||||
|
||||
@@ -6,13 +6,13 @@ import { providerNames } from './constants';
|
||||
import LiveCommonFields from './LiveCommonFields';
|
||||
import FormikControl from '../../generic/FormikControl';
|
||||
|
||||
function ZoomsSettings({
|
||||
function ZoomSettings({
|
||||
intl,
|
||||
values,
|
||||
}) {
|
||||
return (
|
||||
<>
|
||||
{(!values.piiSharingEnable && (values.piiSharingEmail || values.piiSharingUsername)) ? (
|
||||
{!values.piiSharingEnable ? (
|
||||
<p data-testid="request-pii-sharing">
|
||||
{intl.formatMessage(messages.requestPiiSharingEnable, { provider: providerNames[values.provider] })}
|
||||
</p>
|
||||
@@ -37,7 +37,7 @@ function ZoomsSettings({
|
||||
);
|
||||
}
|
||||
|
||||
ZoomsSettings.propTypes = {
|
||||
ZoomSettings.propTypes = {
|
||||
intl: intlShape.isRequired,
|
||||
values: PropTypes.shape({
|
||||
consumerKey: PropTypes.string,
|
||||
@@ -51,4 +51,4 @@ ZoomsSettings.propTypes = {
|
||||
}).isRequired,
|
||||
};
|
||||
|
||||
export default injectIntl(ZoomsSettings);
|
||||
export default injectIntl(ZoomSettings);
|
||||
|
||||
@@ -80,8 +80,8 @@ describe('Zoom Settings', () => {
|
||||
history.push(liveSettingsUrl);
|
||||
});
|
||||
|
||||
test('LTI fields are visible when pii sharing is enabled and email or username sharing required', async () => {
|
||||
await mockStore({ emailSharing: true });
|
||||
test('LTI fields are visible when pii sharing is enabled', async () => {
|
||||
await mockStore({ piiSharingAllowed: true });
|
||||
renderComponent();
|
||||
|
||||
const spinner = getByRole(container, 'status');
|
||||
@@ -103,9 +103,9 @@ describe('Zoom Settings', () => {
|
||||
});
|
||||
|
||||
test(
|
||||
'Only connect to support message is visible when pii sharing is disabled and email or username sharing is required',
|
||||
'Only connect to support message is visible when pii sharing is disabled',
|
||||
async () => {
|
||||
await mockStore({ emailSharing: true, piiSharingAllowed: false });
|
||||
await mockStore({ piiSharingAllowed: false });
|
||||
renderComponent();
|
||||
|
||||
const spinner = getByRole(container, 'status');
|
||||
@@ -129,7 +129,7 @@ describe('Zoom Settings', () => {
|
||||
|
||||
test('Provider Configuration should be displayed correctly', async () => {
|
||||
const apiDefaultResponse = generateLiveConfigurationApiResponse(true, true);
|
||||
await mockStore({ emailSharing: false, piiSharingAllowed: false });
|
||||
await mockStore({ piiSharingAllowed: true });
|
||||
renderComponent();
|
||||
|
||||
const spinner = getByRole(container, 'status');
|
||||
|
||||
@@ -160,9 +160,14 @@ const messages = defineMessages({
|
||||
|
||||
freePlanMessage: {
|
||||
id: 'authoring.live.freePlanMessage',
|
||||
defaultMessage: 'The free plan is pre-configured, and no additional configurations are required.',
|
||||
defaultMessage: 'The free plan is pre-configured, and no additional configurations are required. By selecting the free plan, you are agreeing to Blindside Networks',
|
||||
description: 'Tells user that free plans requires no additional configurations',
|
||||
},
|
||||
privacyPolicy: {
|
||||
id: 'authoring.live.privacyPolicy',
|
||||
defaultMessage: 'Privacy Policy.',
|
||||
description: 'The text of privacy policy hyperlink for free plan',
|
||||
},
|
||||
});
|
||||
|
||||
export default messages;
|
||||
|
||||
@@ -12,3 +12,11 @@
|
||||
-webkit-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.3) !important;
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.3) !important;
|
||||
}
|
||||
|
||||
[dir=rtl] {
|
||||
.desktop-card, .mobile-card {
|
||||
.pgn__card-header-actions .pgn__hyperlink .btn-icon {
|
||||
transform: scaleX(-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
ActionRow, Alert, Badge, Form, Hyperlink, ModalDialog, StatefulButton,
|
||||
} from '@edx/paragon';
|
||||
|
||||
import ExamsApiService from '../../data/services/ExamsApiService';
|
||||
import StudioApiService from '../../data/services/StudioApiService';
|
||||
import Loading from '../../generic/Loading';
|
||||
import ConnectionErrorAlert from '../../generic/ConnectionErrorAlert';
|
||||
@@ -36,7 +37,9 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
const [loadingConnectionError, setLoadingConnectionError] = useState(false);
|
||||
const [loadingPermissionError, setLoadingPermissionError] = useState(false);
|
||||
const [allowLtiProviders, setAllowLtiProviders] = useState(false);
|
||||
const [availableProctoringProviders, setAvailableProctoringProviders] = useState([]);
|
||||
const [ltiProctoringProviders, setLtiProctoringProviders] = useState([]);
|
||||
const [courseStartDate, setCourseStartDate] = useState('');
|
||||
const [saveSuccess, setSaveSuccess] = useState(false);
|
||||
const [saveError, setSaveError] = useState(false);
|
||||
@@ -85,6 +88,10 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
}
|
||||
}
|
||||
|
||||
function isLtiProvider(provider) {
|
||||
return ltiProctoringProviders.some(p => p.name === provider);
|
||||
}
|
||||
|
||||
function setFocusToProctortrackEscalationEmailInput() {
|
||||
if (proctoringEscalationEmailInputRef && proctoringEscalationEmailInputRef.current) {
|
||||
proctoringEscalationEmailInputRef.current.focus();
|
||||
@@ -92,23 +99,35 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
}
|
||||
|
||||
function postSettingsBackToServer() {
|
||||
const dataToPostBack = {
|
||||
const providerIsLti = isLtiProvider(formValues.proctoringProvider);
|
||||
const studioDataToPostBack = {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: formValues.enableProctoredExams,
|
||||
proctoring_provider: formValues.proctoringProvider,
|
||||
// lti providers are managed outside edx-platform, lti_external indicates this
|
||||
proctoring_provider: providerIsLti ? 'lti_external' : formValues.proctoringProvider,
|
||||
create_zendesk_tickets: formValues.createZendeskTickets,
|
||||
},
|
||||
};
|
||||
if (isEdxStaff) {
|
||||
dataToPostBack.proctored_exam_settings.allow_proctoring_opt_out = formValues.allowOptingOut;
|
||||
studioDataToPostBack.proctored_exam_settings.allow_proctoring_opt_out = formValues.allowOptingOut;
|
||||
}
|
||||
|
||||
if (formValues.proctoringProvider === 'proctortrack') {
|
||||
dataToPostBack.proctored_exam_settings.proctoring_escalation_email = formValues.proctortrackEscalationEmail === '' ? null : formValues.proctortrackEscalationEmail;
|
||||
studioDataToPostBack.proctored_exam_settings.proctoring_escalation_email = formValues.proctortrackEscalationEmail === '' ? null : formValues.proctortrackEscalationEmail;
|
||||
}
|
||||
|
||||
// only save back to exam service if necessary
|
||||
setSubmissionInProgress(true);
|
||||
StudioApiService.saveProctoredExamSettingsData(courseId, dataToPostBack).then(() => {
|
||||
const saveOperations = [StudioApiService.saveProctoredExamSettingsData(courseId, studioDataToPostBack)];
|
||||
if (allowLtiProviders && ExamsApiService.isAvailable()) {
|
||||
saveOperations.push(
|
||||
ExamsApiService.saveCourseExamConfiguration(
|
||||
courseId, { provider: providerIsLti ? formValues.proctoringProvider : null },
|
||||
),
|
||||
);
|
||||
}
|
||||
Promise.all(saveOperations)
|
||||
.then(() => {
|
||||
setSaveSuccess(true);
|
||||
setSaveError(false);
|
||||
setSubmissionInProgress(false);
|
||||
@@ -178,6 +197,11 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
return markDisabled;
|
||||
}
|
||||
|
||||
function getProviderDisplayLabel(provider) {
|
||||
// if a display label exists for this provider return it
|
||||
return ltiProctoringProviders.find(p => p.name === provider)?.verbose_name || provider;
|
||||
}
|
||||
|
||||
function getProctoringProviderOptions(providers) {
|
||||
return providers.map(provider => (
|
||||
<option
|
||||
@@ -186,7 +210,7 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
disabled={isDisabledOption(provider)}
|
||||
data-testid={provider}
|
||||
>
|
||||
{provider}
|
||||
{getProviderDisplayLabel(provider)}
|
||||
</option>
|
||||
));
|
||||
}
|
||||
@@ -344,7 +368,7 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
)}
|
||||
|
||||
{/* CREATE ZENDESK TICKETS */}
|
||||
{ isEdxStaff && formValues.enableProctoredExams && (
|
||||
{ isEdxStaff && formValues.enableProctoredExams && !isLtiProvider(formValues.proctoringProvider) && (
|
||||
<fieldset aria-describedby="createZendeskTicketsText">
|
||||
<Form.Group controlId="formCreateZendeskTickets">
|
||||
<Form.Label as="legend" className="font-weight-bold">
|
||||
@@ -446,23 +470,51 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
|
||||
useEffect(
|
||||
() => {
|
||||
StudioApiService.getProctoredExamSettingsData(courseId)
|
||||
Promise.all([
|
||||
StudioApiService.getProctoredExamSettingsData(courseId),
|
||||
ExamsApiService.isAvailable() ? ExamsApiService.getCourseExamConfiguration(courseId) : Promise.resolve(),
|
||||
ExamsApiService.isAvailable() ? ExamsApiService.getAvailableProviders() : Promise.resolve(),
|
||||
])
|
||||
.then(
|
||||
response => {
|
||||
const proctoredExamSettings = response.data.proctored_exam_settings;
|
||||
([settingsResponse, examConfigResponse, ltiProvidersResponse]) => {
|
||||
const proctoredExamSettings = settingsResponse.data.proctored_exam_settings;
|
||||
setLoaded(true);
|
||||
setLoading(false);
|
||||
setSubmissionInProgress(false);
|
||||
setCourseStartDate(response.data.course_start_date);
|
||||
setCourseStartDate(settingsResponse.data.course_start_date);
|
||||
const isProctortrack = proctoredExamSettings.proctoring_provider === 'proctortrack';
|
||||
setShowProctortrackEscalationEmail(isProctortrack);
|
||||
setAvailableProctoringProviders(response.data.available_proctoring_providers);
|
||||
setAvailableProctoringProviders(settingsResponse.data.available_proctoring_providers);
|
||||
const proctoringEscalationEmail = proctoredExamSettings.proctoring_escalation_email;
|
||||
|
||||
// The list of providers returned by studio settings are the default behavior. If lti_external
|
||||
// is available as an option display the list of LTI providers returned by the exam service.
|
||||
// Setting 'lti_external' in studio indicates an LTI provider configured outside of edx-platform.
|
||||
// This option is not directly selectable.
|
||||
const proctoringProvidersStudio = settingsResponse.data.available_proctoring_providers;
|
||||
const proctoringProvidersLti = ltiProvidersResponse?.data || [];
|
||||
const enableLtiProviders = proctoringProvidersStudio.includes('lti_external');
|
||||
setAllowLtiProviders(enableLtiProviders);
|
||||
setLtiProctoringProviders(proctoringProvidersLti);
|
||||
// flatten provider objects and coalesce values to just the provider key
|
||||
let availableProviders = proctoringProvidersStudio.filter(value => value !== 'lti_external');
|
||||
if (enableLtiProviders) {
|
||||
availableProviders = proctoringProvidersLti.reduce(
|
||||
(result, provider) => [...result, provider.name], availableProviders,
|
||||
);
|
||||
}
|
||||
setAvailableProctoringProviders(availableProviders);
|
||||
|
||||
let selectedProvider;
|
||||
if (proctoredExamSettings.proctoring_provider === 'lti_external') {
|
||||
selectedProvider = examConfigResponse.data.provider;
|
||||
} else {
|
||||
selectedProvider = proctoredExamSettings.proctoring_provider;
|
||||
}
|
||||
setFormValues({
|
||||
...formValues,
|
||||
proctoringProvider: selectedProvider,
|
||||
enableProctoredExams: proctoredExamSettings.enable_proctored_exams,
|
||||
proctoringProvider: proctoredExamSettings.proctoring_provider,
|
||||
allowOptingOut: proctoredExamSettings.allow_proctoring_opt_out,
|
||||
createZendeskTickets: proctoredExamSettings.create_zendesk_tickets,
|
||||
// The backend API may return null for the proctoringEscalationEmail value, which is the default.
|
||||
@@ -473,7 +525,7 @@ function ProctoringSettings({ intl, onClose }) {
|
||||
},
|
||||
).catch(
|
||||
error => {
|
||||
if (error.response.status === 403) {
|
||||
if (error.response?.status === 403) {
|
||||
setLoadingPermissionError(true);
|
||||
} else {
|
||||
setLoadingConnectionError(true);
|
||||
|
||||
@@ -4,12 +4,13 @@ import {
|
||||
} from '@testing-library/react';
|
||||
import MockAdapter from 'axios-mock-adapter';
|
||||
|
||||
import { initializeMockApp } from '@edx/frontend-platform';
|
||||
import { initializeMockApp, mergeConfig } from '@edx/frontend-platform';
|
||||
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
||||
import { IntlProvider, injectIntl } from '@edx/frontend-platform/i18n';
|
||||
import { AppProvider } from '@edx/frontend-platform/react';
|
||||
|
||||
import StudioApiService from '../../data/services/StudioApiService';
|
||||
import ExamsApiService from '../../data/services/ExamsApiService';
|
||||
import initializeStore from '../../store';
|
||||
import PagesAndResourcesProvider from '../PagesAndResourcesProvider';
|
||||
import ProctoredExamSettings from './Settings';
|
||||
@@ -33,7 +34,19 @@ const intlWrapper = children => (
|
||||
let axiosMock;
|
||||
|
||||
describe('ProctoredExamSettings', () => {
|
||||
beforeEach(() => {
|
||||
function setupApp(isAdmin = true) {
|
||||
mergeConfig({
|
||||
EXAMS_BASE_URL: 'http://exams.testing.co',
|
||||
}, 'CourseAuthoringConfig');
|
||||
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: isAdmin,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
store = initializeStore({
|
||||
models: {
|
||||
courseApps: {
|
||||
@@ -41,39 +54,47 @@ describe('ProctoredExamSettings', () => {
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
||||
axiosMock.onGet(
|
||||
`${ExamsApiService.getExamsBaseUrl()}/api/v1/providers`,
|
||||
).reply(200, [
|
||||
{
|
||||
name: 'test_lti',
|
||||
verbose_name: 'LTI Provider',
|
||||
},
|
||||
]);
|
||||
axiosMock.onGet(
|
||||
`${ExamsApiService.getExamsBaseUrl()}/api/v1/configs/course_id/${defaultProps.courseId}`,
|
||||
).reply(200, {
|
||||
provider: null,
|
||||
});
|
||||
|
||||
axiosMock.onGet(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
proctoring_escalation_email: 'test@example.com',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc', 'lti_external'],
|
||||
course_start_date: '2070-01-01T00:00:00Z',
|
||||
});
|
||||
}
|
||||
|
||||
afterEach(() => {
|
||||
cleanup();
|
||||
axiosMock.reset();
|
||||
});
|
||||
beforeEach(async () => {
|
||||
setupApp();
|
||||
});
|
||||
|
||||
describe('Field dependencies', () => {
|
||||
beforeEach(async () => {
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: true,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
||||
|
||||
axiosMock.onGet(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
proctoring_escalation_email: 'test@example.com',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc'],
|
||||
course_start_date: '2070-01-01T00:00:00Z',
|
||||
});
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
});
|
||||
|
||||
@@ -166,21 +187,23 @@ describe('ProctoredExamSettings', () => {
|
||||
expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull();
|
||||
expect(screen.queryByTestId('createZendeskTicketsNo')).toBeNull();
|
||||
});
|
||||
|
||||
it('Hides unsupported fields when lti provider is selected', async () => {
|
||||
await waitFor(() => {
|
||||
screen.getByDisplayValue('mockproc');
|
||||
});
|
||||
const selectElement = screen.getByDisplayValue('mockproc');
|
||||
await act(async () => {
|
||||
fireEvent.change(selectElement, { target: { value: 'test_lti' } });
|
||||
});
|
||||
expect(screen.queryByTestId('escalationEmail')).toBeNull();
|
||||
expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull();
|
||||
expect(screen.queryByTestId('createZendeskTicketsNo')).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Validation with invalid escalation email', () => {
|
||||
beforeEach(async () => {
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: false,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
||||
|
||||
axiosMock.onGet(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, {
|
||||
@@ -399,83 +422,131 @@ describe('ProctoredExamSettings', () => {
|
||||
course_start_date: '2013-01-01T00:00:00Z',
|
||||
};
|
||||
|
||||
function setup(data, isAdmin) {
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: isAdmin,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
||||
function mockCourseData(data) {
|
||||
axiosMock.onGet(StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId)).reply(200, data);
|
||||
}
|
||||
|
||||
it('Disables irrelevant proctoring provider fields when user is not an administrator and it is after start date', async () => {
|
||||
setup(mockGetPastCourseData, false);
|
||||
const isAdmin = false;
|
||||
setupApp(isAdmin);
|
||||
mockCourseData(mockGetPastCourseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const providerOption = screen.getByTestId('proctortrack');
|
||||
expect(providerOption.hasAttribute('disabled')).toEqual(true);
|
||||
});
|
||||
|
||||
it('Enables all proctoring provider options if user is not an administrator and it is before start date', async () => {
|
||||
setup(mockGetFutureCourseData, false);
|
||||
const isAdmin = false;
|
||||
setupApp(isAdmin);
|
||||
mockCourseData(mockGetFutureCourseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const providerOption = screen.getByTestId('proctortrack');
|
||||
expect(providerOption.hasAttribute('disabled')).toEqual(false);
|
||||
});
|
||||
|
||||
it('Enables all proctoring provider options if user administrator and it is after start date', async () => {
|
||||
setup(mockGetPastCourseData, true);
|
||||
const isAdmin = true;
|
||||
setupApp(isAdmin);
|
||||
mockCourseData(mockGetPastCourseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const providerOption = screen.getByTestId('proctortrack');
|
||||
expect(providerOption.hasAttribute('disabled')).toEqual(false);
|
||||
});
|
||||
|
||||
it('Enables all proctoring provider options if user administrator and it is before start date', async () => {
|
||||
setup(mockGetFutureCourseData, true);
|
||||
const isAdmin = true;
|
||||
setupApp(isAdmin);
|
||||
mockCourseData(mockGetFutureCourseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const providerOption = screen.getByTestId('proctortrack');
|
||||
expect(providerOption.hasAttribute('disabled')).toEqual(false);
|
||||
});
|
||||
|
||||
it('Does not include lti_external as a selectable option', async () => {
|
||||
const courseData = {
|
||||
...mockGetFutureCourseData,
|
||||
available_proctoring_providers: ['lti_external', 'proctortrack', 'mockproc'],
|
||||
};
|
||||
mockCourseData(courseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
await waitFor(() => {
|
||||
screen.getByDisplayValue('mockproc');
|
||||
});
|
||||
expect(screen.queryByTestId('lti_external')).toBeNull();
|
||||
});
|
||||
|
||||
it('Includes lti proctoring provider options when lti_external is allowed by studio', async () => {
|
||||
const courseData = {
|
||||
...mockGetFutureCourseData,
|
||||
available_proctoring_providers: ['lti_external', 'proctortrack', 'mockproc'],
|
||||
};
|
||||
mockCourseData(courseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
await waitFor(() => {
|
||||
screen.getByDisplayValue('mockproc');
|
||||
});
|
||||
const providerOption = screen.getByTestId('test_lti');
|
||||
// as as admin the provider should not be disabled
|
||||
expect(providerOption.hasAttribute('disabled')).toEqual(false);
|
||||
});
|
||||
|
||||
it('Does not include lti provider options when lti_external is not available in studio', async () => {
|
||||
const isAdmin = true;
|
||||
setupApp(isAdmin);
|
||||
mockCourseData(mockGetFutureCourseData);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
await waitFor(() => {
|
||||
screen.getByDisplayValue('mockproc');
|
||||
});
|
||||
|
||||
const providerOption = screen.queryByTestId('test_lti');
|
||||
expect(providerOption).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('Does not request lti provider options if there is no exam service url configuration', async () => {
|
||||
mergeConfig({
|
||||
EXAMS_BASE_URL: null,
|
||||
}, 'CourseAuthoringConfig');
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
await waitFor(() => {
|
||||
screen.getByDisplayValue('mockproc');
|
||||
});
|
||||
// only outgoing request should be for studio settings
|
||||
expect(axiosMock.history.get.length).toBe(1);
|
||||
expect(axiosMock.history.get[0].url.includes('proctored_exam_settings')).toEqual(true);
|
||||
});
|
||||
|
||||
it('Selected LTI proctoring provider is shown on page load', async () => {
|
||||
const courseData = { ...mockGetFutureCourseData };
|
||||
courseData.available_proctoring_providers = ['lti_external', 'proctortrack', 'mockproc'];
|
||||
courseData.proctored_exam_settings.proctoring_provider = 'lti_external';
|
||||
mockCourseData(courseData);
|
||||
axiosMock.onGet(
|
||||
`${ExamsApiService.getExamsBaseUrl()}/api/v1/configs/course_id/${defaultProps.courseId}`,
|
||||
).reply(200, {
|
||||
provider: 'test_lti',
|
||||
});
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
await waitFor(() => {
|
||||
screen.getByText('Proctoring provider');
|
||||
});
|
||||
|
||||
// make sure test_lti is the selected provider
|
||||
expect(screen.getByDisplayValue('LTI Provider')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Toggles field visibility based on user permissions', () => {
|
||||
function setup(isAdmin) {
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: isAdmin,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
||||
axiosMock.onGet(StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId)).reply(200, {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
proctoring_escalation_email: 'test@example.com',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc'],
|
||||
course_start_date: '2070-01-01T00:00:00Z',
|
||||
});
|
||||
}
|
||||
|
||||
it('Hides opting out and zendesk tickets for non edX staff', async () => {
|
||||
setup(false);
|
||||
setupApp(false);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
expect(screen.queryByTestId('allowOptingOutYes')).toBeNull();
|
||||
expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull();
|
||||
});
|
||||
|
||||
it('Shows opting out and zendesk tickets for edX staff', async () => {
|
||||
setup(true);
|
||||
setupApp(true);
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
expect(screen.queryByTestId('allowOptingOutYes')).not.toBeNull();
|
||||
expect(screen.queryByTestId('createZendeskTicketsYes')).not.toBeNull();
|
||||
@@ -483,18 +554,6 @@ describe('ProctoredExamSettings', () => {
|
||||
});
|
||||
|
||||
describe('Connection states', () => {
|
||||
beforeEach(() => {
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: true,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
||||
});
|
||||
|
||||
it('Shows the spinner before the connection is complete', async () => {
|
||||
await act(async () => {
|
||||
render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />));
|
||||
@@ -504,7 +563,7 @@ describe('ProctoredExamSettings', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('Show connection error message when we suffer server side error', async () => {
|
||||
it('Show connection error message when we suffer studio server side error', async () => {
|
||||
axiosMock.onGet(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(500);
|
||||
@@ -516,6 +575,18 @@ describe('ProctoredExamSettings', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('Show connection error message when we suffer edx-exams server side error', async () => {
|
||||
axiosMock.onGet(
|
||||
`${ExamsApiService.getExamsBaseUrl()}/api/v1/providers`,
|
||||
).reply(500);
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const connectionError = screen.getByTestId('connectionErrorAlert');
|
||||
expect(connectionError.textContent).toEqual(
|
||||
expect.stringContaining('We encountered a technical error when loading this page.'),
|
||||
);
|
||||
});
|
||||
|
||||
it('Show permission error message when user do not have enough permission', async () => {
|
||||
axiosMock.onGet(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
@@ -530,34 +601,16 @@ describe('ProctoredExamSettings', () => {
|
||||
});
|
||||
|
||||
describe('Save settings', () => {
|
||||
beforeEach(() => {
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 3,
|
||||
username: 'abc123',
|
||||
administrator: true,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient(), { onNoMatch: 'throwException' });
|
||||
axiosMock.onGet(StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId)).reply(200, {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
proctoring_escalation_email: 'test@example.com',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc'],
|
||||
});
|
||||
});
|
||||
|
||||
it('Disable button while submitting', async () => {
|
||||
beforeEach(async () => {
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, 'success');
|
||||
axiosMock.onPatch(
|
||||
`${ExamsApiService.getExamsBaseUrl()}/api/v1/configs/course_id/${defaultProps.courseId}`,
|
||||
).reply(200, 'success');
|
||||
});
|
||||
|
||||
it('Disable button while submitting', async () => {
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
let submitButton = screen.getByTestId('submissionButton');
|
||||
expect(screen.queryByTestId('saveInProgress')).toBeFalsy();
|
||||
@@ -570,10 +623,6 @@ describe('ProctoredExamSettings', () => {
|
||||
});
|
||||
|
||||
it('Makes API call successfully with proctoring_escalation_email if proctortrack', async () => {
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, 'success');
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
// Make a change to the provider to proctortrack and set the email
|
||||
const selectElement = screen.getByDisplayValue('mockproc');
|
||||
@@ -609,10 +658,6 @@ describe('ProctoredExamSettings', () => {
|
||||
});
|
||||
|
||||
it('Makes API call successfully without proctoring_escalation_email if not proctortrack', async () => {
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, 'success');
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
|
||||
// make sure we have not selected proctortrack as the proctoring provider
|
||||
@@ -639,7 +684,112 @@ describe('ProctoredExamSettings', () => {
|
||||
expect(document.activeElement).toEqual(errorAlert);
|
||||
});
|
||||
|
||||
it('Makes API call generated error', async () => {
|
||||
it('Successfully updates exam configuration and studio provider is set to "lti_external" for lti providers', async () => {
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
// Make a change to the provider to proctortrack and set the email
|
||||
const selectElement = screen.getByDisplayValue('mockproc');
|
||||
await act(async () => {
|
||||
fireEvent.change(selectElement, { target: { value: 'test_lti' } });
|
||||
});
|
||||
const submitButton = screen.getByTestId('submissionButton');
|
||||
await act(async () => {
|
||||
fireEvent.click(submitButton);
|
||||
});
|
||||
|
||||
// update exam service config
|
||||
expect(axiosMock.history.patch.length).toBe(1);
|
||||
expect(JSON.parse(axiosMock.history.patch[0].data)).toEqual({
|
||||
provider: 'test_lti',
|
||||
});
|
||||
|
||||
// update studio settings
|
||||
expect(axiosMock.history.post.length).toBe(1);
|
||||
expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'lti_external',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
});
|
||||
|
||||
const errorAlert = screen.getByTestId('saveSuccess');
|
||||
expect(errorAlert.textContent).toEqual(
|
||||
expect.stringContaining('Proctored exam settings saved successfully.'),
|
||||
);
|
||||
expect(document.activeElement).toEqual(errorAlert);
|
||||
});
|
||||
|
||||
it('Sets exam service provider to null if a non-lti provider is selected', async () => {
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const submitButton = screen.getByTestId('submissionButton');
|
||||
await act(async () => {
|
||||
fireEvent.click(submitButton);
|
||||
});
|
||||
// update exam service config
|
||||
expect(axiosMock.history.patch.length).toBe(1);
|
||||
expect(JSON.parse(axiosMock.history.patch[0].data)).toEqual({
|
||||
provider: null,
|
||||
});
|
||||
expect(axiosMock.history.patch.length).toBe(1);
|
||||
expect(axiosMock.history.post.length).toBe(1);
|
||||
expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
});
|
||||
|
||||
const errorAlert = screen.getByTestId('saveSuccess');
|
||||
expect(errorAlert.textContent).toEqual(
|
||||
expect.stringContaining('Proctored exam settings saved successfully.'),
|
||||
);
|
||||
expect(document.activeElement).toEqual(errorAlert);
|
||||
});
|
||||
|
||||
it('Does not update exam service if lti is not enabled in studio', async () => {
|
||||
axiosMock.onGet(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
proctoring_escalation_email: 'test@example.com',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc'],
|
||||
course_start_date: '2070-01-01T00:00:00Z',
|
||||
});
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const submitButton = screen.getByTestId('submissionButton');
|
||||
await act(async () => {
|
||||
fireEvent.click(submitButton);
|
||||
});
|
||||
// does not update exam service config
|
||||
expect(axiosMock.history.patch.length).toBe(0);
|
||||
// does update studio
|
||||
expect(axiosMock.history.post.length).toBe(1);
|
||||
expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
});
|
||||
|
||||
const errorAlert = screen.getByTestId('saveSuccess');
|
||||
expect(errorAlert.textContent).toEqual(
|
||||
expect.stringContaining('Proctored exam settings saved successfully.'),
|
||||
);
|
||||
expect(document.activeElement).toEqual(errorAlert);
|
||||
});
|
||||
|
||||
it('Makes studio API call generated error', async () => {
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(500);
|
||||
@@ -657,11 +807,29 @@ describe('ProctoredExamSettings', () => {
|
||||
expect(document.activeElement).toEqual(errorAlert);
|
||||
});
|
||||
|
||||
it('Makes exams API call generated error', async () => {
|
||||
axiosMock.onPatch(
|
||||
`${ExamsApiService.getExamsBaseUrl()}/api/v1/configs/course_id/${defaultProps.courseId}`,
|
||||
).reply(500, 'error');
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const submitButton = screen.getByTestId('submissionButton');
|
||||
await act(async () => {
|
||||
fireEvent.click(submitButton);
|
||||
});
|
||||
expect(axiosMock.history.post.length).toBe(1);
|
||||
const errorAlert = screen.getByTestId('saveError');
|
||||
expect(errorAlert.textContent).toEqual(
|
||||
expect.stringContaining('We encountered a technical error while trying to save proctored exam settings'),
|
||||
);
|
||||
expect(document.activeElement).toEqual(errorAlert);
|
||||
});
|
||||
|
||||
it('Manages focus correctly after different save statuses', async () => {
|
||||
// first make a call that will cause a save error
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).replyOnce(500);
|
||||
).reply(500);
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
const submitButton = screen.getByTestId('submissionButton');
|
||||
@@ -678,7 +846,7 @@ describe('ProctoredExamSettings', () => {
|
||||
// now make a call that will allow for a successful save
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).replyOnce(200, 'success');
|
||||
).reply(200, 'success');
|
||||
await act(async () => {
|
||||
fireEvent.click(submitButton);
|
||||
});
|
||||
@@ -693,28 +861,8 @@ describe('ProctoredExamSettings', () => {
|
||||
|
||||
it('Include Zendesk ticket in post request if user is not an admin', async () => {
|
||||
// use non-admin user for test
|
||||
initializeMockApp({
|
||||
authenticatedUser: {
|
||||
userId: 4,
|
||||
username: 'abc1234',
|
||||
administrator: false,
|
||||
roles: [],
|
||||
},
|
||||
});
|
||||
axiosMock = new MockAdapter(getAuthenticatedHttpClient(), { onNoMatch: 'throwException' });
|
||||
axiosMock.onGet(StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId)).reply(200, {
|
||||
proctored_exam_settings: {
|
||||
enable_proctored_exams: true,
|
||||
allow_proctoring_opt_out: false,
|
||||
proctoring_provider: 'mockproc',
|
||||
proctoring_escalation_email: 'test@example.com',
|
||||
create_zendesk_tickets: true,
|
||||
},
|
||||
available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc'],
|
||||
});
|
||||
axiosMock.onPost(
|
||||
StudioApiService.getProctoredExamSettingsUrl(defaultProps.courseId),
|
||||
).reply(200, 'success');
|
||||
const isAdmin = false;
|
||||
setupApp(isAdmin);
|
||||
|
||||
await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />)));
|
||||
// Make a change to the proctoring provider
|
||||
|
||||
@@ -519,14 +519,18 @@ function ProctoredExamSettings({ courseId, intl }) {
|
||||
// This option is not directly selectable.
|
||||
const proctoringProvidersStudio = settingsResponse.data.available_proctoring_providers;
|
||||
const proctoringProvidersLti = ltiProvidersResponse?.data || [];
|
||||
setAllowLtiProviders(proctoringProvidersStudio.includes('lti_external'));
|
||||
const enableLtiProviders = proctoringProvidersStudio.includes('lti_external');
|
||||
setAllowLtiProviders(enableLtiProviders);
|
||||
setLtiProctoringProviders(proctoringProvidersLti);
|
||||
// flatten provider objects and coalesce values to just the provider key
|
||||
setAvailableProctoringProviders(
|
||||
proctoringProvidersLti.reduce((result, provider) => [...result, provider.name], []).concat(
|
||||
proctoringProvidersStudio.filter(value => value !== 'lti_external'),
|
||||
),
|
||||
);
|
||||
let availableProviders = proctoringProvidersStudio.filter(value => value !== 'lti_external');
|
||||
if (enableLtiProviders) {
|
||||
availableProviders = proctoringProvidersLti.reduce(
|
||||
(result, provider) => [...result, provider.name], availableProviders,
|
||||
);
|
||||
}
|
||||
setAvailableProctoringProviders(availableProviders);
|
||||
|
||||
if (proctoredExamSettings.proctoring_provider === 'lti_external') {
|
||||
setProctoringProvider(examConfigResponse.data.provider);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user