From 6f888d699520080b4efafde7c6be33272c74293a Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Tue, 22 Aug 2017 17:47:58 -0400 Subject: [PATCH] Add course certificates on the learner profile LEARNER-1860 --- .gitignore | 3 +- common/djangoapps/student/views.py | 1 + lms/static/images/certificates/audit.png | Bin 0 -> 13211 bytes lms/static/images/certificates/honor.png | Bin 0 -> 13211 bytes .../images/certificates/professional.png | Bin 0 -> 13211 bytes lms/static/images/certificates/verified.png | Bin 0 -> 13211 bytes lms/static/sass/_build-base-v1-rtl.scss | 1 + lms/static/sass/_build-base-v1.scss | 1 + lms/static/sass/_build-footer-edx.scss | 1 + .../sass/features/_learner-profile.scss | 338 ++++++++++++------ lms/static/sass/lms-course-rtl.scss | 1 + lms/static/sass/lms-course.scss | 1 + lms/static/sass/lms-footer-edx-rtl.scss | 2 +- lms/static/sass/lms-footer-edx.scss | 2 +- lms/static/sass/lms-footer-rtl.scss | 1 + lms/static/sass/lms-footer.scss | 1 + lms/static/sass/partials/base/_theme.scss | 1 + lms/static/sass/partials/base/_variables.scss | 13 +- openedx/features/learner_profile/__init__.py | 13 + .../fixtures/learner_profile.html | 39 +- .../js/spec_helpers/helpers.js | 52 +-- .../js/views/learner_profile_view.js | 30 +- .../templates/learner_profile.underscore | 25 -- .../learner-achievements-fragment.html | 88 +++++ .../learner_profile/learner_profile.html | 47 ++- .../test_learner_profile.py} | 70 +++- openedx/features/learner_profile/urls.py | 9 +- .../learner_profile/views/__init__.py | 0 .../views/learner_achievements.py | 42 +++ .../{views.py => views/learner_profile.py} | 16 + .../lms/static/images/certificates/honor.png | Bin 0 -> 6061 bytes .../certificates/micromasters-program.png | Bin 0 -> 7625 bytes .../certificates/professional-program.png | Bin 0 -> 6745 bytes .../images/certificates/professional.png | Bin 0 -> 6819 bytes .../static/images/certificates/verified.png | Bin 0 -> 6052 bytes .../sass/partials/base/_certificates.scss | 30 ++ .../lms/static/sass/partials/base/_theme.scss | 3 + .../lms/static/images/certificates/honor.png | Bin 0 -> 11628 bytes .../certificates/micromasters-program.png | Bin 0 -> 14665 bytes .../certificates/professional-program.png | Bin 0 -> 13374 bytes .../images/certificates/professional.png | Bin 0 -> 13620 bytes .../static/images/certificates/verified.png | Bin 0 -> 11842 bytes .../sass/partials/base/_certificates.scss | 30 ++ .../lms/static/sass/partials/base/_theme.scss | 3 + .../images/certificates/red-certificate.png | Bin 0 -> 7797 bytes .../sass/partials/base/_certificates.scss | 35 ++ .../lms/static/sass/partials/base/_theme.scss | 3 + 47 files changed, 685 insertions(+), 217 deletions(-) create mode 100644 lms/static/images/certificates/audit.png create mode 100644 lms/static/images/certificates/honor.png create mode 100644 lms/static/images/certificates/professional.png create mode 100644 lms/static/images/certificates/verified.png create mode 100644 lms/static/sass/partials/base/_theme.scss delete mode 100644 openedx/features/learner_profile/static/learner_profile/templates/learner_profile.underscore create mode 100644 openedx/features/learner_profile/templates/learner_profile/learner-achievements-fragment.html rename openedx/features/learner_profile/tests/{test_views.py => views/test_learner_profile.py} (51%) create mode 100644 openedx/features/learner_profile/views/__init__.py create mode 100644 openedx/features/learner_profile/views/learner_achievements.py rename openedx/features/learner_profile/{views.py => views/learner_profile.py} (88%) create mode 100644 themes/edge.edx.org/lms/static/images/certificates/honor.png create mode 100644 themes/edge.edx.org/lms/static/images/certificates/micromasters-program.png create mode 100644 themes/edge.edx.org/lms/static/images/certificates/professional-program.png create mode 100644 themes/edge.edx.org/lms/static/images/certificates/professional.png create mode 100644 themes/edge.edx.org/lms/static/images/certificates/verified.png create mode 100644 themes/edge.edx.org/lms/static/sass/partials/base/_certificates.scss create mode 100644 themes/edge.edx.org/lms/static/sass/partials/base/_theme.scss create mode 100644 themes/edx.org/lms/static/images/certificates/honor.png create mode 100644 themes/edx.org/lms/static/images/certificates/micromasters-program.png create mode 100644 themes/edx.org/lms/static/images/certificates/professional-program.png create mode 100644 themes/edx.org/lms/static/images/certificates/professional.png create mode 100644 themes/edx.org/lms/static/images/certificates/verified.png create mode 100644 themes/edx.org/lms/static/sass/partials/base/_certificates.scss create mode 100644 themes/edx.org/lms/static/sass/partials/base/_theme.scss create mode 100644 themes/red-theme/lms/static/images/certificates/red-certificate.png create mode 100644 themes/red-theme/lms/static/sass/partials/base/_certificates.scss create mode 100644 themes/red-theme/lms/static/sass/partials/base/_theme.scss diff --git a/.gitignore b/.gitignore index fa417911e5..637b00b853 100644 --- a/.gitignore +++ b/.gitignore @@ -107,8 +107,7 @@ cms/static/css/ cms/static/sass/*.css cms/static/sass/*.css.map cms/static/themed_sass/ -themes/**/css/*.css -themes/**/css/discussion/*.css +themes/**/css ### Logging artifacts log/ diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index dacbec78d5..83f6c71b46 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -245,6 +245,7 @@ def cert_info(user, course_overview, course_mode): """ if not course_overview.may_certify(): return {} + # Note: this should be rewritten to use the certificates API return _cert_info( user, course_overview, diff --git a/lms/static/images/certificates/audit.png b/lms/static/images/certificates/audit.png new file mode 100644 index 0000000000000000000000000000000000000000..7363f01845c8f47296571699ce01a8cabbc00717 GIT binary patch literal 13211 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 span { + color: $gray-l4; + } + + a { + .fa-facebook-square { + color: $facebook-blue; + } + + .fa-twitter-square { + color: $twitter-blue; + } + + .fa-linkedin-square { + color: $linkedin-blue; + } + } + } + + .u-field { + @extend %t-weight4; + @include padding(0, 0, 0, 3px); + color: $base-font-color; + margin-top: $baseline/5; + + .u-field-value, .u-field-title { + @extend %t-weight4; + width: calc(100% - 40px); + } + + .u-field-value-readonly { + @extend %t-weight3; + font-family: $sans-serif; + color: $darkest-base-font-color; + } + + .u-field-title { + color: $lightest-base-font-color; + display: block; + } + + &.u-field-dropdown { + position: relative; + + &:not(.editable-never) { + cursor: pointer; + } + + &:not(:last-child) { + padding-bottom: $baseline/4; + border-bottom: 1px solid $gray-lighter; + + &:hover.mode-placeholder { + padding-bottom: $baseline/5; + border-bottom: 2px dashed $link-color; + } + } + } + } + + &>.u-field { + &:not(:first-child) { + font-size: $body-font-size; + color: $base-font-color; + font-weight: $font-light; + margin-bottom: 0; + } + + &:first-child { + @extend %t-title4; + @extend %t-weight4; + font-size: em(24); + } + } + + select { + width: 85% + } + + .u-field-message { + @include right(0); + position: absolute; + top: 0; + width: 20px; + + .icon { + vertical-align: baseline; + } + } + } } } - .profile-section-one-fields { - @include margin(0, $baseline/2, 0, $baseline*0.75); - - .social-links { - font-size: 2rem; - padding-top: $baseline/4; - - & > span { - color: $gray-l4; - } - - a { - .fa-facebook-square { - color: $facebook-blue; - } - - .fa-twitter-square { - color: $twitter-blue; - } - - .fa-linkedin-square { - color: $linkedin-blue; - } - } - } - - .u-field { - @extend %t-weight4; - padding: 0; - color: $base-font-color; - margin-top: $baseline/5; - - .u-field-value, .u-field-title { - @extend %t-weight4; - width: calc(100% - 40px); - } - - .u-field-value-readonly { - font-weight: 500; - font-family: $sans-serif; - color: $darkest-base-font-color; - } - - .u-field-title { - color: $lightest-base-font-color; - display: block; - } - - &:not(.u-field-readonly):not(:last-child) { - padding-bottom: $baseline/4; - border-bottom: 1px solid $gray-lighter; - - &:hover.mode-placeholder { - padding-bottom: $baseline/5; - border-bottom: 2px dashed $link-color; - } - } - &.u-field-dropdown { - position: relative; - - &:not(.editable-never) { - cursor: pointer; - } - - } - } - - &>.u-field { - &:not(:first-child) { - font-size: $body-font-size; - color: $base-font-color; - font-weight: $font-light; - margin-bottom: 0; - } - - &:first-child { - @extend %t-title4; - @extend %t-weight4; - font-size: em(24); - } - } - - select { - width: 85% - } - - .u-field-message { - @include right(0); - position: absolute; - top: 0; - width: 20px; - - .icon { - vertical-align: baseline; - } - } - } .wrapper-profile-section-container-two { @include float(left); @include padding-left($baseline); width: calc(100% - 380px); max-width: $learner-profile-container-flex; // Switch to map-get($grid-breakpoints,md) for bootstrap + font-family: $sans-serif; @media (max-width: $learner-profile-container-flex) { // Switch to map-get($grid-breakpoints,md) for bootstrap - @include padding-left(0); - width: 100%; + width: 90%; margin-top: $baseline; + padding: 0 5%; } .u-field-textarea { + @include padding(0, ($baseline*.75), ($baseline*.75), 0); margin-bottom: ($baseline/2); - @include padding(0, ($baseline*.75), ($baseline*.75), ($baseline/4)); + + @media (max-width: $learner-profile-container-flex) { // Switch to map-get($grid-breakpoints,md) for bootstrap + @include padding-left($baseline/4); + } .u-field-header { position: relative; @@ -355,12 +460,11 @@ .u-field-title { @extend %t-title6; - @extend %t-weight5; display: inline-block; margin-top: 0; margin-bottom: ($baseline/4); - color: $gray-dark; width: 100%; + font: $font-semibold 1.4em/1.4em $sans-serif; } .u-field-value { @@ -396,7 +500,7 @@ .u-field.mode-placeholder { padding: $baseline; - margin: $baseline * 0.75; + margin: $baseline*0.75 0; border: 2px dashed $gray-l3; i { diff --git a/lms/static/sass/lms-course-rtl.scss b/lms/static/sass/lms-course-rtl.scss index 654565bd98..d7b20b2b3d 100644 --- a/lms/static/sass/lms-course-rtl.scss +++ b/lms/static/sass/lms-course-rtl.scss @@ -5,5 +5,6 @@ @import 'base/variables'; @import 'base/font_face'; @import 'base/mixins'; +@import 'base/theme'; @import 'build-course'; // shared app style assets/rendering diff --git a/lms/static/sass/lms-course.scss b/lms/static/sass/lms-course.scss index 8ebd978a8e..4faa14b9f4 100644 --- a/lms/static/sass/lms-course.scss +++ b/lms/static/sass/lms-course.scss @@ -5,5 +5,6 @@ @import 'base/variables'; @import 'base/font_face'; @import 'base/mixins'; +@import 'base/theme'; @import 'build-course'; // shared app style assets/rendering diff --git a/lms/static/sass/lms-footer-edx-rtl.scss b/lms/static/sass/lms-footer-edx-rtl.scss index e189fe9e6d..e435906758 100644 --- a/lms/static/sass/lms-footer-edx-rtl.scss +++ b/lms/static/sass/lms-footer-edx-rtl.scss @@ -7,4 +7,4 @@ @import 'base/variables-rtl'; // Import shared build for the edx.org footer -@import 'build-footer-edx' +@import 'build-footer-edx'; diff --git a/lms/static/sass/lms-footer-edx.scss b/lms/static/sass/lms-footer-edx.scss index afa3d26592..44f54ccd87 100644 --- a/lms/static/sass/lms-footer-edx.scss +++ b/lms/static/sass/lms-footer-edx.scss @@ -7,4 +7,4 @@ @import 'base/variables-ltr'; // Import shared build for the edx.org footer -@import 'build-footer-edx' +@import 'build-footer-edx'; diff --git a/lms/static/sass/lms-footer-rtl.scss b/lms/static/sass/lms-footer-rtl.scss index ad15a1c9aa..ea5f2ab9ea 100644 --- a/lms/static/sass/lms-footer-rtl.scss +++ b/lms/static/sass/lms-footer-rtl.scss @@ -8,6 +8,7 @@ // base - utilities @import 'base/variables'; @import 'base/mixins'; +@import 'base/theme'; footer#footer-openedx { @import 'base/reset'; diff --git a/lms/static/sass/lms-footer.scss b/lms/static/sass/lms-footer.scss index 9173c23b7e..975c1a211a 100644 --- a/lms/static/sass/lms-footer.scss +++ b/lms/static/sass/lms-footer.scss @@ -8,6 +8,7 @@ // base - utilities @import 'base/variables'; @import 'base/mixins'; +@import 'base/theme'; footer#footer-openedx { @import 'base/reset'; diff --git a/lms/static/sass/partials/base/_theme.scss b/lms/static/sass/partials/base/_theme.scss new file mode 100644 index 0000000000..c1e4fb2230 --- /dev/null +++ b/lms/static/sass/partials/base/_theme.scss @@ -0,0 +1 @@ +// File to be overridden by themes diff --git a/lms/static/sass/partials/base/_variables.scss b/lms/static/sass/partials/base/_variables.scss index 1a86d447a0..d637e93d60 100644 --- a/lms/static/sass/partials/base/_variables.scss +++ b/lms/static/sass/partials/base/_variables.scss @@ -248,11 +248,14 @@ $state-danger-border: darken($state-danger-bg, 5%) !default; // ---------------------------- // logo colors -$micromasters-color: #005585; -$xseries-color: #424242; -$professional-certificate-color: #9a1f60; -$zebra-stripe-color: rgb(249, 250, 252); -$divider-color: rgb(226,231,236); +$audit-mode-color: $gray-dark !default; +$honor-mode-color: $uxpl-blue-base !default; +$verified-mode-color: $uxpl-green-base !default; +$micromasters-color: #005585 !default; +$xseries-color: #424242 !default; +$professional-certificate-color: #9a1f60 !default; +$zebra-stripe-color: rgb(249, 250, 252) !default; +$divider-color: rgb(226,231,236) !default; // old color variables // DEPRECATED: Do not continue to use these colors, instead use pattern libary and base colors above. diff --git a/openedx/features/learner_profile/__init__.py b/openedx/features/learner_profile/__init__.py index e69de29bb2..d1d21fdd14 100644 --- a/openedx/features/learner_profile/__init__.py +++ b/openedx/features/learner_profile/__init__.py @@ -0,0 +1,13 @@ +""" +Learner profile settings and helper methods. +""" + +from openedx.core.djangoapps.waffle_utils import WaffleFlag, WaffleFlagNamespace + + +# Namespace for learner profile waffle flags. +WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name='learner_profile') + +# Waffle flag to show achievements on the learner profile. +# TODO: LEARNER-2443: 08/2017: Remove flag after rollout. +SHOW_ACHIEVEMENTS_FLAG = WaffleFlag(WAFFLE_FLAG_NAMESPACE, 'show_achievements') diff --git a/openedx/features/learner_profile/static/learner_profile/fixtures/learner_profile.html b/openedx/features/learner_profile/static/learner_profile/fixtures/learner_profile.html index d3719597f5..61c139210a 100644 --- a/openedx/features/learner_profile/static/learner_profile/fixtures/learner_profile.html +++ b/openedx/features/learner_profile/static/learner_profile/fixtures/learner_profile.html @@ -1,19 +1,40 @@
-
-

+

+ + +
+
+

- + Loading -

-
- + +
diff --git a/openedx/features/learner_profile/static/learner_profile/js/spec_helpers/helpers.js b/openedx/features/learner_profile/static/learner_profile/js/spec_helpers/helpers.js index 9f943e5214..d3ebdc6d26 100644 --- a/openedx/features/learner_profile/static/learner_profile/js/spec_helpers/helpers.js +++ b/openedx/features/learner_profile/static/learner_profile/js/spec_helpers/helpers.js @@ -36,14 +36,14 @@ define(['underscore', 'URI', 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers' }; var expectProfilePrivacyFieldTobeRendered = function(learnerProfileView, othersProfile) { - var accountPrivacyElement = learnerProfileView.$('.wrapper-profile-field-account-privacy'); - var privacyFieldElement = $(accountPrivacyElement).find('.u-field'); + var $accountPrivacyElement = $('.wrapper-profile-field-account-privacy'); + var $privacyFieldElement = $($accountPrivacyElement).find('.u-field'); if (othersProfile) { - expect(privacyFieldElement.length).toBe(0); + expect($privacyFieldElement.length).toBe(0); } else { - expect(privacyFieldElement.length).toBe(1); - expectProfileElementContainsField(privacyFieldElement, learnerProfileView.options.accountPrivacyFieldView); + expect($privacyFieldElement.length).toBe(1); + expectProfileElementContainsField($privacyFieldElement, learnerProfileView.options.accountPrivacyFieldView); } }; @@ -65,12 +65,12 @@ define(['underscore', 'URI', 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers' }; var expectSectionTwoTobeRendered = function(learnerProfileView) { - var sectionTwoElement = learnerProfileView.$('.wrapper-profile-section-two'); - var sectionTwoFieldElements = $(sectionTwoElement).find('.u-field'); + var $sectionTwoElement = $('.wrapper-profile-section-two'); + var $sectionTwoFieldElements = $($sectionTwoElement).find('.u-field'); - expect(sectionTwoFieldElements.length).toBe(learnerProfileView.options.sectionTwoFieldViews.length); + expect($sectionTwoFieldElements.length).toBe(learnerProfileView.options.sectionTwoFieldViews.length); - _.each(sectionTwoFieldElements, function(sectionFieldElement, fieldIndex) { + _.each($sectionTwoFieldElements, function(sectionFieldElement, fieldIndex) { expectProfileElementContainsField( sectionFieldElement, learnerProfileView.options.sectionTwoFieldViews[fieldIndex] @@ -85,7 +85,7 @@ define(['underscore', 'URI', 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers' }; var expectLimitedProfileSectionsAndFieldsToBeRendered = function(learnerProfileView, othersProfile) { - var sectionOneFieldElements = $(learnerProfileView.$('.wrapper-profile-section-one')).find('.u-field'); + var sectionOneFieldElements = $('.wrapper-profile-section-one').find('.u-field'); expectProfilePrivacyFieldTobeRendered(learnerProfileView, othersProfile); @@ -108,9 +108,9 @@ define(['underscore', 'URI', 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers' }; var expectProfileSectionsNotToBeRendered = function(learnerProfileView) { - expect(learnerProfileView.$('.wrapper-profile-field-account-privacy').length).toBe(0); - expect(learnerProfileView.$('.wrapper-profile-section-one').length).toBe(0); - expect(learnerProfileView.$('.wrapper-profile-section-two').length).toBe(0); + expect($('.wrapper-profile-field-account-privacy').length).toBe(0); + expect($('.wrapper-profile-section-one').length).toBe(0); + expect($('.wrapper-profile-section-two').length).toBe(0); }; var expectTabbedViewToBeUndefined = function(requests, tabbedViewView) { @@ -124,42 +124,42 @@ define(['underscore', 'URI', 'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers' }; var expectBadgesDisplayed = function(learnerProfileView, length, lastPage) { - var badgeListingView = learnerProfileView.$el.find('#tabpanel-accomplishments'), + var $badgeListingView = $('#tabpanel-accomplishments'), updatedLength = length, placeholder; - expect(learnerProfileView.$el.find('#tabpanel-about_me').hasClass('is-hidden')).toBe(true); - expect(badgeListingView.hasClass('is-hidden')).toBe(false); + expect($('#tabpanel-about_me').hasClass('is-hidden')).toBe(true); + expect($badgeListingView.hasClass('is-hidden')).toBe(false); if (lastPage) { updatedLength += 1; - placeholder = badgeListingView.find('.find-course'); + placeholder = $badgeListingView.find('.find-course'); expect(placeholder.length).toBe(1); expect(placeholder.attr('href')).toBe('/courses/'); } - expect(badgeListingView.find('.badge-display').length).toBe(updatedLength); + expect($badgeListingView.find('.badge-display').length).toBe(updatedLength); }; var expectBadgesHidden = function(learnerProfileView) { - var accomplishmentsTab = learnerProfileView.$el.find('#tabpanel-accomplishments'); - if (accomplishmentsTab.length) { + var $accomplishmentsTab = $('#tabpanel-accomplishments'); + if ($accomplishmentsTab.length) { // Nonexistence counts as hidden. - expect(learnerProfileView.$el.find('#tabpanel-accomplishments').hasClass('is-hidden')).toBe(true); + expect($('#tabpanel-accomplishments').hasClass('is-hidden')).toBe(true); } - expect(learnerProfileView.$el.find('#tabpanel-about_me').hasClass('is-hidden')).toBe(false); + expect($('#tabpanel-about_me').hasClass('is-hidden')).toBe(false); }; var expectPage = function(learnerProfileView, pageData) { - var badgeListContainer = learnerProfileView.$el.find('#tabpanel-accomplishments'); - var index = badgeListContainer.find('span.search-count').text().trim(); + var $badgeListContainer = $('#tabpanel-accomplishments'); + var index = $badgeListContainer.find('span.search-count').text().trim(); expect(index).toBe('Showing ' + (pageData.start + 1) + '-' + (pageData.start + pageData.results.length) + ' out of ' + pageData.count + ' total'); - expect(badgeListContainer.find('.current-page').text()).toBe('' + pageData.current_page); + expect($badgeListContainer.find('.current-page').text()).toBe('' + pageData.current_page); _.each(pageData.results, function(badge) { expect($('.badge-display:contains(' + badge.badge_class.display_name + ')').length).toBe(1); }); }; var expectBadgeLoadingErrorIsRendered = function(learnerProfileView) { - var errorMessage = learnerProfileView.$el.find('.badge-set-display').text(); + var errorMessage = $('.badge-set-display').text(); expect(errorMessage).toBe( 'Your request could not be completed. Reload the page and try again. If the issue persists, click the ' + 'Help tab to report the problem.' diff --git a/openedx/features/learner_profile/static/learner_profile/js/views/learner_profile_view.js b/openedx/features/learner_profile/static/learner_profile/js/views/learner_profile_view.js index 96a8e55cdb..9c8627baca 100644 --- a/openedx/features/learner_profile/static/learner_profile/js/views/learner_profile_view.js +++ b/openedx/features/learner_profile/static/learner_profile/js/views/learner_profile_view.js @@ -5,11 +5,9 @@ [ 'gettext', 'jquery', 'underscore', 'backbone', 'edx-ui-toolkit/js/utils/html-utils', 'common/js/components/views/tabbed_view', - 'learner_profile/js/views/section_two_tab', - 'text!learner_profile/templates/learner_profile.underscore', - 'edx-ui-toolkit/js/utils/string-utils' + 'learner_profile/js/views/section_two_tab' ], - function(gettext, $, _, Backbone, HtmlUtils, TabbedView, SectionTwoTab, learnerProfileTemplate, StringUtils) { + function(gettext, $, _, Backbone, HtmlUtils, TabbedView, SectionTwoTab) { var LearnerProfileView = Backbone.View.extend({ initialize: function(options) { @@ -25,8 +23,6 @@ this.firstRender = true; }, - template: _.template(learnerProfileTemplate), - showFullProfile: function() { var isAboveMinimumAge = this.options.accountSettingsModel.isAboveMinimumAge(); if (this.options.ownProfile) { @@ -54,22 +50,13 @@ ownProfile: this.options.ownProfile }); - - HtmlUtils.setHtml(this.$el, HtmlUtils.template(learnerProfileTemplate)({ - username: self.options.accountSettingsModel.get('username'), - name: self.options.accountSettingsModel.get('name'), - ownProfile: self.options.ownProfile, - showFullProfile: self.showFullProfile(), - profile_header: gettext('My Profile'), - profile_subheader: - StringUtils.interpolate( - gettext('Build out your profile to personalize your identity on {platform_name}.'), { - platform_name: self.options.platformName - } - ) - })); this.renderFields(); + // Reveal the profile and hide the loading indicator + $('.ui-loading-indicator').addClass('is-hidden'); + $('.wrapper-profile-section-container-one').removeClass('is-hidden'); + $('.wrapper-profile-section-container-two').removeClass('is-hidden'); + if (this.showFullProfile() && (this.options.accountSettingsModel.get('accomplishments_shared'))) { tabs = [ {view: this.sectionTwoView, title: gettext('About Me'), url: 'about_me'}, @@ -108,7 +95,8 @@ Backbone.history.start(); } } else { - this.$el.find('.wrapper-profile-section-container-two').append(this.sectionTwoView.render().el); + // xss-lint: disable=javascript-jquery-html + this.$el.find('.wrapper-profile-bio').html(this.sectionTwoView.render().el); } return this; }, diff --git a/openedx/features/learner_profile/static/learner_profile/templates/learner_profile.underscore b/openedx/features/learner_profile/static/learner_profile/templates/learner_profile.underscore deleted file mode 100644 index 2ff1a6f397..0000000000 --- a/openedx/features/learner_profile/static/learner_profile/templates/learner_profile.underscore +++ /dev/null @@ -1,25 +0,0 @@ -
- - -
diff --git a/openedx/features/learner_profile/templates/learner_profile/learner-achievements-fragment.html b/openedx/features/learner_profile/templates/learner_profile/learner-achievements-fragment.html new file mode 100644 index 0000000000..083bf638b2 --- /dev/null +++ b/openedx/features/learner_profile/templates/learner_profile/learner-achievements-fragment.html @@ -0,0 +1,88 @@ +## mako + +<%page expression_filter="h"/> + +<%namespace name='static' file='/static_content.html'/> + +<%! +from django.utils.translation import ugettext as _ +from openedx.core.djangolib.markup import HTML, Text +%> + +
+ % if course_certificates or own_profile: +

Course Certificates

+ % if course_certificates: + % for certificate in course_certificates: + <% + certificate_url = certificate['download_url'] + course = certificate['course'] + + completion_date_message_html = Text(_('Completed {completion_date_html}')).format( + completion_date=HTML( + '' + ).format( + completion_date=certificate['created'], + user_timezone=user_timezone, + user_language=user_language, + ), + ) + %> + % if certificate_url: + +
+ +
+
${course.display_org_with_default}
+
${course.display_name_with_default}
+

${completion_date_message_html}

+
+
+
+ % else: +
+ +
+
${course.display_org_with_default}
+
${course.display_name_with_default}
+

${completion_date_message_html}

+
+
+ % endif + % endfor + % elif own_profile: +
+

${_("You haven't earned any certificates yet.")}

+

+ + + ${_('Explore New Courses')} + +

+
+ % endif + % endif +
+ +<%static:require_module_async module_name="js/dateutil_factory" class_name="DateUtilFactory"> + DateUtilFactory.transform('.localized-datetime'); + + diff --git a/openedx/features/learner_profile/templates/learner_profile/learner_profile.html b/openedx/features/learner_profile/templates/learner_profile/learner_profile.html index 02664c737d..9432128915 100644 --- a/openedx/features/learner_profile/templates/learner_profile/learner_profile.html +++ b/openedx/features/learner_profile/templates/learner_profile/learner_profile.html @@ -4,28 +4,65 @@ <%inherit file="/main.html" /> <%def name="online_help_token()"><% return "profile" %> <%namespace name='static' file='/static_content.html'/> + <%! import json from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ from openedx.core.djangolib.js_utils import dump_js_escaped_json +from openedx.core.djangolib.markup import HTML %> <%block name="pagetitle">${_("Learner Profile")} <%block name="bodyclass">view-profile +<%block name="headextra"> +<%static:css group='style-course'/> + +
-
-

${_("Loading")}

+
+ +
-<%block name="headextra"> - <%static:css group='style-course'/> - <%block name="js_extra"> <%static:require_module module_name="learner_profile/js/learner_profile_factory" class_name="LearnerProfileFactory"> diff --git a/openedx/features/learner_profile/tests/test_views.py b/openedx/features/learner_profile/tests/views/test_learner_profile.py similarity index 51% rename from openedx/features/learner_profile/tests/test_views.py rename to openedx/features/learner_profile/tests/views/test_learner_profile.py index b5468acd11..07789d8fa6 100644 --- a/openedx/features/learner_profile/tests/test_views.py +++ b/openedx/features/learner_profile/tests/views/test_learner_profile.py @@ -1,21 +1,32 @@ # -*- coding: utf-8 -*- """ Tests for student profile views. """ +import datetime +import ddt + from django.conf import settings from django.core.urlresolvers import reverse -from django.test import TestCase from django.test.client import RequestFactory -from student.tests.factories import UserFactory from util.testing import UrlResetMixin -from ..views import learner_profile_context +from course_modes.models import CourseMode + +from certificates.tests.factories import GeneratedCertificateFactory # pylint: disable=import-error +from student.tests.factories import CourseEnrollmentFactory, UserFactory + +from openedx.features.learner_profile.views.learner_profile import learner_profile_context +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory -class LearnerProfileViewTest(UrlResetMixin, TestCase): +@ddt.ddt +class LearnerProfileViewTest(UrlResetMixin, ModuleStoreTestCase): """ Tests for the student profile view. """ USERNAME = "username" + OTHER_USERNAME = "other_user" PASSWORD = "password" + DOWNLOAD_URL = "http://www.example.com/certificate.pdf" CONTEXT_DATA = [ 'default_public_account_fields', 'accounts_api_url', @@ -32,7 +43,13 @@ class LearnerProfileViewTest(UrlResetMixin, TestCase): def setUp(self): super(LearnerProfileViewTest, self).setUp() self.user = UserFactory.create(username=self.USERNAME, password=self.PASSWORD) + self.other_user = UserFactory.create(username=self.OTHER_USERNAME, password=self.PASSWORD) self.client.login(username=self.USERNAME, password=self.PASSWORD) + self.course = CourseFactory.create( + start=datetime.datetime(2013, 9, 16, 7, 17, 28), + end=datetime.datetime.now(), + certificate_available_date=datetime.datetime.now(), + ) def test_context(self): """ @@ -100,3 +117,48 @@ class LearnerProfileViewTest(UrlResetMixin, TestCase): profile_path = reverse('learner_profile', kwargs={'username': "no_such_user"}) response = self.client.get(path=profile_path) self.assertEqual(404, response.status_code) + + def _create_certificate(self, enrollment_mode): + """Simulate that the user has a generated certificate. """ + CourseEnrollmentFactory.create(user=self.user, course_id=self.course.id, mode=enrollment_mode) + return GeneratedCertificateFactory( + user=self.user, + course_id=self.course.id, + mode=enrollment_mode, + download_url=self.DOWNLOAD_URL, + status="downloadable" + ) + + @ddt.data(CourseMode.HONOR, CourseMode.PROFESSIONAL, CourseMode.VERIFIED) + def test_certificate_visibility(self, cert_mode): + """ + Verify that certificates are displayed with the correct card mode. + """ + # Add new certificate + cert = self._create_certificate(cert_mode) + cert.save() + + request = RequestFactory().get('/url') + request.user = self.user + context = learner_profile_context(request, self.user.username, self.user.is_staff) + + self.assertTrue('card certificate-card mode-' + cert_mode in str(context['achievements_fragment'].content)) + + @ddt.data(True, False) + def test_no_certificate_visibility(self, own_profile): + """ + Verify that the 'You haven't earned any certificates yet.' well appears on the user's + own profile when they do not have certificates and does not appear when viewing + another user that does not have any certificates. + """ + request = RequestFactory().get('/url') + request.user = self.user + profile_username = self.user.username if own_profile else self.other_user.username + context = learner_profile_context(request, profile_username, self.user.is_staff) + + if own_profile: + content = str(context['achievements_fragment'].content) + self.assertIn('icon fa fa-search', content) + self.assertIn("You haven't earned any certificates yet", content) + else: + self.assertIsNone(context['achievements_fragment']) diff --git a/openedx/features/learner_profile/urls.py b/openedx/features/learner_profile/urls.py index 184feb165b..775d6ded1f 100644 --- a/openedx/features/learner_profile/urls.py +++ b/openedx/features/learner_profile/urls.py @@ -5,12 +5,19 @@ Defines URLs for the learner profile. from django.conf import settings from django.conf.urls import url +from views.learner_achievements import LearnerAchievementsFragmentView + urlpatterns = [ url( r'^{username_pattern}$'.format( username_pattern=settings.USERNAME_PATTERN, ), - 'openedx.features.learner_profile.views.learner_profile', + 'openedx.features.learner_profile.views.learner_profile.learner_profile', name='learner_profile', ), + url( + r'^achievements$', + LearnerAchievementsFragmentView.as_view(), + name='openedx.learner_profile.learner_achievements_fragment_view', + ), ] diff --git a/openedx/features/learner_profile/views/__init__.py b/openedx/features/learner_profile/views/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/openedx/features/learner_profile/views/learner_achievements.py b/openedx/features/learner_profile/views/learner_achievements.py new file mode 100644 index 0000000000..f605e192df --- /dev/null +++ b/openedx/features/learner_profile/views/learner_achievements.py @@ -0,0 +1,42 @@ +""" +Views to render a learner's achievements. +""" + +from courseware.courses import get_course_overview_with_access +from django.template.loader import render_to_string +from lms.djangoapps.certificates import api as certificate_api +from openedx.core.djangoapps.plugin_api.views import EdxFragmentView +from web_fragments.fragment import Fragment + + +class LearnerAchievementsFragmentView(EdxFragmentView): + """ + A fragment to render a learner's achievements. + """ + def render_to_fragment(self, request, username=None, own_profile=False, **kwargs): + """ + Renders the current learner's achievements. + """ + course_certificates = self._get_ordered_certificates_for_user(request, username) + context = { + 'course_certificates': course_certificates, + 'own_profile': own_profile, + 'disable_courseware_js': True, + } + if course_certificates or own_profile: + html = render_to_string('learner_profile/learner-achievements-fragment.html', context) + return Fragment(html) + else: + return None + + def _get_ordered_certificates_for_user(self, request, username): + """ + Returns a user's certificates sorted by course name. + """ + course_certificates = certificate_api.get_certificates_for_user(username) + for course_certificate in course_certificates: + course_key = course_certificate['course_key'] + course_overview = get_course_overview_with_access(request.user, 'load', course_key) + course_certificate['course'] = course_overview + course_certificates.sort(key=lambda certificate: certificate['course'].display_name_with_default) + return course_certificates diff --git a/openedx/features/learner_profile/views.py b/openedx/features/learner_profile/views/learner_profile.py similarity index 88% rename from openedx/features/learner_profile/views.py rename to openedx/features/learner_profile/views/learner_profile.py index a8d377bf78..4a166d4bc8 100644 --- a/openedx/features/learner_profile/views.py +++ b/openedx/features/learner_profile/views/learner_profile.py @@ -17,6 +17,10 @@ from openedx.core.djangoapps.user_api.errors import UserNotAuthorized, UserNotFo from openedx.core.djangoapps.user_api.preferences.api import get_user_preferences from student.models import User +from .. import SHOW_ACHIEVEMENTS_FLAG + +from learner_achievements import LearnerAchievementsFragmentView + @login_required @require_http_methods(['GET']) @@ -70,7 +74,19 @@ def learner_profile_context(request, profile_username, user_is_staff): preferences_data = get_user_preferences(profile_user, profile_username) + if SHOW_ACHIEVEMENTS_FLAG.is_enabled(): + achievements_fragment = LearnerAchievementsFragmentView().render_to_fragment( + request, + username=profile_user.username, + own_profile=own_profile, + ) + else: + achievements_fragment = None + context = { + 'own_profile': own_profile, + 'achievements_fragment': achievements_fragment, + 'platform_name': configuration_helpers.get_value('platform_name', settings.PLATFORM_NAME), 'data': { 'profile_user_id': profile_user.id, 'default_public_account_fields': settings.ACCOUNT_VISIBILITY_CONFIGURATION['public_fields'], diff --git a/themes/edge.edx.org/lms/static/images/certificates/honor.png b/themes/edge.edx.org/lms/static/images/certificates/honor.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6878175d3a4c882dfc8e1427d1a167bfccf3c8 GIT binary patch literal 6061 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 literal 0 HcmV?d00001 diff --git a/themes/edge.edx.org/lms/static/images/certificates/micromasters-program.png b/themes/edge.edx.org/lms/static/images/certificates/micromasters-program.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1f4c824a4c5a5baced22f7c28769d4aa4d98bf GIT binary patch literal 7625 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 literal 0 HcmV?d00001 diff --git a/themes/edge.edx.org/lms/static/images/certificates/professional.png b/themes/edge.edx.org/lms/static/images/certificates/professional.png new file mode 100644 index 0000000000000000000000000000000000000000..c475ca08f6d288b68756991261ed2f8d023985f3 GIT binary patch literal 6819 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 RVoU%4002ovPDHLkV1iM#N+AFM literal 0 HcmV?d00001 diff --git a/themes/edge.edx.org/lms/static/images/certificates/verified.png b/themes/edge.edx.org/lms/static/images/certificates/verified.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea8365f516df5034cee47a72fc41dabf02af7ee GIT binary patch literal 6052 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 eX=rH74*vrNRqDU}0fspM00009HvQ literal 0 HcmV?d00001 diff --git a/themes/edge.edx.org/lms/static/sass/partials/base/_certificates.scss b/themes/edge.edx.org/lms/static/sass/partials/base/_certificates.scss new file mode 100644 index 0000000000..6fbee80f76 --- /dev/null +++ b/themes/edge.edx.org/lms/static/sass/partials/base/_certificates.scss @@ -0,0 +1,30 @@ +// Certificate overrides for edge.edx.org + +.certificate-card { + // Note: edx.org no longer supports audit certificates, but there are + // legacy certificates that might be rendered. In this situation, they + // are styled as honor certificates. + &.mode-honor, &.mode-audit { + border-color: $honor-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/honor.png'); + } + } + + &.mode-verified { + border-color: $verified-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/verified.png'); + } + } + + &.mode-professional { + border-color: $professional-certificate-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/professional.png'); + } + } +} diff --git a/themes/edge.edx.org/lms/static/sass/partials/base/_theme.scss b/themes/edge.edx.org/lms/static/sass/partials/base/_theme.scss new file mode 100644 index 0000000000..9be47d0644 --- /dev/null +++ b/themes/edge.edx.org/lms/static/sass/partials/base/_theme.scss @@ -0,0 +1,3 @@ +// Theme overrides for edge.edx.org + +@import 'base/certificates'; diff --git a/themes/edx.org/lms/static/images/certificates/honor.png b/themes/edx.org/lms/static/images/certificates/honor.png new file mode 100644 index 0000000000000000000000000000000000000000..3005543f9661e24088b83bd30fcb4fcac2179152 GIT binary patch literal 11628 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 X==a`LSa$#CryhA}6{$K2li>dYRWw&I literal 0 HcmV?d00001 diff --git a/themes/edx.org/lms/static/images/certificates/professional.png b/themes/edx.org/lms/static/images/certificates/professional.png new file mode 100644 index 0000000000000000000000000000000000000000..77cb023476a1610863cc0072b5abf31d7592d33e GIT binary patch literal 13620 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 literal 0 HcmV?d00001 diff --git a/themes/edx.org/lms/static/images/certificates/verified.png b/themes/edx.org/lms/static/images/certificates/verified.png new file mode 100644 index 0000000000000000000000000000000000000000..31787c77d05106f54e3930da72a43dd7a09f6afb GIT binary patch literal 11842 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 literal 0 HcmV?d00001 diff --git a/themes/edx.org/lms/static/sass/partials/base/_certificates.scss b/themes/edx.org/lms/static/sass/partials/base/_certificates.scss new file mode 100644 index 0000000000..8d3c2e1f1d --- /dev/null +++ b/themes/edx.org/lms/static/sass/partials/base/_certificates.scss @@ -0,0 +1,30 @@ +// Certificate overrides for edx.org + +.certificate-card { + // Note: edx.org no longer supports audit certificates, but there are + // legacy certificates that might be rendered. In this situation, they + // are styled as honor certificates. + &.mode-honor, &.mode-audit { + border-color: $honor-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/honor.png'); + } + } + + &.mode-verified { + border-color: $verified-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/verified.png'); + } + } + + &.mode-professional { + border-color: $professional-certificate-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/professional.png'); + } + } +} diff --git a/themes/edx.org/lms/static/sass/partials/base/_theme.scss b/themes/edx.org/lms/static/sass/partials/base/_theme.scss new file mode 100644 index 0000000000..603c4f5244 --- /dev/null +++ b/themes/edx.org/lms/static/sass/partials/base/_theme.scss @@ -0,0 +1,3 @@ +// Theme overrides for edx.org + +@import 'base/certificates'; diff --git a/themes/red-theme/lms/static/images/certificates/red-certificate.png b/themes/red-theme/lms/static/images/certificates/red-certificate.png new file mode 100644 index 0000000000000000000000000000000000000000..ee8f9bc053c167a984dc17ec3332c416e9cb12ed GIT binary patch literal 7797 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 literal 0 HcmV?d00001 diff --git a/themes/red-theme/lms/static/sass/partials/base/_certificates.scss b/themes/red-theme/lms/static/sass/partials/base/_certificates.scss new file mode 100644 index 0000000000..a0ebf3f820 --- /dev/null +++ b/themes/red-theme/lms/static/sass/partials/base/_certificates.scss @@ -0,0 +1,35 @@ +// Certificate overrides for the red theme + +.certificate-card { + &.mode-audit { + border-color: $audit-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/red-certificate.png'); + } + } + + &.mode-honor { + border-color: $honor-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/red-certificate.png'); + } + } + + &.mode-verified { + border-color: $verified-mode-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/red-certificate.png'); + } + } + + &.mode-professional { + border-color: $professional-certificate-color; + + .card-logo { + background-image: url('#{$static-path}/images/certificates/red-certificate.png'); + } + } +} diff --git a/themes/red-theme/lms/static/sass/partials/base/_theme.scss b/themes/red-theme/lms/static/sass/partials/base/_theme.scss new file mode 100644 index 0000000000..ab18a6a002 --- /dev/null +++ b/themes/red-theme/lms/static/sass/partials/base/_theme.scss @@ -0,0 +1,3 @@ +// Theme overrides for the red theme + +@import 'base/certificates';