GithubHelp home page GithubHelp logo

dexit / booking-activities Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bookingactivities/booking-activities

1.0 1.0 0.0 4.96 MB

Wordpress plugin booking system

License: GNU General Public License v3.0

JavaScript 39.85% PHP 57.36% CSS 2.79%

booking-activities's Introduction

=== Booking Activities ===
Contributors: bookingactivities, yoancutillas
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7EKU434L7NEVC
Tags: booking, reservation, booking form, woocommerce booking, booking events
Requires at least: 3.6
Tested up to: 6.4
Requires PHP: 5.3
Stable tag: 1.15.15
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Reservation system specialized in activities: sports, leisure, courses, events, tourism, and more! Works great with WooCommerce.


== Description ==

Booking Activities is a complete booking tool designed for activities.
It is very easy to use:

1. **Drag and drop** your activities onto your schedule.
2. Copy / Paste a **shortcode** to display a booking form. Or **integrate it with WooCommerce** products.
3. **Pick** an event on this calendar and book it. 

Try this reservation tool live on the [demo website](https://demo.booking-activities.fr/en/), or [generate a temporary site](https://tastewp.com/new/?pre-installed-plugin-slug=booking-activities&pre-installed-plugin-slug=woocommerce&pre-installed-theme-slug=twentytwentythree&redirect=admin.php%3Fpage%3Dbookacti_calendars&ni=true) to test the backend!

[youtube https://www.youtube.com/watch?v=Q7gbK5i4DPU]

*Video made with v1.1.1. Booking Activities is constantly evolving.*


= Main features =

★ = Unique feature only Booking Activities has.

**Editor**

* ★ **WYSIWYG**: Visually build your plannings
* ★ **Drag and drop** events directly on the calendar
* ★ **Group your events** to easily sell bundles, subscriptions, seminars, or events spreading on several days
* Create **repeated events** (with desired frequency and exceptions dates)
* Unlimited calendars, activities, events and bookings.
* **Permission management system**: your managers manage only their own calendars and reservations. E.g.: You can [set up Booking Activities for a marketplace](https://booking-activities.fr/en/blog/set-up-a-booking-marketplace-with-booking-activities/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme) *(Booking Activities can only be managed from the backend)*.

**Booking forms**

* **Fully customizable** forms in a WYSIWYG editor
* **Shortcodes** to display reservation forms or simple calendars
* ★ Display events from multiple schedules and activities at once
* ★ **One-click booking**: just pick the desired event(s) on the calendar and click on "Book"! 
* Custom action when you submit the form or when you click an event: make a reservation, ★ **add a product to cart, redirect to a URL**
* Pick multiple events and book them all at once / ★ **add them all to cart at once**
* ★ **Seamless login / registration**: embedded in the form and processed with the reservation. You can also **book without account**, or **display a login form only** with a shortcode.
* 100% responsive: looks great on mobiles, tablets and computers.
* ★ *Set any custom fields and any booking metadata thanks to [Advanced Forms](https://booking-activities.fr/en/downloads/advanced-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=advanced-forms&utm_content=readme) add-on*

**Online payments with WooCommerce**

* Calendars are automatically integrated to WooCommerce product pages
* ★ Attach multiple calendars and activities to one WC product
* ★ **Cart expiration system**: bookings in the shopping cart are temporary
* Auto-validation when payment is completed
* ★ WooCommerce order status and its bookings status are smartly bound
* ★ Automatic refunds by WC coupon or via the gateway (if allowed)

**Manage reservations**

* Find all your bookings at a glance on a calendar and in a list. Use dynamic filters, sorting, and custom columns
* Booking actions: validate, cancel, reschedule, ★ refund...
* ★ Display your customer's bookings calendar and their booking list with a shortcode
* ★ Your customers can **cancel** or **reschedule** their bookings and **ask a refund** by themselves
* **Export** your bookings as **CSV** and **iCal** feeds and **sync** them on spreadsheet and calendar apps (e.g.: Google Sheet, Google Calendar)

**Availability options**

* Set the **booking period**: customers can't book too early or too late
* Make your **events private** or bookable by multiple users
* ★ Set the min and max bookings allowed per user per event
* Offer some activities to certain user roles only

**Notifications**

* **Automatic emails** are sent to both administrator and customer when a booking is made, when its state changes, and when it is rescheduled
* **Fully customize** and configure all your email notifications
* In multilangual sites, emails are sent to your customers **in their own language**
* *Send activity-specific notifications and **reminders** via email, **SMS and ★ Push** thanks to [Notification Pack](https://booking-activities.fr/en/downloads/notification-pack/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=notification-pack&utm_content=readme) add-on*

**Translation ready**

* **Multilingual support** with WPML and ★ [qTranslate-XT](https://github.com/qtranslate/qtranslate-xt) (free plugin)
* ★ Auto-detect and switch languages, date/time format, first day of the week...
* Customize most frontend messages directly in the settings
* Fully translated in English and French. You can also help us [translating Booking Activities](https://translate.wordpress.org/projects/wp-plugins/booking-activities) in your language.

**The best inside**

* **API for developers** (PHP actions and filters, JS actions). *Documentation coming soon.*
* Use the beautiful and handy **[FullCalendar](https://fullcalendar.io/)**
* Support WP Multisite
* Support WP privacy tools for exporting and erasing your customers personal data

See the whole [features list here](https://booking-activities.fr/en/documentation/features/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme).


= Extend these features with add-ons: =

* **[Resource Availability](https://booking-activities.fr/en/downloads/resource-availability/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=resource-availability&utm_content=readme)**: Manage your resource availability and assignment
* **[Advanced Forms](https://booking-activities.fr/en/downloads/advanced-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=advanced-forms&utm_content=readme)**: Add any (paid) custom fields to your booking forms
* **[Display Pack](https://booking-activities.fr/en/downloads/display-pack/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=display-pack&utm_content=readme)**: Customize your calendars or set alternative display (datepicker)
* **[Prices and Credits](https://booking-activities.fr/en/downloads/prices-and-credits/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=prices-and-credits&utm_content=readme)**: Set per event prices, decreasing prices, price categories (adults, children, etc.), pay with credits
* **[Notification Pack](https://booking-activities.fr/en/downloads/notification-pack/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=notification-pack&utm_content=readme)**: Send activity-specific notifications and booking reminders by email, SMS and Push
* **[Order for Customers](https://booking-activities.fr/en/downloads/order-for-customers/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_campaign=order-for-customers&utm_content=readme)**: You can book / place an order in the name of your customers

See the whole [add-ons list here](https://booking-activities.fr/en/add-ons/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)


= This plugin is great for... You? =

To know if Booking Activities is made for you, you just need to understand **how it works**:

1. **You place** events on a calendar
2. **Customers pick** them and book them

If this fits your business then give it a try!

This booking system has been specially designed to fulfill the needs of **most activity providers**:

* For **tourism, sport and leisure** (nautical, aerial, land, mountain, foot or wheels, outdoor or indoor...)
* For **courses, trainings, exhibitions** (education, music, drawing, seminar...)
* For **cultural activities** (museum, theatre / cinema, booking events...)
* *For you too, but you are not in this list? [Tell us](https://booking-activities.fr/en/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme#contact)* :)


= We are listening =

**You are the developers**. *You have always been.*

Booking Activities has been designed and developed in collaboration with activity providers.

**Now it is getting better thanks to you.**

Then feel free to tell us if you miss a feature, if you find a bug or anything to make your booking system better!

* [Documentation](https://booking-activities.fr/en/documentation/user-documentation/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)
* [Report a bug / Request a feature](https://github.com/bookingactivities/booking-activities/issues/)
* [Contact us](https://booking-activities.fr/en/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme#contact) at [email protected] (French and English)


= Requirements =

* **WordPress**: 3.6 or later
* **PHP**: 5.3 or later
* **MySQL**: 5.7.22 or later (or MariaDB 10.5.4 or later)
* **WooCommerce**: 3.x or later
* *Booking Activities can be used without WooCommerce*



== Frequently Asked Questions ==

= I am not an activity provider, can this plugin still meet my needs? =
Yes of course. It is basically a reservation system based on event scheduling. In other words, you build your event calendar and allow them to be booked. You can find another purposes to it.
To know if it actually meets your needs, simply try it, it's free. 
If you are on a hurry, you can just check the [demo website](https://demo.booking-activities.fr/en/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme).
Or read the full [features description](https://booking-activities.fr/en/documentation/features/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme) if you are looking for something in particular.

= Create and fill your first calendar = 
**Create your first calendar**

1. Go to Booking Activities / Calendar Editor page
2. Click on the big '+' button
3. Set a title
4. In the "Editor" tab, you can set your working hours
5. Click on the dialog OK button, the calendar is loading!

**Create your first activity**

1. Click on the '+' button in the 'Activities' area
2. Set a title, an availability, a color and a duration
3. Click on the dialog OK button, the activity is added to the list!

**Create your first event**

1. Drag an activity from the list and drop it on the calendar
2. Drag and drop the event to move it
3. Mouseover the event and click on its settings wheel to edit its properties

**Congrats! You have created your first event schedule**


= Display a reservation form = 
*Make sure to have at least one calendar, one activity and one event at a future date* 

1. Go to Booking Activities / Booking forms page
2. Select the desired form or create a new one
3. Click on the setting gear on the "Calendar" field to set the calendar(s) to display (and many other settings)
4. Copy the shortcode given in the "How to integrate this form" area (it looks like `[bookingactivities_form form=""]`)
5. Past this shortcode in any post or page you like
6. Go on this post / page frontend, the booking form appears! 

/!\ Reservation forms displayed via shortcode are not bound to WooCommerce at all. If you want to bind a WC product to a calendar, check "Use it with WooCommerce" in this FAQ.


= Display the calendar only = 
*Make sure to have at least one calendar, one activity and one event at a future date* 

1. Go to Booking Activities / Booking forms page
2. Select the desired form or create a new one
3. Keep the "Calendar" field and remove all the others (like "Login/Register", "Quantity" and "Submit" fields)
4. Copy the shortcode given in the "How to integrate this form" area (it looks like `[bookingactivities_form form=""]`)
5. Past this shortcode in any post or page you like
6. Go on this post / page frontend, the calendar appears alone! 


= Display user's booking list = 
*Make sure the user has bookings and he / she is logged in, otherwise it will not show anything* 

1. Past this shortcode in any post or page you like: `[bookingactivities_list]`
2. Go on this post / page frontend, the booking list appears!

*Depending on BA settings and bookings dates, actions like cancel or reschedule may appear. Try them!* 


= Use it with WooCommerce = 
*Make sure to have at least one booking form with one event available at a future date* 
*You also need to activate WooCommerce and create one product* 

1. Go to Products / *Your Product*
2. In 'Product data' area, check 'Activity', a new 'Activity' tab appears
3. In 'Activity' tab, bind the desired booking form to the product
4. Go on this product page on the frontend, a booking form appears!

*For Variable Products, you need to check the 'Activity' checkbox and set a calendar and an activity for each variation.* 


= Does this plugin accept reservation online payments? =
Yes, you can accept payments for bookings through WooCommerce. Booking Activities is perfectly integrated to WooCommerce:

* Booking forms will appears automatically on product pages 
* A cart expiration system is implemented to make sure that bookings in the shopping basket won't stay in the basket forever, taking the place of someone else
* Bookings are automatically validated when the payment is received, or cancelled if not
* If you change order quantity or state, so do the bookings, and vice versa


= Should I accept payments for bookings? =
Here is a pros and cons analysis:

**PROS:**

* Customers are engaged, if they book, they come.
* Saves time: customers have already paid.
* Customers can come without money, they can offer the activity to a relative
* Automatic cashing, billing, accounting and stats

**CONS:**

* May discourage customers, depending on the type of activity you provide and your target
* Takes more time for customers, and more diffult process, higher cart abandonment rate
* You will have to do much more development, administrative and legal procedures, and you will have more expenses (bank commission, maintenance ...)

We recommend to accept online payments since it's a great way to automate your business management and make it grow.


= Events are not "Booked" after booking form submission, they are "Pending", why? =
Don't worry, the reservation is well registered. Now, it is up to you to turn it to "Booked" right away or when your customer comes, or when your customer gives you the money...
But you can just turn the default booking status to "Booked" in Booking Activities settings.
Note that if you use WooCommerce and online payments, booking states turn automatically to "Booked" if the payment is complete, or "Cancelled" if not.


= Cart expires but events are still booked = 
A bot cleans expired bookings hourly. So just wait up to 1 hour.
Usually, users are still on your website when their bookings expire, if so, they are immediatly removed.
Else, they will be cancelled later, with the others in that case.


= My events appear to be booked, but no bookings appear in the list =
Temporary bookings (such as In cart events) take active slots but may not appear in the booking list.
Go to the "Bookings" page, under the "States" filter select "Delivered", "Booked", "Pending" and "In cart".
Then, just click on "Apply Filters". Now you can see all kind of active bookings.


= Cancelled bookings disapeared from the list, I need to see them! =
Go to the "Bookings" page. Under the "States" filter, select all the available status.
Click on "Apply Filters" and then you will be able to see inactive bookings (cancelled, expired, removed, refunded, refund requested).


= Email notifications are not sent =
If you enabled "Asynchronous email" option in Booking Activities settings ("Notifications" tab), emails will be sent the next time someone (anyone) loads any page of your website.
Then, you only need to refresh or visit any page of your website and then check your inbox.
If you disable "Asynchronous email" option, then the loading will last until the email is actually sent.


= Ask for support = 
**We answer within 48h**. You can contact us in many ways:
- By email at [[email protected]](mailto:[email protected])
- On [WordPress support forum](https://wordpress.org/support/plugin/booking-activities)
- On [GitHub issue tracker](https://github.com/bookingactivities/booking-activities/issues/)

If you don't receive a reply within 48h by email, a technical problem has probably occurred, please try again, or try on an other medium.


== Screenshots ==

1. Drag and drop to edit. Click to book. Works both with a shortcode and WooCommerce.
2. WYSIWYG calendar editor. Simply drag and drop events. Click on events for additional settings (availability, repetition...).
3. Create daily, weekly or monthly repeated events. You can add exception dates to the repetition.
4. Grouping your events is simple: just select multiple events and click on 'Add a group'. Or select an existing group and start editing it right away.
5. Create and customize your booking form. You can combine events and settings of multiple schedules. You can make each form unique.
6. Use a shortcode to display a booking form (or a calendar alone). Your customers can log in or register as they book, they can also book without account.
7. When a customer clicks on a grouped event, the whole group is selected. If the event is part of several groups, the customer has to choose one from a dialog.
8. There is also an option to allow your customers to pick multiple events of their choice at once.
9. Easily bind a reservation form to a WooCommerce product. You can set a different event calendar to each variation.
10. A reservation form appears automatically on desired WooCommerce product pages.
11. WooCommerce cart expiration system: when time is up, bookings are cancelled and cart emptied. You can also disable it.
12. Your bookings are displayed on a calendar, when you mouseover an event, and in a list that you can filter, sort and customize. Manage your bookings: change state (cancel, validate), reschedule, refund...
13. Synchronize your bookings and display them in your Google Calendar events' description
14. Customers also have their booking list and calendar thanks to a shortcode. They can cancel, reschedule or ask a refund by their own (if you allow them).
15. Your customers can manage their bookings from their WooCommerce orders as well.
16. Orders status are bound to their bookings status. If bookings are cancelled / booked / refunded, so do the order (and vice-versa).
17. Email notifications are automatically sent to the customer or the administrator when they need to be informed of a change.
18. Make your emails look just like you want thanks to the HTML editor and special tags. You can also choose to deactivate a notification.


== Changelog ==

= 1.15.15 - 2023/10/18 =
* Tweak - Do not empty booking form if add to cart failed with WooCommerce
* Tweak - Change booking status icons to one specific icon per status
* Fix - Display error messages on WC cart page after changing quantity
* Fix - JS error when opening the grouped event dialog with the Display Pack's "Waterfall" booking method
* Dev - Add options and an API to handle price formatting (overriden by WooCommerce)
* Dev - Remove bookacti_onoffswitch function, use bookacti_display_field instead
* Dev - Add js hooks when opening booking dialogs
* Dev - Allow bdi HTML tag in wp_kses_post
* Dev - Refactor notification {price} tag and add {price_raw} tag
* Dev - Refactor Total Price field: it is now refreshed via AJAX (PHP) instead of JS to improve compatibility and accuracy
* Dev - Refactor WC cart item subtotal display
* Lib - Update FullCalendar to 6.1.9

= 1.15.14 - 2023/06/08 =
* Fix - Bookings from not allowed calendars may be displayed in backend Bookings calendar after changing the filters
* Fix - Booking forms now use window.location.assign for external redirects, without parameters, to avoid error 405 and error 414
* Fix - Use window.location.assign instead of window.location.replace when it is useful to keep the URL in browser history
* Lib - Update FullCalendar to 6.1.8

= 1.15.13 - 2023/05/23 =
* Breaking change - If you have made javascript custom code using Booking Activities' $.fn.serializeObject function, you must replace it with bookacti_serialize_object( your_form )
* Tweak - Allow to change notifications title
* Dev - Replace homemade $.fn.serializeObject with bookacti_serialize_object() to improve compatibility (especially with the "jquery-serialize-object" script provided in WP)
* Lib - Update FullCalendar to 6.1.7

= 1.15.12 - 2023/05/04 =
* Tweak - Add French translation for select2, more translation files can be added in wp-content/languages/select2
* Tweak - Display existing options immediatly in select2 using AJAX 
* Fix - Display select2 loading during AJAX search
* Fix - JS error when setting invalid date format in "Go to" date input
* Fix - Remove max height limitation to group categories and groups of events in calendar editor
* Fix - Add a delay when sorting activities, groups and categories to avoid undesired drags in calendar editor
* Fix - Hide WC Payments Google Pay / Apple Pay buttons on "Activity" product pages (it is too early for Booking Activities)
* Dev - Add not_in__status and not_in__payment_status filters to bookacti_get_bookings()
* Lib - Update FullCalendar to 6.1.6

= 1.15.11 - 2023/04/14 =
* Feature - Compatible with the new [Resource Availability](https://booking-activities.fr/en/downloads/resource-availability/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme) add-on!
* Tweak - Allow to purchase a booking from checkout page after an order failed if the cart item is not removed
* Fix - All activities were displayed if the booking form was configured to display only activities that are restricted to a user role, and if the user was not logged in or doesn't have this role
* Fix - Cells that should be empty in iCal booking lists may be filled with the column name
* Fix - Display the "Send when order is..." option in all admin status changes notifications settings
* Fix - New booking notifications not sent with WC if the order doesn't need any payment
* Fix - Temp fix to a WooCommerce issue - Display WC notices after failing to restore a cart item (on cart page up to 10 seconds after the error occured)
* Fix - In bookings filters, when the selectbox is resized, the input goes below the others
* Fix - In the reschedule dialog, the quantity displayed in the event list is always 1
* Fix - Event title not translated in a WC notice (booking already purchased notice)
* Fix - Error message not displayed after closing reschedule dialog once on frontend
* Fix - When filtering bookings in the backend, abort the running AJAX request before starting a new one
* Dev - Add js hook to change the select2 data when initialized
* Dev - Add hooks to validate a change of cart item quantity
* Dev - Add bookacti_wc_after_add_to_cart_validation hook
* Dev - Add parameters in booking system data to allow plugins to flag the events and groups of events as unavailable
* Lib - Update FullCalendar to 6.1.5

= 1.15.10 - 2023/03/08 =
* Fix - Booking status was displayed as Pending in paid and complete WC order notification (#186)
* Fix - Do not cancel booking of a "Pending payment" order if they were already paid in another order
* Fix - Error messages no longer displayed after closing the reschedule dialog once
* Dev - Add hooks to change the filters used to retrieve events and their number of bookings in a booking system
* Dev - Wrap SUM sql queries that can be modified by plugins to ensure that joining additional tables will not skew the result

= 1.15.9 - 2023/03/01 =
* Fix - Translatable strings may not be registered in the default WPML language
* Dev - Add backward compatibility with MariaDB 10.3

= 1.15.8 - 2023/02/24 =
* Breaking change - Requires MySQL 5.7.22 or later, or MariaDB 10.5.4 or later
* Fix - "No events" message not displayed if no availability dates were set
* Fix - Notifications text area was not full width
* Fix - The hook bookacti_booking_deleted may not be triggered after booking group deletion
* Fix - When moving an event backward from calendar editor, its bookings and grouped events were moved at an incorrect date
* Fix - Events may appear twice on variable WC products pages if the booking form "Opening" date is past
* Fix - When adding a product to cart from a booking form shortcode, field validation error messages were incorrectly displayed
* Dev - Flag when the WC order is new to avoid sending the same notifications twice
* Dev - Move the onkeypress attributes from the HTML elements to a js file
* Dev - Rename data-unit attributes to data-duration-unit
* Dev - bookacti_get_booking_groups now retrieves the grouped booking ids
* Lib - Update FullCalendar to 6.1.4

= 1.15.7 - 2023/01/30 =
* Tweak - Grouped bookings are now listed in asc order in WC order items and notifications
* Tweak - Add margins to event bookings tooltip on small screens
* Fix - Improve tooltip triggering on touch devices
* Fix - Booking forms shortcode not displayed in booking forms table
* Fix - Error messages were not removed in frontend dialogs
* Fix - Cannot change booking group quantity in WooCommerce cart or order
* Dev - Generate a random id on displayed fields without id

= 1.15.6 - 2023/01/09 =
* Fix - Error when switching booking group status to refunded from the backend
* Fix - Calendar navigated to incorrect date when loaded with a picked events
* Fix - Bound products were not correctly displayed in calendar settings in form editor
* Fix - Booking calendar settings dialog was emptied after closed
* Fix - Needed to refresh page to take into account the columns to display in the booking calendar tooltip
* Fix - Activities were not filtered according to selected calendars in bookings filters
* Lib - Update FullCalendar to 6.0.2 (Support for IE 11 has been dropped)
* Lib - Remove Moment JS files and use the files included in WP instead
* Dev - Compare datetimes directly instead of using mySQL UNIX_TIMESTAMP and CONVERT_TZ functions
* Dev - Calendar dates are no longer restricted between 1970-01-01 and 2037-12-31 
* Dev - Allow half-bounded intervals when retrieving events and groups
* Dev - Refactor bookacti_validate_booking_form function and hook (rename to bookacti_validate_picked_events and new parameters)
* Dev - Refactor bookacti_validate_booking_form_picked_event hook (rename to bookacti_validate_picked_event and new parameters)
* Dev - bookacti_allow_multiple_bookings hook parameters have changed
* Dev - Add form fields checks and hooks before and after rescheduling a booking (standardize process, like booking form and WC add to cart)
* Dev - Add form fields checks, and do not process bookacti_validate_picked_events twice while adding a WC product to cart from a calendar
* Dev - Standardize the status change functions code between groups and single bookings

= 1.15.5 - 2022/11/24 =
* Tweak - Remove useless checkbox column in list tables and standardize CSS
* Tweak - Support YITH WooCommerce Quick View (load booking system in popup)
* Fix - Activity unit name was not displayed
* Fix - Activity unit name was not displayed in the correct order in RTL languages
* Fix - Incorrect display of ID column in backend list table on mobile
* Fix - WC order status may be Completed unexpectedly in some cases involving non-booking products
* Fix - Invalid group ID error may appear in groups of events dialog in calendar editor
* Fix - Group categories "All" option was not selected in form editor calendar settings dialog
* Fix - Possible undesired scroll when closing group selection dialog after navigating the calendar
* Fix - JS error when deleting a group of events with no events, a group category with no groups, and the last calendar
* Dev - Standardize dialogs JS and CSS
* Dev - No longer generate id in html fields (with random number) if not provided
* Dev - Change LONGTEXT to TEXT or MEDIUMTEXT db column definition, and remove useless numeric type attributes
* Dev - Add bookacti_reset_password_notification_callback hook and send WC Reset Password email instead of WP's (#169)
* Dev - Reset error notices automatically when the dialog is closed (standardize code)
* Dev - Functions triggered on WC product pages only can now be triggered on any page having the "woocommerce" class
* Dev - Standardize the use of nonces (input name = nonce)

= 1.15.4 - 2022/10/06 =
* Tweak - Enable the "Today" button even if today's view is not accessible
* Tweak - Use select2 library for options using selectboxes with multiple values
* Tweak - If the refunded WC order items quantity is not set, try to compute it from the refunded amount
* Fix - Bookings were not refunded when a WC order was totally refunded but whithout selecting the WC order items to refund
* Fix - The displayed booking date didn't take the timezone into account
* Fix - The current day highlighted on the calendars didn't take the timezone into account
* Dev - Use WP default strings for Add New, Publish, Update, Edit, Trash, Delete, Retore
* Dev - API to make select2 multiple select sortable
* Dev - Add indexes to relevent database columns to improve performance on large databases
* Dev - Use full version of Select2

= 1.15.3 - 2022/09/13 =
* Tweak - Improve display of calendar toolbar when the calendar is narrow
* Fix - Possible JS error with Cache / Optimization plugins

= 1.15.2 - 2022/09/08 =
* Tweak - Change the minimum time to display event on next day in DayGrid view (nextDayThreshold) to the value of Day Begin option (slotMinTime)
* Fix - Notification Pack custom notifications not sent with WC if default notifications were configured not to be sent with WC
* Fix - Remove unused code about Bootstrap tooltip that may cause js error
* Dev - Change js and css minification processor to Google Closure Compiler (replace all .min files)

= 1.15.1 - 2022/09/02 =
* Fix - JS error when duplicating event (needed to refresh page) ([#160](bookingactivities#160))
* Fix - Permissions to calendars didn't work ([#162](bookingactivities#162))
* Fix - JS error if Calendar localization was set to Based on more WP settings (Site Language, Time Format, Week Starts On)
* Fix - Cannot open event settings or select event to group in calendar editor on touch devices

= 1.15.0 - 2022/08/31 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-15-fullcalendar-v5/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Lib - Update FullCalendar to 5.11.3 (**major changes!**)
* Lib - Update Moment JS to 2.29.3
* Feature - Calendar locales newly supported: az, bn, cy, eo, hy-am, km, ku, ne, si-lk, sm, ta-in, ug, uz ([complete list](https://github.com/fullcalendar/fullcalendar/tree/v5.11.3/packages/core/src/locales))
* Tweak - Replace the GIF spinner with a CSS3 spinner
* Tweak - Empty the form fields after adding a booking to cart with WooCommerce
* Tweak - Improve CSS for RTL languages
* Tweak - Events no longer visually overlap on calendar by default, to make events overlap see Display Pack add-on
* Tweak - Few changes to jQuery UI CSS
* Tweak - Display a more specific error message (if available) when login fails
* Tweak - Hide booking forms list if current user cannot manage any calendar
* Tweak - Hide activities filters in Bookings page if only one activity is available
* Fix - Array of values were not properly displayed in bookings exports
* Fix - Prevent to double click the Add to cart button on WC activity product pages
* Fix - PHP error when login and WooCommerce is active ([#158](bookingactivities#158))
* Fix - Do not load the backend bookings booking system if it is hidden ([#156](bookingactivities#156))
* Fix - Display a default booking form title in WC product edit page selectboxes for untitled forms
* Fix - Database was not updated if Booking Activities was deactivated during the update
* Fix - Display default Terms label if empty
* Fix - Fields required by default were not required when added to form 
* Dev - Refactor functions to get and format templates data

= 1.14.3 - 2022/06/22 =
* Tweak - Use the default WP From email if the option is empty
* Tweak - Rename the "lang" parameter in bookings export to "locale"
* Fix - Allow commas when formatting arrays for csv and ical exports 
* Fix - PHP warning when trying to display user selectbox in bookings page if users were deleted
* Fix - PHP error when refunding a booking

= 1.14.2 - 2022/06/19 =
* Tweak - Send email notifications to WC order billing email address instead of user account email address
* Tweak - Change the bookings owner too when updating the WC order owner
* Fix - AJAX error when trying to move a booked event to an earlier date in calendar editor
* Fix - Update the nonces of the frontend booking dialogs via javascript to avoid invalid nonce cache issue
* Fix - Request a refund button appeared in frontend booking lists to administrator for booking groups that were not cancelled
* Dev - Use TipTip library instead of jQuery-UI Tooltip to avoid conflicts with Bootstrap tooltip
* Dev - (Beta) Compatibility with Persistent Object Cache (Memcached, Redis...)

= 1.14.1 - 2022/06/13 =
* Fix - Notifications may not be translated according to recipient language with qTranslate-XT
* Dev - Add hooks to change notifications args before they are sent

= 1.14.0 - 2022/06/08 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-14-wpml-compatibility-multilingual-sites/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Compatibility - Support for WPML
* Tweak - Moved the Calendar localization option to the General tab in the settings
* Tweak - Allow Booking Activities to natively work with third-party WC product types (may not work as intended though)
* Fix - WC customer data may not be exported in bookings exports
* Fix - Bookings were not rescheduled when a booked event was resized
* Fix - Bookings were not cancelled when a past single booked event was cancelled
* Fix - Some events may appear twice if Trim empty days option is ON
* Fix - Bookings calendar Day end option value was not properly displayed if overnight
* Fix - Events disapearing on backend bookings calendar after rescheduling a booking
* Fix - WC cart items were not removed if their attached booking was deleted
* Fix - No longer remove commas in CSV export (causing incorrect price formatting)
* Fix - PHP warning when trying to display a booking form with unknown fields
* Fix - JS error may occur when trying to jump to a date in calendar editor
* Fix - JS error may occur when trying to insert a group of events in calendar editor
* Dev - Do not rely on the key parameter of cart item arrays as it can be changed regardless of the real cart item key
* Dev - Use bookacti_get_formatted_booking_events_list() in bookacti_wc_get_item_bookings_events_list_html()
* Dev - Refactor booking form CRUD

= 1.13.0 - 2022/03/01 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-13-days-off/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Set up leave periods where no events will be displayed whatsoever (also replaces repeat exceptions)
* Tweak - Assign existing bookings to the account when it is created, and prevent booking without account if the email address exists
* Tweak - Add a confirm box in the "Who can booking this activity?" option in activity and group category settings
* Tweak - Display an error message in admin pannel if Object Cache is used
* Tweak - Change icon to unpick an event
* Fix - PHP error when displaying an order item bound to a deleted booking
* Fix - Form redirect now uses POST method instead of GET to avoid error 414
* Fix - Decode HTML entities in csv exports
* Dev - Add bookacti_logout_redirect_url hook

= 1.12.9 - 2022/01/10 =
* Fix - Activities filter not working in booking list
* Fix - Cast to int or float before using abs to prevent PHP error with PHP 8

= 1.12.8 - 2021/12/20 =
* Fix - Shop managers may not be allowed to manage calendars and forms since 1.12.7
* Fix - Select2 selectboxes may have incorrect width after reinitialization on WC single product pages

= 1.12.7 - 2021/12/15 =
* Tweak - Add {product_id} and {product_title} notification tags (with WooCommerce)
* Fix - Bypass manager checks for shop managers and administrators may not work if performed for non current user
* Dev - Add bookacti_allow_others_booking_changes hook to allow to display action buttons on others' bookings on frontend

= 1.12.6 - 2021/12/06 =
* Tweak - Change the backend ON/OFF switch appearence (supports RTL)
* Fix - Missing space between concatenated texts in picked events list
* Fix - Bookings are cancelled if the WC gateway empties cart after failed payment (non default behaviour, compatibility fix)
* Fix - Select2 dropdown may disappear if click is not held (always display the search box)
* Fix - Activity tab may appear in WC product data even if the activity box was not checked
* Dev - Support third parameter in bookacti_translate_text hook (for qTranslate-XT)

= 1.12.5 - 2021/10/29 =
* Fix - JS error if booking form had no submit button

= 1.12.4 - 2021/10/27 =
* Feature - Add a "Total price" field, it can be used with WooCommerce, the Prices and Credits add-on or the Advanced Forms add-on only
* Tweak - Add an optional "Remember me" checkbox field in "User data (login / registration)" field settings
* Tweak - Add an optional "Redirect URL" option for the forgotten password link in "User data (login / registration)" field settings ("Login" tab, advanced options) to replace the Forgotten password dialog
* Fix - Site title special characters were not decoded in email notifications subjects
* Fix - Administrator role in multisite installs can now manage everything created in Booking Activities on their own site
* Fix - Form fields display was not properly refreshed in form editor after resetting their options, a page refresh was needed
* Fix - Loading feedback was not displayed if the form action was to redirect to another page
* Fix - Request a refund button appeared in frontend to administrators when it should not
* Fix - On iOS, picked events title may be undefined, if Display Pack add-on tooltip feature was used
* Fix - PHP warning if Site language was not set

= 1.12.3 - 2021/09/23 =
* Tweak - Add loading feedbacks after validating booking actions dialogs (change status, quantity, reschedule)
* Tweak - Open new tabs only for external links and exports in backend navigation
* Tweak - Allow read-only access to bookings with the bookacti_manage_bookings capability
* Tweak - Add a line break before displaying events availability in basic views (e.g.: month view)
* Fix - Custom label of the feedback textarea was not displayed in refund dialog
* Fix - Display the option to customize the submit button only if WC is installed in Messages settings, because it needs to be customized for each form
* Dev - Make sure the event background is added before availability div in basic views
* Dev - Set the array_search to strict mode

= 1.12.2 - 2021/09/08 =
* Tweak - Disable login button after click
* Tweak - Disable submit button after click when form action is "Add to cart" too
* Tweak - Hide Paypal and Stripe buttons on activity single products pages because the user needs to adds the booking to cart first for a proper working
* Fix - Events were not all loaded if the "Load events every" option was set to a too small number
* Fix - Error messages may not be displayed (if any) after submitting login form
* Fix - Error message not properly formatted when a booking already made is detected in WC cart
* Fix - Incorrect form action when submitting registration form if the form contained duplicated fields (in both booking form and registration form) with Advanced Forms add-on
* Fix - Incorrect number of columns after booking action performed in frontent booking lists having one_row_per_participant parameter active with Advanced Forms add-on
* Dev - Allow other plugins to change all FormData js object before they are sent

= 1.12.1 - 2021/08/26 =
* Fix - Issue preventing bookings refunds to work

= 1.12.0 - 2021/08/23 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-12-repeat-groups-of-events/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Breaking change - Remove opening and closing dates from calendar settings in calendar editor
* Breaking change - Remove the archiving tool. You can still find the backups you have made in wp-content/uploads/booking-activities/archives and manually import them with phpMyAdmin.
* Feature - Groups of events can be automatically repeated (like events)
* Feature - Unbind repeated groups of events occurrences
* Feature - Add a button to jump to a specific date in calendar editor
* Tweak - Remove restrictions on event availability and repetition frequency, you can update them regardless of bookings made
* Tweak - WC cart items with a booking attached are no longer removed after a failed payment, so the customer can try again
* Tweak - Add the {booking_ical_url} notification tag and refactor the way booked events are exported
* Tweak - Display links to the Bookings tab on the customer's WC account dashboard
* Tweak - Display the booking form in full width below the WC product image and description by default (option in Booking Activities > Settings > WooCommerce tab)
* Fix - TinyMCE editor was not loaded in settings dialogs if the Visual view was loaded by default, set the Text tab by default as a workaround
* Fix - The icon to unpick an event span tag was not correctly closed
* Optimization - Groups of events and Bookings numbers are loaded by interval (like events) instead of all at once
* Optimization - Reduce the number of queries to load the calendar editor
* Dev - Display form fields name, type and id in HTML data attributes
* Dev - Allow plugins to change FormData thanks to the js hook bookacti_before_submit_booking_form
* Dev - Breaking change - the wp_bookacti_exceptions table was totally refactored and the API related to exceptions too
* Dev - Refactor the events, activities, group of events and group categories data sanitization when updating them from the calendar editor
* Dev - Move the functions to run once after specific updates to controller-legacy.php
* Dev - Store the activity_id in the wp_bookacti_groups_events table (part of removing dependencies between bookings and events (groups))

= 1.11.5 - 2021/08/02 =
* Fix - Invalid key error when exporting bookings on multisite installs
* Fix - Notifications were sent after partial refund in WooCommerce

= 1.11.4 - 2021/06/28 =
* Fix - Cannot filter the booking list by customer if the customer has no account
* Fix - Events were not rerendered after a booking is made

= 1.11.3 - 2021/06/11 =
* Tweak - Improve feedback when a non-default form action is selected and WC is installed
* Tweak - The WC refund coupon codes are crossed out in the booking lists if they are no longer valid
* Fix - Cannot update event availability to 0
* Fix - Missing js dependencies in backend non Booking Activities screens
* Fix - Reschedule booking form must prevents from selecting multiple events
* Fix - Prevent users from changing quantity beyond selected events' availability in booking forms
* Fix - Calendars filter in backend bookings page may no longer be taken into account after a few manipulations

= 1.11.2 - 2021/05/31 =
* Tweak - Show the active bookings number of the selected status only on calendars showing booked events only
* Tweak - Show the bookings list of the selected user and status only on calendars showing booked events only
* Fix - Fix a bug introduced in 1.11.1 where Bookings page may timeout if WooCommerce is active and has a lot of orders

= 1.11.1 – 2021/05/24 =
* Fix - Order data were blank in bookings lists and exports after the 10 first orders

= 1.11.0 – 2021/05/05 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-11-advanced-options-to-repeat-events/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Repeat events: option to skip n days / weeks / months between each occurrence (e.g.: repeat every 2 days)
* Feature - Repeat events weekly: select the days of the week on which the event should be repeated
* Feature - Repeat events monthly: option to repeat the event on the nth / last day-of-the-week of the month (e.g.: 2nd / last Monday of the month)
* Feature - You can manually reorder activities, group categories and groups of events in calendar editor (by drag and drop)
* Tweak - Support anchor in URLs when the Form action is Redirect to a URL
* Tweak - Add WC billing and shipping data to bookings export columns
* Fix - The booking actions buttons were displayed in WC email when an order item was refunded from the backend WC order page
* Fix - Bookings of WC failed orders may not turn to Booked after a further successful payment
* Fix - Transparent white background was missing on multiple months and flexible basic views (with Display Pack add-on)
* Fix - Events not loaded if Groups only option was active
* Fix - Booking data displayed in WC order item may not be fully translated in multilang sites
* Dev - Improve compatibility with themes by selecting WC input.qty without container class restrictions
* Dev - Store the activity_id and category_id in the bookings (groups) tables (part of removing dependencies between bookings and events (groups))

= 1.10.1 - 2021/04/09 =
* Fix - Prevent users from increasing cart item quantity to avoid overbooking when cart expiration is disabled
* Fix - Display the error message if no events are selected when you submit a booking form with a non-default form action

= 1.10.0 - 2021/03/12 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-10-cancel-or-reschedule-a-booked-event-and-notify-customers/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Automatically reschedule the bookings when you move a booked event in the calendar editor
* Feature - Send a notification to your customers when you move a booked event in the calendar editor
* Feature - Send a notification to your customers when you delete a booked event (or group of events) from the calendar editor
* Feature - Add an option to unbind occurrences of repeated events: Unbind the next occurrences (including the selected one)
* Feature - Add an option to unbind occurrences of repeated events: Unbind each occurrence
* Feature - Allow to change the events start and end dates in a dedicated dialog (drag and drop events alternative)
* Tweak - Only future bookings are cancelled when a group of events or a repeated event is deleted from the calendar editor
* Tweak - Events can now always be resized in the calendar editor. The option to allow resizing per activity has been removed from the activities settings
* Tweak - Add reschedule notifications tags {booking_old_start_raw} and {booking_old_end_raw}
* Fix - Dialogs were disappearing after resizing or when multiple dialogs were open
* Fix - Bookings count was incorrect after unbinding a repeated event until the page was refreshed
* Dev - Move and resize actions are now merged into a single action: UpdateEventDates. Duplicate action has now its own separate action: bookactiDuplicateEvent.
* Dev - Remove some unused functions
* Dev - Start removing dependencies between bookings and events (group)
* Dev - Allow full datetime in "from" and "to" bookings filters code instead of date only

= 1.9.3 - 2021/02/10 =
* Feature - Option to hide events availability, set the threshold in Booking Activities > Booking forms > your form > Calendar settings > Display Tab
* Tweak - Calendars days no longer necessarily stop at midnight. Set the Day start option later than the Day end to display the next day in the same column.
* Tweak - Calendar editor: Change the group settings icon when the selected events have changed
* Fix - jquery-ui elements were not displayed correctly if WP version was below 5.6
* Fix - Existing orders cannot be paid for

= 1.9.2 - 2021/02/04 =
* Fix - Group of events may return no_availability error although there are available places, if the grouped events had not always been booked together only
* Fix - Min / max bookings per user and Max users per event checks were incorrect in case of multiple bookings if the events were booked by multiple users
* Fix - Managers could not edit calendar although they had permission
* Fix - Dates filters on backend bookings page did not work with some browsers
* Fix - Database tables using mediumint for their ids now uses bigint to push back the limitations

= 1.9.1 - 2021/01/29 =
* Fix - User data were not saved in booking metadata when processing WooCommerce checkout without account
* Fix - PHP notice when booking without account (without WC)

= 1.9.0 - 2021/01/27 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-9-multiple-bookings-cancel-an-event/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Breaking change - WooCommerce carts will be emptied after the update
* Breaking change - You need to update your add-ons and probably adapt your custom code. No support can be provided for your custom code.
* Feature - Pick multiple events on the calendar and book them all at once (find the option in your booking form editor, in the calendar settings)
* Feature - Pick multiple events on the calendar and add them all to the shopping cart at once (with WooCommerce)
* Feature - Cancel all bookings of an event / groups of events at once (find the option in the calendar editor, in the event settings, Delete button)
* Tweak - Hide the Calendar bookings filter if only one calendar is available
* Tweak - Display an admin error notice if an add-on is outdated and will cause malfunction
* Fix - Fields were not prefilled with URL attributes on WC variable product page
* Fix - Single checkbox could not be checked by default
* Fix - Recent bookings' owner changed if the WC customer logged in to a different account
* Fix - Let the user mouseover an event booking list tooltip even if another event is hovered on the way
* Fix - Check if select2 library is already registered and included before using our bundled version of it
* Fix - Add compatibility for bootstrap tooltip (if loaded after jquery ui)
* Fix - Booking refunded notification was sent twice
* Fix - Booking cancelled notification was sent when the customer cancelled the payment
* Fix - Events were not correctly sorted by date on Safari iOS / MacOS
* Fix - Cannot switch templates in editor if too many events were loaded
* Fix - Users having the bookacti_manage_booking_activities capability can now access the admin panel with WC even without manage_woocommerce or edit_posts
* Fix - Repeated events out of their template range were displayed
* Fix - Allow to escape characters in date and time formats with a backslash
* Fix - WC auto refund method was available in cases it shouldn't
* Fix - Keep the refund dialog opened in case of error to allow the user to read the error message
* Dev - Compatibility with jquery-ui 1.12.1
* Dev - Refactor the process to trigger form actions
* Dev - Refactor the booking system picked_events attribute
* Dev - Refactor the data bound to WC cart item / order item

= 1.8.9 - 2020/09/16 =
* Tweak - Use WP setting "New User Default Role" as default value for user registered with a booking form
* Tweak - Change the Bookings page title in WC account
* Dev - Add a CSS class on events booked by current user
* Dev - Do not send useless data to server via AJAX while fetching new events
* Dev - Add passive detection for touchstart event listener for better scrolling performance

= 1.8.8 - 2020/09/08 =
* Fix - Activity managers may not be saved
* Dev - Display and format the Calendar managers, Activity managers and Form managers in a uniformized way
* Dev - Export ical events in UTC for higher compatibility with calendar apps

= 1.8.7 - 2020/09/02 =
* Tweak - Disambiguation of availability period settings
* Tweak - Add contextual help to promote the [bookingactivities_list] shortcode
* Fix - Multiple selectboxes values may not be properly saved
* Fix - Warning in calendar apps during ics import if vevent_description ended with a new line
* Fix - Backward compatibility prior WP 5.3 restored
* Fix - Some texts were not translated

= 1.8.6 - 2020/08/26 =
* Tweak - Add a notification to the customer when a booking becomes Delivered
* Tweak - Add a notification to the customer when he requests a refund
* Tweak - The booking refund request notification sent to the administrator can be managed from the Notifications settings
* Tweak - Add notification tags: calendar_id, activity_id, activity_title, event_admin_url, event_booking_list, refund_message
* Fix - Display availabilities on the left if events overlap on agenda views (regression)
* Fix - In-cart bookings were not expired by cron if WooCommerce's and Booking Activities' tables have incompatible collations
* Fix - Error involving a MariaDB limitation (cannot convert 1970-01-01 00:00:00 to timestamp)
* Fix - Error if day begin is same as day end
* Fix - Display switchable select multiple fields as multiple by default if the value array contains multiple values 
* Fix - FullCalendar's titleRangeSeparator may display incorrect characters instead of a hyphen
* Fix - Use wp_date instead of date_i18n to avoid incorrect date formatting due to timezone inconsistencies on certain server configuration
* Fix - Irrelevant blue frame around groups in booking list if multiple groups were displayed one after the other
* Fix - The group_by parameter was not kept in the backend booking list pagination
* Dev - Duration fields accept min, max and step parameters, to the closest unit only (day, hour, minute)
* Dev - Pass the booking instead of the booking ID in most of the notification hooks

= 1.8.5 - 2020/07/01 =
* Tweak - The {booking_admin_url} notification tag URL now redirects to a page where only the desired booking is displayed in the list
* Fix - Force null padding and margin to agenda and basic calendar views cells to avoid invisible events
* Fix - Remove or dynamically update frontend nonces to avoid problems with cache
* Fix - Fix possible errors while editing events
* Fix - Cannot remove all repeat exceptions while updating events
* Fix - Incorrect display of ON / OFF switches for RTL languages
* Fix - Errors with locales using a non Western Arabic numeral system 
* Dev - Add a hook for each individual booking when a booking group is deleted

= 1.8.4 - 2020/06/04 =
* Tweak - Display availabilities on the left if events overlap on agenda views
* Fix - Occurrence of repeated events may not appear if only one occurrence is to be displayed
* Fix - Fix tiny and narrow events CSS
* Fix - PHP error after booking if calendar availability period was too high
* Fix - Do not verify all form fields if the user only log in / register
* Fix - Internet Explorer 11: JS error when submitting forms
* Fix - Misspelling of occurrence and occurred

= 1.8.3 - 2020/05/21 =
* Tweak - Add the redirect_url parameter to the login shortcode to redirect to any page after login ([bookingactivities_login form="" redirect_url=""])
* Fix - {price} notification tag displayed price without tax
* Fix - Send booking notification when an order item bound to bookings are manually refunded (if "Send when an order is refunded" option is active)
* Fix - Check capabilities before listing / searching users in users selectboxes
* Fix - Last occurrence of repeated event of the interval may not be loaded
* Fix - Products bound to group categories in calendar settings were not saved
* Fix - "Unbind booked" feature didn't create exceptions on booked occurrences of the new event
* Lib - Update FullCalendar to 3.10.2 and Moment JS to 2.25.3

= 1.8.2 - 2020/05/14 =
* Tweak - "Booking form location on product pages" option is now applied only for WC product / variation flagged as activity
* Fix - AJAX error after trying to update event settings if PHP < 7.3
* Fix - AJAX error after trying to validate certain dialogs if opened for the second time
* Fix - Min and Max bookings per user options not working properly
* Fix - PHP warning after resetting calendar field settings

= 1.8.1 - 2020/05/12 =
* Fix - JS error when trying to open event settings

= 1.8.0 - 2020/05/12 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-8-bookings-preview-ical-export-login-beforehand-etc/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Breaking change - You must use booking forms registered in Booking Activities > Booking forms (since 1.5) (Shortcode and WC integration) ([How to migrate](https://booking-activities.fr/en/blog/booking-activities-1-5-booking-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme#migrate-to-1-5))
* Breaking change - Drop backward compatibility and support with WooCommerce < 3.0
* Feature - Display a preview of the bookings in a tooltip when you mouseover an event in the backend Bookings page (mouseover the event on desktop, long press the event on mobile)
* Feature - Allow to change the calendar settings in the backend Bookings page (settings saved per user)
* Feature - iCal - Export / Sync bookings (just like CSV export)
* Feature - iCal - Customize the events title and description with event data
* Feature - iCal - Display the booking list in the events description
* Feature - Add an option to make the calendar start on the first displayed event, and end on the last one (in Calendar fields settings)
* Feature - Allow to login / register before booking with a distinct button (in User data fields settings, Login tab)
* Feature - Add the [bookingactivities_list login_form="desired_form_id"] login_form attribute to display a login form instead of the booking list if the user is not logged in
* Feature - Add the [bookingactivities_login form="desired_form_id"] shortcode to display a login form if the user is not logged in
* Tweak - The Events will be bookable in / for up to options can now be set in days, hours and minutes
* Tweak - The Booking changes delay option can now be set in days, hours and minutes
* Tweak - The backend booking list is now AJAXified (optional, settings saved per user)
* Tweak - Bookings export settings are now saved per user
* Tweak - Add an export option to choose between raw or formatted data (in bookings export settings)
* Tweak - Make the array export format more user-friendly (line breaks + indents instead of brackets)
* Tweak - Add an option to allow to display columns with private data in frontend booking lists (in general settings)
* Tweak - Add a link to the booking admin page on the booking IDs of booking lists (for administrators only)
* Tweak - Add the customer_roles column for the user booking list
* Tweak - The reschedule booking system now uses all the possible initial booking form calendar field settings
* Tweak - A message is displayed instead of the calendar if no events are available (only if the Trim option is active, in Calendar fields settings)
* Tweak - Add help sections in the form editor, and in the notifications settings
* Fix - Make sure bookings cannot be seen or changed if the user cannot manage the related calendar (except for administrators)
* Fix - Redirect URL when booking on event click didn't work
* Fix - Add compulsory hidden quantity field when booking on event click
* Fix - All grouped bookings were displayed in each rows of the frontend booking list when group_by = none
* Fix - Check if moment and fullcalendar libraries are already included to avoid conflicts
* Fix - Notification not sent along WooCommerce's order notification for unpaid processing orders
* Fix - WC order status not changed after booking status change
* Fix - Activities were not hidden according to the selected calendars in bookings page filters
* Fix - Error with qTranslate-XT if the language was not switched in settings dialogs
* Fix - Bad rounding of the WC coupon refund amounts
* Fix - Don't change booking user_id when a WC order customer changes (at the same time as its status)
* Fix - Show single grouped bookings when selected alone in the backend Bookings page
* Fix - Product not listed in selectbox if it once has had variations and is now no longer variable
* Fix - Possible JS error when loading a booking system with preselected events
* Fix - Error when submitting WC add to cart form on event click
* Fix - WC cart items may not be removed on expiration depending on your server timezone
* Fix - WC order status turned to completed / cancelled when one of its booking status changed, instead of all
* Fix - PHP notices in booking form editor after creating a booking form
* Fix - Cannot click on unavailable events on bookings page
* Fix - Calendar field's Status option not saved if only one status was selected
* Optimization - JS variables passed via PHP are now loaded only once, have been significantly reduced, and are filtered for the frontend
* Optimization - Retrieve all users meta with a single query with bookacti_get_users_data
* Dev - Make sure that the repeated events' occurrences and exceptions are included in the repeat period when updated

= 1.7.20 - 2020/02/22 =
* Fix - Error while booking whithout WooCommerce
* Fix - Cannot reschedule to a past event from admin

= 1.7.19 - 2020/02/20 =
* Optimization - Dynamic user selectbox in booking list filters
* Optimization - Dynamic product selectbox in Calendar field settings, actions tab
* Tweak - Allow to perform the form action on event click even if there is no Submit button and if the calendar is not in a form
* Tweak - Error messages related to the picked event are removed when a new event is picked
* Fix - The "Events are bookable for up to" option didn't work
* Fix - WC product edit page: Activity tab didn't appear when Activity box was checked
* Fix - WC product edit page: Price warning didn't take the decimal separator into account
* Fix - Multisite: Wrong redirect after creating a booking form
* Fix - Bypass form manager checks for shop managers
* Fix - PHP Notice when creating a calendar or a booking form
* Fix - PHP Error when a user logs in and WC session doesn't exist
* Fix - Display Pack tooltip not displayed on unavailable events on mouseover
* Fix - Form action list didn't changed when calendars changed

= 1.7.18 - 2020/02/08 =
* Tweak - Add an option to duplicate booking forms
* Tweak - Activity WooCommerce products are no longer forced to virtual
* Tweak - Reschedule: display events as unavailable if their availability is insufficient
* Tweak - Calendar editor: Automatically fill the calendar settings if the duplicated calendar is the current one
* Tweak - Disambiguation in calendar editor's calendar settings dialog
* Tweak - Highlight "Calendar field settings" button, and "Add new field" button in form editor
* Tweak - Display user names in user selectbox as a fallback (in backend booking list filter)
* Tweak - Fallback to WooCommerce user data to display in user selectbox (in backend booking list filter)
* Tweak - Display WC cart form as block instead of flex with Elementor
* Tweak - Display Pack tooltip is now displayed on unavailable events on mouseover
* Fix - Booking numbers not updated on events after changing booking quantity (needed a page reload)
* Fix - Tooltip disappeared after updating a booking
* Fix - Couldn't bind the same product to different activities in Calendar field, Action tab
* Fix - PHP notice Undefined index: picked_events

= 1.7.17 - 2020/01/29 =
* Tweak - Add a "All" option in activities and group categories selectboxes in Calendar fields settings
* Tweak - Remove the availability period settings from calendar editor. Set them in form editor, in the Calendar field settings.
* Tweak - You can use tags in email notifications titles
* Fix - Calendar managers were not removed if none were selected
* Fix - Check if the (groups of) event(s) is in its calendar range before booking
* Fix - Keep the first selected option when switching a selectbox from multiple to simple
* Fix - Avoid serialization problems while updating metadata
* Fix - Infinite calendar loading if the booking form redirects to an anchor
* Fix - Couldn't select groups of events in Bookings filters
* Fix - Feedback messages not displayed after adding a product to cart with a booking form with WooCommerce >= 3.9
* Fix - Inconsistent show / hide icon after updating the activity list in calendar editor
* Fix - Javascript error due to null activity duration or null event duration
* Dev - Refactor the Calendar field data and the booking system data to make them independent and more consistent
* Dev - Add JS hooks before booking form redirect and after add to cart

= 1.7.16 - 2020/01/09 =
* Tweak - Remove some global settings: Booking method, availability period start and end. Set them for each booking form, in the Calendar field settings.
* Tweak - Add an option to use more WP settings to localize the calendar, in Settings > Messages tab
* Tweak - Add an option to display the calendar in full width on WC product pages, in Settings > WooCommerce tab
* Tweak - Add an option to display your customers' booking list in WC My Account page, in Settings > WooCommerce tab
* Fix - Activities may not be saved / displayed if only the Administrator role was not selected in permission tab
* Optimization - Load js password strength meter only when required

= 1.7.15 - 2020/01/04 =
* Tweak - Display IDs in calendar and form editor dialogs (useful for CSS)
* Tweak - Do not take into account the form action for calendars automatically displayed on WC product pages
* Fix - Activities may not be saved / displayed if roles were set in permission tab
* Dev - Add hook bookacti_public_booking_system_data before sending booking system data to javascript

= 1.7.14 - 2019/12/20 =
* Tweak - Add customizable messages in settings: avail. and Selected Events
* Tweak - Add an option in permission selectboxes to permit misunderstanding errors (reminder: allow everybody = do not select any roles)
* Tweak - Display a notice when the WC product / variation price is empty to inform that the booking form won't appear
* Tweak - Display the Licenses tab in settings and instructions for new customers
* Tweak - Administrators now have the same restrictions as users while performing a booking action from the frontend
* Tweak - Improve visual feedback when duplicating an event
* Tweak - Allow to resize the activities and the groups of events areas in calendar editor
* Fix - Error when deleting a product bound to an activity in the booking form calendar actions settings
* Fix - No longer display events from all calendars, activities and group categories if none are allowed
* Fix - Add-ons activity and group category settings were not saved

= 1.7.13 - 2019/12/13 =
* Tweak - Changed export URLs to avoid 404 errors
* Fix - Bookings of failed WC order were not cancelled when the order status changed from backend
* Fix - Bookings of failed WC order were not turned to pending / booked when the order was paid
* Fix - Prevent to set a date after 2037 on server side too, to avoid year 2038 bug
* Fix - Snap frequency field was not correctly displayed in browser displaying a 12-h time format
* Fix - Add server checks to sanitize calendars and group categories data
* Fix - The request a refund appeared to admins after cancelling a booking via the frontend booking list when it should not
* Fix - Coupon code not displayed in booking list when the booking was refunded with it
* Fix - Frontend booking list columns titles not displayed on small screens
* Fix - Force UTC timezone while displaying dates to avoid undesired offsets

= 1.7.12 - 2019/12/03 =
* Tweak - Exported and filtered bookings now keep the current column sorting
* Fix - Display prices including VAT in bookings lists for bookings made with WooCommerce
* Fix - Replace get_admin_url() with admin_url() for multisite
* Fix - List network users too in calendars, activities and booking forms admins selectboxes for multisite
* Fix - Help tip icon not displayed on frontend
* Fix - The order of the default columns was not respected for bookings export

= 1.7.11 - 2019/11/02 =
* Fix - Cannot update WC cart item quantity for non-activity items
* Fix - Hide booking actions in WC emails (undesired display when more than 1 item)

= 1.7.10 - 2019/10/25 =
* Feature - Change booking quantity from the backend booking list (forced change only)
* Tweak - Add a price details column in the backend booking list
* Tweak - Add a button in WC order item to see and edit the attached booking
* Tweak - Allow shortcodes in notifications thanks to a new tag 
* Tweak - Notification tags: user_locale added, user_ical_key removed
* Tweak - Allow to use relative time format along user_ical_url notification tag. E.g: &start=today&end=10+days
* Tweak - Allow to perform the default form action on event click instead of on submit
* Tweak - Do not perform form actions on form editor
* Tweak - Resize time inputs, and make multiple selectboxes resizable
* Fix - Error when adding a product to cart on click on the event
* Fix - Error when inserting event if the activity title had quotes
* Fix - Groups of events may not be automatically selected according to POST or GET parameters
* Fix - Expired cart item notice may appear twice
* Fix - Backward compatibility with WooCommerce 2.6
* Fix - Event no longer selected after page reload in backend booking list
* Fix - Possible memory error in form editor if you have a lot of WooCommerce products
* Dev - Add PHP and JS hooks in calendar editor
* Dev - Replace WC set_quantity with remove_cart_item function when qty = 0 for easier backward compatibility
* Dev - Ensure that cart item with bookings are merged via Booking Activities process, and not simply increased quantity
* Dev - Check only once if a cart item should be merged, during add-to-cart validation
* Dev - Add hooks in the WC cart processes (cart item expired, restored, failed to restore)

= 1.7.9 - 2019/08/18 =
* Fix - User data were not exported
* Fix - bookacti_get_number_of_bookings function didn't work if not filtered by event / group of events

= 1.7.8 - 2019/08/09 =
* Fix - Numeric values were not displayed in user booking list
* Dev - Add hooks to allow to set other product types as "Activity"
* Dev - Replace PHP constant in text domain by a raw string

= 1.7.7 - 2019/07/02 =
* Fix - Add to cart on event click didn't work on WC product pages
* Fix - The event specified in URL was not selected by default on admin Bookings page
* Fix - Primary data were not displayed in booking list (on responsive views) for bookings made with WC
* Fix - Customer data w/o account were not retrieved in booking export and user booking list

= 1.7.6 - 2019/06/25 =
* Tweak - Allow to filter the booking lists by "payment_status"
* Fix - Booking row not translated after perfoming an action (on multilang site)
* Fix - Option to delete the WC order item bound to a booking (or only its metadata) didn't appear when deleting a booking
* Fix - The height of the Month view rows now adjust to the content
* Dev - Changed the way calendar settings are updated (new JS hooks: 'bookacti_calendar_init_data' or 'bookacti_calendar_editor_init_data')

= 1.7.5 - 2019/06/07 =
* Fix - JS fatal error when trying to validate a dialog in calendar editor
* Fix - Infinite loading when creating a calendar (must refresh page)

= 1.7.4 - 2019/06/06 =
* Tweak - You can choose the columns to display in the customer booking list ([bookingactivities_list columns="..."], [see the docs](https://booking-activities.fr/en/docs/user-documentation/get-started-with-booking-activities/display-customers-bookings-list-on-the-frontend/))
* Tweak - You can display other's bookings in the customer booking list ([bookingactivities_list user_id="all"], [see the docs](https://booking-activities.fr/en/docs/user-documentation/get-started-with-booking-activities/display-customers-bookings-list-on-the-frontend/))
* Fix - Pagination error if multiple customer booking lists were displayed on the same page
* Fix - PHP warning when deleting expired booking groups
* Fix - Label "for" and field "id" attributes sometimes mismatched
* Fix - Couldn't translate cancel dialog button
* Fix - Events not loaded if "Load events every" option < number of days in the calendar view
* Fix - The event specified in URL was not selected by default on WC product variation page
* Fix - JS error if the event specified in URL was not on the calendar
* Fix - Some {user_...} notification tags didn't work with WC orders
* Fix - Display WC user data only if the booking was made with WC or if these are the only available data
* Fix - Filtering bookings by in__booking_id or in__booking_group_id was not always accurate
* Optimization - Make sure booking system attributes are formatted only once
* Dev - Hook for booking system data
* Dev - Changed the way the customer booking list is generated (more hooks and possibilities)
* Dev - Always refresh the whole row after a booking action

= 1.7.3 - 2019/05/10 =
* **Breaking change** - Optimization - "Expired" and "Removed" bookings will be permanently deleted 10 days after their expiration date
* Tweak - Add {user_phone} tag to display the user phone number in notifications
* Tweak - Change the error message for non logged in users trying to book a restricted event
* Fix - Events spreading over two loading intervals were not displayed (calendar editor, booked events, grouped events)
* Fix - Unselecting an occurrence of a repeated event in calendar editor was unselecting all occurrences
* Fix - Don't display bookings made on events belonging to a deleted calendars
* Fix - Incorrect custom actions buttons labels (cancel and refund) for booking groups
* Fix - 0 should be plural

= 1.7.2 - 2019/04/02 =
* Tweak - Calendar editor sidebar can be resized (except on IE and Edge)
* Tweak - The time format on the events has been changed (according to your locale)
* Fix - Events may appear twice

= 1.7.1 - 2019/03/28 =
* Optimization - Significantly improved loading time for calendars and booking lists containing a lot of events / bookings
* Optimization - Change the way metadata are retrieved for a better scalability
* Optimization - Clean the option to track emails sent everyday to keep it as small as possible in the database
* Dev - Compatibility with most cache plugins confirmed
* Tweak - The time format in the calendar vertical axis has been changed (according to your locale)
* Fix - Events spreading over two loading intervals were not displayed
* Fix - Groups couldn't be selected in the calendar editor if all their events were not displayed
* Fix - Cannot type more than 2 digits in the event repetition settings
* Fix - The booking filter "Pick an event" didn't work while exporting the events
* Fix - The booking filter "Date" didn't work on Internet Explorer
* Fix - Events were not brought on the foreground when they were selected if more than two events overlapped
* Fix - PHP error if your version of PHP was below 5.5
* Fix - Number of bookings may be wrong if the list was filtered by a single event that was also part a group
* Fix - Made sure that the reschedule booking form action is set to "default" 

= 1.7.0 - 2019/03/01 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-7-form-actions-and-sytem-tools/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Add a WC product to cart when you click on an event or when you submit a booking form
* Feature - Redirect to a URL when you click on an event or when you submit a booking form
* Feature - Redirect to a WC product page when you click on an event or when you submit a booking form
* Feature - Backup, archive and restore old bookings and events
* Feature - Support WP tools for exporting and erasing personal data
* Feature - Edit users phone number on their profile page
* Tweak - Allow HTML in events and groups of events title
* Tweak - Notifications are send to the user when he cancels or reschedule a booking from the frontend
* Tweak - Order calendars, activities, group categories and groups of events by title
* Tweak - List of activities in calendar editor can now be scrolled
* Tweak - Add the {booking_list_raw} notification tag
* Tweak - Support more parameters in bookingactivities_list shortcode (all booking filters)
* Tweak - Allow to filter bookings by user even if the user is not in the selectbox
* Tweak - Limit the amount of emails that can be sent to a single user per minute (20), hour (200) and day (2000) (spam protection)
* Tweak - Backend javascript and css files are loaded only on Booking Activities screens to avoid conflicts
* Fix - Notification were sometimes sent twice when used with WooCommerce in asynchronous mode
* Fix - Overlapping of the event list in emails
* Fix - WC order became "refunded" when a reservation was refunded, even if another reservation was still "cancelled"
* Fix - Cancellation delays were not working properly
* Fix - The "user_id" parameter of the bookingactivities_list shortcode didn't work while explicitly set to "current"
* Fix - The "status" and "order_by" parameters of the bookingactivities_list shortcode didn't work
* Fix - Booking row was not properly updated after cancelling a booking (group)
* Fix - Can't refund booking groups paid with WooCommerce
* Fix - Events not loaded when a WC product variation was loaded by default, and events were loaded "After page load"
* Fix - PHP notice when trying to get translated messages
* Fix - PHP notice when displaying WC products having a deprecated config available
* Fix - PHP warning when a form with no "User Data (Login / Registration)" field is submitted
* Fix - PHP error on booking form list if the booking form author account has been deleted
* Fix - The bottom bulk actions selectbox didn't work on Bookings page
* Fix - Wrong quantity displayed in reschedule dialog
* Fix - The "Cancel" custom label was not applied to the right buttons
* Fix - Repeated events on exceptions dates were exported
* Fix - The time zone of the exported events was incorrect (UTC instead of yours)
* Dev - Prefill a booking form thanks to URL parameters
* Dev - Use all booking list filters via URL
* Dev - Filter booking list by multiple form id, user id, group category id, group of events id
* Lib - Update FullCalendar to 3.10.0 and Moment JS to 2.23.0

= 1.6.1 - 2018/11/30 =
* Fix - The booking list was empty if no booking (group) had metadata
* Fix - Past events were not always exported (according to calendar field settings)
* Fix - Calendar field settings were not always overriden by URL parameters while exporting events

= 1.6.0 - 2018/11/29 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-6-export-and-booking-without-account/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Book without account
* Feature - WooCommerce guest checkout supported
* Feature - Export your events to ical (ics) files
* Feature - Synchronize your events with third-party apps (e.g.: Google Agenda) (one way: export only)
* Feature - Add {user_ical_url} notification tag to let your customers export and synchronize their bookings on their calendar app
* Feature - Export your bookings to CSV files
* Feature - Synchronize your booking list to third-party apps (e.g.: Google Sheet) (one way: export only)
* Feature - Frontend booking lists are paginated
* Feature - You can use any booking filters as parameters in the bookingactivities_list shortcode
* Feature - Add a "Delivered" booking status, in order to flag when the customer has attended the booking
* Feature - Add {price} notification tag to display the WC order item price bound to the booking
* Optimization - Booking lists are displayed faster (backend and frontend)
* Tweak - Events dropped on the month view now start at the time set in the "Day begin" option
* Tweak - Display shortcuts in calendar editor
* Tweak - Change the "Refunded" label to "Refunded with coupon ..." if it was refunded with a coupon
* Tweak - Add an option to delete all Booking Activities data on uninstall, in order to avoid accidental data deletion
* Tweak - Set default snap frequency to 5 minutes instead of 30
* Tweak - The calendar appearence on the backend booking list no longer changes according to the selected calendars
* Fix - Booking form not appearing on WC variable product pages if the default variation was non-activity
* Fix - Possible PHP error while checking templates, activities and forms permission if they are not set

= 1.5.9 - 2018/10/11 =
* Tweak - Availability period is now checked on server side and is compatible with the "Display past events" option
* Tweak - Reschedule calendar has now the same booking constraints as the calendar of the form used for the reservation (for customers only)
* Tweak - Allow administrators to reschedule a booking to any event of the same activity, on any calendars
* Tweak - Check if booked events have the same activity as rescheduled bookings on server side too
* Tweak - Display a feedback in "cancel" and "change status" booking dialogs when an error occurs
* Fix - Groups of events looked bookable even when they were not (past, or out of the availability period)
* Fix - Past groups of events couldn't be booked even if it's group category allowed it
* Fix - Events list didn't appeared in group of events dialog
* Fix - Do not allow to reschedule a booking if its event has been removed from database (not only from calendar editor)
* Fix - Fields were inserted below the form editor
* Fix - Contradictory events size-related CSS classes
* Fix - Cannot change inactive booking status to active if the event wasn't in its calendar availability period
* Fix - When "Booked only" option is ON, group of events dialog now display quantity booked instead of available quantity (same as booking page)
* Fix - Event "out of calendar range" error while trying to reschedule
* Fix - Non-logged in users had the user ID "0" instead of their WC customer ID in booking groups list

= 1.5.8 - 2018/09/28 =
* Fix - Hidden fields were shown after hitting "Make a new booking" button
* Fix - "Generate Password" option prevented the form to be sent (password field not focusable)
* Fix - PHP error when updating a reccurring event if the new range doesn't include all booked occurrences
* Fix - WC orders bookings status were not change with WooCommerce < 3.0.0
* Fix - Remove corrupted cart items bookings when they are removed from cart
* Fix - Update auto refund process to WC 3.0+ way (kept backward compatibility)
* Fix - Booking groups status stayed 'in_cart' if they were added to cart after a single booking
* Dev - Add hooks to give control over WC cart item restored (when bound to a booking)
* Dev - Add hooks to change notification data before they are sent or prevent them to be sent

= 1.5.7 - 2018/08/27 =
* Fix - Remove mbstring (PHP extension) dependency (use regex to check UTF8 if mbstring is not available)
* Fix - Wrong URL in WC Guest Checkout notice
* Fix - Prevent unwanted drags when clicking a field action in form editor
* Fix - Error message related to min quantity can say "increase quantity to 0"
* Fix - Wrong hook: 'bookacti_default_booking_filters' replaced with 'bookacti_default_form_filters'
* Fix - Apostrophes didn't appear in customizable messages
* Dev - Add hooks to give control over WC cart item merging

= 1.5.6 - 2018/07/11 =
* Tweak - Changed "refunded" and "refund_requested" booking state icon
* Tweak - Add messages in Booking Activities settings tooltips
* Fix - Administrators cannot change booking states to "refunded" if the booking was not actually paid in WooCommerce
* Fix - Cancelling / Completing orders in WooCommerce changed all their bookings states to "cancel" / "booked". Now only "in_cart", "pending" and "booked" bookings are changed
* Fix - Completing a WooCommerce order turned "no payment required" bookings to "paid"
* Fix - PHP error while changing booking state
* Dev - Add hooks to change the booking status change notifications recipient

= 1.5.5 - 2018/07/02 =
* Fix - Non-activity products couldn't be added to cart

= 1.5.4 - 2018/06/30 =
* Tweak - Add the refund coupon code in customers' booking list
* Fix - Inconsistency between cart items and bookings when the same event is booked twice from different products / variations
* Fix - Couldn't save some Login / Registration field options
* Fix - On/off checkboxes may not be saved on position off after closing the dialog once
* Fix - Bookings numbers were not refreshed after form submission
* Fix - Tooltip not working after rescheduling a booking in the backend
* Fix - Booking list pagination didn't keep filters while jumping to a specific page
* Fix - Booking filter values of "calendars" and "activities" didn't appear as selected when they are
* Fix - Order item meta may not be updated while updating booking status, refunding and rescheduling
* Fix - Make sure booking or booking order item exists before anything to avoid PHP errors
* Fix - PHP warning: Unknown is_new_order offset while sending a notification after a booking status changed
* Dev - Add the form_id to booking data to know from which form the booking was made
* Dev - Add filters for the booking list: in__booking_id and in__booking_group_id

= 1.5.3 - 2018/05/30 =
* Tweak - User selectbox list has now a fixed size
* Fix - "The field "Password" is required." error appears even with "Generate password" option on
* Fix - "You can't book for someone else" error appears when "Automatic login" option is off
* Fix - WooCommerce integration screenshot may not appear in "How to integrate this form" box
* Fix - Non-closing div in the form editor
* Fix - Double "X" may appear on "Close dialog" button
* Fix - Display an asterisc on all required fields
* Fix - Fields metadata may not be formatted
* Fix - Tooltip not showing on frontend
* Fix - Field titles not translated on multilingue site in form editor
* Dev - Add some useful hooks
* Dev - bookacti_display_field() now handle 'hidden' and 'file' fields

= 1.5.2 - 2018/05/17 =
* Feature - Add a "Terms" field (required checkbox)
* Tweak - Removed "Activity" master checkbox on variable product. Checking it on each variations is enough.
* Fix - JS error on WC Variable Products if they have no default variation and if calendar is loaded after page load
* Fix - Calendar not displayed when switching WC non-activity variation to activity variation
* Fix - Wrong button label when switching WC activity variation to non-activity variation: "Book" instead of "Add to cart"
* Fix - Calendars locale-related settings didn't take the country into account (first day of week, time format...)
* Fix - Deprecated .live function in newer jQuery versions replaced by .on
* Fix - Remove unnecessary nonces that may cause troubles
* Fix - Fields were added at the top of the form instead of at the bottom

= 1.5.1 - 2018/05/09 =
* Feature - Add a setting to disable automatic login after booking
* Feature - Add a setting to allow customers to book without authentication
* Fix - Calendar field settings dialog may not open if the form was created from the "Add new" button
* Fix - Missing JS check on form without login/register field

= 1.5.0 - 2018/05/05 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-5-booking-forms/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Customizable booking forms !
* Feature - Log in / Register seamlessly as you book 
* Feature - You can now delete your bookings and your booking groups from the booking list
* Feature - You can display past events on frontend, they can be bookable or not
* Feature - Responsive default calendar view: display day view for small calendars instead of week view (set the threshold in settings)
* Tweak - Add a "Product" column in booking list (if the reservation was made with WooCommerce)
* Tweak - Add a dismissible admin notice to inform that WooCommerce "guest checkout" option isn't supported
* Tweak - Use core dashicons instead of additional images in backend
* Tweak - When to load the events? setting now also apply to product variation if a default variation is set
* Fix - Booking groups sometimes not appearing in booking list
* Fix - Show / Hide columns according to page options in booking list after a row is refreshed
* Fix - Booking list pagination didn't allow to jump to a specific page
* Fix - Couldn't drag and drop activities in calendar editor with touch devices
* Fix - PHP warning during AJAX request which needs to create an instance of the Booking List
* Fix - PHP warning when deleting a non-booking order item in the admin panel
* Fix - PHP warning sometimes occurs before sending a notification
* Fix - If the snap frequency was 00:00, it wasn't possible to drop an event on the calendar editor
* Fix - Woocommerce 2.6 backward compatibility various checkout issues
* **Breaking change** - Refund actions in Booking Activities settings must be set again

= 1.4.4 - 2018/04/06 =
* Tweak - Changed events list CSS in "Pick a group of events" dialog
* Tweak - Added a scrollbar in groups of events list in calendar editor
* Fix - Cannot move, resize or delete an event even if all its bookings are cancelled
* Fix - Show error message when no event is selected
* Fix - Calendars cannot close later than 2037-12-31 because of year 2038 bug

= 1.4.3 - 2018/03/09 =
* Fix - Groups of events were not properly retrieved for WooCommerce variations
* Fix - PHP notice when updating an order containing non-booking items
* Fix - PHP notice when updating a WooCommerce product with only 1 calendar, 1 activity or 1 group category
* Fix - Every classes and CSS instructions are prefixed by "bookacti"
* Fix - Do not select the single event if choose group of events dialog is validated with no group chosen
* Fix - Groups of events were sometimes mistakenly disabled in choose group of events dialog
* Lib - Update FullCalendar to 3.9.0 and Moment JS to 2.21.0

= 1.4.2 - 2018/03/01 =
* Fix - Groups of events were only retrieved for the first interval if "Groups only" box was checked
* Fix - Booking calendar didn't appeared on WooCommerce variation switch if the calendar was hidden before

= 1.4.1 - 2018/02/25 =
* Fix - Error while trying to update an event in calendar editor
* Fix - Error while trying to delete a group of events
* Fix - Error while trying to delete a booked event

= 1.4.0 - 2018/02/24 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-4-availability-options/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Set the advance booking period: customers can book events from X to Y days from today (global option and calendar option)
* Feature - Set the minimum booking quantity required per user (activity option and group category option)
* Feature - Set the maximum booking quantity allowed per user (activity option and group category option)
* Feature - Set the maximum number of different users allowed to book the same (group of) event(s) (for private events) (activity option and group category option)
* Feature - Set which user roles are allowed to book wich (group of) event(s) (activity option and group category option)
* Feature - Set the booking changes deadline per activity: customers can change their events X days before they start (global option already exists)
* Feature - Set whether to allow to book started groups of events (global option and group category option)
* Tweak - Groups of events can be unselected in calendar editor
* Optimization - Only the required groups of events data are retrieved on frontend
* Optimization - Do not process the whole render function while dragging or resizing events
* Optimization - Instant JS alert while dragging or resizing a booked event instead of waiting for PHP check
* Optimization - Get event / group of events availability with a single query
* Fix - Wrong error message when quantity <= 0 in booking form
* Fix - PHP notice when updating single events and activity or calendar with no managers
* Fix - Don't display booking actions in emails
* Fix - PHP warnings and notices when a WooCommerce order was made and notifications sent
* Fix - JS error on WC variation loaded with another default booking method than "Calendar"
* Fix - Incorrect booking groups user ids if users made their bookings before logging in
* Fix - PHP notices after updating custom parameters in calendar editor
* Fix - JS errors when an event of a group was past
* Fix - Australia and Arctic timezones added
* Fix - Multilingual event titles were not displayed in event dialog in calendar editor
* Fix - No alert displayed while trying to move or resize a booked event
* Fix - JS error while trying to compute group availability if events of the group were not retrieved yet
* Fix - PHP notices on activation: Multiple primary keys

= 1.3.3 - 2018/02/11 =
* Fix - Repeated events were not displayed on today's date at a future time
* Fix - The dropped off events were disappearing when the view changes in calendar editor
* Fix - Booking action buttons are back in frontend WooCommerce orders details
* Fix - The snapDuration default value was not automatically displayed in calendar settings
* Fix - PHP notice in WooCommerce variations

= 1.3.2 - 2018/02/07 = 
* Tweak - Do not select temporary states as booking list filter (in cart, expired, removed)
* Tweak - Calendar editor is now always full width
* Fix - Wrong total of booking rows
* Fix - Calendar settings could be unexpectedly changed using bookacti_update_calendar_settings() JS hooks
* Fix - Custom time format was not applied in booking lists (in cart, checkout and order)
* Fix - Duplicated events when booking system needed to reload
* Fix - Compatibility with some optimization plugin
* Fix - Hide overflowing button labels in Bookings page
* Fix - Readme FAQ now matches Booking Activities 1.3 changes
* Lib - Update FullCalendar to 3.8.2 and Moment JS to 2.20.1

= 1.3.1 - 2018/01/28 =
* Fix - Empty booking list if booking groups table was empty
* Fix - "Do not exist" error when trying to book single non-reccurring events that did exist
* Fix - Incorrect booking values if the booking was made with a booking form
* Fix - Bookings numbers were not reloaded after booking form was sent

= 1.3.0 - 2018/01/28 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-3-improved-booking-management/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Tweak - Bookings page has been redesigned
* Feature - Filter your booking list by calendars, activities, status, date, and customers (and also by events like before)
* Feature - The booking list is now paginated and columns can be hidden (in screen options) and sorted
* Feature - Bookings have a new "Payment status" property, with 3 possible values: No payment required, owed, paid.
* Feature - Display your customers' bookings calendar with the shortcode [bookingactivities_calendar bookings_only="true" user_id="current" past_events="true"]
* Feature - Customize frontend dialogs titles and buttons labels (and content for some of them)
* Tweak - In-cart bookings are no longer active when the cart expiration is deactivated. The availability check is made on checkout.
* Tweak - Date format can be set more specifically, and the separator between dates can be changed
* Tweak - ON/OFF button: clearly display "ON" and "OFF" for a better understanding
* Tweak - Email refund option is no longer offered to administrators
* Fix - Activities with a title containing special characters triggered a fatal error when an event was dropped
* Fix - Picking a group of events not already loaded triggered a fatal error (events of the group still need to be rendered)
* Fix - Error notice about wpdb::prepare since WP 4.9+ (can cause fatal error if WP_DEBUG was set to true)
* Fix - Show / Hide activities in calendar editor triggers fatal error
* Fix - Shop Managers (WooCommerce role) were not able to edit activities
* Fix - WooCommerce [product_page] shortcode is now working with variable product marked as activity
* Fix - Bookings in a WooCommerce order containing a non-activity products were still "Pending" after payment is received
* **Breaking change** - Date format needs to be set again in Booking Activities settings, in "Messages" tab

= 1.2.3 - 2018/01/09 =
* Fix - AJAX error when creating an activity with PHP 7.1+
* Fix - Fatal error when trying to update activity which doesn't have events on calendar

= 1.2.2 - 2017/12/27 =
* Feature - Booking Activities' notifications can now be sent along WooCommerce's notifications
* Optimization - Events are loaded significantly faster
* Optimization - Events are loaded at intervals as the user navigates the calendar (configure it in Booking Activities settings)
* Optimization - Calendar editor operations are processed significantly faster
* Optimization - Booking forms (with or without WooCommerce) are verified faster
* Optimization - JS and CSS files are now versioned to allow smart cache refresh
* Optimization - JS and CSS files are now minified, your pages will load faster
* Tweak - Use CTRL+G to create a group of events in calendar editor (2+ events must be selected)
* Tweak - Pressing ENTER key now brings focus "OK" button on dialogs of calendar editor
* Fix - Loading feedback was displayed before booking system title
* Fix - Alert pop-up was sometimes displayed on frontend with a permission-related error message
* Fix - Bookings could still be pending after a WC order failed
* Fix - Bookings status were not up to date in WooCommerce's notifications
* Fix - Events didn't appear when "repeat to" value was set to tomorrow
* Fix - Custom messages were not translated on multilangual sites
* Fix - Add to cart button label is switched according to WooCommerce variation type
* Lib - Update FullCalendar to 3.8.0 and Moment JS to 2.20.0

= 1.2.1 - 2017/11/17 =
* Feature - Added a snap frequency option in editor to place your events at precise timeslot
* Lib - Updated FullCalendar to 3.6.2 and Moment JS to 2.19.1
* Tweak - Wordpress 4.9 support
* Tweak - A button allowing users to make a new booking now appears after a successful booking form submission
* Fix - Now you can edit events on touch devices (click replaces mouseover)
* Fix - Fixed events that shouldn't appear / should appear on frontend calendars according to your timezone
* Fix - Fixed deactivated calendar / activities / events appearing on frontend if the shortcode didn't specified calendar and activities ids
* Fix - Prevent users to book duplicated bookings by pressing multiple times on the "Book" button
* Fix - Fixed notification tag "{booking_title}" 
* Fix - Fixed multilingual event title in notification always showing in site's language
* Fix - Fixed bookacti_hourly_event WP cron job triggered multiple times
* Fix - Fixed JS fatal error when trying to format duration for event list
* Dev - Many refactoring in notifications in anticipation of Notification Pack add-on release. See below.
* Dev - Functions and hooks related to notifications have undergone changes. Please check the source code if you use them.
* Dev - bookacti_display_field now support radio and textarea and you can add these to editor setting dialogs
* Dev - PHP filter Tweak - bookacti_messages have a new $raw parameter

= 1.2.0 - 2017/10/12 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-2-email-notifications/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Send email notifications to the administrator and the customer when a booking is made, when its status changes and when it is rescheduled
* Feature - Configure and customize email notifications
* Feature - Configure some messages displayed on frontend directly through Booking Activities settings
* Tweak - Added a date field in bookings database, so you can know when a booking was made
* Fix - Wrong locale was loaded on multilingual site (depending on site and users settings)
* Fix - Dialogs looked glitchy on Chrome
* Fix - Booking quantity was incorrect if multiple partial refunds were deleted at once in a WooCommerce order
* Fix - Booking quantity wasn't correctly displayed on booking list
* Fix - Min delay before event is no longer limited to a minimum of 1 day. Minimum is now 0 (no delay)
* Fix - Do not display booking actions on "Pay for orders" pages
* Lib - Updated FullCalendar to 3.6.0 and Moment JS to 2.19.0
* Dev - A lot of hooks has been changed, added or removed. Please go to the website for the [complete changelog](https://booking-activities.fr/en/documentation/changelog/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme).

= 1.1.4 - 2017/09/14 =
* Tweak - You can force event deletion even if it is booked
* Tweak - You can place a repetition exception on booked occurrences (a warning will be displayed)
* Tweak - You can unbind booked occurrences in order to edit them independently
* Tweak - When you delete an activity, you can now also delete all its events
* Fix - Cannot edit / move event after being added on calendar (needed page refresh) (bug introduced with 1.1.3)
* Fix - Fixed possibility to unbind single event, causing unexpected behavior
* Fix - Single events were not displayed on their exception dates (if they used to be repeated and then back to single)

= 1.1.3 - 2017/09/12 =
* Lib - Updated FullCalendar to 3.5.1 (events are rendered 25% faster)

= 1.1.2 - 2017/08/30 =
* Fix - Incorrect (or negative) group bookings number in "Bookings" page
* Fix - Support PHP 5.3 or later (instead of 5.5)
* Localization - Language files are no longer included in the plugin package. Now they will be updated through wordpress, just like your themes and plugins. You can contribute here: https://translate.wordpress.org/projects/wp-plugins/booking-activities
* Localization - Replaced the word "schedule" by the more appropriated word "time slot" or "event" depending on the context
* Tweak - Add a video introduction in the readme file

= 1.1.1 - 2017/08/08 =
* Fix - Fix AJAX error when trying to create / update an activity with WordPress < 4.6
* Fix - Fix error when cron try to expire an unexisting cart
* Fix - HTML code was displayed in refund emails
* Fix - Admin can turn inactive bookings state to 'cancelled' if they want
* Fix - Improved readme.txt to provide a better understanding and preview of the plugin

= 1.1.0 - 2017/07/16 =
* **[See the user-friendly release note](https://booking-activities.fr/en/blog/booking-activities-1-1-grouped-events/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme)**
* Feature - Manage groups of events! You can group events and make your customer book a bundle of events instead of a single one.
* Feature - Bind multiple calendars and activities to one product in WooCommerce!
* Optimization - Calendars are now loaded faster and on page load (possibility to load after page load in Booking Activities settings)
* Feature - Choose the default booking status after a customer complete the booking form or a WooCommerce order.
* Feature - Calendars events are now related to your business timezone, and no longer to users' timezone. Customers around the world cannot see / book a past event because of time offset.
* Feature - You can change how dates are formatted (in grouped events and picked events list only)
* Tweak - You can change your calendars period regardless of the bookings already done
* Fix - Apostrophe characters in template / activity / events names are now correctly displayed
* Fix - Dates are now translated everywhere
* Fix - Copy a shortcode in calendar editor now copy only plain text, no more undesired html
* Fix - Cart expiration is now checked on each page load. This means that you cart counter will now always be up to date.
* Fix - Fixed booking method checks in JS files (misuse of inArray)
* Fix - Fixed permission error after closing a dialog in template editor
* Fix - All global JS variables are stored in bookacti object in order to avoid collisions
* Delete - Removed trashes from editor, to delete calendars, activities and events please use their respective settings dialogs
* Delete - Deleted events 'occurrence id' since it is not a relevant identifier. All events can be identified by id + start + end datetimes.
* Delete - Deleted unused bookings global actions
* Delete - bookacti_display_booking_system() function replaced by bookacti_get_booking_system() which MUST be used to display a booking system
* Dev - A lot of hooks has been changed, added or removed. Please go to the website for the [complete changelog](https://booking-activities.fr/en/documentation/changelog/?utm_source=wp-plugin-page&utm_medium=wordpress&utm_content=readme).
    
= 1.0.8 - 2017/05/31 =
* Fix - Fixed events not fetched if your database prefix was not exactly "wp_"
* Fix - "Create or import activity" dialog is closed before opening a new one. This prevent undesirable display and behavior.
* Fix - Flush rewrite rules on activate to avoid error 500
* Fix - Cron error in log/error.log appeared even if bookings were correctly deactivated hourly
* Fix - Check booking id before sync booking state in woocommerce meta to avoid errors

= 1.0.7 - 2017/05/27 =
* Fix - Fixed non-repeting events not fetched

= 1.0.6 - 2017/05/24 =
* Lib - Updated FullCalendar to 3.4 and Moment.js to 2.18.1
* Tweak - Calendars range is not restricted by booked events anymore
* Fix - Events out of their calendar range are not displayed and are impossible to book
* Fix - Fixed update booking list parameters always resulting in a permission error
* Fix - Added defined() check before constant definitions to avoid collisions
* Add - Added bookacti_updated action hook and stored plugin version in database
* Add - Added bookacti_validate_template_data action hook on template insert / update
* Tweak - Moved some functions from model-template.php to functions-template.php
* Delete - Deleted bookacti_validate_template function, replaced by bookacti_validate_template_data
* Delete - Deleted bookacti_deactivate_expired_bookings_hourly function, replaced by bookacti_controller_deactivate_expired_bookings

= 1.0.5 - 2017/05/11 =
* Fix - Fixed error messages not disappearing in event dialog on calendars editor
* Fix - Correct formating of booking id in WooCommerce emails

= 1.0.4 - 2017/04/20 =
* Fix - WooCommerce 3.0 supported and backward compatibility to WooCommerce 2.6
* Fix - Fixed issue causing separator between to dates or two hours not to show
* Fix - Fixed issue causing unique event in calendar or events closed to calendar limits not to show
* Fix - Fixed 'parent' booking method for variations
* Fix - Fixed refund via coupon AJAX call feedback
* Fix - Fixed dates not displayed when they had a special character such as "é"
* Fix - Fixed permission to create and read coupons when a user try to generate a refund coupon
* Fix - Fixed blank page when you 'Order Again' an order containing bookings. This fonctionnality is not supported yet, but now it leads to a proper error message.
* Fix - Hid reschedule timepicker when no date has been selected in datepicker (w/ Display Pack add-on)
* Fix - Replaced 'eventRender' JS action triggered on FullCalendar eventRender in calendar editor by 'bookacti_event_render'
* Fix - Fixed activity list not filtered by calendar on load in admin product page
* Tweak - Merged WC and BA confirmation notices when you add a product to cart to display only one
* Tweak - Hid in-cart, expired and removed bookings from users' booking list (can be filtered with 'bookacti_bookings_list_hidden_states' filter)
* Add - Added 'bookacti_validate_selected_event' JS action
* Add - Added 'bookacti_temporary_book_message' filter to allow you to change the confirmation text when an activity has been added to cart through WooCommerce
* Add - Added 'bookacti_refund_coupon_code_template' filter to change the template of WC generated coupon code (with refund by coupon method)
* Add - Added 'bookacti_get_booking_product_id' function to retrieve product id by booking id, if the reservation was made with WC

= 1.0.3 - 2017/03/29 =
* Feature - Added possibility to change calendar day start / end hours
* Fix - Corrected the [bookingactivities_calendar] shortcode name in calendar editor
* Fix - Fixed possible error while uninstalling plugin
* Localization - Updated fr_FR

= 1.0.2 - 2017/03/27 =
* Fix - Fixed error 500 on plugin activation (undefined function wp_get_current_user())

= 1.0.1 - 2017/03/25 =
* Fix - Updated shortcodes in readme.txt

= 1.0.0 - 2017/03/25 =
* Feature - Drag and drop planning editor
* Feature - Shortcodes to display reservation form, the calendar alone, or customers' list of reservations
* Feature - One-click reservation system
* Feature - Woocommerce support for reservation online payments
* Feature - Woocommerce cart expiration system
* Feature - Backend reservation manager and frontend user's booking list so that both can manage reservation



== Upgrade Notice ==

= 1.15.8 =
Requires MySQL 5.7.22 or later, or MariaDB 10.5.4 or later

= 1.15.0 =
Major changes in code:
* If you have custom code, especially javascript and CSS affecting the calendars, you will probably need to adapt it. No support can be provided for your custom code.

= 1.12.0 =
Major changes in code:
* If you have purchased add-ons, you need to update them too.
* If you have custom code, you may need to adapt it. No support can be provided for your custom code.
* The archiving tool has been removed. You can still find the backups you have made in wp-content/uploads/booking-activities/archives and manually import them with phpMyAdmin.
* You won't be able to restore your previous backups of the wp_bookacti_exceptions table as is after the update

= 1.9.0 =
Major changes in code:
* If you have purchased add-ons, you need to update them too.
* If you have custom code, you may need to adapt it. No support can be provided for your custom code.

= 1.1.0 =
Major update with breaking changes. To be safe, make a backup of your database. 
You need to update your Booking Activities add-ons in the same time (if you have any) as they will not be compatible anymore.

= 1.0.4 =
If you are using Booking Activities with WooCommerce, make sure you are using 2.6.0 or later, and try to update to WooCommerce 3.* as soon as possible since BW compatibility functions are now deprecated

booking-activities's People

Contributors

yoancutillas avatar

Stargazers

Rihards Mantejs avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.