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).
As with the registration page, the bulk of the theming work here is
replacing instances of "edX" with the `PLATFORM_NAME` setting. There
is also a change to the "help" section, disabling it if the FAQ
marketing link isn't set.
This mostly involves rewriting all mentions of "edX" to reference the
`PLATFORM_NAME` setting instead. However, there are also some
Stanford-specific rewrite hacks that need to be pulled out
eventually. Additionally, don't display links to marketing pages (or
the sections referencing those marketing pages) if the links are not
defined by the theme.
This setting is used to control the display name of the platform. The
default is "edX", but themes may wish to override. For example,
Stanford will use "Stanford Online" for the time being.
Adjust the now-defunct landing page so that it doesn't render much
of the edX-specific marketing info (social links, press releases,
university partners, etc.) if a theme is enabled.
Additionally, if the Stanford theme is enabled, add in some school-
specific language and adjust the video modal to play a Stanford one.
Allow themes to inherit from the default navigation bar and override
pieces of it, including the main logo, the links that display to the
right of the logo, and the links inside the dropdown menu (with the
exception of the `Log Out` link.
In addition, this adds an empty block at the very top so that themes
can place a branding bar at the top of the page. (Stanford identity
guidelines require this: see https://identity.stanford.edu.)
The `FAVICON_PATH` setting determines the location of the favicon for
the site. It's automatically adjusted when a theme is enabled,
establishing the convention that themes will place their favicon in
`static/images/favicon.ico`.
Provide the appropriate switches to adjust based on whether or not a
theme (in particular, the Stanford theme) is enabled in the settings.
For now, these changes are very specific to Stanford. This is because
the template architecture needs some reworking to generalize nicely.