Translators Wanted

I’m planning to introduce support for translation in the next update. So far, I’ve got interest in French and Danish. I’m a mono-linguistic American, so my contribution will be limited to tagging words and phrases for translation and looking for collaborators who can do the actual translating.

The process is outlined at http://codex.wordpress.org/I18n_for_WordPress_Developers

Update 12/29/2010: I’ve finished flagging most of the elements in the user interface that I thought might need to be translated and have added them to the file rsvp.pot in the plugins/rsvpmaker/translations subdirectory of the latest release. This is the “catalog” file that you load into a tool such as POEdit to translate words and phrases such as “RSVP Now!” into whatever makes more sense in a given language.

Send me your translations to be included with a future release, and I will be happy to credit your contribution.

Some Users Reporting Page Not Found Errors

A few users who have tried the RSVPMaker plugin report problems with getting 404 page not found errors when they try to follow a link to one of these entries. Let me know if you experience this issue, as I’m trying to track down the cause. It seems to work fine for most people, but I may be running into some kind of clash with other plugins that manipulate the WP rewrite rules object.

One website manager I’ve been working with has it functioning correctly on one site she manages, but not another. Very puzzling.

Update: 12/29/2010: I think I’ve now resolved this issue by changing some of the code that sets up the custom post type and sets the rewrite rules.

How to Post and Email an Event

The RSVPMaker and ChimpBlast plugins work together to let you send event invitations through the MailChimp broadcast email service.

This tutorial uses the system as installed on the Economic Forum of Palm Beach County website as an example. Using the RSVPMaker options page, I’ve configured things so we always ask for an RSVP response by default and a block of default text with boilerplate on the standard meeting location and payment details is loaded into the editor when I add a new event.

I then add a headline and details about the specific event, set the date and time and publish my event.

Creating an Event

After publishing my event, I switch to the Eblasts menu and click Add New. I get a blank form, but at the bottom of the form you will see a list of links to upcoming events. Click the link to load the event into the editor.

EBlast Editor

Here, you see the formatted text of the event has been loaded into the editor. Add a title (which will serve as the subject line of the email). You can add also add an additional message introducing the event or encouraging people to RSVP online.

Load Event into Eblast Editor

When you click the publish button, you will get a prompt to “View Post” just as you would for a regular blog post. In this case, “View Post” will take you to a preview of the message in the email template.

"Publish" the Eblast

At the top of the email preview screen, you will see options that allow you to send yourself a preview of the message (good for checking that it shows up correctly in an email client) or send it out live.

Preview the Email

Here is what this message looks like in GMail.

Send a Test

When the Recipient clicks on RSVP Now, he or she will be taken to the event page on your website. If the recipient has registered for events before, using the same email address, RSVPMaker will try to look up contact details (such as phone number) rather than making the user enter them again.

RSVP Form

Feature Requests So Far

Update: I wound up publishing a new version that addresses most of these requests sooner than planned, after I found a few other errors that needed to be corrected.

I expect to publish an update to the RSVPMaker Plugin in about a week. Feedback has been good overall. People who have tried other event management plugins tell me mine seems more flexible. I had tried some of the others and they were never quite what I was looking for, or not close enough to convince me to stop developing my own.

Here are a few improvements people have asked for, none of which looks too difficult:

  • A configuration setting choice between AM/PM times, as used in the U.S., and 24-hour time, more common in the rest of the world.
  • Ability to set the maximum number of participants allowed for each event.
  • A way to set the maximum number of events to be displayed in the headline list or sidebar widget.
  • Better documentation of the shortcodes available for use.

I’ve already done some of this, but probably need another week or so to pull it all together. Let me know if there are other things you would like to see.

RSVPMaker Shortcodes

To set up a listing of events, include one or more of the following short codes. These are meant to be used in a standalone page, rather than a blog post.

The Events page on this website uses two shortcodes. The first one sets up the calendar that appears at the top of the page. The second one sets up the loop for displaying upcoming events.

[event_listing calendar=”1″]

[rsvpmaker_upcoming no_events=”Check back soon.”]

[rsvpmaker_upcoming calendar=”1″] displays the calendar, followed by the index of upcoming events.

[rsvpmaker_upcoming type=”featured”] Displays only the events of the specified event type (“featured” type available by default as a checkbox on the event editing screen).

You can also use:
[event_listing format=”headline”]

I often use this on the front page of a website where I want a simple events listing. The output looks like this:

RSVPMaker also provides a widget you can use to display upcoming events in your sidebar.

Shortcodes used on home page for event headlines, featured events

Update for version 2.5.5

The rsvpmaker_upcoming shortcode now accepts limit=”x” (show x number of events) as an attribute. Example [rsvpmaker_upcoming limit=”3″] would retrieve a maximum of 3 posts.

You can also use add_to_query=”myquerystring” to modify the query using query_posts() query string syntax. Example: [rsvpmaker_upcoming add_to_query=”p=99″] would retrieve a single rsvpmaker post with the ID of 99. This appends the parameters you provide to the default query string, so the whole thing would be something like┬ápost_type=rsvpmaker&post_status=publish&p=99.

How to Set Up PayPal with RSVPMaker

RSVPMaker includes integration routines from the PayPal software developer’s kit to allow you to solicit online payments for your events and record which users have paid. The setup is a little bit involved, but there’s a reason for it.

I could have made it easier to set up RSVPMaker to work with PayPal, but for security reasons I hesitated to do so. If I had you enter your security credentials into a WordPress and save them as options associated with the application, they would be stored in the WordPress database and potentially be vulnerable to exposure through any hack that might allow someone to gain database access. While WordPress is secure enough for many purposes, it does get hacked from time to time, and I wouldn’t want anyone to gain access to your PayPal account (and, indirectly, to your bank and credit card accounts) for the sake of making things more convenient.

So I instead require you to edit the paypal_constants.php file in the paypal subdirectory of the RSVPMaker distribution. You will have to enter your API Username, API Password, and API Signature in that file. To obtain these you must have a Business or Premier PayPal Website Payments Standard or Website Payments Pro account (in most cases, I recommend Website Payments standard, which provides the needed functionality but does not require a monthly fee). Log into PayPal and visit the Profile Menu, follow the link to API Access, and then View API Signature. This will display the codes you need to copy into the configuration file.

I recommend storing this file outside of the web root directory — or at least somewhere other than the default location — so that it’s not possible for an attacker (who may have read these instructions) to browse to

http://yoursite.com/wp-content/plugins/rsvpmaker/paypal/paypal_constants.php

and make some kind of mischief on it. If your directory structure is /home/account/public_html then putting the file in /home/account and giving it a different name would be better.

Once you have this set up, record the path to the configuration file on the Settings screen for RSVPMaker, and you should be good to go.

Create a test event with a fee associated with it, go through the RSVP process, and you should be prompted to pay online. When you click the Pay Now button, you should be redirected to a page on the PayPal website that displays the name of your organization and asks you to either log in or provide credit card information to make a purchase.

Here is a visual walkthrough of the setup steps:

Record location of configuration file. Setting screen should show OK to confirm rsvpmaker can find the file.
In the event editor, set the price or prices you want to charge.
Attendee makes payment selections as part of RSVP
Prompt to pay online
Redirect to PayPal payment page

What You Can Do With RSVPMaker

I developed the RSVPMaker plugin to serve the event scheduling needs of multiple volunteer organizations, political campaigns, and professional groups I have worked with. It attempts to address many of the common requirements of these groups, while still leaving a great deal of flexibility for customization.

RSVPMaker Event Editor
RSVPMaker Event Editor

The plugin uses the custom post types feature introduced in WordPress 3.0 to treat events differently from other types of posts, while letting you create and edit them using the same basic WordPress editing tools. The event editor essentially looks like the blog editor, but with a few extra options for specifying dates, times, and RSVP options.

You can then create an events listing on your website with the events listed in chronological order, as opposed to blog style reverse chronological order by the date of publication.

You can modify the RSVP form to ask for more or fewer details, according to your preference. The sample RSVP form used on this website is an abbreviated one, but sometimes you may want to collect more complete contact information. For example, the Florida political campaigns I’ve worked with are required to collect full contact information plus the employer and occupation of everyone who attends a fundraiser.

Features of RSVPMaker:

  • Use the standard WordPress editor to enter and style text and upload images.
  • Set one or more dates to be associated with your event.
  • Specify just a start time, both a start time and an end time, or don’t include the time at all in the headline (for example, an all-day event where you will list the schedule details in the body of the event description).
  • Request RSVPs, if desired. Set one or more email addresses to be sent a notification as RSVPs come in.
  • Configure the default details to be included with new events. For example, if a group has a standard meeting place, you can have the boilerplate details with the address and a map link for directions included by default. You can specify whether RSVPs should be requested by default, if you want that most of the time, or only turn on RSVPs when needed, and you can set a default email address for RSVP notifications to be sent to.
  • Prompt attendees to choose one or more specific timeslots (example: signing up volunteers for shifts on a petition drive or bake sale).
  • Request online payments via PayPal. Set pricing to be calculated according to the number of participants in one or more categories (for example, a different price for members and non-members or children versus adults). Some manual setup required for PayPal configuration.
  • Modify the plugin’s default behavior by overriding functions. The plugin checks for a custom.php file (sample included) installed in the plugins/rsvpmaker/ directory, which you can use to substitute your own functions for things like the fields to be included in the RSVP form or the logging of attendee responses.
  • Display listings on an events page, or put an abbreviated list on your home page, using the RSVPMaker Shortcodes. A widget for displaying upcoming events in your blog sidebar is also provided.

I use RSVPMaker in conjunction with another plugin for integration with the MailChimp broadcast email service, which is not yet ready for public release. However, if you copy and paste an RSVPMaker event into the MailChimp editor, you will find that the RSVP Now links are coded according to the MailChimp merge language with a ?e=*|EMAIL|* parameter that will be substituted with the recipient’s email address. When a recipient who has previously RSVP’ed clicks on this link, RSVPMaker will check to see if we have that user’s details on file so we don’t have to ask for them again. This is particularly useful for longer RSVP forms that ask for more details.

Help wanted: This plugin has served my purposes, but I’m sure there is room for improvement. I have not yet invested in things like localization. I’ve tried to follow best practices for web application security, but I would welcome any suggestions about how to make it better.