Real-Life Use Cases for Open edX Filters#

Overview#

As mentioned in the Hooks Extension Framework, Open edX Filters filters can be used when implementing features meant to modify the application’s behavior, navigation, or user interaction.

To illustrate the different solutions that can be implemented with this approach, we have compiled a list of implementations built using Open edX Filters to address various challenges. The goal of this list is to serve as a reference for extension developers to implement their own solutions based on the community’s experience.

Use Cases#

The following list of real-life use cases showcases the different ways Open edX Filters can be used to facilitate the modification of the Open edX platform behavior without modifying the codebase, only through configurations and feature implementation in plugins.

Reusable LTI Configuration#

When a course creator adds an LTI tool, a filter is executed to fetch reusable and pluggable LTI configurations from external plugins and display them to course creators as configuration options in Studio. This use case simplifies the setup of LTI tools by allowing reusable options to be used instead of manually setting them for each tool.

More details on Reusable LTI Configuration.

Verification of Skills by Users#

When a user enters a unit, a filter is executed to inject verification forms where users can vote on the skills they have learned. This use case helps gather feedback from users about their learning experience in the course, helping to ensure the course objectives match what learners experience.

More details on Verification of Skills by Users.

IDV Integration with new Vendors#

A filter is executed to return the URL for the Identity Verification (IDV) vendor configured. When a student verifies their identity from their account settings, they are redirected to the IDV vendor’s configured to complete the verification process. This use case can be used to integrate new IDV vendors with the Open edX platform.

More details on IDV Integration with new Vendors.

Adding Custom Tabs to the Instructor Dashboard#

When an instructor enters the instructor dashboard, a filter is executed to modify the section tabs. This allows adding new features implemented in plugins to the instructor dashboard, such as custom reports, analytics, or other tools that help instructors manage their courses.

More details on:

Prevent Enrollment From Unauthorized Users#

When a student enrolls in a course, before the enrollment is completed, a filter is executed to check if the student is authorized to enroll in that course. If the student doesn’t meet the conditions for enrollment, they will not be able to enroll. For instance, when the student is not part of a partner institution or doesn’t have the required prerequisites. This use case can also be extended to cover login, registration, and other actions.

More details on:

Webfilters Integration#

Webfilters, as mentioned in openedx-webhooks is a type of webhook that allows you to make HTTP requests to external services and modify the application behavior depending on the response. This use case can be used to validate data with external services, such as verifying the user’s subscription with a third-party service before allowing them to enroll in a course. This is a more generalized implementation of the previous use case.

More details on Open edX Webhooks - Webfilters.

Schedules Filtering#

When a automatic email message is scheduled to be sent to students, a filter is executed to modify the schedule. This functionality allows you to define specific criteria to determine which students will receive the email. For example, filters can check whether students have opted to receive newsletters, assess their progress in the course, evaluate their activity, or consider other relevant conditions.

More details on Schedule Filtering.

Other Use Cases#

Here are some additional use cases that can be implemented using Open edX Filters:

Note

If you have implemented a solution using Open edX Filters and would like to share it with the community, please submit a pull request to add it to this list!