Skip to content

Commit

Permalink
🔖(minor) bump to 2.27.0
Browse files Browse the repository at this point in the history
Added
- Add `SaleTunnelNotValidated` step into `SaleTunnel`
- Add WarningIcon component

Changed
- Improve Lyra error management to abort payment properly

Fixed
- Use CB logo as fallback if credit card is unknown
- Put CunninghamProvider at root level
- Resubmit order on payment failure
- Render course run resource link with button look'n feel when it does not match
  a LMS Backend
- Manage display of CourseRun dates when end date and/or enrollment date are
  undefined
  • Loading branch information
jbpenrath committed Jun 3, 2024
1 parent 21b0b84 commit 2951503
Show file tree
Hide file tree
Showing 51 changed files with 2,776 additions and 260 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Versioning](https://semver.org/spec/v2.0.0.html).

## [Unrealeased]

## [2.27.0]

### Added

- Add `SaleTunnelNotValidated` step into `SaleTunnel`
Expand Down Expand Up @@ -2108,7 +2110,8 @@ us:
- finish integrating the missing pages and improve the sandbox environment;
- test and polish the use of richie as a django app / node dependency.

[unreleased]: https://github.com/openfun/richie/compare/v2.26.0...master
[unreleased]: https://github.com/openfun/richie/compare/v2.27.0...master
[2.27.0]: https://github.com/openfun/richie/compare/v2.26.0...v2.27.0
[2.26.0]: https://github.com/openfun/richie/compare/v2.25.1...v2.26.0
[2.25.1]: https://github.com/openfun/richie/compare/v2.25.0...v2.25.1
[2.25.0]: https://github.com/openfun/richie/compare/v2.25.0-beta.1...v2.25.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ django-storages==1.13.2
dockerflow==2022.8.0
gunicorn==22.0.0
psycopg2-binary==2.9.9
richie==2.26.0
richie==2.27.0
unidecode==1.3.6 # required by django-check-seo
sentry-sdk==1.39.1
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"CMS"
],
"dependencies": {
"richie-education": "2.26.0"
"richie-education": "2.27.0"
},
"devDependencies": {
"@formatjs/cli": "6.2.4",
Expand Down
4 changes: 2 additions & 2 deletions docs/cookiecutter.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ If you chose to install Cookiecutter, you can now run it against our
[template][2] as follows:

```bash
cookiecutter gh:openfun/richie --directory cookiecutter --checkout v2.26.0
cookiecutter gh:openfun/richie --directory cookiecutter --checkout v2.27.0
```

If you didn't want to install it on your machine, we provide a Docker image
built with our [own repository][4] that you can use as follows:

```bash
docker run --rm -it -u $(id -u):$(id -g) -v $PWD:/app \
fundocker/cookiecutter gh:openfun/richie --directory cookiecutter --checkout v2.26.0
fundocker/cookiecutter gh:openfun/richie --directory cookiecutter --checkout v2.27.0
```

The `--directory` option is to indicate that our Cookiecutter template is in
Expand Down
74 changes: 49 additions & 25 deletions src/frontend/i18n/locales/ar-SA.json
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@
},
"components.CourseProductItem.fromTo": {
"description": "Course run date range",
"message": "From {from} to {to}"
"message": "From {from} {to, select, undefined {} other {to {to}}}"
},
"components.CourseProductItem.loadingInitial": {
"description": "Accessible text for the initial loading spinner displayed when product is fetching",
Expand Down Expand Up @@ -293,11 +293,11 @@
},
"components.CourseRunItem.courseRunTitleWithDates": {
"description": "Course run details displayed on the syllabus",
"message": "{title}, from {start} to {end}"
"message": "{title}, from {start} {end, select, undefined {} other {to {end}}}"
},
"components.CourseRunItem.courseRunWithDates": {
"description": "Course run details displayed on the syllabus when it has no title",
"message": "From {start} to {end}"
"message": "From {start} {end, select, undefined {} other {to {end}}}"
},
"components.CourseRunItemWithEnrollment.enrolled": {
"description": "Help text for users are enrolled in the course run.",
Expand All @@ -317,7 +317,7 @@
},
"components.CourseRunList.dataCourseRunPeriod": {
"description": "Message displayed in course run datagrid for course run period",
"message": "From {from} to {to}"
"message": "From {from} {to, select, undefined {} other {to {to}}}"
},
"components.CourseRunList.noCourseRunAvailable": {
"description": "Text displayed when no course run are opened for the course",
Expand Down Expand Up @@ -877,7 +877,7 @@
},
"components.EnrollableCourseRunList.ariaSelectCourseRun": {
"description": "Accessible label used by screen reader when user checked a course run radio input.",
"message": "Select course run from {start} to {end}."
"message": "Select course run from {start} {end, select, undefined {} other {to {end}}}."
},
"components.EnrollableCourseRunList.enroll": {
"description": "Text label for the enroll button",
Expand Down Expand Up @@ -919,10 +919,18 @@
"description": "Accessible label displayed when user is being unenrolled.",
"message": "Unenrolling..."
},
"components.EnrollmentDate.enrollClosed": {
"description": "Text label for the enrollment dates when enrollment is passed",
"message": "Enrollment closed since {date}"
},
"components.EnrollmentDate.enrollFrom": {
"description": "Text label for the enrollment dates when enrollment is not yet opened",
"message": "Enrollment from {date}"
},
"components.EnrollmentDate.enrollSince": {
"description": "Text label for the enrollment dates when enrollment opened and never closed",
"message": "Enrollment open since {date}"
},
"components.EnrollmentDate.enrollUntil": {
"description": "Text label for the enrollment dates when enrollment is opened",
"message": "Enrollment until {date}"
Expand Down Expand Up @@ -1223,45 +1231,61 @@
"description": "Title of clickable link included in the terms message",
"message": "Open a preview of the General Terms of Sale"
},
"components.SaleTunnelStepResume.congratulations": {
"components.SaleTunnelStepValidation.availableCourseRuns": {
"description": "Course runs available text",
"message": "{ count, plural, =0 {No course runs} one {One course run} other {# course runs} } available"
},
"components.SaleTunnelStepValidation.courseRunDates": {
"description": "Course run date text",
"message": "From {start} {end, select, undefined {} other {to {end}}}"
},
"components.SaleTunnelStepValidation.language": {
"description": "Label displayed before the list of languages",
"message": "{ count, plural, one {Language:} other {Languages:} }"
},
"components.SaleTunnelStepValidation.noCourseRunAvailable": {
"description": "Text displayed when no course run are opened for the course",
"message": "No session available for this course."
},
"components.SaleTunnelSuccess.congratulations": {
"description": "Text displayed to thank user for his order",
"message": "Congratulations!"
},
"components.SaleTunnelStepResume.cta": {
"components.SaleTunnelSuccess.cta": {
"description": "Label to the call to action to close sale tunnel",
"message": "Start this course now!"
},
"components.SaleTunnelStepResume.ctaSignature": {
"components.SaleTunnelSuccess.ctaSignature": {
"description": "Label to the call to action to close sale tunnel if there is a pending signature",
"message": "Sign the training contract"
},
"components.SaleTunnelStepResume.successDetailMessage": {
"components.SaleTunnelSuccess.successDetailMessage": {
"description": "Text to remind that order's invoice will be send by email soon",
"message": "You will receive your invoice by email in a few moments."
},
"components.SaleTunnelStepResume.successDetailSignatureMessage": {
"components.SaleTunnelSuccess.successDetailSignatureMessage": {
"description": "Text to remind that order needs to be signed",
"message": "In order to enroll to course runs you first need to sign the training contract."
},
"components.SaleTunnelStepResume.successMessage": {
"components.SaleTunnelSuccess.successMessage": {
"description": "Message to confirm that order has been created",
"message": "Your order has been successfully created."
},
"components.SaleTunnelStepValidation.availableCourseRuns": {
"description": "Course runs available text",
"message": "{ count, plural, =0 {No course runs} one {One course run} other {# course runs} } available"
"components.SaleTunnelSuccessNotValidated.apology": {
"description": "Text displayed to thank user for his order",
"message": "Sorry, you'll have to wait a little longer!"
},
"components.SaleTunnelStepValidation.courseRunDates": {
"description": "Course run date text",
"message": "From {start} to {end}"
"components.SaleTunnelSuccessNotValidated.cta": {
"description": "Label to the call to action to close sale tunnel",
"message": "Close"
},
"components.SaleTunnelStepValidation.language": {
"description": "Label displayed before the list of languages",
"message": "{ count, plural, one {Language:} other {Languages:} }"
"components.SaleTunnelSuccessNotValidated.description": {
"description": "Text to remind that order's invoice will be send by email soon",
"message": "Your payment has succeeded but your order validation is taking too long, you can close this dialog and come back later. You will receive your invoice by email in a few moments."
},
"components.SaleTunnelStepValidation.noCourseRunAvailable": {
"description": "Text displayed when no course run are opened for the course",
"message": "No session available for this course."
"components.SaleTunnelSuccessNotValidated.title": {
"description": "Message to confirm that order has been created",
"message": "It takes too long to validate your order."
},
"components.Search.errorMessage": {
"description": "Error message for Search view when the request to load courses fails",
Expand Down Expand Up @@ -1629,11 +1653,11 @@
},
"components.useCourseRunPeriodMessage.onGoingEnrolledRunPeriod": {
"description": "Text to display when a course run is ongoing and the user is enrolled to.",
"message": "You are enrolled for this session. It's open from {startDate} to {endDate}"
"message": "You are enrolled for this session. It's open from {startDate} {endDate, select, undefined {} other {to {endDate}}}"
},
"components.useCourseRunPeriodMessage.onGoingRunPeriod": {
"description": "Text to display when a course run is on going.",
"message": "This session started on {startDate} and will end on {endDate}"
"message": "This session started on {startDate} {endDate, select, undefined {} other {and will end on {endDate}}}"
},
"components.useStaticFilters.courses": {
"description": "localized human_name label for coursesConfig filter name",
Expand Down
74 changes: 49 additions & 25 deletions src/frontend/i18n/locales/es-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@
},
"components.CourseProductItem.fromTo": {
"description": "Course run date range",
"message": "From {from} to {to}"
"message": "From {from} {to, select, undefined {} other {to {to}}}"
},
"components.CourseProductItem.loadingInitial": {
"description": "Accessible text for the initial loading spinner displayed when product is fetching",
Expand Down Expand Up @@ -293,11 +293,11 @@
},
"components.CourseRunItem.courseRunTitleWithDates": {
"description": "Course run details displayed on the syllabus",
"message": "{title}, from {start} to {end}"
"message": "{title}, from {start} {end, select, undefined {} other {to {end}}}"
},
"components.CourseRunItem.courseRunWithDates": {
"description": "Course run details displayed on the syllabus when it has no title",
"message": "From {start} to {end}"
"message": "From {start} {end, select, undefined {} other {to {end}}}"
},
"components.CourseRunItemWithEnrollment.enrolled": {
"description": "Help text for users are enrolled in the course run.",
Expand All @@ -317,7 +317,7 @@
},
"components.CourseRunList.dataCourseRunPeriod": {
"description": "Message displayed in course run datagrid for course run period",
"message": "From {from} to {to}"
"message": "From {from} {to, select, undefined {} other {to {to}}}"
},
"components.CourseRunList.noCourseRunAvailable": {
"description": "Text displayed when no course run are opened for the course",
Expand Down Expand Up @@ -877,7 +877,7 @@
},
"components.EnrollableCourseRunList.ariaSelectCourseRun": {
"description": "Accessible label used by screen reader when user checked a course run radio input.",
"message": "Select course run from {start} to {end}."
"message": "Select course run from {start} {end, select, undefined {} other {to {end}}}."
},
"components.EnrollableCourseRunList.enroll": {
"description": "Text label for the enroll button",
Expand Down Expand Up @@ -919,10 +919,18 @@
"description": "Accessible label displayed when user is being unenrolled.",
"message": "Unenrolling..."
},
"components.EnrollmentDate.enrollClosed": {
"description": "Text label for the enrollment dates when enrollment is passed",
"message": "Enrollment closed since {date}"
},
"components.EnrollmentDate.enrollFrom": {
"description": "Text label for the enrollment dates when enrollment is not yet opened",
"message": "Enrollment from {date}"
},
"components.EnrollmentDate.enrollSince": {
"description": "Text label for the enrollment dates when enrollment opened and never closed",
"message": "Enrollment open since {date}"
},
"components.EnrollmentDate.enrollUntil": {
"description": "Text label for the enrollment dates when enrollment is opened",
"message": "Enrollment until {date}"
Expand Down Expand Up @@ -1223,45 +1231,61 @@
"description": "Title of clickable link included in the terms message",
"message": "Open a preview of the General Terms of Sale"
},
"components.SaleTunnelStepResume.congratulations": {
"components.SaleTunnelStepValidation.availableCourseRuns": {
"description": "Course runs available text",
"message": "{ count, plural, =0 {No course runs} one {One course run} other {# course runs} } available"
},
"components.SaleTunnelStepValidation.courseRunDates": {
"description": "Course run date text",
"message": "From {start} {end, select, undefined {} other {to {end}}}"
},
"components.SaleTunnelStepValidation.language": {
"description": "Label displayed before the list of languages",
"message": "{ count, plural, one {Language:} other {Languages:} }"
},
"components.SaleTunnelStepValidation.noCourseRunAvailable": {
"description": "Text displayed when no course run are opened for the course",
"message": "No session available for this course."
},
"components.SaleTunnelSuccess.congratulations": {
"description": "Text displayed to thank user for his order",
"message": "Congratulations!"
},
"components.SaleTunnelStepResume.cta": {
"components.SaleTunnelSuccess.cta": {
"description": "Label to the call to action to close sale tunnel",
"message": "Start this course now!"
},
"components.SaleTunnelStepResume.ctaSignature": {
"components.SaleTunnelSuccess.ctaSignature": {
"description": "Label to the call to action to close sale tunnel if there is a pending signature",
"message": "Sign the training contract"
},
"components.SaleTunnelStepResume.successDetailMessage": {
"components.SaleTunnelSuccess.successDetailMessage": {
"description": "Text to remind that order's invoice will be send by email soon",
"message": "You will receive your invoice by email in a few moments."
},
"components.SaleTunnelStepResume.successDetailSignatureMessage": {
"components.SaleTunnelSuccess.successDetailSignatureMessage": {
"description": "Text to remind that order needs to be signed",
"message": "In order to enroll to course runs you first need to sign the training contract."
},
"components.SaleTunnelStepResume.successMessage": {
"components.SaleTunnelSuccess.successMessage": {
"description": "Message to confirm that order has been created",
"message": "Your order has been successfully created."
},
"components.SaleTunnelStepValidation.availableCourseRuns": {
"description": "Course runs available text",
"message": "{ count, plural, =0 {No course runs} one {One course run} other {# course runs} } available"
"components.SaleTunnelSuccessNotValidated.apology": {
"description": "Text displayed to thank user for his order",
"message": "Sorry, you'll have to wait a little longer!"
},
"components.SaleTunnelStepValidation.courseRunDates": {
"description": "Course run date text",
"message": "De {start} a {end}"
"components.SaleTunnelSuccessNotValidated.cta": {
"description": "Label to the call to action to close sale tunnel",
"message": "Close"
},
"components.SaleTunnelStepValidation.language": {
"description": "Label displayed before the list of languages",
"message": "{ count, plural, one {Language:} other {Languages:} }"
"components.SaleTunnelSuccessNotValidated.description": {
"description": "Text to remind that order's invoice will be send by email soon",
"message": "Your payment has succeeded but your order validation is taking too long, you can close this dialog and come back later. You will receive your invoice by email in a few moments."
},
"components.SaleTunnelStepValidation.noCourseRunAvailable": {
"description": "Text displayed when no course run are opened for the course",
"message": "No session available for this course."
"components.SaleTunnelSuccessNotValidated.title": {
"description": "Message to confirm that order has been created",
"message": "It takes too long to validate your order."
},
"components.Search.errorMessage": {
"description": "Error message for Search view when the request to load courses fails",
Expand Down Expand Up @@ -1629,11 +1653,11 @@
},
"components.useCourseRunPeriodMessage.onGoingEnrolledRunPeriod": {
"description": "Text to display when a course run is ongoing and the user is enrolled to.",
"message": "You are enrolled for this session. It's open from {startDate} to {endDate}"
"message": "You are enrolled for this session. It's open from {startDate} {endDate, select, undefined {} other {to {endDate}}}"
},
"components.useCourseRunPeriodMessage.onGoingRunPeriod": {
"description": "Text to display when a course run is on going.",
"message": "This session started on {startDate} and will end on {endDate}"
"message": "This session started on {startDate} {endDate, select, undefined {} other {and will end on {endDate}}}"
},
"components.useStaticFilters.courses": {
"description": "localized human_name label for coursesConfig filter name",
Expand Down
Loading

0 comments on commit 2951503

Please sign in to comment.