There have also been a variety of improvements in the Event Platform’s companion theme, Event Horizon. A lot of work has been done to make sure the theme supports all the new Event Platform features, such as the newly configurable “program” display in the home page header. When program information has been added to the event configuration, it will automatically be displayed in the home page header component, and once the event moves to the Scheduled workflow state, each day in the display will automatically link to the corresponding day in the schedule display.I also heard that some camps prefer to evaluate sessions without knowing who the author is. To accommodate this, the speaker information has been moved into a block, and by default will only show after the event schedule has been published. It’s also a simple configuration change for camps that prefer to display speaker information earlier in the process.

Taking the Session Acceptance Workflow to Another Level

Personally, I think it’s exciting to be able to leverage some of the great work from the Drupal CMS team. Being able to use specific pieces in a granular way really validates the value of the subtree splits that they’ve used to make the recipes available individually. Leveraging these recipes allows site builders to easily adopt a variety of best practices around editor experience, spam protection, and search engine optimization.
The workflow had always contained the default Draft and Published states (because you can’t delete them) but they weren’t really serving any useful purpose. I renamed the Published state to Confirmed, and added a new, unpublished state called “Declined”.One of the changes in the 2.0 version of Event Platform is showing the “Key Dates” for a camp in a block on the event view page, following a common pattern for these kinds of events. The idea is to clearly communicate when a call for session proposals will open, when it will end, then the schedule will be posted, and so on. Some recent improvements include the addition of HTML time element wrappers for the date values. While originally implemented as an SEO best practice, I also realized that the timestamps in the time wrappers could be used as an easy way to visually indicate which dates have already passed. If we wanted to manage that in the back end, for example by adding a class to the render array, we would have to also worry about time-based cache invalidation for the dates that are still upcoming. I realized that with a tiny amount of Javascript we make the comparison in the front end, and leave the date display cached indefinitely. The last addition was add-to-calendar links on the camp dates, to make it easy for visitors to keep them in their upcoming schedules.The recommended process (for now, at least) is to follow the steps in the README. There are a total of 12 drush commands to run, but the beauty of performing them manually is that you can choose which you want and which you don’t need.Because accepted sessions sometime fall through, many camps will keep a number of waitlisted sessions. The workflow now contains a “Waitlisted” state, and camp organizers can bulk moderate sessions into this state, or from Waitlisted to Accepted as needed.I ventured to “The Land of the Sky” to deliver a talk about the Drupal Event Platform, including a demo of the latest features. I know it may not seem like it’s been that long since my last post about the Event Platform, but there have been some updates worth sharing with everyone who wasn’t able to make it to my talk.The initial version of the Event Platform was focused on solving for the use cases that are specific to Drupal camp websites. But some of the feedback we got was that camp organizers had hoped for an overall production-ready site when they used the Event Platform. I would still like for elements of the Event Platform to be usable by existing sites, or sites with somewhat different needs, but to help ease the process of building out a camp website from scratch, I started working on the Event Platform Starter.Now we have a way to easily track which sessions have been declined, but how could we make this less manual? I remembered my work on a module called Content Moderation Link, designed to allow for workflow states to be changed by clicking a specially formed link. In fact, it was originally created specifically to help with the use case of content moderation via email. I could update the emails that are sent to session authors to confirm or decline their session, and then the site would automatically track which sessions are ready to schedule.
Since its initial version, the Event Platform has had a session acceptance workflow. It worked well, and was able to automate the process of notifying session authors as their session proposals were accepted or rejected. There were some opportunities for improvement, however.

Optimizing for Maximum Impact

For example, it occurred to me that notifying the session authors wasn’t all of the work we could automate as part of the session moderation process. It’s also typically necessary to confirm that the speaker(s) are still available to present the session. Typically this is done by email, and sometimes it’s a manual process, requiring a volunteer to keep track of which accepted sessions are confirmed, follow up with the ones that aren’t, and so on.If you’d like to try out Event Platform for yourself, I’m also thrilled to announce that we now have it available as a template on Drupal Forge. This will spin up a fresh install you can use to explore the features, and see how it looks with your own event’s information. If you like the result, you can export it to public hosting to have it served from your own, custom domain.As I made my way home from my first in-person DrupalCamp Asheville, I was still awash in warm memories of lively discussions and laughs with a Drupal community that increasingly feels like an extended family. I got to catch up with good friends I’ve known for years, and meet new people I hope to see again.Also, all of the graphical elements on the home are configurable: graphic below the heading, texture overlay on the heading, and the video that by default plays behind the heading. Also, any of these elements can be turned off entirely in the theme’s settings.While I explore potential ways to have the Event Platform Starter realize its original vision, it’s still the best way yet to build a new website around the Event Platform. It will pull in all the dependencies for Event Platform and Event Horizon, and even pulls in some of the component recipes within Drupal CMS. Specifically, it will pull in:The work on Event Platform and in particular Event Horizon has also been helped along by implementing the latest versions of both of them (using the Event Platform Starter) for the recently announced Southwestern Ontario Drupal Camp. For example, this work helped me identify that some of the date formatting didn’t work as well for single-day events.P.S. if you want watch my Asheville talk, the video is below. The demo starts at 19:19 if that’s what you’re most interested in.A display of dates for the event, with past dates striked through and the event dates having calendar links

Improving Stability Across the Ecosystem

There were a couple of ways the module could be improved, however. For starters, actually crafting the link was a manual process, even though it needs to follow a very specific structure. The ECA module (which is what sends the emails in the Event Platform) has extensive support for tokens, so I upgraded Content Moderation Link to provide its own tokens. Now moderation links can more easily be integrated into any content, though if you’re wanting to include them in content outside a system like ECA (which has its own token support), you may need a helper module like Token Filter.A display of information for the days a camp spansMeanwhile, the Event Platform has also implemented a variety of best practices on its own. Content types have default metatag and schema.org markup patterns set, to provide helpful metadata for search engines. Social sharing continues to be a crucial strategy to help amplify the impact of any site’s content, and this is at least as true for camp websites. A configurable block for social sharing links will now display on all public pages, and Open Graph and Twitter Card tags will be populated automatically, but can be overridden. An upcoming priority will be setting up the Generate (Social Media) Image module to automatically create social media cards and further improve how sessions appear when shared on social platforms, while minimizing the effort for camp volunteers.We’re also in discussions with a couple of prominent Drupal camps about getting them using the Event Platform for the next version of their websites, and in his remarks at DrupalCamp Asheville, Drupal Association (DA) CEO Tim Doyle floated the idea of having the Event Platform officially supported by the DA as a way to better support Drupal events. Hopefully there will be more updates on this front in the next blog post.The idea is to have a site recipe that can be used to pull in all the best practices needed to spin up and launch a full-featured website. Unfortunately, there were some unexpected challenges. Even though installing the Event Platform on its own always takes less than twenty seconds in my local environment, performing the same install within a recipe (even without adding any other projects or config actions) runs for several minutes and then fails with a timeout.I want to close out this post by giving shout-outs to some amazing people. Darren Oh at Drupal Forge has been a huge help. And Bernardo Martinez continues to be an incredible sounding board and collaborator. I’m excited about what we’ve been able to achieve together, and about the road ahead.Also, after clicking a moderation link, the result had always been to redirect to a configurable destination page. This was implemented partly because Content Moderation Link can support a single link that specifies multiple entity ids, but I suspect that in practice this is more of an edge case. I updated the module so that if only one id is specified in the link, on completion of the moderation transition it will redirect to the entity, which seems like expected behavior.Of course, it’s also often a good idea to provide more than one path to achieve the same result. I also wanted session authors to be able to confirm or decline their session on the session page itself. Unfortunately the widget that Drupal core provides for moderation on the page view only displays on unpublished pages. So the Event Platform now contains a new custom block for this purpose, that will only be visible to the session author. 

Similar Posts