-
-
- ${course.display_org_with_default} -
- ${course.display_name} -
- ${_("Starts")}: -
diff --git a/openedx/core/djangoapps/theming/tests/test_helpers.py b/openedx/core/djangoapps/theming/tests/test_helpers.py index c7d38c2db3..b8ffd048a7 100644 --- a/openedx/core/djangoapps/theming/tests/test_helpers.py +++ b/openedx/core/djangoapps/theming/tests/test_helpers.py @@ -26,7 +26,6 @@ class TestHelpers(TestCase): Theme('red-theme', 'red-theme', get_theme_base_dir('red-theme')), Theme('edge.edx.org', 'edge.edx.org', get_theme_base_dir('edge.edx.org')), Theme('edx.org', 'edx.org', get_theme_base_dir('edx.org')), - Theme('example', 'example', get_theme_base_dir('example')), Theme('stanford-style', 'stanford-style', get_theme_base_dir('stanford-style')), ] actual_themes = get_themes() diff --git a/themes/example/lms/static/images/about-img.png b/themes/example/lms/static/images/about-img.png deleted file mode 100644 index 69768cd538..0000000000 Binary files a/themes/example/lms/static/images/about-img.png and /dev/null differ diff --git a/themes/example/lms/static/images/course-thumbnail.jpg b/themes/example/lms/static/images/course-thumbnail.jpg deleted file mode 100644 index e4c3c4a850..0000000000 Binary files a/themes/example/lms/static/images/course-thumbnail.jpg and /dev/null differ diff --git a/themes/example/lms/static/images/hero-course-catalog.png b/themes/example/lms/static/images/hero-course-catalog.png deleted file mode 100644 index b24a3cb97c..0000000000 Binary files a/themes/example/lms/static/images/hero-course-catalog.png and /dev/null differ diff --git a/themes/example/lms/static/images/hero-course-detail.jpg b/themes/example/lms/static/images/hero-course-detail.jpg deleted file mode 100644 index e5c4cdce13..0000000000 Binary files a/themes/example/lms/static/images/hero-course-detail.jpg and /dev/null differ diff --git a/themes/example/lms/static/images/hero-home-page.jpg b/themes/example/lms/static/images/hero-home-page.jpg deleted file mode 100644 index 624f53eb9d..0000000000 Binary files a/themes/example/lms/static/images/hero-home-page.jpg and /dev/null differ diff --git a/themes/example/lms/static/images/openedx-logo-tag.png b/themes/example/lms/static/images/openedx-logo-tag.png deleted file mode 100644 index 5f8085cf10..0000000000 Binary files a/themes/example/lms/static/images/openedx-logo-tag.png and /dev/null differ diff --git a/themes/example/lms/static/images/openedx-logo.png b/themes/example/lms/static/images/openedx-logo.png deleted file mode 100644 index eb944aacbb..0000000000 Binary files a/themes/example/lms/static/images/openedx-logo.png and /dev/null differ diff --git a/themes/example/lms/static/images/page-heading.png b/themes/example/lms/static/images/page-heading.png deleted file mode 100644 index 9968a717db..0000000000 Binary files a/themes/example/lms/static/images/page-heading.png and /dev/null differ diff --git a/themes/example/lms/static/images/user-thumbnail.png b/themes/example/lms/static/images/user-thumbnail.png deleted file mode 100644 index 9a65d8c8dc..0000000000 Binary files a/themes/example/lms/static/images/user-thumbnail.png and /dev/null differ diff --git a/themes/example/lms/static/images/vid-btn.png b/themes/example/lms/static/images/vid-btn.png deleted file mode 100644 index 61eb221cec..0000000000 Binary files a/themes/example/lms/static/images/vid-btn.png and /dev/null differ diff --git a/themes/example/lms/static/images/vid-img.jpg b/themes/example/lms/static/images/vid-img.jpg deleted file mode 100644 index a05a362482..0000000000 Binary files a/themes/example/lms/static/images/vid-img.jpg and /dev/null differ diff --git a/themes/example/lms/static/js/about-site.js b/themes/example/lms/static/js/about-site.js deleted file mode 100644 index 9150795c5a..0000000000 --- a/themes/example/lms/static/js/about-site.js +++ /dev/null @@ -1,31 +0,0 @@ -(function(require) { - 'use strict'; - require(['edx-ui-toolkit/js/utils/html-utils'], function(HtmlUtils) { - function addSlider() { - var isMobileResolution = $(window).width() < 768, - sliderExists = $('.about-list').hasClass('slick-slider'); - $('.about-list').toggleClass('slidable', isMobileResolution); - if (isMobileResolution) { - if (!sliderExists) { - $('.about-list').find('.about-list-item').removeClass('col col-4'); - $('.slidable').slick({ - nextArrow: '', - prevArrow: '' - }); - } - } else { - HtmlUtils.setHtml('.about-container', HtmlUtils.HTML($('#about-content').html())); - } - } - - - $(function() { - HtmlUtils.setHtml('.about-container', HtmlUtils.HTML($('#about-content').html())); - addSlider(); - }); - - $(window).resize(function() { - addSlider(); - }); - }); -}).call(this, require || RequireJS.require); diff --git a/themes/example/lms/static/js/animation-scroll.js b/themes/example/lms/static/js/animation-scroll.js deleted file mode 100644 index 56d35bef09..0000000000 --- a/themes/example/lms/static/js/animation-scroll.js +++ /dev/null @@ -1,15 +0,0 @@ -$(document).ready(function() { - 'use strict'; - - var div = ''; - $('.back-to-top').on('click', function(event) { - event.preventDefault(); - $('html, body').animate({scrollTop: 0}, 300); - }); - - $('ul.list-divided li.item a').on('click', function(event) { - event.preventDefault(); - div = $(this).attr('href'); - $('html, body').animate({scrollTop: $(div).offset().top}, 300); - }); -}); diff --git a/themes/example/lms/static/js/contact-form.js b/themes/example/lms/static/js/contact-form.js deleted file mode 100644 index dd940a78d2..0000000000 --- a/themes/example/lms/static/js/contact-form.js +++ /dev/null @@ -1,82 +0,0 @@ -(function(require) { - 'use strict'; - - require(['edx-ui-toolkit/js/utils/html-utils', 'edx-ui-toolkit/js/utils/string-utils'], - function(HtmlUtils, StringUtils) { - var errorMessages = { - name: 'Please provide your name.', - email: 'Please provide a valid e-mail.', - details: 'Please provide message.', - subject: 'Please provide an inquiry type.' - }; - function addErrorDiv(id) { - var start = HtmlUtils.HTML('
') - } - ); - $('#' + id).addClass('has-error'); - $('#' + id).parent().append(HtmlUtils.template(errorDiv)().toString()); - } - function submitForm(data) { - $.post('/submit_feedback', data, function() { - $('#success-message-btn').click(); - setTimeout(function() { - $('#lean_overlay').trigger('click'); - $('#contact_form').trigger('reset'); - }, 2000); - }).fail(function(xhr) { - var responseData = jQuery.parseJSON(xhr.responseText); - addErrorDiv(responseData.field); - }); - } - - function removeErrorDiv(id) { - $('#' + id).removeClass('has-error'); - $($('#' + id).next()).remove(); - } - function validateForm() { - var optionalFields = ['user_type']; // Optional fields array - var formValues = $('#contact_form').find(':input'), - i = 0, - data = {}, - value = '', - id = '', - response = { - is_form_validate: true, - data: '' - }; - - for (i = 0; i < formValues.length - 2; i++) { - value = $(formValues[i]).val(); - id = $(formValues[i]).attr('id'); - removeErrorDiv(id); - - if (value && value !== '') { - data[id] = value; - } else { - if ($.inArray(id, optionalFields) === -1) { - response.is_form_validate = false; - addErrorDiv(id); - } - } - } - response.data = data; - return response; - } - $(function() { - var validateFormData = ''; - $('#submit_btn').click(function(e) { - e.preventDefault(); - validateFormData = validateForm(); - if (validateFormData.is_form_validate) { - submitForm(validateFormData.data); - } - }); - }); - }); -}).call(this, require || RequireJS.require); diff --git a/themes/example/lms/static/js/course-about.js b/themes/example/lms/static/js/course-about.js deleted file mode 100644 index e7026e39fa..0000000000 --- a/themes/example/lms/static/js/course-about.js +++ /dev/null @@ -1,70 +0,0 @@ - -(function(require) { - 'use strict'; - - require([ - 'edx-ui-toolkit/js/utils/html-utils', - '/static/example/js/leanModal.js' - ], function(HtmlUtils) { // eslint-disable-line no-unused-vars // jshint ignore:line - function expandDescription(entireDescriptionContent) { - var showLessLinkHtml = 'Less'; - HtmlUtils.setHtml('.course-description', HtmlUtils.HTML(entireDescriptionContent + showLessLinkHtml)); - $('#description_less').click(function(event) { - event.preventDefault(); - truncateDescription(entireDescriptionContent); // eslint-disable-line no-use-before-define - }); - } - function truncateDescription(entireDescriptionContent) { - var showMoreLink = '', - truncatedContent = ''; - if (entireDescriptionContent.length > 500) { - showMoreLink = '... See More'; - truncatedContent = entireDescriptionContent.substring(0, entireDescriptionContent.indexOf(' ', 500)); - HtmlUtils.setHtml('.course-description', HtmlUtils.HTML(truncatedContent + showMoreLink)); - $('#description_show').click(function(event) { - event.preventDefault(); - expandDescription(entireDescriptionContent); - }); - } - } - function expandLearningPoints(entireLearningContent) { - var showLessLinkHtml = 'Less'; - HtmlUtils.setHtml( - '.course-learning .list-bulleted', - HtmlUtils.HTML(entireLearningContent + showLessLinkHtml) - ); - $('#learning_less').click(function() { - truncateLearningPoints(entireLearningContent); // eslint-disable-line no-use-before-define - }); - } - function truncateLearningPoints(entireLearningContent) { - var learningPointsCount = $('.course-learning .list-bulleted').children().length, - points = '', - showMoreLink = ''; - if (learningPointsCount > 6) { - points = $('.course-learning .list-bulleted').children().slice((6 - learningPointsCount)); - points.remove(); - showMoreLink = 'See More'; - HtmlUtils.append('.course-learning .list-bulleted', HtmlUtils.HTML(showMoreLink)); - $('#learning_show').click(function(event) { - event.preventDefault(); - expandLearningPoints(entireLearningContent); - }); - } - } - function init() { - var entireDescriptionContent = $('.course-description').html(), - entireLearningContent = $('.course-learning .list-bulleted').html(); - - // Truncating the Course Description - truncateDescription(entireDescriptionContent); - - // Truncating the Course learning points - truncateLearningPoints(entireLearningContent); - - // Instructor Modal - $('.instructor-image').leanModal({closeButton: '.modal_close', top: '10%'}); - } - init(); - }); -}).call(this, require || RequireJS.require); diff --git a/themes/example/lms/static/js/leanModal.js b/themes/example/lms/static/js/leanModal.js deleted file mode 100644 index e11fe8c8f7..0000000000 --- a/themes/example/lms/static/js/leanModal.js +++ /dev/null @@ -1,143 +0,0 @@ -/*eslint-disable */ - -(function(require) { - "use strict"; - - require(['edx-ui-toolkit/js/utils/html-utils'], function(HtmlUtils) { - $.fn.extend({ - /* - * leanModal prepares an element to be a modal dialog. Call it once on the - * element that launches the dialog, when the page is ready. This function - * will add a .click() handler that properly opens the dialog. - * - * The launching element must: - * - be an element, not a button, - * - have an href= attribute identifying the id of the dialog element, - * - have rel='leanModal'. - */ - leanModal: function(options) { - var defaults = { - top: 100, - overlay: 0.5, - closeButton: null, - position: 'fixed' - }; - if ($("#lean_overlay").length === 0) { - var overlay = $(""); - $("body").append(HtmlUtils.template(overlay)().toString()); - } - options = $.extend(defaults, options); - return this.each(function() { - var o = options; - $(this).click(function(e) { - $(".modal").hide(); - var modal_id = $(this).attr("href"); - if ($(modal_id).hasClass("video-modal")) { - //Video modals need to be cloned before being presented as a modal - //This is because actions on the video get recorded in the history. - //Deleting the video (clone) prevents the odd back button behavior. - var modal_clone = $(modal_id).clone(true, - true); - modal_clone.attr('id', 'modal_clone'); - - $(modal_id).after(HtmlUtils.ensureHtml(modal_clone).toString()); - - modal_id = '#modal_clone'; - } - $("#lean_overlay").click(function(e) { - close_modal(modal_id, e); - }); - $(o.closeButton).click(function(e) { - close_modal(modal_id, e); - }); - // To enable closing of email modal when copy button hit - $(o.copyEmailButton).click(function(e) { - close_modal(modal_id, e); - }); - var modal_width = $(modal_id).outerWidth(); - $('#lean_overlay').css({ - 'display': 'block', - opacity: 0 - }); - $('#lean_overlay').fadeTo(200, o.overlay); - $('iframe', modal_id).attr('src', $('iframe', - modal_id).data('src')); - if ($(modal_id).hasClass("email-modal")) { - $(modal_id).css({ - 'width': 80 + '%', - 'height': 80 + '%', - 'position': o.position, - 'opacity': 0, - 'z-index': 11000, - 'left': 10 + '%', - 'top': 10 + '%' - }); - } else { - $(modal_id).css({ - 'position': o.position, - 'opacity': 0, - 'z-index': 11000, - 'left': 50 + '%', - 'margin-left': -(modal_width / 2) + - "px", - 'top': o.top + "px" - }); - } - $(modal_id).show().fadeTo(200, 1); - $(modal_id).find(".notice").hide().html(""); - var notice = $(this).data('notice'); - if (notice !== undefined) { - var $notice = $(modal_id).find(".notice"); - $notice.show(); - $notice.append(HtmlUtils.ensureHtml(notice).toString()); - - // This is for activating leanModal links that were in the notice. We should have a cleaner way of - // allowing all dynamically added leanmodal links to work. - $notice.find("a[rel*=leanModal]").leanModal({ - top: 120, - overlay: 1, - closeButton: ".close-modal", - position: 'absolute' - }); - } - e.preventDefault(); - }); - }); - - function close_modal(modal_id, e) { - $("#lean_overlay").fadeOut(200); - $('iframe', modal_id).attr('src', ''); - $(modal_id).css({ - 'display': 'none' - }); - if (modal_id === '#modal_clone') { - $(modal_id).remove(); - } - e.preventDefault(); - } - } - }); - $(document).ready(function($) { - $("a[rel*=leanModal]").each(function() { - $(this).leanModal({ - top: 120, - overlay: 1, - closeButton: ".close-modal", - position: 'absolute' - }); - var embed = $($(this).attr('href')).find('iframe'); - if (embed.length > 0 && embed.attr('src')) { - var sep = (embed.attr('src').indexOf("?") > 0) ? '&' : - '?'; - embed.data('src', embed.attr('src') + sep + - 'autoplay=1&rel=0'); - embed.attr('src', ''); - } - }); - }); - }); -}).call( - this, - typeof define === 'function' && define.amd ? define : - (typeof RequireJS !== 'undefined' ? RequireJS.define : "") -); diff --git a/themes/example/lms/static/js/slick.min.js b/themes/example/lms/static/js/slick.min.js deleted file mode 100755 index 502b348b75..0000000000 --- a/themes/example/lms/static/js/slick.min.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - _ _ _ _ - ___| (_) ___| | __ (_)___ -/ __| | |/ __| |/ / | / __| -\__ \ | | (__| < _ | \__ \ -|___/_|_|\___|_|\_(_)/ |___/ - |__/ - - Version: 1.5.9 - Author: Ken Wheeler - Website: http://kenwheeler.github.io - Docs: http://kenwheeler.github.io/slick - Repo: http://github.com/kenwheeler/slick - Issues: http://github.com/kenwheeler/slick/issues - - */ - /* jshint ignore:start */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!1,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),e.options.vertical===!1?d[e.animType]="translate3d("+b+"px, 0px, 0px)":d[e.animType]="translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};b.options.fade===!1?c[b.transitionType]=b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:c[b.transitionType]="opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(a.currentSlide-1===0&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('').appendTo(b.$slider):b.$slides.wrapAll('').parent(),b.$list=b.$slideTrack.wrap('').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c${course_details.subtitle}
-${course_details.description}
-${_("You can purchase enrollment codes for this course to distribute to your team")}
- - % if ecommerce_bulk_checkout_link: - <% - url = "mailto:harvardxplus@harvard.edu?Subject={course_id}%20{run}%20Bulk%20Discount".format(course_id=course_details.course_id, run=course_details.run) - link_start = HTML("").format(url=Text(url)) - %> - ${_("Purchase for a Group")} -- ${Text(_("Bulk discounts may apply for groups larger than 10. Contact {link_start}harvardxplus@harvard.edu{link_end} for more information.")).format( - link_start=HTML(link_start), - link_end=HTML('') - )} -
- % else: - <% - url = "mailto:harvardxplus@harvard.edu?Subject={course_id}%20{run}%20Group%20Purchase".format( - course_id=course_details.course_id, run=course_details.run) - %> - ${_("Email Us")} - % endif -Lorem ipsum dolor sit amet, sea te quaeque suscipiantur.
-