overhangio / tutor-indigo Goto Github PK
View Code? Open in Web Editor NEWAn elegant, customizable theme for Open edX
License: GNU Affero General Public License v3.0
An elegant, customizable theme for Open edX
License: GNU Affero General Public License v3.0
Not sure if this report should go in this repo or the other MFE repo.
Im trying to run tutor config render ...
but its says command does not exist. On version
tutor, version 3.6.0
Im guessing the README its outdated right?
The apps MFE does not inherit the INDIGO_ settings such as
INDIGO_FOOTER_LEGAL_LINKS
INDIGO_FOOTER_NAV_LINKS
INDIGO_PRIMARY_COLOR
The no_course_image.png is hardcoded for Indigo instead of reference the theme in use
For example if you do the following
pip install tutor-indigo
tutor plugins enable indigo
tutor config save
the indigo folder is created at $TUTOR_ROOT/env/build/openedx/themes
and persists after running.
tutor plugins disable indigo
tutor config save
Should it, or should it be removed?
Footer includes seven (7) links, namely About, Blog, Contact, Donate, Terms of Service & Honor Code, Privacy Policy, Take free online courses at edX.org. All links must be working.
Actual links are:
About Us Blog Donate Terms of Sevice Privacy Policy Help Contact Us
This is at https://redwood.demo.edly.io/
Go to https://redwood.demo.edly.io/
Scroll down.
TC_LEARNER_48 also fails, as copyright notice also does not match. Supposed to be “All rights reserved except where noted. edX, Open edX and their respective logos are registered trademarks of edX Inc.” and instead it's "Copyrights ©2024. All Rights Reserved."
Hi,
Created the file indigo/config-custom.yml following the instructions in the section "Setting custom values" https://github.com/overhangio/indigo
`INDIGO_FOOTER_NAV_LINKS:
Now, I cannot find where do I have to add the content of the pages: /about, /contact and /services?
Seems like the header text either needs to be broken into two lines, or it needs some padding tweaks that it looks better on one line.
Simply install indigo, enable it, rebuild the MFE image, start Tutor, and navigate to a course.
This does not seem to be impacting Quince. I believe it only impacts Nightly. I tested both tutor local
and tutor dev
. I did not try mounting frontend-app-learning.
System info:
(venv-tutor) ~/overhangio/tutor 🍀 lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
(venv-tutor) ~/overhangio/tutor 🍀 tutor plugins list -e
NAME STATUS VERSION
indigo ✅ enabled 17.3.0
mfe ✅ enabled 17.0.0
Both indigo and mfe are installed from a local git-clone at the tip of their nightly
branches.
Hello,
When I have both indigo and our nla-theme
enabled tutor tries to append indigo twice to the image name.
NLA Theme: https://github.com/newliteraciesalliance/tutor-nla-theme/tree/nla-v17
tutor launch dev
results in
[+] Stopping 3/0
✔ Container tutor_local-mysql-1 Stopped 0.0s
✔ Container tutor_local-mongodb-1 Stopped 0.0s
✔ Container tutor_local-permissions-1 Stopped 0.0s
docker compose -f '/Users/user/Library/Application Support/tutor/env/local/docker-compose.yml' -f '/Users/user/Library/Application Support/tutor/env/dev/docker-compose.yml' --project-name tutor_dev up --remove-orphans -d
[+] Running 1/1
✘ mfe Error 0.6s
Error response from daemon: manifest for overhangio/openedx-mfe:17.0.0-indigo-indigo not found: manifest unknown: manifest unknown
Error: Command failed with status 18: docker compose -f /Users/user/Library/Application Support/tutor/env/local/docker-compose.yml -f /Users/user/Library/Application Support/tutor/env/dev/docker-compose.yml --project-name tutor_dev up --remove-orphans -d
If I disable one of them, it's able to start up and run.
I'm not sure if this is an issue with this theme specifically, but the social media buttons on the right side of a course's "About" page show some weird behavior. This is what happens when I click the Twitter button on https://demo.openedx.overhang.io/courses/course-v1:edX+DemoX+Demo_Course/about
I've been trying to find the place where this message originates, but it's a bit weird. I only found it in the edx-platform
repository at ./themes/stanford-style/lms/templates/courseware/course_about_sidebar_header.html
, but that file doesn't include the Facebook button that I also see in the indigo theme, so I guess that that's not the sidebar template that's actually used by the indigo theme.
On a side note: it's not super clear to me what this theme depends on. In other words: if I don't override a file in the theme, which file is used? If you can help me answer this question I'll gladly open this issue in the parent theme instead of this repository :)
All scss files that ship with this theme (including "_extras.scss") are not rendered in the Tutor project environment. That's because they are located in a "partials" folder which is explicitly ignored by Tutor: https://github.com/overhangio/tutor/blob/669f8363283c5351ff39007e06df42dd1c48b2c7/tutor/env.py#L75
This issue was detected in this conversation: #23 (comment)
The proper solution would probably be to move the files from the "partials" folder and put them directly in the "indigo" directory. I need to check whether this would be working.
Hi. I'm using tutor with openedx olive. As stated in the tutor documentation I used this theme as a base for making my own custom theme. I successfully changed the logo but the font is partially changed. In some sections I see my own font and in some other sections (usually buttons and pages other than the homepage) I still see the default font.
To change the font, I followed these steps:
font-face
in lms/static/sass/partials/lms/theme/_fonts.scss
font-family-title
, serif
and f-sans-serif
in _variables.scss
So where is the other font coming from? Is it from edx-boostrap
that's imported in _variables.scss
? Assuming this is the issue, I forked edx-bootstrap
and changed the fonts there as well. Then I added my own bootstrap (using github link not npm package yet) in openedx-platform package.json file. But now when I want to replace edx-bootstrap
with my own bootstrap in the _variables.scss
file, when building the image, I get errors saying my bootstrap does not exist and is not found. So does tutor (indigo) has it's own package.json or something like this? Is there any other way for adding a package to package.json file except adding it to openedx-platform and building the image? Is there any other way of changing fonts globally?
The UI has undergone numerous changes since Quince, but the screenshot still depicts an older version.
Hi there!
I am trying to use this plugin as a starting point for my own theme plugin.
I have my own templates (for lms), so what I did was to copy them inside templates/indigo/lms/templates
.
The issue is that after installing and enabling the plugin, when I do tutor config save
I get this error: jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'load'
.
That is because I have Django templates with {% load i18n %}
declarations and some others.
So my question is: It is possible to use Django templates in my tutor theme plugin?
I saw here a possible workaround, that is use {% raw %}
and {% endraw %}
tags .
I don't know if this is the right way to use Django templates or if I am missing some configuration.
Regards!!
Description
When following the instructions on the tutor manual page: https://docs.tutor.overhang.io/tutorials/theming.html#theming I run into a problem when running the command: tutor images build openedx
I get an error in step 80/86. The error is:
Compiling lms sass assets from theme /openedx/themes/indigo...
Traceback (most recent call last):
File "/openedx/bin/openedx-assets", line 218, in <module>
main()
File "/openedx/bin/openedx-assets", line 89, in main
args.func(args)
File "/openedx/bin/openedx-assets", line 153, in run_themes
assets._compile_sass(system, Path(theme_path), False, False, [])
File "/openedx/edx-platform/pavelib/assets.py", line 558, in _compile_sass
sass.compile(
File "/openedx/venv/lib/python3.8/site-packages/sass.py", line 644, in compile
raise CompileError(v)
sass.CompileError: b'Error: Invalid CSS after "$primary:": expected 1 selector or at-rule, was "NDIGO_PRIMARY_C..."\n on line 1 of
../themes/indigo/lms/static/sass/partials/lms/theme/_variables.scss\n>> $primary: {{ INDIGO_PRIMARY_COLOR }};\n ---------^\n'
The command '/bin/sh -c openedx-assets themes && openedx-assets collect --settings=tutor.assets && rdfind -makesymlinks true -followsymlinks true /openedx/staticfiles/' returned a non-zero code: 1
This is the contents of the file in a text editor:
$primary: {{ INDIGO_PRIMARY_COLOR }};
// Theme fonts
$font-family-title: Plex;
$serif: Crimson;
$f-sans-serif: Crimson, 'Open Sans','Helvetica Neue', Helvetica, Arial, sans-serif;
// Initialize the Open edX Bootstrap theme
@import 'edx-bootstrap/sass/open-edx/theme';
As I said, I have followed the instructions on the tutor manual page.
Expected behavior
The command tutor images build openedx succeeds in building the containers.
Actual behavior
A sass.CompileError is thrown in step 80/86 when running the command tutor images build openedx
See overhangio/tutor#1004 for the context.
On the apps MFE pages
Go to course details if you enroll or view an open course, the Runs on Tutor and Powered by Open edX logos are tied to the tutor
theme and not a custom one that has been forked, and the images do not render.
Example from: https://apps.test.online.newliteraciesalliance.org/learning/course/course-v1:NLA+IL1015+20_21/home
<div class="footer-top"><div class="powered-area"><ul class="logo-list"><li>Powered by</li><li><a href="https://docs.tutor.overhang.io" rel="noreferrer" target="_blank"><img src="https://test.online.newliteraciesalliance.org/static/indigo/images/tutor-logo.png" alt="Runs on Tutor" width="57" class=""></a></li><li><a href="https://open.edx.org" rel="noreferrer" target="_blank"><img src="https://test.online.newliteraciesalliance.org/static/indigo/images/openedx-logo.png" alt="Powered by Open edX" width="79" class=""></a></li></ul></div></div><span class="copyright-site">Copyrights ©2023. All Rights Reserved.</span>
Hi I am new to open edx platform, Want to override or create my own stylesheet in the indigo theme that I clone here GitHub - overhangio/tutor-indigo: An elegant, customizable theme for Open edX and I follow the instructions, I also try to edit the _extras.scss in here and do the local images build openedx followed by tutor local start -d \tutor\env\build\openedx\themes\indigo\lms\static\sass\partials\lms\theme but still has no effect, and every time that I use tutor config save the style that I set or change in the _extras.scss always erase, can someone help me to edit the styles ?
thank you
Hi,
I am trying to change the logo of indigo theme but I am having issues when running tutor images build openedx to apply the changes.
What I had done so far:
Error:
=> ERROR [production 28/30] RUN openedx-assets themes && openedx-assets collect --settings=tutor.assets && rdfind -makesymlinks true -foll 113.0s
------
> [production 28/30] RUN openedx-assets themes && openedx-assets collect --settings=tutor.assets && rdfind -makesymlinks true -followsymlinks true /openedx/staticfiles/:
8.200 Compiling lms sass assets from theme /openedx/themes/branded...
8.200 Compiling Sass: lms/static/sass -> /openedx/themes/branded/lms/static/css
8.200 with Sass lookup path: common/static
8.200 with Sass lookup path: common/static/sass
8.200 with Sass lookup path: node_modules/@edx
8.200 with Sass lookup path: node_modules
8.200 with Sass lookup path: /openedx/themes/branded/lms/static/sass/partials
8.200 with Sass lookup path: lms/static/sass/partials
8.200 with Sass lookup path: lms/static/sass
8.200 rtlcss /openedx/themes/branded/lms/static/css/bootstrap/lms-main.css /openedx/themes/branded/lms/static/css/bootstrap/lms-main-rtl.css
8.319 rtlcss: Warning! No config present, using defaults.
8.482 Saving: /openedx/themes/branded/lms/static/css/bootstrap/lms-main-rtl.css
8.726 rtlcss /openedx/themes/branded/lms/static/css/discussion/lms-discussion-bootstrap.css /openedx/themes/branded/lms/static/css/discussion/lms-discussion-bootstrap-rtl.css
8.848 rtlcss: Warning! No config present, using defaults.
8.978 Saving: /openedx/themes/branded/lms/static/css/discussion/lms-discussion-bootstrap-rtl.css
18.09 Compiling Sass: /openedx/themes/branded/lms/static/sass -> /openedx/themes/branded/lms/static/css
18.09 with Sass lookup path: common/static
18.09 with Sass lookup path: common/static/sass
18.09 with Sass lookup path: node_modules/@edx
18.09 with Sass lookup path: node_modules
18.09 with Sass lookup path: /openedx/themes/branded/lms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass
18.09 Sass dir '/openedx/themes/branded/lms/static/certificates/sass' does not exists, skipping sass compilation for '/openedx/themes/branded'
18.09 Compiling Sass: xmodule/assets -> /openedx/themes/branded/lms/static/css
18.09 with Sass lookup path: common/static
18.09 with Sass lookup path: common/static/sass
18.09 with Sass lookup path: node_modules/@edx
18.09 with Sass lookup path: node_modules
18.09 with Sass lookup path: /openedx/themes/branded/lms/static/sass/partials
18.09 with Sass lookup path: /openedx/themes/branded/cms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass/partials
18.09 with Sass lookup path: cms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass
18.09 with Sass lookup path: cms/static/sass
18.09 Compiling cms sass assets from theme /openedx/themes/branded...
18.09 Compiling Sass: xmodule/assets -> /openedx/themes/branded/cms/static/css
18.09 with Sass lookup path: common/static
18.09 with Sass lookup path: common/static/sass
18.09 with Sass lookup path: node_modules/@edx
18.09 with Sass lookup path: node_modules
18.09 with Sass lookup path: /openedx/themes/branded/lms/static/sass/partials
18.09 with Sass lookup path: /openedx/themes/branded/cms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass/partials
18.09 with Sass lookup path: cms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass
18.09 with Sass lookup path: cms/static/sass
18.09 Compiling lms sass assets from theme /openedx/themes/indigo...
18.09 Compiling Sass: lms/static/sass -> /openedx/themes/indigo/lms/static/css
18.09 with Sass lookup path: common/static
18.09 with Sass lookup path: common/static/sass
18.09 with Sass lookup path: node_modules/@edx
18.09 with Sass lookup path: node_modules
18.09 with Sass lookup path: /openedx/themes/indigo/lms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass/partials
18.09 with Sass lookup path: lms/static/sass
18.09 rtlcss /openedx/themes/indigo/lms/static/css/bootstrap/lms-main.css /openedx/themes/indigo/lms/static/css/bootstrap/lms-main-rtl.css
18.21 rtlcss: Warning! No config present, using defaults.
18.36 Saving: /openedx/themes/indigo/lms/static/css/bootstrap/lms-main-rtl.css
18.59 rtlcss /openedx/themes/indigo/lms/static/css/discussion/lms-discussion-bootstrap.css /openedx/themes/indigo/lms/static/css/discussion/lms-discussion-bootstrap-rtl.css
18.71 rtlcss: Warning! No config present, using defaults.
18.87 Saving: /openedx/themes/indigo/lms/static/css/discussion/lms-discussion-bootstrap-rtl.css
23.30 Compiling Sass: /openedx/themes/indigo/lms/static/sass -> /openedx/themes/indigo/lms/static/css
23.30 with Sass lookup path: common/static
23.30 with Sass lookup path: common/static/sass
23.30 with Sass lookup path: node_modules/@edx
23.30 with Sass lookup path: node_modules
23.30 with Sass lookup path: /openedx/themes/indigo/lms/static/sass/partials
23.30 with Sass lookup path: lms/static/sass/partials
23.30 with Sass lookup path: lms/static/sass
23.30 Compiling Sass: /openedx/themes/indigo/lms/static/certificates/sass -> /openedx/themes/indigo/lms/static/certificates/css
23.30 with Sass lookup path: common/static
23.30 with Sass lookup path: common/static/sass
23.30 with Sass lookup path: node_modules/@edx
23.30 with Sass lookup path: node_modules
23.30 with Sass lookup path: /openedx/themes/indigo/lms/static/sass/partials
23.30 with Sass lookup path: /openedx/themes/indigo/lms/static/sass
23.30 Compiling Sass: xmodule/assets -> /openedx/themes/indigo/lms/static/css
23.30 with Sass lookup path: common/static
23.30 with Sass lookup path: common/static/sass
23.30 with Sass lookup path: node_modules/@edx
23.30 with Sass lookup path: node_modules
23.30 with Sass lookup path: /openedx/themes/indigo/lms/static/sass/partials
23.30 with Sass lookup path: /openedx/themes/indigo/cms/static/sass/partials
23.30 with Sass lookup path: lms/static/sass/partials
23.30 with Sass lookup path: cms/static/sass/partials
23.30 with Sass lookup path: lms/static/sass
23.30 with Sass lookup path: cms/static/sass
23.30 Compiling cms sass assets from theme /openedx/themes/indigo...
23.30 Compiling Sass: cms/static/sass -> /openedx/themes/indigo/cms/static/css
23.30 with Sass lookup path: common/static
23.30 with Sass lookup path: common/static/sass
23.30 with Sass lookup path: node_modules/@edx
23.30 with Sass lookup path: node_modules
23.30 with Sass lookup path: lms/static/sass/partials
23.30 with Sass lookup path: /openedx/themes/indigo/cms/static/sass/partials
23.30 with Sass lookup path: cms/static/sass/partials
23.30 with Sass lookup path: cms/static/sass
23.30 rtlcss /openedx/themes/indigo/cms/static/css/bootstrap/studio-main.css /openedx/themes/indigo/cms/static/css/bootstrap/studio-main-rtl.css
23.44 rtlcss: Warning! No config present, using defaults.
23.56 Saving: /openedx/themes/indigo/cms/static/css/bootstrap/studio-main-rtl.css
24.36 Compiling Sass: /openedx/themes/indigo/cms/static/sass -> /openedx/themes/indigo/cms/static/css
24.36 with Sass lookup path: common/static
24.36 with Sass lookup path: common/static/sass
24.36 with Sass lookup path: node_modules/@edx
24.36 with Sass lookup path: node_modules
24.36 with Sass lookup path: lms/static/sass/partials
24.36 with Sass lookup path: /openedx/themes/indigo/cms/static/sass/partials
24.36 with Sass lookup path: cms/static/sass/partials
24.36 with Sass lookup path: cms/static/sass
24.36 Compiling Sass: xmodule/assets -> /openedx/themes/indigo/cms/static/css
24.36 with Sass lookup path: common/static
24.36 with Sass lookup path: common/static/sass
24.36 with Sass lookup path: node_modules/@edx
24.36 with Sass lookup path: node_modules
24.36 with Sass lookup path: /openedx/themes/indigo/lms/static/sass/partials
24.36 with Sass lookup path: /openedx/themes/indigo/cms/static/sass/partials
24.36 with Sass lookup path: lms/static/sass/partials
24.36 with Sass lookup path: cms/static/sass/partials
24.36 with Sass lookup path: lms/static/sass
24.36 with Sass lookup path: cms/static/sass
24.76 python manage.py lms --settings=tutor.assets collectstatic --noinput > /dev/null
109.2 Traceback (most recent call last):
109.2 File "manage.py", line 106, in <module>
109.2 execute_from_command_line([sys.argv[0]] + django_args)
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
109.2 utility.execute()
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 436, in execute
109.2 self.fetch_command(subcommand).run_from_argv(self.argv)
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/core/management/base.py", line 412, in run_from_argv
109.2 self.execute(*args, **cmd_options)
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/core/management/base.py", line 458, in execute
109.2 output = self.handle(*args, **options)
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 209, in handle
109.2 collected = self.collect()
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 148, in collect
109.2 for original_path, processed_path, processed in processor:
109.2 File "/openedx/venv/lib/python3.8/site-packages/require/storage.py", line 175, in post_process
109.2 for path in super_class.post_process(paths, dry_run, **options):
109.2 File "/openedx/edx-platform/openedx/core/djangoapps/theming/storage.py", line 293, in post_process
109.2 yield from super_class.post_process(paths.copy(), dry_run, **options)
109.2 File "/openedx/venv/lib/python3.8/site-packages/pipeline/storage.py", line 42, in post_process
109.2 yield from super_class.post_process(
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 488, in post_process
109.2 yield from super().post_process(*args, **kwargs)
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 301, in post_process
109.2 for name, hashed_name, processed, _ in self._post_process(
109.2 File "/openedx/venv/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 364, in _post_process
109.2 content = original_file.read().decode("utf-8")
109.2 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x9b in position 963561: invalid start byte
110.3 Traceback (most recent call last):
110.3 File "/openedx/bin/openedx-assets", line 218, in <module>
110.3 main()
110.3 File "/openedx/bin/openedx-assets", line 89, in main
110.3 args.func(args)
110.3 File "/openedx/bin/openedx-assets", line 157, in run_collect
110.3 assets.collect_assets(args.systems, args.settings)
110.3 File "/openedx/edx-platform/pavelib/assets.py", line 606, in collect_assets
110.3 sh(django_cmd(sys, settings, "collectstatic --noinput {logfile_str}".format(
110.3 File "/openedx/venv/lib/python3.8/site-packages/paver/shell.py", line 60, in sh
110.3 return dry(command, runpipe)
110.3 File "/openedx/venv/lib/python3.8/site-packages/paver/easy.py", line 15, in dry
110.3 return func(*args, **kw)
110.3 File "/openedx/venv/lib/python3.8/site-packages/paver/shell.py", line 55, in runpipe
110.3 raise BuildFailure("Subprocess return code: %d" % p.returncode)
110.3 paver.tasks.BuildFailure: Subprocess return code: 1
------
Dockerfile:215
--------------------
214 | COPY --chown=app:app ./themes/ /openedx/themes/
215 | >>> RUN openedx-assets themes \
216 | >>> && openedx-assets collect --settings=tutor.assets \
217 | >>> # De-duplicate static assets with symlinks
218 | >>> && rdfind -makesymlinks true -followsymlinks true /openedx/staticfiles/
219 |
--------------------
ERROR: failed to solve: process "/bin/sh -c openedx-assets themes && openedx-assets collect --settings=tutor.assets && rdfind -makesymlinks true -followsymlinks true /openedx/staticfiles/" did not complete successfully: exit code: 1
Error: Command failed with status 1: docker buildx build --tag=docker.io/overhangio/openedx:17.0.2-indigo --output=type=docker --cache-from=type=registry,ref=docker.io/overhangio/openedx:17.0.2-indigo-cache /home/linux/.local/share/tutor/env/build/openedx
Thank you!
Currently the directions just state
This plugin can serve as a starting point to create your own themes. Just fork this repository and modify the files as you see fit.
And this used to work great when it wasn't plugin based, since I could use the Makefile to push the theme files into where they needed to go. With the change to plugin, can you elaborate on the recommended steps for actually forking and than customizing it so we can utilize with our project?
Thanks!
Hey,
As discussed here there's an issue for staff/admin users that Indigo hides the dropdown menu to view courses as learner or specific learners (etc) behind the global header. This can be fixed by removing position: fixed
and change overflow: visible
to overflow: hidden
in _extras.scss
Hey, I have a minimally-adjusted fork of this theme for my project, and I was wondering if you recognize this issue. I can't imagine I caused it, so I can make an upstream PR if necessary:
Here's the issue in our tracker:
https://code.greenhost.net/totem/indigo-totem/-/issues/13
The problem is that when you reduce the width of your screen, at some point a horizontal scroll bar goes over the "unit" navigation bar that's shown above the course content. The negative result of this is that you can't see which unit you are at right now anymore. The link above provides some useful screenshots.
It seems like the problem can be solved by removing the overflow-x: scroll
attribute from the object .xmodule_display.xmodule_SequenceModule .sequence-nav .sequence-list-wrapper
First, thank you for releasing this theme - the timing was perfect for us.
We edited the config.yml
file appropriately, rendered, and deployed. Upon verifying if the site looked correct, we noticed that the the links at /courses/<name>/course/
were showing the default links.
I'm not sure the best way to resolve this, but I have a patch which worked for us. I'll open a PR with it.
Hi.
I don't think that this is not a big issue but we should let the platform decide where to take the user since we can change the login. I believe checking for should_redirect_to_authn_mfe
is happening in the edx-platform and there's no need for that
for example, if you set THIRD_PARTY_AUTH_HINT
to your tpa slug, /login will take you to that page, instead of login in authn MFE.
See instructions:
https://discuss.overhang.io/t/how-to-upgrade-a-tutor-plugin/1488
overhangio/tutor#920
Don't forget to push your changes to the demo server, similar to this PR: https://github.com/overhangio/openedx-release-demo/pull/33/files
Unterminated control keyword: 'if' in file '/openedx/themes/indigo/lms/templates/footer.html' at line: 29 char: 1
Steps to reproduce:
setup dev environment
delete env/build/openedx/themes/indigo
tutor config save
which regenerates the theme in the env
try loading http://local.edly.io:8000/
Environment:
Request Method: GET
Request URL: http://local.edly.io:8000/
Django Version: 4.2.8
Python Version: 3.8.18
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.humanize',
'django.contrib.messages',
'django.contrib.redirects',
'django.contrib.sessions',
'django.contrib.sites',
'openedx.core.djangoapps.staticfiles.apps.EdxPlatformStaticFilesConfig',
'django_celery_results',
'openedx.core.djangoapps.common_initialization.apps.CommonInitializationConfig',
'lms.djangoapps.lms_initialization.apps.LMSInitializationConfig',
'openedx.core.djangoapps.common_views',
'simple_history',
'config_models',
'openedx.core.djangoapps.config_model_utils',
'waffle',
'openedx.core.djangoapps.service_status',
'common.djangoapps.status',
'common.djangoapps.edxmako.apps.EdxMakoConfig',
'pipeline',
'common.djangoapps.static_replace',
'webpack_loader',
'web_fragments',
'openedx.core.djangoapps.plugin_api',
'openedx.core.djangoapps.contentserver',
'openedx.core.djangoapps.site_configuration',
'openedx.core.djangoapps.video_config',
'openedx.core.djangoapps.video_pipeline',
'lms.djangoapps.courseware',
'common.djangoapps.student.apps.StudentConfig',
'common.djangoapps.split_modulestore_django.apps.SplitModulestoreDjangoBackendAppConfig',
'lms.djangoapps.static_template_view',
'lms.djangoapps.staticbook',
'common.djangoapps.track',
'eventtracking.django.apps.EventTrackingConfig',
'common.djangoapps.util',
'lms.djangoapps.certificates.apps.CertificatesConfig',
'lms.djangoapps.instructor_task',
'openedx.core.djangoapps.course_groups',
'lms.djangoapps.bulk_email',
'lms.djangoapps.branding',
'lms.djangoapps.course_home_api',
'lms.djangoapps.user_tours',
'openedx.core.djangoapps.xblock.apps.LmsXBlockAppConfig',
'lms.djangoapps.support',
'oauth2_provider',
'openedx.core.djangoapps.oauth_dispatch.apps.OAuthDispatchAppConfig',
'common.djangoapps.third_party_auth',
'openedx.core.djangoapps.system_wide_roles',
'openedx.core.djangoapps.auth_exchange',
'wiki',
'django_notify',
'lms.djangoapps.course_wiki',
'mptt',
'sekizai',
'wiki.plugins.links',
'lms.djangoapps.course_wiki.plugins.markdownedx',
'django.contrib.admin',
'lms.djangoapps.debug',
'openedx.core.djangoapps.util.apps.UtilConfig',
'openedx.core.djangoapps.django_comment_common',
'lms.djangoapps.edxnotes',
'splash',
'rest_framework',
'openedx.core.djangoapps.user_api',
'common.djangoapps.course_modes.apps.CourseModesConfig',
'openedx.core.djangoapps.enrollments.apps.EnrollmentsConfig',
'common.djangoapps.entitlements.apps.EntitlementsConfig',
'lms.djangoapps.bulk_enroll',
'lms.djangoapps.verify_student.apps.VerifyStudentConfig',
'openedx.core.djangoapps.dark_lang',
'lms.djangoapps.rss_proxy',
'openedx.core.djangoapps.embargo',
'common.djangoapps.course_action_state',
'django_countries',
'lms.djangoapps.mobile_api.apps.MobileApiConfig',
'social_django',
'lms.djangoapps.survey.apps.SurveyConfig',
'lms.djangoapps.lms_xblock.apps.LMSXBlockConfig',
'submissions',
'openassessment',
'openassessment.assessment',
'openassessment.fileupload',
'openassessment.staffgrader',
'openassessment.workflow',
'openassessment.xblock',
'edxval',
'openedx.core.djangoapps.content.course_overviews.apps.CourseOverviewsConfig',
'openedx.core.djangoapps.content.block_structure.apps.BlockStructureConfig',
'lms.djangoapps.course_blocks',
'lms.djangoapps.mailing',
'corsheaders',
'openedx.core.djangoapps.cors_csrf',
'lms.djangoapps.commerce.apps.CommerceConfig',
'openedx.core.djangoapps.credit.apps.CreditConfig',
'lms.djangoapps.teams',
'common.djangoapps.xblock_django',
'openedx.core.djangoapps.programs.apps.ProgramsConfig',
'openedx.core.djangoapps.catalog',
'sorl.thumbnail',
'milestones',
'lms.djangoapps.gating.apps.GatingConfig',
'statici18n',
'openedx.core.djangoapps.api_admin',
'openedx.core.djangoapps.verified_track_content',
'lms.djangoapps.learner_dashboard',
'lms.djangoapps.badges.apps.BadgesConfig',
'django_sites_extensions',
'lms.djangoapps.email_marketing.apps.EmailMarketingConfig',
'release_util',
'rules.apps.AutodiscoverRulesConfig',
'bridgekeeper',
'celery_utils',
'openedx.core.djangoapps.crawlers',
'common.djangoapps.database_fixups',
'openedx.core.djangoapps.waffle_utils',
'lms.djangoapps.course_goals.apps.CourseGoalsConfig',
'openedx_tagging.core.tagging.apps.TaggingConfig',
'openedx.core.djangoapps.content_tagging',
'openedx.features.calendar_sync',
'openedx.features.course_bookmarks',
'openedx.features.course_experience',
'openedx.features.enterprise_support.apps.EnterpriseSupportConfig',
'openedx.features.learner_profile',
'openedx.features.course_duration_limits',
'openedx.features.content_type_gating',
'openedx.features.discounts',
'openedx.features.effort_estimation',
'openedx.features.name_affirmation_api.apps.NameAffirmationApiConfig',
'lms.djangoapps.experiments',
'django_filters',
'drf_yasg',
'csrf.apps.CsrfAppConfig',
'xss_utils',
'openedx.core.djangoapps.heartbeat',
'openedx.core.djangoapps.course_date_signals',
'openedx.core.djangoapps.external_user_ids',
'openedx.core.djangoapps.demographics',
'openedx.core.djangoapps.schedules',
'rest_framework_jwt',
'openedx.core.djangoapps.content.learning_sequences.apps.LearningSequencesConfig',
'organizations',
'lms.djangoapps.bulk_user_retirement',
'openedx.core.djangoapps.agreements',
'openedx.features.survey_report',
'edx_django_utils.user',
'pylti1p3.contrib.django.lti1p3_tool_config',
'edx_ace',
'blockstore.apps.bundles',
'lms.djangoapps.mfe_config_api',
'openedx.core.djangoapps.notifications',
'edx_sga',
'enterprise',
'consent',
'integrated_channels.integrated_channel',
'integrated_channels.degreed',
'integrated_channels.degreed2',
'integrated_channels.sap_success_factors',
'integrated_channels.cornerstone',
'integrated_channels.xapi',
'integrated_channels.blackboard',
'integrated_channels.canvas',
'integrated_channels.moodle',
'django_object_actions',
'openedx.core.djangoapps.ace_common.apps.AceCommonConfig',
'openedx.features.announcements.apps.AnnouncementsConfig',
'openedx.core.djangoapps.bookmarks.apps.BookmarksConfig',
'openedx.core.djangoapps.content_libraries.apps.ContentLibrariesConfig',
'openedx.core.djangoapps.course_apps.apps.CourseAppsConfig',
'openedx.core.djangoapps.course_live.apps.CourseLiveConfig',
'openedx.core.djangoapps.courseware_api.apps.CoursewareAPIConfig',
'openedx.core.djangoapps.credentials.apps.CredentialsConfig',
'lms.djangoapps.discussion.apps.DiscussionConfig',
'openedx.core.djangoapps.discussions.apps.DiscussionsConfig',
'lms.djangoapps.grades.apps.GradesConfig',
'lms.djangoapps.instructor.apps.InstructorConfig',
'openedx.core.djangoapps.password_policy.apps.PasswordPolicyConfig',
'openedx.core.djangoapps.plugins.apps.PluginsConfig',
'lms.djangoapps.program_enrollments.apps.ProgramEnrollmentsConfig',
'openedx.core.djangoapps.theming.apps.ThemingConfig',
'openedx.core.djangoapps.user_authn.apps.UserAuthnConfig',
'openedx.core.djangoapps.zendesk_proxy.apps.ZendeskProxyConfig',
'lti_consumer.apps.LTIConsumerApp',
'super_csv.apps.SuperCSVConfig',
'completion.apps.CompletionAppConfig',
'bulk_grades.apps.BulkGradesConfig',
'edx_proctoring.apps.EdxProctoringConfig',
'edx_when.apps.EdxWhenConfig',
'edx_toggles.apps.TogglesConfig',
'edx_name_affirmation.apps.EdxNameAffirmationConfig',
'debug_toolbar']
Installed Middleware:
['openedx.core.lib.x_forwarded_for.middleware.XForwardedForMiddleware',
'edx_django_utils.security.csp.middleware.content_security_policy_middleware',
'crum.CurrentRequestUserMiddleware',
'edx_django_utils.cache.middleware.RequestCacheMiddleware',
'edx_django_utils.monitoring.CachedCustomMonitoringMiddleware',
'edx_django_utils.monitoring.CodeOwnerMonitoringMiddleware',
'edx_django_utils.monitoring.CookieMonitoringMiddleware',
'edx_django_utils.monitoring.DeploymentMonitoringMiddleware',
'openedx.core.djangoapps.cookie_metadata.middleware.CookieNameChange',
'openedx.core.lib.request_utils.IgnoredErrorMiddleware',
'lms.djangoapps.mobile_api.middleware.AppVersionUpgrade',
'openedx.core.djangoapps.header_control.middleware.HeaderControlMiddleware',
'lms.djangoapps.discussion.django_comment_client.middleware.AjaxExceptionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sites.middleware.CurrentSiteMiddleware',
'edx_rest_framework_extensions.auth.jwt.middleware.JwtAuthCookieMiddleware',
'django_sites_extensions.middleware.RedirectMiddleware',
'openedx.core.djangoapps.safe_sessions.middleware.SafeSessionMiddleware',
'openedx.core.djangoapps.cache_toolbox.middleware.CacheBackedAuthenticationMiddleware',
'common.djangoapps.student.middleware.UserStandingMiddleware',
'openedx.core.djangoapps.contentserver.middleware.StaticContentServer',
'openedx.core.djangoapps.user_api.middleware.UserTagsEventContextMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'common.djangoapps.track.middleware.TrackMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'corsheaders.middleware.CorsMiddleware',
'openedx.core.djangoapps.cors_csrf.middleware.CorsCSRFMiddleware',
'openedx.core.djangoapps.cors_csrf.middleware.CsrfCrossDomainCookieMiddleware',
'splash.middleware.SplashMiddleware',
'openedx.core.djangoapps.geoinfo.middleware.CountryMiddleware',
'openedx.core.djangoapps.embargo.middleware.EmbargoMiddleware',
'enterprise.middleware.EnterpriseLanguagePreferenceMiddleware',
'openedx.core.djangoapps.lang_pref.middleware.LanguagePreferenceMiddleware',
'openedx.core.djangoapps.dark_lang.middleware.DarkLangMiddleware',
'django.middleware.locale.LocaleMiddleware',
'lms.djangoapps.discussion.django_comment_client.utils.ViewNameMiddleware',
'codejail.django_integration.ConfigureCodeJailMiddleware',
'openedx.core.djangoapps.session_inactivity_timeout.middleware.SessionInactivityTimeout',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'lms.djangoapps.courseware.middleware.CacheCourseIdMiddleware',
'lms.djangoapps.courseware.middleware.RedirectMiddleware',
'lms.djangoapps.course_wiki.middleware.WikiAccessMiddleware',
'openedx.core.djangoapps.theming.middleware.CurrentSiteThemeMiddleware',
'waffle.middleware.WaffleMiddleware',
'edx_django_utils.cache.middleware.TieredCacheMiddleware',
'edx_rest_framework_extensions.middleware.RequestCustomAttributesMiddleware',
'edx_rest_framework_extensions.auth.jwt.middleware.EnsureJWTAuthSettingsMiddleware',
'simple_history.middleware.HistoryRequestMiddleware',
'openedx.core.djangoapps.site_configuration.middleware.SessionCookieDomainOverrideMiddleware',
'lms.djangoapps.discussion.django_comment_client.utils.QueryCountDebugMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'common.djangoapps.third_party_auth.middleware.ExceptionMiddleware']
Traceback (most recent call last):
File "/openedx/venv/lib/python3.8/site-packages/mako/lookup.py", line 241, in get_template
return self._check(uri, self._collection[uri])
During handling of the above exception ('indigo/lms/templates/footer.html'), another exception occurred:
File "/openedx/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/openedx/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/openedx/venv/lib/python3.8/site-packages/django/utils/decorators.py", line 134, in _wrapper_view
response = view_func(request, *args, **kwargs)
File "/openedx/edx-platform/common/djangoapps/util/cache.py", line 83, in wrapper
response = view_func(request, *args, **kwargs)
File "/openedx/edx-platform/lms/djangoapps/branding/views.py", line 70, in index
return student_views.index(request, user=request.user)
File "/openedx/edx-platform/common/djangoapps/student/views/management.py", line 171, in index
return render_to_response('index.html', context)
File "/openedx/edx-platform/common/djangoapps/edxmako/shortcuts.py", line 188, in render_to_response
return HttpResponse(render_to_string(template_name, dictionary, namespace, request), **kwargs)
File "/openedx/edx-platform/common/djangoapps/edxmako/shortcuts.py", line 178, in render_to_string
return template.render(dictionary, request)
File "/openedx/edx-platform/common/djangoapps/edxmako/template.py", line 82, in render
return self.mako_template.render_unicode(**context_dictionary)
File "/openedx/venv/lib/python3.8/site-packages/mako/template.py", line 444, in render_unicode
return runtime._render(
File "/openedx/venv/lib/python3.8/site-packages/mako/runtime.py", line 874, in _render
_render_context(
File "/openedx/venv/lib/python3.8/site-packages/mako/runtime.py", line 916, in _render_context
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File "/openedx/venv/lib/python3.8/site-packages/mako/runtime.py", line 943, in _exec_template
callable_(context, *args, **kwargs)
File "/tmp/mako_lms/1ff981c2157d500713c1ce6bf7fdbce2/main.html.py", line 394, in render_body
runtime._include_file(context, (static.get_template_path('footer.html')), _template_uri)
File "/openedx/venv/lib/python3.8/site-packages/mako/runtime.py", line 780, in _include_file
template = _lookup_template(context, uri, calling_uri)
File "/openedx/venv/lib/python3.8/site-packages/mako/runtime.py", line 837, in _lookup_template
return lookup.get_template(uri)
File "/openedx/edx-platform/common/djangoapps/edxmako/paths.py", line 99, in get_template
template = super().get_template(get_template_path_with_theme(uri))
File "/openedx/venv/lib/python3.8/site-packages/mako/lookup.py", line 252, in get_template
return self._load(srcfile, uri)
File "/openedx/venv/lib/python3.8/site-packages/mako/lookup.py", line 313, in _load
self._collection[uri] = template = Template(
File "/openedx/venv/lib/python3.8/site-packages/mako/template.py", line 317, in __init__
module = self._compile_from_file(path, filename)
File "/openedx/venv/lib/python3.8/site-packages/mako/template.py", line 378, in _compile_from_file
_compile_module_file(
File "/openedx/venv/lib/python3.8/site-packages/mako/template.py", line 691, in _compile_module_file
source, lexer = _compile(
File "/openedx/venv/lib/python3.8/site-packages/mako/template.py", line 657, in _compile
node = lexer.parse()
File "/openedx/venv/lib/python3.8/site-packages/mako/lexer.py", line 264, in parse
raise exceptions.SyntaxException(
Exception Type: SyntaxException at /
Exception Value: Unterminated control keyword: 'if' in file '/openedx/themes/indigo/lms/templates/footer.html' at line: 29 char: 1
I believe there's an error where the spacing is inconsistent after every 4th class added. See screenshots here:
https://discuss.overhang.io/t/indigo-theme-spacing-error/1752
(FWIW spacing is consistent when not using Indigo and just using the Open edX default theme. Also I'm using Koa not Lilac)
I would also note that if I'm signed in and go to the "Discover New" page (i.e. lms.com/courses), the spacing is consistent. It's only when signed out and going to the main website landing page that this is inconsistent (which is of course a problem for the site looking good for new visitors)
Hello all,
First, thank you for your huge effort. I'm new to Open Edx and I want to know how to customize the pages for example the main page?
Is it necessary to build the image each time I change something in the template or the sass files?
Also, I have a question about how to access the front-end components?
There is no sass/partials/cms/theme/
directory with .scss
files for overriding styling for studio in the /cms/static/
directory unlike LMS
Even if you add the overriding *.scss files for CMS manually in the sass/partial/cms/theme/
directory, they are ignored as once in LMS. The LMS issue got resolved #24 but the CMS issue still persists.
For now overriding styling for CMS is not as convenient as LMS. By resolving this issue, developers will be able to style CMS as they do LMS.
Hi, There i s no header.html file in this theme . I want change the header with more nav links and search bar . How can I do that?
I lost a couple hours today brute forcing combinations of tutor commands to try and find the correct way to get changes to appear near-immediately within a tutor instance (I'm not sure why sometimes they took a few minutes after launch before they were reflected, but perhaps it was a Google Chrome cache issue.)
I finally landed on the following set of commands to explicitly apply changes after they were made from within the theme folder:
tutor config save
tutor images build openedx
tutor local launch
Please update the Configuration or Customization sections of the documentation to explicitly state this is the correct way to apply new changes to the theme.
Also the documentation of "This plugin can serve as a starting point to create your own themes. Just fork this repository and modify the files as you see fit." is incomplete to the point of incorrectness. But I was able to follow the steps from here to create my own-named theme (so I could confirm it's what was actually being used). It'd be good if you could extract the important bits from those steps and add them to the documentation too.
This issue was reported as part of Redwood release testing. Because the indigo theme is enabled by default since Quince release for all Tutor deployments, this issue is considered a major problem for Open edX.
The original issue found during release testing - openedx/frontend-app-learning#1401
Please find more info about a possible technical solution in the comment: openedx/frontend-app-learning#1401 (comment)
courseware.enable_navigation_sidebar
waffle flag is enabledHow to remove footer links and replace logos of studio
Not 100% sure - this might actually be a design choice rather than a bug.
There's a light-colored rounded rectangle behind and offset from the course image. I'm not 100% sure that's intentional - not sure whether it's supposed to be there or directly behind the image.
Just visit any About page.
In ones without an image you get a blank square in front of the rectangle.
Original issue: openedx/wg-build-test-release#345
I'm opening this issue to confirm whether this is a design choice or a bug. I'm unfamiliar with the indigo theme, so I can't say for sure.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.