Compare commits
68 Commits
mashal-m/r
...
frontend-b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9cceb1ef9 | ||
|
|
9921542f7e | ||
|
|
c31185acfd | ||
|
|
d5cdbb8047 | ||
|
|
941f27a2f4 | ||
|
|
5753412ede | ||
|
|
790de20613 | ||
|
|
6d67a807a4 | ||
|
|
490e3ea67e | ||
|
|
77c65b469f | ||
|
|
645a5447e7 | ||
|
|
0cfb9a5f85 | ||
|
|
90d011e45e | ||
|
|
cecfbf1830 | ||
|
|
46d59027b5 | ||
|
|
3b3384b6b5 | ||
|
|
4210e8a7f6 | ||
|
|
6d4c5e7702 | ||
|
|
dd3b128904 | ||
|
|
f720e0a849 | ||
|
|
8f7eb57dfd | ||
|
|
49da0175e8 | ||
|
|
6db15693d6 | ||
|
|
9859fa1a45 | ||
|
|
b2ebc800ad | ||
|
|
97eded4432 | ||
|
|
ae94cae1ef | ||
|
|
0448860bca | ||
|
|
d07312866b | ||
|
|
e458d6fb05 | ||
|
|
515307c923 | ||
|
|
e57cab41e5 | ||
|
|
957991d472 | ||
|
|
f72faa824c | ||
|
|
6d21cbb616 | ||
|
|
de445a97be | ||
|
|
570e843fd4 | ||
|
|
e803c818ab | ||
|
|
7a0483a896 | ||
|
|
201584a7ea | ||
|
|
c222bec9ec | ||
|
|
215662ba16 | ||
|
|
cf5e1a65bf | ||
|
|
e08dc1ddc3 | ||
|
|
3d2dd5006a | ||
|
|
694b1a75fc | ||
|
|
eff1ac0900 | ||
|
|
918463de91 | ||
|
|
a2d119aa43 | ||
|
|
ccb7865100 | ||
|
|
997d205ac6 | ||
|
|
13433e969f | ||
|
|
c21a81eb55 | ||
|
|
9675a6e9a9 | ||
|
|
d9a0a11936 | ||
|
|
13a19a274c | ||
|
|
f4edf956bb | ||
|
|
c3c328fddb | ||
|
|
75725c16f4 | ||
|
|
d59a4bf54d | ||
|
|
18cede45a6 | ||
|
|
c3823c39b0 | ||
|
|
ef8e20f2b3 | ||
|
|
d683e874b7 | ||
|
|
4e9270ab8e | ||
|
|
6450d8648b | ||
|
|
9c7c848df5 | ||
|
|
f1c9140c8e |
@@ -7,7 +7,6 @@ LOGOUT_URL='http://localhost:18000/login'
|
||||
LOGO_URL=https://edx-cdn.org/v3/default/logo.svg
|
||||
LOGO_TRADEMARK_URL=https://edx-cdn.org/v3/default/logo-trademark.svg
|
||||
LOGO_WHITE_URL=https://edx-cdn.org/v3/default/logo-white.svg
|
||||
LOGO_POWERED_BY_OPEN_EDX_URL_SVG=https://edx-cdn.org/v3/stage/open-edx-tag.svg
|
||||
FAVICON_URL=https://edx-cdn.org/v3/default/favicon.ico
|
||||
CSRF_TOKEN_API_PATH='/csrf/api/v1/token'
|
||||
REFRESH_ACCESS_TOKEN_ENDPOINT='http://localhost:18000/login_refresh'
|
||||
|
||||
7
.github/dependabot.yml
vendored
Normal file
7
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
version: 2
|
||||
updates:
|
||||
# Adding new check for github-actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
33
.github/renovate.json
vendored
Normal file
33
.github/renovate.json
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"config:base",
|
||||
"schedule:weekly",
|
||||
":automergeLinters",
|
||||
":automergeMinor",
|
||||
":automergeTesters",
|
||||
":enableVulnerabilityAlerts",
|
||||
":rebaseStalePrs",
|
||||
":semanticCommits",
|
||||
":updateNotScheduled"
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchDepTypes": [
|
||||
"devDependencies"
|
||||
],
|
||||
"matchUpdateTypes": [
|
||||
"lockFileMaintenance",
|
||||
"minor",
|
||||
"patch",
|
||||
"pin"
|
||||
],
|
||||
"automerge": true
|
||||
},
|
||||
{
|
||||
"matchPackagePatterns": ["@edx", "@openedx"],
|
||||
"matchUpdateTypes": ["minor", "patch"],
|
||||
"automerge": true
|
||||
}
|
||||
],
|
||||
"timezone": "America/New_York"
|
||||
}
|
||||
18
.github/workflows/ci.yml
vendored
18
.github/workflows/ci.yml
vendored
@@ -10,19 +10,16 @@ on:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Nodejs Env
|
||||
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Nodejs
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VER }}
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
@@ -43,11 +40,14 @@ jobs:
|
||||
run: npm run build
|
||||
|
||||
- name: Run Coverage
|
||||
uses: codecov/codecov-action@v2
|
||||
uses: codecov/codecov-action@v5
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
fail_ci_if_error: true
|
||||
|
||||
- name: Send failure notification
|
||||
if: ${{ failure() }}
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
uses: dawidd6/action-send-mail@v4
|
||||
with:
|
||||
server_address: email-smtp.us-east-1.amazonaws.com
|
||||
server_port: 465
|
||||
|
||||
2
.github/workflows/lockfileversion-check.yml
vendored
2
.github/workflows/lockfileversion-check.yml
vendored
@@ -10,4 +10,4 @@ on:
|
||||
|
||||
jobs:
|
||||
version-check:
|
||||
uses: openedx/.github/.github/workflows/lockfile-check.yml@master
|
||||
uses: openedx/.github/.github/workflows/lockfileversion-check-v3.yml@master
|
||||
|
||||
36
.github/workflows/npm-publish.yml
vendored
36
.github/workflows/npm-publish.yml
vendored
@@ -1,36 +0,0 @@
|
||||
name: Release CI
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '*'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Nodejs Env
|
||||
run: echo "NODE_VER=`cat .nvmrc`" >> $GITHUB_ENV
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ env.NODE_VER }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Create Build
|
||||
run: npm run build
|
||||
|
||||
- name: Release Package
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE_GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_NPM_TOKEN }}
|
||||
run: npm semantic-release
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -23,3 +23,5 @@ temp/babel-plugin-react-intl
|
||||
### transifex ###
|
||||
src/i18n/transifex_input.json
|
||||
temp
|
||||
|
||||
src/i18n/messages/
|
||||
27
.releaserc
27
.releaserc
@@ -1,27 +0,0 @@
|
||||
{
|
||||
"branch": "master",
|
||||
"tagFormat": "v${version}",
|
||||
"verifyConditions": [
|
||||
"@semantic-release/npm",
|
||||
{
|
||||
"path": "@semantic-release/github",
|
||||
"assets": {
|
||||
"path": "dist/*"
|
||||
}
|
||||
}
|
||||
],
|
||||
"analyzeCommits": "@semantic-release/commit-analyzer",
|
||||
"generateNotes": "@semantic-release/release-notes-generator",
|
||||
"prepare": "@semantic-release/npm",
|
||||
"publish": [
|
||||
"@semantic-release/npm",
|
||||
{
|
||||
"path": "@semantic-release/github",
|
||||
"assets": {
|
||||
"path": "dist/*"
|
||||
}
|
||||
}
|
||||
],
|
||||
"success": [],
|
||||
"fail": []
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[o:open-edx:p:edx-platform:r:frontend-app-gradebook]
|
||||
file_filter = src/i18n/messages/<lang>.json
|
||||
source_file = src/i18n/transifex_input.json
|
||||
source_lang = en
|
||||
type = KEYVALUEJSON
|
||||
|
||||
25
Makefile
25
Makefile
@@ -1,15 +1,11 @@
|
||||
npm-install-%: ## install specified % npm package
|
||||
npm ci $* --save-dev
|
||||
git add package.json
|
||||
export TRANSIFEX_RESOURCE = frontend-app-gradebook
|
||||
transifex_langs = "ar,de,es_419,fa_IR,fr,fr_CA,hi,it,pt,ru,uk,zh_CN"
|
||||
|
||||
intl_imports = ./node_modules/.bin/intl-imports.js
|
||||
transifex_utils = ./node_modules/.bin/transifex-utils.js
|
||||
i18n = ./src/i18n
|
||||
transifex_input = $(i18n)/transifex_input.json
|
||||
tx_url1 = https://www.transifex.com/api/2/project/edx-platform/resource/$(transifex_resource)/translation/en/strings/
|
||||
tx_url2 = https://www.transifex.com/api/2/project/edx-platform/resource/$(transifex_resource)/source/
|
||||
|
||||
# This directory must match .babelrc .
|
||||
transifex_temp = ./temp/babel-plugin-formatjs
|
||||
@@ -39,27 +35,7 @@ i18n.concat:
|
||||
|
||||
extract_translations: | requirements i18n.extract i18n.concat
|
||||
|
||||
# Despite the name, we actually need this target to detect changes in the incoming translated message files as well.
|
||||
detect_changed_source_translations:
|
||||
# Checking for changed translations...
|
||||
git diff --exit-code $(i18n)
|
||||
|
||||
# Pushes translations to Transifex. You must run make extract_translations first.
|
||||
push_translations:
|
||||
# Pushing strings to Transifex...
|
||||
tx push -s
|
||||
# Fetching hashes from Transifex...
|
||||
./node_modules/@edx/reactifex/bash_scripts/get_hashed_strings_v3.sh
|
||||
# Writing out comments to file...
|
||||
$(transifex_utils) $(transifex_temp) --comments --v3-scripts-path
|
||||
# Pushing comments to Transifex...
|
||||
./node_modules/@edx/reactifex/bash_scripts/put_comments_v3.sh
|
||||
|
||||
ifeq ($(OPENEDX_ATLAS_PULL),)
|
||||
# Pulls translations from Transifex.
|
||||
pull_translations:
|
||||
tx pull -t -f --mode reviewed --languages=$(transifex_langs)
|
||||
else
|
||||
# Experimental: OEP-58 Pulls translations using atlas
|
||||
pull_translations:
|
||||
rm -rf src/i18n/messages
|
||||
@@ -73,7 +49,6 @@ pull_translations:
|
||||
translations/frontend-app-gradebook/src/i18n/messages:frontend-app-gradebook
|
||||
|
||||
$(intl_imports) frontend-platform paragon frontend-component-header frontend-component-footer frontend-app-gradebook
|
||||
endif
|
||||
|
||||
# This target is used by CI.
|
||||
validate-no-uncommitted-package-lock-changes:
|
||||
|
||||
103
README.md
103
README.md
@@ -18,8 +18,8 @@ Jump to:
|
||||
|
||||
For existing documentation see:
|
||||
|
||||
- Basic Usage: [Review Learner Grades (read-the-docs)](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/student_progress/course_grades.html#review-learner-grades-on-the-instructor-dashboard)
|
||||
- Bulk Grade Management: [Override Learner Subsection Scores in Bulk (read-the-docs)](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/student_progress/course_grades.html#override-learner-subsection-scores-in-bulk)
|
||||
- Basic Usage: [Review Learner Grades (read-the-docs)](https://docs.openedx.org/en/latest/educators/how-tos/data/view_learner_grades.html)
|
||||
- Bulk Grade Management: [Override Learner Subsection Scores in Bulk (read-the-docs)](https://docs.openedx.org/en/latest/educators/how-tos/data/manage_learner_grades.html#override-learner-subsection-scores-in-bulk)
|
||||
|
||||
## Should I use Gradebook in my course?
|
||||
|
||||
@@ -58,62 +58,67 @@ To install gradebook into your project:
|
||||
```
|
||||
npm i --save @edx/frontend-app-gradebook
|
||||
```
|
||||
|
||||
Cloning and Startup
|
||||
===================
|
||||
|
||||
1. Clone your new repo:
|
||||
|
||||
``git clone https://github.com/openedx/frontend-app-gradebook.git``
|
||||
``git clone https://github.com/openedx/frontend-app-gradebook.git``
|
||||
|
||||
2. Install npm dependencies:
|
||||
2. Use the version of Node specified in ``.nvmrc``
|
||||
|
||||
``cd frontend-app-gradebook && npm install``
|
||||
3. Stop the Tutor devstack, if it's running:
|
||||
|
||||
3. Start the dev server:
|
||||
``tutor dev stop``
|
||||
|
||||
``npm start``
|
||||
4. Next, we need to tell Tutor that we're going to be running this repo in development mode, and it should be excluded from the mfe container that otherwise runs every MFE. Run this:
|
||||
|
||||
``tutor mounts add /path/to/frontend-app-gradebook``
|
||||
|
||||
5. Start Tutor in development mode. This command will start the LMS and Studio,
|
||||
and other required MFEs like ``authn`` and ``account``, but will not start the
|
||||
Gradebook MFE, which we're going to run on the host instead of in a container
|
||||
managed by Tutor. Run:
|
||||
|
||||
``tutor dev start lms cms mfe``
|
||||
|
||||
## Startup
|
||||
|
||||
1. Install npm dependencies:
|
||||
|
||||
``cd frontend-app-gradebook && npm install``
|
||||
|
||||
2. Start the dev server:
|
||||
|
||||
``npm run dev``
|
||||
|
||||
## Running the UI Standalone
|
||||
|
||||
To install the project please refer to the [`edX Developer Stack`](https://github.com/openedx/devstack) instructions.
|
||||
To install the project please refer to the [`MFE Development on Tutor`](https://github.com/overhangio/tutor-mfe?tab=readme-ov-file#mfe-development) instructions.
|
||||
|
||||
The web application runs on port **1994**, so when you go to `http://localhost:1994/course-v1:edX+DemoX+Demo_Course` you should see the UI (assuming you have such a Demo Course in your devstack). Note that you always have to provide a course id to actually see a gradebook.
|
||||
When not mounted, gradebook will run in the shared MFE container at http://apps.local.openedx.io/gradebook/course-v1:edX+DemoX+Demo_Course.
|
||||
|
||||
If you don't, you can see the log messages for the docker container by executing `make gradebook-logs` in the `devstack` directory.
|
||||
When mounted in the tutor ``gradebook`` container, or when running a local (host) webpack dev server, the web application runs on port **1994**, so when you go to `http://apps.local.openedx.io:1994/gradebook/course-v1:edX+DemoX+Demo_Course` you should see the UI (assuming you have such a Demo Course in your devstack). Note that you always have to provide a course id to actually see a gradebook.
|
||||
|
||||
(Note: This may not work in Tutor; these instructions are for the deprecated Devstack) You can see the log messages for the docker container by executing `make gradebook-logs` in the `devstack` directory.
|
||||
|
||||
Note that starting the container executes the `npm run start` script which will hot-reload JavaScript and Sass files changes, so you should (:crossed_fingers:) not need to do anything (other than wait) when making changes.
|
||||
|
||||
## Configuring for local use in edx-platform
|
||||
## Plugins
|
||||
This MFE can be customized using [Frontend Plugin Framework](https://github.com/openedx/frontend-plugin-framework).
|
||||
|
||||
Assuming you've got the UI running at `http://localhost:1994`, you can configure the LMS in edx-platform
|
||||
to point to your local gradebook from the instructor dashboard by putting this setting in `lms/env/private.py`:
|
||||
```
|
||||
WRITABLE_GRADEBOOK_URL = 'http://localhost:1994'
|
||||
```
|
||||
|
||||
There are also several edx-platform waffle and feature flags you'll have to enable from the Django admin:
|
||||
|
||||
1. Grades > Persistent grades enabled flag. Add this flag if it doesn't exist,
|
||||
check the ``enabled`` and ``enabled for all courses`` boxes.
|
||||
|
||||
2. Waffle > Switches. Add the ``grades.assume_zero_grade_if_absent`` switch and make it active.
|
||||
|
||||
3. Waffle_utils > Waffle flag course overrides. Activate waffle flags for courses where you want to enable Gradebook functionality:
|
||||
- Enable Gradebook by adding the ``grades.writable_gradebook`` add checking the ``enabled`` box.
|
||||
- Enable Bulk Grade Management by adding the ``grades.bulk_management`` flag and checking the ``enabled`` box.
|
||||
|
||||
Alternatively, you could add these as regular waffle flags to enable the functionality for all courses.
|
||||
|
||||
**NOTE:** IF the above flags are not configured correctly, the gradebook may appear to work, but will return bogus
|
||||
numbers for grades. If your gradebook isn't accepting your changes, or the changes aren't resulting in sane,
|
||||
recalculated grade values, verify you've set all flags correctly.
|
||||
The parts of this MFE that can be customized in that manner are documented [here](/src/plugin-slots).
|
||||
|
||||
## Running tests
|
||||
|
||||
1. Assuming that you're operating in the context of the edX devstack,
|
||||
run `gradebook-shell` from your devstack directory. This will start a bash shell inside your
|
||||
running gradebook container.
|
||||
2. Run `make test` (which executes `npm run test`). This will run all of the gradebook tests.
|
||||
Run:
|
||||
|
||||
``nvm use``
|
||||
|
||||
``npm ci``
|
||||
|
||||
``npm test``
|
||||
|
||||
## Directory Structure
|
||||
|
||||
@@ -146,9 +151,7 @@ noted.
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contributions are very welcome. Please read `How To Contribute`_ for details.
|
||||
|
||||
.. _How To Contribute: https://openedx.org/r/how-to-contribute
|
||||
Contributions are very welcome. Please read [How To Contribute](https://docs.openedx.org/en/latest/developers/references/developer_guide/process/index.html) for details.
|
||||
|
||||
This project is currently accepting all types of contributions, bug fixes,
|
||||
security fixes, maintenance work, or new features. However, please make sure
|
||||
@@ -163,29 +166,23 @@ Getting Help
|
||||
If you're having trouble, we have discussion forums at
|
||||
https://discuss.openedx.org where you can connect with others in the community.
|
||||
|
||||
Our real-time conversations are on Slack. You can request a `Slack
|
||||
invitation`_, then join our `community Slack workspace`_. Because this is a
|
||||
frontend repository, the best place to discuss it would be in the `#wg-frontend
|
||||
channel`_.
|
||||
Our real-time conversations are on Slack. You can request a [Slack
|
||||
invitation](https://openedx.org/slack), then join our
|
||||
[community Slack workspace](https://openedx.slack.com/) Because this is a
|
||||
frontend repository, the best place to discuss it would be in the
|
||||
[#wg-frontend channel](https://openedx.slack.com/archives/C04BM6YC7A6).
|
||||
|
||||
For anything non-trivial, the best path is to open an issue in this repository
|
||||
with as many details about the issue you are facing as you can provide.
|
||||
|
||||
https://github.com/openedx/frontend-app-gradebook/issues
|
||||
|
||||
For more information about these options, see the `Getting Help`_ page.
|
||||
|
||||
.. _Slack invitation: https://openedx.org/slack
|
||||
.. _community Slack workspace: https://openedx.slack.com/
|
||||
.. _#wg-frontend channel: https://openedx.slack.com/archives/C04BM6YC7A6
|
||||
.. _Getting Help: https://openedx.org/community/connect
|
||||
For more information about these options, see the [Getting Help](https://openedx.org/community/connect) page.
|
||||
|
||||
The Open edX Code of Conduct
|
||||
============================
|
||||
|
||||
All community members are expected to follow the `Open edX Code of Conduct`_.
|
||||
|
||||
.. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/
|
||||
All community members are expected to follow the [Open edX Code of Conduct](https://openedx.org/code-of-conduct/).
|
||||
|
||||
Reporting Security Issues
|
||||
=========================
|
||||
|
||||
14
catalog-info.yaml
Normal file
14
catalog-info.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
# This file records information about this repo. Its use is described in OEP-55:
|
||||
# https://open-edx-proposals.readthedocs.io/en/latest/processes/oep-0055-proc-project-maintainers.html
|
||||
apiVersion: backstage.io/v1alpha1
|
||||
kind: Component
|
||||
metadata:
|
||||
name: "frontend-app-gradebook"
|
||||
description: "The frontend (MFE) for Open edX Gradebook"
|
||||
annotations:
|
||||
openedx.org/arch-interest-groups: ""
|
||||
openedx.org/release: "master"
|
||||
spec:
|
||||
owner: user:farhaanbukhsh
|
||||
type: 'website'
|
||||
lifecycle: 'experimental'
|
||||
@@ -4,15 +4,15 @@ Instructions for setting up environments and data for testing Gradebook.
|
||||
|
||||
## Set up a course with graded content
|
||||
|
||||
A course with graded content is the first prerequisite to testing. Use an existing course (e.g. the DemoX Demonstration Course in Devstack) or see [Building and Running an edX Course > Developing Your Course](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/developing_course/index.html) for notes on how to develop a course from scratch.
|
||||
A course with graded content is the first prerequisite to testing. Use an existing course (e.g. the DemoX Demonstration Course in Devstack) or see [Building and Running an edX Course > Developing Your Course](https://docs.openedx.org/en/latest/educators/quickstarts/build_a_course.html) for notes on how to develop a course from scratch.
|
||||
|
||||
Notably, the course needs a grading policy and subsections with scoreable content.
|
||||
After creating subsections with content, they need to be configured with an "Assignment Type" to be included in grading.
|
||||
|
||||
Suggested resources:
|
||||
- [Establishing a Grading Policy For Your Course](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/grading/index.html)
|
||||
- [Adding Exercises and Tools](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/grading/index.html)
|
||||
- [Set the Assignment Type and Due Date for a Subsection](https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/developing_course/course_subsections.html#set-the-assignment-type-and-due-date-for-a-subsection)
|
||||
- [Establishing a Grading Policy For Your Course](https://docs.openedx.org/en/latest/educators/how-tos/data/manage_learner_grades.html#review-how-grading-is-configured-for-your-course)
|
||||
- [Adding Exercises and Tools](https://docs.openedx.org/en/latest/educators/concepts/exercise_tools/about_problems_exercises_tools.html)
|
||||
- [Set the Assignment Type and Due Date for a Subsection](https://docs.openedx.org/en/latest/educators/how-tos/course_development/set_subsection_problem_date.html#set-the-assignment-type-and-due-date-for-a-subsection)
|
||||
|
||||
## Enable Gradebook for course
|
||||
|
||||
@@ -35,7 +35,7 @@ Bulk Management is an added feature to allow modifying grades in bulk via CSV up
|
||||
|
||||
## Create a Master's track for testing Master's-only features
|
||||
|
||||
[source](https://openedx.atlassian.net/wiki/spaces/MS/pages/1453818012/Add+a+learner+into+a+master+s+track)
|
||||
[source - note: possibly outdated, edx.org-specific](https://openedx.atlassian.net/wiki/spaces/MS/pages/1453818012/Add+a+learner+into+a+master+s+track)
|
||||
|
||||
Add a Master's track in your course:
|
||||
- As an admin user, go to Django Admin (`{lms-url}/admin`) > Course Modes and add a new course mode
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
# This file describes this Open edX repo, as described in OEP-2:
|
||||
# http://open-edx-proposals.readthedocs.io/en/latest/oeps/oep-0002.html#specification
|
||||
|
||||
tags:
|
||||
- frontend-app
|
||||
- masters
|
||||
oeps:
|
||||
oep-2: true # Repository metadata
|
||||
openedx-release: {ref: master}
|
||||
20966
package-lock.json
generated
20966
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
@@ -15,6 +15,7 @@
|
||||
"prepush": "npm run lint",
|
||||
"semantic-release": "semantic-release",
|
||||
"start": "fedx-scripts webpack-dev-server --progress",
|
||||
"dev": "PUBLIC_PATH=/gradebook/ MFE_CONFIG_API_URL='http://localhost:8000/api/mfe_config/v1' fedx-scripts webpack-dev-server --progress --host apps.local.openedx.io",
|
||||
"test": "TZ=GMT fedx-scripts jest --coverage --passWithNoTests",
|
||||
"watch-tests": "jest --watch"
|
||||
},
|
||||
@@ -29,17 +30,18 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@edx/brand": "npm:@openedx/brand-openedx@^1.2.2",
|
||||
"@edx/frontend-component-footer": "13.0.2",
|
||||
"@edx/frontend-component-header": "5.0.2",
|
||||
"@edx/frontend-platform": "7.1.0",
|
||||
"@edx/frontend-component-footer": "^14.6.0",
|
||||
"@edx/frontend-component-header": "^6.4.0",
|
||||
"@edx/frontend-platform": "^8.3.7",
|
||||
"@edx/openedx-atlas": "^0.6.0",
|
||||
"@openedx/paragon": "21.11.3",
|
||||
"@edx/react-unit-test-utils": "2.0.0",
|
||||
"@edx/react-unit-test-utils": "^4.0.0",
|
||||
"@edx/reactifex": "^2.1.1",
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.25",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.11.2",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.11.2",
|
||||
"@fortawesome/react-fontawesome": "^0.1.5",
|
||||
"@openedx/frontend-plugin-framework": "^1.6.0",
|
||||
"@openedx/paragon": "^22.16.0",
|
||||
"@redux-beacon/segment": "^1.0.0",
|
||||
"@reduxjs/toolkit": "^1.5.1",
|
||||
"classnames": "^2.2.6",
|
||||
@@ -49,8 +51,8 @@
|
||||
"history": "4.10.1",
|
||||
"prop-types": "15.8.1",
|
||||
"query-string": "6.13.0",
|
||||
"react": "17.0.2",
|
||||
"react-dom": "17.0.2",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-redux": "^7.2.9",
|
||||
"react-router": "6.15.0",
|
||||
@@ -67,19 +69,15 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@edx/browserslist-config": "^1.1.1",
|
||||
"@openedx/frontend-build": "13.0.28",
|
||||
"@testing-library/react": "12.1.5",
|
||||
"axios": "0.21.2",
|
||||
"axios-mock-adapter": "^1.17.0",
|
||||
"@openedx/frontend-build": "^14.3.3",
|
||||
"@testing-library/react": "^16.2.0",
|
||||
"es-check": "^2.3.0",
|
||||
"fetch-mock": "^6.5.2",
|
||||
"husky": "2.7.0",
|
||||
"fetch-mock": "^12.2.0",
|
||||
"identity-obj-proxy": "^3.0.0",
|
||||
"jest": "^26.6.3",
|
||||
"jest": "^29.7.0",
|
||||
"react-dev-utils": "^12.0.1",
|
||||
"react-test-renderer": "17.0.2",
|
||||
"react-test-renderer": "^18.3.1",
|
||||
"reactifex": "1.1.1",
|
||||
"redux-mock-store": "^1.5.3",
|
||||
"semantic-release": "^19.0.3"
|
||||
"redux-mock-store": "^1.5.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Route, Routes } from 'react-router-dom';
|
||||
|
||||
import { AppProvider } from '@edx/frontend-platform/react';
|
||||
|
||||
import Footer from '@edx/frontend-component-footer';
|
||||
import { FooterSlot } from '@edx/frontend-component-footer';
|
||||
import Header from '@edx/frontend-component-header';
|
||||
|
||||
import store from 'data/store';
|
||||
@@ -24,7 +24,7 @@ const App = () => (
|
||||
/>
|
||||
</Routes>
|
||||
</main>
|
||||
<Footer logo={process.env.LOGO_POWERED_BY_OPEN_EDX_URL_SVG} />
|
||||
<FooterSlot />
|
||||
</div>
|
||||
</AppProvider>
|
||||
);
|
||||
|
||||
@@ -3,8 +3,6 @@ import { shallow } from '@edx/react-unit-test-utils';
|
||||
|
||||
import { Route } from 'react-router-dom';
|
||||
|
||||
import Footer from '@edx/frontend-component-footer';
|
||||
|
||||
import store from 'data/store';
|
||||
import GradebookPage from 'containers/GradebookPage';
|
||||
|
||||
@@ -18,13 +16,12 @@ jest.mock('react-router-dom', () => ({
|
||||
jest.mock('@edx/frontend-platform/react', () => ({
|
||||
AppProvider: () => 'AppProvider',
|
||||
}));
|
||||
jest.mock('@edx/frontend-component-footer', () => 'Footer');
|
||||
jest.mock('@edx/frontend-component-footer', () => ({ FooterSlot: 'FooterSlot' }));
|
||||
jest.mock('data/store', () => 'testStore');
|
||||
jest.mock('containers/GradebookPage', () => 'GradebookPage');
|
||||
jest.mock('@edx/frontend-component-header', () => 'Header');
|
||||
jest.mock('./head/Head', () => 'Head');
|
||||
|
||||
const logo = 'fakeLogo.png';
|
||||
let el;
|
||||
let secondChild;
|
||||
|
||||
@@ -34,7 +31,6 @@ describe('App router component', () => {
|
||||
});
|
||||
describe('component', () => {
|
||||
beforeEach(() => {
|
||||
process.env.LOGO_POWERED_BY_OPEN_EDX_URL_SVG = logo;
|
||||
el = shallow(<App />);
|
||||
secondChild = el.instance.children;
|
||||
});
|
||||
@@ -63,8 +59,5 @@ describe('App router component', () => {
|
||||
expect(secondChild[1].findByType(Route)[0].props.element.type).toEqual(GradebookPage);
|
||||
});
|
||||
});
|
||||
test('Footer logo drawn from env variable', () => {
|
||||
expect(secondChild[1].findByType(Footer)[0].props.logo).toEqual(logo);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -15,7 +15,7 @@ exports[`App router component snapshot 1`] = `
|
||||
/>
|
||||
</Routes>
|
||||
</main>
|
||||
<Footer />
|
||||
<FooterSlot />
|
||||
</div>
|
||||
</AppProvider>
|
||||
`;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`HistoryTable component snapshot history table data (from bulkManagementHistory.map(this.formatHistoryRow) snapshot: maps resultsSummay to ResultsSummary, wraps filename and user, forwards the rest 1`] = `
|
||||
Array [
|
||||
Object {
|
||||
[
|
||||
{
|
||||
"filename": <span
|
||||
className="wrap-text-in-cell"
|
||||
>
|
||||
@@ -20,7 +20,7 @@ Array [
|
||||
Eifel
|
||||
</span>,
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"filename": <span
|
||||
className="wrap-text-in-cell"
|
||||
>
|
||||
@@ -45,26 +45,26 @@ exports[`HistoryTable component snapshot snapshot - loads formatted table 1`] =
|
||||
<DataTable
|
||||
className="table-striped"
|
||||
columns={
|
||||
Array [
|
||||
Object {
|
||||
[
|
||||
{
|
||||
"Header": "Gradebook",
|
||||
"accessor": "filename",
|
||||
"columnSortable": false,
|
||||
"width": "col-5",
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"Header": "Download Summary",
|
||||
"accessor": "resultsSummary",
|
||||
"columnSortable": false,
|
||||
"width": "col",
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"Header": "Who",
|
||||
"accessor": "user",
|
||||
"columnSortable": false,
|
||||
"width": "col-1",
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"Header": "When",
|
||||
"accessor": "timeUploaded",
|
||||
"columnSortable": false,
|
||||
@@ -73,8 +73,8 @@ exports[`HistoryTable component snapshot snapshot - loads formatted table 1`] =
|
||||
]
|
||||
}
|
||||
data={
|
||||
Array [
|
||||
Object {
|
||||
[
|
||||
{
|
||||
"filename": <span
|
||||
className="wrap-text-in-cell"
|
||||
>
|
||||
@@ -92,7 +92,7 @@ exports[`HistoryTable component snapshot snapshot - loads formatted table 1`] =
|
||||
Eifel
|
||||
</span>,
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"filename": <span
|
||||
className="wrap-text-in-cell"
|
||||
>
|
||||
|
||||
@@ -4,8 +4,8 @@ exports[`ResultsSummary component snapshot - safe hyperlink with bulkGradesUrl w
|
||||
<Hyperlink
|
||||
destination="www.edx.org"
|
||||
href={
|
||||
Object {
|
||||
"url": Object {
|
||||
{
|
||||
"url": {
|
||||
"rowId": 42,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ exports[`AssignmentFilter component render snapshot 1`] = `
|
||||
label="Assignment"
|
||||
onChange={[MockFunction]}
|
||||
options={
|
||||
Array [
|
||||
[
|
||||
<option
|
||||
value=""
|
||||
>
|
||||
|
||||
@@ -10,7 +10,7 @@ exports[`AssignmentFilterType component render snapshot 1`] = `
|
||||
label="Assignment Types"
|
||||
onChange={[MockFunction]}
|
||||
options={
|
||||
Array [
|
||||
[
|
||||
<option
|
||||
value=""
|
||||
>
|
||||
|
||||
@@ -7,7 +7,7 @@ exports[`StudentGroupsFilter component render snapshot 1`] = `
|
||||
label="Tracks"
|
||||
onChange={[MockFunction]}
|
||||
options={
|
||||
Array [
|
||||
[
|
||||
<option
|
||||
value="Track-All"
|
||||
>
|
||||
@@ -43,7 +43,7 @@ exports[`StudentGroupsFilter component render snapshot 1`] = `
|
||||
label="Cohorts"
|
||||
onChange={[MockFunction]}
|
||||
options={
|
||||
Array [
|
||||
[
|
||||
<option
|
||||
value="Cohort-All"
|
||||
>
|
||||
|
||||
@@ -21,7 +21,9 @@ exports[`GradebookHeader component render default view shapshot 1`] = `
|
||||
<div
|
||||
className="subtitle-row d-flex justify-content-between align-items-center"
|
||||
>
|
||||
<h2>
|
||||
<h2
|
||||
className="text-break"
|
||||
>
|
||||
test-course-id
|
||||
</h2>
|
||||
</div>
|
||||
@@ -49,7 +51,9 @@ exports[`GradebookHeader component render frozen grades snapshot: show frozen wa
|
||||
<div
|
||||
className="subtitle-row d-flex justify-content-between align-items-center"
|
||||
>
|
||||
<h2>
|
||||
<h2
|
||||
className="text-break"
|
||||
>
|
||||
test-course-id
|
||||
</h2>
|
||||
</div>
|
||||
@@ -83,7 +87,9 @@ exports[`GradebookHeader component render show bulk management snapshot: show to
|
||||
<div
|
||||
className="subtitle-row d-flex justify-content-between align-items-center"
|
||||
>
|
||||
<h2>
|
||||
<h2
|
||||
className="text-break"
|
||||
>
|
||||
test-course-id
|
||||
</h2>
|
||||
<Button
|
||||
@@ -117,7 +123,9 @@ exports[`GradebookHeader component render user cannot view gradebook snapshot: s
|
||||
<div
|
||||
className="subtitle-row d-flex justify-content-between align-items-center"
|
||||
>
|
||||
<h2>
|
||||
<h2
|
||||
className="text-break"
|
||||
>
|
||||
test-course-id
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@ export const GradebookHeader = () => {
|
||||
</a>
|
||||
<h1>{formatMessage(messages.gradebook)}</h1>
|
||||
<div className="subtitle-row d-flex justify-content-between align-items-center">
|
||||
<h2>{courseId}</h2>
|
||||
<h2 className="text-break">{courseId}</h2>
|
||||
{showBulkManagement && (
|
||||
<Button variant="tertiary" onClick={handleToggleViewClick}>
|
||||
{formatMessage(toggleViewMessage)}
|
||||
|
||||
@@ -6,7 +6,7 @@ exports[`BulkManagementControls render snapshot - show - network and import butt
|
||||
>
|
||||
<NetworkButton
|
||||
label={
|
||||
Object {
|
||||
{
|
||||
"defaultMessage": "Download Grades",
|
||||
"description": "A labeled button that allows an admin user to download course grades all at once (in bulk).",
|
||||
"id": "gradebook.GradesView.BulkManagementControls.bulkManagementLabel",
|
||||
|
||||
@@ -22,7 +22,7 @@ export const HistoryKeys = StrictDict({
|
||||
*/
|
||||
export const ModalHeaders = () => {
|
||||
const { assignmentName, updateUserName } = selectors.app.useModalData();
|
||||
const { currentGrade, originalGrade } = selectors.grades.useGradeData();
|
||||
const { gradeOverrideCurrentEarnedGradedOverride, gradeOriginalEarnedGraded } = selectors.grades.useGradeData();
|
||||
const { formatMessage } = useIntl();
|
||||
return (
|
||||
<div>
|
||||
@@ -39,12 +39,12 @@ export const ModalHeaders = () => {
|
||||
<HistoryHeader
|
||||
id={HistoryKeys.originalGrade}
|
||||
label={formatMessage(messages.originalGradeHeader)}
|
||||
value={originalGrade}
|
||||
value={gradeOriginalEarnedGraded}
|
||||
/>
|
||||
<HistoryHeader
|
||||
id={HistoryKeys.currentGrade}
|
||||
label={formatMessage(messages.currentGradeHeader)}
|
||||
value={currentGrade}
|
||||
value={gradeOverrideCurrentEarnedGradedOverride}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -25,8 +25,8 @@ const modalData = {
|
||||
};
|
||||
selectors.app.useModalData.mockReturnValue(modalData);
|
||||
const gradeData = {
|
||||
currentGrade: 'test-current-grade',
|
||||
originalGrade: 'test-original-grade',
|
||||
gradeOverrideCurrentEarnedGradedOverride: 'test-current-grade',
|
||||
gradeOriginalEarnedGraded: 'test-original-grade',
|
||||
};
|
||||
selectors.grades.useGradeData.mockReturnValue(gradeData);
|
||||
|
||||
@@ -70,7 +70,7 @@ describe('ModalHeaders', () => {
|
||||
expect(headerProps).toMatchObject({
|
||||
id: HistoryKeys.originalGrade,
|
||||
label: formatMessage(messages.originalGradeHeader),
|
||||
value: gradeData.originalGrade,
|
||||
value: gradeData.gradeOriginalEarnedGraded,
|
||||
});
|
||||
});
|
||||
test('currentGrade header', () => {
|
||||
@@ -78,7 +78,7 @@ describe('ModalHeaders', () => {
|
||||
expect(headerProps).toMatchObject({
|
||||
id: HistoryKeys.currentGrade,
|
||||
label: formatMessage(messages.currentGradeHeader),
|
||||
value: gradeData.currentGrade,
|
||||
value: gradeData.gradeOverrideCurrentEarnedGradedOverride,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -4,22 +4,22 @@ exports[`OverrideTable component render snapshot 1`] = `
|
||||
<DataTable
|
||||
columns="test-columns"
|
||||
data={
|
||||
Array [
|
||||
Object {
|
||||
[
|
||||
{
|
||||
"test": "data",
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"andOther": "test-data",
|
||||
},
|
||||
Object {
|
||||
{
|
||||
"adjustedGrade": <AdjustedGradeInput />,
|
||||
"date": Object {
|
||||
"date": {
|
||||
"formatted": 2000-01-01T00:00:00.000Z,
|
||||
},
|
||||
"reason": <ReasonInput />,
|
||||
},
|
||||
]
|
||||
}
|
||||
itemCount={2}
|
||||
itemCount={3}
|
||||
/>
|
||||
`;
|
||||
|
||||
@@ -9,7 +9,7 @@ const useOverrideTableData = () => {
|
||||
const { formatMessage } = useIntl();
|
||||
|
||||
const hide = selectors.grades.useHasOverrideErrors();
|
||||
const gradeOverrides = selectors.grades.useGradeData().gradeOverrideHistoryResults;
|
||||
const gradeOverrides = selectors.grades.useGradeData().gradeOverrideHistoryResults || [];
|
||||
const tableProps = {};
|
||||
if (!hide) {
|
||||
tableProps.columns = [
|
||||
|
||||
@@ -20,18 +20,20 @@ export const OverrideTable = () => {
|
||||
|
||||
if (hide) { return null; }
|
||||
|
||||
const tableData = [
|
||||
...data,
|
||||
{
|
||||
adjustedGrade: <AdjustedGradeInput />,
|
||||
date: formatDateForDisplay(new Date()),
|
||||
reason: <ReasonInput />,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<DataTable
|
||||
columns={columns}
|
||||
data={[
|
||||
...data,
|
||||
{
|
||||
adjustedGrade: <AdjustedGradeInput />,
|
||||
date: formatDateForDisplay(new Date()),
|
||||
reason: <ReasonInput />,
|
||||
},
|
||||
]}
|
||||
itemCount={data.length}
|
||||
data={tableData}
|
||||
itemCount={tableData.length}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -19,8 +19,8 @@ exports[`FilterBadge render do not hide value snapshot 1`] = `
|
||||
aria-label="close"
|
||||
className="btn-info"
|
||||
onClick={
|
||||
Object {
|
||||
"handleClose": Array [
|
||||
{
|
||||
"handleClose": [
|
||||
"some",
|
||||
"filters",
|
||||
],
|
||||
@@ -55,8 +55,8 @@ exports[`FilterBadge render hide Value snapshot 1`] = `
|
||||
aria-label="close"
|
||||
className="btn-info"
|
||||
onClick={
|
||||
Object {
|
||||
"handleClose": Array [
|
||||
{
|
||||
"handleClose": [
|
||||
"some",
|
||||
"filters",
|
||||
],
|
||||
|
||||
@@ -7,6 +7,7 @@ exports[`FilterMenuToggle component render snapshot 1`] = `
|
||||
onClick={[MockFunction hooks.toggleFilterMenu]}
|
||||
>
|
||||
<Icon
|
||||
className="mr-1"
|
||||
src="FilterAlt"
|
||||
/>
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ export const FilterMenuToggle = () => {
|
||||
className="btn-primary align-self-start"
|
||||
onClick={toggleFilterMenu}
|
||||
>
|
||||
<Icon src={FilterAlt} /> {formatMessage(messages.editFilters)}
|
||||
<Icon src={FilterAlt} className="mr-1" /> {formatMessage(messages.editFilters)}
|
||||
</Button>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
exports[`FilteredUsersLabel component render snapshot 1`] = `
|
||||
<format-message-function
|
||||
message={
|
||||
Object {
|
||||
{
|
||||
"defaultMessage": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"description": "Users visibility label",
|
||||
"id": "gradebook.GradesTab.usersVisibilityLabel",
|
||||
}
|
||||
}
|
||||
values={
|
||||
Object {
|
||||
{
|
||||
"filteredUsers": <BoldText
|
||||
text={100}
|
||||
/>,
|
||||
|
||||
@@ -28,32 +28,32 @@ exports[`Gradebook Table Fields Username with external_user_key snapshot 1`] = `
|
||||
`;
|
||||
|
||||
exports[`Gradebook Table Fields Username with external_user_key wraps external user key and username 1`] = `
|
||||
Object {
|
||||
"children": Array [
|
||||
Object {
|
||||
"children": Array [
|
||||
Object {
|
||||
"children": Array [
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [
|
||||
"MyNameFromHere",
|
||||
],
|
||||
"props": Object {},
|
||||
"props": {},
|
||||
"type": "div",
|
||||
},
|
||||
Object {
|
||||
"children": Array [
|
||||
{
|
||||
"children": [
|
||||
"My name from another land",
|
||||
],
|
||||
"props": Object {
|
||||
"props": {
|
||||
"className": "student-key",
|
||||
},
|
||||
"type": "div",
|
||||
},
|
||||
],
|
||||
"props": Object {},
|
||||
"props": {},
|
||||
"type": "div",
|
||||
},
|
||||
],
|
||||
"props": Object {
|
||||
"props": {
|
||||
"className": "wrap-text-in-cell",
|
||||
},
|
||||
"type": "span",
|
||||
|
||||
@@ -32,7 +32,7 @@ exports[`LabelReplacements TotalGradeLabelReplacement snapshot 1`] = `
|
||||
}
|
||||
placement="left"
|
||||
trigger={
|
||||
Array [
|
||||
[
|
||||
"hover",
|
||||
"focus",
|
||||
]
|
||||
@@ -84,7 +84,7 @@ exports[`snapshot left to right overlay placement 1`] = `
|
||||
}
|
||||
placement="right"
|
||||
trigger={
|
||||
Array [
|
||||
[
|
||||
"hover",
|
||||
"focus",
|
||||
]
|
||||
@@ -118,7 +118,7 @@ exports[`snapshot right to left overlay placement 1`] = `
|
||||
}
|
||||
placement="left"
|
||||
trigger={
|
||||
Array [
|
||||
[
|
||||
"hover",
|
||||
"focus",
|
||||
]
|
||||
|
||||
@@ -7,13 +7,13 @@ exports[`GradebookTable snapshot 1`] = `
|
||||
<DataTable
|
||||
RowStatusComponent={[MockFunction hooks.nullMethod]}
|
||||
columns={
|
||||
Array [
|
||||
[
|
||||
"some",
|
||||
"columns",
|
||||
]
|
||||
}
|
||||
data={
|
||||
Array [
|
||||
[
|
||||
"some",
|
||||
"data",
|
||||
]
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
}
|
||||
.grade-history-header{
|
||||
float: left;
|
||||
min-width: 170px;
|
||||
}
|
||||
|
||||
.grade-history-assignment{
|
||||
@@ -65,7 +66,7 @@
|
||||
.gradebook-container {
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
height: 600px;
|
||||
max-height: 600px;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
}
|
||||
@@ -122,3 +123,34 @@ select#ScoreView.form-control {
|
||||
border-right-color: $black;
|
||||
}
|
||||
}
|
||||
|
||||
#edit-filters-btn {
|
||||
@include media-breakpoint-down(xs) {
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.search-container {
|
||||
@include media-breakpoint-down(xs) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.pgn__modal-body-content .pgn__data-table-layout-wrapper {
|
||||
@include media-breakpoint-down(sm) {
|
||||
clear: both;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
.page-gradebook {
|
||||
position: relative;
|
||||
|
||||
.sidebar-container {
|
||||
position: relative;
|
||||
}
|
||||
aside.sidebar {
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ exports[`ImportGradesButton component render snapshot 1`] = `
|
||||
className="import-grades-btn"
|
||||
import={true}
|
||||
label={
|
||||
Object {
|
||||
{
|
||||
"defaultMessage": "Import Grades",
|
||||
"description": "A labeled button to import grades in the BulkManagement Tab File Upload Form",
|
||||
"id": "gradebook.GradesView.importGradesBtnText",
|
||||
|
||||
@@ -17,7 +17,7 @@ exports[`InterventionsReport component output snapshot 1`] = `
|
||||
</div>
|
||||
<NetworkButton
|
||||
label={
|
||||
Object {
|
||||
{
|
||||
"defaultMessage": "Download Interventions",
|
||||
"description": "The labeled button to download the Intervention report from the Grades View",
|
||||
"id": "gradebook.GradesView.InterventionsReport.downloadBtn",
|
||||
|
||||
@@ -4,7 +4,7 @@ exports[`PageButtons component render snapshot 1`] = `
|
||||
<div
|
||||
className="d-flex justify-content-center"
|
||||
style={
|
||||
Object {
|
||||
{
|
||||
"paddingBottom": "20px",
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ exports[`PageButtons component render snapshot 1`] = `
|
||||
disabled="prev-disabled"
|
||||
onClick={[MockFunction hooks.prev.onClick]}
|
||||
style={
|
||||
Object {
|
||||
{
|
||||
"margin": "20px",
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ exports[`PageButtons component render snapshot 1`] = `
|
||||
disabled="next-disabled"
|
||||
onClick={[MockFunction hooks.next.onClick]}
|
||||
style={
|
||||
Object {
|
||||
{
|
||||
"margin": "20px",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`SearchControls component render snapshot 1`] = `
|
||||
<div>
|
||||
<div
|
||||
className="search-container"
|
||||
>
|
||||
<SearchField
|
||||
inputLabel="test-input-label"
|
||||
onBlur={[MockFunction hooks.onBlur]}
|
||||
|
||||
@@ -18,7 +18,7 @@ export const SearchControls = () => {
|
||||
} = useSearchControlsData();
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="search-container">
|
||||
<SearchField
|
||||
onSubmit={onSubmit}
|
||||
inputLabel={inputLabel}
|
||||
|
||||
@@ -10,7 +10,7 @@ exports[`GradesView component render snapshot 1`] = `
|
||||
filter-step-heading
|
||||
</h3>
|
||||
<div
|
||||
className="d-flex justify-content-between"
|
||||
className="d-flex justify-content-between flex-wrap"
|
||||
>
|
||||
<FilterMenuToggle />
|
||||
<SearchControls />
|
||||
|
||||
@@ -34,7 +34,7 @@ export const GradesView = ({ updateQueryParams }) => {
|
||||
{stepHeadings.filter}
|
||||
</h3>
|
||||
|
||||
<div className="d-flex justify-content-between">
|
||||
<div className="d-flex justify-content-between flex-wrap">
|
||||
<FilterMenuToggle />
|
||||
<SearchControls />
|
||||
</div>
|
||||
|
||||
@@ -4,12 +4,12 @@ exports[`NetworkButton component snapshots snapshot 1`] = `
|
||||
<StatefulButton
|
||||
className="ml-2 test-class"
|
||||
disabledStates={
|
||||
Array [
|
||||
[
|
||||
"pending",
|
||||
]
|
||||
}
|
||||
icons={
|
||||
Object {
|
||||
{
|
||||
"default": <Icon
|
||||
className="fa mr-2 fa-download"
|
||||
/>,
|
||||
@@ -19,7 +19,7 @@ exports[`NetworkButton component snapshots snapshot 1`] = `
|
||||
}
|
||||
}
|
||||
labels={
|
||||
Object {
|
||||
{
|
||||
"default": <FormattedMessage
|
||||
defaultMessage="test button label"
|
||||
description="test button label description"
|
||||
|
||||
@@ -87,15 +87,16 @@ describe('root selectors', () => {
|
||||
});
|
||||
});
|
||||
describe('if neither/only 1 are default values', () => {
|
||||
beforeEach(() => {
|
||||
filterConstants.filterConfig[filterName] = testConfig;
|
||||
config = selectors.root.filterBadgeConfig(testState, filterName);
|
||||
});
|
||||
describe.each([
|
||||
['neither', () => false],
|
||||
['only filter1', (v) => v === filters[0]],
|
||||
['only filter2', (v) => v === filters[1]],
|
||||
], '%1 is default', (label, isDefaultFn) => {
|
||||
beforeEach(() => {
|
||||
filterConstants.filterConfig[filterName] = testConfig;
|
||||
config = selectors.root.filterBadgeConfig(testState, filterName);
|
||||
});
|
||||
|
||||
it('returns isDefault: false, string value, and remaining filterConfig', () => {
|
||||
selectors.filters.isDefault.mockImplementation(isDefaultFn);
|
||||
const { filterOrder, ...rest } = testConfig;
|
||||
|
||||
@@ -1,39 +1 @@
|
||||
import { messages as footerMessages } from '@edx/frontend-component-footer';
|
||||
import { messages as headerMessages } from '@edx/frontend-component-header';
|
||||
import { messages as paragonMessages } from '@openedx/paragon';
|
||||
|
||||
import arMessages from './messages/ar.json';
|
||||
import deMessages from './messages/de.json';
|
||||
import es419Messages from './messages/es_419.json';
|
||||
import faIRMessages from './messages/fa_IR.json';
|
||||
import frMessages from './messages/fr.json';
|
||||
import frCAMessages from './messages/fr_CA.json';
|
||||
import hiMessages from './messages/hi.json';
|
||||
import itMessages from './messages/it.json';
|
||||
import ptMessages from './messages/pt.json';
|
||||
import ruMessages from './messages/ru.json';
|
||||
import ukMessages from './messages/uk.json';
|
||||
import zhcnMessages from './messages/zh_CN.json';
|
||||
// no need to import en messages-- they are in the defaultMessage field
|
||||
|
||||
const appMessages = {
|
||||
ar: arMessages,
|
||||
'es-419': es419Messages,
|
||||
'fa-ir': faIRMessages,
|
||||
fr: frMessages,
|
||||
'zh-cn': zhcnMessages,
|
||||
pt: ptMessages,
|
||||
it: itMessages,
|
||||
de: deMessages,
|
||||
hi: hiMessages,
|
||||
'fr-ca': frCAMessages,
|
||||
ru: ruMessages,
|
||||
uk: ukMessages,
|
||||
};
|
||||
|
||||
export default [
|
||||
paragonMessages,
|
||||
footerMessages,
|
||||
headerMessages,
|
||||
appMessages,
|
||||
];
|
||||
export default [];
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "سجلّ الإدارة بالجملة",
|
||||
"gradebook.BulkManagementHistoryView": "فيما يلي سجلّ رفع الدرجات. لتحميل CSV الدرجات أو استيراد درجات بديلة، عد إلى دفتر الدرجات. يرجى الملاحظة أن معالجة الدرجات البديلة قد يأخذ بضع ثوانٍ بعد الاستيراد.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "تتم الآن معالجة CSV. قد يتطلب إتمام رفع الملفات عدة دقائق.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "الواجبات",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "الدرجة الكلّية",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "مجموعات الطلبة",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "تضمين أعضاء فريق المساق",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "الواجب",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "أنواع الواجبات",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": " الدرجة القصوى",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "الدرجة الدنيا",
|
||||
"gradebook.GradebookFilters.cohorts": "الأفواج",
|
||||
"gradebook.GradebookFilters.cohortsAll": "جميع الأفواج",
|
||||
"gradebook.GradebookFilters.tracks": "المسارات",
|
||||
"gradebook.GradebookFilters.trackAll": "جميع المسارات",
|
||||
"gradebook.GradebookFilters.closeFilters": "إغلاق المرشحات",
|
||||
"gradebook.GradebookHeader.backButton": "العودة إلى لوحة المعلومات",
|
||||
"gradebook.GradebookHeader.appLabel": "دفتر الدرجات",
|
||||
"gradebook.GradebookHeader.frozenWarning": "درجات هذا المساق الآن مجمدة. لم يعد تعديل الدرجات ممكنا.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "أنت غير مخوّل بالاطّلاع على دفتر درجات هذا المساق.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "عرض سجلّ الإدارة بالجملة",
|
||||
"gradebook.GradebookHeader.toGradesView": "العودة إلى دفتر الدرجات",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "تحميل الدرجات",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "الواجب",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "الدرجة الحالية",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "الدرجة الأصلية",
|
||||
"gradebook.GradesView.EditModal.headers.student": "الطالب",
|
||||
"gradebook.GradesView.EditModal.title": "تعديل الدرجات",
|
||||
"gradebook.GradesView.EditModal.closeText": "إلغاء",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "يتم إظهار أحدث العمليات فقط (5 على الأكثر). للاطلاع على المزيد، يرجى الاتصال بالدعم.",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "ملاحظة: ستظهر تعديلاتك للطلبة بمجرد الحفظ.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "حفظ الدرجات",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "الدرجة المعدّلة",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "التاريخ",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "صاحب التقييم",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "السبب",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "عرض {filteredUsers} من إجمالي {totalUsers} متعلمًا",
|
||||
"gradebook.GradesView.editFilterLabel": "تعديل المرشحات",
|
||||
"gradebook.GradesView.table.headings.email": "البريد الإلكتروني",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "الدرجة الإجمالية (%)",
|
||||
"gradebook.GradesView.table.headings.username": "اسم المستخدم",
|
||||
"gradebook.GradesView.table.labels.studentKey": "مفتاح الطالب*",
|
||||
"gradebook.GradesView.table.labels.username": "اسم المستخدم",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "الدرجات الإجمالية تظهر دائمًا على شكل نسب مئوية",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "رفع درجات بصيغة CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "استيراد الدرجات",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "نجح الاستيراد! سيتم فورًا تحديث الدرجات.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "عرض سجلّ النشاط",
|
||||
"gradebook.GradesView.InterventionsReport.title": "تقرير التدخلات",
|
||||
"gradebook.GradesView.InterventionsReport.description": "هل تحتاج لإيجاد طلبة قد يكونون متأخرين؟ حمّل تقرير التدخلات للحصول على قياسات الالتزام كالزيارات و المحاولات الخاصة بكل فصل.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "تحميل التدخلات",
|
||||
"gradebook.GradesView.filterHeading": "الخطوة 1: ترشيح تقرير الدرجات",
|
||||
"gradebook.GradesView.gradebookStepHeading": "الخطوة 2: معاينة و تعديل الدرجات على حدة",
|
||||
"gradebook.GradesView.mastersHint": "متوفر فقط للمتعلمين المسجلين في مسار الماستر",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "الصفحة السابقة",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "الصفحة التالية",
|
||||
"gradebook.GradesView.scoreViewLabel": "مظهر الدرجة",
|
||||
"gradebook.GradesView.absoluteOption": "مطلقة",
|
||||
"gradebook.GradesView.percentOption": "نسبة مئوية",
|
||||
"gradebook.GradesView.search.label": "البحث عن متعلّم",
|
||||
"gradebook.GradesView.search.hint": "ابحث حسب اسم المستخدم، البريد الإلكتروني أو مفتاح الطالب",
|
||||
"gradebook.GradesView.editSuccessAlert": "تم تعديل الدرجة بنجاح. قد تلاحظ تأخّرًا طفيفا في ظهور التحديثات في دفتر الدرجات.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "الدرجة القصوى يجب أن تكون بين 0 و 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "الدرجة الدنيا يجب أن تكون بين 0 و 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "الواجب",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "درجة الواجب",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "نوع الواجب",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "فوج",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "درجة المساق",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "تضمين أعضاء فريق المساق",
|
||||
"gradebook.GradesTab.FilterBadges.track": "المسار"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Historial de administración masiva",
|
||||
"gradebook.BulkManagementHistoryView": "A continuación se muestra un registro de importaciones de grados anteriores. Para descargar un archivo CSV de su libro de calificaciones e importar las calificaciones para anularlas, regrese al Libro de calificaciones. Tenga en cuenta que, después de importar las calificaciones, es posible que el procesamiento de la anulación demore unos segundos. ",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "Procesando archivo CSV. Los archivos subidos pueden tomar algunos minutos para completarse.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Tareas",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Calificación general",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Grupos de estudiantes",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Incluir miembros del equipo del curso",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Tarea",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Tipos de tareas",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Calificación máxima",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Calificación mínima",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohortes",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohortes-todas",
|
||||
"gradebook.GradebookFilters.tracks": "Seguimientos",
|
||||
"gradebook.GradebookFilters.trackAll": " Seguimiento de todo",
|
||||
"gradebook.GradebookFilters.closeFilters": "Filtros cerrados",
|
||||
"gradebook.GradebookHeader.backButton": "Volver al Panel de Control",
|
||||
"gradebook.GradebookHeader.appLabel": "Libro de Calificaciones",
|
||||
"gradebook.GradebookHeader.frozenWarning": "Las calificaciones para este curso se encuentran congeladas. La edición de las calificaciones ya no se encuentra habilitada. ",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "No tienes autorización para ver el libro de calificaciones de este curso. ",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "Ver historial de administración masiva",
|
||||
"gradebook.GradebookHeader.toGradesView": "Volver al libro de calificaciones.",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Descargar calificaciones",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Tarea",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Calificación actual",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Calificación original",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Estudiante",
|
||||
"gradebook.GradesView.EditModal.title": "Editar calificaciones",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancelar",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Mostrar las acciones más recientes (máximo 5). Para ver más, por favor contacta a soporte.",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Nota: una vez hayas guardado, tus cambios serán visibles para los estudiantes.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Guardar calificaciones",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Ajustar calificación",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Fecha",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Calificador",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Razón",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Mostrando {filteredUsers} de {totalUsers} estudiantes en total",
|
||||
"gradebook.GradesView.editFilterLabel": "Editar filtros ",
|
||||
"gradebook.GradesView.table.headings.email": "Correo electrónico",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Calificación total (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Nombre de usuario",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Llave de estudiante*",
|
||||
"gradebook.GradesView.table.labels.username": "Nombre de usuario",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Los valores de las calificaciones totales serán siempre mostrados en porcentajes",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Subir calificación en CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Importar calificaciones",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "¡Importación exitosa! Las calificaciones serán actualizadas momentáneamente. ",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "Ver actividad del log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Reporte de intervenciones",
|
||||
"gradebook.GradesView.InterventionsReport.description": "¿Necesitas encontrar estudiantes que no estén teniendo un buen rendimiento? Descarga el reporte de intervenciones para obtener métricas de comportamiento como lo son las visitas e intentos. ",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Descargar de intervenciones",
|
||||
"gradebook.GradesView.filterHeading": "Paso 1: Filtra el reporte de calificaciones",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Paso 2: Mira o modifica las calificaciones individuales",
|
||||
"gradebook.GradesView.mastersHint": "Disponible solo para estudiante en el seguimiento máster",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Página anterior",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Siguiente página",
|
||||
"gradebook.GradesView.scoreViewLabel": "Ver puntaje",
|
||||
"gradebook.GradesView.absoluteOption": "Absoluto",
|
||||
"gradebook.GradesView.percentOption": "Porcentaje",
|
||||
"gradebook.GradesView.search.label": "Busca a un estudiante",
|
||||
"gradebook.GradesView.search.hint": "Busca por nombre de usuario, correo electrónico o llave de estudiante",
|
||||
"gradebook.GradesView.editSuccessAlert": "La calificación ha sido editada de manera exitosa. Podrás apreciar un retraso mínimo mientras se realizan las actualizaciones en el libro de calificaciones. ",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "La máxima calificación de curso debe estar entre 0 y 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "La calificación de curso mínima debe estar entre 0 y 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Tarea",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Calificación de la tarea",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Tipo de tarea",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohorte",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Calificación del curso",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Incluir miembros del equipo del curso",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Hacer seguimiento"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "تاریخچه مدیریت انبوه",
|
||||
"gradebook.BulkManagementHistoryView": "در زیر گزارشی از ورود نمره قبلی آمده است. برای بارگیری CSV از کارنامه خود و واردکردن نمرات برای لغو، به کارنامه بازگردید. لطفاً توجه کنید، پس از واردکردن نمرات، ممکن است چند ثانیه طول بکشد تا لغو پردازش شود.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "در حال پردازش بارگیری CSV پرونده. این فرایند ممکن است چند دقیقه طول بکشد تا تکمیل شود.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "تکالیف",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "نمره کلی",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "گروههای دانشآموزی",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "شامل اعضای تیم دوره آموزشی",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "تکلیف",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "انواع تکلیف ",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "حداکثر نمره",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "حداقل نمره",
|
||||
"gradebook.GradebookFilters.cohorts": "انجمنها",
|
||||
"gradebook.GradebookFilters.cohortsAll": "انجمن-همه",
|
||||
"gradebook.GradebookFilters.tracks": "مسیرها",
|
||||
"gradebook.GradebookFilters.trackAll": "مسیر-همه",
|
||||
"gradebook.GradebookFilters.closeFilters": "بستن فیلترها",
|
||||
"gradebook.GradebookHeader.backButton": "بازگشت به پیشخوان",
|
||||
"gradebook.GradebookHeader.appLabel": "کارنامه",
|
||||
"gradebook.GradebookHeader.frozenWarning": "نمرات این دوره آموزشی اکنون متوقف شده اند. ویرایش نمرات، دیگر مجاز نیست.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "شما مجاز به مشاهده کارنامه این دوره آموزشی نیستید.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "مشاهده تاریخچه مدیریت انبوه",
|
||||
"gradebook.GradebookHeader.toGradesView": "بازگشت به کارنامه",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "بارگیری نمرات",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "تکلیف",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "نمره کنونی",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "نمره اصلی",
|
||||
"gradebook.GradesView.EditModal.headers.student": "دانشجو",
|
||||
"gradebook.GradesView.EditModal.title": "ویرایش نمرات",
|
||||
"gradebook.GradesView.EditModal.closeText": "لغو",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "نمایش آخرین اقدامات (حداکثر 5). برای مشاهده موارد بیشتر لطفا با پشتیبانی تماس بگیرید",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "توجه: پس از ذخیرهسازی، تغییرات شما برای سایرین قابل مشاهده خواهد بود.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "ذخیره نمرات",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "نمره تعدیلشده",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "تاریخ ",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "نمرهدهنده",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "علت",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "نمایش {filteredUsers} از کل {totalUsers} یادگیرنده",
|
||||
"gradebook.GradesView.editFilterLabel": "ویرایش فیلترها",
|
||||
"gradebook.GradesView.table.headings.email": "نشانی رایانامه",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "نمره کل (%)",
|
||||
"gradebook.GradesView.table.headings.username": "نام کاربری",
|
||||
"gradebook.GradesView.table.labels.studentKey": " کلید یادگیرنده*",
|
||||
"gradebook.GradesView.table.labels.username": "نام کاربری",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "مقادیر کل نمره همیشه به صورت درصدی نمایش داده میشوند",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "بارگذاری CSV نمره",
|
||||
"gradebook.GradesView.importGradesBtnText": "ورود نمرهها",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "ورود دادهها با موفقیت انجام شد! نمرات بهصورت لحظهای روزآمد میشود.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "مشاهده گزارش فعالیت",
|
||||
"gradebook.GradesView.InterventionsReport.title": "گزارش مداخلات",
|
||||
"gradebook.GradesView.InterventionsReport.description": "آیا نیاز به یافتن یادگیرندگانی دارید که ممکن است عقب بمانند؟ گزارش مداخلات را دانلود کنید تا معیارهای تعامل مانند میزان تلاشها و بازدیدها را بهدست آورید.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "دانلود مداخلات",
|
||||
"gradebook.GradesView.filterHeading": "گام 1: فیلتر گزارش نمره",
|
||||
"gradebook.GradesView.gradebookStepHeading": "گام 2: مشاهده یا تغییر نمرات فرد",
|
||||
"gradebook.GradesView.mastersHint": "فقط برای یادگیرندگان در مسیر اصلی در دسترس است",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "صفحه پیشین",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "صفحه بعدی",
|
||||
"gradebook.GradesView.scoreViewLabel": "مشاهده امتیاز",
|
||||
"gradebook.GradesView.absoluteOption": "کامل",
|
||||
"gradebook.GradesView.percentOption": "درصد",
|
||||
"gradebook.GradesView.search.label": "جستجوی یادگیرنده",
|
||||
"gradebook.GradesView.search.hint": "جستجوی نام کاربری، نشانی رایانامه یا کلید یادگیرنده",
|
||||
"gradebook.GradesView.editSuccessAlert": "نمره با موفقیت ویرایش شد. ممکن است روزآمدسازی کارنامه کمی تأخیر داشته باشد.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "حداکثر نمره دوره آموزشی باید بین 0 تا 100 باشد",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "حداقل نمره دوره باید بین 0 تا 100 باشد",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "تکلیف",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "نمره تکلیف",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "نوع تکلیف",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "انجمن",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "نمره دوره آموزشی",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "شامل اعضای تیم دوره آموزشی",
|
||||
"gradebook.GradesTab.FilterBadges.track": "مسیر"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Historique des changements en lot",
|
||||
"gradebook.BulkManagementHistoryView": "Ci-dessous se trouve un historique des imports de notes précédents. Pour télécharger un CSV de votre carnet de notes et importer des notes pour les remplacer, retournez au Carnet de Note. Veuillez noter qu'après l'importation des notes, la procédure de remplacement prendra quelques secondes.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "Traitement du CSV en cours. Le téléversement peut prendre plusieurs minutes à compléter.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Devoirs",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Note globale",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Groupe d'étudiants",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Inclure les membres de l'équipe de cours",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Devoir",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Types de travaux",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Note Maximale",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Note Minimale",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohortes",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Toutes les cohortes",
|
||||
"gradebook.GradebookFilters.tracks": "Parcours",
|
||||
"gradebook.GradebookFilters.trackAll": "Tous les parcours",
|
||||
"gradebook.GradebookFilters.closeFilters": "Fermer les filtres",
|
||||
"gradebook.GradebookHeader.backButton": "Retour au tableau de bord",
|
||||
"gradebook.GradebookHeader.appLabel": "Bulletin de notes",
|
||||
"gradebook.GradebookHeader.frozenWarning": "Les notes de ce cours sont gelées. Éditer les notes n'est plus permis.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "Vous n'êtes pas autorisé à voir le livret de notes pour ce cours",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "Voir l'historique des changements en lot",
|
||||
"gradebook.GradebookHeader.toGradesView": "Retourner au carnet de notes",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Télécharger les notes",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Devoir",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Note actuelle",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Note initiale",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Étudiant",
|
||||
"gradebook.GradesView.EditModal.title": "Editez les notes",
|
||||
"gradebook.GradesView.EditModal.closeText": "Annuler",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Affiche les plus récentes actions (max 5). Pour en voir plus, veuillez contacter le support.",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note : une fois sauvegardés, vos changements seront visibles aux étudiants.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Sauvegarder les notes",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Note ajustée",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Correcteur",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Motif",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Affiche {filteredUsers} des {totalUsers} apprenants totaux",
|
||||
"gradebook.GradesView.editFilterLabel": "Editer les filtres",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Note totale (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Nom d’utilisateur",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Clé d'étudiant",
|
||||
"gradebook.GradesView.table.labels.username": "Nom d’utilisateur",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "La note totale est toujours affiché en pourcentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Importer les notes CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Importer les notes",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import réussi ! Les notes vont être mises à jour.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "Voir le rapport d'activité",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Rapport d'interventions",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Besoin de trouver les étudiants en difficulté ? Téléchargez le rapport d'interventions afin d'obtenir les métriques d'engagement telles que le nombre de tentatives ou de visites des sections.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Télécharger les interventions",
|
||||
"gradebook.GradesView.filterHeading": "Étape 1 : Filtrer le rapport de notes",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Étape 2 : Voir ou modifier les notes individuelles",
|
||||
"gradebook.GradesView.mastersHint": "disponible seulement aux apprenants sur le parcours Master",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Page précédente",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Page suivante",
|
||||
"gradebook.GradesView.scoreViewLabel": "Vue des notes",
|
||||
"gradebook.GradesView.absoluteOption": "Absolu",
|
||||
"gradebook.GradesView.percentOption": "Pourcentage",
|
||||
"gradebook.GradesView.search.label": "Rechercher un apprenant",
|
||||
"gradebook.GradesView.search.hint": "Chercher par nom d'utilisateur, email ou clé d'étudiant",
|
||||
"gradebook.GradesView.editSuccessAlert": "Les notes ont été éditées avec succès. Un délai est possible avant que vous ne constatiez la mise-à-jour dans le carnet de note.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "La note maximale du cours doit être entre 0 et 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "La note minimale du cours doit être entre 0 et 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Devoir",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Note des devoirs",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Type de travail",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohorte",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Note du cours",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Inclure les membres de l'équipe de cours",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Parcours"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Historique des changements en lot",
|
||||
"gradebook.BulkManagementHistoryView": "Ci-dessous se trouve un historique des importations de notes précédentes. Pour télécharger un CSV de votre carnet de notes et importer des notes pour les remplacer, retournez au Carnet de Note. Veuillez noter qu'après l'importation des notes, la procédure de remplacement prendra quelques secondes.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "Traitement du CSV en cours. Le téléversement peut prendre plusieurs minutes à compléter.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Devoirs",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Note globale",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Groupes d'étudiant",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Inclure les membres de l'équipe de cours",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Devoir",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Types de travaux",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Note maximale",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Note minimale",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohortes",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Toutes les cohortes",
|
||||
"gradebook.GradebookFilters.tracks": "Parcours",
|
||||
"gradebook.GradebookFilters.trackAll": "Tous les parcours",
|
||||
"gradebook.GradebookFilters.closeFilters": "Fermer filtres",
|
||||
"gradebook.GradebookHeader.backButton": "Retour au tableau de bord",
|
||||
"gradebook.GradebookHeader.appLabel": "Bulletin de notes",
|
||||
"gradebook.GradebookHeader.frozenWarning": "Les notes de ce cours sont gelées. Éditer les notes n'est plus permis.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "Vous n'êtes pas autorisé à voir le carnet de note de ce cours.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "Voir l'historique des changements en lot",
|
||||
"gradebook.GradebookHeader.toGradesView": "Retourner au carnet de notes",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Télécharger les notes",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Devoir",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Note actuelle",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Note originale",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Étudiant",
|
||||
"gradebook.GradesView.EditModal.title": "Éditer les notes",
|
||||
"gradebook.GradesView.EditModal.closeText": "Annuler",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Affiche les plus récentes actions (max 5). Pour en voir plus, veuillez contacter le support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note : une fois sauvegardés, vos changements seront visibles aux étudiants.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Sauvegarde des notes",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Notes ajustées",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Correcteur",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Raison",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Affiche {filteredUsers} des {totalUsers} apprenants totaux",
|
||||
"gradebook.GradesView.editFilterLabel": "Éditer les filtres",
|
||||
"gradebook.GradesView.table.headings.email": "Courriel",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Note totale (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Nom d'utilisateur",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Clé étudiante*",
|
||||
"gradebook.GradesView.table.labels.username": "Nom d'utilisateur",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "La valeur des notes totales est toujours affichée en pourcentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Téléverser les notes en CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Importer les notes",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Importation réussie! Les notes seront mises à jour momentanément.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "Voir le log des activités",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Rapport des interventions",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Besoin de trouver les étudiants en difficulté? Téléchargez le rapport d'interventions afin d'obtenir les métriques d'engagement telles que le nombre de tentatives ou de visites des sections.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Télécharger les interventions",
|
||||
"gradebook.GradesView.filterHeading": "Étape 1 : Filtrer le rapport de notes",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Étape 2 : Voir ou modifier les notes individuelles",
|
||||
"gradebook.GradesView.mastersHint": "disponible seulement aux apprenants sur le parcours Master",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Page précédente",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Page suivante",
|
||||
"gradebook.GradesView.scoreViewLabel": "Vue des scores",
|
||||
"gradebook.GradesView.absoluteOption": "Absolu",
|
||||
"gradebook.GradesView.percentOption": "Pourcentage",
|
||||
"gradebook.GradesView.search.label": "Chercher pour un apprenant",
|
||||
"gradebook.GradesView.search.hint": "Chercher par nom d'utilisateur, courriel ou clé étudiante",
|
||||
"gradebook.GradesView.editSuccessAlert": "Les notes ont été éditées avec succès. Un délai est possible avant que vous ne constatiez la mise-à-jour dans le carnet de note.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Note maximale du cours doit être entre 0 et 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Note minimale du cours doit être entre 0 et 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Devoir",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Note de devoir",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Type de devoir",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohorte",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Note du cours",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Inclure les membres de l'équipe de cours",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Parcours"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
{
|
||||
"gradebook.BulkManagementHistoryView.heading": "Bulk Management History",
|
||||
"gradebook.BulkManagementHistoryView": "Below is a log of previous grade imports. To download a CSV of your gradebook and import grades for override, return to the Gradebook. Please note, after importing grades, it may take a few seconds to process the override.",
|
||||
"gradebook.BulkManagementHistoryView.successDialog": "CSV processing. File uploads may take several minutes to complete.",
|
||||
"gradebook.GradebookFilters.assignmentsFilterLabel": "Assignments",
|
||||
"gradebook.GradebookFilters.overallGradeFilterLabel": "Overall Grade",
|
||||
"gradebook.GradebookFilters.studentGroupsFilterLabel": "Student Groups",
|
||||
"gradebook.GradebookFilters.includeCourseTeamMembersFilterLabel": "Include Course Team Members",
|
||||
"gradebook.GradebookFilters.assignmentFilterLabel": "Assignment",
|
||||
"gradebook.GradebookFilters.assignmentTypesLabel": "Assignment Types",
|
||||
"gradebook.GradebookFilters.maxGradeFilterLabel": "Max Grade",
|
||||
"gradebook.GradebookFilters.minGradeFilterLabel": "Min Grade",
|
||||
"gradebook.GradebookFilters.cohorts": "Cohorts",
|
||||
"gradebook.GradebookFilters.cohortsAll": "Cohort-All",
|
||||
"gradebook.GradebookFilters.tracks": "Tracks",
|
||||
"gradebook.GradebookFilters.trackAll": "Track-All",
|
||||
"gradebook.GradebookFilters.closeFilters": "Close Filters",
|
||||
"gradebook.GradebookHeader.backButton": "Back to Dashboard",
|
||||
"gradebook.GradebookHeader.appLabel": "Gradebook",
|
||||
"gradebook.GradebookHeader.frozenWarning": "The grades for this course are now frozen. Editing of grades is no longer allowed.",
|
||||
"gradebook.GradebookHeader.unauthorizedWarning": "You are not authorized to view the gradebook for this course.",
|
||||
"gradebook.GradebookHeader.toActivityLogButton": "View Bulk Management History",
|
||||
"gradebook.GradebookHeader.toGradesView": "Return to Gradebook",
|
||||
"gradebook.GradesView.BulkManagementControls.bulkManagementLabel": "Download Grades",
|
||||
"gradebook.GradesView.EditModal.headers.assignment": "Assignment",
|
||||
"gradebook.GradesView.EditModal.headers.currentGrade": "Current Grade",
|
||||
"gradebook.GradesView.EditModal.headers.originalGrade": "Original Grade",
|
||||
"gradebook.GradesView.EditModal.headers.student": "Student",
|
||||
"gradebook.GradesView.EditModal.title": "Edit Grades",
|
||||
"gradebook.GradesView.EditModal.closeText": "Cancel",
|
||||
"gradebook.GradesView.EditModal.contactSupport": "Showing most recent actions (max 5). To see more, please contact support",
|
||||
"gradebook.GradesView.EditModal.saveVisibility": "Note: Once you save, your changes will be visible to students.",
|
||||
"gradebook.GradesView.EditModal.saveGrade": "Save Grades",
|
||||
"gradebook.GradesView.EditModal.Overrides.adjustedGradeHeader": "Adjusted grade",
|
||||
"gradebook.GradesView.EditModal.Overrides.dateHeader": "Date",
|
||||
"gradebook.GradesView.EditModal.Overrides.graderHeader": "Grader",
|
||||
"gradebook.GradesView.EditModal.Overrides.reasonHeader": "Reason",
|
||||
"gradebook.GradesTab.usersVisibilityLabel'": "Showing {filteredUsers} of {totalUsers} total learners",
|
||||
"gradebook.GradesView.editFilterLabel": "Edit Filters",
|
||||
"gradebook.GradesView.table.headings.email": "Email",
|
||||
"gradebook.GradesView.table.headings.totalGrade": "Total Grade (%)",
|
||||
"gradebook.GradesView.table.headings.username": "Username",
|
||||
"gradebook.GradesView.table.labels.studentKey": "Student Key*",
|
||||
"gradebook.GradesView.table.labels.username": "Username",
|
||||
"gradebook.GradesView.table.totalGradePercentage": "Total Grade values are always displayed as a percentage",
|
||||
"gradebook.BulkManagementHistoryView.csvUploadLabel": "Upload Grade CSV",
|
||||
"gradebook.GradesView.importGradesBtnText": "Import Grades",
|
||||
"gradebook.GradesView.ImportSuccessToast.description": "Import Successful! Grades will be updated momentarily.",
|
||||
"gradebook.GradesView.ImportSuccessToast.showHistoryViewBtn": "View Activity Log",
|
||||
"gradebook.GradesView.InterventionsReport.title": "Interventions Report",
|
||||
"gradebook.GradesView.InterventionsReport.description": "Need to find students who may be falling behind? Download the interventions report to obtain engagement metrics such as section attempts and visits.",
|
||||
"gradebook.GradesView.InterventionsReport.downloadBtn": "Download Interventions",
|
||||
"gradebook.GradesView.filterHeading": "Step 1: Filter the Grade Report",
|
||||
"gradebook.GradesView.gradebookStepHeading": "Step 2: View or Modify Individual Grades",
|
||||
"gradebook.GradesView.mastersHint": "available for learners in the Master's track only",
|
||||
"gradebook.GradesView.PageButtons.prevPage": "Previous Page",
|
||||
"gradebook.GradesView.PageButtons.nextPage": "Next Page",
|
||||
"gradebook.GradesView.scoreViewLabel": "Score View",
|
||||
"gradebook.GradesView.absoluteOption": "Absolute",
|
||||
"gradebook.GradesView.percentOption": "Percent",
|
||||
"gradebook.GradesView.search.label": "Search for a learner",
|
||||
"gradebook.GradesView.search.hint": "Search by username, email, or student key",
|
||||
"gradebook.GradesView.editSuccessAlert": "The grade has been successfully edited. You may see a slight delay before updates appear in the Gradebook.",
|
||||
"gradebook.GradesView.maxCourseGradeInvalid": "Maximum course grade must be between 0 and 100",
|
||||
"gradebook.GradesView.minCourseGradeInvalid": "Minimum course grade must be between 0 and 100",
|
||||
"gradebook.GradesTab.FilterBadges.assignment": "Assignment",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentGrade": "Assignment Grade",
|
||||
"gradebook.GradesTab.FilterBadges.assignmentType": "Assignment Type",
|
||||
"gradebook.GradesTab.FilterBadges.cohort": "Cohort",
|
||||
"gradebook.GradesTab.FilterBadges.courseGrade": "Course Grade",
|
||||
"gradebook.GradesTab.FilterBadges.includeCourseRoleMembers": "Include Course Team Members",
|
||||
"gradebook.GradesTab.FilterBadges.track": "Track"
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'core-js/stable';
|
||||
import 'regenerator-runtime/runtime';
|
||||
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import React, { StrictMode } from 'react';
|
||||
import { createRoot } from 'react-dom/client';
|
||||
|
||||
import {
|
||||
APP_READY,
|
||||
@@ -18,7 +18,14 @@ import App from './App';
|
||||
|
||||
subscribe(APP_READY, () => {
|
||||
lightning();
|
||||
ReactDOM.render(<App />, document.getElementById('root'));
|
||||
|
||||
const root = createRoot(document.getElementById('root'));
|
||||
|
||||
root.render(
|
||||
<StrictMode>
|
||||
<App />
|
||||
</StrictMode>,
|
||||
);
|
||||
});
|
||||
|
||||
initialize({
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import React, { StrictMode } from 'react';
|
||||
|
||||
import {
|
||||
APP_READY,
|
||||
@@ -12,9 +11,21 @@ import messages from './i18n';
|
||||
import App from './App';
|
||||
import '.';
|
||||
|
||||
jest.mock('react-dom', () => ({
|
||||
render: jest.fn(),
|
||||
}));
|
||||
// These need to be var not let so they get hoisted
|
||||
// and can be used by jest.mock (which is also hoisted)
|
||||
var mockRender; // eslint-disable-line no-var
|
||||
var mockCreateRoot; // eslint-disable-line no-var
|
||||
jest.mock('react-dom/client', () => {
|
||||
mockRender = jest.fn();
|
||||
mockCreateRoot = jest.fn(() => ({
|
||||
render: mockRender,
|
||||
}));
|
||||
|
||||
return ({
|
||||
createRoot: mockCreateRoot,
|
||||
});
|
||||
});
|
||||
|
||||
jest.mock('@edx/frontend-platform', () => ({
|
||||
APP_READY: 'app-is-ready-key',
|
||||
initialize: jest.fn(),
|
||||
@@ -36,8 +47,11 @@ describe('app registry', () => {
|
||||
test('subscribe is called for APP_READY, linking App to root element', () => {
|
||||
const callArgs = subscribe.mock.calls[0];
|
||||
expect(callArgs[0]).toEqual(APP_READY);
|
||||
expect(callArgs[1]()).toEqual(
|
||||
ReactDOM.render(<App />, document.getElementById('root')),
|
||||
callArgs[1]();
|
||||
expect(mockRender).toHaveBeenCalledWith(
|
||||
<StrictMode>
|
||||
<App />
|
||||
</StrictMode>,
|
||||
);
|
||||
});
|
||||
test('initialize is called with requireAuthenticatedUser, messages, and a config handler', () => {
|
||||
|
||||
53
src/plugin-slots/FooterSlot/README.md
Normal file
53
src/plugin-slots/FooterSlot/README.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Footer Slot
|
||||
|
||||
### Slot ID: `org.openedx.frontend.layout.footer.v1`
|
||||
|
||||
### Slot ID Aliases
|
||||
* `footer_slot`
|
||||
|
||||
## Description
|
||||
|
||||
This slot is used to replace/modify/hide the footer.
|
||||
|
||||
The implementation of the `FooterSlot` component lives in [the `frontend-component-footer` repository](https://github.com/openedx/frontend-component-footer/).
|
||||
|
||||
## Example
|
||||
|
||||
The following `env.config.jsx` will replace the default footer.
|
||||
|
||||

|
||||
|
||||
with a simple custom footer
|
||||
|
||||

|
||||
|
||||
```jsx
|
||||
import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
|
||||
|
||||
const config = {
|
||||
pluginSlots: {
|
||||
'org.openedx.frontend.layout.footer.v1': {
|
||||
plugins: [
|
||||
{
|
||||
// Hide the default footer
|
||||
op: PLUGIN_OPERATIONS.Hide,
|
||||
widgetId: 'default_contents',
|
||||
},
|
||||
{
|
||||
// Insert a custom footer
|
||||
op: PLUGIN_OPERATIONS.Insert,
|
||||
widget: {
|
||||
id: 'custom_footer',
|
||||
type: DIRECT_PLUGIN,
|
||||
RenderWidget: () => (
|
||||
<h1 style={{textAlign: 'center'}}>🦶</h1>
|
||||
),
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
export default config;
|
||||
```
|
||||
BIN
src/plugin-slots/FooterSlot/images/custom_footer.png
Normal file
BIN
src/plugin-slots/FooterSlot/images/custom_footer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
src/plugin-slots/FooterSlot/images/default_footer.png
Normal file
BIN
src/plugin-slots/FooterSlot/images/default_footer.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
3
src/plugin-slots/README.md
Normal file
3
src/plugin-slots/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# `frontend-app-gradebook` Plugin Slots
|
||||
|
||||
* [`org.openedx.frontend.layout.footer.v1`](./FooterSlot/)
|
||||
Reference in New Issue
Block a user