hypothesis / product-backlog

Where new feature ideas and current bugs for the Hypothesis product live
118 stars 7 forks source link

Moodle Parity #1473

Open nairiboo opened 1 year ago

nairiboo commented 1 year ago

Problem Statement:

Rationale: Lots of missing options in Moodle Impact: Elon U., and other tier 1 and 2 institutions share this as an obstacle for adoption. Proposal: Give Moodle partners one or more of the above​ to improve their experience.

marcospri commented 7 months ago

Supported features

Groups

Very similar to other LMS. Instructors can organize students in different "Groupings" in Moodle and pick the right one per assignment.

We don't support groups that created directly in the course, ie. not part of a grouping.

Files

Files can be added to the course topics and also nested inside folders there. A new option in the file picker allow selecting them.

Pages

Similar to files pages can be added to topics (but apparently not folders). They can be picked as the document while configuring an assignment.

Course copy

All this features should work across course copy with a big caveat: only for deep linked assignments.

Existing installs should be updated to support this (marking checkbox on their end) and we should recommend deep linking to be enabled for new installs.


Short demo of the deep linking flow for end of last year: https://github.com/hypothesis/product-backlog/assets/1433832/9cf8b4de-d7fc-42e7-95df-94cff65fe511

Walkthrough of the features from a couple weeks ago, it's a bit more polished now.

https://github.com/hypothesis/product-backlog/assets/1433832/f3aadfec-3b7a-4a23-8ffb-259dd38ce308

marcospri commented 7 months ago

Moodle admins setup

DeepLinking

To enable deep linking in both existing and new installs this checkbox should be enabled and the URL should point to our content_item_selection.

Screenshot from 2024-03-07 17-29-10

API setup

We could ask admins to pick their own user, or a generic admin user thet might have. For more security conscious admins (and probably for more a more future proof approach) we can ask admins to create a new user just for this purpose.

The user will need a few "capabilities" so we probably should ask admins to first create a new "role" and then an user with that role.

Role creation

Screenshot from 2024-03-07 17-38-42

Capabilities:

User creation

There's a few gotchas (I found) that would prevent a newly created user to use the API:

External service

External services have a "function" concept, similar to canvas scopes. We currently need:

core_course_get_contents core_group_get_course_groupings core_group_get_course_user_groups core_group_get_groupings mod_page_get_pages_by_courses

API token