mitodl/mitxpro

Show Learn More button for internal courses

arslanashraf7 opened this issue · 3 comments

As a staff, I'd like to be able to mimic the behavior of external courseware in internal courses. This would allow us to take the users to other MIT applications and after payment, enroll the users in the internal courseware in xPRO.

Currently, this has been done like below:

e.g. For a program

  1. Have created two programs in Django, with different readable IDs
  2. Created two CMS pages, Internal(Draft) and external (Live) to mimic this behaviour
    So the user sees the external page, and upon payment from a third party, there are then manually enrolled in the internal courseware in Django.

Designs and Mockups

Acceptance Criteria:

  • Show Learn More instead of Enroll Now button for the internal course and program pages and take the user to an external website
  • Make sure that the certificate generation, and enrollment works normally

We discussed a couple of approaches for this:

We recently added external_marketing_url in CourseRun model for the sake of saving external marketing URLs for external courseware.

Approach 1:

We can also use external_marketing_url field from internal courseware runs to mimic the behavior of Learn More button because we would need a URL to go to when we want internal courseware to take the user to a third party.

Approach 2:
Contrary to Approach 1, we can add a separate new field e.g. external_url in Internal Courseware pages(CoursePage and ProgramPage) only and use that as an override to show Learn More button and take the user to another website.

Approach 3:

We remove recently external_marketing_url from CourseRun model and take it to Courseware page models in CMS. So the external marketing URL would be added through CMS only. This would assume that the external URL is on the Course level and not on CourseRun level. The run level would mean the possibility of different external URLs with different Runs.

Approach 3 seems most reasonable to me at this point.

@pdpinch @cachob Let me know what you think about the above approaches or have any questions.

I agree. Approach 3 fits best with the way the external_marketing_url is used on the site: a course About page links to another site for marketing purposes.

This will also move the marketing URL up to the course level in the course API, and the program level in the program API, which is appropriate.

closed via #2628