Operations

Version

main

Language

en

Authors

Karsten Nowak

Email

captnnowi@gmx.de

License

This extension documentation is published under the CC BY-NC-SA 4.0 (Creative Commons) license

Gerendert

Fri, 05 Sep 2025 06:29:39 +0000

Manage firefighter operations with detailed reports, images, used resources or vehicles, statistics, map view for locations.

Official documentation

The content of this document is related to TYPO3, a GNU/GPL CMS/Framework available from www.typo3.org. This document is included as part of the official TYPO3 documentation.

Sitemap:

Sitemap

Introduction

What does it do?

The extension were build to manage firefighter operations in a TYPO3 website. Quite originally the Freiwillige Feuerwehr der Stadt Thale, long time ago, got this extension from me in a TYPO3 website. In the meanwhile someone else takes care of it and this one thinks Wordpress is great. Well, what to say ;-). If it makes people happy, you're welcome. But the download numbers of the extension also suggest me, that there are other TYPO3 sites with need for this extension. But that's just by the way.

The data for operations are managed in TYPO3 Backend by editors. Many detailed information e.g. used vehicles, resources, assistance and more are possible.

This extension can be used for other institutions like THW, DRK, Police or e.g. a Security Agency too.

Different views in Frontend are possible.

Screenshots

Frontend Screenshots

Here are some screenshots of the frontend templates. Styles used from the Site Package fire department optimized for the Fluid templates in "operations".

Frontend list view with filter and pagination
Frontend list view with filter and pagination
Frontend single view of operation data
Frontend single view of operation data
Frontend list view of resources
Screenshot of a simple list of resources data in frontend
Frontend list view of vehicles
Screenshot of a simple list of vehicle data in frontend
Frontend statistic view grouped by type and year
Table and chart of operation statistics

Support

Github Issue Tracker

Create an issue here operations on github if you have problems.

Slack

The fastest way to get support is the dedicated channel on slack to get in touch with other users and/or me.

The url is: https://typo3.slack.com/messages/ext-operations/

If you have Slack already installed, just looking for the Slack Channel ext-operations in TYPO3 workspace.

Sponsoring

If you need a feature which is not yet implemented, feel free to contact me.

Installation

There are various ways to install the extension. The preferred way is the installation with Composer.

composer require kanow/operations
Copied!

Or you can clone it directly from github. Please check whether your are in correct branch or version afterwards.

git clone git@github.com:kanow/operations.git
Copied!

The old way is downloading the extension in Extension Manager in TYPO3 backend or downloading a zip file from https://extensions.typo3.org/extension/operations/ and upload those file in Extension Manager.

You can find more information about installing TYPO3 Extensions in Getting Started documentation of TYPO3.

Use your own template files

If you need changes on the Fluid template files, you should copy the needed files to your Site Package. You need the same folder structure as described her: Fluid Templates. Please copy the needed folders and files in your Site Package Resources/Private folder.

You find those structure also in the extension:

  • Resources/Private/Layouts
  • Resources/Private/Templates
  • Resources/Private/Partials

You don't need to copy all files. Just copy the files and folders you need.

After that you can change the paths in constants to your own Site Package or in Constants Editor. This way you can edit some files but not all. It's easier to check differences if you upgrade operations. Probably you have to change less files after updating.

Change the templates paths in TypoScript constants

Here an example for TypoScript constants to change the paths to Fluid templates.

plugin.tx_operations {
        view {
                templateRootPath = EXT:your_site_package/Resources/Private/Extensions/operations/Templates/
                partialRootPath = EXT:your_site_package/Resources/Private/Extensions/operations/Partials/
                layoutRootPath = EXT:your_site_package/Resources/Private/Extensions/operations/Layouts/
        }
}
Copied!

TypoScript configuration

Include static TypoScript

The extension come with some TypoScript which needs to be included. You can include TypoScript in different ways. The preferred way should be include TypoScript from Extensions in your Site Package. See Include TypoScript in Site Package

The old way is also possible. Include TypoScript of the Extension in your root TypoScript Template (sys_template) in database.

  1. Select the root page of your site.
  2. Switch to the Template module and select Info/Modify.
  3. Press the link Edit the whole template record and switch to the tab Includes.
  4. Select Operations (operations) at the field Include static (from extensions):
Include static TypoScript

Include static TypoScript

Use Constant Editor

After including operations TypoScript there are some settings in TYPO3 Constants Editor available. The most important setting to use the extension can be set here.

Necessary Settings

To get operations working you need at least this 4 settings in the category: "TX_OPERATIONS-STORAGE-AND-PIDS". The necessary settings are:

plugin.tx_operations {
  # This is the uid of your sysfolder where the operation data in backend is.
  persistence.storagePid = 45
  settings {
    # This is the uid of the single view page for operations.
    operationSinglePid =
    # This is the uid of the single view page for vehicles.
    vehicleSinglePid =
    # This is the uid of the single view page for resources.
    resourceSinglePid =
  }
}
Copied!

Whole list of TypoScript Settings

You can find the whole list of TypoScript settings for operations in those file:

Configuration/TypoScript/setup.typoscript

Settings starting here:

plugin.tx_operations {
   settings {
      …
   }
}
Copied!

Plugins / Content Elements

There are different content elements for different views. Depending on used content element you have different settings in the tab "Plugin".

Those setting can also be set by using TypoScript but settings in the content element always overrides those settings from TypoScript.

Different content types

Content elements for operations

List view for operations

Single View for operations

Statistic view for operations

Content elements for vehicles

List view for vehicles

Single View for vehicles

Content elements for resources

List view for resources

Single View for resources

Statistics configuration

Display operations statistics

Add a content element type "Operation Statistics view". Set category if you want and the last years to show. Of courses, storage pid should be already set in TypoScript. If not you have to set this in plugin settings too.

This will show you all operations grouped by type and year depending on the settings you did.

The setting "lastYears" define how many years descending from now should be respected for the statistics. It's the same setting as in the normal list and can be overridden directly in the "Operation Statistics" plugin. Years without any operations will be ignored.

Change JavaScript for statistics

If you need adapting the chart, please use your own JavaScript file and change the path to it in template file: Resources/Private/Templates/Operation/Statistics.html

<f:section name="FooterAssets">
    <!-- chart library -->
    <script src="{f:uri.resource(path: 'Js/Chart.bundle.js')}"></script>
    <!-- change path to your own js file if you need -->
    <script src="{f:uri.resource(path: 'Js/OperationsChart.js')}"></script>
</f:section>
Copied!

I suggest to put those things in an own Site Package. Change the path in your own template files. using your own template files is described here Templates.

Categories in operations

Using Categories

You can use categories to organize your operations. E.g. Create a structure with a main fire department and sub departments. Select categories in Operations plugin to control the result of list view or statistic view in frontend.

You don't need those main department and sub department stuff? Ok, use the categories for whatever you want or ignore it.

Sample RouteEnhancer for speaking url's

Usage in your Site Configuration

Url routing for TYPO3 Extensions are explained more detailed here Advanced routing configuration. That's also needed to to use nice url's for single views of operations, vehicles, resources and the pages in list with pagination.

More information about Routing: Speaking Urls

You don't know about the Site Configuration? Read here: Sitehandling

Here is an example RouteEnhancer configuration that I'm using in my develop environment.

routeEnhancers:
  OperationsPlugin:
    # set "limitToPages" for route enhancer directly in your site config
    type: Extbase
    extension: Operations
    plugin: List
    routes:
      -
        routePath: '/{localized_page}-{page}'
        _controller: 'Operation::list'
        _arguments:
          page: currentPage
      -
        routePath: '/{operation_title}'
        _controller: 'Operation::show'
        _arguments:
          operation_title: operation
      -
        routePath: '/{vehicle_title}'
        _controller: 'Vehicle::show'
        _arguments:
          vehicle_title: vehicle
      -
        routePath: '/{resource_title}'
        _controller: 'Resource::show'
        _arguments:
          resource_title: resource

    defaultController: 'Operation::list'
    defaults:
      page: '1'
    requirements:
      page: \d+
    aspects:
      page:
        type: StaticRangeMapper
        start: '1'
        end: '200'
      operation_title:
        type: PersistedAliasMapper
        tableName: tx_operations_domain_model_operation
        routeFieldName: path_segment
      vehicle_title:
        type: PersistedAliasMapper
        tableName: tx_operations_domain_model_vehicle
        routeFieldName: path_segment
      resource_title:
        type: PersistedAliasMapper
        tableName: tx_operations_domain_model_resource
        routeFieldName: path_segment
      localized_page:
        type: LocaleModifier
        default: 'page'
        localeMap:
          - locale: 'de_DE.*'
            value: 'seite'

Copied!

This example is included in TYPO3 Extension fire_department in folder: Configuration/Yaml/Routes/Operations.yaml. Use an @import statement in your site config and set limitToPages:

imports:
  - { resource: "EXT:fire_department/Configuration/Yaml/Routes/Operations.yaml" }
routeEnhancers:
  OperationsPlugin:
    limitToPages: [5,7,9]
Copied!

Installing operations

You can install operations in different ways. They can be changed and depends on the used TYPO3 version. Therefore you should follow the documentation how extensions can be installed in TYPO3.

The installation with composer is the preferred way for modern TYPO3 Installations. I described this already in Installation chapter.

I don't prefer the old way to install the extension in the TYPO3 Extension Manager. If you still use this installation method, you can find infos here: Managing Extensions - Legacy Guide.

After installing operations, the next steps are to load and configure the TypoScript. That is necessary to get operations working. I described this already here in the docs: TypoScript Configuration.

Suggested Page Tree

Here is an example page tree for a firefighter website. This is just a proposal for you and can be different to your site. I suggest at least a sysfolder for the data, and pages for list and single views for the things you need.

The news folder in my screen is just there in my develop environment and not needed to get the extensions running.

You should create the page tree before start to configure the TypoScript settings. Often you need uids from pages they are important for the configuration.

Example page tree for a firefighter website with operations Switch to disable page in menu

Add data in backend

If you've created the sysfolder for the data you can start creating the first operations data. You should start with data for the relations. Types, vehicles, resources and assistance.

  1. Got to the "Web" > "List" module and select the operation data sysfolder.

    Sysfolder with operations data
  2. Click on the "+" button on Docheader to create new data.

    Button to create new data
  3. Click on the text to choose the type of data you want to create.

    List datatypes of operations
  4. If you need categories, create new category data.

    Create a new category
  5. Set root category uid in Site Configuration to restrict the visible categories in frontend plugins and operation data. If you don't have a Site Configuration yet, create one in "Site Management" > "Sites" module.

    If you have site configuration, a folder in the file system is created located at <project-root>/config/sites/<identifier>/. The site configuration is stored in a file called config.yaml.

    Here are few lines of example code in a Site Configuration. Add settings on the first level.

    rootPageId: 1
    base: 'https://typo3-11.ddev.site/'
    settings:
      operations:
        rootCategory: 2
    ...
    Copied!

    |

    Sure, you need more than these few line for a working Site Configuration. This is just an example where you can add the settings.

Add content elements

Ok, you are almost ready with the configuration and preparing data in backend. The last step before you see the results in frontend is creating the different Content Elements.

operations comes with some different content element types.

For "Operations", "Resources" and Vehicles existing list and single view content elements. They do exactly what they say. They showing you list and single views either from operations, resources or vehicles.

The "Operation Statistics view" content element will show you the statistics of operations in the last years, grouped by year and type.

Ok, let's go.

  1. Select the "Web" > "Page" module on the left and select the page in page tree where you want to have the plugin and create a new content element.

    The button to create new content elements
  2. Switch to tha tab "Operations" in open modal box to see all entries. Choose your type.

    Create new content elements
  3. Switch to tha tab "Plugin" in the Content Element and configure needed settings for the selected type.

    Field for Switchable Controller Actions

    |

Repeat these steps to create all needed content types for the frontend. At least a single view for the operations.

Changelog

8.2.0

Some small improvements on code quality checks and support now postgres and sqlite db systems.

8.1.0

TYPO3 13 compatibility

Update to 8.0.0

This version brings TYPO3 12 compatibility and retains compatibility with TYPO3 11. So operations currently runs with both LTS versions of TYPO3.

The hard dependency to Georg Ringer's numbered_pagination has been removed. There was no 12 compatible version of it available. Maybe there won't be one, because the TYPO3 core has now its own solution. For TYPO3 11 installations this means that you have to take care of the installation of the numbered_pagination by yourself. Depending on the TYPO3 version, operations selects either the NumberedPagination class (if exists) or the newer SlidingWindowPagination class. If neither is available, then SimplePagination is used. In TypoScript there is the possibility to override this and using another pagination class.

plugin.tx_operations {
   settings {
      paginate {
         class = Vendor/YourOwn/PaginationClass
      }
   }
}
Copied!

Breaking Change

Instead of the old "SwitchableControllerActions" in the plugins now real content elements are used. There is an "Migrate old plugins" Upgrade Wizard which must be executed after installing the update. This converts old plugins into the new content elements. Corresponding settings should be applied.

If the single view for the operations was not on an extra page, with the extra action, manually adjustments may be necessary.

Update to 7.1.0

  • Before this update you always had a limit for operations data. That is not useful in statistics view. Now there is no limit by default for statistics. You can deactivate this to get back the old behaviour with the TypoScript setting noLimitForStatistics = 0.
  • Now the extension "numbered_pagination" by georg ringer is used for the pagination. Check the TypoScript settings and Fluid Templates/Partials for changes. The extension will be installed automatically on composer based TYPO3 installations. If you have a non composer installation you have to install the extension by yourself manually before updating operations.
  • The colors in operation type are now excluded on translations. You dont have to set a color for the translation.

Update to 7.0.0

This version is only running on TYPO3 11. In that version I fixed some small bugs and switch to some new features of TYPO3 11.

Changing of category relations

Database table for category relations was changed. There is an Upgrade Wizard of operations to migrate old category relations automatically to the new table. In this version sys_category_mm table is used and the old relation table should be removed.

Breaking Change

Extension setting for rootCategory is moved to Site Configuration! Related setting in TypoScript and Page TS-Config was completely removed. To restrict the categories in plugin/operation/filter view many code was needed. With TYPO3 11 this is not longer necessary because of the new TCA type "category" with "startingpoints" and using values from Site Configuration to define that startingpoints. Therefore I switched to set this rootCategory in Site Config.

Example code for your Site Configuration:

settings:
 operations:
   rootCategory: 2
Copied!

If you are using default templates, then you shouldn't have problems with the other changes. Please check your site after updating the Extension.

Update to 6.x

Bugfix and maintenance release. Attention, Breaking Changes in this version! The new Pagination API of TYPO3 10 is used. The old Fluid Pagination Widget was removed. TypoScript setting maxNumberOfLinks not longer necessary and therefore removed. If you use the original template files for List and Search Action from operations version 5.1.x, then nothing should to do for you. If not, check if you changed one of the following files and have a look at the changes in original files:

  • Resources/Private/Templates/Operation/List.html
  • Resources/Private/Templates/Operation/Search.html
  • Resources/Private/Partials/List/Pagination.html

If you configured the current page of pagination in the url (in the site configuration) you have to change the configuration for the page argument. It's not longer that @widget stuff. Have a look at the Speaking url example page in manual.

Slug behaviour was changed to unique. With an updated TYPO3 version it is now possible to use the sysfolder with operations data outside of the page tree. You can use one folder for multiple Sites in the same TYPO3 Instance. If you need uniqueInSite for your page, then you can switch that behaviour in the BE module "Settings" -> Extension Configuration.

Update to 5.1.0

Fix exception in list view of operations. Stand out just in TYPO3 10.

Improve translation handling with excluding some fields they don't need to be translated. Catgeories, resources, vehicles, lat and long, assistance, type, onlEld are the same in all languages.

Of course data for categories, resources, vehicles, assistance and type can be translated. Then translated field values are shown. Probably this depends on your language settings for sys_language_mode and sys_language_overlay.

Update to 5.0.0

TYPO3 10 compatibility.

Update to 4.0.0

Complete refactoring of the templates to prepare it for using with the TYPO3 Site Package for fire department. With this package all views becomes default styles. Check frontend views.

Update to 3.2.2

Fix error if concatenation for JS and CSS files is activated in TYPO3.

Update to 3.2.0

Categories

Now you can use categories to organize your operations. With those feature you can create a structure with a main fire department and sub departments. Show only operations from the main department or a single sub department in frontend.

There is only a flat category handling. That means, if you select a category, no child categories are respected. Only the selected category. Set a root category in PageTS-Config to restrict the displayed categories in operation plugin in backend.

tx_operations {
    categoryRootId = 4
}
Copied!

Update to 3.1.0

Some little bugfixes. Add a new plugin to display statistics in frontend.

Update to 3.0.0 from a version below

Setting for storagePid (sysfolder)

Configuring the storagePid has changed. The old flexform setting storageFolder is not longer used. The TypoScript setting persistence.storagePid is the proper setting. In plugin element the core feature "Record storage Page [pages]" is used to override those setting in TypoScript. Now it's working correct with an general storagePid in TypoScript setup and overriding those value on a special page with the plugin setting. If you use the RecordStoragePage field in plugin element, the recursive setting from plugin is active. If not, then the recursive setting from TypoScript is active.

plugin.tx_operations {
    persistence {
        storagePid = 99
        recursive = 2
    }
}
Copied!

It's recommend to set this in constant editor, not directly in TypoScript setup.

Settings for images

Many settings for images are changed into media settings. They are renamed as follows:

settings.listImgWidth -> settings.listMediaWidth
settings.showImgInList -> settings.showMediaInList
Copied!

Have a look at the new TypoScript setup in configuration/TypoScript/setup.txt.

Database migration for images to media

Please backup your database before execute the following commands! There is no warranty for correct working!

UPDATE tx_operations_domain_model_operation LEFT JOIN sys_file_reference ON sys_file_reference.uid_foreign=tx_operations_domain_model_operation.uid AND sys_file_reference.tablenames='tx_operations_domain_model_operation' AND sys_file_reference.fieldname='image' SET tx_operations_domain_model_operation.media=tx_operations_domain_model_operation.image, tx_operations_domain_model_operation.image=0, sys_file_reference.fieldname='media' WHERE tx_operations_domain_model_operation.image > 0;

UPDATE tx_operations_domain_model_vehicle LEFT JOIN sys_file_reference ON sys_file_reference.uid_foreign=tx_operations_domain_model_vehicle.uid AND sys_file_reference.tablenames='tx_operations_domain_model_vehicle' AND sys_file_reference.fieldname='image' SET tx_operations_domain_model_vehicle.media=tx_operations_domain_model_vehicle.image, tx_operations_domain_model_vehicle.image=0, sys_file_reference.fieldname='media' WHERE tx_operations_domain_model_vehicle.image > 0;

UPDATE tx_operations_domain_model_resource LEFT JOIN sys_file_reference ON sys_file_reference.uid_foreign=tx_operations_domain_model_resource.uid AND sys_file_reference.tablenames='tx_operations_domain_model_resource' AND sys_file_reference.fieldname='image' SET tx_operations_domain_model_resource.media=tx_operations_domain_model_resource.image, tx_operations_domain_model_resource.image=0, sys_file_reference.fieldname='media' WHERE tx_operations_domain_model_resource.image > 0;
Copied!

Detailed changelog with git log

Clone the github repository and use following command to get a detailed list of the commits. Replace the version number in the command (2.0.2) with the number of version you are using before updating.

git log 2.0.2..HEAD --abbrev-commit --pretty='%ad %s (Commit %h by %an)' --date=short

Replace the word HEAD with another version, if you want to see the commits between this two versions.

Sitemap