=== 3task Calendar ===
Contributors: 3task
Tags: event calendar, recurring events, ical, gdpr, events
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Event calendar without Google, CDN or tracking. Recurring events, iCal subscription, event schema and a German translation included.

== Description ==

**3task Calendar** is an event calendar for clubs, practices, schools and small businesses that want to publish dates without sending visitor data to third parties. Everything runs on your own WordPress: no external fonts, no CDN, no tracking, no account.

Visitors can add a single event to their own calendar or subscribe to the whole calendar (or one category) on their phone. Changes appear there automatically.

= Key Features =

* **Unlimited Events** - Create as many events as you need
* **Recurring Events** - Daily, weekly, every two weeks, monthly or yearly, with an end date; single dates can be changed on their own
* **iCal Export and Subscription** - "Add to my calendar" for every event and a subscription feed (all events or one category) for Google Calendar, Apple Calendar, Outlook and Thunderbird
* **German Translation** - Informal (du) and formal (Sie) German included
* **Unlimited Categories** - Organize events with color-coded categories
* **Month and List Views** - Multi-day events appear on every day they cover
* **Three Designs** - Clear (light), Accent (bold color header) and Night (dark), with your own accent color; events take their category color automatically
* **Responsive** - Adapts to small screens
* **Gutenberg Block** - Live preview in the editor, choose view, design and category
* **Shortcodes** - Flexible placement options
* **Schema.org SEO** - Event markup with ISO dates and time zone, for block and shortcode
* **Route Link** - "Plan route" opens OpenStreetMap only when the visitor clicks it
* **Accessible Popup** - Dialog role, keyboard focus and Escape to close
* **Mobile List** - On small screens the calendar starts in list view
* **GDPR Friendly** - Made in Germany with privacy in mind

= Easy to Use =

1. Install and activate
2. Create your first event
3. Add the calendar to any page with shortcode or Gutenberg block
4. Done!

= Shortcodes =

**Display Calendar:**
`[threecal]`

Options: `view` (month, list), `category`, `location`, `theme`, `show_filters`, `show_legend`, `show_subscribe`, `mobile_list` (true/false).

**With Options:**
`[threecal view="month" category="1"]`

**Event List:**
`[threecal_events limit="10"]`

**Upcoming Events:**
`[threecal_upcoming limit="5"]`

**Mini Calendar (Perfect for Sidebars):**
`[threecal_mini]`

= Gutenberg Block =

Simply search for "3task Calendar" in the block inserter to add a calendar to any page or post.

= No feature locks =

3task Calendar works completely on its own - every feature in this plugin is unlocked.

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/3task-calendar/`
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Go to 3task Calendar in your admin menu to create events
4. Add the calendar to any page using `[threecal]` shortcode or Gutenberg block

== Frequently Asked Questions ==

= How do I display the calendar? =

Use the shortcode `[threecal]` or add the 3task Calendar block from the Gutenberg editor.

= Can I have multiple calendars? =

Yes! Each shortcode or block is an independent calendar. You can filter by category.

= How do I style the calendar? =

The calendar automatically adapts to your theme. You can also add custom CSS for further customization.

= Is this plugin GDPR compliant? =

Yes! 3task Calendar is developed in Germany with privacy in mind. The core calendar functionality works without any external requests. If you choose to enable the optional Google Maps integration (for event locations), you will need to configure your own API key and ensure GDPR compliance for your use case.

= Does the plugin send data to external services? =

No. The calendar, the iCal files and the subscription feed are generated by your own site. The "Plan route" link only opens OpenStreetMap when a visitor clicks it. Google Maps is only used if you add your own API key (see External Services).

= How do visitors subscribe to the calendar? =

Every calendar shows a "Subscribe to this calendar" link. It opens the calendar app via webcal://. The address can also be copied into Google Calendar ("From URL"). Use `[threecal category="2"]` to offer a feed for one category only.

= How do recurring events work? =

Choose a repeat pattern and an end date when editing an event. The plugin creates the single dates. If you edit one date of a series, it is detached and keeps your changes; the series skips that date from then on.

= Does the calendar work with page caching plugins? =

Yes. Month navigation and the event popup use public read-only requests without a nonce, so cached pages keep working.

= Where can I get support? =

Please use the [WordPress.org support forum](https://wordpress.org/support/plugin/3task-calendar/) for questions and bug reports.

== External Services ==

This plugin provides **optional** integration with Google Maps for event location features. This integration is completely optional and disabled by default.

= Google Maps Platform (Optional) =

When you enable the Google Maps integration by adding your own API key in the plugin settings:

* **What it does:** Displays event locations on a map and converts addresses to coordinates (geocoding).
* **When data is sent:** Only when you add a Google Maps API key AND create events with location data.
* **What data is sent:** Event location addresses are sent to Google's Geocoding API to retrieve coordinates.
* **Service provider:** Google LLC
* **Terms of Service:** [Google Maps Platform Terms of Service](https://cloud.google.com/maps-platform/terms)
* **Privacy Policy:** [Google Privacy Policy](https://policies.google.com/privacy)

**Note:** If you do not add a Google Maps API key, no data is ever sent to Google and the plugin works entirely without external requests.

== Screenshots ==

1. Month view in the Accent design: recurring events, multi-day events and category colors
2. Event details with location, route link and "Add to my calendar"
3. List view, which small screens use automatically
4. The Night design for dark websites
5. Admin dashboard with upcoming events and quick actions
6. Editing a recurring event: repeat rule, end date, categories and location
7. Design tab with a preview of all three designs
8. Event list with series, categories and status

== Changelog ==

= 1.3.1 =
* Fixed: calendars set to the list view (shortcode view="list" or the block setting) showed the month grid
* Fixed: the list view showed dates in German order ("2. October") in every language; the format is now translatable
* Fixed: categories created without a sort order could not be saved on databases in strict mode

= 1.3.0 =
* NEW: Three redesigned calendar designs (Clear, Accent, Night) with accent color setting and a Design tab with preview
* NEW: Events use the color of their category automatically
* NEW: Redesigned admin with dashboard, upcoming events, quick actions and a compact event list with filters
* NEW: Block editor shows a live preview and offers design and category
* FIXED: The block did not render on the front end (block name started with a digit); existing pages are converted automatically
* NEW: Recurring events (daily, weekly, every two weeks, monthly, yearly) with end date and editable single dates
* NEW: "Add to my calendar" (.ics) for every event and an iCal subscription feed for all events or one category
* NEW: German translation (informal and formal)
* NEW: "Plan route" link to OpenStreetMap for event locations
* NEW: On small screens the calendar starts in list view (shortcode option mobile_list)
* IMPROVED: Event popup is an accessible dialog with focus handling; keyboard support in the list view
* Fixed: month navigation did not update the calendar grid when the new month had events
* Fixed: multi-day events now appear on every day they cover and in the upcoming list while they are running
* Fixed: event list pagination links showed page 1 again
* Fixed: "today" and the current month now use the site time zone instead of UTC
* Fixed: "+N more" in the month view now shows the remaining events of that day
* Fixed: month navigation and popups keep working on cached pages
* Security: the REST API no longer returns draft events to visitors
* Security: settings can only be changed by users with the calendar settings capability; saving no longer resets other settings
* Security: the mini calendar popup no longer renders event data as HTML
* SEO: event schema now uses ISO 8601 dates with time zone, works with the block and respects the category of the calendar
* Performance: the front end no longer loads Dashicons (icons are inline SVG); fewer database queries for categories and locations
* REST API: pagination (per_page, page) and date validation for /events
* Settings: options for event schema and data removal on uninstall
* Database upgrades now run automatically after plugin updates

= 1.2.2 =
* Improved code quality: Replaced inline CSS/JS with properly enqueued assets
* Added External Services documentation for optional Google Maps integration
* Fixed WordPress.org coding standards compliance

= 1.2.1 =
* Fixed plugin name to match WordPress.org slug requirements
* Text domain now correctly matches plugin slug

= 1.2.0 =
* Rebranded from CalendarCraft to 3task Calendar
* Updated all shortcodes to use [threecal], [threecal_events], [threecal_upcoming], [threecal_mini]
* Updated Gutenberg block registration
* Internal code refactoring for WordPress.org compatibility

= 1.1.0 =
* NEW: Mini Calendar shortcode [threecal_mini] - perfect for sidebar widgets
* NEW: Clickable event popup on mini calendar days
* NEW: List view now fully functional with view switcher
* NEW: Help tab in admin with complete shortcode documentation
* IMPROVED: Events grouped by day in list view
* IMPROVED: Full weekday names in list view headers

= 1.0.0 =
* Initial release
* Unlimited events and categories
* Month and list views
* Gutenberg block support
* Responsive design
* Schema.org event markup
* German translation included

== Upgrade Notice ==

= 1.3.1 =
Fixes the list view, which showed the month grid in 1.3.0.

= 1.3.0 =
Recurring events, iCal export and subscription, German translation. Also fixes month navigation, multi-day events, pagination and time zone handling, plus security hardening. Recommended for all users.

= 1.2.2 =
Improved code quality and WordPress.org coding standards compliance.

= 1.2.1 =
Fixed plugin name to match WordPress.org requirements.

= 1.1.0 =
New Mini Calendar shortcode for sidebar widgets and improved list view!

= 1.0.0 =
Initial release of 3task Calendar - Professional WordPress Event Calendar.

== Credits ==

Icons: [Tabler Icons](https://tabler.io/icons), MIT license, embedded as inline SVG (no icon font, no external request).

== About 3task.de ==

3task Calendar is developed by **3task.de**, specialists in WordPress plugin development. We create focused, lightweight tools that solve real problems.

[Visit 3task.de](https://www.3task.de/)

== Support ==

* [WordPress.org Support Forum](https://wordpress.org/support/plugin/3task-calendar/)
* Built-in Help tab in plugin settings

[Contact 3task.de](https://www.3task.de/)
