-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
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
- Create event classes in
Classes/Event/ - Dispatch events in controllers and services:
- TranslationController
- TranslationService
- ImportService
- Document events in
Documentation/Developer/Events.rst - 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
Labels
enhancementNew feature or requestNew feature or request