StayDate Calendar for Joomla 6
Version 1.0.12

CHANGELOG
---------
1.0.12: Replaced deprecated Joomla CMS filesystem calls with Joomla Framework filesystem APIs for Joomla 6 compatibility.
1.0.11: Fixed the per-day insert failure by passing insertObject() a variable by reference; applied the same fix when confirming requests. Added admin-only technical diagnostics and a dedicated Joomla log file for future save errors. Changed the frontend calendar designation to an h3 heading.
1.0.10: Made per-day AJAX saves return clear JSON responses for expired sessions and server errors. Added a per-calendar image upload and booking offer description, shown above the frontend calendar.
1.0.9: Removed the reserved “Component” prefix from the extension name and aligned the manifest with the admin menu name.
1.0.7: Added SPDX GPL notices to all PHP files and set the distinctive JED listing name StayDate Calendar and aligned the manifest/update metadata.
1.0.6: Prepared the JED release metadata, publisher details and Joomla update server.
1.0.5: Renamed the visible component to Buchungskalender, added a CAPTCHA check
to booking requests, and added a recipient email field to the administrator dashboard.
1.0.4: Displays frontend months in a compact two-column layout on wide screens;
the calendar returns to one column on narrow screens.
1.0.3: Added a clickable daily status editor in the administrator. Individual
day changes are saved with AJAX. The frontend month navigation and booking
request form now use AJAX and do not reload the whole page.

OVERVIEW
--------
This Joomla component displays an availability calendar and accepts non-binding
booking requests. Administrators can create multiple calendars, click individual
days to set a status, note or price, change date ranges in one action, add custom
legend entries, and review incoming requests. Individual day changes are saved
without reloading the administrator page.

INSTALLATION
------------
1. In Joomla Administrator, open System -> Install -> Extensions.
2. Upload the com_pcdidibookingcalendar_v1.0.12.zip package.
3. Open Components -> StayDate Calendar (Buchungskalender in the German backend).
4. Set the recipient email address in the dashboard. Open Options to set the
   currency symbol and optional privacy-policy URL.
5. In Joomla Global Configuration, activate a CAPTCHA plugin and select it as
   the default CAPTCHA under Site settings.
6. Select a calendar and set its display options. Optionally add a JPG, PNG or WebP image (maximum 5 MB) and a short description of the offer; both appear above the calendar on the frontend.
7. Add or edit a menu item and select the StayDate Calendar menu item type.
   Choose the calendar ID in the menu item options when displaying a specific
   calendar. Without a menu item, the view can also be opened with
   index.php?option=com_pcdidibookingcalendar&view=calendar.

AVAILABILITY
------------
Unmarked days are treated as available. In the component dashboard, click a day
to choose its status and optionally add a note or price. The default legend
contains: Available, Booked, Changeover 1, Changeover 2 and Unavailable. Date
ranges can still be updated together, and additional legend entries can be
created per calendar.

The calendar supports 1 to 12 months in the overview, an optional start month,
Monday/Sunday/Saturday as the first weekday, week numbers, and optional display
of past-day status. Notes and prices can be attached to date ranges.

BOOKING REQUESTS
----------------
Visitors select an arrival and departure date and submit their contact details.
Calendar month navigation and request submission use JavaScript requests so the
whole page does not reload.
Requests are stored in Joomla and shown in the administrator dashboard.
Notification emails are sent to the recipient address configured in the
administrator dashboard, or to Joomla's default mail-from address if no address
is configured. The booking form validates the CAPTCHA plugin selected as the
Joomla default CAPTCHA. A CAPTCHA plugin must be installed and enabled.

Requests remain pending until an administrator confirms or rejects them.
Confirming a request marks its nights as Booked. A request is not a payment,
automatic reservation or booking confirmation.

DATA AND UNINSTALLATION
-----------------------
The component stores calendar settings, booking offer descriptions, image paths,
availability, notes, prices and booking request contact details in Joomla's
database. Uninstalling the component drops its database tables and deletes this
information. Uploaded image files remain in images/bookingcalendar; remove them
manually if they are no longer needed. Export any data you need before uninstalling.

LICENSE
-------
GNU General Public License version 2 or later (GPL-2.0-or-later).
See LICENSE.txt for the full license text.
