Configuration 

Overview 

The Kanban Workspaces extension is a backend-only module for TYPO3 that provides a kanban board interface for managing workspace stages. It is designed to work with minimal configuration. Most settings are handled automatically through TYPO3's core workspace functionality. However, administrators can customize behavior through Extension Manager settings.

Extension Manager Configuration 

The extension provides configuration options in the TYPO3 Extension Manager.

Accessing Extension Settings 

  1. Log in as an administrator
  2. Go to Admin Tools > Extensions
  3. Search for "kanban_workspaces"
  4. Click the Configure icon (wrench) next to the extension name
  5. Modify settings as needed
  6. Click Save to apply changes

Available Settings 

Disable Default Stages 

Setting Name: disableDefaultStage

Type: Boolean (Checkbox)

Default Value: Checked/Enabled (true)

Description: When enabled, removes the default "Editing" stage (stage 0) from the kanban board. This is useful if your workflow doesn't use the standard TYPO3 workspace default stages and only uses custom stages.

Use Cases:

  • Custom workflows that don't need the default editing stage
  • Simplified kanban boards with only custom stages
  • Workflows where all content starts in a non-default stage

Example Effect:

  • Enabled - Only custom stages (stage ID >= 1) appear on the kanban board
  • Disabled - Default stage 0 ("Editing") appears alongside custom stages

Default Stage ID 

Setting Name: defaultStageId

Type: Integer

Default Value: 1

Description: Sets the default stage that new records will be assigned to when created. When a record is created in the workspace, it will be automatically assigned to the specified stage instead of the default stage.

Valid Values:

  • Any positive integer representing a valid workspace stage ID
  • 0 - Use TYPO3's default editing stage
  • 1+ - Use custom stages defined in the workspace

Use Cases:

  • Force new content into review stage instead of draft
  • Automatically assign new items to the first custom workflow stage
  • Ensure new records start at a specific point in your workflow

Example Configuration:

Default Stage ID: 2
Copied!

This setting means all new records created will start in stage 2 (not stage 0 or 1).

Configuration File (Extension Configuration) 

The extension configuration is also stored in ext_conf_template.txt:

# Kanban Workspaces
###########################
# cat=config/enable/100; type=boolean; label=Disable Default Stages
disableDefaultStage = 1

# cat=config/enable/101; type=int; label=Default Stages Id
defaultStageId = 1
Copied!

These settings correspond to the Extension Manager interface.

Backend Module Configuration Details 

The backend module is registered and configured automatically. No additional TypoScript or template configuration is required for this backend-only extension.

Backend Module Configuration 

Module Registration 

The backend module is configured in Configuration/Backend/Modules.php:

'web_kanbanworkspaces' => [
    'parent' => 'web',
    'position' => ['after' => 'web_info'],
    'inheritNavigationComponentFromMainModule' => true,
    'access' => 'user',
    'workspaces' => '*',
    'icon' => 'EXT:kanban_workspaces/Resources/Public/Icons/Extension.png',
    'path' => '/module/web/kanbanworkspaces',
    'labels' => 'LLL:EXT:kanban_workspaces/Resources/Private/Language/locallang_mod.xlf',
    'extensionName' => 'KanbanWorkspaces',
    'controllerActions' => [
        KanbanWorkspacesController::class => [
            'index',
        ],
    ],
]
Copied!

Configuration Explained 

  • parent: 'web' - Module appears under the Web menu
  • position - Positioned after the Web > Info module
  • inheritNavigationComponentFromMainModule: true - Uses main web module's navigation
  • access: 'user' - Available to regular backend users (not just admins)
  • workspaces: '*' - Available in all workspaces
  • icon - Icon displayed in the module menu
  • path - URL path for accessing the module
  • labels - Language file for localization
  • extensionName - Extension key for identifying the module
  • controllerActions - Maps controllers to available actions

Customizing Module Position 

To change where the module appears in the Web menu, modify the position configuration:

// Position before Web > Info
'position' => ['before' => 'web_info'],

// Position at the end of Web menu
'position' => ['bottom'],

// Position at the top of Web menu
'position' => ['top'],
Copied!

Service Configuration 

Dependency Injection 

The extension uses TYPO3's service container for dependency injection. Services are configured in Configuration/Services.yaml:

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

  WebVision\KanbanWorkspaces\:
    resource: '../Classes/*'
    exclude: '../Classes/Domain/Model/*'

  WebVision\KanbanWorkspaces\Controller\KanbanWorkspacesController:
    public: true
    tags:
      - name: 'backend.controller'
        identifier: 'KanbanWorkspaces'

  WebVision\KanbanWorkspaces\Domain\Model\Dto\EmConfiguration:
    public: true

  WebVision\KanbanWorkspaces\Service\AssigneeMappingService:
    public: true
  WebVision\KanbanWorkspaces\Notification\AssignmentNotificationService:
    public: true
Copied!

This configuration automatically registers classes in Classes/ and enables autowiring. The listed services are explicitly public so they can be resolved when the Assign Ajax controller is instantiated by the backend dispatcher.

Assignment Feature (Ajax Route and MAIL) 

Ajax Route for Assign 

The Assign feature uses a backend Ajax route so the kanban board can save assignments without leaving the module.

File: Configuration/Backend/AjaxRoutes.php

return [
    'kanban_workspace_assign' => [
        'path' => '/kanban-workspace/assign',
        'target' => \WebVision\KanbanWorkspaces\Controller\AssignAjaxController::class . '::assignAction',
        'inheritAccessFromModule' => 'web_kanbanworkspaces',
    ],
];
Copied!
  • path – URL path for the Ajax endpoint.
  • target – Controller class and action handling the request.
  • inheritAccessFromModule – Access is inherited from the Kanban Workspaces module (web_kanbanworkspaces).

No additional configuration is required; the route is registered when the extension is active. Clear backend cache if the route does not appear.

MAIL Configuration for Assignment Emails 

When you assign a different backend user (not yourself) to a card, the extension can send an assignment notification email. TYPO3’s global MAIL configuration is used.

Recommended in your project config (e.g. ``config/system/settings.php``):

'MAIL' => [
    'defaultMailFromAddress' => 'noreply@your-domain.com',
    'defaultMailFromName' => 'TYPO3 Kanban Workspaces',
    'transport' => 'sendmail',
    'transport_sendmail_command' => '/usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025',
    // ... other transport options
],
Copied!
  • defaultMailFromAddress – Sender address when no page-specific sender is set. Required for emails to be accepted by many mail servers.
  • defaultMailFromName – Sender name shown in the email client.
  • transport / transport_sendmail_command – How mail is sent (e.g. sendmail, SMTP, or a local tool like Mailpit for development).

Optional – Page TSconfig (per-page sender/format):

You can override sender and format per page using the workspaces email config:

tx_workspaces.emails {
    senderEmail = no-reply@example.com
    senderName = My Site
    format = both
}
Copied!

The extension uses the same pattern as EXT:workspaces for email (FluidEmail, SystemEmail layout). Template/layout paths fall back to TYPO3 core/backend defaults when the global MAIL config does not define templateRootPaths / layoutRootPaths.

Troubleshooting: If assignment emails are not sent, ensure the assignee has a valid email in the backend user record, check MAIL.transport and defaultMailFromAddress, and review TYPO3 logs (e.g. var/log/typo3_*.log) for transport or template errors.

JavaScript Module Configuration 

Backend JavaScript Modules 

The extension loads backend JavaScript modules for the kanban board interface:

// Main kanban board application
$this->pageRenderer->loadJavaScriptModule('@web-vision/kanban-workspaces/App.js');

// TYPO3 workspaces send-to-stage form component
$this->pageRenderer->loadJavaScriptModule('@typo3/workspaces/renderable/send-to-stage-form.js');
Copied!

Configuration Location: Configuration/JavaScriptModules.php

These modules are loaded exclusively in the backend module interface. No frontend JavaScript is loaded by this extension.

Environment-Specific Configuration 

Development Environment 

For development, you may want to enable additional backend debugging:

// In your project's configuration
$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] = true;
Copied!

Production Environment 

For production, ensure optimal performance by using TYPO3's standard caching configuration. The extension respects the default caching settings configured in your TYPO3 instance.

Multi-Site Configuration 

Working with Multiple Sites 

If your TYPO3 instance has multiple sites, the Kanban Workspaces module will work independently for each site:

  1. Each site can have its own workspace configuration
  2. Stages are workspace-specific, not site-specific
  3. Users see workspaces based on their access permissions
  4. The module respects site-specific language configurations

No site-specific configuration is needed—the extension automatically uses the active site's settings.

Workspace Configuration 

Workspace Stages 

Workspace stages are configured in the TYPO3 workspace settings, not in this extension. To configure stages:

  1. Go to Admin Tools > Workspaces
  2. Select a workspace to edit
  3. Configure available stages for that workspace
  4. Save the workspace configuration

The Kanban Workspaces extension will automatically display the configured stages on its board.

Custom Stages 

To create custom stages:

  1. In Workspace configuration, add new stages with custom titles
  2. Set appropriate permissions for each stage
  3. The kanban board will display all configured stages
  4. Users can move items between stages based on their permissions

Accessing Content at Different Stages 

The kanban board shows all content items at different stages in the workspace:

  • Stage 0 (Editing) - Default editing stage (unless disabled)
  • Custom Stages - Any custom stages created for your workflow
  • Published - Items ready for publication

Each stage can have different permissions for editing, deletion, and stage transitions.

Event Listener Configuration 

AfterDataGeneratedForWorkspaceEvent 

The extension includes an event listener for workspace data generation. This is automatically configured in Services.yaml:

#[AsEventListener(
    identifier: 'kanban-workspaces/after-data-generated-for-workspace',
)]
final class AfterDataGeneratedForWorkspaceEventListener
Copied!

Purpose: Processes workspace data when generated, applies default stage configuration, and updates record stages as needed.

Configuration: No manual configuration needed—automatically registered by TYPO3's service container.

Performance Configuration 

Caching 

The extension respects TYPO3's caching strategy. Workspace data is typically not cached (to always show current status), but you can configure caching if needed:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['kanban_workspaces'] = [
    'frontend' => \TYPO3\CMS\Core\Cache\Frontend\VariableFrontend::class,
    'backend' => \TYPO3\CMS\Core\Cache\Backend\Apcu::class,
];
Copied!

Database Queries 

The extension uses efficient database queries through TYPO3's repository pattern. For large workspaces:

  1. Use depth filters to limit query results
  2. Filter by language to reduce items
  3. Regularly publish items to keep workspace size manageable

Backend Assets Configuration 

Backend Module Assets 

Assets are loaded automatically in the backend module controller:

// Load CSS
$this->pageRenderer->addCssFile('EXT:kanban_workspaces/Resources/Public/Css/Styles.css');
$this->pageRenderer->addCssFile('EXT:kanban_workspaces/Resources/Public/Css/Fontawesome.min.css');

// Load JavaScript modules
$this->pageRenderer->loadJavaScriptModule('@web-vision/kanban-workspaces/App.js');
Copied!

Location: Resources/Public/Css/ and Resources/Public/JavaScript/

These are backend-only assets used exclusively in the kanban board backend module. No frontend assets are loaded or used by this extension.

Language and Localization 

Localization Files 

Language labels are stored in:

Resources/Private/Language/locallang_mod.xlf
Copied!

These contain labels for:

  • Module title
  • Button labels
  • Filter labels
  • Error messages
  • Stage names

Supported Languages 

By default, the extension supports:

  • English (default)
  • German (Deutsch)
  • Additional languages can be added through extension translation contributions

Adding Custom Translations 

To add translations for your language:

  1. Create a new language file in Resources/Private/Language/
  2. Name it locallang_mod.[language code].xlf
  3. Add translated labels for all keys
  4. Restart TYPO3 cache

Troubleshooting Configuration 

Settings Not Taking Effect 

If configuration changes don't appear:

  1. Clear TYPO3 caches: Admin Tools > Maintenance > Clear Cache
  2. Clear browser cache: Ctrl+Shift+Del
  3. Verify settings were actually saved in Extension Manager
  4. Restart your web server if running locally

Default Stage Not Working 

If the default stage ID setting doesn't work:

  1. Verify the stage ID exists in your workspace configuration
  2. Check workspace permissions for the stage
  3. Ensure the stage accepts new records
  4. Check event listener is registered properly

Module Position Wrong 

If the module appears in the wrong location:

  1. Check the position configuration in Configuration/Backend/Modules.php
  2. Verify the referenced module (e.g., 'web_info') exists
  3. Clear all caches and reload the backend
  4. Check for module position conflicts with other extensions