1. Create a new field in the CalendarInterface table called "CustomActions". This should be a repeating text field: give it about 10 repetitions. You'll paste the actual text of each custom action into one repetition of this field. (You can see some example text here.
4. Continue editing the "Load Source Settings at Startup" script and find the comment "Custom Event Actions..." where you specify the button name and the script to run for each custom action. Where your FileMaker scripts were described like this...
"Button Name, FileMaker Script Name"
"Button Name, file:customaction.txt"
...where "customaction.txt" is one of the files you named and exported in the script you wrote in step 2.
5. Run your solution's "Upon Opening" script and your custom actions should be working. =)
Using Event Data Tokens
An example URL using data tokens might look like:
Here is a list of all the tokens you have access to:
allDay contactID contactName description end (the end timestamp of the event) eventID eventSource (the number of the event's source: "1" not "Source No 1" projectID ProjectName resource start (the starting timestamp of the event) status titleEdit (the event summary) title (your eventsummerycalc field)
An example here might be:
var eID = [[eventID]];
Even with boolean values like allDay the preferred method here is to use a string for example:
var isAllDay = "[[allDay]]" === "true"; //Evaluates to a boolean
Some Custom Action Scripts You Can Start Using
Use the examples below as the starting point for your own actions.
Slack WebHook (Send A Message To Slack Group Chat)
Create, reschedule, and start GoToMeetings from within DayBack Calendar. Instructions and a movie of this in action are here.
Harvest Time Tracker Widget
Show an in-line time tracker from your harvest account to start a timer related to this task. This is the time tracking widget we demo'ed at DevCon 2015 (movie here ): harvest.js
Parse And Open URL In Event
This action looks through your event's description and will open the first URL it finds: openFirstUrl.js
Here's a related action that will open a URL in the Location field or show a dialog that the field is empty: conditionallyOpenURLjs
Confirm Appointments or Collect Information in a Form
Designed to be run as an event action in a shared view, this will show a simple wufoo form when a recipient clicks on an event. DayBack passes some event details into the form and then a receipt of the confirmation is sent to the recipient and the organizer. confirmAppointmentWuFooForm.js
We use a wufoo form in this example since it's simple: field validation and emailing is all handled by wufoo so the event action we have to write is pretty simple. Here's a short video of this one in action.
Track UPS Package
Similar to opening a url, this action looks through your event's description and will track the first UPS package code it finds: track-ups.js
Create a link to your existing calendar view for DayBack users within your organization
This custom function takes advantage of the seedcodeCalendar.get(filterType) function to create a URL that can be shared with DayBack users within your organization. This link will take them right to the same view, with the same filters applied to the calendar, and even open the same event you have open: CreateInternalURL.js
Validate Field Data Entry
This custom function allows you to specify fields in which you would like to verify data entry. ValidateFieldEntry.js If a specified field is left empty, a notice will pop-up notifying the user and allowing them to continue editing the event in the popover, or save the event with the empty fields. Click here for a video of it in action.
Send an Email with a custom or event action
Here are 2 separate examples that compose a new email with the event details in the system's default mail client: SendEmail.zip
emailSupport.js is a custom action that allows you to press a button in the event window and compose an email to "support" with the title, description, and a link to the event.
emailSupportOnHold.js is an event action that triggers when the event is saved and it's status changed to your specified status ('On Hold' in this example). It will then compose an email notifying the event is in the specified status and containing the title, description, and a link to the event.
Disable All-Day Events
This On Event Create event action turns attempts to create an all-day event action into a scheduled event at the current time-slot with the duration set from your DayBack settings. disableAllDayEventsV1.js
Call Scripts in WebDirect
You can use custom actions to fire scripts in your FileMaker Pro solution, in FileMaker Go, or in WebDirect. For Pro and Go you'll use the fmp;// url format documented here. For WebDirect you'll use a slightly different format. Here is the url format you'd use to execute a script in FileMaker WebDirect:
There are a couple caveats to running scripts in WebDirect via urls. We hope FileMaker, Inc. will change this in a future version, but for now...
• Calling a script in WebDirect will create a new database session that FileMaker Server treats as a new concurrent connection.
• Before the script runs your solutions "OnFirstWindowOpen" script will run.
• If you elect to run the action on the same window and you show the WebDirect toolbar, you'll see a second tool bar below the current one. (That's a WebDirect bug we hope gets squashed soon.)
Most everything. We don't allow access to the global window object but all built in functions for window can still be called directly. For example: open(), close(), alert(), location.href, can all be used as long as you don't use them in the context of window. In other words use location.href instead of window.location.href.
DayBack also includes a few popular libraries to make coding easier. jQuery, BootStrap, and moment.js are all included. So anything you can do in one of those libraries can be used in a custom action.