Developer Guide¶
Target group: Developers
Within this page
Extending T3extlog¶
Using interfaces¶
Some internal services are implemented as interfaces. The actual class to use could be configured. This way it is possible to use custom implementations.
Before TYPO3 10 See config.tx_extbase.objects configuration in [ext_typoscript_setup.txt](../../ext_typoscript_setup.txt).
TYPO3 10 and later See interface registration configuration in [Services.yml](../../Configuration/Services.yml).
More info on the topic: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/DependencyInjection/Index.html
Signal / Slot¶
T3extblog provides a couple of hooks to extend or change the default behavior. This is done by using the signal / slot functionality provided by TYPO3.
Available signals
- sendEmail in FelixNagelT3extblogServiceEmailService
- subscriberConfirmAction in FelixNagelT3extblogControllerCommentSubscriberController
- subscriberDeleteAction in FelixNagelT3extblogControllerCommentSubscriberController
- subscriberConfirmAction in FelixNagelT3extblogControllerPostSubscriberController
- subscriberDeleteAction in FelixNagelT3extblogControllerPostSubscriberController
- processNewComment in FelixNagelT3extblogServiceCommentNotificationService
- processChangedComment in FelixNagelT3extblogServiceCommentNotificationService
- notifySubscribers in FelixNagelT3extblogServiceCommentNotificationService
- processNewSubscriber in FelixNagelT3extblogServiceBlogNotificationService
- processChangedSubscriber in FelixNagelT3extblogServiceBlogNotificationService
- notifySubscribers in FelixNagelT3extblogServiceBlogNotificationService
- spamCheck in FelixNagelT3extblogServiceSpamCheckService
- prePersist in FelixNagelT3extblogControllerCommentController
Example code
for using the EmailService sendEmail signal:
// typo3conf/ext/my_extension/ext_localconf.php
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\TYPO3\CMS\Extbase\SignalSlot\Dispatcher::class
);
$signalSlotDispatcher->connect(
FelixNagel\T3extblog\Service\EmailService::class,
'sendEmail',
MyVendor\MyExtension\Slot\MyEmailServiceSlot::class,
'mySendEmailMethod'
);
More info
on signal / slots in TYPO3:
Code insights¶
This section is incomplete
Table mapping
This extension uses TYPO3 Extbase table mapping to make use of existing EXT:t3blog tables. Take a look at ext_typoscript_setup.txt to see how this is done.
Translations¶
Translations could be added here: https://crowdin.com/project/typo3-extension-t3extblog
Please consider opening a GitHub ticket so we can review new translations as soon as possible!
Tip
German localization has been handled by local files before version 2.2.0. Please see this issue for more information: https://github.com/fnagel/t3extblog/issues/99
Documentation¶
Anyone is very welcome to help improving our documentation! Just send a pull request or add an issue at GitHub.
To view your changes before submitting them you will need to install following extensions:
- EXT:sphinx
- EXT:restdoc
See this link for more information: https://docs.typo3.org/typo3cms/extensions/sphinx/WritersManual/SphinxRest/Index.html
Testing¶
This needs to be done for latest supported TYPO3 versions in a multi-language site setup. It is recommenced to install T3extblog in TYPO3’S default Bootstrap Package.
What needs to be tested:
Creating blog posts (with and without preview image and text)
- Posting comments and subscribe for new comments
- With and without SPAM check triggered
- Test field validation
- Test prefilling fields
Using the subscription manager (confirm and delete for new comment and post subscription)
- New comment subscription
- Admin, subscriber opt-in and notification emails
- Triggered by:
- Frontend & backend (confirm and un-spam a comment)
- Edit button (BE module and core dashboard) and direct spam / confirmed toggle buttons * Make sure mails are sent with localized links for multi language setups
- New post subscription
- subscriber opt-in (frontend) and notification emails (button in BE module)
Quick test procedure
- Create a new post and translate it
- Add comment with subscription (saved but marked as SPAM) -> admin email sent
- Mark as non SPAM using the dashboard (T3extblog BE module) -> subscription mail sent
- Confirm subscription by email link (check localization and link)
- When in subscription manager, add new article subscription
- Add another comment (saved but marked as SPAM) -> admin email sent
- Edit the comment record you just created in “list” module
- Un-check the SPAM checkbox, save record -> new comment mail sent (check localization and link)
- Add a valid comment for the translated post -> new comment mail sent (check localization and link)
- Make sure there a two comments displayed for the default language post and only one for the localized post
- Click envelope icon in “all post” view (T3extblog BE module) -> New post subscription mail sent
TER deployment¶
TYPO3 TER deployment is done automated via GitHub action workflow. Just add a version tag and push to GitHub. See /.github/workflows/release.yml for more information.
How to release
- Create upgrade guide!
- Change version information in /ext_emconf.php
- Change year in /Documentation/Settings.cfg if needed
- Commit changes: Use [RELEASE] prefix, this commit message will be the TYPO3 TER release notice
- Add tag to release commit (format: “1.2.3”)
- Change version information in /ext_emconf.php to next bugfix version + “dev” (example: “1.2.4dev”)
- Push GIT changes incl. tag
After a release
- Make sure the release has been pushed to the TER
- Add t3x file rendered by TER to the GitHub release
- Update maintained translations (German) on https://crowdin.com/project/typo3-extension-t3extblog
Important
Please be careful when pushing tags. Do not push “non release” tags without changing the version number in /ext_emconf.php to a dev version number (see above)