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.