diff --git a/.github/workflows/auto-add-to-project.yml b/.github/workflows/auto-add-to-project.yml
index af1f35190..0e12752e6 100644
--- a/.github/workflows/auto-add-to-project.yml
+++ b/.github/workflows/auto-add-to-project.yml
@@ -1,9 +1,12 @@
-name: Auto Add Issues to Project
+name: Auto Add Issues and Pull Requests to Project
on:
issues:
types:
- opened
+ pull_request_target:
+ types:
+ - opened
jobs:
# https://github.com/actions/add-to-project
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 5a023449b..fde891c36 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -15,8 +15,6 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: 3.9
- - name: Upgrade pip
- run: python -m pip install --upgrade pip setuptools
- name: Install dependencies
run: |
pip install .[dev]
diff --git a/.gitignore b/.gitignore
index f6a874f21..e6c3f6d8b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,9 @@ __pycache__
*.egg-info/
/build/
/dist/
+.DS_Store
+
+### Editors ###
+*~
+/temp
+/.vscode
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 38d6a7f1b..61b55d0ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,68 +19,136 @@ instructions, because git commits are used to generate release notes:
+
+## v20.0.1 (2025-09-23)
+
+- [Improvement] Make latex response editor background colours WCAG compliant in dark theme. (by @Danyal-Faheem)
+
+- [Improvement] Sync footer in both MFE pages and templates (by @zubairshakoorarbisoft)
+
+
+
+## v20.0.0 (2025-06-16)
+
+- π₯[Feature] Upgrade to teak. (by @HammadYousaf01)
+
+- [Bugfix] Remove reference to old account toggles. (by @ahmed-arb)
+
+- [BugFix] Bump Indigo Header and Footer versions to fix image build failure due to React 18 upgrades in upstream MFEs (by @HammadYousaf01)
+
+
+
+## v19.0.3 (2025-06-05)
+
+- [Improvement] Fix multiple accessibility issues across the platform including screen reader compatibility, keyboard navigation, focus visibility, and WCAG compliance improvements. (by @arbirali and @zubairshakoorarbisoft)
+ - Add visible titles to image-based links for better screen reader support (#150)
+ - Make "Learn More" links accessible to screen readers (#151)
+ - Improve "Open Responses" table headers for keyboard accessibility (#152)
+ - Add accessible names to social media icons (#155)
+ - Enhance theme toggle with descriptive labels (#156)
+ - Increase focus visible thickness for better visibility (#158)
+ - Fix "Skip to main content" link display (#159)
+ - Resolve accessibility and reflow issues in Wiki, Teams, and Instructor Dashboard (#163)
+ - General accessibility fixes reported during review (#147)
+
+
+
+## v19.0.2 (2025-05-27)
+
+- [Improvement] Migrate from `setup.py` (setuptools) to `pyproject.toml` (hatch). (by @ahmed-arb)
+
+- [Improvement] Add hatch_build.py in sdist target to fix the installation issues (by @dawoudsheraz)
+
+- [BugFix] Fix runtime footer import error in env.config.jsx for unsupported MFEs. (by @ahmed-arb)
+
+- [BugFix] Maintain selected emoji color in survey xblock. (by @mlabeeb03)
+
+- [Improvement] Change color of headings and list items in dark mode to improve readability. (by @mlabeeb03)
+
+
+
+## v19.0.1 (2025-01-26)
+
+- [BugFix] Fix env.config.jsx for dark theme and Indigo footer by including the patches folder in MANIFEST.in for python pypi package. (by @hinakhadim)
+
+
+
+## v19.0.0 (2024-12-11)
+
+- π₯[Feature] Upgrade to Sumac (by @hinakhadim)
+
+
## v18.3.0 (2024-12-11)
- π₯ [Deprecation] Drop support for python 3.8 and set Python 3.9 as the minimum supported python version. (by @hinakhadim)
- π₯[Improvement] Rename Tutor's two branches (by @DawoudSheraz):
- * Rename **master** to **release**, as this branch runs the latest official Open edX release tag.
- * Rename **nightly** to **main**, as this branch runs the Open edX master branches, which are the basis for the next Open edX release.
+ - Rename **master** to **release**, as this branch runs the latest official Open edX release tag.
+ - Rename **nightly** to **main**, as this branch runs the Open edX master branches, which are the basis for the next Open edX release.
- [Bugfix] Fix dropdown select rendering issue on light theme (by @dawoudsheraz)
- - ".wrapper-problem-response" did not need any dark theme variables outside dark-theme class for dropdown problems. This was causing the dropdown to use dark theme variables regardless of the theme that user selected.
+ - ".wrapper-problem-response" did not need any dark theme variables outside dark-theme class for dropdown problems. This was causing the dropdown to use dark theme variables regardless of the theme that user selected.
- [Bugfix] Add dark-theme for Course Handouts and Course Updates that appears on Learning MFE Course Outline Page (by @hinakhadim)
- [Bugfix] Update dark-theme styles for ORA (Open Response Assessment) so that it becomes readable, usable, beautiful, and appealing (by @hinakhadim)
- - The readability of styles in the `scss` file is challenging and will be improved in subsequent releases.
+ - The readability of styles in the `scss` file is challenging and will be improved in subsequent releases.
- [Bugfix] Fix various dark theme issues with Teams tab on LMS. (by @dawoudsheraz)
- [Bugfix] Update dark-theme styles for Notes and Textbook Page (by @hinakhadim)
+
## v18.2.2 (2024-10-29)
- [Feature] Upgrade upstream apps to open-release/redwood.3. In particular, this will resolve serious issues with [course creation](https://github.com/openedx/frontend-app-authoring/issues/1199) and [language switching](https://github.com/openedx/frontend-app-account/issues/1052). (by @regisb)
+
## v18.2.1 (2024-10-11)
- [Feature] Introduced theme toggle feature with enable/disable option and runtime switch between light and dark modes. (by @hinakhadim)
+
## v18.1.1 (2024-08-27)
- [BugFix] Add the Indigo footer in MFEs via env.config.jsx to resolve display issues on the /account/ page after upgrading to Redwood. (by @hinakhadim)
+
## v18.1.0 (2024-07-23)
- [Improvement] Instead of forcing users to use Authentication MFe, the platform decides how users should log in. (by @CodeWithEmad)
-- [Feature] Dark theme: the Indigo theme now covers dark theme for LMS pages, including the MFEs, and they are more beautiful! (by @tanveer65 and @hinakhadim)
+- [Feature] Dark theme: the Indigo theme now covers dark theme for LMS pages, including the MFEs, and they are more beautiful! (by @tanveer65 and @hinakhadim)
+
## v18.0.0 (2024-06-20)
- π₯[Feature] Upgrade to Redwood (by @hinakhadim)
+
## v17.4.2 (2024-06-11)
- [BugFix] Add big screen variable of screen responsiveness (by @tanveer65)
+
## v17.4.1 (2024-06-10)
- [BugFix] Remove undefined variables of dark-theme. (by @hinakhadim)
+
## v17.4.0 (2024-06-10)
- [Bugfix] Make plugin compatible with Python 3.12 by removing dependency on `pkg_resources`. (by @regisb)
-- [Bugfix] *.scss files in cms directory were not rendered in the tutor environment because they are stored in a "partials" subdirectory. (by @Talha-Rizwan)
+- [Bugfix] \*.scss files in cms directory were not rendered in the tutor environment because they are stored in a "partials" subdirectory. (by @Talha-Rizwan)
- [Improvement] Add styles for Profile and Account MFE and increase container width for better readability. (by @tanveer65)
+
## v17.3.0 (2024-03-04)
- π₯[Improvement] Allow the no_course_image.png image to pull from the current theme, not specifically named indigo (by @misilot)
@@ -90,20 +158,21 @@ instructions, because git commits are used to generate release notes:
- [Improvement] Style static pages of About, Contact, Privacy and bookmarks page (by @tanveer65)
+
## v17.2.0 (2024-01-27)
- π₯[Bugfix] Fixes: Minor Bug fixes with styling updates for discussion and learner-dashboard MFEs (by @hinakhadim and @TanveerAhmed)
+
## v17.1.0 (2023-12-13)
- π₯[Improvement] Complete overhaul and redesign: the Indigo theme now covers more pages, including the MFE footer and header, and they are more beautiful than ever! (by @hinakhadim and @TanveerAhmed)
+
## v17.0.0 (2023-12-09)
- π₯[Feature] Upgrade to Quince (by @hinakhadim)
- [Improvement] Add a scriv-compliant changelog. (by @regisb)
-- [Improvement] Added Makefile and test action to repository and formatted code with Black and isort. (by @CodeWithEmad)
-
-
+- [Improvement] Added Makefile and test action to repository and formatted code with Black and isort. (by @CodeWithEmad)
\ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644
index 3d2c03b12..000000000
--- a/MANIFEST.in
+++ /dev/null
@@ -1 +0,0 @@
-recursive-include tutorindigo/templates *
diff --git a/README.rst b/README.rst
index 5868f50f2..2a407fe77 100644
--- a/README.rst
+++ b/README.rst
@@ -86,11 +86,11 @@ Overriding the default "about", "contact", etc. static pages
By default, the ``/about`` and ``/contact`` pages contain a simple line of text: "This page left intentionally blank. Feel free to add your own content". This is of course unusable in production. In the following, we detail how to override just any of the static templates used in Open edX.
-The static templates used by Open edX to render those pages are all stored in the `edx-platform/lms/templates/static_templates `__ folder. To override those templates, you should add your own in the following folder::
+The static templates used by Open edX to render those pages are all stored in the `edx-platform/lms/templates/static_templates `__ folder. To override those templates, you should add your own in the following folder::
ls tutorindigo/templates/indigo/lms/templates/static_templates"
-For instance, edit the "donate.html" file in this directory. We can derive the content of this file from the contents of the `donate.html `__ static template in edx-platform:
+For instance, edit the "donate.html" file in this directory. We can derive the content of this file from the contents of the `donate.html `__ static template in edx-platform:
.. code-block:: mako
@@ -131,7 +131,7 @@ The indigo theme canβt override styles for MFEs directly. It overrides the sty
))
-This Tutor plugin is maintained by Hina Khadim from `Edly `__. Community support is available from the official `Open edX forum `__. Do you need help with this plugin? See the `troubleshooting `__ section from the Tutor documentation.
+This Tutor plugin is maintained by Ahmed Khalid and Hammad Yousaf from `Edly `__. Community support is available from the official `Open edX forum `__. Do you need help with this plugin? See the `troubleshooting `__ section from the Tutor documentation.
License
diff --git a/pyproject.toml b/pyproject.toml
index d1e6ae6e5..d13c3de9b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,2 +1,68 @@
+#https://hatch.pypa.io/latest/config/build/
+
+[project]
+name = "tutor-indigo"
+description = "Indigo theme plugin for Tutor"
+readme = { file = "README.rst", content-type = "text/x-rst" }
+license = { text = "AGPLv3" }
+requires-python = ">=3.9"
+authors = [{ name = "Edly" }, { email = "hello@edly.io" }]
+maintainers = [
+ { name = "Ahmed Khalid" }, { email = "ahmed.khalid@arbisoft.com" },
+ { name = "Hammad Yousaf" }, { email = "hammad.yousaf@arbisoft.com" }
+]
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: GNU Affero General Public License v3",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+]
+dependencies = [
+ "tutor-mfe>=20.0.0,<21.0.0",
+ "tutor>=20.0.0,<21.0.0"
+]
+
+# hatch_build.py will set it later
+dynamic = ["version"]
+
+[project.optional-dependencies]
+dev = [
+ "tutor[dev]>=20.0.0,<21.0.0",
+ "pylint",
+ "black"
+]
+
+[project.entry-points."tutor.plugin.v1"]
+indigo = "tutorindigo.plugin"
+
+[project.urls]
+Code = "https://github.com/overhangio/tutor-indigo"
+Community = "https://discuss.openedx.org"
+Documentation = "https://docs.tutor.edly.io/"
+Homepage = "https://github.com/overhangio/tutor-indigo"
+Changelog = "https://github.com/overhangio/tutor-indigo/blob/release/CHANGELOG.md"
+Issues = "https://github.com/overhangio/tutor-indigo/issues"
+
+# hatch related configurations
[build-system]
-requires = ["setuptools", "wheel"]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
+
+[tool.hatch.build.targets.sdist]
+# Disable strict naming, otherwise twine is not able to detect name/version
+strict-naming = false
+include = ["/tutorindigo", ".hatch_build.py"]
+exclude = ["tests*"]
+
+# we need this becuase our project escapes default hatch file selection.
+# see https://hatch.pypa.io/latest/plugins/builder/wheel/#default-file-selection
+[tool.hatch.build.targets.wheel]
+packages = ["/tutorindigo"]
+
+[tool.hatch.metadata.hooks.custom]
+path = ".hatch_build.py"
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 6cdca5a7e..000000000
--- a/setup.py
+++ /dev/null
@@ -1,62 +0,0 @@
-import io
-import os
-from setuptools import setup, find_packages
-
-HERE = os.path.abspath(os.path.dirname(__file__))
-
-
-def load_readme():
- with io.open(os.path.join(HERE, "README.rst"), "rt", encoding="utf8") as f:
- return f.read()
-
-
-def load_about():
- about = {}
- with io.open(
- os.path.join(HERE, "tutorindigo", "__about__.py"),
- "rt",
- encoding="utf-8",
- ) as f:
- exec(f.read(), about) # pylint: disable=exec-used
- return about
-
-
-ABOUT = load_about()
-
-
-setup(
- name="tutor-indigo",
- version=ABOUT["__version__"],
- url="https://github.com/overhangio/tutor-indigo",
- project_urls={
- "Documentation": "https://docs.tutor.edly.io/",
- "Code": "https://github.com/overhangio/tutor-indigo",
- "Issue tracker": "https://github.com/overhangio/tutor-indigo/issues",
- "Community": "https://discuss.openedx.org",
- },
- license="AGPLv3",
- author="Edly",
- author_email="hello@edly.io",
- maintainer="Edly",
- maintainer_email="hina.khadim@arbisoft.com",
- description="Indigo theme plugin for Tutor",
- long_description=load_readme(),
- long_description_content_type="text/x-rst",
- packages=find_packages(exclude=["tests*"]),
- include_package_data=True,
- python_requires=">=3.9",
- install_requires=["tutor>=18.0.0,<19.0.0", "tutor-mfe>=18.0.0,<19.0.0"],
- extras_require={"dev": "tutor[dev]>=18.0.0,<19.0.0"},
- entry_points={"tutor.plugin.v1": ["indigo = tutorindigo.plugin"]},
- classifiers=[
- "Development Status :: 5 - Production/Stable",
- "Intended Audience :: Developers",
- "License :: OSI Approved :: GNU Affero General Public License v3",
- "Operating System :: OS Independent",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- ],
-)
diff --git a/tutorindigo/__about__.py b/tutorindigo/__about__.py
index 22ed76922..dd71ced3d 100644
--- a/tutorindigo/__about__.py
+++ b/tutorindigo/__about__.py
@@ -1 +1 @@
-__version__ = "18.3.0"
+__version__ = "20.0.1"
diff --git a/tutorindigo/plugin.py b/tutorindigo/plugin.py
index e20ea63f0..6f25e4351 100644
--- a/tutorindigo/plugin.py
+++ b/tutorindigo/plugin.py
@@ -2,11 +2,12 @@
import os
import typing as t
+from glob import glob
import importlib_resources
from tutor import hooks
from tutor.__about__ import __version_suffix__
-from tutormfe.hooks import MFE_APPS
+from tutormfe.hooks import PLUGIN_SLOTS
from .__about__ import __version__
@@ -21,7 +22,7 @@
"defaults": {
"VERSION": __version__,
"WELCOME_MESSAGE": "The place for all your online learning",
- "PRIMARY_COLOR": "#4600c7", # Indigo
+ "PRIMARY_COLOR": "#15376D", # Indigo
"ENABLE_DARK_TOGGLE": True,
# Footer links are dictionaries with a "title" and "url"
# To remove all links, run:
@@ -77,7 +78,7 @@
# Override openedx & mfe docker image names
@hooks.Filters.CONFIG_DEFAULTS.add(priority=hooks.priorities.LOW)
def _override_openedx_docker_image(
- items: list[tuple[str, t.Any]]
+ items: list[tuple[str, t.Any]],
) -> list[tuple[str, t.Any]]:
openedx_image = ""
mfe_image = ""
@@ -103,68 +104,43 @@ def _override_openedx_docker_image(
hooks.Filters.CONFIG_OVERRIDES.add_items(list(config["overrides"].items()))
-hooks.Filters.ENV_PATCHES.add_items(
- [
- # MFE will install header version 3.0.x and will include indigo-footer as a
- # separate package for use in env.config.jsx
- (
- "mfe-dockerfile-post-npm-install-learning",
- """
-RUN npm install '@edx/brand@https://github.com/MubeenFayyaz-Arbisoft/brand-openedx.git#v1.0.2'
-RUN npm install '@edx/frontend-component-header@npm:@edly-io/indigo-frontend-component-header@^3.1.3'
-RUN npm install @edly-io/indigo-frontend-component-footer@^2.0.0
+# MFEs that are styled using Indigo
+indigo_styled_mfes = [
+ "learning",
+ "learner-dashboard",
+ "profile",
+ "account",
+ "discussions",
+]
-COPY indigo/env.config.jsx /openedx/app/
-""",
- ),
- (
- "mfe-dockerfile-post-npm-install-authn",
- """
-RUN npm install '@edx/brand@https://github.com/MubeenFayyaz-Arbisoft/brand-openedx.git#v1.0.2'
-""",
- ),
- # Tutor-Indigo v2.1 targets the styling updates in discussions and learner-dashboard MFE
- # brand-openedx is related to styling updates while others are for header and footer updates
- (
- "mfe-dockerfile-post-npm-install-discussions",
- """
-RUN npm install '@edx/brand@https://github.com/MubeenFayyaz-Arbisoft/brand-openedx.git#v1.0.2'
-RUN npm install '@edx/frontend-component-header@npm:@edly-io/indigo-frontend-component-header@^3.1.3'
-RUN npm install @edly-io/indigo-frontend-component-footer@^2.0.0
-COPY indigo/env.config.jsx /openedx/app/
-""",
- ),
- (
- "mfe-dockerfile-post-npm-install-learner-dashboard",
- """
-RUN npm install '@edx/brand@https://github.com/MubeenFayyaz-Arbisoft/brand-openedx.git#v1.0.2'
-RUN npm install @edly-io/indigo-frontend-component-footer@^2.0.0
+for mfe in indigo_styled_mfes:
+ hooks.Filters.ENV_PATCHES.add_items(
+ [
+ (
+ f"mfe-dockerfile-post-npm-install-{mfe}",
+ """
+RUN npm install @edly-io/indigo-frontend-component-footer@^3.0.0
+RUN npm install '@edx/frontend-component-header@npm:@edly-io/indigo-frontend-component-header@^4.0.0'
+RUN npm install '@edx/brand@npm:@edly-io/indigo-brand-openedx@^2.2.2'
-COPY indigo/env.config.jsx /openedx/app/
""",
- ),
- (
- "mfe-dockerfile-post-npm-install-profile",
- """
-RUN npm install '@edx/brand@https://github.com/MubeenFayyaz-Arbisoft/brand-openedx.git#v1.0.2'
-RUN npm install '@edx/frontend-component-header@npm:@edly-io/indigo-frontend-component-header@^3.1.3'
-RUN npm install @edly-io/indigo-frontend-component-footer@^2.0.0
-
-COPY indigo/env.config.jsx /openedx/app/
+ ),
+ (
+ f"mfe-env-config-runtime-definitions-{mfe}",
+ """
+const { default: IndigoFooter } = await import('@edly-io/indigo-frontend-component-footer');
""",
- ),
- (
- "mfe-dockerfile-post-npm-install-account",
- """
-RUN npm install '@edx/brand@https://github.com/MubeenFayyaz-Arbisoft/brand-openedx.git#v1.0.2'
-RUN npm install '@edx/frontend-component-header@npm:@edly-io/indigo-frontend-component-header@^3.1.3'
-RUN npm install @edly-io/indigo-frontend-component-footer@^2.0.0
+ ),
+ ]
+ )
-COPY indigo/env.config.jsx /openedx/app/
-""",
- ),
- ]
+
+hooks.Filters.ENV_PATCHES.add_item(
+ (
+ "mfe-dockerfile-post-npm-install-authn",
+ "RUN npm install '@edx/brand@npm:@edly-io/indigo-brand-openedx@^2.2.2'",
+ )
)
# Include js file in lms main.html, main_django.html, and certificate.html
@@ -195,37 +171,59 @@ def _override_openedx_docker_image(
PIPELINE['JAVASCRIPT'][filename]['source_filenames'] += dark_theme_filepath
MFE_CONFIG['INDIGO_ENABLE_DARK_TOGGLE'] = {{ INDIGO_ENABLE_DARK_TOGGLE }}
+MFE_CONFIG['INDIGO_FOOTER_NAV_LINKS'] = {{ INDIGO_FOOTER_NAV_LINKS }}
""",
),
(
"openedx-lms-production-settings",
"""
MFE_CONFIG['INDIGO_ENABLE_DARK_TOGGLE'] = {{ INDIGO_ENABLE_DARK_TOGGLE }}
+MFE_CONFIG['INDIGO_FOOTER_NAV_LINKS'] = {{ INDIGO_FOOTER_NAV_LINKS }}
""",
),
]
)
-@MFE_APPS.add()
-def _add_my_mfe(mfes):
- mfes["authn"] = {
- "repository": "https://github.com/edly-io/frontend-app-authn.git",
- "port": 1999,
- "version": "nelc-v1.0.1", # optional, will default to the Open edX current tag.
- }
- mfes["learning"] = {
- "repository": "https://github.com/edly-io/frontend-app-learning.git",
- "port": 2000,
- "version": "nelc-v1.0.1", # optional, will default to the Open edX current tag.
- }
- mfes["discussions"] = {
- "repository": "https://github.com/edly-io/frontend-app-discussions.git",
- "port": 2002,
- "version": "nelc-v1.0.1", # optional, will default to the Open edX current tag.
- }
- mfes["learner-dashboard"] = {
- "repository": "https://github.com/edly-io/frontend-app-learner-dashboard.git",
- "port": 1996,
- "version": "nelc-v1.0.1", # optional, will default to the Open edX current tag.
- }
- return mfes
+
+# Apply patches from tutor-indigo
+for path in glob(
+ os.path.join(
+ str(importlib_resources.files("tutorindigo") / "patches"),
+ "*",
+ )
+):
+ with open(path, encoding="utf-8") as patch_file:
+ hooks.Filters.ENV_PATCHES.add_item((os.path.basename(path), patch_file.read()))
+
+
+for mfe in indigo_styled_mfes:
+ PLUGIN_SLOTS.add_item(
+ (
+ mfe,
+ "footer_slot",
+ """
+ {
+ op: PLUGIN_OPERATIONS.Hide,
+ widgetId: 'default_contents',
+ },
+ {
+ op: PLUGIN_OPERATIONS.Insert,
+ widget: {
+ id: 'default_contents',
+ type: DIRECT_PLUGIN,
+ priority: 1,
+ RenderWidget: ,
+ },
+ },
+ {
+ op: PLUGIN_OPERATIONS.Insert,
+ widget: {
+ id: 'read_theme_cookie',
+ type: DIRECT_PLUGIN,
+ priority: 2,
+ RenderWidget: AddDarkTheme,
+ },
+ },
+ """,
+ ),
+ )
diff --git a/tutorindigo/templates/indigo/lms/static/images/tutor-logo.png b/tutorindigo/templates/indigo/lms/static/images/tutor-logo.png
index 33a146ebf..568602759 100644
Binary files a/tutorindigo/templates/indigo/lms/static/images/tutor-logo.png and b/tutorindigo/templates/indigo/lms/static/images/tutor-logo.png differ
diff --git a/tutorindigo/templates/indigo/lms/static/js/dark-theme.js b/tutorindigo/templates/indigo/lms/static/js/dark-theme.js
index a34dd330a..a12534264 100644
--- a/tutorindigo/templates/indigo/lms/static/js/dark-theme.js
+++ b/tutorindigo/templates/indigo/lms/static/js/dark-theme.js
@@ -8,11 +8,25 @@ $(document).ready(function() {
$('body').toggleClass("indigo-dark-theme", theme === 'dark'); // append or remove dark-class based on cookie-value
// update expiry
$.cookie(themeCookie, theme, { domain: window.location.hostname, expires: 90, path: '/' });
+ updateAccessibility();
}
function setThemeToggleBtnState(){
const theme = $.cookie(themeCookie);
$("#toggle-switch-input").prop("checked", theme === 'dark');
+ updateAccessibility();
+ }
+
+ function updateAccessibility() {
+ const theme = $.cookie(themeCookie);
+ const textWrapper = $('#theme-label');
+ if (theme === 'dark') {
+ textWrapper.text('Switch to Light Mode');
+ textWrapper.attr('aria-checked', 'true');
+ } else {
+ textWrapper.text('Switch to Dark Mode');
+ textWrapper.attr('aria-checked', 'false');
+ }
}
function toggleTheme(){
@@ -33,4 +47,9 @@ $(document).ready(function() {
setThemeToggleBtnState(); // check/uncheck toggle btn based on theme
$('#toggle-switch').on('change', toggleTheme);
+ $('#toggle-switch-input').on('keydown', function (event) {
+ if (event.key === "Enter") {
+ toggleTheme();
+ }
+ });
});
diff --git a/tutorindigo/templates/indigo/lms/static/js/responsive-nav.js b/tutorindigo/templates/indigo/lms/static/js/responsive-nav.js
new file mode 100644
index 000000000..4ee775a34
--- /dev/null
+++ b/tutorindigo/templates/indigo/lms/static/js/responsive-nav.js
@@ -0,0 +1,119 @@
+/**
+ * Temporary fix for a legacy issue specific to the Tutor Indigo theme.
+ * This can be removed once the upstream fix is included in Open edX.
+ */
+
+$(document).ready(function () {
+ $(".course-tabs, .instructor-nav").each(function () {
+ var $navList = $(this);
+
+ // Skip if already initialized
+ if ($navList.hasClass("responsive-nav-initialized")) {
+ return;
+ }
+ $navList.addClass("responsive-nav responsive-nav-initialized");
+
+ var moreButtonClass = $navList.hasClass("instructor-nav") ? "btn-link" : "";
+ var moreListItemClass = $navList.hasClass("instructor-nav") ? "nav-item" : "tab";
+ var menuType = $navList.hasClass("instructor-nav") ? "instructor-nav" : "course-tabs";
+
+ // Create More dropdown
+ var $more = $(
+ '