Course Materials Module

Bug #1849212 reported by Kyle Huckins on 2019-10-21
26
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Evergreen
Wishlist
Unassigned

Bug Description

Catalyte has been contracted by Treasure Valley Community College and Linn-Benton Community College to develop a Course Materials module for Evergreen.

This module will include new IDL classes for Courses, Course materials, and Course users, as well as a YAOUS to opt in to the module's functionality. It will also feature new UIs to allow staff management of courses(Angular staff client) and user viewing of courses and materials associated with said courses(OPAC client).

Kyle Huckins (khuckins) on 2019-10-21
Changed in evergreen:
assignee: nobody → Kyle Huckins (khuckins)
Jane Sandberg (sandbej) on 2020-07-20
Changed in evergreen:
importance: Undecided → Wishlist
milestone: none → 3.6-beta
Jane Sandberg (sandbej) on 2020-07-24
Changed in evergreen:
assignee: Kyle Huckins (khuckins) → Jane Sandberg (sandbej)
Jane Sandberg (sandbej) wrote :

A note that this bug will start seeing a lot of activity in the coming weeks.

Kyle and Zavier from Catalyte created a really nice basic Course Materials Module for Evergreen (thanks!) Their work was funded by three entities:
  * NOBLE
  * Treasure Valley Community College and Linn-Benton Community College through an LSTA grant

In addition to the usual enthusiasm for having an integrated course materials module, this module should prove particularly valuable during COVID-19 quarantines, since it offers robust support for electronic resources and open educational resources (whether they have been cataloged or not).

I've got a few patches I'll be applying to Kyle and Zavier's work before adding that pullrequest tag, but hope to have this ready for review in time for Feedback Fest. I should also have a test server available to the community sometime next week.

In the meantime, if you'd like to take a look (or add some commits yourself), there is a collab branch at collab/sandbergja/lp1849212_course_materials_module

Jane Sandberg (sandbej) wrote :

A note that I am running behind schedule. Will definitely have that test server next week!

Jane Sandberg (sandbej) wrote :

Here is the test server: https://alb-lib-coursematerials.linnbenton.edu/
You can use the typical admin credentials.

There are a few more code changes I'd like to make before applying the pull request tag; I will update the test server every once in a while with those changes.

In case it's helpful, I've started drafting a testing plan for this new module: https://docs.google.com/document/d/1Dy1jcs6Kog8kxuIGg2GfJ4wIr4uKwMuMzd-uGuovaCc/edit

Jane Sandberg (sandbej) wrote :

And I think this is ready for some review! I added the pullrequest tag. The branch can be found at collab/sandbergja/lp1849212_course_materials_module

Looking forward to your feedback!

Changed in evergreen:
assignee: Jane Sandberg (sandbej) → nobody
tags: added: pullrequest
Beth Willis (willis-a) wrote :
Download full text (3.4 KiB)

I have done some testing of the course materials development. Overall it is looking really nice. Jane, thank you for the awesome testing plan. My comments are included below under the relevant sections of the testing plan.

1. Turning on the Course Materials Module

The library setting "Opt Org Unit into the Course Materials Module" does not seem to be scoping properly. The OPAC only displays the “Search for Courses” and “Browse for Courses” links if this library setting is set to "true" for the CONS org unit. If this setting is "false" for the CONS org unit, these options do not display, even if the setting is set to true for a 'descendent'/branch.

2. Adding a new course

Jane’s testing plan indicates that the course listing refreshes when a new course is added. Adding the course works smoothly but I found that I needed to refresh manually to see the new course.

3.4 Adding a brief record to your course

You can use the "Associate Brief Record" option to create a record for an electronic resource that is not in the catalog. This option generates a MARC record with a 245 field and two 856 fields.

The first 856 field includes the URI specified when the record is created. This URI does not display in the catalog, because the first indicator for the 856 field is "0." In most instances, this indicator is likely to be a "4." I think that the first indicator should be "4" by default.

The first 856 field does not include link text (subfield y). There should be a way to add link text when adding the brief record. Or, there should be a way to define default link text for all brief records.

The first 856 field does not include a located URI (subfield 9) for the owning org unit. Note: the second 856 field includes a located URI for the CONS. I think that the first 856 should include a located URI for the owning org unit by default. I’m not sure why there are two 856 fields for these records. Note: I added a located URI for the owning org unit to the first 856 field. This caused the link NOT to display in either the public catalog or the staff catalog.

My test electronic resource record (bib record 259) displays in the catalog with a "book" format icon. Since records added using this option will be electronic resources, should the “form” fixed field be coded as "o" (online) by default? Note: it may be that the test server does not contain a full array of format icons and I was not able to edit the fixed fields of my test record to test this.

The Actions menu for items includes an option to "Edit Selected" but this does not work. A pop-up displays with progress bar but the edit screen never displays.

3.6 Adding a user to your course

All users whose role is set to "public" display in the catalog as "Course Instructors." Only users with the role "Instructor" should display in the catalog. I don’t think a student’s affiliation with a course should be made public.

It might be helpful to include a predefined list of user roles.

7.2 Associate a course with one or more terms from the course list

From the Course Term Map Configuration screen it would be nice if the course title was a link back to the course. There is...

Read more...

Jane Sandberg (sandbej) on 2020-08-25
Changed in evergreen:
assignee: nobody → Jane Sandberg (sandbej)
Jane Sandberg (sandbej) wrote :

Thanks for the great feedback, Beth. I will work on these over the next few days.

Jane Sandberg (sandbej) on 2020-09-02
Changed in evergreen:
assignee: Jane Sandberg (sandbej) → nobody
Jane Sandberg (sandbej) wrote :

I pushed several commits to collab/sandbergja/lp1849212_course_materials_module to address feedback from Jason Boyer, local testers, and especially Beth!

Things that have been fixed:
* An out-of-date trigger in the update script
* Fix the OPAC scoping for the module
* Course list now refreshes when a new course is added
* Many fixes to adding brief record:
   -> Generated 856 now allows staff to submit a $y
   -> Generated 856 is now all in one field, rather than spread across two
   -> Generated 856 now uses the course's library in the $9, rather than CONS
   -> Users can now specify marc type and form. Default type is a and default form is o (Ebook)
* Course materials grid is now editable
* User roles are now split in their own table, so staff can only choose from a limited (but configurable) number of roles for course users.
* Added a "Return to Course List" button on the term/course mapping interface

I was not able to get to your suggestion of allowing staff to select terms when creating a course, Beth. It's a good suggestion, but I ran out of time. I can add that as a separate launchpad bug if/when this branch is merged.

Jane Sandberg (sandbej) wrote :

Oh, and the test server is currently down due to some maintenance work from Campus IT. It should be back, with the update branch loaded, sometime tomorrow.

Jane Sandberg (sandbej) wrote :

Just threw another commit on there to fix browsing and searching for courses by instructor.

Jane Sandberg (sandbej) wrote :

And the test server is back in operation at: https://alb-lib-coursematerials.linnbenton.edu/

To better test Beth's comment under 1), the OPAC is at the BR1 (Example Branch 1) level, rather than the whole consortium. That way, y'all can better test whether the opt-in library setting is working properly.

Beth Willis (willis-a) wrote :

Jane, thanks for the additional work you have done on the course materials module.

I have some additional comments and questions:

Course Materials:

When associating a brief record with a course, it is not clear that there are default values for “form” and “type.” Since this is the case, it would be helpful if these values displayed.
Is the “Associate brief record” option for both physical and online resources?

Course materials grid:

When you select an item from the course materials grid and choose “edit selected” from the “Actions” menu, you are taken to the course materials record editor. I think this option should enable the user to edit item attributes or URIs. What is the intent of this action?

User Roles:

In order to add a user to a course it is necessary to assign a user role. Is this the intention? I'm not sure if a role should be required or not. If it is, should there be a default value here?

When adding a new user role, is this role associated with the current workstation org unit?

Terms:

The record editor for terms lists fields in the following order: End date, Name, Owning library, Start date. I think it would be more logical to display the start date just before the end date. Also, could the owning library default to the workstation library? Or, would that not make sense in all contexts?

Jane Sandberg (sandbej) wrote :

Thanks for the good feedback, Beth. I've updated the branch (as well as the test server) with the following:

* Course materials: totally agree about defaults in the brief records. I presented the default values more clearly (as the default selections in the dropdown).
* User roles: I don't think they need to be required either! I made them optional.
* Terms: The owning library now defaults to the workstation library.

I did not change these:

* Terms: I agree about the field order. Unfortunately, that will depend on bug 1857351.
* Course materials grid editing: I hadn't thought about changing URIs there! I don't think I'd be able to address it before the feature freeze, but would be happy to write up a separate bug report for it if this pull request is merged. Would we only want to be able to change URIs for brief records? It seems like changing URIs for existing electronic resources could be potentially tricky (handling records with multiple URIs, changing located URIs for other libraries, etc.)

And here are my answers to your questions:

* Brief records: We were thinking of brief records mainly for online resources. A future enhancement might be to add a convenient workflow for reserves staff to create brief records for physical items in the reserves collection (e.g. instructor-owned copies) without needing to work with MARC. That being said, there's nothing stopping reserves workers from attaching some call numbers and items to the records they create in this tab.
* Course materials grid editing: not letting staff edit temporary attributes here was intentional. During initial discussions, we thought that having layers upon layers of temporary item attributes would lead to confusion, so staff are not permitted to edit the temporary attributes while they are active.

And one question for you:

* Course materials grid editing: you're right, staff currently can't edit much (the course it's attached to, the relationship "Required", "optional", etc.) Would it make sense to remove this Edit option for now until it is more powerful? Or is there value in these edit actions?

Beth Willis (willis-a) wrote :

Jane, thanks for your quick response, as always!

Related to the Course Materials grid editing, I'm not sure what the best solution is.  The edit option was not what I was expecting.  For example, I can imagine attaching an item to a course and then realizing I had forgotten to update the copy location from "stacks" to "reserves" say.  I thought if I selected the item from the grid I would be able to edit this field.  But, perhaps there are good reasons for not allowing this type of edit.

I don't think there is any reason to remove the Edit option as it is.  It is possible that you would want to switch an item from one course to another or to change the item's relationship to the course.
I would like to hear what others think, though.

Jane Sandberg (sandbej) wrote :

I missed answering a question. Beth: you asked if the course user roles were associated with the user's workstation org unit. I actually don't have an org unit field for those roles; I assumed that it was likely to be a pretty short list without a lot of variations from library to library, so it would be okay if the whole consortium shared the same list.

Jane Sandberg (sandbej) wrote :

A rebased and lightly squashed branch is available at user/sandbergja/lp1849212_course_materials_squashed

Note that this includes a commit from Jason Boyer without a signoff per these discussions:
* http://irc.evergreen-ils.org/evergreen/2020-09-14#i_458607
* http://irc.evergreen-ils.org/evergreen/2020-09-11#i_458243

Jason Boyer (jboyer) wrote :

I suppose I really should spell out my concerns (and solicit feedback, please make suggestions if you have them!) for everyone here so no one has to look through IRC logs. :)

Currently the feature makes use of a facet that allows users to limit searches to "In Course Reserves" / "Not in Course Reserves." I like this ability but the way facets are implemented generally requires that there be something about (and also to my recollection, *in*) the marc record that the re-/ingest system can grab a hold of. To implement this facet a number of changes had to be made:
1. A new config.metabib_class was added: "Boolean Facet"
2. Used by a new field in config.metabib_field: "On Reserve"
3. The t/f values are only in metabib.facet_entry so the metabib.reingest_metabib_field function requires special casing to avoid Postgres errors when trying to delete from the missing metabib.boolean_facet_entry table.
4. The way this facet is updated is by special purpose triggers on biblio.record_entry and asset.course_module_course_materials

I have issues with most stops along the way:
1. The current metabib schema is setup to be a fairly generic mechanism (A single field may be used for any combination of search / browse / facet / display) and this change introduces an extremely specific change at the base level that is only used for facets
2. (not really an issue on its own; merely a side effect of 1.)
3. This would start a precedent of having to specifically check table names in triggers that are otherwise wholly generic. Once we have one "IF table_name ='blah' THEN RETURN" it's only a matter of time before it becomes "IF table_name IN ('','','',) OR ..." We need to clean up and refactor several situations like this as-is; we shouldn't add more if there's any way around it.
4. It's entirely possible that there will be some triggers along the way when implementing this type of facet but we need to try to a., have fewer triggers on bre rather than more, and b., avoid very specific triggers when at all possible.

I'm sure there's a reasonable way to accommodate this t/f and other non-marc-based facets but I don't believe such a thing exists currently in Evergreen today. Does anyone have thoughts on how to handle this in a fairly general way? Ideally in the end users would be able to arrange them however they like within the facet order in templates/opac/parts/config.tt2.

Galen Charlton (gmc) wrote :

It occurs to me that rather than implementing the bib search restriction as a facet, it could be done as a search filter along the lines of site() or badge_orgs() or copy_tag(). This would entail updating OpenILS/Application/Storage/Publisher/metabib.pm and OpenILS/Application/Storage/Driver/Pg/QueryParser.pm to recognize the filter and generate SQL to add conditions on the core bib search query. It could also be done as a search modifier similar to #available or #lucky.

Either way, this would eliminate any need for a custom Boolean facet type or changes to the bib ingest mechanism. I don't think it would be particularly time-consuming to implement.

I suggest going for a search filter along the lines of on_reserve(ORG[, ORG2, ORG3...]) rather than just a search modifier, as it might be handy to be able to directly specify that you're looking for items that are on reserve at a given OU or set of OUs. However, it could be done as a search modifier, in which case the user would be relying on site() to scope the search to the desired OUs.

Michele Morgan (mmorgan) wrote :

I'm adding my signoff to this on behalf of NOBLE:

https://git.evergreen-ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/mmorgan/lp1849212_signoff

Thanks to Beth Willis' thorough testing, we feel it will meet the course materials needs of our academic libraries. Tweaks would be welcome but as it is, it's a fine replacement for Syrup, which we've been maintaining alongside Evergreen for several years. It will be a significant benefit to have this functionality integrated into Evergreen!

tags: added: signedoff

Thanks, Michele.

Is the option to attach a bib record for an e-resource all set?

Thanks again.
Beth

On Mon, Sep 14, 2020 at 3:30 PM Michele Morgan <email address hidden>
wrote:

> I'm adding my signoff to this on behalf of NOBLE:
>
> https://git.evergreen-
>
> ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/mmorgan/lp1849212_signoff
>
> Thanks to Beth Willis' thorough testing, we feel it will meet the course
> materials needs of our academic libraries. Tweaks would be welcome but
> as it is, it's a fine replacement for Syrup, which we've been
> maintaining alongside Evergreen for several years. It will be a
> significant benefit to have this functionality integrated into
> Evergreen!
>
> ** Tags added: signedoff
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1849212
>
> Title:
> Course Materials Module
>
> Status in Evergreen:
> New
>
> Bug description:
> Catalyte has been contracted by Treasure Valley Community College and
> Linn-Benton Community College to develop a Course Materials module for
> Evergreen.
>
> This module will include new IDL classes for Courses, Course
> materials, and Course users, as well as a YAOUS to opt in to the
> module's functionality. It will also feature new UIs to allow staff
> management of courses(Angular staff client) and user viewing of
> courses and materials associated with said courses(OPAC client).
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/evergreen/+bug/1849212/+subscriptions
>

--
Beth Willis
Digital & Catalog Librarian
NOBLE, Inc.
42 Cherry Hill Drive
Danvers, MA 01923

Jane Sandberg (sandbej) wrote :

Beth: Michele let me know about the issue with attaching bib records with located URIs not at CONS. I've added it to my to-do list. Thanks for catching that!

With Michele's permission, I added a parallel branch: user/sandbergja/lp1849212_no_facet. It includes Michele's signoffs, but does not include the facet (with the thinking that we could add an alternate implementation later). I've only eyeballed it, not tested it, but am loading it onto a VM right now.

Michele Morgan (mmorgan) wrote :

I told Jane about it in IRC. She took note of it but it's not fixed. It
will need to be dealt with after the freeze, likely a new Launchpad bug.
--
Michele M. Morgan, Technical Support Analyst
North of Boston Library Exchange, Danvers Massachusetts
<email address hidden>

On Mon, Sep 14, 2020 at 3:45 PM Beth Willis <email address hidden>
wrote:

> Thanks, Michele.
>
> Is the option to attach a bib record for an e-resource all set?
>
> Thanks again.
> Beth
>
> On Mon, Sep 14, 2020 at 3:30 PM Michele Morgan <<email address hidden>
> >
> wrote:
>
> > I'm adding my signoff to this on behalf of NOBLE:
> >
> > https://git.evergreen-
> >
> >
> ils.org/?p=working/Evergreen.git;a=shortlog;h=refs/heads/user/mmorgan/lp1849212_signoff
> >
> > Thanks to Beth Willis' thorough testing, we feel it will meet the course
> > materials needs of our academic libraries. Tweaks would be welcome but
> > as it is, it's a fine replacement for Syrup, which we've been
> > maintaining alongside Evergreen for several years. It will be a
> > significant benefit to have this functionality integrated into
> > Evergreen!
> >
> > ** Tags added: signedoff
> >
> > --
> > You received this bug notification because you are subscribed to the bug
> > report.
> > https://bugs.launchpad.net/bugs/1849212
> >
> > Title:
> > Course Materials Module
> >
> > Status in Evergreen:
> > New
> >
> > Bug description:
> > Catalyte has been contracted by Treasure Valley Community College and
> > Linn-Benton Community College to develop a Course Materials module for
> > Evergreen.
> >
> > This module will include new IDL classes for Courses, Course
> > materials, and Course users, as well as a YAOUS to opt in to the
> > module's functionality. It will also feature new UIs to allow staff
> > management of courses(Angular staff client) and user viewing of
> > courses and materials associated with said courses(OPAC client).
> >
> > To manage notifications about this bug go to:
> > https://bugs.launchpad.net/evergreen/+bug/1849212/+subscriptions
> >
>
>
> --
> Beth Willis
> Digital & Catalog Librarian
> NOBLE, Inc.
> 42 Cherry Hill Drive
> Danvers, MA 01923
>
> --
> You received this bug notification because you are subscribed to
> Evergreen.
> Matching subscriptions: Evergreen bugs
> https://bugs.launchpad.net/bugs/1849212
>
> Title:
> Course Materials Module
>
> Status in Evergreen:
> New
>
> Bug description:
> Catalyte has been contracted by Treasure Valley Community College and
> Linn-Benton Community College to develop a Course Materials module for
> Evergreen.
>
> This module will include new IDL classes for Courses, Course
> materials, and Course users, as well as a YAOUS to opt in to the
> module's functionality. It will also feature new UIs to allow staff
> management of courses(Angular staff client) and user viewing of
> courses and materials associated with said courses(OPAC client).
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/evergreen/+bug/1849212/+subscriptions
>

Galen Charlton (gmc) on 2020-09-14
Changed in evergreen:
assignee: nobody → Galen Charlton (gmc)
Galen Charlton (gmc) wrote :

Pushed to master for inclusion in 3.6. Thanks, Kyle, Zavier, Jane, Jason, and Michele!

I did end up pushing various follow-ups to fix some issues with core functionality related to detaching materials from courses, editing and removing user mappings, and avoiding open-ils.courses drone starvation when displaying a title in the public catalog. I have reservations about the nature and number of those follow-ups that were required; while that ultimately did not tip me away from merging this, I do recommend that as much testing and bugfixing be done during the 3.6 beta period.

Changed in evergreen:
status: New → Fix Committed
assignee: Galen Charlton (gmc) → nobody
Changed in evergreen:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers