Commit 9469991f by Diana Huang

Merge pull request #713 from edx/diana/button-updates

Drupal side Register button updates
parents 7aa44189 fc4eb378
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding field 'CourseMode.currency'
db.add_column('course_modes_coursemode', 'currency',
self.gf('django.db.models.fields.CharField')(default='usd', max_length=8),
keep_default=False)
def backwards(self, orm):
# Deleting field 'CourseMode.currency'
db.delete_column('course_modes_coursemode', 'currency')
models = {
'course_modes.coursemode': {
'Meta': {'object_name': 'CourseMode'},
'course_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
'currency': ('django.db.models.fields.CharField', [], {'default': "'usd'", 'max_length': '8'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'min_price': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'mode_display_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'mode_slug': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'suggested_prices': ('django.db.models.fields.CommaSeparatedIntegerField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
}
}
complete_apps = ['course_modes']
\ No newline at end of file
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding unique constraint on 'CourseMode', fields ['course_id', 'currency', 'mode_slug']
db.create_unique('course_modes_coursemode', ['course_id', 'currency', 'mode_slug'])
def backwards(self, orm):
# Removing unique constraint on 'CourseMode', fields ['course_id', 'currency', 'mode_slug']
db.delete_unique('course_modes_coursemode', ['course_id', 'currency', 'mode_slug'])
models = {
'course_modes.coursemode': {
'Meta': {'unique_together': "(('course_id', 'mode_slug', 'currency'),)", 'object_name': 'CourseMode'},
'course_id': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
'currency': ('django.db.models.fields.CharField', [], {'default': "'usd'", 'max_length': '8'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'min_price': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'mode_display_name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'mode_slug': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'suggested_prices': ('django.db.models.fields.CommaSeparatedIntegerField', [], {'default': "''", 'max_length': '255', 'blank': 'True'})
}
}
complete_apps = ['course_modes']
\ No newline at end of file
......@@ -5,7 +5,7 @@ from django.db import models
from collections import namedtuple
from django.utils.translation import ugettext as _
Mode = namedtuple('Mode', ['slug', 'name', 'min_price', 'suggested_prices'])
Mode = namedtuple('Mode', ['slug', 'name', 'min_price', 'suggested_prices', 'currency'])
class CourseMode(models.Model):
......@@ -29,7 +29,14 @@ class CourseMode(models.Model):
# the suggested prices for this mode
suggested_prices = models.CommaSeparatedIntegerField(max_length=255, blank=True, default='')
DEFAULT_MODE = Mode('honor', _('Honor Code Certificate'), 0, '')
# the currency these prices are in, using lower case ISO currency codes
currency = models.CharField(default="usd", max_length=8)
DEFAULT_MODE = Mode('honor', _('Honor Code Certificate'), 0, '', 'usd')
class Meta:
""" meta attributes of this model """
unique_together = ('course_id', 'mode_slug', 'currency')
@classmethod
def modes_for_course(cls, course_id):
......@@ -39,7 +46,7 @@ class CourseMode(models.Model):
If no modes have been set in the table, returns the default mode
"""
found_course_modes = cls.objects.filter(course_id=course_id)
modes = ([Mode(mode.mode_slug, mode.mode_display_name, mode.min_price, mode.suggested_prices)
modes = ([Mode(mode.mode_slug, mode.mode_display_name, mode.min_price, mode.suggested_prices, mode.currency)
for mode in found_course_modes])
if not modes:
modes = [cls.DEFAULT_MODE]
......
......@@ -18,7 +18,7 @@ class CourseModeModelTest(TestCase):
self.course_id = 'TestCourse'
CourseMode.objects.all().delete()
def create_mode(self, mode_slug, mode_name, min_price=0, suggested_prices=''):
def create_mode(self, mode_slug, mode_name, min_price=0, suggested_prices='', currency='usd'):
"""
Create a new course mode
"""
......@@ -27,7 +27,8 @@ class CourseModeModelTest(TestCase):
mode_display_name=mode_name,
mode_slug=mode_slug,
min_price=min_price,
suggested_prices=suggested_prices
suggested_prices=suggested_prices,
currency=currency
)
def test_modes_for_course_empty(self):
......@@ -45,14 +46,14 @@ class CourseModeModelTest(TestCase):
self.create_mode('verified', 'Verified Certificate')
modes = CourseMode.modes_for_course(self.course_id)
self.assertEqual([Mode(u'verified', u'Verified Certificate', 0, '')], modes)
self.assertEqual([Mode(u'verified', u'Verified Certificate', 0, '', 'usd')], modes)
def test_modes_for_course_multiple(self):
"""
Finding the modes when there's multiple modes
"""
mode1 = Mode(u'honor', u'Honor Code Certificate', 0, '')
mode2 = Mode(u'verified', u'Verified Certificate', 0, '')
mode1 = Mode(u'honor', u'Honor Code Certificate', 0, '', 'usd')
mode2 = Mode(u'verified', u'Verified Certificate', 0, '', 'usd')
set_modes = [mode1, mode2]
for mode in set_modes:
self.create_mode(mode.slug, mode.name, mode.min_price, mode.suggested_prices)
......
......@@ -12,12 +12,14 @@ 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
from xmodule.modulestore import Location
from pytz import UTC
from modulestore_config import TEST_DATA_XML_MODULESTORE
from course_modes.models import CourseMode
class Stub():
......@@ -164,6 +166,36 @@ class ViewsTestCase(TestCase):
# generate/store a real password.
self.assertEquals(chat_settings['password'], "johndoe@%s" % domain)
def test_course_mktg_about_coming_soon(self):
# we should not be able to find this course
url = reverse('mktg_about_course', kwargs={'course_id': 'no/course/here'})
response = self.client.get(url)
self.assertIn('Coming Soon', response.content)
def test_course_mktg_register(self):
admin = AdminFactory()
self.client.login(username=admin.username, password='test')
url = reverse('mktg_about_course', kwargs={'course_id': self.course_id})
response = self.client.get(url)
self.assertIn('Register for', response.content)
self.assertNotIn('and choose your student track', response.content)
def test_course_mktg_register_multiple_modes(self):
admin = AdminFactory()
CourseMode.objects.get_or_create(mode_slug='honor',
mode_display_name='Honor Code Certificate',
course_id=self.course_id)
CourseMode.objects.get_or_create(mode_slug='verified',
mode_display_name='Verified Certificate',
course_id=self.course_id)
self.client.login(username=admin.username, password='test')
url = reverse('mktg_about_course', kwargs={'course_id': self.course_id})
response = self.client.get(url)
self.assertIn('Register for', response.content)
self.assertIn('and choose your student track', response.content)
# clean up course modes
CourseMode.objects.all().delete()
def test_submission_history_xss(self):
# log into a staff account
admin = AdminFactory()
......
......@@ -25,6 +25,7 @@ from courseware.masquerade import setup_masquerade
from courseware.model_data import ModelDataCache
from .module_render import toc_for_course, get_module_for_descriptor, get_module
from courseware.models import StudentModule, StudentModuleHistory
from course_modes.models import CourseMode
from django_comment_client.utils import get_discussion_title
......@@ -600,9 +601,14 @@ def course_about(request, course_id):
'registered': registered,
'course_target': course_target,
'show_courseware_link': show_courseware_link})
@ensure_csrf_cookie
@cache_if_anonymous
def mktg_course_about(request, course_id):
"""
This is the button that gets put into an iframe on the Drupal site
"""
try:
course = get_course_with_access(request.user, course_id, 'see_exists')
......@@ -623,13 +629,17 @@ def mktg_course_about(request, course_id):
show_courseware_link = (has_access(request.user, course, 'load') or
settings.MITX_FEATURES.get('ENABLE_LMS_MIGRATION'))
course_modes = CourseMode.modes_for_course(course.id)
return render_to_response('courseware/mktg_course_about.html',
{'course': course,
{
'course': course,
'registered': registered,
'allow_registration': allow_registration,
'course_target': course_target,
'show_courseware_link': show_courseware_link})
'show_courseware_link': show_courseware_link,
'course_modes': course_modes,
})
def render_notifications(request, course, notifications):
......
......@@ -156,6 +156,19 @@
&.action-register, &.access-courseware {
@extend .m-btn-primary;
display: block;
.track {
@include transition(all 0.25s ease-in-out);
color: $white;
display: block;
font-size: 13px;
line-height: 2em;
opacity: 0.6;
}
&:hover .track {
opacity: 1.0;
}
}
// already registered but course not started or registration is closed
......
......@@ -52,7 +52,13 @@
<div class="action is-registered">${_("You Are Registered")}</div>
%endif
%elif allow_registration:
<a class="action action-register register" href="#">${_("Register for")} <strong>${course.display_number_with_default | h}</strong></a>
<a class="action action-register register" href="#">${_("Register for")} <strong>${course.display_number_with_default | h}</strong>
%if len(course_modes) > 1:
<span class="track">
and choose your student track
</span>
%endif
</a>
%else:
<div class="action registration-closed is-disabled">${_("Registration Is Closed")}</div>
%endif
......
......@@ -27,7 +27,7 @@
<!-- repeated button styles needed for IE (copied from _shame.scss) -->
<style type="text/css" media="screen">
.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}
.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 .25s ease-in-out,background .25s ease-in-out,box-shadow .25s ease-in-out;-moz-transition:color .25s ease-in-out,background .25s ease-in-out,box-shadow .25s ease-in-out;transition:color .25s ease-in-out,background .25s ease-in-out,box-shadow .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:0;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}.action-register .track{@include transition(all .25s ease-in-out):;color:#fff;display:block;font-size:13px;line-height:2em;opacity:0.6}.action-register:hover .track{opacity:1.0}.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:0;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