=== Annovisio ===
Contributors: ralf_st
Tags: calendly, calendar, event calendar, yearly calendar, multi-day events
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Turn Calendly into a clear annual event calendar for WordPress — including multi-day events and direct booking links.

== Description ==

AnnoVisio turns Calendly into a clear annual event calendar for WordPress.

Calendly is excellent for booking, but not for showing many events clearly across a whole year. AnnoVisio solves this by importing your Calendly event types and displaying them in a compact annual calendar on your WordPress site.

Demo video:

https://vimeo.com/1198470544

Ideal for:

* Training providers
* Retreat organizers
* Workshop and seminar hosts
* Schools and clubs
* Venues and event spaces

Key features:

* Import and sync Calendly event types
* Display events in a clear annual calendar via shortcode
* Support multi-day events
* Let visitors open the Calendly booking flow directly from the calendar
* Run manual syncs or optional automatic synchronization via WP-Cron

AnnoVisio is built for site owners who want to present bookable events in a much clearer way than with a standard Calendly embed.

== External services ==

This plugin uses Calendly as an external service. Calendly is required to synchronize Calendly event types into WordPress, to check availability before opening a booking dialog, and to display Calendly's booking popup on frontend pages that use the `[annovisio]` shortcode.

External services used:

* Calendly service: https://calendly.com
* Calendly API endpoint used by the plugin: https://api.calendly.com
* Calendly frontend widget assets loaded by the shortcode: https://calendly.com/assets/external/widget.js and https://calendly.com/assets/external/widget.css

What is sent to Calendly and when:

* During manual synchronization and WP-Cron automatic synchronization, the plugin sends authenticated server-side GET requests to `https://api.calendly.com` using the Calendly Personal Access Token configured by the site administrator in the WordPress admin area.
* During synchronization, the plugin requests Calendly data from `/users/me` and `/event_types`. For availability checks, the plugin requests `/event_type_available_times`. Request parameters can include Calendly user URI, event type URI, `active`, `count`, start/end time values, and Calendly pagination URLs returned by previous API responses.
* When a site visitor clicks an event rendered by the `[annovisio]` shortcode, the visitor's browser first calls this plugin's WordPress REST endpoint on the same WordPress site with the Calendly event type URI and either a selected date or a UTC slot start. The plugin then sends a server-side authenticated request to Calendly's `/event_type_available_times` endpoint with the event type URI and the calculated start/end time window.
* On frontend pages where the `[annovisio]` shortcode renders the calendar, the visitor's browser loads Calendly's widget JavaScript and CSS from `calendly.com` so Calendly's booking popup can be displayed. Interactions inside the Calendly booking popup are handled by Calendly.

Calendly legal links:

* Terms: https://calendly.com/legal/customer-terms-conditions
* Privacy: https://calendly.com/legal/privacy-notice

== Installation ==

1. Upload the plugin files to the `/wp-content/plugins/annovisio/` directory, or install the plugin through the WordPress plugins screen.
2. Activate the plugin through the 'Plugins' screen in WordPress.
3. Open **Settings > Annovisio**.
4. Enter your Calendly Personal Access Token and configure the plugin settings.
5. Run a manual sync or enable automatic synchronization.
6. Add the shortcode `[annovisio]` to a page or post.

== Frequently Asked Questions ==

= Does this plugin require Calendly? =

Yes. AnnoVisio is built specifically for Calendly and requires a Calendly Personal Access Token to import and synchronize event types.

= Does AnnoVisio support multi-day events? =

Yes. AnnoVisio supports multi-day events and displays them clearly in the annual calendar.

= How do I display the calendar on my site? =

After configuring the plugin and running a sync, add the shortcode `[annovisio]` to any page or post where you want the calendar to appear.

= Does the plugin load external resources on the frontend? =

Yes. On pages where the `[annovisio]` shortcode is used, the plugin loads Calendly's official widget script and stylesheet so the booking popup can be displayed. It also performs a server-side availability check against the Calendly API when a visitor clicks an event link.

== Screenshots ==

1. Annual calendar view with imported Calendly events on the WordPress frontend.
2. Multi-day events displayed clearly across the year calendar.
3. AnnoVisio settings page with Calendly connection and sync options.
4. Event click opens the Calendly booking flow directly from the calendar.

== Changelog ==

= 1.0.0 =
* Initial release
