Skip to content

Commit

Permalink
docs: add real life use cases based on community adoption
Browse files Browse the repository at this point in the history
  • Loading branch information
mariajgrimaldi committed Nov 15, 2024
1 parent be597ea commit 0d463d2
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/reference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ References

filters
django-plugins-and-filters
real-life-use-cases
106 changes: 106 additions & 0 deletions docs/reference/real-life-use-cases.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
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 application flow control that modifies the application's behavior, navigation, or user interaction flow during runtime.

.. TODO: add cross-reference to Hooks Extension Framework after PR is merged docs.openedx.org/pull/599
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`_.

Show Consent Warning to Users
*****************************

When a student loads an Open Response Assessment (ORA) problem, a filter is executed to display a consent warning to the student. This use case can be used to inform students about the data collection and processing that will occur when they submit their responses. This is especially useful when the data is being processed by third-party services.

More details on `Show Consent Warning to Users`_.

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:

* `Aspects Reports`_.
* `Feedback Xblock Aggregated Data`_
* `Forum Digest Instructor Configurations`_.

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 example, 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:

* `Prevent Enrollment From Non-Partner Users`_.
* `Prevent Enrollment for Non-Authorized Email Domains`_.
* `Prevent Registration of Users with Specific Email Domains`_.
* `Prevent Login of Users with Specific Email Domains`_.

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 make 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`_.

Other Use Cases
***************

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

* `LimeSurvey Management View in the Instructor Dashboard`_.
* `OnTask Service Integration`_.
* `Filters for Close Communication`_.
* `Edit On Git in Units`_.
* `Render Alternative Course About`_.
* `Hide Course About from Users Without Memberships`_.

.. _Prevent Enrollment From Non-Partner Users: https://github.com/academic-innovation/mogc-partnerships/blob/main/mogc_partnerships/pipeline.py#L35-L50
.. _Prevent Enrollment for Non-Authorized Email Domains: https://github.com/fccn/nau-openedx-extensions/blob/nau/nutmeg.master/nau_openedx_extensions/filters/pipeline.py#L17-L79
.. _Prevent Registration of Users with Specific Email Domains: https://github.com/UAMx/uamx-social-auth/blob/main/uamx_social_auth/pipeline.py#L59-L63
.. _Prevent Login of Users with Specific Email Domains: https://github.com/UAMx/uamx-social-auth/blob/main/uamx_social_auth/pipeline.py#L72-L76
.. _openedx-webhooks: https://github.com/aulasneo/openedx-webhooks
.. _Open edX Webhooks - Webfilters: https://github.com/aulasneo/openedx-webhooks?tab=readme-ov-file#introduction
.. _Verification of Skills by Users: https://github.com/openedx/taxonomy-connector/blob/master/docs/decisions/0001-xblock-skill-tagging-design.rst#verification-of-skills-by-users
.. _Reusable LTI Configuration: https://github.com/openedx/xblock-lti-consumer/blob/master/docs/decisions/0006-pluggable-lti-configuration.rst
.. _Aspects Reports: https://github.com/openedx/platform-plugin-aspects/pull/2
.. _Feedback Xblock Aggregated Data: https://github.com/openedx/FeedbackXBlock/pull/35
.. _Forum Digest Instructor Configurations: https://github.com/eduNEXT/platform-plugin-forum-email-notifier/pull/3
.. _LimeSurvey Management View in the Instructor Dashboard: https://github.com/eduNEXT/xblock-limesurvey?tab=readme-ov-file#as-an-instructor
.. _OnTask Service Integration: https://github.com/eduNEXT/platform-plugin-ontask/?tab=readme-ov-file#view-from-the-learning-management-system-lms
.. _Filters for Close Communication: https://github.com/edx/commerce-coordinator/blob/main/docs/decisions/0004-openedx-filters-for-close-communication.rst#0004-openedx-filters-for-close-communication
.. _Edit On Git in Units: https://github.com/open-craft/openedx-edit-links?tab=readme-ov-file#overview
.. _Show Consent Warning to Users: https://github.com/openedx/edx-ora2/blob/master/docs/decisions/0003-lightweight-extension-points.rst#decisions
.. _IDV Integration with new Vendors: https://openedx.atlassian.net/wiki/spaces/OEPM/pages/4307386369/Proposal+Add+Extensibility+Mechanisms+to+IDV+to+Enable+Integration+of+New+IDV+Vendor+Persona
.. _Render Alternative Course About: https://github.com/lektorium-tutor/lektorium_main/blob/master/lektorium_main/tilda/pipeline.py#L15-L94
.. _Hide Course About from Users Without Memberships: https://github.com/academic-innovation/mogc-partnerships/blob/main/mogc_partnerships/pipeline.py#L53-L66

0 comments on commit 0d463d2

Please sign in to comment.