Calendar - edmozley/freeitsm GitHub Wiki

Calendar

Folder: calendar/ Colour: Orange #ef6c00

Event calendar with configurable categories — distinct from the Change Management calendar and the Tickets scheduling calendar (which is filtered to ticket work-start dates).

📅 The Tickets scheduling calendar can also sync out to an analyst's own mailbox calendar — see Scheduled work in your own calendar. That is a separate mechanism from this module; the two do not share a calendar.

The Table view supports saved views: save the columns, sort and filters under a name, share it with a team or everyone, and set one as the view the table opens with.

Views

  • Month view with full grid
  • Week view with hourly time slots
  • Day view for detailed scheduling

Drag-and-Drop

In month view, drag events between days to reschedule. Updates the database immediately; no save button.

Categories

Each category has:

  • A display name
  • A colour (used on the calendar and in filter dots)
  • Active/inactive flag

Events are filtered by category via toggleable colour swatches at the top of the calendar.

Adjacent-Month Context

Events from adjacent months are visible in the leading/trailing day cells of the current month view — so you don't lose context of what's next when scanning a month grid.

Subscribe on Your Phone (ICS Feed)

The sidebar offers a read-only iCalendar (.ics) subscription feed (api/calendar/feed.php) — scan the QR code or copy the link to add the team calendar to Apple Calendar, Google Calendar or Outlook, where it stays up to date automatically.

  • Authenticated by a per-analyst capability token, revocable via "Reset link"
  • The subscribing device must be able to reach the server URL

Table View (calendar/table/)

Full-screen Excel-style grid of every event with inline cell editing (title, category, start/end, all-day, location), column show/hide + drag-reorder (persisted per analyst), click-to-sort, search, per-column tickbox filters, and CSV export — the same table experience as the Assets and Tasks modules.

Contracts Integration

From any contract's view page, a Calendar button opens an inline modal pre-filled with sensible defaults (title from contract number + title, start date from end date or notice date) and the new event is linked back to the contract via contract_id. The contract view shows Related Calendar Events in a section below the contract details.

Projects Integration (3.2.0)

The Projects module puts its dates on the shared calendar, in a category called Projects: each live project's target end date ("Project due: Bradford office move (PRJ-0042)") and the end of each stage, phase or sprint that has not closed. They are all-day entries, written by Projects and kept in step with the plan - change a date in the project and the entry moves; close the stage or the project and it goes. Projects → Settings → General chooses both kinds, only target end dates, or nothing. You can rename or recolour the category; a change made to one of these entries on the Calendar is replaced the next time the project changes.

Help

Interactive guide at calendar/help.php covering calendar views, event creation, categories, settings configuration, and scheduling tips for IT teams.

Key Tables

Table Purpose
calendar_events Core event record (start/end datetimes, all-day flag, location, description, category_id, optional contract_id)
calendar_categories Category definitions (name, colour, is_active)

On a phone

The Calendar is one of the three modules built to work properly on a phone. The month grid shows a coloured dot per event and tapping a day slides up that day's agenda; the week view scrolls sideways inside its own box; the filters and the Add to your phone panel move into a sheet. Nothing changes on the desktop. See Mobile: Calendar.