Developers can have private settings files by creating
lms/envs/private.py or cms/envs/private.py. They are imported
at the end of dev.py. Note that they won't be imported if you
are using one of the other dev*.py variants.
Themes do not necessarily want all of the available LMS routes, such
as `/jobs` and `/university_profiles`. This change splits up the
`lms/urls.py` file and selectively enables/disables routes based on
whether or not a theme is enabled. This is a naive solution for now;
a better solution gives themes a way to selectively overrides such
routes.
Additionally, with the `MKTG_URL_LINK_MAP` setting that hits certain
routes immediately on each page render (whenever the `marketing_link`
helper function is called), themes may crash if they don't leave
all marketing link routes present in `lms/urls.py`. This change also
provides the ability to override the `MKTG_URL_LINK_MAP` in the
settings.
Finally, modify the mitxmako marketing URL middleware to not try to
reverse disabled URLs, which are those keys in the map whose values
are `None`.
Just as is done with the main LMS application.scss file, rewrite the
course.scss file with Mako to conditionally import a theme's
variables overrides. Add the course.scss file to the list of ignored
Git files so that it doesn't keep getting committed over and over
again.
This also requires us to add a hardcoded line in the assets Rakefile
for the moment, so that the course.scss.mako file gets properly
preprocessed. Once the preprocessing is done by a Django management
command, we won't have to do this anymore.
Since the theme Sass is just a simple variables overrides (for the
moment), it must be imported right after the default variables Sass
file (if at all). At the bottom of the file, it has no effect.
Adjust language of LMS emails to work specifically for Stanford. Here
there be dragons: lots of ugly conditionals that will need to be
changed once we develop a way to "theme" arbitrary strings throughout
the site.
Update the email change templates to fit with the rest of the main
site and use the standard notification template. Now they're far
prettier than before.
Instead of hardcoding things like the platform name, use the
corresponding overrideable settings instead. This allows themes to
control emails as well.
Configure the technical support email address in the settings so that
themes can override with an email of their own in the appropriate
env.json file in production.
Much like the work done on the default (unauthenticated) index view,
adjust the background image (actually, let the CSS handle it instead
of an embedded `style` attribute in the HTML). Other adjustments
(language, logo) are made for Stanford specifically and need to be
reworked for general theming.
Use the theme's own Google Analytics template (should probably
update to just use parameters once the default GA template is kept
up-to-date). Don't link to the university profile page when a theme
is enabled, as that's an edX-specific feature. Adjust social links
for Stanford, but leave them alone for everyone else (this is just
a hack for the 6/11/13 launch).
Again, most of the work here is replacing "edX" with the
`PLATFORM_NAME` setting. Need to ensure that the `news` boolean is
indeed a falsy value as well, or just add a `theme_enabled()` test
to disable the news block entirely (since news is an edX-specific
feature).