Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add offer, price and currency fields to CourseRun #2451

Open
7 tasks
igobranco opened this issue Jun 28, 2024 · 5 comments
Open
7 tasks

Add offer, price and currency fields to CourseRun #2451

igobranco opened this issue Jun 28, 2024 · 5 comments
Labels

Comments

@igobranco
Copy link
Collaborator

igobranco commented Jun 28, 2024

Feature Request

Is your feature request related to a problem or unsupported use case? Please describe.

Extracted from discussion: #2445 (comment)

Add CourseRun fields:

  • offer enumeration of: Free, Partially Free, Subscription and Paid. Its default value should be read from a Django setting.
  • priceCurrency - The currency of the price of the award, in ISO 4217 currency format (3 letter code)
  • price

The offer field description:

  • Free: All lectures, assignments, and tests must be available without cost for all users. The entire course can be completed without cost.
  • Partially Free: More than half of the course can be completed for free (for example, all lectures are free of charge, but assignments are paid).
  • Subscription: The user must be a subscriber or paid member in order to complete the entire course.
  • Paid: The user must pay to complete the course.

Reference: https://developers.google.com/search/docs/appearance/structured-data/course-info#guidelines

Tasks:

  • Add offer, price and currency fields to CourseRun;
  • Add offers, priceCurrency and price to RDFa on course detail page/screen;
  • Make offer, price and currency editable using course run sync API;
  • Show an additional message explaining the offer that include its price if applicable;
  • Add new course offer search filter;
  • Add new course price search filter;
  • Different course glimpse according to their offer state - paid courses with different layout than free courses;

Describe the solution you'd like
Add those fields, so we can synchronize them directly from our LMS, in our case, Open edX. The sync external function would translate the Open edX course modes to the offer LMS agnostic (more standard) approach of Richie.

Describe alternatives you've considered
None, if we want to have the offers, price and currency on RDFa on course pages we need to have that values directly on Richie database. The alternative to show the prices, it could be read from Open edX API, but it won't resolve the RDFa Google Search Console problem.

Discovery, Documentation, Adoption, Migration Strategy
The CourseRun editors could edit that information to better explain how this course is sell and its price (if applicable).

Do you want to work on it through a Pull Request?

@JoaoGarcao is going to start to work on this.

FYI @sandroscosta @jbpenrath

@jbpenrath
Copy link
Member

It looks good to me. About the search filter, I think we should think about returning a price range for the course. In next weeks, we would like to customize course glimpse according to their offer state. Paid courses will have a different layout than free courses.

About this change, it could interesting to display course price on the glimpse but as we plan to add price field on the CourseRun, if there are several CourseRun with different prices, we should return a price range to display IMO.

@igobranco
Copy link
Collaborator Author

@jbpenrath

It looks good to me. About the search filter, I think we should think about returning a price range for the course.

Agree! Using a slider? Or using a combo box with predefined ranges? I think it would be better to have a numeric slider.

In next weeks, we would like to customize course glimpse according to their offer state. Paid courses will have a different layout than free courses.

I don't know if @JoaoGarcao is quick enough... now is working for us full time until mid August, but he is only a student. And he still needs to review #2428. Its focus is closing the #2428. So he can deliver something to show to his Teacher.
I think in a couple of weeks ha can have the model and the admin screen, the 1st task of "Add offer, price and currency fields to CourseRun;". Let's see...
But, if you are pressure to have this feature, please go ahead with the 1st task and @JoaoGarcao can help with the others tasks, like RDFa fix and API. This 2 tasks, I've worked in the past, so I can help him more easily.

About this change, it could interesting to display course price on the glimpse but as we plan to add price field on the CourseRun, if there are several CourseRun with different prices, we should return a price range to display IMO.

Personally, I don't like the course price value on the course glimpse, because people can be scared with the prices, even before read the course description. I also didn't find any major learning platform with prices on the course glimpse.... but this is only IMO. For me on Richie upstream level we should have (almost too) many information on course glimpse. On each downstream site can easily show only (hide using CSS) what it's relevant to that instance. Another think we could add to course glimpse is the course effort - I've saw that info on other platforms... In the past we were hidden the course glimpse footer.

@jbpenrath
Copy link
Member

It looks good to me. About the search filter, I think we should think about returning a price range for the course.

Agree! Using a slider? Or using a combo box with predefined ranges? I think it would be better to have a numeric slider.

Yup, I'll imagine to use a slider.

In next weeks, we would like to customize course glimpse according to their offer state. Paid courses will have a different layout than free courses.

I don't know if @JoaoGarcao is quick enough... now is working for us full time until mid August, but he is only a student. And he still needs to review #2428. Its focus is closing the #2428. So he can deliver something to show to his Teacher. I think in a couple of weeks ha can have the model and the admin screen, the 1st task of "Add offer, price and currency fields to CourseRun;". Let's see... But, if you are pressure to have this feature, please go ahead with the 1st task and @JoaoGarcao can help with the others tasks, like RDFa fix and API. This 2 tasks, I've worked in the past, so I can help him more easily.

It's not our current priority we should ready for that for september. But no pressure, I think we could split this task in two steps. First implement all the stuff related to model and then update search logic.

About this change, it could interesting to display course price on the glimpse but as we plan to add price field on the CourseRun, if there are several CourseRun with different prices, we should return a price range to display IMO.

Personally, I don't like the course price value on the course glimpse, because people can be scared with the prices, even before read the course description. I also didn't find any major learning platform with prices on the course glimpse.... but this is only IMO. For me on Richie upstream level we should have (almost too) many information on course glimpse. On each downstream site can easily show only (hide using CSS) what it's relevant to that instance. Another think we could add to course glimpse is the course effort - I've saw that info on other platforms... In the past we were hidden the course glimpse footer.

That's make sense indeed, from my side, I should have some internal discussion to validate how we want to customize course glimpse to distinguish free and fee courses.

@igobranco
Copy link
Collaborator Author

Related to: #1907

@igobranco
Copy link
Collaborator Author

Todays the NAU team has reviewed the requirements.
After a couple of iterations we think it's best to improve the model of the #2466 to be even more inspired on https://schema.org/CourseInstance.

On CourseRun Model add the fields:

  • Offer category: Free/Partially Free/Subscription/Paid
  • Offer price: just the number, if previous is Paid
  • Certificate offer: Free/Subscription/Paid
  • Certificate price: just the number, if previous is Paid

The currency, Euro or Dollar, etc. should be only a setting (or a couple of settings).

All 4 fields needs to be optional (blank a True), no information is different than having a default value.

We need a Feature Toggle to show or hide those 4 new fields on the admin screen that allows to edit the CourseRun. So if an Richie installation doesn't want to edit this information, it can hide them completely. If an installation didn't write this information the rest of the system shouldn't show it.

How to show the Offer, its price, certificate and its price?
On the Course detail, before the enrollment action button, add the 4 fields, if they are defined.
Hide each field if they are null or blank.
image

On NAU installation we are going to have this implemented as:

Django Course Run Model Course detail page, field name Honor Verified+Audit Subcription Verified Verified+Honor
Offer category Enrollment Free Partially Free - Paid Free
Offer price Enrollment Price - - - 10 € -
Certificate offer Certification Free Paid - Free Paid
Certificate price Certification Price - 10 € - - 10 €
Open edX didn't support

This conversion is going to be implemented on: https://github.com/fccn/richie-openedx-sync
So we have a separation between Open edX and Richie. And Richie supports all the business model that Schema.org/CourseInstance supports.

Schema.org/CourseInstance RDFa information Offer category, price, certificate offer and its price is on Course level and not on Course Run level. So I think we need to have this metadata implemented on Django level and not on the React code.
We need to have a Course model method, to find the best Course Run to show the Offer category, price, etc. Skipping the course runs that have the Catalog Visibility has hidden.

FYI @sandroscosta @Tiago-Salles @cabralpedrofccn @jbpenrath

@Tiago-Salles is going to work on this feature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants