diff --git a/lms/djangoapps/learner_dashboard/programs.py b/lms/djangoapps/learner_dashboard/programs.py index ba0ecf0a87..62fe9cc1e4 100644 --- a/lms/djangoapps/learner_dashboard/programs.py +++ b/lms/djangoapps/learner_dashboard/programs.py @@ -12,6 +12,7 @@ from web_fragments.fragment import Fragment from lms.djangoapps.commerce.utils import EcommerceService from lms.djangoapps.learner_dashboard.utils import FAKE_COURSE_KEY, strip_course_id +from openedx.core.djangoapps.catalog.constants import PathwayType from openedx.core.djangoapps.catalog.utils import get_pathways from openedx.core.djangoapps.credentials.utils import get_credentials_records_url from openedx.core.djangoapps.plugin_api.views import EdxFragmentView @@ -107,12 +108,16 @@ class ProgramDetailsFragmentView(EdxFragmentView): if not certificate_data: program_record_url = None - pathways = [] + industry_pathways = [] + credit_pathways = [] try: for pathway_id in program_data['pathway_ids']: pathway = get_pathways(request.site, pathway_id) if pathway and pathway['email']: - pathways.append(pathway) + if pathway['pathway_type'] == PathwayType.CREDIT.value: + credit_pathways.append(pathway) + elif pathway['pathway_type'] == PathwayType.INDUSTRY.value: + industry_pathways.append(pathway) # if pathway caching did not complete fully (no pathway_ids) except KeyError: pass @@ -133,7 +138,8 @@ class ProgramDetailsFragmentView(EdxFragmentView): 'program_data': program_data, 'course_data': course_data, 'certificate_data': certificate_data, - 'pathways': pathways, + 'industry_pathways': industry_pathways, + 'credit_pathways': credit_pathways, } html = render_to_string('learner_dashboard/program_details_fragment.html', context) diff --git a/lms/djangoapps/learner_dashboard/tests/test_programs.py b/lms/djangoapps/learner_dashboard/tests/test_programs.py index 614a09b3fe..a888db14eb 100644 --- a/lms/djangoapps/learner_dashboard/tests/test_programs.py +++ b/lms/djangoapps/learner_dashboard/tests/test_programs.py @@ -14,6 +14,7 @@ from django.urls import reverse, reverse_lazy from django.test import override_settings from lms.envs.test import CREDENTIALS_PUBLIC_SERVICE_URL +from openedx.core.djangoapps.catalog.constants import PathwayType from openedx.core.djangoapps.catalog.tests.factories import ( PathwayFactory, CourseFactory, @@ -32,6 +33,17 @@ PROGRAMS_UTILS_MODULE = 'openedx.core.djangoapps.programs.utils' PROGRAMS_MODULE = 'lms.djangoapps.learner_dashboard.programs' +def load_serialized_data(response, key): + """ + Extract and deserialize serialized data from the response. + """ + pattern = re.compile(r'{key}: (?P\[.*\])'.format(key=key)) + match = pattern.search(response.content) + serialized = match.group('data') + + return json.loads(serialized) + + @skip_unless_lms @override_settings(MKTG_URLS={'ROOT': 'https://www.example.com'}) @mock.patch(PROGRAMS_UTILS_MODULE + '.get_programs') @@ -68,16 +80,6 @@ class TestProgramListing(ProgramsApiConfigMixin, SharedModuleStoreTestCase): """ return program['title'] - def load_serialized_data(self, response, key): - """ - Extract and deserialize serialized data from the response. - """ - pattern = re.compile(r'{key}: (?P\[.*\])'.format(key=key)) - match = pattern.search(response.content) - serialized = match.group('data') - - return json.loads(serialized) - def assert_dict_contains_subset(self, superset, subset): """ Verify that the dict superset contains the dict subset. @@ -140,7 +142,7 @@ class TestProgramListing(ProgramsApiConfigMixin, SharedModuleStoreTestCase): CourseEnrollmentFactory(user=self.user, course_id=self.course.id) response = self.client.get(self.url) - actual = self.load_serialized_data(response, 'programsData') + actual = load_serialized_data(response, 'programsData') actual = sorted(actual, key=self.program_sort_key) for index, actual_program in enumerate(actual): @@ -169,7 +171,7 @@ class TestProgramListing(ProgramsApiConfigMixin, SharedModuleStoreTestCase): CourseEnrollmentFactory(user=self.user, course_id=self.course.id) response = self.client.get(self.url) - actual = self.load_serialized_data(response, 'programsData') + actual = load_serialized_data(response, 'programsData') actual = sorted(actual, key=self.program_sort_key) for index, actual_program in enumerate(actual): @@ -227,8 +229,20 @@ class TestProgramDetails(ProgramsApiConfigMixin, CatalogIntegrationMixin, Shared ) def assert_pathway_data_present(self, response): + """ Verify that the correct pathway data is present. """ + self.assertContains(response, 'industryPathways') self.assertContains(response, 'creditPathways') - self.assertContains(response, self.pathway_data['name']) + + industry_pathways = load_serialized_data(response, 'industryPathways') + credit_pathways = load_serialized_data(response, 'creditPathways') + if self.pathway_data['pathway_type'] == PathwayType.CREDIT.value: + credit_pathway, = credit_pathways # Verify that there is only one credit pathway + self.assertEqual(self.pathway_data, credit_pathway) + self.assertEqual([], industry_pathways) + elif self.pathway_data['pathway_type'] == PathwayType.INDUSTRY.value: + industry_pathway, = industry_pathways # Verify that there is only one industry pathway + self.assertEqual(self.pathway_data, industry_pathway) + self.assertEqual([], credit_pathways) def test_login_required(self, mock_get_programs, mock_get_pathways): """ diff --git a/lms/static/js/learner_dashboard/spec/program_details_sidebar_view_spec.js b/lms/static/js/learner_dashboard/spec/program_details_sidebar_view_spec.js index db1f52fe9a..08ccf62acd 100644 --- a/lms/static/js/learner_dashboard/spec/program_details_sidebar_view_spec.js +++ b/lms/static/js/learner_dashboard/spec/program_details_sidebar_view_spec.js @@ -15,6 +15,7 @@ describe('Program Progress View', () => { "in_progress": [], "uuid": "988e7ea8-f5e2-4d2e-998a-eae4ad3af322", "not_started": [{"owners": [{"uuid": "c484a523-d396-4aff-90f4-bb7e82e16bf6", "key": "DelftX", "name": "Delft University of Technology (TU Delft)"}], "uuid": "51275d00-1f3f-462f-8231-ce42821cc1dd", "title": "Solar Energy", "image": {"src": "https://stage.edx.org/sites/default/files/course/image/promoted/solar-energy_378x225.jpg", "height": null, "description": null, "width": null}, "key": "DelftX+ET3034TUx", "course_runs": [{"upgrade_url": null, "image": {"src": "https://stage.edx.org/sites/default/files/course/image/promoted/solar-energy_378x225.jpg", "height": null, "description": null, "width": null}, "max_effort": null, "is_enrollment_open": true, "course": "DelftX+ET3034TUx", "content_language": null, "eligible_for_financial_aid": true, "seats": [{"sku": "E433FA8", "credit_hours": null, "price": "0.00", "currency": "USD", "upgrade_deadline": null, "credit_provider": null, "type": "honor"}], "course_url": "/courses/DelftX/ET3034TUx/2013_Fall/", "availability": "Archived", "transcript_languages": [], "staff": [{"family_name": "Smets", "uuid": "6078b3dd-ade4-457d-9262-7439a5f4b07e", "bio": "Dr. Arno H.M. Smets is Professor in Solar Energy in the Photovoltaics Material and Devices group at the faculty of Electrical Engineering, Mathematics and Computer Science, Delft University of Technology. From 2005-2010 he worked at the Research Center for Photovoltaics at the National Institute of Advanced Industrial Science and Technology (AIST) in Tsukuba Japan. His research work is focused on processing of thin silicon films, innovative materials and new concepts for photovoltaic applications. He is lecturer for BSc and MSc courses on Photovoltaics and Sustainable Energy at TU Delft. His online edX course on Solar Energy attracted over 150,000 students worldwide. He is co-author of the book \u003cem\u003e\u201cSolar Energy. The physics and engineering of photovoltaic conversion technologies and systems.\u201d\u003c/em\u003e", "profile_image": {}, "profile_image_url": "https://stage.edx.org/sites/default/files/person/image/arno-smets_x110.jpg", "given_name": "Arno", "urls": {"blog": null, "twitter": null, "facebook": null}, "position": {"organization_name": "Delft University of Technology", "title": "Professor, Electrical Engineering, Mathematics and Computer Science"}, "works": [], "slug": "arno-smets"}], "announcement": "2013-05-08T00:00:00Z", "end": "2013-12-06T10:30:00Z", "uuid": "f33a9660-b5d0-47a9-9bfa-a326d9ed4ef2", "title": "Solar Energy", "certificate_url": null, "enrollment_start": null, "start": "2013-09-16T04:00:00Z", "min_effort": null, "short_description": "Discover the power of solar energy and design a complete photovoltaic system.", "hidden": false, "level_type": null, "type": "honor", "enrollment_open_date": "Jan 01, 1900", "marketing_url": "https://stage.edx.org/course/solar-energy-delftx-et3034tux", "is_course_ended": true, "instructors": [], "full_description": "", "key": "DelftX/ET3034TUx/2013_Fall", "enrollment_end": null, "reporting_type": "mooc", "advertised_start": null, "mobile_available": false, "modified": "2017-04-06T12:26:54.345710Z", "is_enrolled": false, "pacing_type": "instructor_paced", "video": {"src": "http://www.youtube.com/watch?v=LLiNzrIubF0", "image": null, "description": null}}]}, {"owners": [{"uuid": "c484a523-d396-4aff-90f4-bb7e82e16bf6", "key": "DelftX", "name": "Delft University of Technology (TU Delft)"}], "uuid": "7c430382-d477-4bac-9c29-f36c24f1935f", "title": "Drinking Water Treatment", "image": {"src": "https://stage.edx.org/sites/default/files/course/image/promoted/drinking_water_home_378x225.jpg", "height": null, "description": null, "width": null}, "key": "DelftX+CTB3365DWx", "course_runs": [{"upgrade_url": null, "image": {"src": "https://stage.edx.org/sites/default/files/course/image/promoted/drinking_water_home_378x225.jpg", "height": null, "description": null, "width": null}, "max_effort": null, "is_enrollment_open": true, "course": "DelftX+CTB3365DWx", "content_language": "en-us", "eligible_for_financial_aid": true, "seats": [{"sku": "74AC06B", "credit_hours": 100, "price": "15.00", "currency": "USD", "upgrade_deadline": "2016-04-30T00:00:00Z", "credit_provider": "mit", "type": "credit"}, {"sku": "0BBAE34", "credit_hours": null, "price": "0.00", "currency": "USD", "upgrade_deadline": null, "credit_provider": null, "type": "honor"}, {"sku": "8E52FAE", "credit_hours": null, "price": "10.00", "currency": "USD", "upgrade_deadline": "2016-03-25T01:06:00Z", "credit_provider": null, "type": "verified"}], "course_url": "/courses/course-v1:DelftX+CTB3365DWx+1T2016/", "availability": "Current", "transcript_languages": ["en-us"], "staff": [{"family_name": "Rietveld", "uuid": "1b70c71d-20cc-487d-be10-4b31baeff559", "bio": "\u003cp\u003eLuuk Rietveld is professor of Urban Water Cycle Technology at Delft University of Technology. After finalizing his studies in Civil Engineering at Delft University of Technology in 1987, he worked, until 1991, as lecturer/researcher in Sanitary Engineering at the Eduardo Mondlane University, Maputo, Mozambique. Between 1991 and 1994, he was employed at the Management Centre for International Co-operation, and since 1994 he has had an appointment at the Department of Water Management of Delft University of Technology. In 2005, he defended his PhD thesis entitled \"Improving Operation of Drinking Water Treatment through Modelling\".\u003c/p\u003e\n\u003cp\u003eLuuk Rietveld\u2019s main research interests are modelling and optimisation of processes in the urban water cycle, and technological innovations in drinking water treatment and water reclamation for industrial purposes. In addition, he has extensive experience in education, in various cultural contexts, and is interested to explore the use of new ways of teaching through activated and blended learning and MOOCs.\u003c/p\u003e", "profile_image": {}, "profile_image_url": "https://stage.edx.org/sites/default/files/person/image/rietveld_luuk_110p.jpg", "given_name": "Luuk", "urls": {"blog": null, "twitter": null, "facebook": null}, "position": null, "works": [], "slug": "luuk-rietveld-0"}, {"family_name": "van Halem", "uuid": "4ce9ef2a-19e9-46de-9f34-5d755f26736a", "bio": "Doris van Halem is a tenure track Assistant Professor within the Department of Water Management, section Sanitary Engineering of Delft University of Technology. She graduated from Delft University of Technology in Civil Engineering and Geosciences with a cum laude MSc degree (2007). During her studies she developed an interest in global drinking water challenges, illustrated by her internships in Sri Lanka and Benin, resulting in an MSc thesis \u201cCeramic silver impregnated pot filter for household drinking water treatment in developing countries\u201d. In 2011 she completed her PhD research (with honours) on subsurface iron and arsenic removal for drinking water supply in Bangladesh under the guidance of prof. J.C. van Dijk (TU Delft) and prof. dr. G.L. Amy (Unesco-IHE). Currently she supervises BSc, MSc and PhD students, focusing on inorganic constituent behaviour and trace compound removal during soil passage and drinking water treatment - with a particular interest in smart, pro-poor drinking water solutions.", "profile_image": {}, "profile_image_url": "https://stage.edx.org/sites/default/files/person/image/doris_van_halem_1.jpg", "given_name": "Doris", "urls": {"blog": null, "twitter": null, "facebook": null}, "position": {"organization_name": "Delft University of Technology", "title": "Assistant Professor, Sanitary Engineering"}, "works": [], "slug": "doris-van-halem-0"}, {"family_name": "Grefte", "uuid": "463c3f1a-95fc-45aa-b7c0-d01b14126f02", "bio": "Anke Grefte is project manager open, online and blended education for the Faculty of Civil Engineering and Geosciences, Delft University of Technology. She graduated from Delft University of Technology in Civil Engineering with a master\u2019s thesis entitled \"Behaviour of particles in a drinking water distribution network; test rig results\". For this thesis Anke was awarded the Gijs Oskam award for best young researcher. In November 2013, she finished her Ph.D. research on the removal of Natural Organic Matter (NOM) fractions by ion exchange and the impact on drinking water treatment processes and biological stability.", "profile_image": {}, "profile_image_url": "https://stage.edx.org/sites/default/files/person/image/grefte_anke_110p.jpg", "given_name": "Anke", "urls": {"blog": null, "twitter": null, "facebook": null}, "position": null, "works": [], "slug": "anke-grefte-0"}], "announcement": "2015-07-24T00:00:00Z", "end": "2017-07-20T21:30:00Z", "uuid": "a36ed16a-6637-11e6-a8e3-22000bdde520", "title": "Introduction to Drinking Water Treatment", "certificate_url": null, "enrollment_start": "2016-06-15T00:00:00Z", "start": "2016-01-12T05:00:00Z", "min_effort": null, "short_description": "Learn about urban water services, focusing on conventional technologies for drinking water treatment.", "hidden": false, "level_type": "Intermediate", "type": "credit", "enrollment_open_date": "Jun 15, 2016", "marketing_url": "https://stage.edx.org/course/introduction-drinking-water-treatment-delftx-ctb3365dwx-0", "is_course_ended": false, "instructors": [], "full_description": "\u003cp\u003eThis course focuses on conventional technologies for drinking water treatment. Unit processes, involved in the treatment chain, are discussed as well as the physical, chemical and biological processes involved. The emphasis is on the effect of treatment on water quality and the dimensions of the unit processes in the treatment chain. After the course one should be able to recognise the process units, describe their function, and make basic calculations for a preliminary design of a drinking water treatment plant.\u003c/p\u003e\n\u003cp\u003eThe course consists of 4 modules:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eIntroduction to drinking water treatment. In this module you learn to describe the important disciplines, schemes and evaluation criteria involved in the design phase.\u003c/li\u003e\n\u003cli\u003eWater quality. In this module you learn to identify the drinking water quality parameters to be improved and explain what treatment train or scheme is needed.\u003c/li\u003e\n\u003cli\u003eGroundwater treatment. In this module you learn to calculate the dimensions of the groundwater treatment processes and draw groundwater treatment schemes.\u003c/li\u003e\n\u003cli\u003eSurface water treatment. In this module you learn to calculate the dimensions of the surface water treatment processes and draw surface water treatment schemes.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThis course in combination with the courses \"\u003ca href=\"https://www.edx.org/course/introduction-water-climate-delftx-ctb3300wcx-0\"\u003eIntroduction to Water and Climate\u003c/a\u003e\" and \"\u003ca href=\"https://www.edx.org/course/introduction-treatment-urban-sewage-delftx-ctb3365stx\"\u003eIntroduction to the Treatment of Urban Sewage\u003c/a\u003e\" forms the Water XSeries, by DelftX.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eLICENSE\u003c/em\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eThe course materials of this course are Copyright Delft University of Technology and are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) 4.0 International License.\u003c/em\u003e\u003c/p\u003e", "key": "course-v1:DelftX+CTB3365DWx+1T2016", "enrollment_end": null, "reporting_type": "mooc", "advertised_start": null, "mobile_available": true, "modified": "2017-04-06T12:26:52.652365Z", "is_enrolled": false, "pacing_type": "instructor_paced", "video": {"src": "http://www.youtube.com/watch?v=0xPZXLHtRJw", "image": {"src": "https://stage.edx.org/sites/default/files/course/image/featured-card/h20_new_378x225.jpg", "width": null, "description": null, "height": null}, "description": null}}]}]}, creditPathways: [{"org_name": "Bryant, Stein and Baird", "email": "paul70@yahoo.com", "name": "Give vote human.", "program_uuids": ["988e7ea8-f5e2-4d2e-998a-eae4ad3af322"], "description": "After style school argue.", "id": 95, "destination_url": "https://www.garrison.com/"}], + industryPathways: [{"org_name": "Industries'r'us", "email": "business@yahoo.com", "name": "Industrial Professionals", "program_uuids": ["988e7ea8-f5e2-4d2e-998a-eae4ad3af322"], "description": "Sawfish.", "id": 96, "destination_url": "https://www.test-example.com/"}], certificateData: [ { "url": "/certificates/a37c59143d9d422eb6ab11e1053b8eb5", "type": "course", "title": "Introduction to Water and Climate" @@ -54,6 +55,7 @@ describe('Program Progress View', () => { courseModel: courseData, certificateCollection, programRecordUrl: '/foo/bar', + industryPathways: data.industryPathways, creditPathways: data.creditPathways, }); @@ -126,24 +128,34 @@ describe('Program Progress View', () => { expect(view.$('.js-course-certificates')).toBeEmpty(); }); - it('should render the additional learning opportunities section', () => { + it('should render the additional credit opportunities section', () => { view = initView(); - expect(view.$('.program-pathways .divider-heading').html()).toEqual('Additional Learning Opportunities'); - expect(view.$('.pathway-wrapper')).toHaveLength(data.creditPathways.length); - expect(view.$('.pathway-link').attr('href')).toEqual(data.creditPathways[0].destination_url); + expect(view.$('.program-credit-pathways .divider-heading').html()).toEqual('Additional Credit Opportunities'); + expect(view.$('.program-credit-pathways .pathway-wrapper')).toHaveLength(data.creditPathways.length); + expect(view.$('.program-credit-pathways .pathway-link').attr('href')).toEqual(data.creditPathways[0].destination_url); }); - it('should not render the additional learning opportunities section if no pathways exist', () => { + it('should render the additional professional opportunities section', () => { + view = initView(); + + expect(view.$('.program-industry-pathways .divider-heading').html()).toEqual('Additional Professional Opportunities'); + expect(view.$('.program-industry-pathways .pathway-wrapper')).toHaveLength(data.industryPathways.length); + expect(view.$('.program-industry-pathways .pathway-link').attr('href')).toEqual(data.industryPathways[0].destination_url); + }); + + it('should not render the additional opportunities sections if no pathways exist', () => { const emptyView = new ProgramSidebarView({ el: '.js-program-sidebar', model: programModel, courseModel: courseData, certificateCollection, programRecordUrl: '/foo/bar', + industryPathways: [], creditPathways: [], }); - expect(emptyView.$('.program-pathways .divider-heading')).toHaveLength(0); + expect(emptyView.$('.program-credit-pathways .divider-heading')).toHaveLength(0); + expect(emptyView.$('.program-industry-pathways .divider-heading')).toHaveLength(0); }); }); diff --git a/lms/static/js/learner_dashboard/spec/program_details_view_spec.js b/lms/static/js/learner_dashboard/spec/program_details_view_spec.js index 2bdb87c2a8..055cb9d90b 100644 --- a/lms/static/js/learner_dashboard/spec/program_details_view_spec.js +++ b/lms/static/js/learner_dashboard/spec/program_details_view_spec.js @@ -485,6 +485,17 @@ describe('Program Details Header View', () => { destination_url: 'edx.org', }, ], + industryPathways: [ + { + org_name: 'Test Org Name', + email: 'test@test.com', + name: 'Name of Test Pathway', + program_uuids: ['0ffff5d6-0177-4690-9a48-aa2fecf94610'], + description: 'Test industry pathway description', + id: 3, + destination_url: 'industry.com', + }, + ], }; const data = options.programData; diff --git a/lms/static/js/learner_dashboard/views/program_details_sidebar_view.js b/lms/static/js/learner_dashboard/views/program_details_sidebar_view.js index 8d9e422c63..720bf2a7e1 100644 --- a/lms/static/js/learner_dashboard/views/program_details_sidebar_view.js +++ b/lms/static/js/learner_dashboard/views/program_details_sidebar_view.js @@ -14,7 +14,7 @@ class ProgramDetailsSidebarView extends Backbone.View { constructor(options) { const defaults = { events: { - 'click .sidebar-button': 'trackPathwayClicked', + 'click .pathway-button': 'trackPathwayClicked', }, }; super(Object.assign({}, defaults, options)); @@ -26,6 +26,7 @@ class ProgramDetailsSidebarView extends Backbone.View { this.certificateCollection = options.certificateCollection || []; this.programCertificate = this.getProgramCertificate(); this.programRecordUrl = options.programRecordUrl; + this.industryPathways = options.industryPathways; this.creditPathways = options.creditPathways; this.programModel = options.model; this.render(); @@ -36,6 +37,7 @@ class ProgramDetailsSidebarView extends Backbone.View { programCertificate: this.programCertificate ? this.programCertificate.toJSON() : {}, programRecordUrl: this.programRecordUrl, + industryPathways: this.industryPathways, creditPathways: this.creditPathways, }); @@ -94,6 +96,7 @@ class ProgramDetailsSidebarView extends Backbone.View { trackPathwayClicked(event) { var button = event.currentTarget; + window.analytics.track('edx.bi.dashboard.program.pathway.clicked', { category: 'pathways', // Credentials uses the uuid without dashes so we are converting here for consistency diff --git a/lms/static/js/learner_dashboard/views/program_details_view.js b/lms/static/js/learner_dashboard/views/program_details_view.js index df08edaff6..bd8575c05e 100644 --- a/lms/static/js/learner_dashboard/views/program_details_view.js +++ b/lms/static/js/learner_dashboard/views/program_details_view.js @@ -113,6 +113,7 @@ class ProgramDetailsView extends Backbone.View { courseModel: this.courseData, certificateCollection: this.certificateCollection, programRecordUrl: this.options.urls.program_record_url, + industryPathways: this.options.industryPathways, creditPathways: this.options.creditPathways, }); } diff --git a/lms/static/sass/views/_program-details.scss b/lms/static/sass/views/_program-details.scss index ef17728a94..1cbc1277ed 100644 --- a/lms/static/sass/views/_program-details.scss +++ b/lms/static/sass/views/_program-details.scss @@ -677,6 +677,10 @@ $btn-color-primary: palette(primary, dark); } } + .program-credit-pathways { + padding-bottom: 2em; + } + .pathway-wrapper { @include margin-left($baseline*0.75); @@ -698,6 +702,10 @@ $btn-color-primary: palette(primary, dark); } } + .pathway-wrapper:last-child { + border-bottom: none; + } + @media (min-width: $bp-screen-md) { @include float(right); diff --git a/lms/templates/learner_dashboard/program_details_fragment.html b/lms/templates/learner_dashboard/program_details_fragment.html index ea1bc0037e..f686c4f943 100644 --- a/lms/templates/learner_dashboard/program_details_fragment.html +++ b/lms/templates/learner_dashboard/program_details_fragment.html @@ -18,7 +18,8 @@ ProgramDetailsFactory({ certificateData: ${certificate_data | n, dump_js_escaped_json}, urls: ${urls | n, dump_js_escaped_json}, userPreferences: ${user_preferences | n, dump_js_escaped_json}, - creditPathways: ${pathways | n, dump_js_escaped_json}, + industryPathways: ${industry_pathways | n, dump_js_escaped_json}, + creditPathways: ${credit_pathways | n, dump_js_escaped_json}, }); diff --git a/lms/templates/learner_dashboard/program_details_sidebar.underscore b/lms/templates/learner_dashboard/program_details_sidebar.underscore index e2eeeeff0b..40ab542c0d 100644 --- a/lms/templates/learner_dashboard/program_details_sidebar.underscore +++ b/lms/templates/learner_dashboard/program_details_sidebar.underscore @@ -22,8 +22,8 @@ <% } %> <% if (creditPathways.length > 0) { %> -