in2code/powermail

Powermail is a well-known, editor-friendly, powerful and easy to use mailform extension for TYPO3 with a lots of features

Installs: 1 857 990

Dependents: 35

Suggesters: 3

Security: 3

Stars: 88

Watchers: 17

Forks: 175

Open Issues: 95

Type:typo3-cms-extension

12.4.3 2024-10-16 14:31 UTC

README

Powermail is a well-known, editor-friendly, powerful and easy to use mailform extension for TYPO3 with a lots of features (spam prevention, marketing information, optin, ajax submit, diagram analysis, etc...)

⚠️ TYPO3 13 compatibility
See EAP page (DE) or EAP page (EN) for more information how to get access to a TYPO3 13 version

⚠️ Deprecations, planned breaking changes for V13 and features

Double OptIn and TypoScript setting "Do not save to DB"

This combination will not work anymore in V13. If the person responsible for data security decides not to save anything into the database, no data may be saved to the database, even not in the double opt-in process.

If you need this earlier than the next major (public) release, please contact us for the extension EXT:powermail_cleaner. With this extension it is possible to set that for each plugin individually.

Plugins / content elements pi2 - pi4

The content elements for frontend editing will be moved to a separate paid extension.

Future: Powermail Powerpack

Next to extensions EXT:powermail_cleaner, EXT:powermail_ratelimiter and the frontend editing stuff, there will be another paid extension EXT:powermail_powerpack. This extension will contain additional features, we developed throughout the last years and want to make available to the broader public, for example:

  • use an email address only once per plugins
  • maximum "seats" per plugin (like a very, very basic registration)
  • ...

1. Documentation overview

2. Installation

Quick guide:

  • Just install this extension - e.g. composer require in2code/powermail
  • Add a static typoscript template to your root template
  • Add a new form (with one or more pages and with some fields to a page or a folder)
  • Add a new pagecontent (plugin) with type "powermail" and choose the former saved form
  • That's all, you can view the result in the frontend

3. Administration corner

3.1. Versions and Support

Do you need free support? There is a kind TYPO3 community that could help you. You can ask questions at https://stackoverflow.com and tag your question with TYPO3 and Powermail. In addition there is a slack channel in the TYPO3 slack ext-powermail.

3.2. Changelog

Please look into the changelog of powermail

3.3. Suggested Extensions for powermail

  • email2powermail Automatically convert emails to a link to a powermail form Link
  • powermailrecaptcha Google recaptcha Link
  • invisiblerecaptcha Google invisible recaptcha Link
  • powermailextended Is just an example extension how to extend powermail with new fields or use signals Link
  • powermail_cond Add conditions (via AJAX) to powermail forms for fields and pages Link
  • powermail_fastexport Extend powermail for faster export to .xlsx / .csv files. This is useful if you have many records to be exported. Link

3.4. Product Owner

The product owner and author of the extension is Alex Kellner from in2code. Beside that every in2code colleague is allowed to support further development if she/he wants. In addition there are a lot of other contributors that helped to improve the extension with their Pull Requests - thank you for that!

3.5. Release Management

Powermail uses semantic versioning which basically means for you, that

  • bugfix updates (e.g. 1.0.0 => 1.0.1) just includes small bugfixes or security relevant stuff without breaking changes.
  • minor updates (e.g. 1.0.0 => 1.1.0) includes new features and smaller tasks without breaking changes.
  • major updates (e.g. 1.0.0 => 2.0.0) normally includes basic refactoring, new features and also breaking changes.

We try to mark breaking changes in the changelog with a leading !!! and try to explain what to do on an upgrade (e.g. VieHelper name changed from vh:foo to vh:bar in templates).

In addition powermail is using Git Flow as Git workflow. That means that there is one branch which contains new and untested code: develop. The branch master only contains tested code which will also be tagged from time to time.

Based on release early, release often we try to release new versions as often as possible into TER and to github/packagist.

3.6. Automatic Testing

Behaviour tests

There is a huge testparcours that have to be passed before every release. For example there is an automatic test where the browser tries to submit 18 different strings and numbers to a field that accepts only phone numbers to test serverside validation. After that the same process is done for clientside valiation. There are also some smaller tests like "Is it possible to submit a form on a page where two different forms are stored?".

See readme.md for some more information about behat and selenium tests on powermail.

Unit tests

At the moment powermail offers 543 (and growing) unit tests that have to be passed before every release. See more information about unit tests or code coverage in powermail in the readme.md

3.7. Code quality

Beside respecting PSR-2 and TYPO3 coding guidelines, it's very important for the project to leave a file cleaner as before. Especially because it's a really large extension with a lot of functionality and a history of 10 years (!) and of course some technical debts, that have to be fixed step by step (e.g. moving logic completely to Domain folder, ...). Look at Sonarqube for some interesting details on that.

3.8. Contribution

Pull requests are welcome in general! Nevertheless please don't forget to add a description to your pull requests. This is very helpful to understand what kind of issue the PR is going to solve.

  • Bugfixes: Please describe what kind of bug your fix solve and give us feedback how to reproduce the issue. We're going to accept only bugfixes if I can reproduce the issue.
  • Features: Not every feature is relevant for the bulk of powermail users. In addition: We don't want to make powermail even more complicated in usability for an edge case feature. Please discuss a new feature before.

3.9. Development

Compile and minify (uglify) JavaScript, compress CSS:

$ cd Resources/Private
$ npm install
$ ./node_modules/.bin/gulp

4. Screenshots

4.1. Example form with bootstrap classes:

Example form

4.2. Backend module mail list:

Backend Module

4.3. Backend module reporting:

Backend Module2