=== icalndr ===
Contributors: toreft
Tags: ical, icalendar, calendar, events, ics
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: MIT
License URI: https://opensource.org/licenses/MIT

Import one or more iCal (.ics) feeds and display their events via shortcode or widget, with layout presets and a calendar view.

== Description ==

icalndr imports one or more iCal (`.ics`) feeds and displays their events on the
front end through a shortcode or a widget. It is built with security and readable,
single-responsibility code in mind.

**Features**

* Add one or more calendar feeds, each with a label, `.ics` URL, and cache lifetime.
* Display events with the `[icalndr]` shortcode or the sidebar widget.
* Layout presets: `list`, `cards`, `compact`, and an interactive `calendar`.
* Calendar view of `month` (default) or `week`, with back/forth navigation and
  click-to-open day details (no page reloads).
* Remote feeds are cached (transients) and fetched with an SSRF guard and a
  response-size cap.

**Shortcode**

`[icalndr feed="team" layout="calendar" view="month"]`

Attributes: `feed` (required, the feed slug), `layout` (`list`, `cards`, `compact`,
`calendar`), `view` (`month`, `week` — calendar layout only), `limit`,
`show_description` (`1`/`0`), and `upcoming` (`1`/`0`).

== Installation ==

1. Upload the plugin to the `/wp-content/plugins/icalndr` directory, or install it
   through the Plugins screen in WordPress.
2. Activate the plugin through the "Plugins" screen.
3. Go to **Settings → icalndr** and add one or more feeds (label + `.ics` URL).
4. Add the `[icalndr feed="your-slug"]` shortcode to a post or page, or add the
   "icalndr — Calendar feed" widget to a sidebar.

== Frequently Asked Questions ==

= Where do I find a feed's slug? =

The slug is generated automatically from the feed label and shown in the Feeds
table on the settings page, along with a ready-to-copy shortcode.

= Does it fetch the feed on every page load? =

No. Each feed's raw body is cached in a transient for the cache lifetime you set,
so the remote server is only contacted when the cache expires.

= Which parts of an event are shown? =

The summary, start/end date and time (in your site's timezone and date format),
location, description, and a link to the event when the feed provides one.

= Can I change the appearance? =

Yes. Choose a layout preset per shortcode/widget or globally in Settings → icalndr.

== External services ==

This plugin connects to the iCal feed URLs that you, the site administrator, enter
on its settings page. This is required to display the events those feeds contain.

* **What is sent and when:** When a feed's cache is empty or expired, the plugin
  makes an HTTP GET request to the feed URL you configured. The request includes a
  User-Agent string identifying the plugin and your site's home URL. No visitor or
  personal data is transmitted.
* **What is received:** The raw iCalendar (`.ics`) text of that feed, which is
  cached locally and parsed for display.
* **Whose service:** The feed provider is chosen entirely by you (for example a
  Google Calendar, Outlook, or any other public `.ics` URL). Please review the
  terms of use and privacy policy of whichever feed provider you configure.

The plugin does not contact any service operated by the plugin author and performs
no tracking or analytics.

== Screenshots ==

1. Settings screen: manage feeds and default layout.
2. Calendar layout (month view) with click-to-open day details.
3. List layout output.

== Changelog ==

= 1.0.0 =
* Initial release: multiple feeds, shortcode and widget, list/cards/compact/calendar
  layouts, and month/week calendar navigation.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
