diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6ec2e55e..7742ae6b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ variables: TUTOR_PLUGIN: mfe - TUTOR_IMAGES: mfe authn-dev account-dev communications-dev course-authoring-dev discussions-dev gradebook-dev learner-dashboard-dev learning-dev ora-grading-dev profile-dev + TUTOR_IMAGES: mfe account-dev authn-dev authoring-dev communications-dev discussions-dev gradebook-dev learner-dashboard-dev learning-dev ora-grading-dev profile-dev TUTOR_PYPI_PACKAGE: tutor-mfe GITHUB_REPO: overhangio/tutor-mfe diff --git a/README.rst b/README.rst index 240950ee..aace8302 100644 --- a/README.rst +++ b/README.rst @@ -6,9 +6,9 @@ This plugin makes it possible to easily add micro frontend (MFE) applications on In addition, this plugin comes with a few MFEs which are enabled by default: - `Authn `__ +- `Authoring `__ - `Account `__ - `Communications `__ -- `Course Authoring `__ - `Discussions `__ - `Gradebook `__ - `Learner Dashboard `__ @@ -39,6 +39,14 @@ To check what the current value of `MFE_HOST` is actually set to, run:: tutor config printvalue MFE_HOST +Account +~~~~~~~ + +.. image:: https://raw.githubusercontent.com/overhangio/tutor-mfe/master/media/account.png + :alt: Account MFE screenshot + +An MFE to manage account-specific information for every LMS user. Each user's account page is available at ``http(s)://{{ MFE_HOST }}/account``. For instance, when running locally: https://apps.local.edly.io/account. + Authn ~~~~~ @@ -47,13 +55,14 @@ Authn This is a micro-frontend application responsible for the login, registration and password reset functionality. -Account -~~~~~~~ +Authoring +~~~~~~~~~ -.. image:: https://raw.githubusercontent.com/overhangio/tutor-mfe/master/media/account.png - :alt: Account MFE screenshot +.. image:: https://raw.githubusercontent.com/overhangio/tutor-mfe/master/media/authoring.png + :alt: Course Authoring MFE screenshot + +This MFE is meant for course authors and maintainers. For a given course, it exposes a "Pages & Resources" menu in Studio where one can enable or disable a variety of features, including, for example, the Wiki and Discussions. Optionally, it allows authors to replace the legacy HTML, Video, and Problem authoring tools with experimental React-based versions, as well as exposing a new proctoring interface that can be enabled if the `edx-exams `_ service is available. -An MFE to manage account-specific information for every LMS user. Each user's account page is available at ``http(s)://{{ MFE_HOST }}/account``. For instance, when running locally: https://apps.local.edly.io/account. Communications ~~~~~~~~~~~~~~ @@ -63,14 +72,6 @@ Communications The Communications micro-frontend exposes an interface for course teams to communicate with learners. It achieves this by allowing instructors to send out emails in bulk, either by scheduling them or on demand. -Course Authoring -~~~~~~~~~~~~~~~~ - -.. image:: https://raw.githubusercontent.com/overhangio/tutor-mfe/master/media/course-authoring.png - :alt: Course Authoring MFE screenshot - -This MFE is meant for course authors and maintainers. For a given course, it exposes a "Pages & Resources" menu in Studio where one can enable or disable a variety of features, including, for example, the Wiki and Discussions. Optionally, it allows authors to replace the legacy HTML, Video, and Problem authoring tools with experimental React-based versions, as well as exposing a new proctoring interface that can be enabled if the `edx-exams `_ service is available. - Discussions ~~~~~~~~~~~ diff --git a/changelog.d/20240920_143739_regis_authoring_rename.md b/changelog.d/20240920_143739_regis_authoring_rename.md new file mode 100644 index 00000000..377e5242 --- /dev/null +++ b/changelog.d/20240920_143739_regis_authoring_rename.md @@ -0,0 +1 @@ +- 💥[Feature] Rename course-authoring MFE to "authoring". Existing URLs are redirected for backward compatibility. (by @regisb) diff --git a/media/course-authoring.png b/media/authoring.png similarity index 100% rename from media/course-authoring.png rename to media/authoring.png diff --git a/tutormfe/patches/openedx-cms-development-settings b/tutormfe/patches/openedx-cms-development-settings index ec895df5..9b712402 100644 --- a/tutormfe/patches/openedx-cms-development-settings +++ b/tutormfe/patches/openedx-cms-development-settings @@ -1,7 +1,7 @@ # MFE-specific settings -{% if get_mfe("course-authoring") %} -COURSE_AUTHORING_MICROFRONTEND_URL = "http://{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}/course-authoring" -CORS_ORIGIN_WHITELIST.append("http://{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}") -LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}") -CSRF_TRUSTED_ORIGINS.append("http://{{ MFE_HOST }}:{{ get_mfe('course-authoring')["port"] }}") +{% if get_mfe("authoring") %} +COURSE_AUTHORING_MICROFRONTEND_URL = "http://{{ MFE_HOST }}:{{ get_mfe('authoring')["port"] }}/authoring" +CORS_ORIGIN_WHITELIST.append("http://{{ MFE_HOST }}:{{ get_mfe('authoring')["port"] }}") +LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}:{{ get_mfe('authoring')["port"] }}") +CSRF_TRUSTED_ORIGINS.append("http://{{ MFE_HOST }}:{{ get_mfe('authoring')["port"] }}") {% endif %} diff --git a/tutormfe/patches/openedx-cms-production-settings b/tutormfe/patches/openedx-cms-production-settings index b1b5e163..e3866092 100644 --- a/tutormfe/patches/openedx-cms-production-settings +++ b/tutormfe/patches/openedx-cms-production-settings @@ -1,6 +1,6 @@ # MFE-specific settings -{% if get_mfe("course-authoring") %} -COURSE_AUTHORING_MICROFRONTEND_URL = "{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}/course-authoring" +{% if get_mfe("authoring") %} +COURSE_AUTHORING_MICROFRONTEND_URL = "{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}/authoring" {% endif %} LOGIN_REDIRECT_WHITELIST.append("{{ MFE_HOST }}") diff --git a/tutormfe/patches/openedx-lms-development-settings b/tutormfe/patches/openedx-lms-development-settings index 79da7401..ce484dde 100644 --- a/tutormfe/patches/openedx-lms-development-settings +++ b/tutormfe/patches/openedx-lms-development-settings @@ -35,8 +35,8 @@ ACCOUNT_MICROFRONTEND_URL = "http://{{ MFE_HOST }}:{{ get_mfe("account")["port"] MFE_CONFIG["ACCOUNT_SETTINGS_URL"] = ACCOUNT_MICROFRONTEND_URL {% endif %} -{% if get_mfe("course-authoring") %} -MFE_CONFIG["COURSE_AUTHORING_MICROFRONTEND_URL"] = "http://{{ MFE_HOST }}:{{ get_mfe("course-authoring")["port"] }}/course-authoring" +{% if get_mfe("authoring") %} +MFE_CONFIG["COURSE_AUTHORING_MICROFRONTEND_URL"] = "http://{{ MFE_HOST }}:{{ get_mfe("authoring")["port"] }}/authoring" MFE_CONFIG["ENABLE_ASSETS_PAGE"] = "true" MFE_CONFIG["ENABLE_HOME_PAGE_COURSE_API_V2"] = "true" MFE_CONFIG["ENABLE_PROGRESS_GRAPH_SETTINGS"] = "true" diff --git a/tutormfe/patches/openedx-lms-production-settings b/tutormfe/patches/openedx-lms-production-settings index d7b7a42a..baaf6026 100644 --- a/tutormfe/patches/openedx-lms-production-settings +++ b/tutormfe/patches/openedx-lms-production-settings @@ -36,8 +36,8 @@ ACCOUNT_MICROFRONTEND_URL = "{% if ENABLE_HTTPS %}https://{% else %}http://{% en MFE_CONFIG["ACCOUNT_SETTINGS_URL"] = ACCOUNT_MICROFRONTEND_URL {% endif %} -{% if get_mfe("course-authoring") %} -MFE_CONFIG["COURSE_AUTHORING_MICROFRONTEND_URL"] = "{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}/course-authoring" +{% if get_mfe("authoring") %} +MFE_CONFIG["COURSE_AUTHORING_MICROFRONTEND_URL"] = "{% if ENABLE_HTTPS %}https://{% else %}http://{% endif %}{{ MFE_HOST }}/authoring" MFE_CONFIG["ENABLE_ASSETS_PAGE"] = "true" MFE_CONFIG["ENABLE_HOME_PAGE_COURSE_API_V2"] = "true" MFE_CONFIG["ENABLE_PROGRESS_GRAPH_SETTINGS"] = "true" diff --git a/tutormfe/plugin.py b/tutormfe/plugin.py index 9f8a6487..6cc34fc9 100644 --- a/tutormfe/plugin.py +++ b/tutormfe/plugin.py @@ -35,6 +35,10 @@ "repository": "https://github.com/openedx/frontend-app-authn.git", "port": 1999, }, + "authoring": { + "repository": "https://github.com/openedx/frontend-app-authoring.git", + "port": 2001, + }, "account": { "repository": "https://github.com/openedx/frontend-app-account.git", "port": 1997, @@ -43,10 +47,6 @@ "repository": "https://github.com/openedx/frontend-app-communications.git", "port": 1984, }, - "course-authoring": { - "repository": "https://github.com/openedx/frontend-app-course-authoring.git", - "port": 2001, - }, "discussions": { "repository": "https://github.com/openedx/frontend-app-discussions.git", "port": 2002, diff --git a/tutormfe/templates/mfe/apps/mfe/Caddyfile b/tutormfe/templates/mfe/apps/mfe/Caddyfile index 19081c99..115d57c5 100644 --- a/tutormfe/templates/mfe/apps/mfe/Caddyfile +++ b/tutormfe/templates/mfe/apps/mfe/Caddyfile @@ -20,6 +20,12 @@ header_up Host {{ LMS_HOST }} } + {% if is_mfe_enabled("authoring") %} + # redirect /course-authoring to /authoring, for backward compatibility + @authoring path_regexp authoring /course-authoring/(.*) + redir @authoring /authoring/{re.authoring.1} permanent + {% endif %} + {% for app_name, app in iter_mfes() %} @mfe_{{ app_name }} { path /{{ app_name }} /{{ app_name }}/* diff --git a/tutormfe/templates/mfe/build/mfe/Dockerfile b/tutormfe/templates/mfe/build/mfe/Dockerfile index ad89839c..29cc7efd 100644 --- a/tutormfe/templates/mfe/build/mfe/Dockerfile +++ b/tutormfe/templates/mfe/build/mfe/Dockerfile @@ -12,7 +12,7 @@ RUN apt update \ python g++ \ # required for image-webpack-loader (on arm) libpng-dev \ - # required for building node-canvas (on arm, for course-authoring) + # required for building node-canvas (on arm, for authoring) # https://www.npmjs.com/package/canvas libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev diff --git a/tutormfe/templates/mfe/tasks/lms/init b/tutormfe/templates/mfe/tasks/lms/init index 74cd7c70..76247c3b 100644 --- a/tutormfe/templates/mfe/tasks/lms/init +++ b/tutormfe/templates/mfe/tasks/lms/init @@ -35,7 +35,7 @@ grep courseware.always_open_auxiliary_sidebar /tmp/lms_waffle_flags.txt || ./man courseware.always_open_auxiliary_sidebar {% endif %} -{% if is_mfe_enabled("course-authoring") %} +{% if is_mfe_enabled("authoring") %} grep contentstore.new_studio_mfe.use_new_advanced_settings_page /tmp/lms_waffle_flags.txt || ./manage.py lms waffle_flag --create --everyone contentstore.new_studio_mfe.use_new_advanced_settings_page grep contentstore.new_studio_mfe.use_new_certificates_page /tmp/lms_waffle_flags.txt || ./manage.py lms waffle_flag --create --everyone contentstore.new_studio_mfe.use_new_certificates_page grep contentstore.new_studio_mfe.use_new_course_outline_page /tmp/lms_waffle_flags.txt || ./manage.py lms waffle_flag --create --everyone contentstore.new_studio_mfe.use_new_course_outline_page