From 72581a08ce0dde0f1d0cd22734a5fb4ef5715460 Mon Sep 17 00:00:00 2001 From: hasnain naveed Date: Fri, 15 Jul 2016 09:55:44 +0000 Subject: [PATCH] WL-474 | theme boilerplate --- .../djangoapps/theming/tests/test_helpers.py | 1 + .../example/lms/static/images/about-img.png | Bin 0 -> 5669 bytes .../lms/static/images/course-thumbnail.jpg | Bin 0 -> 3848 bytes .../lms/static/images/hero-course-catalog.png | Bin 0 -> 13952 bytes .../lms/static/images/hero-course-detail.jpg | Bin 0 -> 10284 bytes .../lms/static/images/hero-home-page.jpg | Bin 0 -> 4772 bytes .../lms/static/images/openedx-logo-tag.png | Bin 0 -> 1607 bytes .../lms/static/images/openedx-logo.png | Bin 0 -> 6477 bytes .../lms/static/images/page-heading.png | Bin 0 -> 7560 bytes .../lms/static/images/user-thumbnail.png | Bin 0 -> 4968 bytes themes/example/lms/static/images/vid-btn.png | Bin 0 -> 2285 bytes themes/example/lms/static/images/vid-img.jpg | Bin 0 -> 4997 bytes themes/example/lms/static/js/about-site.js | 31 + .../example/lms/static/js/animation-scroll.js | 15 + themes/example/lms/static/js/contact-form.js | 82 + themes/example/lms/static/js/course-about.js | 70 + themes/example/lms/static/js/leanModal.js | 143 ++ themes/example/lms/static/js/slick.min.js | 20 + themes/example/lms/static/js/sticky.js | 53 + .../example/lms/static/sass/_accordion.scss | 125 ++ .../example/lms/static/sass/_overrides.scss | 1457 +++++++++++++++++ .../lms/static/sass/base/_variables.scss | 19 + .../example/lms/static/sass/lms-main-v1.scss | 21 + .../example/lms/static/sass/lms-main-v2.scss | 21 + themes/example/lms/static/sass/slick.scss | 99 ++ themes/example/lms/templates/about_site.html | 51 + themes/example/lms/templates/course.html | 31 + .../example/lms/templates/courses_list.html | 37 + .../templates/courseware/course_about.html | 428 +++++ .../lms/templates/courseware/courses.html | 49 + themes/example/lms/templates/footer.html | 58 + themes/example/lms/templates/head-extra.html | 19 + themes/example/lms/templates/header.html | 72 + themes/example/lms/templates/index.html | 68 + .../lms/templates/static_templates/about.html | 80 + .../templates/static_templates/contact.html | 96 ++ .../lms/templates/static_templates/faq.html | 147 ++ .../lms/templates/static_templates/honor.html | 93 ++ .../templates/static_templates/privacy.html | 89 + .../lms/templates/static_templates/tos.html | 89 + .../student_account/login_and_register.html | 38 + 41 files changed, 3602 insertions(+) create mode 100644 themes/example/lms/static/images/about-img.png create mode 100644 themes/example/lms/static/images/course-thumbnail.jpg create mode 100644 themes/example/lms/static/images/hero-course-catalog.png create mode 100644 themes/example/lms/static/images/hero-course-detail.jpg create mode 100644 themes/example/lms/static/images/hero-home-page.jpg create mode 100644 themes/example/lms/static/images/openedx-logo-tag.png create mode 100644 themes/example/lms/static/images/openedx-logo.png create mode 100644 themes/example/lms/static/images/page-heading.png create mode 100644 themes/example/lms/static/images/user-thumbnail.png create mode 100644 themes/example/lms/static/images/vid-btn.png create mode 100644 themes/example/lms/static/images/vid-img.jpg create mode 100644 themes/example/lms/static/js/about-site.js create mode 100644 themes/example/lms/static/js/animation-scroll.js create mode 100644 themes/example/lms/static/js/contact-form.js create mode 100644 themes/example/lms/static/js/course-about.js create mode 100644 themes/example/lms/static/js/leanModal.js create mode 100755 themes/example/lms/static/js/slick.min.js create mode 100755 themes/example/lms/static/js/sticky.js create mode 100644 themes/example/lms/static/sass/_accordion.scss create mode 100644 themes/example/lms/static/sass/_overrides.scss create mode 100755 themes/example/lms/static/sass/base/_variables.scss create mode 100644 themes/example/lms/static/sass/lms-main-v1.scss create mode 100644 themes/example/lms/static/sass/lms-main-v2.scss create mode 100755 themes/example/lms/static/sass/slick.scss create mode 100644 themes/example/lms/templates/about_site.html create mode 100644 themes/example/lms/templates/course.html create mode 100644 themes/example/lms/templates/courses_list.html create mode 100644 themes/example/lms/templates/courseware/course_about.html create mode 100644 themes/example/lms/templates/courseware/courses.html create mode 100644 themes/example/lms/templates/footer.html create mode 100644 themes/example/lms/templates/head-extra.html create mode 100644 themes/example/lms/templates/header.html create mode 100644 themes/example/lms/templates/index.html create mode 100644 themes/example/lms/templates/static_templates/about.html create mode 100644 themes/example/lms/templates/static_templates/contact.html create mode 100644 themes/example/lms/templates/static_templates/faq.html create mode 100644 themes/example/lms/templates/static_templates/honor.html create mode 100644 themes/example/lms/templates/static_templates/privacy.html create mode 100644 themes/example/lms/templates/static_templates/tos.html create mode 100644 themes/example/lms/templates/student_account/login_and_register.html diff --git a/openedx/core/djangoapps/theming/tests/test_helpers.py b/openedx/core/djangoapps/theming/tests/test_helpers.py index b7ca6dcc17..9774671233 100644 --- a/openedx/core/djangoapps/theming/tests/test_helpers.py +++ b/openedx/core/djangoapps/theming/tests/test_helpers.py @@ -25,6 +25,7 @@ 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 new file mode 100644 index 0000000000000000000000000000000000000000..69768cd538a2b346301b049ea250b52ac16d1624 GIT binary patch literal 5669 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ߛUKhhe0#4K8$=*VHXEM@$x!l~--hr5G(&Hf|Q3P~HDI zgFJSmT^YuAI~D66cWLR!`Q^zy+nK5JZvJm&YRRd*?lNEE=C_@GO^XXA8ft}R*mXiW z+>*n_Vw{eT}pJWVo!NVb}qnQ1Aq_iCQs zF8Y!q#&tqfLaFhtaG|1nzkBQ0AP^ICsb|AWnhD%eHa=M8h>7v+iT?i8w@xbstSWIZ zs93W|4UhiyfFo8(%w#}+85?#M+Mi5p+!>0w&n*lX8Qc@{=PTPl)vv+d7?Ug)_QR%wtyTTvC^r; zTeYN|$dM(-3e9c=Y;cQ+fQ>O-t1>l~RFMr9i^9=?5(cigW6m~^QvL3>C#LAgr^R~_ zF$b&HFH~?bRX1giWr}-^aR4HxVj1}zhm&C@Jd6^(iM%YX^=>vC0CQ`aolYvR)LPMS zkdNw)Qj??h0y`kmc8WO#BYg_2*1J~}uwz}Ffy7`!#n$ViyBcpTyZPYX)O~(-JDHfK zJ~|Kg!eZemdZqP0zD#nLn3|w_rIP*K*es0weSMdmN0fTk(sz?|?Z6->%n92pzE?BP zb>Eo1bnXJFZThVi5-NRaN6h_64#cS%3F(ts!7?_7+6X%)JeSL< zojjYGGnRC6EUG@Wux*M5ywF{6Y>Yw>?3&3UlMg0}T7$fzwc)MoO71RMgeH?q9)px) zB{nfPE&)!OXqMK0#5`chg<&vE3#l|%cv#Rk>AM$!_=mkosCx0wHp#M{@0McgG| z!SV4>HJ-ym6o0H)Dw(gd-EehqUgH=xxel;d*etb!Lif7TE*%;}n!MspNtRD=4LX|7 z10E%_=*Z$9voKn)>ck#ty2zKte^eDj9=|(GoS{&D4ru`T)n6a(eO#$LU}VO#&OZn+ zb=k+E&?zp)M-P603Ynk0p=He{GR<)0 zW1ydGr?_=wH$!kURlzq948^sk>%TH0cTVvAjB^fS`hm0>rfGe-$*oX2azaE>4=Ut~ z)Z+x8WmSC{GK~VQq}Xh`*glAr2M?y`$ok7Bf@&C@+;J_WSyL<)TotFo{O3<`<$GJ- ziUc6X&>Zx2m7-307khay4f#X=c6opr|1P6%{*-H>bY8;t0oNxJpJ%a5zEXFEBA;7+ zk8ck>`ykBRMQ0^UOF4}5+Yh;Wex>gR7;|K0Woxp9;$ggH%&8TZ_-r4E zrYl$*_}5!30hXy-(CXs*e44wRHIS&%5t|5}@;T5(x3oPj-LsX4Z_pVc^cZBZbangV ze9M;!<-dE3NZaWslO$3uWRmUs!78;9rQ|f`j5*xjUKgI>EVZ)H;5gZ9<@9uj=y4l` zz5)>@(^ld@$aU|s2?ZZN6;e`%pP!$TZNt3z7>ZG|drc&lCeu|4Fdu~fwB#RFI&C3Y zwsErlb9-m!g~`duw|7ggWD?qZKG*)e41!!uiB%9gH-WF@qz5X%_;m>^PTD@BVA&(rZZFxoCkN(A-{7iEso85-7e`{GuRKdwml-_F*fzy)Q?ou$DLFzMvuD=fAzx&e1beW z6n;?YkdxHxS1!N_a@VAEPwb;(cV@H|w_vpVhPE>rPH*4lFFjxb=aR&F!Mn4>kK7NdrTh;n+BLP9sEodZ%Hwj#rIC8XqE1N)nM3k*@LEVadH z!u0D0eh(Eb{48Q6Oe|(?ef@Y3me=v|5T$L9FURynTtf)E{`b`!Pe&tZgue-~Dof&#nqJex&nhKF*X0Q)9g>JT$&$ZI^K#Xd>`#$&GeB?T?5{l2(0HMTOUL%ApZ54K1W5C8xG literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/course-thumbnail.jpg b/themes/example/lms/static/images/course-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4c3c4a85019d1211b75b9c8ddba26a5df82cc5f GIT binary patch literal 3848 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 Zvxa`%+`f6j()IIe{oDFi6^Ii({ST85IO6~S literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/hero-course-catalog.png b/themes/example/lms/static/images/hero-course-catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..b24a3cb97c6d1f8656bbdcfad8633fc26c014854 GIT binary patch literal 13952 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 literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/hero-course-detail.jpg b/themes/example/lms/static/images/hero-course-detail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e5c4cdce136d543c217f6f4deaa2ad091143e631 GIT binary patch literal 10284 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 literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/hero-home-page.jpg b/themes/example/lms/static/images/hero-home-page.jpg new file mode 100644 index 0000000000000000000000000000000000000000..624f53eb9db2b193a23432b8bcff70548fad95e3 GIT binary patch literal 4772 zcmeH`-A>d%6vwBo8e)uLjRrO`aZ-{+#qIQC+tP+Ypk?F6)DYYRZ%aF{&C*WOcHP3Y z58{=H&)|hz_z-?vac}ey>a^~%1X!M+=W6Ek{Qq<2H>dgc{0uB^XZ`^I-R=u82d0t# z26b!b4vql>ZqxKV0P?dM>ZfU>BNQf_M+663cgZ+h;@z|}l15FZRD0527PRKBJF)d#z#F1{s z*hxv;Bjjj8ai>pGlJrRgO|zs1pY8dfM@Gr>Qe)eCH%w9|baB@*Sn9(0zNc%dy4sc$ zsbgt^AZ*K;B+090r=tq;wk0a&L~9Xu7~n9SXuYYnJyTnZLlDuEEgbvrvDb-70LyFZ z{_I|anSNufH@g>crWVm=Q1Q4I9($6a6I3kEN0)BShaZP@;$u46`5*A099ZC;(qD+l ze}NC+(foYlVPkn=VOeZGZHioz2DdI3v2JaaVcitW<3#Zp#Q6e`$~ zw{DV6zvZW(KF55z^RdRT;8vZf)tUSocnuh4`uCTsyH_$`{&EedU&-V@!TlOToojWl o0X|i2vh_r0u_OZKt-S;P!YI7fXRRS152Pba{vGU literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/openedx-logo-tag.png b/themes/example/lms/static/images/openedx-logo-tag.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8085cf10a43a42bfb06ee977e83618a8f2759c GIT binary patch literal 1607 zcmeAS@N?(olHy`uVBq!ia0vp^(}38BgBeJ623^u%U|=i>@CkAK|Np=I{F^|uLoE|X zcK1$zGay{yoTX^uKn3Ep+pF8AVu}+KS)No4Hy;lJ%^V09nS|@bsuELni*EWd->ePh z=@9ibJ+t_WRs-3|b+g*z6Cl2>>Ym-1m$yVMT&r~XTJ?B=;`u@OWJ*4G!&Ht`2{mDF>?wC2nY&FNGJe-l9Gy=x`Ba#v9Y;>gM*8UXFxzeXlQtJ zLPA1XT5dr>L3w#YLqkW$gb6ceE?BT&)v65}HtgPg;J|@1XD(d0aOv{3yLazB0E35* z9zA*T;>GLN@7{d?fzMyRe*O0C+xPD(9pbMT7+3^6T^vIy7~f1@`0lF$k9)sM*rH_x z!KNHMY|T$3E4uCeUZ1#o_RQCIN9=E&+@$+<(%diM6_u5hKXq8FGt1MQBrR|X3SrnGC!Bd-W z&I5hkv$ky~gIC*c)%bNaXvIqT-A+Dl|GnlhUA62K*P69!o~a+{zZTiByYbAKX_=OV z1%*p1`I1h*G+aCDhv8a_@Z8zg%C~zgJ}~FuLRIIwH`fvq*I%m@;+(d?WWh{ji8;0_ zET8W$JNMRfIFh-oRc|HU^7AvMnf#u>qRz=7q^@Fdq~2-Wp6$Ws4yr}o%E}X2 za;+h{gyo>3wbGQD)$VG0#d4&MyjZ(MOS1Vjo6M>u&XaCQpVvK?B`~EgU2L-7wM$+x z6B5J^m~rL_aVV~x$lP6Nv+7{f7O@4PJLg)@+1s@wV4{zj6SuaxO2l!k$TbQriyW6+ z)txRkao)5jsW7soqu*4DHEZojiK$_I!ZPosoW9mlYx&oyWqZ6< zE^kbfh0<)hLm3keZnP8&`I;emlH-a~w_DuWbyH(lCmel$`To1KxhnntTDCq(O3)J$ zJezf(+3nWiU92xk9$c$R)YEXj^f$$7Zrz>6B@4Dp*!l1$mt=XKpPbyQ6q~GV41E_b zR{2JhCQkl!?aD7z&e_W@O^R1;&Ayr{)MXQR@w2MbPXS%QbM?_~d!N-OLU&xd zv$Rxe>#ZdgJ(5a~^+S(^^{n~2%>On2x!f4UtJ^ zJElF}*CqN$zEI3%i`emq=~4QeYYVx|t{+;w#AwSFp;exna%V=oHi_y^PSNeTE3NeX z9ea3qc==?e8GP?`zjt1pc09c2xH?e!jpte^dA`)w+kXoDwfdWAHrr$}gV(38KTjkp z^{=<^F9n*uVxw5wry_|@{qq0+v_+fjNLzXO^!xMY?ajCT%DuS8Zu>c%`M;O9`)--` z{)Fe;v$lKeKNsZ-)}3~r-`E(Xw`yPg>!8!`ueuuVoAy4VZ{bw)2=5Kg=PZBRHAnO0 zzsxPy_It0oW~!cjV{L=xo7s~~tN!?jHD|14FVdQ I&MBb@0AWlGp#T5? literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/openedx-logo.png b/themes/example/lms/static/images/openedx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eb944aacbbda3b6713445a4642fa5605915125b2 GIT binary patch literal 6477 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 HOw|7X`&@kE literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/page-heading.png b/themes/example/lms/static/images/page-heading.png new file mode 100644 index 0000000000000000000000000000000000000000..9968a717db8812a5fba0bd6c3795506614311036 GIT binary patch literal 7560 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 rQH{g>hthv2{kwJkA5E#}Fk#wP?p4a~X%rQ`S literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/user-thumbnail.png b/themes/example/lms/static/images/user-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..9a65d8c8dc2394b12a2b584fdd2bd286ccdbad86 GIT binary patch literal 4968 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 literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/images/vid-btn.png b/themes/example/lms/static/images/vid-btn.png new file mode 100644 index 0000000000000000000000000000000000000000..61eb221cec5439f721f0ffc03b7e737b34574847 GIT binary patch literal 2285 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 Wue9i|h!DQh`+wa39~0QhfAwD!4ixtQ literal 0 HcmV?d00001 diff --git a/themes/example/lms/static/js/about-site.js b/themes/example/lms/static/js/about-site.js new file mode 100644 index 0000000000..9150795c5a --- /dev/null +++ b/themes/example/lms/static/js/about-site.js @@ -0,0 +1,31 @@ +(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 new file mode 100644 index 0000000000..56d35bef09 --- /dev/null +++ b/themes/example/lms/static/js/animation-scroll.js @@ -0,0 +1,15 @@ +$(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 new file mode 100644 index 0000000000..dd940a78d2 --- /dev/null +++ b/themes/example/lms/static/js/contact-form.js @@ -0,0 +1,82 @@ +(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('
'), + errorDiv = StringUtils.interpolate( + '{start}{errorMessage}{end}', + { + start: start, + errorMessage: errorMessages[id], + end: 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 new file mode 100644 index 0000000000..e7026e39fa --- /dev/null +++ b/themes/example/lms/static/js/course-about.js @@ -0,0 +1,70 @@ + +(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 new file mode 100644 index 0000000000..e11fe8c8f7 --- /dev/null +++ b/themes/example/lms/static/js/leanModal.js @@ -0,0 +1,143 @@ +/*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 new file mode 100755 index 0000000000..502b348b75 --- /dev/null +++ b/themes/example/lms/static/js/slick.min.js @@ -0,0 +1,20 @@ +/* + _ _ _ _ + ___| (_) ___| | __ (_)___ +/ __| | |/ __| |/ / | / __| +\__ \ | | (__| < _ | \__ \ +|___/_|_|\___|_|\_(_)/ |___/ + |__/ + + 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='
    ',c=0;c<=b.getDotCount();c+=1)d+="
  • "+b.options.customPaging.call(this,b,c)+"
  • ";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;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=d.slideCount%d.options.slidesToScroll!==0,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.$slidesCache=b.$slides,b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=b.slideWidth*b.options.slidesToShow*-1,e=d*b.options.slidesToShow*-1),b.slideCount%b.options.slidesToScroll!==0&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth*-1,e=(b.options.slidesToShow-(a-b.slideCount))*d*-1):(b.slideOffset=b.slideCount%b.options.slidesToScroll*b.slideWidth*-1,e=b.slideCount%b.options.slidesToScroll*d*-1))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?a*b.slideWidth*-1+b.slideOffset:a*d*-1+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=b.options.rtl===!0?f[0]?-1*(b.$slideTrack.width()-f[0].offsetLeft-f.width()):0:f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",null),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var d,e,c=this;e=c.slideCount-c.options.slidesToShow,c.options.infinite||(c.slideCount<=c.options.slidesToShow?c.currentSlide=0:c.currentSlide>e&&(c.currentSlide=e)),d=c.currentSlide,c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,void d.reinit())},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=b.slideWidth*d*-1,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=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.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=a.options.useTransform&&null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),void c.asNavFor(e)):void c.slideHandler(e)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d); +}):i.postSlide(d))):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?void(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d))):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?i.slideCount%i.options.slidesToScroll!==0?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?i.slideCount%i.options.slidesToScroll!==0?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e)})):i.postSlide(e),void i.animateHeight()):void(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e))))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(a){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"])}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.options.vertical===!1?b.swipeLeft=d+f*g:b.swipeLeft=d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):void b.setCSS(b.swipeLeft)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,void(b.dragging=!0))},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):a.options.autoplay===!0&&(a.paused=!1,a.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.activateADA=function(){var a=this;a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},b.prototype.focusHandler=function(){var b=this;b.$slider.on("focus.slick blur.slick","*",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.isPlay&&(d.is(":focus")?(b.autoPlayClear(),b.paused=!0):(b.paused=!1,b.autoPlay()))},0)})},a.fn.slick=function(){var f,g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length;for(f=0;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); +/* jshint ignore:end */ diff --git a/themes/example/lms/static/js/sticky.js b/themes/example/lms/static/js/sticky.js new file mode 100755 index 0000000000..02cab4c66f --- /dev/null +++ b/themes/example/lms/static/js/sticky.js @@ -0,0 +1,53 @@ + +/* jshint strict: false */ + +var $el = $('#sticky'), + stickyBarTop = $('#sticky').offset().top, + MIN_WEB_WIDTH = 768; + +$(document).ready(function() { + 'use strict'; + var makeSticky = function() { + $el.css({ + position: 'fixed', + top: 0, + width: '100%', + 'z-index': '10', + 'box-shadow': '0px 1px 5px rgba(0,0,0,0.5)' + }); + $('.sticky-course-title').removeClass('hidden'); + $('.course-run').addClass('hidden'); + }; + var removeSticky = function() { + $el.css({ + position: 'static', + 'z-index': '0', + 'box-shadow': 'none' + }); + $('.sticky-course-title').addClass('hidden'); + $('.course-run').removeClass('hidden'); + }; + var initializeSticky = function() { + var windowTop = ''; + if ($el.length) { // Element should exist + $(window).scroll(function() { + if ($(window).width() >= MIN_WEB_WIDTH) { + windowTop = $(window).scrollTop(); + if (stickyBarTop < windowTop) { + makeSticky(); + } else { + removeSticky(); + } + } + }); + } + }; + initializeSticky(); + $(window).resize(function() { + if ($(window).width() >= MIN_WEB_WIDTH) { + makeSticky(); + } else { + removeSticky(); + } + }); +}); diff --git a/themes/example/lms/static/sass/_accordion.scss b/themes/example/lms/static/sass/_accordion.scss new file mode 100644 index 0000000000..f0107fa73b --- /dev/null +++ b/themes/example/lms/static/sass/_accordion.scss @@ -0,0 +1,125 @@ +.tabcordion{ + padding: 1rem 0; + min-height: 500px; + margin: 1rem 0 0; + h2{ + font-size: 1.5rem; + color: $black; + letter-spacing: 0; + } + ul { + margin: 0; + padding: 0; + position: relative; + li { + list-style: none; + display: block; + margin-left: 0; + overflow: hidden; + margin-bottom: 3px; + vertical-align: top; + a { + border: 0; + background: #d2d0d0; + display: block; + padding: 1.25rem 2rem 1.25rem 1rem; + position: relative; + color: $black; + &:hover, &.active, &:focus { + color: $black; + } + &:after{ + content: "\f0da"; + position: absolute; + right: 20px; + top: 22px; + font-family: 'FontAwesome'; + font-size: 1.3rem; + color: #9b9b9b; + } + &.active{ + &:after{ + content: "\f0dd"; + top: 18px; + } + } + } + ul { + li { + a { + padding: 10px 25px; + border-bottom: 1px dotted #ccc; + } + } + } + &:first-child{ + margin-left: 0; + a{ + padding-left: 1rem; + } + } + } + section { + display: none; /* I NEED TO FIX THIS */ + float: left; + overflow: hidden; + padding: 1rem; + background-color: transparent; + p{ + line-height: 1.75rem; + } + } + } +} + +@media only screen and (min-width: 30em) { + .tabcordion { + ul { + position: relative; + border: none; + li { + display: inline-block; + margin-left: -4px; + margin-bottom: 0; + a { + display: inline-block; + padding: 1.25rem 1rem; + text-decoration: none; + background-color: transparent; + color: $brand-color; + font-size: 1.1rem; + z-index: 1; + position: relative; + &:hover, &.active { + color: $black; + border-bottom: 5px solid $brand-color; + &:after{ + content: ""; + display: none; + } + } + &:after{ + content: ""; + display: none; + } + } + &:first-child{ + margin-left: -4px; + display: inline-block; + a{ + padding-left: 0; + } + } + } + section { + padding: 2% 0; + position: absolute; + top: 42px; + left: 0; + border-top: 5px solid $dark; + margin-top: 14px; + z-index: 0; + } + } + } +} diff --git a/themes/example/lms/static/sass/_overrides.scss b/themes/example/lms/static/sass/_overrides.scss new file mode 100644 index 0000000000..30a5bbb19b --- /dev/null +++ b/themes/example/lms/static/sass/_overrides.scss @@ -0,0 +1,1457 @@ +body{ + background-color: $body-background-color !important; + *{ + &:focus{ + outline: 0; + } + } + .content-wrapper{ + max-width: none; + } +} +//Helper Classes + +.pull-left{ + float: left !important; +} +.pull-right{ + float: right !important; +} +.block{ + display: block; +} +img{ + max-width: 100%; +} +a{ + &:hover{ + text-decoration: none; + opacity: 0.8; + } + &:focus{ + text-decoration: none; + outline: none; + } + &.brand-link{ + color: $brand-color !important; + } +} +#success-message{ + padding: 0; + .alert { + min-width: 0; + border-left-width: 0; + border-right-width: 0; + border-bottom-width: 0; + box-shadow: none; + } +} +.grid-container{ + padding: 0 1rem; +} +.show-user-menu{ + display: block !important; +} + +.hidden-mobile{ + display: none; +} +.visible-mobile{ + display: block; +} +.light-bg{ + background-color: $course-section-background-color; +} +.btn-client{ + background-color: $brand-color !important; + border-color: $brand-color !important; + font-weight: normal !important; + box-shadow: none !important; + color: $white !important; + text-shadow: none !important; + &:hover{ + background-color: lighten($brand-color, 10%) !important; + background-image: none !important; + } + &.btn-elevated{ + box-shadow: inset 0 -3px 0 0 darken($brand-color, 15%) !important; + } +} +.btn-success{ + background-color: $success-base !important; + color: $white !important; + border-color: $success-base; + &:hover{ + background-color: lighten($success-base, 10%) !important; + } +} +.btn-block{ + width: 100% !important; +} +.inner-container{ + padding: 0 1.25rem; +} +h2{ + font-size: 1.5rem; + font-family: $brand-font; + margin: 1.25rem 0; + text-transform: none; +} +h1, h2, h3, h4, h5, h6{ + font-family: $brand-font; +} +.col-centered{ + float: none !important; + margin-left: auto !important; + margin-right: auto !important; +} +.input-group{ + margin-bottom: 1.25rem; +} +.text-light{ + color: $base !important; +} +.input-lg{ + line-height: 55px !important; + height: 55px !important; + padding: 0 1.25rem !important; +} +.form-block{ + label, input, select, button, textarea{ + display: block; + width: 100%; + font-family: $brand-font; + font-style: normal; + margin-bottom: 0.5rem !important; + &.has-error{ + border-color: $error-base; + border-radius: 4px 4px 0 0; + margin-bottom: 0 !important; + + .field-message{ + border-radius: 0 0 4px 4px; + width: 100%; + } + } + } + input{ + box-shadow: none; + border: 1px solid $light; + border-radius: 4px; + font-size: 1rem; + width: 100%; + &:focus, &:active{ + box-shadow: none; + border-color: $dark; + } + } + select{ + -webkit-appearance: none; + -moz-appearance: none; + border-color: $light; + appearance: none; + &::-ms-expand{ + display: none; + } + } + .custom-select{ + position: relative; + select{ + padding-right: 3rem !important; + } + &:after{ + content: "\f0da"; + position: absolute; + right: 20px; + top: 20px; + font-family: 'FontAwesome'; + font-size: 1.3rem; + color: $base; + } + } + textarea{ + height: 280px; + border-color: $light; + box-shadow: none; + resize: none; + padding: 1rem; + } + button{ + margin-top: 2.5rem; + padding: 1.25rem; + } +} + +.list-bulleted{ + li{ + margin-bottom: 0.2rem !important; + padding-left: 0.5rem !important; + line-height: 1.5rem; + .brand-link{ + display: inline; + } + } +} + +.btn-enroll-mobile{ + margin-bottom: 2rem; + .btn-enroll{ + max-width: 95%; + margin: auto; + border-radius: 3px; + } +} + +//Modals +.modal { + border-radius: 0px !important; + background: #FFFFFF !important; + + .inner-wrapper { + padding: 0px !important; + border: none !important; + } +} +.modal-custom { + width: 320px; + background-color: $white; + padding: 30px 30px; + position: fixed !important; + overflow: auto; + overflow-x: hidden; + top: 10%; + bottom: 10%; + left: calc(50% - 160px) !important; + margin-left: 0 !important; + z-index: 999; + .btn-close { + position: absolute !important; + right: 20px !important; + top: 20px !important; + cursor: pointer; + .fa { + font-size: 1.75em; + color: $x-dark; + } + } + &.custom-video-modal { + padding: 10px; + max-height: 360px; + .inner-wrapper, iframe { + height: 100%; + width: 100%; + } + } + .modal-body{ + overflow: hidden !important; + position: relative !important; + width: 100%; + .modal-header{ + display: block; + width: 100%; + margin-bottom: 2rem !important; + margin-left: 0 !important; + margin-right: 0 !important; + .instructor-data{ + display: block; + .thumbnail{ + display: block; + width: 100%; + padding-bottom: 0; + img{ + border-radius: 50%; + border: 5px solid $light; + margin-bottom: 1rem; + } + } + h3{ + display: block; + width: 100%; + vertical-align: middle; + font-size: 1.5em; + line-height: normal; + color:$black; + margin-bottom: 0; + span{ + display: block; + font-size: 1rem; + line-height: 1.1rem; + color: $x-dark; + &:last-child{ + color: $dark; + font-size: .8rem; + line-height: 1.1rem; + margin-top: 5px; + } + } + } + } + } + .instructor-bio{ + line-height: 1.5rem; + margin-bottom: 2rem; + color: $x-dark; + margin: 0 !important; + font-size: 1rem; + color: $dark; + } + .links{ + a{ + margin-right: 0; + display: block; + margin-bottom: 0.5rem; + } + } + } + } + + + +//Header +header.header-main { + min-height: 100px; + .navbar-collapse{ + .collapsed-button{ + position: absolute; + right: 20px; + top: 38px; + cursor: pointer; + float: right; + span{ + display: block; + width: 25px; + height:4px; + background-color: $x-dark; + margin-bottom: 3px; + } + } + ul{ + display: none; + &.show-menu{ + display: block; + } + + .language-selection { + display: inline-block; + position: relative; + } + + .language-selection select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; + border: 0; + color: $brand-color; + font-family: $brand-font; + font-weight: 400; + font-style: normal; + padding: 0 20px; + position: relative; + z-index: 1; + } + + .language-selection select::ms-expand { + display: none; + } + + .language-selection .fa-globe { + position: absolute; + z-index: 0; + top: 4px; + left: 2px; + color: #8d1221; + } + + .language-selection .fa-angle-down { + position: absolute; + right: 5px; + top: 4px; + color: #8d1221; + } + } + } + + .logo{ + line-height: 94px; + margin-left: 0; + a{ + border-bottom: 0 !important; + img{ + vertical-align: middle; + width: auto; + height: auto; + } + } + } + .list-inline{ + transition: all .2s; + position: absolute; + top: 100px; + border-top: 1px solid $light; + right: 0; + left: 0; + background-color: $white; + z-index: 10; + box-shadow: 0px 2px 3px $light; + padding: 1rem 0; + li{ + float: right; + display: inline-block; + vertical-align: middle; + line-height: normal; + padding: 0.5rem; + font-size: 1rem; + width: 100%; + text-align: center; + a{ + line-height: normal; + color: $x-dark; + } + &.user-account{ + margin-right: 1rem; + position: relative; + .user-img{ + display: inline-block; + width: 50px; + height: 50px; + line-height: 100px; + vertical-align: middle; + margin-right: 0.6rem; + img { + vertical-align: top; + width: 100%; + } + } + .user-name{ + cursor: pointer; + position: relative; + display: inline-block; + &:after{ + content: "\f0d7"; + position: absolute; + right: -1rem; + font-family: 'FontAwesome'; + top: 0.2rem; + } + } + ul{ + display: none; + position: relative; + background-color: $white; + box-shadow: 0px 2px 24px rgba(0,0,0,0.3); + width: 50%; + margin: auto; + margin-top: 0.5rem; + border: 1px solid $light; + li{ + border-bottom: 1px solid lighten($light, 10%); + background: $white; + float: none; + a{ + display: block; + } + } + &:before{ + content: "\f0d8"; + position: absolute; + font-family: 'FontAwesome'; + right: 1rem; + top: -20px; + color: $white; + font-size: 2rem; + line-height: normal; + } + } + } + } + } +} + +//Hero + +.hero { + min-height: 22em; + position: relative; + z-index: 0; + background-size: cover !important; + .tint-dark { + min-height: 22em; + max-height: 350px; + background: -moz-linear-gradient(left, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0) 100%); /* FF3.6-15 */ + background: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0) 100%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(to right, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#a6000000', endColorstr='#00000000', GradientType=1); /* IE6-9 */ + .grid-manual { + position: relative; + .text-tint { + position: absolute; + top: 0; + bottom: 0; + height: 352px; + display: flex; + align-items: center; + p { + font-size: 1.5rem; + color: $white; + line-height: 1.5em; + span { + display: block; + font-size: 1rem; + } + .btn-neutral { + border-color: $white; + padding: 0.8em 2em; + color: $white; + margin-left: 2px; + font-weight: normal; + background-color: transparent; + i.fa { + font-size: 0.6em; + margin-left: 1.5em; + vertical-align: middle; + margin-top: 1px; + } + &:hover{ + text-decoration: none; + } + } + } + &.small{ + height: 250px; + } + } + } + &.no-background-mobile{ + background: none; + } + } + &.hero-main{ + background: url("../images/hero-home-page.png") no-repeat top center !important; + background-size: cover !important; + } + &.hero-catalog{ + background: url("../images/hero-course-catalog.jpg") no-repeat top center !important; + background-size: cover !important; + } + &.hero-video{ + background: none; + + .hero-image { + display: none; + position: absolute; + right: 0; + left: 0; + min-height: 22em; + } + + .grid-container{ + .row{ + height: auto; + .description{ + .data{ + padding: 7% 0 0 0; + h1{ + font-size: 1.5rem; + color: $black; + line-height: normal; + padding-left: 1rem; + text-align: left; + span{ + display: block; + } + } + p{ + font-size: 1rem; + padding-left: 1rem; + color: $x-dark; + line-height: normal; + margin-top: 1.2rem; + padding-bottom: 2rem; + } + } + } + .video{ + float: none; + .video-data{ + position: relative; + text-align: center; + line-height: normal; + max-width: none; + img{ + border: 0; + width: 100%; + } + .play-btn{ + content: ""; + background: url("../images/vid-btn.png") no-repeat center center; + width: 80px; + height: 80px; + position: absolute; + left: calc(50% - 40px); + top: calc(50% - 40px); + z-index: 1; + } + } + } + } + } + } + &.hero-small { + min-height: 15.625rem; + .tint-dark{ + min-height: 15.625rem; + } + } +} + +//Courses +.courses-section { + background-color: $course-section-background-color; + .courses-container { + max-width: 1128px; + padding: 0 1.04167%; + .highlighted-courses { + .courses { + float: none; + padding: 1.5rem 0; + h2{ + .course-list-heading{ + font-size: 1.5rem; + } + } + .course-title{ + color: $brand-color; + font-size: 1.25rem; + padding: 0 1.25rem; + margin: 5px 0; + max-height: 72px; + overflow: hidden; + } + .course-list{ + padding: 1.5rem 0; + .courses-listing-item{ + padding: 0 5%; + .cover-image{ + height: 176px; + &:before{ + height: 176px; + } + .learn-more{ + top: 62px; + } + } + .course-info{ + height: 165px; + .course-organization{ + padding: 5px 20px; + font-size: 1rem; + color: $x-dark; + } + .course-date{ + color: $base; + font-size: 1rem; + padding: 0 1.25rem; + span{ + display: block; + color: $x-dark; + } + } + } + .course{ + border: 0; + box-shadow: none; + background-color: $white; + border-bottom: 6px solid $brand-color; + } + } + } + } + } + } +} + +//About + +.about-container{ + max-width: 70.5em; + padding: 1.5em 1.04167% 3em; + margin-left: auto; + margin-right: auto; + .about-list{ + padding: 1.5rem 0; + .about-icon{ + img{ + width: 150px; + } + span{ + font-weight: bold; + } + } + p{ + padding: 1.25rem 1.25rem 0; + line-height: 1.4em; + font-size: 1rem; + color: $x-dark; + span{ + display: block; + } + } + &.slidable { + .slick-arrow{ + position: absolute; + background-color: $brand-color; + width: 40px; + height: 60px; + z-index: 1; + text-align: center; + line-height: 60px; + color: $white; + font-size: 2rem; + top: 65px; + cursor: pointer; + &[class*="left"]{ + left: 0; + border-radius: 0 2px 2px 0; + } + &[class*="right"]{ + right: 0; + border-radius: 2px 0 0 2px; + } + } + .slick-slide img { + display: inline-block; + } + *:focus, *:active{ + outline: none; + } + } + } + .btn-neutral{ + border-color: $brand-color; + color: $brand-color; + &:hover{ + background-color: $brand-color; + color: $white; + } + } +} + +//About Us +.main-heading { + background-color: red; + height: 70px; + margin-bottom: 20px; +} +.message-image { + border: 3px solid gray; + border-radius: 50%; +} + +//Testimonials +.testimonial-main{ + padding: 1.5em 1.04167%; + background-color: $course-section-background-color; + .grid-manual{ + max-width: 70.5em; + margin-left: auto; + margin-right: auto; + padding: 1.5em 1.04167%; + } + p{ + line-height: 1.5em; + text-align: center; + &:last-child{ + margin-bottom: 0; + } + } + img{ + margin-bottom: 1.25rem; + } +} + +//Course Details + +.course-info{ + .course-detail{ + clear: both; + .inner-container{ + padding: 1.8rem 1.25rem; + .sticky-course-title{ + line-height: 1.5rem; + height: 45px; + display: flex; + align-items: center; + margin-top: 0; + word-break: break-word; + } + } + [class*="col"]{ + padding-top: 0.5rem; + margin-bottom: 1rem; + span{ + display: block; + color: $black; + font-size: 1.25rem; + margin-top: .4rem; + } + &:last-child{ + padding-top: 0; + } + } + .btn-enroll{ + border-radius: 3px; + text-align: center; + margin-top: 1rem; + padding: 1rem 1.875rem !important; + } + } + .description-container{ + padding: 0.5rem 0; + .learning-points-btn{ + display: block; + padding: 1rem 0.6rem; + } + h2{ + color: $black; + font-size: 1.25rem; + } + p{ + line-height: 1.5rem; + margin-bottom: 1rem; + } + ul{ + margin-left: 2rem; + li{ + margin-bottom: 0.8rem; + padding-left: 0.5rem; + } + } + .extras{ + margin-top: 1.5rem; + h3{ + font-size: 0.9rem; + } + .sponsored-logo{ + margin-bottom: 3rem; + } + .social-icons{ + margin-bottom: 3rem; + margin-left: 0; + overflow: hidden; + li{ + list-style-type: none; + padding-left: 0.5rem !important; + float: left; + .icon{ + background-color: $brand-color; + border-radius: 50%; + text-align: center; + width: 50px; + height: 50px; + line-height: 60px; + .fa{ + color: $white; + font-size: 1.9rem; + &.fa-google-plus{ + line-height: 54px; + } + } + } + } + } + .course-features{ + margin-top: 2rem; + background-color: #fafafa; + padding: 2rem; + border-radius: 10px; + font-size: 1rem; + .row{ + padding: .8rem 0; + border-bottom: 1px solid $light; + &:last-child{ + border-bottom: 0; + } + } + &.group-purchase{ + h2{ + margin-top: 0; + } + a.btn-enroll{ + border-radius: 3px; + padding: 1rem; + text-align: center; + margin-bottom: 1rem; + } + } + } + } + .instructors{ + display: table; + width: 100%; + + .modal { + .btn-close { + position: relative; + top: -30px; + right: -30px; + float: right; + z-index: 11000; + color: #FFFFFF; + cursor: pointer; + } + + .modal-body { + position: absolute; + overflow: scroll; + top: 5%; + bottom: 5%; + font-size: 14px; + line-height: 20px; + + & > div { + margin: 0 20px; + } + } + } + + [class*="col"]{ + display: table-row; + .thumbnail{ + display: table-cell; + vertical-align: middle; + margin-right: 1.3rem; + padding-bottom: 1.5rem; + width: 120px; + img { + border-radius: 50%; + border: 6px solid #D3D3D3; + } + } + p{ + display: table-cell; + vertical-align: middle; + margin-bottom: 0; + margin-top: 0; + color: $brand-color; + line-height: 1rem; + padding-left: 1.3rem; + padding-bottom: 1.5rem; + font-size: 0.8rem; + span{ + display: block; + color: $dark; + margin-top: 0.6rem; + &.organization { + font-weight: bold; + } + } + } + } + } + } +} + +// Profile page + +.account-settings-container { + .wrapper-profile-section-two { + margin-bottom: 5rem; + } +} + +.view-profile { + .profile-image-field { + .image-wrapper { + .upload-button-input{ + top: 0; + opacity: 0; + } + } + } +} + +// Static pages + +.page-heading{ + height: 110px; + background: url("../images/page-heading.jpg") center center no-repeat; + background-size: cover; + h1{ + background-color: rgba($brand-color , 0.7); + text-align: center; + line-height: 110px; + color: $white; + font-size: 1.5rem; + margin: 0; + } +} +.static-content{ + padding: 3rem 0; + h1{ + font-size: 1.5rem; + margin-top: 1rem; + color: $black; + text-align: left; + letter-spacing: 0; + } + .honor-code-heading{ + text-align: center !important; + } + h2{ + font-size: 1.25rem; + color: $black; + line-height: 1.6rem; + text-transform: uppercase; + } + h3{ + font-size: 1rem; + color: $black; + line-height: 1.6rem; + text-transform: uppercase; + } + .brand-link{ + display: block; + margin: 2rem 0; + } + p{ + margin-top: 1rem; + margin-bottom: 2rem; + color: $dark; + line-height: 1.5rem; + .brand-link { + display: inline; + margin: 0; + } + } + .mission-statement{ + margin-top: 1rem; + img { + border-radius: 50%; + border: 6px solid #D3D3D3; + width: 120px; + } + p{ + font-size: 1.05rem; + } + h3{ + font-size: 1rem; + color: $black; + span{ + color: $dark; + display: block; + } + } + } + hr{ + border-top: 3px solid $course-section-background-color; + margin-bottom: 4rem; + } + .edx-intro{ + p{ + margin-top: 2.5rem; + } + } + .bordered-list{ + margin: 0.5rem 0 2rem; + li{ + list-style-type: none; + margin-bottom: 0; + border-bottom: 2px solid $course-section-background-color; + a{ + padding: 0.8rem 0.5rem 0.8rem 0; + line-height: 1.5rem; + color: $brand-color; + font-size: 1rem; + display: inline-block; + word-break: break-word; + } + } + } + .list-divided { + text-transform: capitalize; + margin-bottom: 2rem !important; + .brand-link{ + display: inline; + line-height: 1.4rem; + } + } + .response { + .question{ + color: $brand-color; + cursor: pointer; + } + .answer { + overflow: hidden; + display: none; + } + } + #list-bulleted{ + margin-bottom: 2rem; + li{ + line-height: 1.5rem; + } + .brand-link{ + display: inline; + } + } +} + +//Footer + +.footer-main{ + padding: 2em 0; + border-top: 3px solid $course-section-background-color; + .logo{ + margin-bottom: 1em; + } + ul{ + list-style: none; + margin-left: 1.5em; + li{ + color: $dark; + padding: .3em 0; + a{ + font-size: 1em; + color: $dark !important; + &:hover{ + color: $dark !important; + text-decoration: none; + } + } + &:first-child{ + font-weight:bold; + } + &:last-child{ + margin-bottom: 2em; + } + } + } + .footer-logo{ + text-align: center; + img{ + margin-bottom: 1.5rem; + width: auto; + height: 44px; + } + } + .open-edx-logo{ + ul{ + li{ + text-align: left; + img{ + max-width: 80%; + } + } + } + } +} + +// Shopping Cart + +%shopping_cart_btn { + background: $brand-color !important; + border-color: $brand-color !important; + box-shadow: none; + font-weight: normal; + text-shadow: none; +} + +.shopping-cart { + .discount button.blue { + @extend %shopping_cart_btn; + } + div[name='billing'] button[name='billing-details'] { + @extend %shopping_cart_btn; + } + form button[type='submit'] { + @extend %shopping_cart_btn; + } + a.blue { + @extend %shopping_cart_btn; + } +} + +// Dashboard + +.dashboard { + .wrapper-action-more { + width: inherit; + } + .wrapper-find-courses { + margin-top: 66px; + } +} + +// Courseware + +.view-in-course { + .home { + box-sizing: content-box; + } + .course-tabs { + li { + margin-bottom: 0; + } + } + #content { + padding-bottom: 60px; + } + section.wiki .wiki-wrapper>header { + box-sizing: content-box; + } +} + +.discussion { + #content { + padding-bottom: 60px; + } +} + +//Media Queries + +@media screen and (min-width: 30em){ + .hero{ + .tint-dark { + .grid-manual { + .text-tint { + .btn-neutral { + padding: 0.8em 2em; + } + } + } + } + } + .courses-section { + .courses-container { + .highlighted-courses { + .courses { + .course-info{ + height: 165px; + } + .course-list{ + .courses-listing-item{ + padding: 0; + } + } + + } + } + } + } + .footer-main{ + .footer-logo{ + text-align: center; + } + } + .visible-mobile{ + display: none; + } + .hidden-mobile{ + display: block; + } + .testimonial-main{ + p{ + text-align: left; + } + img{ + margin-bottom: 0; + } + } +} + +@media screen and (min-width: 48em){ + .btn-enroll-mobile{ + display: none; + } + header.header-main{ + .logo a img { + height: 44px; + } + .collapsed-button{ + display: none; + } + .navbar-collapse{ + ul{ + display: block; + transition: all .2s; + position: relative; + top: inherit; + right: inherit; + left: inherit; + border-top: 0; + background-color: transparent; + box-shadow: none; + padding: 0; + li{ + width: auto; + text-align: left; + line-height: 100px; + padding: 0 0.9rem; + a{ + &.btn-neutral{ + padding: 0.625rem 1.25rem; + } + } + &.user-account{ + ul{ + position: absolute; + right: 1rem; + top: 100%; + width: 100%; + margin-top: -1rem; + li{ + display: block; + float: none; + line-height: normal; + a{ + padding: 0.5rem; + display: inline-block; + } + } + } + } + } + } + } + } + .footer-main{ + .footer-logo{ + text-align: left; + } + .open-edx-logo{ + ul{ + li{ + text-align: right; + img{ + max-width: 80%; + } + } + } + } + } + .hero { + .tint-dark { + .grid-manual { + .text-tint { + p { + font-size: 40px; + span { + display: block; + font-size: 1.5rem; + } + } + } + } + } + &.hero-video{ + background: rgba(0,0,0,0.6); + .hero-image { + display: block; + background-size: cover !important; + } + .tint-dark { + background: -moz-linear-gradient(left, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0) 100%); /* FF3.6-15 */ + background: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0) 100%); /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(to right, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#a6000000', endColorstr='#00000000', GradientType=1); /* IE6-9 */ + } + .grid-container{ + .row{ + height: 22rem; + .description{ + .data{ + padding: 11.5% 2% 0 0; + h1{ + color: $white; + font-size: 2.5rem; + } + p{ + color: $white; + font-size: 1.3rem; + } + } + } + .video{ + float: right; + .video-data{ + line-height: 352px; + max-width: 95%; + img{ + border: 3px solid $white; + width: auto; + } + } + } + } + } + } + } + .course-info { + .course-detail { + [class*="col"] { + margin-bottom: 0; + } + .btn-enroll{ + margin-top: 0; + } + } + .description-container{ + .expandable{ + max-height: 224px; + } + } + } + .modal-custom{ + display:none; + width: 540px; + padding: 30px 30px; + left: calc(50% - 270px) !important; + .modal-body{ + .modal-header{ + display: table; + width: 100%; + .instructor-data{ + display: table-row; + .thumbnail{ + display: table-cell; + width: 25%; + padding-bottom: 0; + img{ + margin-bottom: 0; + } + } + h3{ + display: table-cell; + width: 65%; + padding: 1rem; + } + } + } + + .links{ + a{ + margin-right: 1.5rem; + display: inline-block; + margin-bottom: 0; + } + } + } + } + +} + +@media screen and (min-width: 64em){ /* 980px */ + .footer-main { + .footer-logo { + text-align: left; + } + } +} + +@media screen and (min-width: 80em){ + .footer-main { + .footer-logo { + text-align: left; + } + } +} diff --git a/themes/example/lms/static/sass/base/_variables.scss b/themes/example/lms/static/sass/base/_variables.scss new file mode 100755 index 0000000000..acaf7ae92a --- /dev/null +++ b/themes/example/lms/static/sass/base/_variables.scss @@ -0,0 +1,19 @@ +@import 'lms/static/sass/partials/base/variables'; + +$white: #ffffff; +$body-background-color: $white; +$x-dark: #34383a; +$light: #d2d0d0; +$dark: #6b6969; +$course-section-background-color: #f7f7f7; +$brand-color: $dark;; +$base: #9b9b9b; +$success-base: #25b85a; +$error-base: #b20610; +$brand-font: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; +$action-primary-fg: $brand-color; +$action-primary-bg: lighten($brand-color, 10%); +$action-primary-shadow: $brand-color !default; +$link-color: $brand-color !default; + + diff --git a/themes/example/lms/static/sass/lms-main-v1.scss b/themes/example/lms/static/sass/lms-main-v1.scss new file mode 100644 index 0000000000..ca36fb3acb --- /dev/null +++ b/themes/example/lms/static/sass/lms-main-v1.scss @@ -0,0 +1,21 @@ +// LMS - CSS application architecture +// Version 1 styling (pre-Pattern Library) +// ==================== + +// libs and resets *do not edit* +@import 'bourbon/bourbon'; // lib - bourbon +@import 'vendor/bi-app/bi-app-ltr'; // set the layout for left to right languages + +// BASE *default edX offerings* +// ==================== + +// base - utilities +@import 'base/reset'; +@import 'base/variables'; +@import 'base/mixins'; + +// This comment is used by preprocess_assets.py to include resources from a +// theme, for old-style deprecated theming. +// + +@import 'build-lms-v1'; // shared app style assets/rendering diff --git a/themes/example/lms/static/sass/lms-main-v2.scss b/themes/example/lms/static/sass/lms-main-v2.scss new file mode 100644 index 0000000000..10fedb4692 --- /dev/null +++ b/themes/example/lms/static/sass/lms-main-v2.scss @@ -0,0 +1,21 @@ +// ------------------------------ +// LMS main styling +// Version 2 - introduces the Pattern Library + +// NOTE: This is the left-to-right (LTR) configured style compile. +// It should mirror lms-main-v2-rtl w/ the exception of bi-app references. + + +// Load the LTR version of the edX Pattern Library +$pattern-library-path: '../../edx-pattern-library' !default; +@import 'edx-pattern-library/pattern-library/sass/edx-pattern-library-ltr'; + +// base - utilities +@import 'base/variables'; + +// Load the shared build +@import 'build-lms-v2'; + +// Load overrides +@import "overrides"; +@import "accordion"; diff --git a/themes/example/lms/static/sass/slick.scss b/themes/example/lms/static/sass/slick.scss new file mode 100755 index 0000000000..3e1bc6a8a7 --- /dev/null +++ b/themes/example/lms/static/sass/slick.scss @@ -0,0 +1,99 @@ +/* Slider */ + +.slick-slider { + position: relative; + display: block; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} +.slick-list { + position: relative; + overflow: hidden; + display: block; + margin: 0; + padding: 0; + + &:focus { + outline: none; + } + + &.dragging { + cursor: pointer; + cursor: hand; + } +} +.slick-slider .slick-track, +.slick-slider .slick-list { + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track { + position: relative; + left: 0; + top: 0; + display: block; + + &:before, + &:after { + content: ""; + display: table; + } + + &:after { + clear: both; + } + + .slick-loading & { + visibility: hidden; + } +} +.slick-slide { + float: left; + height: 100%; + min-height: 1px; + [dir="rtl"] & { + float: right; + } + img { + display: block; + } + &.slick-loading img { + display: none; + } + + display: none; + + &.dragging img { + pointer-events: none; + } + + .slick-initialized & { + display: block; + } + + .slick-loading & { + visibility: hidden; + } + + .slick-vertical & { + display: block; + height: auto; + border: 1px solid transparent; + } +} +.slick-arrow.slick-hidden { + display: none; +} diff --git a/themes/example/lms/templates/about_site.html b/themes/example/lms/templates/about_site.html new file mode 100644 index 0000000000..6fcf38927b --- /dev/null +++ b/themes/example/lms/templates/about_site.html @@ -0,0 +1,51 @@ +## mako +<%page expression_filter="h"/> +<%namespace name='static' file='static_content.html'/> + + + + diff --git a/themes/example/lms/templates/course.html b/themes/example/lms/templates/course.html new file mode 100644 index 0000000000..c68f72ff2f --- /dev/null +++ b/themes/example/lms/templates/course.html @@ -0,0 +1,31 @@ +## mako +<%namespace name='static' file='static_content.html'/> +<%! +from django.utils.translation import ugettext as _ +from django.core.urlresolvers import reverse +%> +<%page args="course" expression_filter="h"/> + diff --git a/themes/example/lms/templates/courses_list.html b/themes/example/lms/templates/courses_list.html new file mode 100644 index 0000000000..e8375cf653 --- /dev/null +++ b/themes/example/lms/templates/courses_list.html @@ -0,0 +1,37 @@ +## mako +<%page expression_filter="h"/> +<%namespace name='static' file='static_content.html'/> +<%! from django.utils.translation import ugettext as _ %> + +
+
+
+ + % if settings.FEATURES.get('COURSES_ARE_BROWSABLE'): +
+ +
+
+
+

+ Lorem ipsum dolor sit amet +

+
+
+ +
+ %for course in courses[:6]: +
+
+ <%include file="course.html" args="course=course" /> +
+
+ %endfor +
+
+
+ % endif + +
+
+
diff --git a/themes/example/lms/templates/courseware/course_about.html b/themes/example/lms/templates/courseware/course_about.html new file mode 100644 index 0000000000..cc55782851 --- /dev/null +++ b/themes/example/lms/templates/courseware/course_about.html @@ -0,0 +1,428 @@ +## mako +<%page expression_filter="h"/> +<%namespace name='static' file='../static_content.html'/> +<%! +from itertools import izip_longest +from django.utils.translation import ugettext as _ +from django.core.urlresolvers import reverse +from courseware.courses import get_course_about_section +from django.conf import settings +from edxmako.shortcuts import marketing_link +from openedx.core.lib.courses import course_image_url +from openedx.core.djangolib.markup import HTML, Text +from openedx.core.djangolib.js_utils import js_escaped_string + +%> + +<%inherit file="../main.html" /> +<%block name="headextra"> + + ## OG (Open Graph) title and description added below to give social media info to display + ## (https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content#tags) + + + + + +<%block name="js_extra"> + ## CourseTalk widget js script + % if show_coursetalk_widget: + + % endif + + + + + <%include file="../about_site.html" /> + + + + + +<%block name="pagetitle">${course.display_name_with_default} + +
+
+
+
+
+
+
+
+
+ +
+
+
+

${course_details.title or course.display_name}

+

${course_details.subtitle}

+
+
+
+
+
+
+
+
+
+
+ +
+ Start Date: + ${course_details.start_date.strftime('%b %-d, %Y')} +
+
+ Duration: + ${course_details.duration} +
+ +
+ Price: + ${course_price} +
+ <% + btn_text = 'Enroll Now' + btn_href = '#' + btn_class = '' + btn_class_bulk = '' + btn_id = '' + %> + + % if user.is_authenticated() and registered: + <% + btn_text = "You are enrolled in this course" + btn_class = "disabled" + %> + + % elif in_cart: + <% + btn_text = "This course is in your cart" + btn_href = cart_link + %> + + % elif is_course_full: + <% + btn_text = "Course is full" + btn_class = "disabled" + btn_class_bulk = btn_class + %> + + % elif invitation_only and not can_enroll: + <% + btn_text = "Enrollment in this course is by invitation only" + btn_class = "disabled" + btn_class_bulk = btn_class + %> + + % elif not is_shib_course and not can_enroll: + <% + btn_text = "Enrollment is Closed" + btn_class = "disabled" + btn_class_bulk = btn_class + %> + + % elif can_add_course_to_cart: + <% + btn_class = "add-to-cart" + btn_text = "Enroll Now" + %> + + % if user.is_authenticated(): + % if user.is_active: + <% + btn_href = "#" + btn_id = "add_to_cart_post" + %> + % else: + <% + btn_text = "Please Activate Your Account" + btn_class = "disabled" + %> + % endif + % else: + <% + btn_href = reg_then_add_to_cart_link + btn_id = "reg_then_add_to_cart" + %> + % endif + + % if ecommerce_checkout and ecommerce_checkout_link and user.is_authenticated(): + <% + btn_href = ecommerce_checkout_link + %> + % endif + + % else: + % if ecommerce_checkout: + % if ecommerce_checkout_link: + <% btn_href = ecommerce_checkout_link %> + % else: + <% btn_href="#" %> + % endif + % if professional_mode: + % if user.is_authenticated(): + <% btn_class = "add-to-cart" %> + % else: + <% + btn_class = "register" + btn_class_bulk = btn_class + %> + % endif + % endif + % endif + % endif + +
+
+
+
+
+
+
+
+
+ +

Course Description

+
+

${course_details.description}

+
+ +

What you'll learn

+
+
    + % for item in course_details.learning_info: +
  • ${item}
  • + %endfor +
+
+
+ % if can_enroll and not is_course_full: +
+
+

${_("Want to purchase this course for a group?")}

+

${_("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 +
+
+ % endif +
+

Instructors

+ <% index = 0 %> + % for instructors in izip_longest(*([iter(course_details.instructor_info['instructors'])] * 2)): +
+ % for instructor in [i for i in instructors if i is not None]: + <% index += 1 %> +
+
+ ${instructor['name']} +
+

${instructor['name']} ${instructor['title']}

+ +
+ % endfor +
+ % endfor +
+
+
+
+
+
+
+
+ ${HTML(course_details.overview)} +
+
+
+
+
+
+ +
+
+ +
+ +## Need to put this hidden form on the page so that the registration button works. +## Since it's no harm to display a hidden form, we display it with the most permissive conditional +## which is when the student is not registered. +%if active_reg_button or is_shib_course: +
+
+
+ ${_("Enroll")} + + +
+
+ +
+
+
+%endif + +% if course_details.intro_video and course_details.video_thumbnail_image_name: + +% endif diff --git a/themes/example/lms/templates/courseware/courses.html b/themes/example/lms/templates/courseware/courses.html new file mode 100644 index 0000000000..8f1ca44206 --- /dev/null +++ b/themes/example/lms/templates/courseware/courses.html @@ -0,0 +1,49 @@ +## mako +<%page expression_filter="h"/> +<%! from django.utils.translation import ugettext as _ %> +<%inherit file="../main.html" /> +<%namespace name='static' file='../static_content.html'/> + +
+
+
+
+
+
+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur.

+
+
+
+
+
+ +
+
+
+
+
+ +
+
+

+ ${_('Lorem ipsum dolor sit amet.')} +

+
+
+ +
+ %for course in courses: +
+
+ <%include file="../course.html" args="course=course"/> +
+
+ %endfor +
+ +
+
+
+
+
+
diff --git a/themes/example/lms/templates/footer.html b/themes/example/lms/templates/footer.html new file mode 100644 index 0000000000..502b046797 --- /dev/null +++ b/themes/example/lms/templates/footer.html @@ -0,0 +1,58 @@ +## mako +<%page expression_filter="h"/> +<%namespace name='static' file='static_content.html'/> + + diff --git a/themes/example/lms/templates/head-extra.html b/themes/example/lms/templates/head-extra.html new file mode 100644 index 0000000000..239cc9b864 --- /dev/null +++ b/themes/example/lms/templates/head-extra.html @@ -0,0 +1,19 @@ +## mako +<%page expression_filter="h"/> +<%namespace name='static' file='static_content.html'/> + + + + + + diff --git a/themes/example/lms/templates/header.html b/themes/example/lms/templates/header.html new file mode 100644 index 0000000000..5ef36bec10 --- /dev/null +++ b/themes/example/lms/templates/header.html @@ -0,0 +1,72 @@ +## mako +<%page expression_filter="h"/> +<%namespace name='static' file='static_content.html'/> +<%namespace file='main.html' import="login_query"/> +<%! +from django.utils.translation import ugettext as _ +from django.core.urlresolvers import reverse +from openedx.core.djangoapps.user_api.accounts.image_helpers import get_profile_image_urls_for_user +%> + + + + + diff --git a/themes/example/lms/templates/index.html b/themes/example/lms/templates/index.html new file mode 100644 index 0000000000..0e7956dba5 --- /dev/null +++ b/themes/example/lms/templates/index.html @@ -0,0 +1,68 @@ +## mako +<%page expression_filter="h"/> +<%inherit file="main.html" /> +<%namespace name='static' file='static_content.html'/> +<%! +from django.utils.translation import ugettext as _ +from django.core.urlresolvers import reverse +%> + +<%block name="headextra"> + + + +<%block name="js_extra"> + +<%include file="about_site.html" /> + + + +
+
+
+
+
+
+

Lorem ipsum dolor sit amet, ad mea dictas audiam, nec id graecis explicari hasnain

+ % if show_homepage_promo_video: + Watch video + % endif +
+
+
+
+
+ + <%include file="${courses_list}" /> + +
+
+
+
+ +% if show_homepage_promo_video: + +% endif + +% if show_signup_immediately is not UNDEFINED: +## NOTE: This won't work in production, because anonymous views are cached, so it will +## show either with or without this extra js for 3 minutes at a time. + +% endif diff --git a/themes/example/lms/templates/static_templates/about.html b/themes/example/lms/templates/static_templates/about.html new file mode 100644 index 0000000000..d0732fc5f1 --- /dev/null +++ b/themes/example/lms/templates/static_templates/about.html @@ -0,0 +1,80 @@ +## mako +<%page expression_filter="h"/> +<%! from django.utils.translation import ugettext as _ %> +<%namespace name='static' file='../static_content.html'/> +<%inherit file="../main.html" /> + +<%block name="pagetitle">${_("About Us")} + +
+

${_("About Us")}

+
+
+
+
+
+
+

Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti sed. + Pro ei bonorum commune, ea impedit pericula cum. Ex mea dolor maiorum. Et oblique vocibus quo, atqui facete + doctus sed an. Ei sed denique periculis, ad error alterum duo. Veritus eligendi pri ne, cibo vocent abhorreant + ad eum, nam iuvaret electram prodesset ea. Sed in detracto pericula..

+ +

Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti sed. + Pro ei bonorum commune, ea impedit pericula cum. Ex mea dolor maiorum. Et oblique vocibus quo, atqui facete + doctus sed an. Ei sed denique periculis, ad error alterum duo. Veritus eligendi pri ne, cibo vocent abhorreant + ad eum, nam iuvaret electram prodesset ea. Sed in detracto pericula..

+ +

Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti sed. + Pro ei bonorum commune, ea impedit pericula cum. Ex mea dolor maiorum. Et oblique vocibus quo, atqui facete + doctus sed an. Ei sed denique periculis, ad error alterum duo. Veritus eligendi pri ne, cibo vocent abhorreant + ad eum, nam iuvaret electram prodesset ea. Sed in detracto pericula..

+ +

Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti sed. + Pro ei bonorum commune, ea impedit pericula cum. Ex mea dolor maiorum. Et oblique vocibus quo, atqui facete + doctus sed an. Ei sed denique periculis, ad error alterum duo. Veritus eligendi pri ne, cibo vocent abhorreant + ad eum, nam iuvaret electram prodesset ea. Sed in detracto pericula..

+ +

Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti sed. + Pro ei bonorum commune, ea impedit pericula cum. Ex mea dolor maiorum. Et oblique vocibus quo, atqui facete + doctus sed an. Ei sed denique periculis, ad error alterum duo. Veritus eligendi pri ne, cibo vocent abhorreant + ad eum, nam iuvaret electram prodesset ea. Sed in detracto pericula..

+ +

Lorem ipsum dolor sit amet

+

Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti sed. + Pro ei bonorum commune, ea impedit pericula cum. Ex mea dolor maiorum. Et oblique vocibus quo, atqui facete + doctus sed an. Ei sed denique periculis, ad error alterum duo. Veritus eligendi pri ne, cibo vocent abhorreant + ad eum, nam iuvaret electram prodesset ea. Sed in detracto pericula..

+ +

Media Inquiries

+

Lorem ipsum dolor sit amet
+ Tel.: 123-456-7890
+ loremIpsem@lorem.edu
+ Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet: + Lorem ipsum dolor sit amet.

+

+
+
+ Mission Statement +

"Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit."

+

+ Lorem ipsum
+ Lorem ipsum, Lorem ipsum +

+
+
+
+
+
diff --git a/themes/example/lms/templates/static_templates/contact.html b/themes/example/lms/templates/static_templates/contact.html new file mode 100644 index 0000000000..0d3cc34a42 --- /dev/null +++ b/themes/example/lms/templates/static_templates/contact.html @@ -0,0 +1,96 @@ +## mako +<%page expression_filter="h"/> +<%! +from django.utils.translation import ugettext as _ +from openedx.core.djangolib.markup import Text, HTML +from datetime import datetime +import pytz +from django.conf import settings +%> +<%inherit file="../main.html" /> +<%namespace name='static' file='../static_content.html'/> +<%block name="pagetitle">${_("Contact Us")} + +
+

${_("Contact Us")}

+
+ +
+
+
+
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+ + +
+ +
+
+
+
+
+
+
+ + + + + +<%block name="js_extra"> + + diff --git a/themes/example/lms/templates/static_templates/faq.html b/themes/example/lms/templates/static_templates/faq.html new file mode 100644 index 0000000000..bdd73c1ac8 --- /dev/null +++ b/themes/example/lms/templates/static_templates/faq.html @@ -0,0 +1,147 @@ +<%page expression_filter="h"/> +<%! from django.utils.translation import ugettext as _ %> +<%inherit file="../main.html" /> +<%namespace name='static' file='../static_content.html'/> + +<%block name="pagetitle">${_("FAQ's")} + +
+

${_("General FAQs")}

+
+
+ +
+
+
+ +
+

${_("Academic Planning")}

+
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit ametLorem ipsum dolor sit amet +

+
+
+ +
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit ametLorem ipsum dolor sit amet +

+
+
+ +
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit ametLorem ipsum dolor sit amet +

+
+
+ + ${_("Back to top")} + +

${_("Registration")}

+
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit ametLorem ipsum dolor sit amet +

+
+
+ +
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +

+
+
+ +
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit amet +

+
    +
  • + Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +
  • +
  • + Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +
  • +
+
+
+ + ${_("Back to top")} + +

${_("Finances")}

+
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +

+
+
+
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +

+
+
+
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +

+
+
+
+

Lorem ipsum dolor sit amet

+
+

+ Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet +

+
+
+ ${_("Back to top")} + +
+
+
+
+
+ +<%block name="js_extra"> + + + diff --git a/themes/example/lms/templates/static_templates/honor.html b/themes/example/lms/templates/static_templates/honor.html new file mode 100644 index 0000000000..72d4688477 --- /dev/null +++ b/themes/example/lms/templates/static_templates/honor.html @@ -0,0 +1,93 @@ +## mako +<%page expression_filter="h"/> +<%! from django.utils.translation import ugettext as _ %> +<%namespace name='static' file='../static_content.html'/> +<%inherit file="../main.html" /> + +<%block name="pagetitle">${_("Honor Code")} + +
+

${_("Honor Code")}

+
+
+
+
+
+ +
+

Effective Date: January 01, 1970

+

Lorem ipsum dolor sit amet, sea te quaeque.

+ +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ ${_("Back to top")} + +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ +
    +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue..
  • +          
+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. +

+
    +              
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue..
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
+ ${_("Back to top")} + +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ ${_("Back to top")} + +

Effective Date: Januray 01, 1970

+
+
+
+
+
diff --git a/themes/example/lms/templates/static_templates/privacy.html b/themes/example/lms/templates/static_templates/privacy.html new file mode 100644 index 0000000000..05c71809fe --- /dev/null +++ b/themes/example/lms/templates/static_templates/privacy.html @@ -0,0 +1,89 @@ +## mako +<%page expression_filter="h"/> +<%! from django.utils.translation import ugettext as _ %> +<%namespace name='static' file='../static_content.html'/> +<%inherit file="../main.html" /> + +<%block name="pagetitle">${_("Privacy Policy")} + +
+

${_("Privacy Policy")}

+
+
+
+
+
+ +
+

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ ${_("Back to top")} + +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ +
    +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue..
  • +          
+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. +

+
    +              
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue..
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
+ ${_("Back to top")} + +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ ${_("Back to top")} + +
+
+
+
+
diff --git a/themes/example/lms/templates/static_templates/tos.html b/themes/example/lms/templates/static_templates/tos.html new file mode 100644 index 0000000000..a0548a6fb9 --- /dev/null +++ b/themes/example/lms/templates/static_templates/tos.html @@ -0,0 +1,89 @@ +## mako +<%page expression_filter="h"/> +<%! from django.utils.translation import ugettext as _ %> +<%namespace name='static' file='../static_content.html'/> +<%inherit file="../main.html" /> + +<%block name="pagetitle">${_("Terms of Service")} + +
+

${_("Terms of Service")}

+
+
+
+
+
+ +
+

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ ${_("Back to top")} + +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ +
    +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue..
  • +          
+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. +

+
    +              
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue..
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
  • Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue.
  • +
+ ${_("Back to top")} + +

Lorem ipsum dolor sit amet

+

+ Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. Lorem ipsum dolor sit amet, sea te quaeque suscipiantur. Nullam vituperata at his, usu ad solum augue. + Mel partem iudicabit te, an sed vocent offendit. Est prompta deserunt senserit et, ex ubique deleniti + sed. +

+ ${_("Back to top")} + +
+
+
+
+
diff --git a/themes/example/lms/templates/student_account/login_and_register.html b/themes/example/lms/templates/student_account/login_and_register.html new file mode 100644 index 0000000000..bf523c22e2 --- /dev/null +++ b/themes/example/lms/templates/student_account/login_and_register.html @@ -0,0 +1,38 @@ +<%page expression_filter="h"/> +<%! + import json + from django.utils.translation import ugettext as _ + from openedx.core.djangolib.js_utils import dump_js_escaped_json +%> +<%namespace name='static' file='/static_content.html'/> + +<%inherit file="../main.html" /> + +<%block name="pagetitle">${_("Sign in or Create Account")} + +<%block name="js_extra"> + <%static:require_module module_name="js/student_account/logistration_factory" class_name="LogistrationFactory"> + var options = ${data | n, dump_js_escaped_json}; + LogistrationFactory(options); + if ('newrelic' in window) { + newrelic.finished(); + // Because of a New Relic bug, the finished() event doesn't show up + // in Insights, so we have to make a new PageAction that is basically + // the same thing. We still want newrelic.finished() for session + // traces though. + newrelic.addPageAction('xfinished'); + } + + + +<%block name="header_extras"> + % for template_name in ["account", "access", "form_field", "login", "register", "institution_login", "institution_register", "password_reset", "hinted_login"]: + +% endfor + + +
+