diff --git a/lms/djangoapps/learner_dashboard/programs.py b/lms/djangoapps/learner_dashboard/programs.py index 5ca6c548f037bca5b1a4310b32de18861868cc91..e2510d42fe9c88d4faf52c0a705f68b4959a15fd 100644 --- a/lms/djangoapps/learner_dashboard/programs.py +++ b/lms/djangoapps/learner_dashboard/programs.py @@ -48,7 +48,7 @@ class ProgramsFragmentView(EdxFragmentView): meter = ProgramProgressMeter(request.site, user, mobile_only=mobile_only) context = { - 'marketing_url': get_program_marketing_url(programs_config), + 'marketing_url': get_program_marketing_url(programs_config, mobile_only), 'programs': meter.engaged_programs, 'progress': meter.progress() } diff --git a/lms/djangoapps/learner_dashboard/tests/test_programs.py b/lms/djangoapps/learner_dashboard/tests/test_programs.py index 1a63165790d792f9c54611c08bc4dce4b5acaa06..f52459f0bd0ca54786995f695dead9983369acad 100644 --- a/lms/djangoapps/learner_dashboard/tests/test_programs.py +++ b/lms/djangoapps/learner_dashboard/tests/test_programs.py @@ -162,6 +162,18 @@ class TestProgramListing(ProgramsApiConfigMixin, SharedModuleStoreTestCase): response = self.client.get(self.url) self.assertContains(response, marketing_root) + def test_mobile_marketing_url(self, mock_get_programs): + """ + Verify that a link to a programs marketing for mobile appears in the response. + """ + self.create_programs_config(marketing_path='bar') + mock_get_programs.return_value = self.data + + mobile_marketing_url = 'edxapp://course?programs' + + response = self.client.get('/dashboard/programs_fragment/?mobile_only=true') + self.assertContains(response, mobile_marketing_url) + def test_links_to_detail_pages(self, mock_get_programs): """ Verify that links to detail pages are present. diff --git a/openedx/core/djangoapps/programs/utils.py b/openedx/core/djangoapps/programs/utils.py index f5fae79540c7929d1439d79484fbdb968454462c..5624871d9e511b0f21fbbdbc871f953cdbd6aae7 100644 --- a/openedx/core/djangoapps/programs/utils.py +++ b/openedx/core/djangoapps/programs/utils.py @@ -45,9 +45,14 @@ DEFAULT_ENROLLMENT_START_DATE = datetime.datetime(1900, 1, 1, tzinfo=utc) log = logging.getLogger(__name__) -def get_program_marketing_url(programs_config): +def get_program_marketing_url(programs_config, mobile_only=False): """Build a URL used to link to programs on the marketing site.""" - return urljoin(settings.MKTG_URLS.get('ROOT'), programs_config.marketing_path).rstrip('/') + if mobile_only: + marketing_url = 'edxapp://course?programs' + else: + marketing_url = urljoin(settings.MKTG_URLS.get('ROOT'), programs_config.marketing_path).rstrip('/') + + return marketing_url def attach_program_detail_url(programs, mobile_only=False):