Event Styling

Our client used 25Live to manage events and requested that its embedded “Event Slider Spud” calendar widget match specific wireframes. Native styling options were extremely limited, and early attempts at CSS overrides failed due to iframe rendering constraints. Rather than tell the client their request was unachievable, I wrote a custom Drupal module to override the default behavior.
Custom module setup codeBase files needed for setting up the custom module
Type

Group Work Assignment


Built with
  • Drupal
  • JavaScript
  • Mutation Observer
  • Custom Module
  • Third-Party API

Project Purpose

This project's client relied on a third-party events integration tool, 25Live, to manage and display event data. The client wanted the embedded calendar component (“Event Slider Spud”) to match specific wireframes, including centered text, consistently placed navigation arrows, and customized styling. However, 25Live's widget offered limited styling options and no native support for the requested layout. Rather than tell the client their request couldn't be fulfilled, I obtained approval to investigate a workaround. After analyzing the integration's structure, I discovered the widget was rendered inside an iframe, which restricted our ability to style or manipulate its content directly. I developed a custom Drupal module that used JavaScript to monitor the iframe's DOM state. Using a combination of a MutationObserver, a Promise, and a setTimeout, I delayed the injection of custom styles until the iframe had fully rendered. This allowed us to apply the necessary styling reliably—even during user interactions like scrolling or clicking. Initially, the styles could be injected without the observer, but user interaction would cause them to disappear until the page reloaded. Implementing the observer resolved this, ensuring a seamless and persistent experience for end users. To ensure long-term maintainability, I wrote detailed documentation for the client. It covered how to create and manage event calendars in 25Live, how to connect them to the Drupal site, and how to update the slider configuration and code as needed. This solution allowed us to fully meet the design specifications within a limited framework, while providing a sustainable approach for the client post-launch.

Tech Stack & Approach

This was my first foray into Site Studio, which allows for visual page building but can limit direct code access. Balancing drag-and-drop restrictions with developer-level customization required careful analysis and creative engineering.

Challenges & Lessons Learned

The team learned Site Studio in real time, and early in the project, the lead developer was unexpectedly hospitalized. I was asked to step in as technical lead with limited access to his documentation and implementation plans. To keep the project moving forward with minimal disruption, I:
  • Documented existing gaps and restructured our technical workflow
  • Led integration strategy and module development
  • Created long-term documentation to support future handoffs
This project strengthened my confidence in solution-oriented engineering and leadership under unexpected circumstances.
Final live version with identifying information blockedLive version of the event listing with identifying information blocked
Code snippetSnippet of the code