Compare commits

...

14 Commits

Author SHA1 Message Date
mashal-m
ddb2f47471 fix: upadte lock file 2023-03-02 14:02:27 +05:00
mashal-m
3f967ad468 fix: upadte lock file 2023-03-02 14:00:22 +05:00
mashal-m
3d102bd323 build: use shared browserslist configuration and upgrade paragon version 2023-03-02 13:07:49 +05:00
Feanil Patel
706d69aeca build: Creating a missing workflow file add-remove-label-on-comment.yml.
The .github/workflows/add-remove-label-on-comment.yml workflow is missing or needs an update to stay in
sync with the current standard for this workflow as defined in the
`.github` repo of the `openedx` GitHub org.
2023-02-28 10:32:02 -05:00
Feanil Patel
6d3ed03cac build: Creating a missing workflow file add-depr-ticket-to-depr-board.yml.
The .github/workflows/add-depr-ticket-to-depr-board.yml workflow is missing or needs an update to stay in
sync with the current standard for this workflow as defined in the
`.github` repo of the `openedx` GitHub org.
2023-02-28 10:32:02 -05:00
Feanil Patel
21a35cde82 build: Creating a missing workflow file self-assign-issue.yml.
The .github/workflows/self-assign-issue.yml workflow is missing or needs an update to stay in
sync with the current standard for this workflow as defined in the
`.github` repo of the `openedx` GitHub org.
2023-02-28 10:32:02 -05:00
Leangseu Kim
66f85ee17e chore: upgrade transifex push translation to v3 2023-02-23 10:54:53 -05:00
Leangseu Kim
140cfc1639 chore: upgrade transifex push translation to v3 2023-02-23 10:30:35 -05:00
Leangseu Kim
26906d45f7 fix: upgrade frontend-build to v12 2023-02-23 10:20:59 -05:00
Leangseu Kim
a753170cb7 chore!: Dropped support for Node 12 2023-02-23 09:56:25 -05:00
Jenkins
690140ce46 chore(i18n): update translations 2023-02-22 10:44:03 -05:00
Nathan Sprenkle
6764a9766c docs: add CODEOWNERS (#149) 2022-12-06 16:38:39 -05:00
Diana Olarte
c646b88543 feat: allow runtime configuration (#144)
* feat: allow runtime configuration

* test: organize Head test
2022-11-21 10:06:24 -05:00
Leangseu Kim
b1d11119db fix: update transifex flag for tx cli 1.4.0 2022-10-18 12:09:17 -04:00
28 changed files with 4673 additions and 7980 deletions

2
.env
View File

@@ -30,3 +30,5 @@ ENTERPRISE_MARKETING_URL=''
ENTERPRISE_MARKETING_UTM_SOURCE=''
ENTERPRISE_MARKETING_UTM_CAMPAIGN=''
ENTERPRISE_MARKETING_FOOTER_UTM_MEDIUM=''
APP_ID=''
MFE_CONFIG_API_URL=''

View File

@@ -36,3 +36,5 @@ ENTERPRISE_MARKETING_URL='http://example.com'
ENTERPRISE_MARKETING_UTM_SOURCE='example.com'
ENTERPRISE_MARKETING_UTM_CAMPAIGN='example.com Referral'
ENTERPRISE_MARKETING_FOOTER_UTM_MEDIUM='Footer'
APP_ID=''
MFE_CONFIG_API_URL=''

View File

@@ -4,9 +4,13 @@ const config = createConfig('eslint', {
rules: {
'import/no-named-as-default': 'off',
'import/no-named-as-default-member': 'off',
'import/no-import-module-exports': 'off',
'import/no-self-import': 'off',
'spaced-comment': ['error', 'always', { 'block': { 'exceptions': ['*'] } }],
'react-hooks/rules-of-hooks': 'off',
"react/forbid-prop-types": ["error", { "forbid": ["any", "array"] }], // arguable object proptype is use when I do not care about the shape of the object
'no-import-assign': 'off',
'no-promise-executor-return': 'off',
},
});

6
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,6 @@
# Code owners for frontend-app-ora-grading
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence, they will
# be requested for review when someone opens a pull request.
* @edx/content-aurora

View File

@@ -0,0 +1,19 @@
# Run the workflow that adds new tickets that are either:
# - labelled "DEPR"
# - title starts with "[DEPR]"
# - body starts with "Proposal Date" (this is the first template field)
# to the org-wide DEPR project board
name: Add newly created DEPR issues to the DEPR project board
on:
issues:
types: [opened]
jobs:
routeissue:
uses: openedx/.github/.github/workflows/add-depr-ticket-to-depr-board.yml@master
secrets:
GITHUB_APP_ID: ${{ secrets.GRAPHQL_AUTH_APP_ID }}
GITHUB_APP_PRIVATE_KEY: ${{ secrets.GRAPHQL_AUTH_APP_PEM }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_ISSUE_BOT_TOKEN }}

View File

@@ -0,0 +1,20 @@
# This workflow runs when a comment is made on the ticket
# If the comment starts with "label: " it tries to apply
# the label indicated in rest of comment.
# If the comment starts with "remove label: ", it tries
# to remove the indicated label.
# Note: Labels are allowed to have spaces and this script does
# not parse spaces (as often a space is legitimate), so the command
# "label: really long lots of words label" will apply the
# label "really long lots of words label"
name: Allows for the adding and removing of labels via comment
on:
issue_comment:
types: [created]
jobs:
add_remove_labels:
uses: openedx/.github/.github/workflows/add-remove-label-on-comment.yml@master

View File

@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
node: [12, 14, 16]
node: [16]
steps:
- name: Checkout
uses: actions/checkout@v2

12
.github/workflows/self-assign-issue.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# This workflow runs when a comment is made on the ticket
# If the comment starts with "assign me" it assigns the author to the
# ticket (case insensitive)
name: Assign comment author to ticket if they say "assign me"
on:
issue_comment:
types: [created]
jobs:
self_assign_by_comment:
uses: openedx/.github/.github/workflows/self-assign-issue.yml@master

View File

@@ -14,7 +14,7 @@ tx_url2 = https://www.transifex.com/api/2/project/edx-platform/resource/$(transi
# This directory must match .babelrc .
transifex_temp = ./temp/babel-plugin-react-intl
NPM_TESTS=build i18n_extract lint test is-es5
NPM_TESTS=build i18n_extract lint test
.PHONY: test
test: $(addprefix test.npm.,$(NPM_TESTS)) ## validate ci suite
@@ -49,15 +49,15 @@ push_translations:
# Pushing strings to Transifex...
tx push -s
# Fetching hashes from Transifex...
./node_modules/reactifex/bash_scripts/get_hashed_strings.sh $(tx_url1)
./node_modules/@edx/reactifex/bash_scripts/get_hashed_strings_v3.sh
# Writing out comments to file...
$(transifex_utils) $(transifex_temp) --comments
$(transifex_utils) $(transifex_temp) --comments --v3-scripts-path
# Pushing comments to Transifex...
./node_modules/reactifex/bash_scripts/put_comments.sh $(tx_url2)
./node_modules/@edx/reactifex/bash_scripts/put_comments_v3.sh
# Pulls translations from Transifex.
pull_translations:
tx pull -f --mode reviewed --languages=$(transifex_langs)
tx pull -t -f --mode reviewed --languages=$(transifex_langs)
# This target is used by CI.
validate-no-uncommitted-package-lock-changes:

12049
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,6 @@
"scripts": {
"build": "fedx-scripts webpack",
"coveralls": "cat ./coverage/lcov.info | coveralls",
"is-es5": "es-check es5 ./dist/*.js",
"i18n_extract": "BABEL_ENV=i18n fedx-scripts babel src --quiet > /dev/null",
"lint": "fedx-scripts eslint --ext .jsx,.js src/",
"lint-fix": "fedx-scripts eslint --fix --ext .jsx,.js src/",
@@ -25,12 +24,13 @@
"publishConfig": {
"access": "public"
},
"browserslist": ["extends @edx/browserslist-config"],
"dependencies": {
"@edx/brand": "npm:@edx/brand-edx.org@^2.0.3",
"@edx/frontend-component-footer": "^11.1.1",
"@edx/frontend-component-header": "^3.1.1",
"@edx/frontend-platform": "^2.4.0",
"@edx/paragon": "^19.9.0",
"@edx/frontend-platform": "^2.5.1",
"@edx/paragon": "^20.28.4",
"@fortawesome/fontawesome-svg-core": "^1.2.36",
"@fortawesome/free-brands-svg-icons": "^5.15.4",
"@fortawesome/free-solid-svg-icons": "^5.15.4",
@@ -57,6 +57,7 @@
"query-string": "7.0.1",
"react": "^16.14.0",
"react-dom": "^16.14.0",
"react-helmet": "^6.1.0",
"react-intl": "^5.20.9",
"react-pdf": "^5.5.0",
"react-redux": "^7.2.4",
@@ -74,7 +75,9 @@
"whatwg-fetch": "^3.6.2"
},
"devDependencies": {
"@edx/frontend-build": "^11.0.2",
"@edx/browserslist-config": "^1.1.1",
"@edx/frontend-build": "12.4",
"@edx/reactifex": "^2.1.1",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^12.1.0",
"axios-mock-adapter": "^1.20.0",

View File

@@ -13,10 +13,12 @@ import CTA from 'containers/CTA';
import ListView from 'containers/ListView';
import './App.scss';
import Head from './components/Head';
export const App = ({ courseMetadata, isEnabled }) => (
<Router>
<div>
<Head />
<Header
courseTitle={courseMetadata.title}
courseNumber={courseMetadata.number}

View File

@@ -25,6 +25,7 @@ jest.mock('@edx/frontend-component-footer', () => 'Footer');
jest.mock('containers/DemoWarning', () => 'DemoWarning');
jest.mock('containers/CTA', () => 'CTA');
jest.mock('containers/ListView', () => 'ListView');
jest.mock('components/Head', () => 'Head');
const logo = 'fakeLogo.png';
let el;

View File

@@ -3,6 +3,7 @@
exports[`App router component snapshot: disabled (show demo warning) 1`] = `
<BrowserRouter>
<div>
<Head />
<Header
courseNumber="course-number"
courseOrg="course-org"
@@ -23,6 +24,7 @@ exports[`App router component snapshot: disabled (show demo warning) 1`] = `
exports[`App router component snapshot: enabled 1`] = `
<BrowserRouter>
<div>
<Head />
<Header
courseNumber="course-number"
courseOrg="course-org"

View File

@@ -0,0 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Head snapshot 1`] = `
<Helmet>
<title>
ORA staff grading | site-name
</title>
<link
href="favicon-url"
rel="shortcut icon"
type="image/x-icon"
/>
</Helmet>
`;

View File

@@ -0,0 +1,20 @@
import React from 'react';
import { Helmet } from 'react-helmet';
import { useIntl } from '@edx/frontend-platform/i18n';
import { getConfig } from '@edx/frontend-platform';
import messages from './messages';
const Head = () => {
const { formatMessage } = useIntl();
return (
<Helmet>
<title>
{formatMessage(messages.PageTitle, { siteName: getConfig().SITE_NAME })}
</title>
<link rel="shortcut icon" href={getConfig().FAVICON_URL} type="image/x-icon" />
</Helmet>
);
};
export default Head;

View File

@@ -0,0 +1,25 @@
import React from 'react';
import { getConfig } from '@edx/frontend-platform';
import { shallow } from 'enzyme';
import Head from '.';
jest.mock('react-helmet', () => ({
Helmet: 'Helmet',
}));
jest.mock('@edx/frontend-platform', () => ({
getConfig: () => ({
SITE_NAME: 'site-name',
FAVICON_URL: 'favicon-url',
}),
}));
describe('Head', () => {
it('snapshot', () => {
const el = shallow(<Head />);
expect(el).toMatchSnapshot();
expect(el.find('title').text()).toContain(getConfig().SITE_NAME);
expect(el.find('link').prop('href')).toEqual(getConfig().FAVICON_URL);
});
});

View File

@@ -0,0 +1,11 @@
import { defineMessages } from '@edx/frontend-platform/i18n';
const messages = defineMessages({
PageTitle: {
id: 'PageTitle',
defaultMessage: 'ORA staff grading | {siteName}',
description: 'Title tag',
},
});
export default messages;

View File

@@ -33,27 +33,25 @@ export class RadioCriterion extends React.Component {
isInvalid,
} = this.props;
return (
<>
<Form.RadioSet name={config.name} value={data}>
{config.options.map((option) => (
<Form.Radio
className="criteria-option"
key={option.name}
value={option.name}
description={intl.formatMessage(messages.optionPoints, { points: option.points })}
onChange={this.onChange}
disabled={!isGrading}
>
{option.label}
</Form.Radio>
))}
{isInvalid && (
<Form.Control.Feedback type="invalid" className="feedback-error-msg">
{intl.formatMessage(messages.rubricSelectedError)}
</Form.Control.Feedback>
)}
</Form.RadioSet>
</>
<Form.RadioSet name={config.name} value={data}>
{config.options.map((option) => (
<Form.Radio
className="criteria-option"
key={option.name}
value={option.name}
description={intl.formatMessage(messages.optionPoints, { points: option.points })}
onChange={this.onChange}
disabled={!isGrading}
>
{option.label}
</Form.Radio>
))}
{isInvalid && (
<Form.Control.Feedback type="invalid" className="feedback-error-msg">
{intl.formatMessage(messages.rubricSelectedError)}
</Form.Control.Feedback>
)}
</Form.RadioSet>
);
}
}

View File

@@ -1,91 +1,85 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Radio Criterion Container snapshot is grading 1`] = `
<React.Fragment>
<Form.RadioSet
name="random name"
value="selected radio option"
<Form.RadioSet
name="random name"
value="selected radio option"
>
<Form.Radio
className="criteria-option"
description="1 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name"
>
<Form.Radio
className="criteria-option"
description="1 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name"
>
this label
</Form.Radio>
<Form.Radio
className="criteria-option"
description="2 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name 2"
>
this label 2
</Form.Radio>
</Form.RadioSet>
</React.Fragment>
this label
</Form.Radio>
<Form.Radio
className="criteria-option"
description="2 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name 2"
>
this label 2
</Form.Radio>
</Form.RadioSet>
`;
exports[`Radio Criterion Container snapshot is not grading 1`] = `
<React.Fragment>
<Form.RadioSet
name="random name"
value="selected radio option"
<Form.RadioSet
name="random name"
value="selected radio option"
>
<Form.Radio
className="criteria-option"
description="1 points"
disabled={true}
onChange={[MockFunction this.onChange]}
value="option name"
>
<Form.Radio
className="criteria-option"
description="1 points"
disabled={true}
onChange={[MockFunction this.onChange]}
value="option name"
>
this label
</Form.Radio>
<Form.Radio
className="criteria-option"
description="2 points"
disabled={true}
onChange={[MockFunction this.onChange]}
value="option name 2"
>
this label 2
</Form.Radio>
</Form.RadioSet>
</React.Fragment>
this label
</Form.Radio>
<Form.Radio
className="criteria-option"
description="2 points"
disabled={true}
onChange={[MockFunction this.onChange]}
value="option name 2"
>
this label 2
</Form.Radio>
</Form.RadioSet>
`;
exports[`Radio Criterion Container snapshot radio contain invalid response 1`] = `
<React.Fragment>
<Form.RadioSet
name="random name"
value="selected radio option"
<Form.RadioSet
name="random name"
value="selected radio option"
>
<Form.Radio
className="criteria-option"
description="1 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name"
>
<Form.Radio
className="criteria-option"
description="1 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name"
>
this label
</Form.Radio>
<Form.Radio
className="criteria-option"
description="2 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name 2"
>
this label 2
</Form.Radio>
<Form.Control.Feedback
className="feedback-error-msg"
type="invalid"
>
Rubric selection is required
</Form.Control.Feedback>
</Form.RadioSet>
</React.Fragment>
this label
</Form.Radio>
<Form.Radio
className="criteria-option"
description="2 points"
disabled={false}
onChange={[MockFunction this.onChange]}
value="option name 2"
>
this label 2
</Form.Radio>
<Form.Control.Feedback
className="feedback-error-msg"
type="invalid"
>
Rubric selection is required
</Form.Control.Feedback>
</Form.RadioSet>
`;

View File

@@ -52,7 +52,7 @@ export class SubmissionsTable extends React.Component {
formatDate = ({ value }) => {
const date = new Date(moment(value));
return date.toLocaleString();
}
};
formatGrade = ({ value: score }) => (
score === null ? '-' : `${score.pointsEarned}/${score.pointsPossible}`
@@ -65,7 +65,7 @@ export class SubmissionsTable extends React.Component {
handleViewAllResponsesClick = (data) => () => {
const getsubmissionUUID = (row) => row.original.submissionUUID;
this.props.loadSelectionForReview(data.map(getsubmissionUUID));
}
};
render() {
if (!this.props.listData.length) {

View File

@@ -29,9 +29,7 @@ export const listData = createSelector(
},
);
export const isEmptySubmissionData = createSelector(
[module.listData], (data) => data.length === 0,
);
export const isEmptySubmissionData = createSelector([module.listData], (data) => data.length === 0);
export default StrictDict({
...simpleSelectors,

View File

@@ -1,104 +1,105 @@
{
"ora-grading.demoAlert.warningMessage": "Grade submission is disabled in the Demo mode of the new ORA Staff Grader.",
"ora-grading.demoAlert.confirm": "Confirm",
"ora-grading.demoAlert.title": "Demo submit prevented",
"ora-grading.FilePopoverContent.filePopoverNameTitle": "File Name",
"ora-grading.FilePopoverCellContent.filePopoverDescriptionTitle": "File Description",
"ora-grading.FilePopoverCellContent.fileSizeTitle": "File Size",
"ora-grading.InfoPopover.fileInfo": "File info",
"ora-grading.ResponseDisplay.FileRenderer.retryButton": "Retry",
"ora-grading.ResponseDisplay.FileRenderer.fileNotFound": "File not found",
"ora-grading.ResponseDisplay.FileRenderer.unknownError": "Unknown errors",
"ora-grading.InfoPopover.alt-text": "Display more info",
"ora-grading.CriterionFeedback.addCommentsLabel": "Add comments",
"ora-grading.CriterionFeedback.commentsLabel": "Comments",
"ora-grading.CriterionFeedback.optional": "(Optional)",
"ora-grading.RadioCriterion.optionPoints": "{points} points",
"ora-grading.RadioCriterion.rubricSelectedError": "Rubric selection is required",
"ora-grading.CriterionFeedback.criterionFeedbackError": "The feedback is required",
"ora-grading.CTA.feedbackMessage": "Thanks for using the new ORA staff grading experience. ",
"ora-grading.CTA.linkMessage": "Provide some feedback",
"ora-grading.CTA.letUsKnowMessage": " and let us know what you think!",
"ora-grading.ReviewModal.demoHeading": "Demo Mode",
"ora-grading.ReviewModal.demoMessage": "You are demoing the new ORA staff grading experience. You will be unable to submit grades until you activate the feature. This will become the default grading experience on May 9th (05/09/2022). To opt-in early, or opt-out, please contact Partner Support.",
"ora-grading.ListView.ListViewBreadcrumbs.backToResponses": "Back to all open responses",
"ora-grading.ListView.noResultsFoundTitle": "Nothing here yet",
"ora-grading.ListView.noResultsFoundBody": "When learners submit responses, they will appear here",
"ora-grading.ListView.viewAllResponses": "View all responses",
"ora-grading.ListView.viewSelectedResponses": "View selected responses ({value})",
"ora-grading.ListView.tableHeaders.username": "Username",
"ora-grading.ListView.tableHeaders.teamName": "Team name",
"ora-grading.ListView.tableHeaders.learnerSubmissionDate": "Learner submission date",
"ora-grading.ListView.tableHeaders.teamSubmissionDate": "Team submission date",
"ora-grading.ListView.tableHeaders.grade": "Grade",
"ora-grading.ListView.tableHeaders.gradingStatus": "Grading status",
"ora-grading.ListView.loadErrorHeading": "Error loading submissions",
"ora-grading.ListView.loadErrorMessage1": "An error occurred while loading the submissions for this response. Try reloading the page or going {backToResponses}.",
"ora-grading.ListView.backToResponsesLowercase": "back to all Open Responses",
"ora-grading.ListView.reloadSubmissions": "Reload submissions",
"ora-grading.ListView.loadingResponses": "Loading responses",
"ora-grading.ResponseDisplay.FilePopoverCell.filePopoverNameTitle": "File Name",
"ora-grading.ResponseDisplay.FilePopoverCell.filePopoverDescriptionTitle": "File Description",
"ora-grading.ResponseDisplay.SubmissionFiles.tableNameHeader": "Name",
"ora-grading.ResponseDisplay.SubmissionFiles.tableExtensionHeader": "File Extension",
"ora-grading.ResponseDisplay.SubmissionFiles.tablePopoverHeader": "File Metadata",
"ora-grading.ResponseDisplay.SubmissionFiles.downloadFiles": "Download files",
"ora-grading.ResponseDisplay.SubmissionFiles.downloading": "Downloading",
"ora-grading.ResponseDisplay.SubmissionFiles.downloaded": "Downloaded!",
"ora-grading.ResponseDisplay.SubmissionFiles.retryDownload": "Retry download",
"ora-grading.ResponseDisplay.SubmissionFiles.submissionFile": "Submission Files",
"ora-grading.ResponseDisplay.SubmissionFiles.fileSizeExceed": "Exceeded the allow download size",
"ora-grading.ReviewActions.overrideConfirmTitle": "Are you sure you want to override this grade?",
"ora-grading.ReviewActions.overrideConfirmWarning": "This cannot be undone. The learner may have already received their grade.",
"ora-grading.ReviewActions.overrideConfirmContinue": "Continue grade override",
"ora-grading.ReviewActions.StartGradingButton.startGrading": "Start grading",
"ora-grading.ReviewActions.StartGradingButton.overrideGrade": "Override grade",
"ora-grading.ReviewActions.StartGradingButton.stopGrading": "Stop grading this response",
"ora-grading.ReviewActions.StopGradingConfirmModal.override.title": "Are you sure you want to stop grade override?",
"ora-grading.ReviewActions.StopGradingConfirmModal.title": "Are you sure you want to stop grading this response?",
"ora-grading.ReviewActions.StopGradingConfirmModal.warning": "Your progress will be lost.",
"ora-grading.ReviewActions.StopGradingConfirmModal.override.confirmText": "Stop grade override",
"ora-grading.ReviewActions.StopGradingConfirmModal.confirmText": "Cancel grading",
"ora-grading.ReviewActions.goBack": "Go back",
"ora-grading.ReviewActions.loadPrevious": "Load previous submission",
"ora-grading.ReviewActions.loadNext": "Load next submission",
"ora-grading.ReviewActions.navigationLabel": "{current} of {total}",
"ora-grading.ReviewActions.pointsDisplay": "Score: {pointsEarned}/{pointsPossible}",
"ora-grading.ReviewActions.hideRubric": "Hide Rubric",
"ora-grading.ReviewActions.showRubric": "Show Rubric",
"ora-grading.ReviewModal.closeReviewConfirm.title": "Are you sure you want to close this modal?",
"ora-grading.ReviewModal.closeReviewConfirmWarning": "This cannot be undone. This will discard unsaved work and stop this grading process.",
"ora-grading.ReviewModal.goBack": "Go back",
"ora-grading.ReviewModal.CloseReviewConfirmModal.confirmText": "Close Modal",
"ora-grading.ReviewModal.loadingResponse": "Loading response",
"ora-grading.ReviewModal.demoTitleMessage": "Grading Demo",
"ora-grading.ReviewModal.loadErrorHeading": "Error loading submissions",
"ora-grading.ReviewModal.loadErrorMessage1": "An error occurred while loading this submission. Try reloading this submission.",
"ora-grading.ReviewModal.reloadSubmission": "Reload submission",
"ora-grading.ReviewModal.gradeNotSubmitted.heading": "Grade not submitted",
"ora-grading.ReviewModal.gradeNotSubmitted.Content": "We're sorry, something went wrong when we tried to submit this grade. Please try again.",
"ora-grading.ReviewModal.resubmitGrade": "Resubmit grate",
"ora-grading.ReviewModal.dismiss": "Dismiss",
"ora-grading.ReviewModal.errorSubmittingGrade.Heading": "Error submitting grade",
"ora-grading.ReviewModal.errorSubmittingGrade.Content": "It looks like someone else got here first! Your grade submission has been rejected",
"ora-grading.ReviewModal.errorLockContestedHeading": "The lock owned by another user",
"ora-grading.ReviewModal.errorLockContested": "The lock owned by another user",
"ora-grading.ReviewModal.errorLockBadRequestHeading": "Invalid request. Please check your input.",
"ora-grading.ReviewModal.errorLockBadRequest": "Invalid request. Please check your input.",
"ora-grading.ReviewModal.errorDownloadFailed": "Couldn't download files",
"ora-grading.ReviewModal.errorDownloadFailedContent": "We're sorry, something went wrong when we tried to download these files. Please try again.",
"ora-grading.ReviewModal.errorRetryDownload": "Retry download",
"ora-grading.ReviewModal.errorDownloadFailedFiles": "Failed files:",
"ora-grading.Rubric.gradeSubmitted": "Grade Submitted",
"ora-grading.Rubric.rubric": "Rubric",
"ora-grading.Rubric.submitGrade": "Submit grade",
"ora-grading.Rubric.submittingGrade": "Submitting grade",
"ora-grading.Rubric.overallComments": "Overall comments",
"ora-grading.Rubric.addComments": "Add comments (Optional)",
"ora-grading.Rubric.comments": "Comments (Optional)",
"ora-grading.RubricFeedback.error": "The overall feedback is required",
"ora-grading.lms-api.gradingStatusDisplay.ungraded": "Ungraded",
"ora-grading.lms-api.gradingStatusDisplay.locked": "Currently being graded by someone else",
"ora-grading.lms-api.gradingStatusDisplay.graded": "Grading Completed",
"ora-grading.lms-api.gradingStatusDisplay.inProgress": "You are currently grading this response"
"ora-grading.demoAlert.warningMessage": "إرسال الدرجات معطّل في الوضع التجريبي لمصحح الإجابات المفتوحة الجديد ﻷعضاء الطاقم..",
"ora-grading.demoAlert.confirm": "تأكيد",
"ora-grading.demoAlert.title": "تم منع الإرسال التجريبي",
"ora-grading.FilePopoverContent.filePopoverNameTitle": "اسم الملف",
"ora-grading.FilePopoverCellContent.filePopoverDescriptionTitle": "وصف الملف",
"ora-grading.FilePopoverCellContent.fileSizeTitle": "حجم الملف",
"ora-grading.InfoPopover.fileInfo": "معلومات الملف",
"ora-grading.ResponseDisplay.FileRenderer.retryButton": "إعادة المحاولة",
"ora-grading.ResponseDisplay.FileRenderer.fileNotFound": "الملف غير موجود",
"ora-grading.ResponseDisplay.FileRenderer.unknownError": "أخطاء غير معروفة",
"PageTitle": "مصحح الإجابات المفتوحة ﻷعضاء الطاقم | {siteName}",
"ora-grading.InfoPopover.alt-text": "عرض مزيد من المعلومات",
"ora-grading.CriterionFeedback.addCommentsLabel": "إضافة تعليقات",
"ora-grading.CriterionFeedback.commentsLabel": "التعليقات",
"ora-grading.CriterionFeedback.optional": "(اختياري)",
"ora-grading.RadioCriterion.optionPoints": "{points} نقطة",
"ora-grading.RadioCriterion.rubricSelectedError": "اختيار سلم التنقيط",
"ora-grading.CriterionFeedback.criterionFeedbackError": "التعليق مطلوب",
"ora-grading.CTA.feedbackMessage": "نشكرك على استخدام التجربة الجديدة لتصحيح الإجابات المفتوحة ﻷعضاء الطاقم.",
"ora-grading.CTA.linkMessage": "قدّم بعض الملاحظات",
"ora-grading.CTA.letUsKnowMessage": " و دعنا نعرف رأيك!",
"ora-grading.ReviewModal.demoHeading": "الوضع التجريبي",
"ora-grading.ReviewModal.demoMessage": "أنت تستعرض التجربة الجديدة لتصحيح الإجابات المفتوحة ﻷعضاء الطاقم. لن تستطيع إرسال درجات حتى تقوم بتنشيط الميزة. ستصبح تجربة التصحيح هذه هي الافتراضية اعتبارًا من 9 مايو (05/09/2022). للاشتراك مبكرًا أو الانسحاب، يرجى الاتصال بدعم الشركاء.",
"ora-grading.ListView.ListViewBreadcrumbs.backToResponses": "رجوع إلى جميع الإجابات المفتوحة",
"ora-grading.ListView.noResultsFoundTitle": "لا شيء هنا بعد",
"ora-grading.ListView.noResultsFoundBody": "ستظهر هنا إجابات المتعلمين غتدما يرسلونها",
"ora-grading.ListView.viewAllResponses": "عرض جميع الإجابات",
"ora-grading.ListView.viewSelectedResponses": "عرض الردود المحددة ({value})",
"ora-grading.ListView.tableHeaders.username": "اسم المستخدم",
"ora-grading.ListView.tableHeaders.teamName": "اسم الفريق",
"ora-grading.ListView.tableHeaders.learnerSubmissionDate": "تاريخ إرسال المتعلّم",
"ora-grading.ListView.tableHeaders.teamSubmissionDate": "تاريخ إرسال الفريق",
"ora-grading.ListView.tableHeaders.grade": "الدرجة",
"ora-grading.ListView.tableHeaders.gradingStatus": "وضع الدرجات",
"ora-grading.ListView.loadErrorHeading": "خطأ أثناء تحميل الإجابات",
"ora-grading.ListView.loadErrorMessage1": "حدث خطأ أثناء تحميل عمليات الإرسال لهذه الاستجابة. حاول إعادة تحميل الصفحة أو الانتقال إلى {backToResponses}.",
"ora-grading.ListView.backToResponsesLowercase": "العودة إلى جميع الردود المفتوحة",
"ora-grading.ListView.reloadSubmissions": "إعادة تحميل الإجابات",
"ora-grading.ListView.loadingResponses": "تحميل الإرسالات",
"ora-grading.ResponseDisplay.FilePopoverCell.filePopoverNameTitle": "اسم الملف",
"ora-grading.ResponseDisplay.FilePopoverCell.filePopoverDescriptionTitle": "وصف الملف",
"ora-grading.ResponseDisplay.SubmissionFiles.tableNameHeader": "الاسم",
"ora-grading.ResponseDisplay.SubmissionFiles.tableExtensionHeader": "نسق الملف",
"ora-grading.ResponseDisplay.SubmissionFiles.tablePopoverHeader": "البيانات الوصفية للملف",
"ora-grading.ResponseDisplay.SubmissionFiles.downloadFiles": "تحميل الملفات",
"ora-grading.ResponseDisplay.SubmissionFiles.downloading": "التحميل جارٍ",
"ora-grading.ResponseDisplay.SubmissionFiles.downloaded": "تم التحميل!",
"ora-grading.ResponseDisplay.SubmissionFiles.retryDownload": "تكرار محاولة التحميل",
"ora-grading.ResponseDisplay.SubmissionFiles.submissionFile": "ملفات الإجابة",
"ora-grading.ResponseDisplay.SubmissionFiles.fileSizeExceed": "تم تجاوز حجم التحميلات المسموح به",
"ora-grading.ReviewActions.overrideConfirmTitle": "هل أنت من رغبتك في تبديل هذه الدرجة؟",
"ora-grading.ReviewActions.overrideConfirmWarning": "لا يمكن التراجع عن هذا. قد يكون المتعلم قد اطّلع على درجته.",
"ora-grading.ReviewActions.overrideConfirmContinue": "متابعة تبديل الدرجة",
"ora-grading.ReviewActions.StartGradingButton.startGrading": "ابدأ التنقيط",
"ora-grading.ReviewActions.StartGradingButton.overrideGrade": "تبديل الدرجة",
"ora-grading.ReviewActions.StartGradingButton.stopGrading": "التوقف عن تنقيط هذه الإجابة",
"ora-grading.ReviewActions.StopGradingConfirmModal.override.title": "هل أنت متأكد من رغبتك في العدول عن تبديل الدرجة؟",
"ora-grading.ReviewActions.StopGradingConfirmModal.title": "هل أنت متأكد من رغبتك في العدول عن تنقيط هذه الاستجابة؟",
"ora-grading.ReviewActions.StopGradingConfirmModal.warning": "ستفقد تقدّمك.",
"ora-grading.ReviewActions.StopGradingConfirmModal.override.confirmText": "العدول عن تبديل الدرجة",
"ora-grading.ReviewActions.StopGradingConfirmModal.confirmText": "إلغاء التنقيط",
"ora-grading.ReviewActions.goBack": "العودة إلى ما سبق",
"ora-grading.ReviewActions.loadPrevious": "تحميل الإرسال السابق",
"ora-grading.ReviewActions.loadNext": "تحميل الإرسال التالي",
"ora-grading.ReviewActions.navigationLabel": "{current} من {total}",
"ora-grading.ReviewActions.pointsDisplay": "النتيجة: {pointsEarned}\\{pointsPossible}",
"ora-grading.ReviewActions.hideRubric": "إخفاء سلم التنقيط",
"ora-grading.ReviewActions.showRubric": "إظهار سلم التنقيط",
"ora-grading.ReviewModal.closeReviewConfirm.title": "هل أنت متأكد من رغبتك في إغلاق هذا النموذج؟",
"ora-grading.ReviewModal.closeReviewConfirmWarning": "لن تستطيع التراجع. سيؤدي هذا الإجراء إلى تجاهل ما لم تحفظه و إيقاف عملية التنقيط هذه.",
"ora-grading.ReviewModal.goBack": "العودة للخلف",
"ora-grading.ReviewModal.CloseReviewConfirmModal.confirmText": "إغلاق النافذة",
"ora-grading.ReviewModal.loadingResponse": "تحميل الإجابة جارٍ",
"ora-grading.ReviewModal.demoTitleMessage": "عرض الدرجات",
"ora-grading.ReviewModal.loadErrorHeading": "خطأ في تحميل عمليات الإرسال",
"ora-grading.ReviewModal.loadErrorMessage1": "حدث خطأ أثناء تحميل هذا الإرسال. حاول إعادة تحميل هذا الإرسال.",
"ora-grading.ReviewModal.reloadSubmission": "إعادة تحميل التقديم",
"ora-grading.ReviewModal.gradeNotSubmitted.heading": "لم يتم تقديم الدرجة",
"ora-grading.ReviewModal.gradeNotSubmitted.Content": "نأسف ، حدث خطأ ما عندما حاولنا إرسال هذه الدرجة. حاول مرة اخرى.",
"ora-grading.ReviewModal.resubmitGrade": "إعادة إرسال الدرجة",
"ora-grading.ReviewModal.dismiss": "تجاهل",
"ora-grading.ReviewModal.errorSubmittingGrade.Heading": "خطأ في إرسال الدرجة",
"ora-grading.ReviewModal.errorSubmittingGrade.Content": "يبدو أن شخصًا آخر قد سبقك إلى هنا! تم رفض إرسال درجتك",
"ora-grading.ReviewModal.errorLockContestedHeading": "القفل بيد مستخدم آخر",
"ora-grading.ReviewModal.errorLockContested": "القفل بيد مستخدم آخر",
"ora-grading.ReviewModal.errorLockBadRequestHeading": "الطلب غير صالح. تحقق من مدخلاتك رجاءً.",
"ora-grading.ReviewModal.errorLockBadRequest": "الطلب غير صالح. تحقق من مدخلاتك رجاءً.",
"ora-grading.ReviewModal.errorDownloadFailed": "تعذر تحميل الملفات",
"ora-grading.ReviewModal.errorDownloadFailedContent": "نحن آسفون، حدث خطأ ما حينما حاولنا تنزيل هذه الملفات. رجاءً حاول مجددًًا",
"ora-grading.ReviewModal.errorRetryDownload": "إعادة تجريب التحميل",
"ora-grading.ReviewModal.errorDownloadFailedFiles": "الملفات الفاشلة:",
"ora-grading.Rubric.gradeSubmitted": "أرسلت الدرجة",
"ora-grading.Rubric.rubric": "سلم التنقيط",
"ora-grading.Rubric.submitGrade": "إرسال الدرجة",
"ora-grading.Rubric.submittingGrade": "إرسال الدرجة جارٍ",
"ora-grading.Rubric.overallComments": "مجمل التعليقات",
"ora-grading.Rubric.addComments": "إضافة تعليقات (اختياري)",
"ora-grading.Rubric.comments": "التعليقات (اختياري)",
"ora-grading.RubricFeedback.error": "التعليق العام مطلوب",
"ora-grading.lms-api.gradingStatusDisplay.ungraded": "غير منقّط",
"ora-grading.lms-api.gradingStatusDisplay.locked": "شخص آخر يقوم بتنقيطه حاليا",
"ora-grading.lms-api.gradingStatusDisplay.graded": "تم التنقيط",
"ora-grading.lms-api.gradingStatusDisplay.inProgress": "أنت تقوم حاليا بتنقيط هذه الإجابة"
}

View File

@@ -9,6 +9,7 @@
"ora-grading.ResponseDisplay.FileRenderer.retryButton": "Reintentar",
"ora-grading.ResponseDisplay.FileRenderer.fileNotFound": "Archivo no encontrado",
"ora-grading.ResponseDisplay.FileRenderer.unknownError": "Errores desconocidos",
"PageTitle": "Clasificación del personal de ORA | {siteName}",
"ora-grading.InfoPopover.alt-text": "Mostrar más información",
"ora-grading.CriterionFeedback.addCommentsLabel": "Añadir comentarios",
"ora-grading.CriterionFeedback.commentsLabel": "Comentarios",

View File

@@ -9,7 +9,8 @@
"ora-grading.ResponseDisplay.FileRenderer.retryButton": "Réessayez",
"ora-grading.ResponseDisplay.FileRenderer.fileNotFound": "Fichier introuvable",
"ora-grading.ResponseDisplay.FileRenderer.unknownError": "Erreurs inconnues",
"ora-grading.InfoPopover.alt-text": "Afficher plus d&#39;informations",
"PageTitle": "ORA staff grading | {siteName}",
"ora-grading.InfoPopover.alt-text": "Afficher plus d'informations",
"ora-grading.CriterionFeedback.addCommentsLabel": "Ajoutez des commentaires",
"ora-grading.CriterionFeedback.commentsLabel": "Commentaires",
"ora-grading.CriterionFeedback.optional": "(Optionnel)",
@@ -20,20 +21,20 @@
"ora-grading.CTA.linkMessage": "Fournir des commentaires",
"ora-grading.CTA.letUsKnowMessage": "et dites-nous ce que vous en pensez !",
"ora-grading.ReviewModal.demoHeading": "Mode de démonstration",
"ora-grading.ReviewModal.demoMessage": "Vous présentez la nouvelle expérience de notation du personnel ORA. Vous ne pourrez pas soumettre de notes tant que vous n&#39;aurez pas activé la fonctionnalité. Cela deviendra l&#39;expérience de notation par défaut le 9 mai (05/09/2022). Pour vous inscrire plus tôt ou vous désinscrire, veuillez contacter l&#39;assistance aux partenaires.",
"ora-grading.ReviewModal.demoMessage": "Vous présentez la nouvelle expérience de notation du personnel ORA. Vous ne pourrez pas soumettre de notes tant que vous n'aurez pas activé la fonctionnalité. Cela deviendra l'expérience de notation par défaut le 9 mai (05/09/2022). Pour vous inscrire plus tôt ou vous désinscrire, veuillez contacter l'assistance aux partenaires.",
"ora-grading.ListView.ListViewBreadcrumbs.backToResponses": "Retour à toutes les réponses ouvertes",
"ora-grading.ListView.noResultsFoundTitle": "Rien ici encore",
"ora-grading.ListView.noResultsFoundBody": "Lorsque les apprenants soumettront des réponses, elles apparaîtront ici",
"ora-grading.ListView.viewAllResponses": "Afficher toutes les réponses",
"ora-grading.ListView.viewSelectedResponses": "Afficher les réponses sélectionnées ({value})",
"ora-grading.ListView.tableHeaders.username": "Nom dutilisateur",
"ora-grading.ListView.tableHeaders.teamName": "Nom de l&#39;équipe",
"ora-grading.ListView.tableHeaders.learnerSubmissionDate": "Date de soumission de l&#39;apprenant",
"ora-grading.ListView.tableHeaders.teamSubmissionDate": "Date de soumission de l&#39;équipe",
"ora-grading.ListView.tableHeaders.teamName": "Nom de l'équipe",
"ora-grading.ListView.tableHeaders.learnerSubmissionDate": "Date de soumission de l'apprenant",
"ora-grading.ListView.tableHeaders.teamSubmissionDate": "Date de soumission de l'équipe",
"ora-grading.ListView.tableHeaders.grade": "Note",
"ora-grading.ListView.tableHeaders.gradingStatus": "Statut du classement",
"ora-grading.ListView.loadErrorHeading": "Erreur lors du chargement des soumissions",
"ora-grading.ListView.loadErrorMessage1": "Une erreur s&#39;est produite lors du chargement des soumissions pour cette réponse. Essayez de recharger la page ou d&#39;aller {backToResponses}.",
"ora-grading.ListView.loadErrorMessage1": "Une erreur s'est produite lors du chargement des soumissions pour cette réponse. Essayez de recharger la page ou d'aller {backToResponses}.",
"ora-grading.ListView.backToResponsesLowercase": "retour à toutes les réponses ouvertes",
"ora-grading.ListView.reloadSubmissions": "Recharger les soumissions",
"ora-grading.ListView.loadingResponses": "Chargement des réponses",
@@ -49,7 +50,7 @@
"ora-grading.ResponseDisplay.SubmissionFiles.submissionFile": "Fichiers de soumission",
"ora-grading.ResponseDisplay.SubmissionFiles.fileSizeExceed": "Dépassement de la taille de téléchargement autorisée",
"ora-grading.ReviewActions.overrideConfirmTitle": "Êtes-vous sûr de vouloir remplacer cette note ?",
"ora-grading.ReviewActions.overrideConfirmWarning": "Ça ne peut pas être annulé. L&#39;apprenant peut avoir déjà reçu sa note.",
"ora-grading.ReviewActions.overrideConfirmWarning": "Ça ne peut pas être annulé. L'apprenant peut avoir déjà reçu sa note.",
"ora-grading.ReviewActions.overrideConfirmContinue": "Continuer le remplacement de la note",
"ora-grading.ReviewActions.StartGradingButton.startGrading": "Commencer la notation",
"ora-grading.ReviewActions.StartGradingButton.overrideGrade": "Remplacer la note",
@@ -73,20 +74,20 @@
"ora-grading.ReviewModal.loadingResponse": "Chargement de la réponse",
"ora-grading.ReviewModal.demoTitleMessage": "Démonstration de correcteur",
"ora-grading.ReviewModal.loadErrorHeading": "Erreur lors du chargement des soumissions",
"ora-grading.ReviewModal.loadErrorMessage1": "Une erreur s&#39;est produite lors du chargement de cette soumission. Essayez de recharger cette soumission.",
"ora-grading.ReviewModal.loadErrorMessage1": "Une erreur s'est produite lors du chargement de cette soumission. Essayez de recharger cette soumission.",
"ora-grading.ReviewModal.reloadSubmission": "Recharger la soumission",
"ora-grading.ReviewModal.gradeNotSubmitted.heading": "Note non soumise",
"ora-grading.ReviewModal.gradeNotSubmitted.Content": "Nous sommes désolés, une erreur s&#39;est produite lorsque nous avons essayé d&#39;envoyer cette note. Veuillez réessayer.",
"ora-grading.ReviewModal.gradeNotSubmitted.Content": "Nous sommes désolés, une erreur s'est produite lorsque nous avons essayé d'envoyer cette note. Veuillez réessayer.",
"ora-grading.ReviewModal.resubmitGrade": "Resoumettre la grille",
"ora-grading.ReviewModal.dismiss": "Ignorer",
"ora-grading.ReviewModal.errorSubmittingGrade.Heading": "Erreur lors de l&#39;envoi de la note",
"ora-grading.ReviewModal.errorSubmittingGrade.Content": "Il semble que quelqu&#39;un d&#39;autre soit arrivé le premier ! Votre soumission de note a été rejetée",
"ora-grading.ReviewModal.errorSubmittingGrade.Heading": "Erreur lors de l'envoi de la note",
"ora-grading.ReviewModal.errorSubmittingGrade.Content": "Il semble que quelqu'un d'autre soit arrivé le premier ! Votre soumission de note a été rejetée",
"ora-grading.ReviewModal.errorLockContestedHeading": "La serrure appartenant à un autre utilisateur",
"ora-grading.ReviewModal.errorLockContested": "La serrure appartenant à un autre utilisateur",
"ora-grading.ReviewModal.errorLockBadRequestHeading": "Requête invalide. Veuillez vérifier votre entrée.",
"ora-grading.ReviewModal.errorLockBadRequest": "Requête invalide. Veuillez vérifier votre entrée.",
"ora-grading.ReviewModal.errorDownloadFailed": "Impossible de télécharger les fichiers",
"ora-grading.ReviewModal.errorDownloadFailedContent": "Nous sommes désolés, une erreur s&#39;est produite lorsque nous avons essayé de télécharger ces fichiers. Veuillez réessayer.",
"ora-grading.ReviewModal.errorDownloadFailedContent": "Nous sommes désolés, une erreur s'est produite lorsque nous avons essayé de télécharger ces fichiers. Veuillez réessayer.",
"ora-grading.ReviewModal.errorRetryDownload": "Réessayez le téléchargement",
"ora-grading.ReviewModal.errorDownloadFailedFiles": "Fichiers ayant échoué :",
"ora-grading.Rubric.gradeSubmitted": "Note soumise",
@@ -98,7 +99,7 @@
"ora-grading.Rubric.comments": "Commentaires (optionnel)",
"ora-grading.RubricFeedback.error": "La rétroaction globale est requise",
"ora-grading.lms-api.gradingStatusDisplay.ungraded": "Non noté",
"ora-grading.lms-api.gradingStatusDisplay.locked": "Actuellement noté par quelqu&#39;un d&#39;autre",
"ora-grading.lms-api.gradingStatusDisplay.locked": "Actuellement noté par quelqu'un d'autre",
"ora-grading.lms-api.gradingStatusDisplay.graded": "Classement terminé",
"ora-grading.lms-api.gradingStatusDisplay.inProgress": "Vous notez actuellement cette réponse"
}

View File

@@ -9,6 +9,7 @@
"ora-grading.ResponseDisplay.FileRenderer.retryButton": "Retry",
"ora-grading.ResponseDisplay.FileRenderer.fileNotFound": "File not found",
"ora-grading.ResponseDisplay.FileRenderer.unknownError": "Unknown errors",
"PageTitle": "ORA staff grading | {siteName}",
"ora-grading.InfoPopover.alt-text": "Display more info",
"ora-grading.CriterionFeedback.addCommentsLabel": "Add comments",
"ora-grading.CriterionFeedback.commentsLabel": "Comments",

View File

@@ -17,7 +17,7 @@ import {
import { messages as footerMessages } from '@edx/frontend-component-footer';
import { messages as headerMesssages } from '@edx/frontend-component-header';
import { messages as paragonMessages } from '@edx/paragon';
import { IntlProvider } from '@edx/frontend-platform/i18n';
import messages from './i18n';
@@ -56,6 +56,7 @@ initialize({
messages,
headerMesssages,
footerMessages,
paragonMessages,
],
requireAuthenticatedUser: true,
});

View File

@@ -18,11 +18,17 @@ jest.mock('react', () => ({
jest.mock('@edx/frontend-platform/i18n', () => {
const i18n = jest.requireActual('@edx/frontend-platform/i18n');
const PropTypes = jest.requireActual('prop-types');
const { formatMessage } = jest.requireActual('./testUtils');
const formatDate = jest.fn(date => new Date(date).toLocaleDateString()).mockName('useIntl.formatDate');
return {
...i18n,
intlShape: PropTypes.shape({
formatMessage: PropTypes.func,
}),
useIntl: () => ({
formatMessage,
formatDate,
}),
defineMessages: m => m,
FormattedMessage: () => 'FormattedMessage',
};