Category

Booked

Booked Tips: Showing Events on Your Website

Booked includes a lot of features that you may not know about. In this article we’ll talk about a simple way to display reservations from Booked on your website.

If you just want to display reservations from Booked to your guests without needing them to navigate to the application and browse the schedule, there is a simple JavaScript snippet you can include on your website.

The first thing you’ll need to do is make schedules or resources public. Anything that has not been marked as public will not be displayed.

The next task is a little bit more technical. Servers have a security feature that prevent loading JavaScript from different domains (Cross Origin Resource Sharing). You’ll need to tell your web server that it’s OK to serve this content. In Apache you can accomplish this by adding the following line to your .htaccess file.

Header Set Access-Control-Allow-Origin "*"

Once that’s done you’re ready to add the snippet to your website. If you open Help and go to the section titled “Embedding a Calendar Externally” we give you the full snippet. It will look something like this.

<script async src="https://demo.bookedscheduler.com/Web/scripts/embed-calendar.js" crossorigin="anonymous"></script>

You can drop this anywhere in your HTML body content and we’ll load reservations using the default snippet settings.

The snippet displays a very simple HTML component that isn’t the prettiest thing to look at.

My feeling is that you’ll want to fit the component in with your website’s theme, so you can take advantage of the CSS classes we provide to style it however you like. All of the CSS class names start with booked-

Customizing the Contents

There are multiple options you can include on the script to customize what’s shown.

NamePossible ValuesDefaultDetails
typeagenda, week, monthagendaControls the view that is shown
formatdate, title, user, resourcedateControls the information shown in the reservation box. Multiple options can be passed. For example, to show date and title request date,title
dAny digit between 1 and 307Limits the number of days shown for the agenda view
sidAny schedule public IDAll schedulesLimits the reservations shown to a specific schedule
ridAny resource public IDAll resourcesLimits the reservations shown to a specific resource

For example, to show the month view for schedule 123 and the date and title for reservations, you would use the following.

<script async src="https://your-booked-url/Web/scripts/embed-calendar.js?type=month&sid=123&format=date,title" crossorigin="anonymous"></script>

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This article was written on November 15, 2019, so check your documentation for the latest options.

Booked Tips: Custom Attributes

Booked includes a lot of features that you may not know about. In this article we’ll talk about extending Booked to gather additional information from your users. For example, you may need to know the configuration of seating for a room, or mileage out and mileage in for fleet management.

Reservation Custom Attributes

Custom Attributes provide a powerful way to make Booked fit the way your organization works. We’ll first look at reservation attributes, which are the most common and useful type of custom attribute. Open Application Management > Custom Attributes to get started. Click Add an Attribute and you’ll get a form like this

We offer a few different options for the types of attributes to add. Single Line Textbox, Multiple Line Textbox, Select List, Checkbox, and Date Time. Just pick the type and set a Display Label. Here’s what a Select List may look like on the reservation screen.

Every time a new reservation is made or updated, the user will be prompted for these additional pieces of data.

Let’s Get Crazy

We just covered the most basic reservation custom attributes, but we can do a lot more with custom attributes.

An attribute can be required or optional. Ok, that’s not so crazy, but it’s useful.

An attribute can also be used for Admins Only, which means regular users will never see it, but admins will. This is perfect for capturing internal-only information that the user is not able to provide or should not see.

Private attributes are a lot like admin only attributes, but the reservation owner will also have access to it. Again, this is great for confidential information that the user provides.

Collect In Specific Cases is an interesting option that only adds the custom attribute in specific scenarios.

Using this option you can add custom attributes to the reservation screen only if the reservation is being made by a specific user or if the reservation includes a specific resource. You can almost think of this as a user or resource custom attribute where the values are provided as part of the reservation.

An example use case for this may be a unique characteristic of a conference room. Let’s say only rooms of type “Auditorium” have a podium and you need to know whether or not a microphone is needed. If you pick the Auditorium resource type in the Collect In Specific Cases then users will only see this if they’re booking an Auditorium room.

Other Attribute Categories

You can also add additional attributes to Users, Resources, and Resource Types.

These are pretty self explanatory. User attributes are entered on registration, user profiles, and within the admin tools. Resource attributes are entered on the resource management screen. Resource Type attributes also show up on the resource management screen, but are limited to resources of a specific type.

The options for creating custom attributes here are similar but not as extensive as Reservation custom attributes. One difference for these types of attributes is that you can choose which specific items the attributes apply to. You can have completely different attributes for different resources, for example.

But wait, there’s more…

Custom attributes automatically get included in reports, so you can easily export that information and build custom data views.

Resource custom attributes show up as filter options on the Schedule and Find a Time pages.

You can color code reservations based on custom attribute values. So if you have a select list of options, you can make all reservations with option 1 selected red and option 2 selected can be blue. Perfect for at-a-glance categorization.

You can also show reservation custom attribute values in the reservation label on the schedule page.

So instead of (or in addition to) the owner name or reservation title, you can show user-provided information. To do this, first go find the Id of the attribute you want to include.

Then go into Application Configuration and change the reservation.label setting to be {att#} where # is the Id of the attribute. Alternatively, you can include all attributes by setting this to {reservationAttributes}

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This article was written on November 6, 2019, so check your documentation for the latest options.

Booked Tips: Monitor Display

Booked includes a lot of features that you may not know about. In this article we’ll talk about the monitor display, which is perfect for showing reservation information on a big monitor for all to see. Some good uses are waiting rooms, a shared space or common area, or at reception.

This view has a few options, but by default you’ll see a grid schedule view of the default schedule. It will look something like this.

You can change this to show different schedules, different resources, or a list instead of a grid.

To get the monitor display view, first go to Application Configuration and set view.schedules to true. Then open a browser and navigate to https://your-booked-url/monitor-display.php

That’s it! This is a simple way to broadcast the real-time availability of resources to a common area.

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This article was written on November 4, 2019. Check your documentation for the latest options.

Booked Tips: Emailing Users

Booked includes a lot of features that you may not know about. In this article we’ll talk about the capability to email Booked users.

There are lots of times when you may need to send a notification to Booked users. Maybe a piece of equipment is unexpectedly unavailable or there is a change in booking policy.

Booked announcements let you post these messages in the application and also gives you the option to email the message to users. Open Application Management > Announcements to post something.

You can limit the audience of announcements with a few simple options. Click the More Options link.

Here you can slim down who an announcement will be seen by or sent to, if you’re emailing it. You can limit it to certain groups of users. You can also limit it to users who have permission to certain resources (this is especially useful when posting resource-specific announcements). You’ll also find the Send as Email option here.

You can also send (or resend) announcements that have already been posted.

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This article was written on November 4, 2019. Check your documentation for the latest options.

Booked Tips: Setting up Administrators

Booked is configurable in so many ways. In this article we’ll review how to set up multiple levels of administration.

Most of the time organizations can get away with the single administrator that is the default in Booked. The first user to register gets full administrative rights for the whole application. So they can create resources, manage reservations, control configuration settings, and so on.

This is a powerful set of permissions and it should be limited who gets them. If you do want to add users to the application administrator role, you have two options.

The first is to open Application Configuration and add the other users’ email addresses to the admin.email setting – just add a space or comma between each email address.

The second option is the same way you can add lower-privileged administrators, as well.

First, create a new group in Application Management > Groups. Then change the roles for the group to include Application Admin

Finally, add users to this group. Every user added will have full application administrator rights.

Other Types of Administrators

Booked has multiple levels of administration to allow certain people to do things like manage a set of resources or update user details for a set of users. These are Group Admins, Resource Admins, and Schedule Admins.

Group Admins

These users can update user details and manage reservations for specific users. To set them up, follow the same steps as for Application Admins, except choose Group Admin as the role.

Next we need to set the users that these admins can manage. To do this, create another group (I created one called Users), then set the Group Administrator to the admin group.

Now every user in the Users group can be managed by users in the Group Administrators group.

Resource Admins

Users in a Resource Admin group can manage resource information and reservations for a set of resources. To set them up, follow the same steps as for Application Admins, except choose Resource Admin as the role.

Next we need to set the resources that these admins can manage. Click the drop down in the Roles column, then pick the Resources option. Finally, check off all the resources that you’d like this group to be able to manage.

Schedule Admins

Users in a Schedule Admin group have all the same privileges as resource admins, but for all resources on a schedule. They also have management rights for the schedule. To set them up, follow the same steps as for Application Admins, except choose Schedule Admin as the role.

Next we need to set the resources that these admins can manage. Click the drop down in the Roles column, then pick the Schedules option. Finally, check off all the schedules that you’d like this group to be able to manage. Remember – they will be administrators for all of the resources on those schedules.

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This article was written on November 4, 2019, so check your documentation for the latest options.

Booked Tips: Tablet Display

Booked includes a lot of features that you may not know about. In this article we’ll talk about the tablet display, which is perfect for showing reservation information next to a resource. A good example is a tablet mounted outside a conference room, but this can be used for any type of resources.

Here’s an example of what this looks like.

You can quickly see if a resource is currently in use, what the schedule for the day looks like, and create ad-hoc reservations. If there is a reservation that is pending check in, a button to check in will be shown instead.

Great, so how can this be enabled, you ask? It’s simple.

On your tablet, open a browser and navigate to https://your-booked-url/resource-display.php. You’ll be greeted with a sign in screen. Sign in with an administrator account, then pick the resource you want to show.

That’s it. You can leave this up and it will continuously refresh with the latest information.

Hosting and Support

Did you know that I offer professional hosting and support for Booked? You can set up a free trial in minutes and get unlimited support.

This post was written on November 4, 2019. Check your documentation for the latest options.

Look Mom, No Hands! Test Driving Code Without A Mocking Framework

I love TDD. I haven’t found a more effective way to incrementally design and build software in the 15+ years that I’ve been doing this. I have formed and evolved a lot of opinions about how I approach TDD, though.

Recently, I wrote a post for EuroStar Software Testing titled Look Mom, No Hands! Test Driving Code Without A Mocking Framework

This is a topic that has been on my mind for a long time. It’s not intended to start a mocks vs stubs flamewar or anything like that. Instead, I wanted to walk through my progression of TDD practices over the years and share what I’ve learned.

Don’t get me wrong – test-driving with a mocking framework is better than not test-driving at all. I just prefer stubs.

Looking back at the test cases in the Booked source code which utilize PHPUnit’s mocking framework (yes, there are still a lot), I can see just how entangled the test code is with the implementation of the production code. The source for Booked changes frequently and it is covered by more than 1000 unit tests. New features are introduced and, occasionally, some of the unrelated tests fail.

They fail because there is too much specified in the mock setup. In order to validate the behavior of some area of the code, I have to set up unrelated mock expectations to get collaborating objects to return usable data. If I change the implementation of an object to no longer use that data, my test shouldn’t fail.

A couple of years ago I stopped using PHPUnit’s mock objects and I’ve seen the resiliency of my unit test suite increase. I’ve also seen my development speed and design quality improve. Instead of ambiguous mock expectations scattered throughout the tests, I’ve built up a library of stub objects which have logical default behavior.

When test-driving increments of functionality, I’m able to concentrate on the behavior that I need to implement rather than getting distracted with test setup and management.

More focus. Better design. Higher quality. No mocks.

Booked 2.7 is out in beta!

I’m thrilled to announce that Booked 2.7 has been released in beta. This version is packed full of long-requested features.

I don’t care about the details – how do I get it?

Eager to try it out? I don’t blame you 🙂

Download the beta from SourceForge

Give feedback and ask questions

Try the live beta demo

This is still beta software. While I’ve tested this pretty well, I wouldn’t recommend production usage just yet!

So, what’s all this new stuff?

I’m glad you asked!

Charging for Reservations

One of the most requested features over the years what the ability to hook into payment gateways to charge for reservations. 2.7 comes with integrated support for Stripe and PayPal.

You can now let your users purchase credits to be used for reservations. This harnesses the power of the Booked credit system – allowing admins to set peak and standard usage, configuring different credit rates for different resources – and seamlessly integrates it with payments. Your users will see an upfront cost for a reservation along with their credit balance. (For security reasons, this functionality is not enabled in the demo.)

Set up your payment details by setting allow.purchase to true in the credits section of your application configuration. Then open up Application Management > Payments to set the cost per credit, view the transaction log, and configure payment gateway details.

Terms of Service

Gaining a user’s consent before allowing access to a resource is a critical part of the reservation workflow for many organizations. You can now upload terms, link to terms, or simply embed them directly into the application. You can configure when to prompt users for acknowledgment of the TOS, either for each reservation or during registration.

Add terms of service from Application Management > Reservations, then choosing Terms of Service from the right hand drop down.

Schedule Availabiity

A schedule may only be available for a portion of the year. Seasonality, staffing, or business needs may allow reservations for a limited period of time. Per schedule, admins can now configure an option open and close date for a schedule. So if you have an event that runs May – July, it’s simple to ensure only the available dates are shown and limit reservations to that date range.

Set schedule availability from Application Management > Schedules, then editing the Available dates.

Overlapping Resource Reservations

A fundamental usage for Booked is to help organizations ensure that resources are never double booked. But many of you have asked to bend that rule. It’s now possible to let all resources on a schedule be booked by more than one user concurrently. Schedules set up to allow concurrent reservations will flip to the calendar view for a simple display of all activity.

Allow overlapping reservations from Application Management > Schedules, then changing the option to allow resources to be reserved by more than one person at a time.

Fully Customizable Layouts

In most cases resource availability follows a fairly standard schedule – every 30 minutes between 9am and 5pm, for example. But there are some cases where you want to create very specific slots and prevent bookings at all other times. Say you want to set availability for two slots per month – an 8 hour slot on the first and second Friday. Switching your schedule to use a custom layout gives you full control to set specific availability times. These slots will show up as available on the calendar view and the schedule view will only show these times.

Customize your layout from Application Management > Schedules, then clicking Switch to a custom layout.

Distinct Add, Update, Cancel Notice Times

A simply powerful feature of Booked is the ability to set how much notice must be given before a resource can be reserved. But until now the notice period applied to adding, updating, and cancelling a reservation. An admin can now configure a resource to require 24 hours notice for reservation, 2 hours notice for an update, and 48 hours notice for cancellation, for example.

Set distinct notice times from Application Management > Resources, then setting any of the made, updated and deleted settings under the Access section for a resource.

Announcements on the Login Screen

Important announcements and updates can apply to all users. When posting announcements, admins can now choose where it shows up. The same power you have to set display times and priorities works for login announcements, too!

Add a login announcement from Application Management > Announcements, then choosing Login as the display page when creating it.

Default Group Membership

Would you like all new accounts to be added to groups by default? Finally, it’s possible by simply setting the group as a default.

Set default groups from Application Management > Groups. Check Automatically add new users to this group when adding or updating groups.

Multiple Resource Images

Another long-requested feature finally makes it to prime time. There’s not much to explain here – you can now upload an unlimited number of resource images. If there is more than one image for a resource, we’ll show a carousel and let your users scroll through all the pictures.

Add multiple resource images from Application Management > Resources, then changing the resource image. You can add as many images as you want!

Embed a Booked Calendar Directly in Another Website

Until now you’ve had to either IFRAME (ech!) or use the API to display a Booked calendar on another website. We now have the ability to include a single script reference to load a configurable view of Booked events. Just enable public visibility for a resource or schedule, then add drop one line of HTML on a page!

And more

There are dozens of other enhancements and fixes in 2.7 to make Booked the best resource scheduling software you’ll ever use!

  • Added ability to set comma or semicolon delimited admin.email configuration setting to allow multiple admin emails
  • Added ability to send a reservation to Google Calendar
  • Added ability to select a resource image while adding
  • Added ability to begin a reservation directly from Slack
  • Added ability to set view-only resource permissions
  • Added ability to sync group membership from LDAP and CAS
  • Added blackouts to schedule and resource calendar view
  • Added view calendar page
  • Added ability to require reservation title and description
  • Added user groups to report output
  • Resource QR code will open ongoing reservation if it requires check in
  • Upgraded jQuery to latest
  • Bugfixes

A Shout Out for Hosting

Love Booked, but hate the idea of installing, managing, and supporting yet another application? We offer professional Booked hosting directly from the authors. For just $10/month you get unlimited usage of Booked, premium support, early access to features, and more.

Start a no-obligation 30 day free trial now!