Skip to content

Event manage locations (au.com.agileware.eventmanagelocations)

This is a CiviCRM extension that changes how the Location tab of the CiviCRM Event Info form works, so that Locations (LocBlock/address/email/phone records) can be safely shared between Events:

  • Every user can pick Use existing location and choose from the full list of locations known to the system - not just ones already attached to some other Event. Once selected, that location's address, email, and phone fields are shown read-only, since editing them there would silently change the details for every other Event sharing that location too.
  • Only users with the Event manage locations: edit locations permission (see Permissions below) additionally get a Create new location option, with normal editable fields, and an Edit Location link next to the location picker for editing the selected location itself (which does update it in place, deliberately, for every Event that shares it).
  • A Manage Event Locations search screen lists that same full pool of locations, so an administrator can review, edit, or pre-create locations independently of any Event.
  • From that screen, an Events using this location link (shown only when at least one Event uses that location) opens an Events Using This Location screen listing exactly those Events, with a bulk action to re-assign some or all of them to a different Location in one go.

The extension is licensed under AGPL-3.0.

Usage

Creating/editing an Event location

On the Location tab of the CiviCRM Event Info form (Events > Manage Events > (an event) > Location):

  • Use existing location shows a dropdown of every known location. Selecting one loads its address, email, and phone details as read-only text, along with a note explaining why they can't be edited there. Saving attaches the event to that location without creating or changing any records.
  • Create new location (only shown to users with the edit locations permission) shows blank, editable address/email/phone fields (defaulting to the site's configured country/state, the same as an Event with no location at all). Saving creates a brand new, independent location for this event only.
  • Switching between the two options, or between different existing locations, reloads the page rather than trying to update the fields in place - this keeps the read-only/editable state and the field contents consistent with whichever option is actually selected.

A location that's still attached to at least one other Event isn't deleted just because this Event stops using it (whether by switching to "Create new location" or to a different existing location) - it stays available in the pool for later reuse, exactly like a location that was never attached to an Event in the first place.

Manage Event Locations

This extension also adds a Manage Event Locations search screen (under Events) for finding and maintaining locations independently of any Event.

Go to the following URL, or use the Manage Event Locations entry under the Events menu:

civicrm/manage-event-locations

This lists every location with an address on file - the same full pool the Event Location tab's "Use existing location" picker offers, whether or not any Event is currently using it. It can be filtered by address name, street address, city, country, and state/province. Each row has an Edit Location link, which opens the form described below, at civicrm/EditLocation?bid=ID - deleting a location is also done from that form.

Editing an address here (or via Edit Location) updates it everywhere it's used. To give an Event a new, independent location instead, use Create a New Location (also available from this screen) or the Event's own Location tab.

Events Using This Location

Each row in Manage Event Locations that has at least one Event attached shows an Events using this location link (rows for locations with no Events attached show no link at all). It opens:

civicrm/manage-event-locations/events

filtered to that one location, listing every Event currently attached to it - Event Title (linking to that Event's own settings page), Event Start Date, and Is Active, sorted with the most recently-starting Event at the top. A Back to Manage Event Locations button returns to the listing.

Selecting some or all of the listed Events and choosing Action > Update Events opens SearchKit's standard bulk-update dialog. Adding the Location Block field there and picking a different Location re-assigns all the selected Events to it in one operation - the same underlying change as editing each Event's own Location tab individually, just applied to many Events at once.

The Edit Location form

Both the Manage Event Locations screen and the "Edit Location" link on an Event's Location tab lead to:

civicrm/EditLocation?bid=LOCATION_BLOCK_ID

(or civicrm/EditLocation with no bid, to create a new location from scratch). This form is pre-filled with the existing location's details when editing. LOCATION_BLOCK_ID is the ID of the LocBlock being edited.

Saving from this form updates the existing Location Block in place rather than creating a new one. Since a Location Block can be shared by multiple Events, this changes the location's address, email, and phone details for every Event that uses it.

When editing an existing location, a Delete button is also shown next to Save (to users with the edit locations permission). It removes the Location Block and its Address, Email, and Phone records entirely, after a confirmation prompt, and returns to the Manage Event Locations screen.

Permissions

This extension adds a new CiviCRM permission with the machine name edit locations, shown to administrators as Event manage locations: edit locations (the extension's own name is prefixed to the label, matching the convention used by other CiviCRM extensions), described as "Allows users to edit event locations". Users must be granted this permission (Administer > Users and Permissions > Permissions (Access Control)) to:

  • See and use the Create new location option on an Event's Location tab (without it, only Use existing location is available).
  • Save changes on the civicrm/EditLocation form; without it, the form's fields are displayed read-only (frozen).

Access to the Event Location tab itself, and to the Manage Event Locations and Events Using This Location search screens, only requires the standard access CiviEvent and access CiviCRM permissions. Whether a given user can actually use the Update Events bulk re-assignment action, though, is gated by CiviCRM's own Event permissions (e.g. edit all events) rather than anything this extension declares - a user without edit access to Events simply won't see that action offered.

Special configuration requirements

None. There are no settings pages, API credentials, or dependent extensions to configure - once installed and enabled, the Event Location behaviour and Manage Event Locations search are immediately available (subject to the permissions described above).

Requirements

  • CiviCRM 6.3+ (uses APIv4 and SearchKit)

Installation (Web UI)

Learn more about installing CiviCRM extensions in the CiviCRM Sysadmin Guide.

Testing

Automated front-end (Playwright) tests covering the behaviour described above live in tests/playwright and run in CI on every push/PR via .github/workflows/frontend-tests.yml.

About the Authors

This CiviCRM extension was developed by the team at Agileware.

Agileware provide a range of CiviCRM services including:

  • CiviCRM migration
  • CiviCRM integration
  • CiviCRM extension development
  • CiviCRM support
  • CiviCRM hosting
  • CiviCRM remote training services

Support your Australian CiviCRM developers, contact Agileware today!

Agileware