eFlyer is driven by WordPress at it’s core. Most of the nice pretty interface you see (including the really cool effect for displaying the flyers full sized) is courtesy a theme called Binary Blue. In addition, we’re using a fair number of WordPress plugins to get the behavior we wanted. Most of them are publicly available plugins. Others are in-house developed. Both ours and the public ones are available under the GPL license.

Public Plugins

  • Adhesive: This plugin allows us to mark administrative posts as “stickies” so that they show up and stay at the top of the first page.
  • Alphabetical Plugins: Lists plugins by name rather than by their file name.
  • Category Visability: Allows us to determine what categories will show up on the main page, the RSS feed, etc.
  • Enhanced Post List: adds some additional search options to the post management options (such as browsing by category and author).
  • FeedWordPress: this allows us to take an external feed and redisplay it on eFlyer. Note that we had to hack this plugin just a little to extend it’s functionality.
  • HTTP Authentication: allows us to tie the WordPress authentication into our institutional authentication (webauth)
  • Limit Categories: allow us to limit to which categories a user can post. This is really helpful in keeping standard users from posting something to one of our display groups (only display managers can do that).
  • Page Category Organizer: allows us a quick way to reorder pages we create
  • Post Moderation: allows a “standard” user to post a flyer and have it held for approval. Note that this plugin doesn’t work under WordPress 2.x, so we had to hack it to fix that. We also added some notification emails so that a poster gets an email once his or her flyer is approved or rejected.
  • Posts Begin/Expire: these two plugins allow us to assign a begin and end date to flyers.
  • Role Manager: this allows us to create some special WordPress 2.x roles that better meet our needs than the ones built in to WordPress 2.x.
  • Sidebar Widgets: a plugin that provides a nice way to manage what’s on the right hand side of the page.
  • Time Zone: this keeps WordPress up to date even when daylight savings time hits.
  • Votio: allows for voting on flyers and shows the most popular flyers. This is pretty heavily hacked to get it working with our theme, the sidebar widget plugin, and to get it to respect begin and end dates of flyers.
  • WP-Contact Form: gives us a one button creation of the contact form on the Contact Us tab

In-House Plugins

  • Automatic Image Enclosures: this takes any image in a post and puts it into WordPress’s meta area so that the RSS2 feed makes it an enclosure. This is how our Flash app knows what picture to display on our screens
  • Category Visibility Extension: Makes sure that the category list included in the list for a post includes only those that the category visibility plugin says should be shown
  • eFlyer Instructions: a little plugin that adds some instruction text to the page for posting a flyer.
  • FeedWordPress Extended Functions: this allows us to do some interesting things with feeds we import, including expire the WordPress post when the item disappears from a feed and stop a feed from updating the contents of a post after the first import of the item.

WordPress/BinaryBlue Hacks

Although we’ve tried as much as possible to use plugins to extend the functionality of WordPress, a few things simply required hacks to Wordpress. Namely:

  • ImageMagick support: We’re running Wordpress on a stock OSX server. Apple doesn’t build PHP with GD support, so the thumbnail creation in Wordpress doesn’t work by default. So we hacked admin-functions.php (with some help from posts on the WordPress support forum) to use ImageMagick instead of GD for the thumbnail functions. We also hacked the admin functions to provide larger thumbnails.
  • Inline Uploading: We wanted a slightly different set of default actions for the WordPress inline uploading, so we hacked the javascript in inline-uploading.php just slightly to have the default behavior be Linked to Image instead of the typical Not Linked behavior. We also added a little bit so that the image by default has a css class of alignleft so that the text can begin to the right of the image rather than below it.
  • WP-Register: We updated wp-register.php to provide some specific instructions on how to register in a way that will work with out internal authentication system. Also, because of the way the http-auth plugin works, we had to move a copy of wp-admin.css to the root of the Wordpress install so that wp-register still looked OK.
  • BinaryBlue updates: We changed some of the translations used in BinaryBlue to better fit the language we want to us, added some logic to the postmeta.php to have a note about clicking on an image to see it full sized, and removed the title from the search form to conserve space.

We’ll be posting links to our plugins as well as all the modified WordPress/BinaryBlue files soon. In the meantime, if you have any questions, please conact Kyle Johnson.