## coding=utf-8 ## This is the main Mako template that all page templates should include. ## Note: there are a handful of pages that use Django Templates and which ## instead include main_django.html. It is important that these two files ## remain in sync, so changes made in one should be applied to the other. ## Pages currently use v1 styling by default. Once the Pattern Library ## rollout has been completed, this default can be switched to v2. <%! main_css = "style-main-v1" %> <%namespace name='static' file='static_content.html'/> <% online_help_token = self.online_help_token() if hasattr(self, 'online_help_token') else None %> <%! from django.core.urlresolvers import reverse from django.utils.http import urlquote_plus from django.utils.translation import ugettext as _ from django.utils.translation import get_language_bidi from branding import api as branding_api from pipeline_mako import render_require_js_path_overrides %> <!DOCTYPE html> <!--[if lte IE 9]><html class="ie ie9 lte9" lang="${LANGUAGE_CODE}"><![endif]--> <!--[if !IE]><!--><html lang="${LANGUAGE_CODE}"><!--<![endif]--> <head dir="${static.dir_rtl()}"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> ## Define a couple of helper functions to make life easier when ## embedding theme conditionals into templates. All inheriting ## templates have access to these functions, and we can import these ## into non-inheriting templates via the %namespace tag. ## this needs to be here to prevent the title from mysteriously appearing in the body, in one case <%def name="pagetitle()" /> <%block name="title"> <title> ${static.get_page_title_breadcrumbs(self.pagetitle())} </title> </%block> % if not allow_iframing: <script type="text/javascript"> /* immediately break out of an iframe if coming from the marketing website */ (function(window) { if (window.location !== window.top.location) { window.top.location = window.location; } })(this); </script> % endif <% jsi18n_path = "js/i18n/{language}/djangojs.js".format(language=LANGUAGE_CODE) %> <script type="text/javascript" src="${static.url(jsi18n_path)}"></script> <link rel="icon" type="image/x-icon" href="${static.url(static.get_value('favicon_path', settings.FAVICON_PATH))}" /> <%static:css group='style-vendor'/> <%static:css group='${self.attr.main_css}'/> % if not uses_pattern_library: % if disable_courseware_js: <%static:js group='base_vendor'/> <%static:js group='base_application'/> % else: <%static:js group='main_vendor'/> <%static:js group='application'/> % endif % else: ## TODO: Update to only bring in RequireJS ## https://openedx.atlassian.net/browse/FEDX-140 <%static:js group='base_vendor'/> <%static:js group='base_application'/> % endif <script> window.baseUrl = "${settings.STATIC_URL}"; (function (require) { require.config({ baseUrl: window.baseUrl }); }).call(this, require || RequireJS.require); </script> <script type="text/javascript" src="${static.url("lms/js/require-config.js")}"></script> <%block name="js_overrides"> ${render_require_js_path_overrides(settings.REQUIRE_JS_PATH_OVERRIDES)} </%block> % if not disable_courseware_js: <%static:js group='module-js'/> % endif <%block name="headextra"/> <%static:optional_include_mako file="head-extra.html" is_theming_enabled="True" /> <%include file="widgets/optimizely.html" /> <%include file="widgets/segment-io.html" /> <meta name="path_prefix" content="${EDX_ROOT_URL}"> <meta name="google-site-verification" content="_mipQ4AtZQDNmbtOkwehQDOgCxUUV2fb_C0b6wbiRHY" /> <% ga_acct = static.get_value("GOOGLE_ANALYTICS_ACCOUNT", settings.GOOGLE_ANALYTICS_ACCOUNT) %> % if ga_acct: <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '${ga_acct}']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> % endif </head> <body class="${static.dir_rtl()} <%block name='bodyclass'/> lang_${LANGUAGE_CODE}"> <%static:optional_include_mako file="body-initial.html" is_theming_enabled="True" /> <div id="page-prompt"></div> % if not disable_window_wrap: <div class="window-wrap" dir="${static.dir_rtl()}"> % endif <a class="nav-skip" href="#main">${_("Skip to main content")}</a> % if not disable_header: <%include file="${static.get_template_path('header.html')}" args="online_help_token=online_help_token" /> % endif <div class="content-wrapper" id="content"> ${self.body()} <%block name="bodyextra"/> </div> % if not disable_footer: <%include file="themable-footer.html" /> % endif % if not disable_window_wrap: </div> % endif <%block name="js_extra"/> <%include file="widgets/segment-io-footer.html" /> <script type="text/javascript" src="${static.url('js/vendor/noreferrer.js')}" charset="utf-8"></script> <script type="text/javascript" src="${static.url('js/utils/navigation.js')}" charset="utf-8"></script> <%static:optional_include_mako file="body-extra.html" is_theming_enabled="True" /> </body> </html> <%def name="login_query()">${ u"?next={0}".format(urlquote_plus(login_redirect_url)) if login_redirect_url else "" }</%def> <!-- Performance beacon for onload times --> % if settings.FEATURES.get('ENABLE_ONLOAD_BEACON', False): <script> (function () { var sample_rate = ${settings.ONLOAD_BEACON_SAMPLE_RATE}; var roll = Math.floor(Math.random() * 100)/100; var onloadBeaconSent = false; if(roll < sample_rate){ $(window).load(function() { setTimeout(function(){ var t = window.performance.timing; var data = { event: "onload", value: t.loadEventEnd - t.navigationStart, page: window.location.href, }; if (!onloadBeaconSent) { $.ajax({method: "POST", url: "/performance", data: data}); } onloadBeaconSent = true; }, 0); }); } }()); </script> % endif