{"id":371224,"date":"2026-09-19T00:20:17","date_gmt":"2026-09-19T00:20:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/circumflex-booking-airspace\/"},"modified":"2026-09-19T06:46:55","modified_gmt":"2026-09-19T06:46:55","slug":"circumflex-booking-airspace","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/circumflex-booking-airspace\/","author":23538565,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.1","requires":"6.8","requires_php":"8.3","requires_plugins":null,"header_name":"Circumflex Booking Airspace","header_author":"Circumflex AS","header_description":"Exercise-area reservation profile for Circumflex Booking.","assets_banners_color":"ecf3fc","last_updated":"2026-09-19 06:46:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/circumflex.no\/circumflex-booking\/","header_author_uri":"https:\/\/circumflex.no\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":80,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"sutregutt","date":"2026-09-19 00:19:42","revision":3702880},"1.0.2":{"tag":"1.0.2","author":"sutregutt","date":"2026-09-19 06:46:55","revision":3703039}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3702880,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3702880,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3702880,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3702880,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3702880,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"circumflex-booking-airspace\/public-calendar":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"circumflex-booking-airspace\/public-calendar","version":"1.0.2","title":"Airspace reservation calendar","category":"widgets","icon":"calendar-alt","description":"Display the live public overview of upcoming exercise-area reservations.","keywords":["airspace","reservation","calendar"],"textdomain":"circumflex-booking-airspace","editorScript":"circumflex-booking-airspace-calendar-editor","attributes":{"align":{"type":"string","default":"wide"}},"supports":{"align":["wide","full"],"html":false,"multiple":true}}},"tagged_versions":["1.0.1","1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[],"plugin_category":[],"plugin_contributors":[274572],"plugin_business_model":[],"class_list":["post-371224","plugin","type-plugin","status-publish","hentry","plugin_contributors-sutregutt","plugin_committers-sutregutt"],"banners":{"banner":"https:\/\/ps.w.org\/circumflex-booking-airspace\/assets\/banner-772x250.png?rev=3702880","banner_2x":"https:\/\/ps.w.org\/circumflex-booking-airspace\/assets\/banner-1544x500.png?rev=3702880","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/circumflex-booking-airspace\/assets\/icon.svg?rev=3702880","icon":"https:\/\/ps.w.org\/circumflex-booking-airspace\/assets\/icon.svg?rev=3702880","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Circumflex Booking Airspace is a free add-on for Circumflex Booking. It helps\nflying clubs, flight schools and other operators reserve time in designated\nairspace used for flight training.<\/p>\n\n<p>Pilots choose a date, an exercise area, an available start time and, when\nneeded, a session type. If several exercise areas are configured, the booking\nform shows planned training time and available starts for each area. This makes\nit easier to spread traffic across the available areas instead of concentrating\nactivity in one place. The areas remain in the order chosen by the\nadministrator and are not automatically ranked or recommended.<\/p>\n\n<p>Administrators can add a quiet period before or after each training session.\nNo new session can use the same exercise area during that period. Quiet periods\ncan therefore create planned breaks between flights and help avoid continuous\ntraining noise over the same area for too long.<\/p>\n\n<h4>Booking flight-training areas<\/h4>\n\n<ul>\n<li>Offer one or several exercise areas in a chosen display order.<\/li>\n<li>Offer one or several session types with configurable duration.<\/li>\n<li>Let pilots choose an area, or allow a first-available choice.<\/li>\n<li>Show available and unavailable start times for each area.<\/li>\n<li>Hide unnecessary choices when only one option is available.<\/li>\n<li>Require an aircraft registration or operational call sign for each\nreservation.<\/li>\n<li>Choose which contact fields and practical notes the pilot must provide.<\/li>\n<li>Allow open booking or verify the pilot's email address before submission.<\/li>\n<\/ul>\n\n<p>The aircraft registration or call sign accepts up to seven letters and digits,\nwith one optional hyphen or space. Lowercase input is converted to uppercase.\nOther visitors never receive the aircraft identifier or the pilot's contact\ndetails through the availability search.<\/p>\n\n<h4>Schedules and quiet periods<\/h4>\n\n<p>Circumflex Booking provides session duration, start-time intervals, opening\nhours, booking deadlines, cancellation rules and email notifications. Airspace\nadds terminology and choices tailored to flight training.<\/p>\n\n<p>Administrators can set weekly opening hours and make date-specific changes for\none exercise area or all areas. A change can block time or add extra\navailability across a date range. Quiet periods before and after a session\ncontinue to prevent conflicting reservations in the same area.<\/p>\n\n<p>Complete English and Norwegian email templates are included. Administrators\ncan load, review and edit the templates before saving them; changing the active\nbooking profile never overwrites saved email text.<\/p>\n\n<h4>Optional public reservation overview<\/h4>\n\n<p>An optional read-only day view can show upcoming use of the exercise areas. It\nis disabled by default. The privacy-friendly default shows only the area, date,\ntime and a neutral \u201cReserved\u201d label. Visitors can switch between a timeline and\na compact list and filter which areas are shown.<\/p>\n\n<p>Pilot name, email, phone, notes and booking references are never published.\nShowing aircraft registration or call sign requires a separate administrator\nchoice and should be enabled only when the organization has a lawful purpose\nand has informed the pilots. A quiet period is shown with both a striped style\nand a text label, so the meaning does not depend on color alone.<\/p>\n\n<p>Automatic confirmation and SMS are not included in Airspace or Circumflex\nBooking Free. A compatible Circumflex Booking Pro installation can add those\nfeatures.<\/p>\n\n<h3>Updates and support<\/h3>\n\n<p>Airspace is free software distributed through the WordPress.org Plugin\nDirectory. WordPress can install and update it through the normal plugin flow.\nIt contains no license key, activation limit, telemetry or external updater.\nDevelopment source and reproducible build instructions are linked below.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate a compatible version of Circumflex Booking.<\/li>\n<li>Install and activate Circumflex Booking Airspace.<\/li>\n<li>Open Booking &gt; Settings and select the Airspace booking profile.<\/li>\n<li>Add the session types and exercise areas that pilots can reserve.<\/li>\n<li>Set opening hours, session duration and quiet periods.<\/li>\n<li>Load and review the recommended Airspace email templates under\nBooking &gt; Settings, then save the booking settings.<\/li>\n<li>Add the normal Circumflex Booking block or shortcode to a WordPress page.<\/li>\n<li>Optionally enable the public reservation calendar and add the <strong>Airspace\nreservation calendar<\/strong> block or\n   [circumflex_booking_airspace_calendar] shortcode to a page.<\/li>\n<\/ol>\n\n<p>The optional reservation overview is read-only. Pilots make reservations in\nthe normal Circumflex Booking form.<\/p>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Lead the WordPress.org description with flight-training airspace reservation,\nplanned quiet periods and help for spreading activity across multiple areas.<\/li>\n<li>Replace internal implementation terminology with clearer language for flying\nclubs, administrators and pilots.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Apply Core's public-resource visibility policy to both the exercise-area list\nand reservations shown on the optional public calendar.<\/li>\n<li>Resolve visibility once for each bounded response and keep the internal\nresource identifier out of the published calendar payload.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable Airspace profile for exercise-area reservations, with a guided\ndate, session-type, area and start-time flow plus an optional privacy-bounded\npublic day board.<\/li>\n<li>Let administrators customize the heading above the public Airspace booking\nform while retaining language-specific Norwegian and English defaults.<\/li>\n<li>Keep the new advanced session-scheduling summary free of generic service and\nbooking terminology in both English and Norwegian administration.<\/li>\n<\/ul>\n\n<h4>0.7.14<\/h4>\n\n<ul>\n<li>Translate the Airspace plugin description and the active Core description\nwithout leaving mixed English and Norwegian wording.<\/li>\n<\/ul>\n\n<h4>0.7.13<\/h4>\n\n<ul>\n<li>Use reservation, pilot, session-type and exercise-area wording throughout\nthe secure customer portal, email previews and linked Pro screens.<\/li>\n<\/ul>\n\n<h4>0.7.12<\/h4>\n\n<ul>\n<li>Remove remaining compound service\/practitioner terms from Core notices,\nordering controls, coordinator approval and import previews.<\/li>\n<\/ul>\n\n<h4>0.7.11<\/h4>\n\n<ul>\n<li>Apply the selected Airspace terminology consistently across Core and Pro\nadministration while preserving ordinary external-service wording.<\/li>\n<\/ul>\n\n<h4>0.7.10<\/h4>\n\n<ul>\n<li>Use consistent session-type and exercise-area wording throughout the new\ninactive-record controls, dashboard counts and deleted-history warnings.<\/li>\n<\/ul>\n\n<h4>0.7.9<\/h4>\n\n<ul>\n<li>Keep archived exercise areas readable without session-type assignments and\nexplain the safeguards around deleting a final active assignment.<\/li>\n<\/ul>\n\n<h4>0.7.8<\/h4>\n\n<ul>\n<li>Present the optional end date consistently for one exercise area and for all\nexercise areas.<\/li>\n<\/ul>\n\n<h4>0.7.7<\/h4>\n\n<ul>\n<li>Present shared unavailable and extra-availability periods with natural\nall-area wording.<\/li>\n<\/ul>\n\n<h4>0.7.6<\/h4>\n\n<ul>\n<li>Present Core's unified date-exception editor with natural all-area wording.<\/li>\n<\/ul>\n\n<h4>0.7.5<\/h4>\n\n<ul>\n<li>Prefer the maintained bundled Norwegian catalog, including when Airspace is\nnetwork-activated on a multisite installation.<\/li>\n<\/ul>\n\n<h4>0.7.4<\/h4>\n\n<ul>\n<li>Describe and present Core's shared multi-date closure as one all-area period.<\/li>\n<\/ul>\n\n<h4>0.7.3<\/h4>\n\n<ul>\n<li>Simplify the exercise-area introduction and keep the callsign length rule in\nvalidation feedback instead of persistent field help.<\/li>\n<li>Make loading and saving the Airspace email preset an explicit installation\nstep.<\/li>\n<\/ul>\n\n<h4>0.7.2<\/h4>\n\n<ul>\n<li>Rename the required Airspace identifier to aircraft registration \/ call sign.<\/li>\n<li>Normalize it to uppercase and enforce seven letters and digits with one\noptional hyphen or space in both the form and Core submission boundary.<\/li>\n<\/ul>\n\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>Keep exercise areas neutral and in fixed order without a recommendation or\n\u201cnext available\u201d prompt.<\/li>\n<li>Preview available and unavailable starts with a compact, non-interactive\nsegmented line, then ask \u201cWhen do you want to start?\u201d on the exact time step.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Add an Airspace-only date, optional session type, area and start-time booking\nsequence through Core's generic API 13 workflow.<\/li>\n<li>Show each area's next exact start and privacy-bounded planned session minutes,\nwith one neutral recommendation among areas that have available times.<\/li>\n<li>Keep Core availability and booking validation authoritative, and degrade to\narea selection without load figures if the optional aggregate fails.<\/li>\n<\/ul>\n\n<h4>0.6.3<\/h4>\n\n<ul>\n<li>Keep short timeline labels unambiguous by moving their full optional details\nto the list and dialog instead of showing truncated values.<\/li>\n<li>Include every published detail in the reservation control's accessible name.<\/li>\n<\/ul>\n\n<h4>0.6.2<\/h4>\n\n<ul>\n<li>Keep short session bars visually proportional on the desktop timeline while\nretaining a full-size keyboard\/touch target and complete accessible label.<\/li>\n<li>Move the pending marker outside short time labels so neither meaning is\nobscured.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Keep long-horizon date navigation scrolled to the selected date and prevent\ntime\/detail clipping in list cards on very narrow screens.<\/li>\n<li>Give long exercise-area names more room without reducing timeline alignment.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Replace the reservation log with an Airspace day board: one row per active\narea, a session timeline, labelled striped quiet buffers and an on-demand\ndetail dialog.<\/li>\n<li>Default wide screens to the day board and phones to a compact area list, with\nan explicit view switch and accessible area filters on both.<\/li>\n<li>Treat the configured horizon as complete local dates; one-day and two-day\nhorizons now use compact navigation without a month calendar.<\/li>\n<li>Publish a versioned, PII-bounded calendar schema containing active area names,\nempty dates and machine-readable buffer bounds only when buffer visibility is\nexplicitly enabled.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Require Core extension API 12 and split profile, terminology, email,\nadministration and public-calendar responsibilities into focused components.<\/li>\n<li>Use Core Free's built-in WordPress email verification provider while keeping\nSMS and automatic confirmation outside the free add-on.<\/li>\n<li>Support Core's configurable opening-hour buffer policy and conservative\ndeletion behavior for inactive Airspace configuration.<\/li>\n<li>Omit empty optional pilot details from email output and show an approved time\nchange only once.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Keep calendar action buttons readable when a WordPress theme overrides focused and hovered button colors with higher-specificity selectors.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Define explicit high-contrast colors for focused calendar action buttons.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Use exercise-area terminology throughout the schedule screen and its notices.<\/li>\n<li>Offer complete English and Norwegian Airspace email templates for explicit review before saving.<\/li>\n<li>Replace the public calendar's nested cards with a compact flight-strip list and accessible exercise-area filters.<\/li>\n<li>Rename the optional full buffer detail to \u201cUnavailable interval\u201d.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Add an Airspace-only public calendar for upcoming blocking reservations.<\/li>\n<li>Default the calendar to area, date, time and a neutral Reserved label.<\/li>\n<li>Add independent opt-ins for session type, call sign, actual status and quiet-buffer interval.<\/li>\n<li>Add a no-store REST endpoint, dynamic block, shortcode and responsive accessible flight-strip interface.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Preserve the Norwegian verb in Cloudflare Turnstile guidance while Airspace terminology is active.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Register Airspace in Core's site-wide profile selector instead of overriding appointments.<\/li>\n<li>Apply Airspace terminology only while the profile is selected and retain a safe Core fallback while the add-on is inactive.<\/li>\n<li>Replace paired field checkboxes with explicit hidden, optional and required choices.<\/li>\n<li>Clarify that the free add-on includes email verification but no SMS channel.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial development version. Deployment is deferred.<\/li>\n<\/ul>","raw_excerpt":"Reserve flight-training airspace, add quiet periods, and spread activity across exercise areas.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371224"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sutregutt"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371224"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371224"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371224"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371224"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371224"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}