Skip to content

Closes #3998: Non-Academic Trellis Programs#5182

Draft
zsaenz wants to merge 40 commits intomainfrom
issue/3998
Draft

Closes #3998: Non-Academic Trellis Programs#5182
zsaenz wants to merge 40 commits intomainfrom
issue/3998

Conversation

@zsaenz
Copy link
Copy Markdown
Contributor

@zsaenz zsaenz commented Jan 9, 2026

Closes #3998: Non-Academic Trellis Programs

Description

Adds a new content type, and a content importer from trellis, for Opportunities. Two modules, with trellis opportunities embedded within the folder.

-Opportunities is used for things like study abroad, research, job opportunities, scholarships and internships. This will be used for student opportunities and engagement, showing the different kinds of jobs or financial assistance the college or unit offers or prepares students for. It can also be used in conjunction with course work, as some courses require volunteer work or internships as part of their capstones. Websites will be able to list opportunities in multiple formats, with filters, in case they need more advanced listings. These fit between things like Events and News - Some of them have deadlines, some of them don't and are ongoing, some of them do have deadlines and a program date, where the application may happen months before the actual program starts.

-The second part of this content type is the Trellis Importer. Trellis opportunities are called Programs, which come from Accounts. Similar to the Event Importer, we want Trellis to be able to import content right into Quickstart sites, with links between for ease of use.

------ TODO
Deleting opp content type doesn’t roll back the import (where’s the rollback feature???)
(conencted)
Trellis import view leads to Broken/Missing handlers when edited from front end
Config sync not updating single items

Related issues

Closes #3998: Non-Academic Trellis Programs

How to test

-- Opportunity Content

  1. Install the Experimental module, az_opportunity.
  2. Create a few test opportunity nodes and review the primary display's accessibility, fields, and ease of use.
  3. Set up a new Page and test the multiple views using Paragraphs.
    a. Do the views match the different needs and use cases for the editors?
    b. Any other views we might need?

--- Trellis Importer

  1. Install the Trellis Importer Module. This also installs required Enterprise Attriburtes.
  2. Update the importers to the dev versions. Use an API tester like Postman to double check that they work prior to editing - sometimes the APIs are edited, or they might have already switched to their production counter parts.
    A. Check if Enterprise Attributes imported the "Program Type" parent tag in taxonomy or in the API. If not, go to config > AZ Quicktstart settings, edit the Enterprise Attributes Importer to the dev api listed below.
    https://api.qa.eips.arizona.edu/ws/rest/events/v1/enterprise-attributes
    B. While production is technically ready, swap to the development API for testing. In config > AZ Quickstart settings, edit the Trellis Opportunities Importer to use the dev api listed below.
    api.qa.eips.arizona.edu
  3. Test the importer by going to Content > Trellis Opportunity Importer.
    A. Try searching for a keyword for an includes type. BRAVO will get you a single content item. cubeta as the owner will get you 3 objects. Do multiple searches.
    B. Tick a box and import the content.
    C. Review the content imported's fields. Check that imported content is not able to be edited
  4. Test with Trellis Event importer for conflicts. Does AZ_Quickstart Settings have too many options now?
  5. Test the Recurring Import Form which shows up after searching.

Types of changes

Arizona Quickstart (install profile, custom modules, custom theme)

  • Patch release changes
    • Bug fix
    • Accessibility, performance, or security improvement
    • Critical institutional link or brand change
    • Adding experimental module
    • Update experimental module
  • Minor release changes
    • New feature
    • Breaking or visual change to existing behavior
    • Upgrade experimental module to stable
    • Enable existing module by default or database update
    • Non-critical brand change
    • New internal API or API improvement with backwards compatibility
    • Risky or disruptive cleanup to comply with coding standards
    • High-risk or disruptive change (requires upgrade path, risks regression, etc.)
  • Other or unknown
    • Other or unknown

Drupal core

  • Patch release changes
    • Security update
    • Patch level release (non-security bug-fix release)
    • Patch removal that's no longer necessary
  • Minor release changes
    • Major or minor level update
  • Other or unknown
    • Other or unknown

Drupal contrib projects

  • Patch release changes
    • Security update
    • Patch or minor level update
    • Add new module
    • Patch removal that's no longer necessary
  • Minor release changes
    • Major level update
  • Other or unknown
    • Other or unknown

Checklist

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • My change requires release notes.

zsaenz added 3 commits January 9, 2026 09:54
Creates a base Opportunity content type with 3 display views. Uses Smart Title.
@zsaenz
Copy link
Copy Markdown
Contributor Author

zsaenz commented Jan 9, 2026

Review questions:

  • Website links could be buttons in display?
  • The "Where" is always a link, which doesn't look good on Card or Row view due to stretched links.
  • Make views with more and less content displayed for various uses (simple list of titles format, detailed filterable table format, etc)
  • The location field is being reused from AZ_Event. This has a URL attached, in case folks want to link a google maps. However, link fields do require a URL, where we only want to use the Text field and optionally allow a URL.
    -- Should we switch this to a text field, using az_opportunity_location instead of az_location?
    -- See: https://www.drupal.org/project/drupal/issues/2880632
  • 5 taxonomies used: Audience, Credit, Modality, Semester, Topic.
    -- These being taxonomies is important because some folks might want different options than what's available as stock (particularly those not using Trellis' built in options).
    -- There needs to be the ability to change or modify content coming in. Trellis could change "No Course Credit" to "No Academic Course Credit" for example, and we need to account for that.
    -- Taxonomies should primarily be used for grouped content that needs to be tagged and searched. Topics and Semester are important. Modality probably, though there's flexibility there. Credit and Audience could probably be more freeform text fields - user might want to say "3 credits" instead of "Yes."
  • On Taxonomies: How do we categorize content? EX: News can be filtered and sorted by News Type, using contextual filters. Topics could play that role, for example "National" and "International" as tags. However, there may be the case of separating opportunities by opportunity type - National Internships, International Scholarships... Would wee need a second tag to group them? Other examples would be: Group by combining tags (National, Internships), group by hierarchy (Scholarships > National)

@zsaenz zsaenz self-assigned this Jan 12, 2026
zsaenz and others added 3 commits January 26, 2026 11:40
Co-authored-by: Joe Parsons <471936+joeparsons@users.noreply.github.com>
It installs properly, but doesn't work. It causes problems with Trellis Event Importer.
@zsaenz
Copy link
Copy Markdown
Contributor Author

zsaenz commented Feb 11, 2026

#5274
Related issue to fix styling on Entity Reference fields

@zsaenz zsaenz marked this pull request as ready for review February 13, 2026 16:25
@zsaenz zsaenz requested review from a team as code owners February 13, 2026 16:25
@bberndt-uaz bberndt-uaz moved this from Todo to In Progress in 3.4.0-alpha1 Feb 13, 2026
@zsaenz zsaenz marked this pull request as draft February 16, 2026 15:31
@kevdevlu kevdevlu self-assigned this Mar 11, 2026
@az-digital-bot
Copy link
Copy Markdown
Contributor

Tugboat has finished building the preview for this pull request!

Link:

Dashboard:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

Non-Academic Trellis Programs

6 participants