I've spent the majority of this week working on the new Event Editor Module for our re-write of Butter. This modules main purpose is to provide the developer of a custom butter application to visually edit Popcorn Events, whether using a custom editor or a default editor built automatically using the plug-in's manifest.
The team has been working on identifying exactly how we want to structure Modules for the new Butter API. After many conversations with Scott about how we should have this work, today things seem a lot more clear. Scott wrote a patch for the registerModule() method on Butter that basically allows us to instantiate the modules and pass them an options object.
I've now got a simple event editor module to work on. It's fairly basic right now, but proves that I'm on the right track. See a simple demo here. What's happening here is that I set my module up to listen for butter to trigger a "trackeventupdated" event, which calls the beginEditing() method inside of the Editor module. This method takes a Track Event object and a manifest as parameters. It then determines whether or not to use a default editor or if it should automatically generate html using the manifest. In the sample page, it generates what you see according to the manifest and throws in the values for each field in trackEvent.popcornEvent.
Its got a long way to go still but I initially just wanted to make sure that our module system was functioning the way I thought it was.