Commit a6455099 by Sef Kloninger

Merge branch 'release' into edx-west/release-candidate-20130729

Conflicts:
	lms/djangoapps/courseware/tests/test_views.py
parents f02505d5 d2eca92f
......@@ -71,8 +71,13 @@ body.index {
color: $white;
}
.wrapper-text-welcome, .logo {
display: inline-block;
}
.logo {
font-weight: 600;
margin-left: ($baseline/2);
}
.tagline {
......
......@@ -11,7 +11,7 @@
<section class="content content-header">
<header>
## "edX Studio" should not be translated
<h1>${_('Welcome to')}<span class="logo">edX Studio</span></h1>
<h1><span class="wrapper-text-welcome">${_('Welcome to')}</span><span class="logo">edX Studio</span></h1>
<p class="tagline">${_("Studio helps manage your courses online, so you can focus on teaching them")}</p>
</header>
</section>
......
......@@ -6,8 +6,10 @@ from django.http import Http404
from django.test.utils import override_settings
from django.contrib.auth.models import User
from django.test.client import RequestFactory
from django.core.urlresolvers import reverse
from student.models import CourseEnrollment
from student.tests.factories import AdminFactory
from xmodule.modulestore.django import modulestore
import courseware.views as views
......@@ -86,6 +88,15 @@ class ViewsTestCase(TestCase):
self.assertRaises(Http404, views.redirect_to_course_position,
mock_module)
def test_registered_for_course(self):
self.assertFalse(views.registered_for_course('Basketweaving', None))
mock_user = MagicMock()
mock_user.is_authenticated.return_value = False
self.assertFalse(views.registered_for_course('dummy', mock_user))
mock_course = MagicMock()
mock_course.id = self.course_id
self.assertTrue(views.registered_for_course(mock_course, self.user))
def test_jump_to_invalid(self):
request = self.request_factory.get(self.chapter_url)
self.assertRaisesRegexp(Http404, 'Invalid location', views.jump_to,
......@@ -116,3 +127,26 @@ class ViewsTestCase(TestCase):
else:
self.assertNotContains(result, "Classes End")
def test_submission_history_xss(self):
# log into a staff account
admin = AdminFactory()
self.client.login(username=admin.username, password='test')
# try it with an existing user and a malicious location
url = reverse('submission_history', kwargs={
'course_id': self.course_id,
'student_username': 'dummy',
'location': '<script>alert("hello");</script>'
})
response = self.client.get(url)
self.assertFalse('<script>' in response.content)
# try it with a malicious user and a non-existent location
url = reverse('submission_history', kwargs={
'course_id': self.course_id,
'student_username': '<script>alert("hello");</script>',
'location': 'dummy'
})
response = self.client.get(url)
self.assertFalse('<script>' in response.content)
......@@ -14,6 +14,7 @@ from django.shortcuts import redirect
from mitxmako.shortcuts import render_to_response, render_to_string
from django_future.csrf import ensure_csrf_cookie
from django.views.decorators.cache import cache_control
from markupsafe import escape
from courseware import grades
from courseware.access import has_access
......@@ -699,19 +700,16 @@ def submission_history(request, course_id, student_username, location):
module_state_key=location,
student_id=student.id)
except User.DoesNotExist:
return HttpResponse("User {0} does not exist.".format(student_username))
return HttpResponse(escape("User {0} does not exist.".format(student_username)))
except StudentModule.DoesNotExist:
return HttpResponse("{0} has never accessed problem {1}"
.format(student_username, location))
return HttpResponse(escape("{0} has never accessed problem {1}".format(student_username, location)))
history_entries = StudentModuleHistory.objects \
.filter(student_module=student_module).order_by('-id')
history_entries = StudentModuleHistory.objects.filter(student_module=student_module).order_by('-id')
# If no history records exist, let's force a save to get history started.
if not history_entries:
student_module.save()
history_entries = StudentModuleHistory.objects \
.filter(student_module=student_module).order_by('-id')
history_entries = StudentModuleHistory.objects.filter(student_module=student_module).order_by('-id')
context = {
'history_entries': history_entries,
......
......@@ -2,68 +2,139 @@
// shame file - used for any bad-form/orphaned scss that knowingly violate edX FED architecture/standards (see - http://csswizardry.com/2013/04/shame-css/)
// ====================
// marketing site - registration iframe band-aid (poor form enough to isolate out)
.view-partial-mktgregister {
background: transparent;
// edx.org marketing site - 7/2013 visual button revamp
// extends btn
.m-btn {
@include box-sizing(border-box);
@include transition(color 0.25s ease-in-out, background 0.25s ease-in-out, box-shadow 0.25s ease-in-out);
display: inline-block;
cursor: pointer;
text-decoration: none;
&:hover, &:active {
// dimensions needed for course about page on marketing site
.wrapper-view {
overflow: hidden;
}
// button elements - not a better place to put these, sadly
.btn {
@include box-sizing('border-box');
display: block;
padding: $baseline/2;
text-transform: lowercase;
color: $white;
letter-spacing: 0.1rem;
cursor: pointer;
&.disabled, &[disabled] {
cursor: default;
pointer-events: none;
}
}
.m-btn-pill {
border-radius: ($baseline/5);
}
.m-btn-rounded {
border-radius: ($baseline/2);
}
.m-btn-edged {
border-radius: ($baseline/10);
}
// primary button
.m-btn-base {
@extend .m-btn;
@extend .m-btn-edged;
border: none;
padding:($baseline/2) ($baseline);
text-align: center;
border: none !important;
text-decoration: none;
text-shadow: none;
letter-spacing: 0.1rem;
font-size: 17px;
font-weight: 300;
box-shadow: 0 !important;
font-weight: 500;
letter-spacing: 0;
strong {
font-weight: 400;
text-transform: none;
&.disabled, &[disabled], &.is-disabled {
background: $action-primary-disabled-bg;
&:hover {
background: $action-primary-disabled-bg !important; // needed for IE currently
}
}
}
.btn-primary {
@extend .btn;
@include linear-gradient($m-blue-s1 5%, $m-blue-d1 95%);
// primary button
.m-btn-primary {
@extend .m-btn-base;
box-shadow: 0 2px 1px 0 $action-primary-shadow;
background: $action-primary-bg;
color: $action-primary-fg;
// no hover state conventions to follow from marketing :/
&:hover, &:active {
background: $action-primary-focused-bg;
}
&.current, &.active {
box-shadow: inset 0 2px 1px 1px $action-primary-active-shadow;
background: $action-primary-active-bg;
color: $action-primary-active-fg;
&:hover, &:active {
box-shadow: inset 0 2px 1px 1px $action-primary-active-focused-shadow;
color: $action-primary-active-focused-fg;
}
}
.btn-secondary {
@extend .btn;
@include linear-gradient($m-gray 5%, $m-gray-d1 95%);
&.disabled, &[disabled] {
box-shadow: none;
background: $action-primary-disabled-bg; // needed for IE currently
}
}
// secondary button
.m-btn-secondary {
@extend .m-btn-base;
box-shadow: 0 2px 1px 0 $action-secondary-shadow;
background: $action-secondary-bg;
color: $action-secondary-fg;
// no hover state conventions to follow from marketing :/
&:hover, &:active {
background: $action-secondary-focused-bg;
}
&.current, &.active {
box-shadow: inset 0 2px 1px 1px $action-secondary-active-shadow;
background: $action-secondary-active-bg;
color: $action-secondary-active-fg;
&:hover, &:active {
box-shadow: inset 0 2px 1px 1px $action-secondary-active-focused-shadow;
color: $action-secondary-active-focused-fg;
}
}
&.disabled, &[disabled] {
box-shadow: none;
background: $action-secondary-disabled-bg; // needed for IE currently
}
}
.btn-tertiary {
@extend .btn;
background: $m-blue-l1;
color: $m-blue;
// no hover state conventions to follow from marketing :/
&:hover, &:active {
// ====================
// edx.org marketing site - needed, but bad overrides with importants
.view-register, .view-login, .view-passwordreset {
.form-actions button[type="submit"] {
text-transform: none;
vertical-align: middle;
font-weight: 600 !important;
letter-spacing: 0 !important;
}
}
// ====================
// edx.org marketing site - registration iframe band-aid (poor form enough to isolate out)
.view-partial-mktgregister {
// dimensions needed for course about page on marketing site
.wrapper-view {
overflow: hidden;
}
// nav list
......@@ -78,31 +149,37 @@
}
.action {
font-size: 16px;
font-weight: 500;
// register or access courseware
&.action-register, &.access-courseware {
@extend .btn-primary;
@extend .m-btn-primary;
display: block;
}
// already registered but course not started or registration is closed
&.is-registered, &.registration-closed {
@extend .btn-secondary;
@extend .m-btn-secondary;
pointer-events: none !important;
display: block;
}
// coming soon
&.coming-soon {
@extend .btn-tertiary;
@extend .m-btn-secondary;
pointer-events: none !important;
outline: none;
display: block;
}
}
}
//--------------------------------------
// The Following is to enable themes to
// display H1s on login and register pages
//--------------------------------------
// ====================
// The Following is to enable themes to display H1s on login and register pages
.view-login .introduction header h1,
.view-register .introduction header h1 {
@include login_register_h1_style;
......
@function em($pxval, $base: 16) {
@return #{$pxval / $base}em;
// mixins - font sizing
@mixin font-size($sizeValue: 16){
font-size: $sizeValue + px;
font-size: ($sizeValue/10) + rem;
}
// Line-height
@function lh($amount: 1) {
@return $body-line-height * $amount;
// mixins - line height
@mixin line-height($fontSize: auto){
line-height: ($fontSize*1.48) + px;
line-height: (($fontSize/10)*1.48) + rem;
}
// image-replacement hidden text
......@@ -31,6 +34,15 @@
display: block;
}
@function em($pxval, $base: 16) {
@return #{$pxval / $base}em;
}
// Line-height
@function lh($amount: 1) {
@return $body-line-height * $amount;
}
//-----------------
// Theme Mixin Styles
......
......@@ -39,23 +39,36 @@ $outer-border-color: rgb(170, 170, 170);
$light-gray: #ddd;
$dark-gray: #333;
// edx.org-related
$m-gray-l1: rgb(203,203,203);
$m-gray-l2: rgb(246,246,246);
$m-gray: rgb(153,153,153);
$m-gray-d1: rgb(102,102,102);
$m-gray-d2: rgb(51,51,51);
$m-gray-a1: rgb(80,80,80);
$m-blue: rgb(65, 116, 170);
// $m-blue: rgb(85, 151, 221); (used in marketing redesign)
$m-blue-l1: rgb(85, 151, 221);
$m-blue-d1: shade($m-blue,15%);
$m-blue-s1: saturate($m-blue,15%);
$m-pink: rgb(204,51,102);
// edx.org marketing site variables
$m-gray: #8A8C8F;
$m-gray-l1: #97999B;
$m-gray-l2: #A4A6A8;
$m-gray-l3: #B1B2B4;
$m-gray-l4: #F5F5F5;
$m-gray-d1: #7D7F83;
$m-gray-d2: #707276;
$m-gray-d3: #646668;
$m-gray-d4: #050505;
$m-blue: #1AA1DE;
$m-blue-l1: #2BACE6;
$m-blue-l2: #42B5E9;
$m-blue-l3: #59BEEC;
$m-blue-d1: #1790C7;
$m-blue-d2: #1580B0;
$m-blue-d3: #126F9A;
$m-blue-d4: #0A4A67;
$m-pink: #B52A67;
$m-pink-l1: #CA2F73;
$m-pink-l2: #D33F80;
$m-pink-l3: #D7548E;
$m-pink-d1: #A0255B;
$m-pink-d2: #8C204F;
$m-pink-d3: #771C44;
$m-base-font-size: em(15);
$base-font-color: rgb(60,60,60);
$baseFontColor: rgb(60,60,60);
$lighter-base-font-color: rgb(100,100,100);
......@@ -74,10 +87,57 @@ $courseware-footer-border: none;
$courseware-footer-shadow: none;
$courseware-footer-margin: 0px;
// actions
$button-bg-image: linear-gradient(#fff 0%, rgb(250,250,250) 50%, rgb(237,237,237) 50%, rgb(220,220,220) 100%);
$button-bg-color: transparent;
$button-bg-hover-color: #fff;
// actions - primary
$action-primary-bg: $m-blue-d3;
$action-primary-fg: $white;
$action-primary-shadow: $m-blue-d4;
// focused - hover/active pseudo states
$action-primary-focused-bg: $m-blue-d1;
$action-primary-focused-fg: $white;
// current or active navigation item
$action-primary-active-bg: $m-blue;
$action-primary-active-fg: $m-blue-d3;
$action-primary-active-shadow: $m-blue-d2;
$action-primary-active-focused-fg: $m-blue-d4;
$action-primary-active-focused-shadow: $m-blue-d3;
// disabled
$action-primary-disabled-bg: $m-gray-d3;
$action-prmary-disabled-fg: $white;
// actions - secondary
$action-secondary-bg: $m-pink;
$action-secondary-fg: $white;
$action-secondary-shadow: $m-pink-d2;
// focused - hover/active pseudo states
$action-secondary-focused-bg: $m-pink-l3;
$action-secondary-focused-fg: $white;
// current or active navigation item
$action-secondary-active-bg: $m-pink-l2;
$action-secondary-active-fg: $m-pink-d1;
$action-secondary-active-shadow: $m-pink-d1;
$action-secondary-active-focused-fg: $m-pink-d3;
$action-secondary-active-focused-shadow: $m-pink-d2;
// disabled
$action-secondary-disabled-bg: $m-gray-d3;
$action-secondary-disabled-fg: $white;
$faded-hr-image-1: linear-gradient(180deg, rgba(200,200,200, 0) 0%, rgba(200,200,200, 1) 50%, rgba(200,200,200, 0));
$faded-hr-image-2: linear-gradient(180deg, rgba(200,200,200, 0) 0%, rgba(200,200,200, 1));
$faded-hr-image-3: linear-gradient(180deg, rgba(200,200,200, 1) 0%, rgba(200,200,200, 0));
......@@ -104,7 +164,7 @@ $border-color-3: rgb(100,100,100);
$border-color-4: rgb(252,252,252);
$link-color: $blue;
$link-color-d1: $m-blue;
$link-color-d1: $m-blue-d2;
$link-hover: $pink;
$site-status-color: $pink;
......
......@@ -37,7 +37,7 @@
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0 !important;
color: saturate($link-color-d1,15%);
color: $m-gray-d2;
}
.heading-5 {
......@@ -390,7 +390,7 @@
@include clearfix();
button[type="submit"] {
@extend .button-primary;
@extend .m-btn-primary;
&:disabled, &.is-disabled {
opacity: 0.3;
......@@ -431,7 +431,6 @@
margin: 0 0 ($baseline/4) 0;
font-size: em(14);
font-weight: 600;
color: $m-gray-d2 !important;
}
.message-copy {
......
......@@ -278,26 +278,8 @@ header.global {
li {
display: inline-block;
a {
border-radius: 0;
@include linear-gradient(saturate($link-color-d1,15%) 5%, shade($link-color-d1,15%) 95%);
display: inline-block;
padding: $baseline/2 $baseline*2.5;
text-transform: lowercase;
color: $very-light-text;
letter-spacing: 0.1rem;
font-weight: 300;
cursor: pointer;
text-align: center;
border: none !important;
text-shadow: none;
letter-spacing: 0.1rem;
font-size: 14px;
box-shadow: none !important;
&:hover {
text-decoration: none;
}
.cta {
@extend .m-btn-primary;
}
}
......
......@@ -53,7 +53,7 @@
%elif allow_registration:
<a class="action action-register register" href="#">Register for <strong>${course.number}</strong></a>
%else:
<div class="action registration-closed">Registration Is Closed</div>
<div class="action registration-closed is-disabled">Registration Is Closed</div>
%endif
</li>
</ul>
......
<% import json %>
<h3>${username} > ${course_id} > ${location}</h3>
<h3>${username | h} > ${course_id | h} > ${location | h}</h3>
% for i, entry in enumerate(history_entries):
<hr/>
......
......@@ -27,15 +27,7 @@
<!-- repeated button styles needed for IE (copied from _shame.scss) -->
<style type="text/css" media="screen">
.view-partial-mktgregister{background:transparent}.view-partial-mktgregister .wrapper-view{overflow:hidden}.view-partial-mktgregister .btn,.view-partial-mktgregister .btn-primary,.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware,.view-partial-mktgregister .btn-secondary,.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed,.view-partial-mktgregister .btn-tertiary,.view-partial-mktgregister .action.coming-soon{-webkit-box-sizing:"border-box";-moz-box-sizing:"border-box";box-sizing:"border-box";display:block;padding:10px;text-transform:lowercase;color:#fff;letter-spacing:0.1rem;cursor:pointer;text-align:center;border:none !important;text-decoration:none;text-shadow:none;letter-spacing:0.1rem;font-size:17px;font-weight:300;box-shadow:0 !important}.view-partial-mktgregister .btn strong,.view-partial-mktgregister .btn-primary strong,.view-partial-mktgregister .action.action-register strong,.view-partial-mktgregister .action.access-courseware strong,.view-partial-mktgregister .btn-secondary strong,.view-partial-mktgregister .action.is-registered strong,.view-partial-mktgregister .action.registration-closed strong,.view-partial-mktgregister .btn-tertiary strong,.view-partial-mktgregister .action.coming-soon strong{font-weight:400;text-transform:none}.view-partial-mktgregister .btn-primary,.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware{background-color:#4697ec;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(5%, #4697ec),color-stop(95%, #4880bb));background-image:-webkit-linear-gradient(#4697ec 5%,#4880bb 95%);background-image:linear-gradient(#4697ec 5%,#4880bb 95%)}.view-partial-mktgregister .btn-secondary,.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed{background-color:#999;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(5%, #999),color-stop(95%, #666));background-image:-webkit-linear-gradient(#999 5%,#666 95%);background-image:linear-gradient(#999 5%,#666 95%)}.view-partial-mktgregister .btn-tertiary,.view-partial-mktgregister .action.coming-soon{background:#e6f5fc;color:#5597dd}.view-partial-mktgregister .list-actions{list-style:none;margin:0;padding:0}.view-partial-mktgregister .list-actions .item{margin:0}.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed{pointer-events:none !important}.view-partial-mktgregister .action.coming-soon{pointer-events:none !important;outline:none}
.text-sr{border:0;clip:rect(1px 1px 1px 1px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.m-btn,.m-btn-base,.m-btn-primary,.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware,.m-btn-secondary,.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed,.view-partial-mktgregister .action.coming-soon{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:color 0.25s ease-in-out,background 0.25s ease-in-out,box-shadow 0.25s ease-in-out;-moz-transition:color 0.25s ease-in-out,background 0.25s ease-in-out,box-shadow 0.25s ease-in-out;transition:color 0.25s ease-in-out,background 0.25s ease-in-out,box-shadow 0.25s ease-in-out;display:inline-block;cursor:pointer;text-decoration:none}.m-btn.disabled,.disabled.m-btn-base,.disabled.m-btn-primary,.view-partial-mktgregister .disabled.action.action-register,.view-partial-mktgregister .disabled.action.access-courseware,.disabled.m-btn-secondary,.view-partial-mktgregister .disabled.action.is-registered,.view-partial-mktgregister .disabled.action.registration-closed,.view-partial-mktgregister .disabled.action.coming-soon,.m-btn[disabled],[disabled].m-btn-base,[disabled].m-btn-primary,.view-partial-mktgregister [disabled].action.action-register,.view-partial-mktgregister [disabled].action.access-courseware,[disabled].m-btn-secondary,.view-partial-mktgregister [disabled].action.is-registered,.view-partial-mktgregister [disabled].action.registration-closed,.view-partial-mktgregister [disabled].action.coming-soon{cursor:default;pointer-events:none}.m-btn-pill{border-radius:4px}.m-btn-rounded{border-radius:10px}.m-btn-edged,.m-btn-base,.m-btn-primary,.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware,.m-btn-secondary,.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed,.view-partial-mktgregister .action.coming-soon{border-radius:2px}.m-btn-base,.m-btn-primary,.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware,.m-btn-secondary,.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed,.view-partial-mktgregister .action.coming-soon{border:none;padding:10px 20px;text-align:center;text-shadow:none;font-weight:500;letter-spacing:0}.m-btn-base.disabled,.disabled.m-btn-primary,.view-partial-mktgregister .disabled.action.action-register,.view-partial-mktgregister .disabled.action.access-courseware,.disabled.m-btn-secondary,.view-partial-mktgregister .disabled.action.is-registered,.view-partial-mktgregister .disabled.action.registration-closed,.view-partial-mktgregister .disabled.action.coming-soon,.m-btn-base[disabled],[disabled].m-btn-primary,.view-partial-mktgregister [disabled].action.action-register,.view-partial-mktgregister [disabled].action.access-courseware,[disabled].m-btn-secondary,.view-partial-mktgregister [disabled].action.is-registered,.view-partial-mktgregister [disabled].action.registration-closed,.view-partial-mktgregister [disabled].action.coming-soon,.m-btn-base.is-disabled,.is-disabled.m-btn-primary,.view-partial-mktgregister .is-disabled.action.action-register,.view-partial-mktgregister .is-disabled.action.access-courseware,.is-disabled.m-btn-secondary,.view-partial-mktgregister .is-disabled.action.is-registered,.view-partial-mktgregister .is-disabled.action.registration-closed,.view-partial-mktgregister .is-disabled.action.coming-soon{background:#646668}.m-btn-base.disabled:hover,.disabled.m-btn-primary:hover,.view-partial-mktgregister .disabled.action.action-register:hover,.view-partial-mktgregister .disabled.action.access-courseware:hover,.disabled.m-btn-secondary:hover,.view-partial-mktgregister .disabled.action.is-registered:hover,.view-partial-mktgregister .disabled.action.registration-closed:hover,.view-partial-mktgregister .disabled.action.coming-soon:hover,.m-btn-base[disabled]:hover,[disabled].m-btn-primary:hover,.view-partial-mktgregister [disabled].action.action-register:hover,.view-partial-mktgregister [disabled].action.access-courseware:hover,[disabled].m-btn-secondary:hover,.view-partial-mktgregister [disabled].action.is-registered:hover,.view-partial-mktgregister [disabled].action.registration-closed:hover,.view-partial-mktgregister [disabled].action.coming-soon:hover,.m-btn-base.is-disabled:hover,.is-disabled.m-btn-primary:hover,.view-partial-mktgregister .is-disabled.action.action-register:hover,.view-partial-mktgregister .is-disabled.action.access-courseware:hover,.is-disabled.m-btn-secondary:hover,.view-partial-mktgregister .is-disabled.action.is-registered:hover,.view-partial-mktgregister .is-disabled.action.registration-closed:hover,.view-partial-mktgregister .is-disabled.action.coming-soon:hover{background:#646668 !important}.m-btn-primary,.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware{box-shadow:0 2px 1px 0 #0a4a67;background:#126f9a;color:#fff}.m-btn-primary:hover,.view-partial-mktgregister .action.action-register:hover,.view-partial-mktgregister .action.access-courseware:hover,.m-btn-primary:active,.view-partial-mktgregister .action.action-register:active,.view-partial-mktgregister .action.access-courseware:active{background:#1790c7}.m-btn-primary.current,.view-partial-mktgregister .current.action.action-register,.view-partial-mktgregister .current.action.access-courseware,.m-btn-primary.active,.view-partial-mktgregister .active.action.action-register,.view-partial-mktgregister .active.action.access-courseware{box-shadow:inset 0 2px 1px 1px #1580b0;background:#1aa1de;color:#126f9a}.m-btn-primary.current:hover,.view-partial-mktgregister .current.action.action-register:hover,.view-partial-mktgregister .current.action.access-courseware:hover,.m-btn-primary.current:active,.view-partial-mktgregister .current.action.action-register:active,.view-partial-mktgregister .current.action.access-courseware:active,.m-btn-primary.active:hover,.view-partial-mktgregister .active.action.action-register:hover,.view-partial-mktgregister .active.action.access-courseware:hover,.m-btn-primary.active:active,.view-partial-mktgregister .active.action.action-register:active,.view-partial-mktgregister .active.action.access-courseware:active{box-shadow:inset 0 2px 1px 1px #126f9a;color:#0a4a67}.m-btn-primary.disabled,.view-partial-mktgregister .disabled.action.action-register,.view-partial-mktgregister .disabled.action.access-courseware,.m-btn-primary[disabled],.view-partial-mktgregister [disabled].action.action-register,.view-partial-mktgregister [disabled].action.access-courseware{box-shadow:none;background:#646668}.m-btn-secondary,.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed,.view-partial-mktgregister .action.coming-soon{box-shadow:0 2px 1px 0 #8c204f;background:#b52a67;color:#fff}.m-btn-secondary:hover,.view-partial-mktgregister .action.is-registered:hover,.view-partial-mktgregister .action.registration-closed:hover,.view-partial-mktgregister .action.coming-soon:hover,.m-btn-secondary:active,.view-partial-mktgregister .action.is-registered:active,.view-partial-mktgregister .action.registration-closed:active,.view-partial-mktgregister .action.coming-soon:active{background:#d7548e}.m-btn-secondary.current,.view-partial-mktgregister .current.action.is-registered,.view-partial-mktgregister .current.action.registration-closed,.view-partial-mktgregister .current.action.coming-soon,.m-btn-secondary.active,.view-partial-mktgregister .active.action.is-registered,.view-partial-mktgregister .active.action.registration-closed,.view-partial-mktgregister .active.action.coming-soon{box-shadow:inset 0 2px 1px 1px #a0255b;background:#d33f80;color:#a0255b}.m-btn-secondary.current:hover,.view-partial-mktgregister .current.action.is-registered:hover,.view-partial-mktgregister .current.action.registration-closed:hover,.view-partial-mktgregister .current.action.coming-soon:hover,.m-btn-secondary.current:active,.view-partial-mktgregister .current.action.is-registered:active,.view-partial-mktgregister .current.action.registration-closed:active,.view-partial-mktgregister .current.action.coming-soon:active,.m-btn-secondary.active:hover,.view-partial-mktgregister .active.action.is-registered:hover,.view-partial-mktgregister .active.action.registration-closed:hover,.view-partial-mktgregister .active.action.coming-soon:hover,.m-btn-secondary.active:active,.view-partial-mktgregister .active.action.is-registered:active,.view-partial-mktgregister .active.action.registration-closed:active,.view-partial-mktgregister .active.action.coming-soon:active{box-shadow:inset 0 2px 1px 1px #8c204f;color:#771c44}.m-btn-secondary.disabled,.view-partial-mktgregister .disabled.action.is-registered,.view-partial-mktgregister .disabled.action.registration-closed,.view-partial-mktgregister .disabled.action.coming-soon,.m-btn-secondary[disabled],.view-partial-mktgregister [disabled].action.is-registered,.view-partial-mktgregister [disabled].action.registration-closed,.view-partial-mktgregister [disabled].action.coming-soon{box-shadow:none;background:#646668}.view-register .form-actions button[type="submit"],.view-login .form-actions button[type="submit"],.view-passwordreset .form-actions button[type="submit"]{text-transform:none;vertical-align:middle;font-weight:600 !important;letter-spacing:0 !important}.view-partial-mktgregister .wrapper-view{overflow:hidden}.view-partial-mktgregister .list-actions{list-style:none;margin:0;padding:0}.view-partial-mktgregister .list-actions .item{margin:0}.view-partial-mktgregister .action{font-size:16px;font-weight:500}.view-partial-mktgregister .action.action-register,.view-partial-mktgregister .action.access-courseware{display:block}.view-partial-mktgregister .action.is-registered,.view-partial-mktgregister .action.registration-closed{pointer-events:none !important;display:block}.view-partial-mktgregister .action.coming-soon{pointer-events:none !important;outline:none;display:block}
</style>
</head>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment