Integration: Adding iCal Support to Your FileMaker File
1. Install Zulu itself.
Follow these instructions to install Zulu on your FileMaker Server.
2. Backup your file.
Really. You'll be creating a new table in the steps that follow and you should always backup before making such changes. If you have FileMaker Pro Advanced, upload your file to your FileMaker Server and work on it there. Otherwise, make these changes locally before uploading the modified file to your server.
Copy the following scripts to your solution. If you're using FileMaker Advanced you can copy and paste these into your file. Otherwise, take your file off the server, and open it locally before importing the scripts: click the "Import" button at the bottom of the Manage Scripts window in your solution and import the following scripts:
- “Publish Calendar”
- 4a. Copy the “ZuluCalendarList” table to your solution. This will create a layout with the same name and all the table's fields on it. You may hide the ZuluCalendarList layout, but do not rename it, or add/remove fields from this layout.
- If you don't have FileMaker Advanced (which lets you copy and paste tables from file to file) you'll need to recreate the “ ZuluCalendarList” table in your solution by hand, and then add all the fields from it to the default layout the FileMaker creates for you when you create a new table. There are only 14 simple fields here so this won't take long, but make sure you get the auto enter field options exactly the same as they are in the sample file.
- You can also import the table if you don't have Advanced, but take your file off the server first.From your file select File / Import Records... / File and then select the Zulu sample file. Select the ZuluCalendarList table to import and for the target, select "New Table". FileMaker will create the new table and calcs for you.
- 4b. Do you have an existing "events" table? If not, copy our "ZuluSampleEvents" table to your solution.
5. Mapping Fields.
Copy the tab control from the “ZuluSampleEvents” layout and paste it into your solution on a new blank layout based on your events table (or the one your brought over in 4b above). There should be nothing else (or at least no other named objects, and no script triggers) on this layout.
- You can name this layout whatever you want: this will be the name of your calendar in iCal, though you can always change the calendar name later.
Follow the mapping instructions on the “ZuluSampleEvents” layout, selecting the relevant fields from your file. You may need to create a couple new fields in your events table if you don't have creation and modification timestamps, and you'll almost certainly need to create the zulu_UUID and zulu_ICAL_DATA fields on the required tab. And you can't use the same field for Date Start as Date End (same with Time End): create new "end" fields if you don't have them.
- You may want to copy some of these fields from the ZuluSampleEvents table in our sample file.
- Fields you probably already have...
---- Event ID DateStart DateEnd TimeStart Time End Summary Note
- Fields you likely don't already have...
---- zulu_ALARM_EMAIL_RECIPIENTS zulu_ALARM_TRIGGER_MINUTES zulu_ALARM_TRIGGER_TIMESTAMP zulu_ALARM_TYPE zulu_CREATION_TIMESTAMP zulu_DELETED zulu_ICAL_DATA zulu_LOCATION zulu_MODIFICATION_TIMESTAMP zulu_URL zulu_UUID
- Make sure the fields you create are of the same type (number, text, or timestamp) as they are in our sample file, and that your creation and modification timestamps auto enter.
Note that this zulu_UUID is not the unique ID in your table (even if you have a UUID), this is iCal's UUID for the event, so be sure to create a field for this. Your unique ID gets mapped to "Event Primary Key". Zulu handles this field and populates it as needed, so don't worry if you don't see it have a value right away.
The zulu_UUID also has an auto enter definition you'll want to preserve (we auto-enter a blank value). Make sure you set this up exactly as it is in our sample file and that the option "Do not replace existing value of field..." is unchecked.
Don't worry about calendars from multiple tables at the moment; you can come back and get additional tables set up once you have your first table working.
6. Enable XML Web Publishing.
Select File / Manage / Security and edit the privilege set(s) that will be accessing this file from iCal: make sure each has "Access via XML Web Publishing" enabled:
7. Publish your calendar.
Upload your file to your FileMaker Server if you've been doing this work locally.
Navigate to the field mapping layout in your file and run the "Publish Calendar" script which you pasted into your solution.
Enter your FileMaker account and password when prompted. This doesn't have to be the full access account and password, but it does have to have write access to the ZuluCalendarList table. The account and password entered aren't stored anywhere.
8. Add date range gates.
Return to your ZuluCalendarList layout and enter a number of days in the "zulu_showDaysInFuture" and "zulu_showDaysInPast" fields. If you have events near the current date just enter 30 in each field to get started. These date range gates control how much of your FileMaker table zulu tries to load into iCal. Set like this it will load from 30 days in the past through 30 days in the future. You can tune these values later and read up on date range gates here: using date range gates. Click out of the range fields to commit you changes.
The "Published..." page will contain your new calendar's URL and instructions for viewing your calendar in iCal, follow these instructions to see the calendar(s) on your iPhone: configuring your iPhone.