Merge pull request #259 from MITx/feature/cpennington/minimize_js_requests
Consolidate javascript at the bottom of the page and in a minimal number of django-pipeline groups
This commit is contained in:
@@ -6,11 +6,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
<%static:css group='base-style'/>
|
||||
% else:
|
||||
<link rel="stylesheet" href="${static.url('css/base-style.css')}">
|
||||
% endif
|
||||
<link rel="stylesheet" type="text/css" href="${static.url('js/vendor/markitup/skins/simple/style.css')}" />
|
||||
<link rel="stylesheet" type="text/css" href="${static.url('js/vendor/markitup/sets/wiki/style.css')}" />
|
||||
<title><%block name="title"></%block></title>
|
||||
@@ -27,12 +23,7 @@
|
||||
<script type="text/javascript" src="${static.url('js/vendor/backbone-min.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/markitup/jquery.markitup.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/markitup/sets/wiki/set.js')}"></script>
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
<%static:js group='main'/>
|
||||
% else:
|
||||
<script src="${ STATIC_URL }/js/main.js"></script>
|
||||
% endif
|
||||
|
||||
<%static:js group='module-js'/>
|
||||
<script src="${static.url('js/vendor/jquery.inlineedit.js')}"></script>
|
||||
<script src="${static.url('js/vendor/jquery.cookie.js')}"></script>
|
||||
|
||||
@@ -5,6 +5,24 @@ from static_replace import replace_urls
|
||||
%>
|
||||
|
||||
<%def name='url(file)'>${staticfiles_storage.url(file)}</%def>
|
||||
<%def name='css(group)'>${compressed_css(group)}</%def>
|
||||
<%def name='js(group)'>${compressed_js(group)}</%def>
|
||||
|
||||
<%def name='css(group)'>
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
${compressed_css(group)}
|
||||
% else:
|
||||
% for filename in settings.PIPELINE_CSS[group]['source_filenames']:
|
||||
<link rel="stylesheet" href="${staticfiles_storage.url(filename.replace('.scss', '.css'))}" type="text/css" media="all" / >
|
||||
% endfor
|
||||
%endif
|
||||
</%def>
|
||||
<%def name='js(group)'>
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
${compressed_js(group)}
|
||||
% else:
|
||||
% for filename in settings.PIPELINE_JS[group]['source_filenames']:
|
||||
<script type="text/javascript" src="${staticfiles_storage.url(filename.replace('.coffee', '.js'))}"></script>
|
||||
% endfor
|
||||
%endif
|
||||
</%def>
|
||||
|
||||
<%def name='replace_urls(text)'>${replace_urls(text)}</%def>
|
||||
|
||||
@@ -301,19 +301,47 @@ PIPELINE_CSS = {
|
||||
|
||||
PIPELINE_ALWAYS_RECOMPILE = ['sass/application.scss', 'sass/ie.scss']
|
||||
|
||||
courseware_only_js = [PROJECT_ROOT / 'static/coffee/src/' + pth + '.coffee' for pth in ['courseware', 'histogram', 'navigation', 'time', ] ]
|
||||
courseware_only_js += [pth for pth in glob2.glob(PROJECT_ROOT / 'static/coffee/src/modules/**/*.coffee') ]
|
||||
courseware_only_js = [
|
||||
PROJECT_ROOT / 'static/coffee/src/' + pth + '.coffee'
|
||||
for pth
|
||||
in ['courseware', 'histogram', 'navigation', 'time', ]
|
||||
]
|
||||
courseware_only_js += [
|
||||
pth for pth
|
||||
in glob2.glob(PROJECT_ROOT / 'static/coffee/src/modules/**/*.coffee')
|
||||
]
|
||||
|
||||
main_vendor_js = [
|
||||
'js/vendor/jquery.min.js',
|
||||
'js/vendor/jquery-ui.min.js',
|
||||
'js/vendor/swfobject/swfobject.js',
|
||||
'js/vendor/jquery.cookie.js',
|
||||
'js/vendor/jquery.qtip.min.js',
|
||||
]
|
||||
|
||||
PIPELINE_JS = {
|
||||
'application': {
|
||||
# Application will contain all paths not in courseware_only_js
|
||||
'source_filenames': [pth.replace(PROJECT_ROOT / 'static/', '') for pth in glob2.glob(PROJECT_ROOT / 'static/coffee/src/**/*.coffee') if pth not in courseware_only_js],
|
||||
'source_filenames': [
|
||||
pth.replace(PROJECT_ROOT / 'static/', '')
|
||||
for pth in glob2.glob(PROJECT_ROOT / 'static/coffee/src/**/*.coffee')\
|
||||
if pth not in courseware_only_js
|
||||
] + [
|
||||
'js/form.ext.js',
|
||||
'js/my_courses_dropdown.js',
|
||||
'js/toggle_login_modal.js',
|
||||
'js/sticky_filter.js',
|
||||
],
|
||||
'output_filename': 'js/application.js'
|
||||
},
|
||||
'courseware' : {
|
||||
'courseware': {
|
||||
'source_filenames': [pth.replace(PROJECT_ROOT / 'static/', '') for pth in courseware_only_js],
|
||||
'output_filename': 'js/courseware.js'
|
||||
},
|
||||
'main_vendor': {
|
||||
'source_filenames': main_vendor_js,
|
||||
'output_filename': 'js/main_vendor.js',
|
||||
},
|
||||
'spec': {
|
||||
'source_filenames': [pth.replace(PROJECT_ROOT / 'static/', '') for pth in glob2.glob(PROJECT_ROOT / 'static/coffee/spec/**/*.coffee')],
|
||||
'output_filename': 'js/spec.js'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<%block name="bodyclass">courseware</%block>
|
||||
<%block name="title"><title>Courseware – MITx 6.002x</title></%block>
|
||||
|
||||
<%block name="headextra">
|
||||
<%block name="js_extra">
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.js')}"></script>
|
||||
<link rel="stylesheet" href="${static.url('css/vendor/jquery.treeview.css')}" type="text/css" media="all" />
|
||||
|
||||
@@ -24,21 +24,10 @@
|
||||
<script type="text/javascript" src="${static.url('js/schematic.js')}"></script>
|
||||
|
||||
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
<%static:js group='courseware'/>
|
||||
% endif
|
||||
|
||||
% if not settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
% for jsfn in [ '/static/%s' % x.replace('.coffee','.js') for x in settings.PIPELINE_JS['courseware']['source_filenames'] ]:
|
||||
<script type="text/javascript" src="${jsfn}"></script>
|
||||
% endfor
|
||||
% endif
|
||||
|
||||
|
||||
<%include file="mathjax_include.html" />
|
||||
</%block>
|
||||
|
||||
<%block name="js_extra">
|
||||
<!-- TODO: http://docs.jquery.com/Plugins/Validation -->
|
||||
<script type="text/javascript">
|
||||
document.write('\x3Cscript type="text/javascript" src="' +
|
||||
|
||||
@@ -8,6 +8,30 @@
|
||||
|
||||
<%block name="title"><title>Dashboard</title></%block>
|
||||
|
||||
<%block name="js_extra">
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
|
||||
$(".unenroll").click(function(event) {
|
||||
$("#unenroll_course_id").val( $(event.target).data("course-id") );
|
||||
$("#unenroll_course_number").text( $(event.target).data("course-number") );
|
||||
|
||||
});
|
||||
|
||||
$(document).delegate('#unenroll_form', 'ajax:success', function(data, json, xhr) {
|
||||
if(json.success) {
|
||||
location.href="${reverse('dashboard')}";
|
||||
} else {
|
||||
if($('#unenroll_error').length == 0) {
|
||||
$('#unenroll_form').prepend('<div id="unenroll_error" class="modal-form-error"></div>');
|
||||
}
|
||||
$('#unenroll_error').text(json.error).stop().css("display", "block");
|
||||
}
|
||||
});
|
||||
})(this)
|
||||
</script>
|
||||
</%block>
|
||||
|
||||
<section class="container dashboard">
|
||||
|
||||
<section class="dashboard-banner">
|
||||
@@ -110,25 +134,3 @@
|
||||
</section>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
|
||||
$(".unenroll").click(function(event) {
|
||||
$("#unenroll_course_id").val( $(event.target).data("course-id") );
|
||||
$("#unenroll_course_number").text( $(event.target).data("course-number") );
|
||||
|
||||
});
|
||||
|
||||
$(document).delegate('#unenroll_form', 'ajax:success', function(data, json, xhr) {
|
||||
if(json.success) {
|
||||
location.href="${reverse('dashboard')}";
|
||||
} else {
|
||||
if($('#unenroll_error').length == 0) {
|
||||
$('#unenroll_form').prepend('<div id="unenroll_error" class="modal-form-error"></div>');
|
||||
}
|
||||
$('#unenroll_error').text(json.error).stop().css("display", "block");
|
||||
}
|
||||
});
|
||||
})(this)
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
<%inherit file="main.html" />
|
||||
<%namespace name='static' file='static_content.html'/>
|
||||
|
||||
<%block name="headextra">
|
||||
<%block name="js_extra">
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.stack.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.symbol.js')}"></script>
|
||||
</%block>
|
||||
|
||||
<%block name="headextra">
|
||||
|
||||
<style type="text/css">
|
||||
.grade_a {color:green;}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<%namespace name='static' file='static_content.html'/>
|
||||
<%namespace name="profile_graphs" file="profile_graphs.js"/>
|
||||
|
||||
<%block name="headextra">
|
||||
<%block name="js_extra">
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.stack.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.symbol.js')}"></script>
|
||||
|
||||
@@ -8,42 +8,12 @@
|
||||
|
||||
<link href='http://fonts.googleapis.com/css?family=Open+Sans:800italic,400,800' rel='stylesheet' type='text/css'>
|
||||
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
<%static:css group='application'/>
|
||||
<%static:css group='application'/>
|
||||
<!--[if lt IE 9]>
|
||||
<%static:css group='ie-fixes'/>
|
||||
<![endif]-->
|
||||
% endif
|
||||
|
||||
% if not settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
<link rel="stylesheet" href="/static/sass/application.css" type="text/css" media="all" / >
|
||||
<!--[if lt IE 9]>
|
||||
<link rel="stylesheet" href="/static/sass/ie.css" type="text/css" media="all" / >
|
||||
<![endif]-->
|
||||
% endif
|
||||
|
||||
<script type="text/javascript" src="${static.url('js/vendor/jquery.min.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/jquery-ui.min.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/swfobject/swfobject.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/jquery.cookie.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/jquery.qtip.min.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/form.ext.js')}"></script>
|
||||
|
||||
% if settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
<%static:js group='application'/>
|
||||
% endif
|
||||
|
||||
% if not settings.MITX_FEATURES['USE_DJANGO_PIPELINE']:
|
||||
% for jsfn in [ '/static/%s' % x.replace('.coffee','.js') for x in settings.PIPELINE_JS['application']['source_filenames'] ]:
|
||||
<script type="text/javascript" src="${jsfn}"></script>
|
||||
% endfor
|
||||
% endif
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="${static.url('js/html5shiv.js')}"></script>
|
||||
<![endif]-->
|
||||
|
||||
<%block name="headextra"/>
|
||||
<%static:js group='main_vendor'/>
|
||||
<%block name="headextra"/>
|
||||
|
||||
<meta name="path_prefix" content="${MITX_ROOT_URL}">
|
||||
</head>
|
||||
@@ -56,10 +26,13 @@
|
||||
|
||||
<%block name="bodyextra"/>
|
||||
<%include file="footer.html" />
|
||||
<%block name="js_extra"/>
|
||||
<script src="${static.url('js/my_courses_dropdown.js')}"></script>
|
||||
<script src="${static.url('js/toggle_login_modal.js')}"></script>
|
||||
<script src="${static.url('js/sticky_filter.js')}"></script>
|
||||
|
||||
<%static:js group='application'/>
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="${static.url('js/html5shiv.js')}"></script>
|
||||
<![endif]-->
|
||||
|
||||
<%block name="js_extra"/>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -3,12 +3,48 @@
|
||||
from courseware.courses import course_image_url, get_course_about_section
|
||||
%>
|
||||
<%namespace name='static' file='../static_content.html'/>
|
||||
<%block name="js_extra">
|
||||
<script src="${static.url('js/course_info.js')}"></script>
|
||||
</%block>
|
||||
|
||||
<%inherit file="../main.html" />
|
||||
|
||||
<%block name="js_extra">
|
||||
% if not registered:
|
||||
%if user.is_authenticated():
|
||||
## If the user is authenticated, clicking the enroll button just submits a form
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
$(".register").click(function() {
|
||||
$("#class_enroll_form").submit();
|
||||
});
|
||||
|
||||
$(document).delegate('#class_enroll_form', 'ajax:success', function(data, json, xhr) {
|
||||
if(json.success) {
|
||||
location.href="${reverse('dashboard')}";
|
||||
}
|
||||
});
|
||||
})(this)
|
||||
</script>
|
||||
%else:
|
||||
## If the user is not authenticated, clicking the enroll button pops up the register
|
||||
## field. We also slip in the registration fields into the login/register fields so
|
||||
## the user is automatically registered after logging in / registering
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
$(".register").click(function() {
|
||||
if ($("#login_form .enroll_fieldset").length === 0) {
|
||||
$("#login_form").append( $(".enroll_fieldset").first().clone() );
|
||||
}
|
||||
if ($("#register_form .enroll_fieldset").length === 0) {
|
||||
$("#register_form").append( $(".enroll_fieldset").first().clone() );
|
||||
}
|
||||
});
|
||||
})(this)
|
||||
</script>
|
||||
%endif
|
||||
%endif
|
||||
|
||||
<script src="${static.url('js/course_info.js')}"></script>
|
||||
</%block>
|
||||
|
||||
|
||||
<%block name="title"><title>About ${course.number}</title></%block>
|
||||
|
||||
@@ -119,38 +155,6 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
%if user.is_authenticated():
|
||||
## If the user is authenticated, clicking the enroll button just submits a form
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
$(".register").click(function() {
|
||||
$("#class_enroll_form").submit();
|
||||
});
|
||||
|
||||
$(document).delegate('#class_enroll_form', 'ajax:success', function(data, json, xhr) {
|
||||
if(json.success) {
|
||||
location.href="${reverse('dashboard')}";
|
||||
}
|
||||
});
|
||||
})(this)
|
||||
</script>
|
||||
%else:
|
||||
## If the user is not authenticated, clicking the enroll button pops up the register
|
||||
## field. We also slip in the registration fields into the login/register fields so
|
||||
## the user is automatically registered after logging in / registering
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
$(".register").click(function() {
|
||||
if ($("#login_form .enroll_fieldset").length === 0) {
|
||||
$("#login_form").append( $(".enroll_fieldset").first().clone() );
|
||||
}
|
||||
if ($("#register_form .enroll_fieldset").length === 0) {
|
||||
$("#register_form").append( $(".enroll_fieldset").first().clone() );
|
||||
}
|
||||
});
|
||||
})(this)
|
||||
</script>
|
||||
%endif
|
||||
%endif
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
from django.core.urlresolvers import reverse
|
||||
%>
|
||||
|
||||
<%block name="headextra">
|
||||
<%block name="js_extra">
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.stack.js')}"></script>
|
||||
<script type="text/javascript" src="${static.url('js/vendor/flot/jquery.flot.symbol.js')}"></script>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
from simplewiki.views import wiki_reverse
|
||||
%>
|
||||
|
||||
<%block name="headextra">
|
||||
<%block name="js_extra">
|
||||
<script type="text/javascript" src="${static.url('js/simplewiki-AutoSuggest_c_2.0.js')}"></script>
|
||||
|
||||
## TODO (cpennington): Remove this when we have a good way for modules to specify js to load on the page
|
||||
|
||||
Reference in New Issue
Block a user