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.
Entries other modules add
Some dates are put on the calendar for you, as all-day entries, and kept in step whenever the date changes:
| From | What appears |
|---|---|
| Assets | Warranty expiry: HOST and Lease ends: HOST |
| Leases | the dates of each lease schedule |
| Software | licence renewals |
| Domains | domain renewals and certificate renewals |
| Projects | project due dates, stage ends and milestones (above) |
Each kind has its own switch in its module's settings, and is rebuilt on its own: switching one off removes only those entries, and events you created yourself are never touched - the generated ones are marked with their own source in calendar_events.
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.