Developer Guide

Target group: Developers

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

Events

T3extblog provides a couple of events to extend or change the default behavior. This is done by using PSR-14 events functionality provided by TYPO3.

Available events

  • CommentCreatePrePersistEvent (former prePersist signal)

    in FelixNagelT3extblogControllerCommentController:createAction

  • CommentSubscriberConfirmEvent (former subscriberConfirmAction signal)

    in FelixNagelT3extblogControllerPostSubscriberController:confirmAction

  • CommentSubscriberDeleteEvent (former subscriberDeleteAction signal)

    in FelixNagelT3extblogControllerPostSubscriberController:deleteAction

  • PostSubscriberConfirmEvent (former subscriberConfirmAction signal)

    in FelixNagelT3extblogControllerBlogSubscriberController:confirmAction

  • PostSubscriberDeleteEvent (former subscriberDeleteAction signal)

    in FelixNagelT3extblogControllerBlogSubscriberController:deleteAction

  • CommentNotificationCreateEvent (former processNewComment signal)

    in FelixNagelT3extblogServiceCommentNotificationService

  • CommentNotificationChangedEvent (former processChangedComment signal)

    in FelixNagelT3extblogServiceCommentNotificationService

  • CommentNotificationSubscribersEvent (former notifySubscribers signal)

    in FelixNagelT3extblogServiceCommentNotificationService

  • PostNotificationCreateEvent (former processNewSubscriber signal)

    in FelixNagelT3extblogServiceBlogNotificationService

  • PostNotificationChangedEvent (former processChangedSubscriber signal)

    in FelixNagelT3extblogServiceBlogNotificationService

  • PostNotificationSubscribersEvent (former notifySubscribers signal)

    in FelixNagelT3extblogServiceBlogNotificationService

  • SpamCheckEvent (former spamCheck signal)

    in FelixNagelT3extblogServiceSpamCheckService

  • SendEmailEvent (former sendEmail signal) in FelixNagelT3extblogServiceEmailService

More info

on PSR-14 events 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 introduction package.

https://extensions.typo3.org/extension/introduction

What needs to be tested:

  • Creating blog posts (with and without preview image and text)
    • Check post preview

  • 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)

  • Dashboard widgets work as expected

  • Test request throttling

  • PSR-14 events

Quick test procedure

Make sure to have all related pages, folders and blog categories localized!

  • 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 (in blog 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 BE module)

  • Un-check the SPAM checkbox, save record
    • new comment mail sent (check localization and link)

  • Add a valid comment for the translated post
    • admin mail sent (check localization and link)

  • Make sure there
    • are two comments displayed for the default language post and only one for the localized post

    • is no "new comment" email for the default language subscription

  • Click envelope icon in "all post" view (T3extblog BE module) -> New post subscription mail sent

  • Check dashboard blog widgets functionality

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

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)