=== Plugin Name === Contributors: chuhpl, ManiacalV Donate link: http://heightslibrary.org/support-your-library/ Tags: meeting room, calendar, library Requires at least: 3.0.1 Tested up to: 6.0.1 Stable tag: trunk License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Book a Room is a library specific meeting room reservation and event calendar system that manages both public and staff events. == Description == ** IMPORTANT! A recent update requires to deactivate and reactivate the plugin to create a new Capability called bookaroom_admin. This will also apply it to Administrators. You can create a Role or apply this Capability to any other users who need access to the Book a Room admin menues and functions.** **Note: You need the [Book a Room Event Calendar plugin](https://wordpress.org/plugins/book-a-room-event-calendar/) to view the Event Calendar.** == Backup before updating to 2.0 and above. == Commercial event calendars can be expensive, confusing for both staff and patrons, and are generally developed with businesses, not libraries, in mind. **We wanted to develop a system that is designed for libraries!** The meeting room system we developed and use was designed in-house by our marketing team and coded by our staff developer over the course of about a year. It has improved our workflow, lessened staff stress and frustration, minimized mistakes, and has made our staff and patron's experience a better and more pleasant one. ### Here are a few things we thought about in tackling this project: * **Time** * Whether you're spending your precious off-the-floor time trying to make sense of yesterday's meeting room requests, trying to contact today's reservations after the power (and internet) went out, or are helping a patron sign up over the phone, any unnecessary or excessive time spent dealing with your meeting room system is time away from your other patrons. We started fresh and looked at what we needed as a multiple-branch library system instead of trying to make a cure-all for every situation. Because of this, we were able to simplify our workflow by saving time on managing requests. We also simplified the public forms so that staff spends little to no time handling the questions and problems that a more complex system can create. * **Price** * Since the setup and yearly fees of commercial systems can cost tens of thousands of dollars, we wanted to develop our own system that would be free (outside of our developer's time). We knew from the start that if we could get it to work we wanted to share it with other libraries (or anyone interested) by making it open source and submitting it to the Word Press plugin repository, once we felt we had a finished project. We wanted to make sure that it would be easy to set up, simple to use, and provide a few workflow optimizations to save staff time. Our choice of platform had to be WordPress, an open source and free blogging platform that is one of the most used platforms available; it has a vast amount of plugins, tutorials, themes, and technical support forums available for free online. They also have a great online reference for plugin coding that is always up to date. * **Bells and/or Whistles** * Since we had used other systems for years, we had grown to know what had been causing the bottlenecks in our workflow. We made the public forms easier so staff spend almost no time answering customer questions or fixing mistakes. We simplified the management so that creating, approving, and editing reservations and events is more intuitive. Since it's a WordPress plugin, it uses your own user accounts and doesn't need to be themed separately from your site. In addition to simplifying our forms, management console, and installation, we added some things that would save addition time, as well as help during a crisis. Daily meetings can be pulled up instantly by date and printed or emailed directly from the page with one click. Lists of contact information for any day's reservations can be pulled up and printed by date quickly and easily. Our forms have error checking that displays the error messages prominently and in English, not error codes. You can even quickly print out room signs that you can tape to your doors. == Installation == Installation requires a few, simple steps after you have initially installed the plugin. You can configure further but these are the simplest things you can do to get things running. * **Create a page for Reservations and a page for the Event Calendar.** * On the Meeting Room Page, the content should be the shortcode **[meetingRooms]** * On the Event Calendar (which can run on another sub-domain), use the shortcode **[showCalendar]** * **Enter the page URLS.** * Go to *Meeting Room Settings > Settings*. * Add the URL for your Meeting Room page and Event Calendar pages in the appropriate boxes. * Add everything after your site's URL including a trailing and leading slash. For instance, if your Meeting Room page is **http://meetings.heightslibrary.org/reserve-a-meeting-room/**, then you would enter **/reserve-a-meeting-room/** into the form. * If you are hosting the event calendar on a separate page, please use the complete URL in the Event Calendar box. * **Enter an Email into the Default Email for Daily reservations.** * This email will be the default on the daily reports. * **Enter pricing.** * Enter the deposit and per increment costs for profit and non-profit rooms. * **Create some amenities.** * If you have amenities available, go to the Amenities Admin and create a new amenity. Things that are checked 'Reservable' would be items that can be brought into the room like a TV, Blu-Ray player or Whiteboard. Things that always in the room, like a sink, microwave, fridge or PA system would not have to be reservable. * **Create a branch** * Go to *Meeting Room Settings > Branch Admin.* * Add a branch. * You must fill in a name, address and map link. * Make sure that Available to the public is checked. * If you want to be able to schedule events that don't have a specific room, check *Has 'No Location'* * For a closed day, do not enter hours. Otherwise, enter start and closing times for the branch. * **Create a room.** * *Rooms are actual, physical spaces. Create one for each space, even if you can partition rooms together to form a larger room.* * Go to *Meeting Room Settings > Room Admin.* * Click Create a new room. * Enter the room name, select the branch and choose any amenities, then submit. * **Create a room container.** * *Room Containers are reservable spaces and are made up of one or more rooms. If you have a Room A and a Room B, but can also turn them into one large meeting room, you would make 3 containers. One for Room A, one for Room B and one containing both.* * Go to *Meeting Room Settings > Containers Admin*. * Click Add a new container next to the name of the branch you want this room container to reside. * Enter a container name. This can be simple, like "Room A", or more descriptive, like "Room A & B" or "John Doe Room" if the area is named. * Enter the max occupancy. * Clicking *public* means that this room is available to be reserved by the public, not just for staff events. * Clicking *Hide on daily?* will remove it from the daily schedules. This is useful for staff reservable areas like art galleries and display cases that you want to track but not take up space on daily reports or signs. * Choose at least one room to be inside the container. * **Misc. data.** * you will need to enter appropriate email addresses and customize the emails on the Email Admin page. * You will need to enter your meeting room contract on the Content Admin page. * If you have any closings for holidays or other reasons, you can enter them on the Closing Admin screen. * **Configure the Event Calendar plugin.** * Go to Settings > Event Settings. This is in the regular Wordpress settings options. * Create a random security key. I usually just mash the keyboard. * Enter the database information from the site that you installed the main Book a Room plugin. This is the minimum required to get the plugin up and running. You can get more information about other settings and features in the rest of this documentation. == Frequently Asked Questions == = How does the "Reserve Buffer" work? = If today was the 1st of the month and you put a 0 in the reserve buffer, the public, who aren't logged into the site, can reserve rooms at any time after the current time (so nothing in the past). If you put in a 1, then today is out, but they can reserve all day tomorrow and beyond. If you put in a 2, then they can't reserve on the 1st or 2nd, but they can on the 3rd, etc. = Do I need to run both plugins? = No. The Event Calendar plugin just shows the event calendar. All of the configuration and work is done in this main plugin. We separated them in case you want to install the public facing Event Calendar on a separate subdomain or host. = Where can I get the Event Calendar plugin? = You can get it on the Wordpress Repository at the [following link](https://wordpress.org/plugins/book-a-room-event-calendar/). == Screenshots == 1. The available rooms list is generated dynamically. 2. The forms are Responsive and easy to use. == Changelog == = 2.9 = * BUGFIX: Fixed problems with errors on variables that weren't set yet on the Add Container page. = 2.8.9 = * BUGFIX: Fixed a few count() calls that were erroring out on empty. * BUGFIX: Changed the wp_enqueue_script to make jQuery work properly. * BUGFIX: Fixed a problem with a count() call in the Cities management template that was throwing an error if you had no cities entered (PHP 5 > 7 issue) = 2.8.8 = * BUGFIX: Fixed problems with errors on variables that weren't set yet on the Add Branch page. * BUGFIX: Fixed problems with errors on variables that weren't set yet on the Add Room page. = 2.8.7 = * BUGFIX: Fixed update routine for database. = 2.8.6 = * BUGFIX: Changed some functions to be PHP8 compatible. = 2.8.5 = * BUGFIX: Added missing column = 2.8.4 = * BUGFIX: Fixed the create_function depreciated error. = 2.8.3 = * BUGFIX: Registration and Max registration bug fixes in the sanity checking. * BUGFIX: Changed to using the WordPress wp_mail() function instead of the PHP mail() function. * NEW: Added Registration Contact Type option to the reg form. * NEW: Added the ability to force a user to click on "check boxes" in the contract content so that you can add "rules" that must be agreed to before continuing. * NEW: Added a new Capability called bookaroom_admin that allows you to apply it to a user or Role to restrict access. Administrator is the only Role given this access as first. Please deactivate and reactivate the plugin after updating to create the capability for the first time. = 2.8.2.1 = * One small tweak to the css that got messed up on large screens. (Amenities) = 2.8.2 = * Fixed 14 instances of maxlength being typed as maxlengtr. * Fixed 2 instances of contactState id being incorrect in inputs. * Added style "resize: vertical" to textarea to help on smaller screens. * Removed width from textarea css. * Removed "display: block" from label css. * Added floated divs around radio buttons. * Changed inputs to use mobile friendly number/email/tel instead of plain text. * Most of the changes fix the display and make things easier when using a mobile device. * Thanks to @speedy_snail for all of the assistance! = 2.8.1.7 = * Changed all instances of Event/Organization to Event / Organization to promote better line breaks on smaller screens. = 2.8.1.6 = * Removed a line that was causing a session error after activating, logging out, then loggin back in. = 2.8.1.5 = * Left the new containers but removed the clearfix css as it was causing more issues than it was fixing. = 2.8.1.4 = * Changed public instances of date() to date_i18n() to localize them. = 2.8.1.3 = * Missed one value. = 2.8.1.2 = * In my effort to format my code on the recent changes, a lot of whitespace was added to the form elements. These whitespaces have been removed. = 2.8.1.1 = * Changed the mainForm output for the public form to use output buffering and return the value instead of an return include. = 2.8.1 = * Added an outer