Skip to content

Implement PSR-14 events for extension extensibility #40

@CybotTM

Description

@CybotTM

Description

Add PSR-14 event dispatching to enable other extensions to hook into translation workflows and extend functionality without modifying core code.

Current State

  • No PSR-14 event usage detected
  • Extension is not easily extensible by other extensions
  • TYPO3 Conformance Report: PHP Architecture score 18/20 (-1 for no PSR-14 events)

Proposed Events

1. Translation Lifecycle Events

// Before translation save
class BeforeTranslationSaveEvent
{
    public function __construct(
        private Translation $translation,
        private bool $isPrevented = false
    ) {}
    
    public function getTranslation(): Translation
    public function preventSave(): void
    public function isSavePrevented(): bool
}

// After translation save
class AfterTranslationSaveEvent
{
    public function __construct(
        private readonly Translation $translation
    ) {}
    
    public function getTranslation(): Translation
}

2. Import/Export Events

// Before import
class BeforeTranslationImportEvent
{
    public function __construct(
        private array $data,
        private string $format
    ) {}
    
    public function getData(): array
    public function modifyData(array $data): void
}

// After export
class AfterTranslationExportEvent
{
    public function __construct(
        private string $content,
        private string $format
    ) {}
    
    public function getContent(): string
    public function setContent(string $content): void
}

Implementation Steps

  1. Create event classes in Classes/Event/
  2. Dispatch events in controllers and services:
    • TranslationController
    • TranslationService
    • ImportService
  3. Document events in Documentation/Developer/Events.rst
  4. Add example event listener in documentation

Benefits

  • Other extensions can extend functionality
  • No need to modify core code (XCLASSes)
  • Modern TYPO3 v13 patterns
  • Better separation of concerns

Acceptance Criteria

  • Event classes created
  • Events dispatched in appropriate locations
  • Events documented with code examples
  • Unit tests for event classes
  • Example listener in documentation

Priority

Medium - Improves extensibility and TYPO3 conformance

Related

TYPO3 Conformance Report: PHP Architecture +1 point

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions