first commit

This commit is contained in:
salam committed 2026-10-06 19:40:28 +02:00
commit e81864e683
2984 files changed
+267797

No files matched your search

@@ -0,0 +1,373 @@
.. include:: ../Includes.rst.txt
Changelog
=========
-
:Version: 7.5.3
:Date: 2025-07-22
:Changes:
* [SECURITY] Avoid unintended persistence
-
:Version: 7.5.2
:Date: 2025-06-17
:Changes:
* [BUGFIX] missing HTML View for confirmedByAdminRefusedSilent
-
:Version: 7.5.1
:Date: 2025-06-10
:Changes:
* [BUGFIX] Avoid PHP Warning: Undefined variable
-
:Version: 7.5.0
:Date: 2025-06-10
:Changes:
* [FEATURE] Add confirmation buttons for a final confirm
-
:Version: 7.4.2
:Date: 2025-05-20
:Changes:
* [BUGFIX] Security: Missing Hash Check for invitation controller - Invitation Templates must be updated (if a custom template is used)
-
:Version: 7.4.1
:Date: 2024-11-11
:Changes:
* [TASK] Disable autocomplete for the CAPTCHA field - thx to Oliver Klee
* [DOCS] Update Roadmap
-
:Version: 7.4.0
:Date: 2024-10-04
:Changes:
* [FEATURE] Add type and autocomplete information to input fields - thx to Oliver Klee
* [TASK] Use semantic HTML for tables in the emails - thx to Oliver Klee
* [TASK] Improve the code formatting of additional input attributes - thx to Oliver Klee
* [TASK] Apply the latest Rector fixes for TYPO3 11LTS - thx to Oliver Klee
* [TASK] Mitigate browser "spell jacking" in form elements- thx to Patrick Lenk
* [TASK] Add autocomplete attribute to password fields - thx to Patrick Lenk
* [TASK] Switch to PHP-based Documentation Rendering - thx to Sandra Erbel
* [BUGFIX] Avoid deprecated PHP function `utf8_decode` - thx to Oliver Klee
* [BUGFIX] Add missing scope - thx to Stefan Busemann (in2code)
* [BUGFIX] Add missing if clause in UserProperties.html - thx to Sandra Erbel
* [BUGFIX] Use specific seleniarm image for behat tests - thx to Stefan Busemann (in2code)
* [BUGFIX] Restore email notification to admin after registration - thx to Patrick Lenk
* [BUGFIX] Fix composer script calls in the `test:rector:fix` script - thx to Oliver Klee
* [BUGFIX] Fix the Rector PHP target version - thx to Oliver Klee
* [BUGFIX] Allow the PHPStan extension installer for Composer - thx to Oliver Klee
-
:Version: 7.3.0
:Date: 2024-05-08
:Changes:
* [FEATURE] Add confirmation form to delete profile during registration - thx to Stefan Busemann (in2code)
* [FEATURE] Add BeforeMailBodyRenderEvent - thx to Michael Bakonyi
* [FEATURE] Include bootstrap directly from repository instead of maxcdn.bootstrapcdn.com - thx to Felix Ranesberger (in2code)
* [BUGFIX] Fix a typo in the labels - thx to Oliver Klee
* [BUGFIX] Open the "terms & conditions" page in a new tab - thx to Oliver Klee
* [BUGFIX] errorClass attribute not working - thx to Stig Nørgaard Færch
* [DOC] Update documenation - thx to Daniel Hoffman (in2code)
-
:Version: 7.2.3
:Date: 2023-12-13
:Changes:
* [SECURITY] This update is needed for version for 7.0.0 to 7.2.2 older versions are not affected
* BUGFIX] Dont use initilize actions for granting access - thx to Daniel Hofmann (in2code)
-
:Version: 7.2.2
:Date: 2023-10-04
:Changes:
* [SECURITY] This update is needed for version for 7.0.0 to 7.2.1 older versions are not affected
* [BUGFIX] Add missing permission check for invitation controller - thx to Daniel Hofmann (in2code)
-
:Version: 7.2.1
:Date: 2023-08-08
:Changes:
* [TASK] Adds documentation for extended - thx to Daniel Hofmann (in2code)
* [TASK] Update Image used for Github Actions
* [BUGFIX] Fixes reaction when no typoscript configuration is set for redirect - thx to Daniel Hofmann (in2code)
* [BUGFIX] Fixed Object Support for getDirtyPropertiesFromUser() - thx to Daniel Hofmann (in2code)
-
:Version: 7.2.0
:Date: 2023-07-17
:Changes:
* [FEATURE] Add column "inactive since" to backend list - thx to Thomas Löffler
* [BUGFIX] missing email AdminNotify after editing of user profile - thx to Christian Ludwig
* [BUGFIX] Do not re-evaluate object values in ServersideValidator - thx to Torben Hansen
* [BUGFIX] Add full object support in getDirtyPropertiesFromUser() - thx to Daniel Haupt
* [BUGFIX] Prevent undefined array key for empty configPID - thx to Daniel Haupt
* [BUGFIX] Migrate usage of GU::lcfirst with Rector - thx to Torben Hansen
* [TASK] Corrects Documenation Rendering Configuration - thx to Daniel Hoffmann
* [TASK] [TASK] Replace jQuery scrollTop with vanilla scrollIntoView - thx to Felix Ranesberger
-
:Version: 7.1.1
:Date: 2023-03-16
:Changes:
* [BUGFIX] Notification email to admin now sends changes again
* [BUGFIX] Notification email to admin is also sent when adding recipient's address to flex form only
* [TASK] Removes configPID from ext_typoscript_setup.typoscript
-
:Version: 7.1.0
:Date: 2023-01-19
:Changes:
* [FEATURE] Add support for PHP 8 and 8.1 - thx to Stefan Busemann, Bastien Lutz, Mathias Bolt Lesniak, Thomas Löffler, Johannes Seipelt
* [BUGFIX] Re-fetch session from database to update 'userSession' property of TSFE. Thx to Thomas Off <thomas.off@retiolum.de>
* [BUGFIX] Add hash check for invitation action - thx to Max Schäfer & Dennis Schober-Wenger
* [REFACTOR] Remove deprecated code and introduce rector - thx to Thomas Löffler
-
:Version: 7.0.1
:Date: 2022-10-31
:Changes:
* [BUGFIX] (!!!) Security Fix - Broken Access Control in Usergroup Validation (Andreas Nedbal - in2code) - thx to TYPO3 Security Team
* [BUGFIX] login after registration (Re-fetch session from database to update 'userSession' property of TSFE) - thx to Thomas Off
* [BUGFIX] CleanUserGroup DataProcessor - thx to Daniel Hoffmann (in2code)
-
:Version: 7.0.0
:Date: 2022-07-11
:Changes:
* [FEATURE] Add column "inactive since" to backend list - thx to SpoonerWeb
* [TASK] Add support for TYPO3 11
* [TASK] Update Test enviroment and add addtitional tests
* [TASK] Add missing translation key for "createStatus"
* [TASK] Bump jquery from 3.2.1 to 3.6.0 and migrate deprecated shorthand event .blur and .submit - thx to Patrick Lenk
* [BUGFIX] replace is_array with isset - hx to AlexVossBu
* [BUGFIX] no custom controller needed in TYPO3 10
* [BUGFIX] Remove "endtime" for check of unique in db
* [DOCS] Add note for configpid setting
* [BUGFIX] updated sjbr/static-info-tables version
-
:Version: 6.4.0
:Date: 2024-05-08
:Changes:
* [FEATURE] Add confirmation form to delete profile during registration - thx to Stefan Busemann (in2code)
* [TASK] Remove unnecessary scrollIntoView property - thx to Felix Ranesberger (in2code)
* [TASK] Replace jQuery scrollTop with vanilla scrollIntoView - thx to Felix Ranesberger (in2code)
* [TASK] Build new JS distribution file - thx to Felix Ranesberger (in2code)
-
:Version: 6.3.2
:Date: 2021-10-13
:Changes:
* [TASK] Add setter to allow modification of email object inside event listeners - thx to https://github.com/mediaessenz
* [TASK] Refactor forceValues to FrontendUtility and add a test - thx to https://github.com/ute-arbeit
* [TASK] Remove TCA configuration showRecordFieldList - thx to https://github.com/Patta
* [BUGFIX] Make forceValues work for field names with underscores - thx to https://github.com/ute-arbeit
* [BUGFIX] Allow frontend user login via EXT:femanager - thx to https://github.com/webian
* [BUGFIX] repairs confirmation view due to missing state column - thx to in2code / Bastien Lutz
* [BUGFIX] refusing users from the admin confirmation backend list - Thx to https://github.com/fwg
* [BUGFIX] correct v10 Extbase persistence config - thx to jonaseberle
* [BUGFIX] add missing field mapping for custom properties for TYPO3v10+ - thx to jonaseberle
* [BUGFIX] embedded images in emails - thx to https://github.com/fwg
* [BUGFIX] Email subject for sendCreateUserConfirmationMail - thx to Pixelant
-
:Version: 6.3.1
:Date: 2021-07-19
:Changes:
* [BUGFIX] Security: Disallow SVG as Filetype
-
:Version: 6.3.0
:Date: 2021-07-02
:Changes:
* [FEATURE] Add divers as gender - thx to spoonerWeb
* [FEATURE] Add possibility to set preferred or limited countries to selector - thx to spoonerWeb
* [TASK] Use USER_INT instead of no_cache for better performance - thx to
* [TASK] Update Behat Tests and Test Environment - thx to in2code
* [TASK] Add option to run single behat test - thx to in2code
* [TASK] Add terupload via Github Action - thx to in2code
* [BUGIFX] subject translation for createUserConfirmationMail - thx to https://github.com/martinschoene
* [BUGFIX] Fix field validation messages - thx to https://github.com/dahaupt
* [BUGFIX] Fix link generation in general redirect method - thx to Andre Spindler
* [BUGFIX] If user confirmation sent, do not send admin confirmation - thx to SpoonerWeb
* [BUGFIX] Use exact email to check for resending confirmation mail - thx to SpoonerWeb
:Version: 6.2.1
:Date: 2021-14-06
:Changes:
* [BUGFIX] Use ratelimiter service only in FE context - thx to Thomas Löffler
-
:Version: 6.2.0
:Date: 2021-06-06
:Changes:
* [FEATURE] Add RateLimiter for registration form - :ref:`see documentation <countryselect>`
* [BUGFIX] Improve date validation - thx to https://github.com/pfuju
* [BUGFIX] Validation for checkUniqueDb ignores starttime/endtime - thx to in2code
* [BUGFIX] return true for FileReferences - https://github.com/marclindemann
* [BUGFIX] Template missing for New->create - https://github.com/kitzberger
* [BUGFIX] Select previously saved state in state menu - ttps://github.com/mabolek
* [BUGFIX] Subject not translated on confirmation email - thx to https://github.com/Moongazer
* [BUGFIX] Remove unnecessary paramter from disable url - thx to https://github.com/Patta
* [TASK] change language detection to language aspect - thx to https://github.com/cehret
* [TASK] Add validation for all unicode letters - thx to in2code
* [TASK] Add Behaviour Test for terms and conditions - thx to in2code
* [TASK] Add tests for countries and states, update test data - thx to in2code
* [TASK] Resolve TYPO3 V11 breaking change for plugin registration - thx to https://github.com/Footrotflat
-
:Version: 6.1.2
:Date: 2020-12-03
:Changes:
* [BUGFIX] JavaScript error in FeManager.js - thanks to https://github.com/grischpel
-
:Version: 6.1.1
:Date: 2020-10-26
:Changes:
* [TASK] Set fixed install tool password for dev env (better dev env performance)
* [BUGFIX] Prevent warning in UpperViewHelper - thanks to christophlehmann's PR https://github.com/in2code-de/femanager/pull/289
* [BUGFIX] Use getter for userTS - thanks to siwa-pparzer's PR https://github.com/in2code-de/femanager/pull/287
* [BUGFIX] fix statically called non-static method calls in InvitationController - thanks to ewokhias's PR https://github.com/in2code-de/femanager/pull/294
* [BUGFIX] Fix Exception in wrong file upload - thanks to marclindemann's PR https://github.com/in2code-de/femanager/pull/262
-
:Version: 6.1.0
:Date: 2020-08-13
:Changes:
* [FEATURE] Add support for country selection options - :ref:`see documentation <countryselect>`
* [BUGFIX] Allow validation via captcha - thanks to Germar https://github.com/Germar and dnozdrin https://github.com/dnozdrin
-
:Version: 6.0.1 (!!!)
:Date: 2020-07-15
:Changes:
* [TASK] Remove falsly declarated support for TYPO3 V9 in femanager 6 branch
-
:Version: 6.0.0 (!!!)
:Date: 2020-07-06
:Changes:
* [FEATURE] Add Support for TYPO3 10 LTS - Sponsored by inixmedia and in2code, Thanks to Markus Bachmann, Filar
* [FEATURE] Add support for PageTS and UserTS configuration for femanager backend module - Sponsored by in2code
* [FEATURE] Change user confirmation process to frontend requests - Sponsored by in2code
* [TASK] (!!!) Remove Support for TYPO3 8.7 and PHP < 7.2
* [TASK] Add docker based development env - Sponsored by in2code
* [TASK] Update Unit and Behaviour Tests - Sponsored by inixmedia and in2code
* [TASK] Remove legacy password hashing code - Sponsored by in2code
-
:Version: 5.4.2
:Date: 2020-12-03
:Changes:
* [BUGFIX] JavaScript error in FeManager.js - thanks to https://github.com/grischpel
-
:Version: 5.4.1
:Date: 2020-10-26
:Changes:
* [BUGFIX] Prevent Exceptions on wrong file upload - thanks to https://github.com/in2code-de/femanager/pull/262
-
:Version: 5.4.0
:Date: 2020-08-30
:Changes:
* [FEATURE] Add support for country selection options (for TYPO3 V8 / V9) - :ref:`see documentation <countryselect>`- Sponsored by Resultify.se
-
:Version: 5.3.1
:Date: 2020-08-06
:Changes:
* [BUGFIX] Allow validation via captcha - thanks to Germar https://github.com/Germar and dnozdrin https://github.com/dnozdrin
-
:Version: 5.3.0
:Date: 2020-07-06
:Changes:
* [FEATURE] Adds uppercase validation for password (https://github.com/in2code-de/femanager/issues/91) - thanks to https://github.com/alexkue7911
* [FEATURE] Add support for PageTS and UserTS configuration for femanager backend module - Sponsored by in2code
* [FEATURE] Change user confirmation process to frontend requests - Sponsored by in2code
* [BUGFIX] Use FlexFormService to validate allowed views (https://github.com/in2code-de/femanager/issues/177) - thanks to https://github.com/nigelmann
* [BUGFIX] TCA migrations for TYPO3 v9.5 - thanks to https://github.com/TrueType
* [BUGFIX] Make ajax validation URL more robust - thanks to https://github.com/baschny
* [BUGFIX] Allow '0' if field is required (https://github.com/in2code-de/femanager/issues/52) - thanks to https://github.com/DanielSiepmann
* [DOCS] Add info about PHP7 and extending femanager - thanks to https://github.com/uwejakobs
-
:Version: 5.2.0 (!!!)
:Date: 2019-11-26
:Changes:
* !!![BUGFIX] Allow password hashing none for TYPO3 V9
-
:Version: 5.1.1
:Date: 2019-05-26
:Changes:
* [BUGFIX] Allow password hashing none for TYPO3 V9
-
:Version: 5.1.0
:Date: 2019-05-21
:Changes:
* [FEATURE] Allow TYPO3 Version 8, allow PHP 7.3
* [BUGFIX] Allow password hashing none for TYPO3 V9
* [BUGFIX] Invitation: Peform expected redirect (thanks to Footrotflat)
* [BUGFIX] Use HashFactory of V9 and fallback for V8
* [BUGFIX] use hash password methods (thanks to Lex Frolenko)
* [BUGFIX] Fix JS validation URL (thanks to Daniel Haupt)
* [BUGFIX] Use doctrine contraints on pluginRespository (thanks to netcoop)
* [BUGFIX] use doctrine for UserUtility queries
* [BUGFIX] Update russian lang label
* [BUGFIX] Update GetFirstViewHelper (thanks to Oliver Beck)
* [BUGFIX] Fix translation of field names in form errors (thanks to Daniel Haupt)
* [TASK] Add signal beforeSend (thanks to Michael Bakonyi)
* [TASK] Updated 5.0.0 release date (thanks to Stephan Großberndt)
* [TASK] Consistent naming for ConnectionPool method (thanks to Stephan Großberndt)
* [TASK] Fix a small typo in FAQ (thanks to Thomas Deuling)
* [DOCS] Add migration notes
* [DOCS] Fix multiple errors and warnings (thanks to Daniel Haupt)
* [DOCS] Add detailed changelog
-
:Version: 5.0.0 (!!!)
:Date: 2019-02-01
:Changes:
* Feature: Support for TYPO3 version 9
* Bugfix: Change feManagerLoginAs Feature to typeNum
* Bugfix: Change Frontend Validation from eid script to typeNum
Pls look at https://github.com/in2code-de/femanager for a changelog for older versions
Older versions of femanager, even those which are probably not downloadable through TER, are available on github:
https://github.com/in2code-de/femanager/releases
@@ -0,0 +1,357 @@
.. include:: ../Includes.rst.txt
.. _faq:
Frequently Asked Questions (FAQ)
================================
Q: How to use static_info_tables for countryselection?
------------------------------------------------------
A: :ref:`See code in best practice section <countryselect>`
Q: How to add new fields to fe_users?
-------------------------------------
A: :ref:`See code in best practice section <newfields>`
Q: How to add my own field validation?
--------------------------------------
A: :ref:`See code in best practice section <extendvalidators>`
Q: Class 'In2code\Femanager\Domain\Model\Log' not found - what can I do?
------------------------------------------------------------------------
A: This problem normally occurs only if you have installed femanager without composer (btw: it's time for composer :),
so your instance is running in *classic mode*.
It's possible that you have added femanager via Extension Manager. Please go into the install tool by opening the URL
www.yourdomain.org/typo3/install (of course you have to add a file named *ENABLE_INSTALL_TOOL* to typo3conf/ folder
first) and click on *Create autoload information for extensions* in section *Dump Autoload Information*.
That will create a new autoload file.
Q: An exception occurred while executing :sql:`SELECT uid FROM tx_femanager_domain_model_log WHERE ...` doesn't exist
---------------------------------------------------------------------------------------------------------------------
A: There are some tables missing in your database. Please compare databases with :guilabel:`Admin Tools > Maintenance > Database Compare`.
Q: How can I disable the clientside/serverside validation?
----------------------------------------------------------
A: Enable/Disable Validation via TypoScript – disable example:
.. code-block:: typoscript
plugin.tx_femanager {
settings.new.validation {
_enable.client = 0
_enable.server = 0
}
}
Q: How can I configure the validation of my fields?
---------------------------------------------------
A: Have a look into TypoScript:
.. code-block:: typoscript
plugin.tx_femanager {
settings.new {
# validation of user input values
# possible validations for each field are: required, email, min, max, intOnly, lettersOnly, unicodeLettersOnly, uniqueInPage, uniqueInDb, date, mustInclude(number,letter,special,space), mustNotInclude(number,letter,special,space), inList(1,2,3), captcha, sameAs(password)
# see manual for an example how to add custom serverside and clientside validation
validation {
# Enable clientside Formvalidation (JavaScript)
_enable.client = 1
# Enable serverside Formvalidation (PHP)
_enable.server = 1
username {
required = 1
uniqueInDb = 1
mustNotInclude = special,space
}
email {
required = 1
email = 1
#uniqueInPage = 1
}
password {
required = 1
#min = 10
#mustInclude = number,letter,special
}
usergroup {
#inList = 1,2,3
}
}
}
}
Note: If you use validation for passwords, values will be send via AJAX to server to check if all is right. It's recommended to use https connections for the registration form.
Q: System should generate random passwords – possible?
------------------------------------------------------
Since version 1.0.10 femanager is able to create passwords and username per random if there is no input. If you want to use this, please disable required settings of password (and username)
- If no username given, try to get email (if set)
- If no username and no email given, create a username by random
- If no password given, create a password by random
- It's possible to create a new user without filling out any field – this could be used as “onetimeaccount”
Q: How can I prefill form fields?
---------------------------------
A: You can use TypoScript cObj to fill form fields in registration- or edit-form:
.. code-block:: typoscript
plugin.tx_femanager {
settings {
new {
prefill {
username = TEXT
username.value = ExampleUsername
email = TEXT
email.value = test@in2code.de
}
}
edit {
prefill {
# fill from GET or POST param like &username=Alex
username = TEXT
username.data = GP:username
# fill from GET or POST param like &email=info@test.de
email = TEXT
email.data = GP:email
}
}
}
}
Q: JavaScript Validation won't work – what can I do?
----------------------------------------------------
A: Check if all needed JavaScript files are loaded (see frontend html- source). Add some JavaScript with constant editor or directly:
.. code-block:: typoscript
plugin.tx_femanager.settings.jQuery = 1
plugin.tx_femanager.settings.bootstrap = 1
plugin.tx_femanager.settings.bootstrapCSS = 1
Example ordering and needed JavaScripts:
.. code-block:: html
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>
<script src="/typo3conf/ext/femanager/Resources/Public/JavaScript/Vendor/bootstrap.min.js?1502824793" type="text/javascript"></script>
<script src="/typo3conf/ext/femanager/Resources/Public/JavaScript/Validation.min.js?1502824793" type="text/javascript"></script>
<script src="/typo3conf/ext/femanager/Resources/Public/JavaScript/Femanager.min.js?1502824793" type="text/javascript"></script>
Q: How can I send user values to a third-party-software like a CRM?
-------------------------------------------------------------------
A: Use some lines of TypoScript to send values after a registration to a tool like a CRM. Test it with a simple php file on your server which sends an email to you with the $_REQUEST Array.
!!! take care to validate the incomming data in your receiver script !!!
TypoScript:
.. code-block:: typoscript
plugin.tx_femanager {
settings {
new {
# Send Form values via POST to another system (e.g. CRM like salesforce or eloqua)
sendPost {
# Activate sendPost (0/1)
_enable = TEXT
_enable.value = 1
# Target URL for POST values (like http://www.target.com/target.php)
targetUrl = https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8
#targetUrl = http://eloqua.com/e/f.aspx
# build your post datas like &param1=value1&param2=value2
data = COA
data {
10 = TEXT
10 {
# value from field {username}
field = username
wrap = &username=|
stdWrap.rawUrlEncode = 1
}
20 = TEXT
20 {
# value from field {email}
field = email
wrap = &email=|
stdWrap.rawUrlEncode = 1
}
30 = TEXT
30 {
# value from field {title}
field = title
wrap = &title=|
stdWrap.rawUrlEncode = 1
}
}
# activate debug mode - shows all configuration from curl settings (needs extension devlog)
debug = 0
}
}
}
}
Q: How can I store values in another table?
-------------------------------------------
A: With some lines of TypoScript it's possible to store values to any table in the TYPO3 database:
.. code-block:: text
plugin.tx_femanager {
settings {
new {
# Save user values to one or more other tables (e.g. tt_address or something else)
# With .field=[fieldname] you have access to the user object
# Possible values are: uid, username, address, city, company, country, email, fax, firstName, lastName, middleName, name, password, telephone, fax, title, www, zip and lastGeneratedUid (to have access to the uid of the last loop in the next loop)
storeInDatabase {
tt_address {
_enable = TEXT
_enable.value = 0
pid = TEXT
pid.value = 21
name = TEXT
name.field = username
email = TEXT
email.field = email
first_name = TEXT
first_name.field = firstName
last_name = TEXT
last_name.field = lastName
}
}
}
}
}
Q: How can I overwrite labels and errormessages with my own text?
-----------------------------------------------------------------
A: Every TYPO3 extension can be extended with own labels in any language. You have to search for the key, that you want to overwrite – have a look into the file EXT:femanager/Resources/Private/Language/locallang.xlf – example:
.. code-block:: typoscript
plugin.tx_femanager {
_LOCAL_LANG {
# Field Labels
default.tx_femanager_domain_model_user\.username = Email
de.tx_femanager_domain_model_user\.username = E-Mail
fr.tx_femanager_domain_model_user\.username = E-mail
# Errormessages
default.validationErrorRequired = This is a mandatory field
de.validationErrorRequired = Hierbei handelt es sich um ein Pflichtfeld
fr.validationErrorRequired = Ce champ est obligatoire
}
}
Q: How to add a captcha for spam prevention
-------------------------------------------
A: Since version 1.1.0 femanager allows sr_freecap as captcha extension. Import sr_freecap to your TYPO3. From this moment on, you can add a new fieldtype in your flexform “captcha”. In addition you have to enable captcha with TypoScript:
.. code-block:: typoscript
plugin.tx_femanager.settings.new.validation.captcha.captcha = 1
plugin.tx_femanager.settings.edit.validation.captcha.captcha = 1
Q: How to change the dateformat of the birthday field?
------------------------------------------------------
A: Per default “m/d/Y” (for EN) and “d.m.Y “ (for DE) will be used. If you want to overwrite this, you can use some lines of TypoScript
.. code-block:: typoscript
plugin.tx_femanager {
_LOCAL_LANG {
# Default Language
default.tx_femanager_domain_model_user.dateFormat = Y-m-d
default.tx_femanager_domain_model_user.dateOfBirth.placeholder = Y-m-d
# For DE
de.tx_femanager_domain_model_user.dateFormat = Y-m-d
de.tx_femanager_domain_model_user.dateOfBirth.placeholder = Y-m-d
}
}
Q: Flashmessage from other plugins are shown in femanager!
----------------------------------------------------------
A: If you want to hide flashmessages in other extbase plugins, use following TypoScript setup:
.. code-block:: typoscript
config.tx_extbase.legacy.enableLegacyFlashMessageHandling = 0
Q: “Please log in before” but I'm already logged in?
----------------------------------------------------
A: Check if the logged in user is really logged in (e.g. add a content-element which should not be viewed if the FE-User is not yet logged in). Check if the FE-Users have an empty value or 0 for column tx_extbase_type in your database.
Q: How to change the extbase_type of new Users?
-----------------------------------------------
A: You can change this via TypoScript:
.. code-block:: typoscript
config.tx_extbase.persistence.classes {
In2code\Femanager\Domain\Model\User {
mapping {
tableName = fe_users
recordType = anyExtbaseType
}
}
}
Q: What else can I do with femanager?
-------------------------------------
A: Have a look into the TypoScript of femanager (see EXT:femanager/Configuration/TypoScript/Main/setup.txt) – here you see how to configure your mails, forceValues, redirect, autologin and much more...
@@ -0,0 +1,133 @@
.. include:: ../../Includes.rst.txt
.. _autoconfirmation:
Auto admin confirmation
-----------------------
Introduction
^^^^^^^^^^^^
**Available since 4.0.0**
If you turn on an adminconfirmation by adding an email address in the FlexForm field, admins normally have to confirm
new requests from users. But it's possible to implement some own magic to make a confirmation happen automaticly.
You can add own AutoAdminConfirmation classes to bring in own magic (auto confirmation for an IP-Range, etc...).
At the moment, femanager offers only one AutoAdminConfirmation class, which decided which users are auto-confirmed by
the top-level-domain of the email-address.
EmailDomainConfirmation
^^^^^^^^^^^^^^^^^^^^^^^
Small example
'''''''''''''
Accept every user profile from domains de, it, ch and at:
.. code-block:: typoscript
plugin.tx_femanager.settings {
autoAdminConfirmation {
# Femanager autoAdminConfirmation classes
10 {
class = In2code\Femanager\Domain\Service\AutoAdminConfirmation\EmailDomainConfirmation
config {
# Just look at the domains of the given Email-Addresses
confirmByEmailDomains = .de, .it, .ch, .at
}
}
}
}
Extended example
''''''''''''''''
Accept every user profile from domains de, it, ch and at but not if they are using gmail.de or gmx.de:
.. code-block:: typoscript
plugin.tx_femanager.settings {
autoAdminConfirmation {
# Femanager autoAdminConfirmation classes
10 {
class = In2code\Femanager\Domain\Service\AutoAdminConfirmation\EmailDomainConfirmation
config {
# Just look at the domains of the given Email-Addresses
confirmByEmailDomains = .de, .it, .ch, .at
confirmByEmailDomainsExceptions = gmail.de, gmx.de
}
}
}
}
YourAutoConfirmation
^^^^^^^^^^^^^^^^^^^^
Of course you can add your own classes to bring in some own magic.
Example
'''''''
TypoScript:
.. code-block:: typoscript
plugin.tx_femanager.settings {
autoAdminConfirmation {
# Femanager autoAdminConfirmation classes
100 {
# Classname that should be called with method isAutoAdminConfirmationFullfilled()
class = In2code\FemanagerExtended\Domain\Service\AutoAdminConfirmation\IpAddressConfirmation
# optional: Add configuration for your PHP
config {
ip = 127.0.0.1
foo = bar
fooCObject = TEXT
fooCObject.value = do something with this text
}
}
}
}
PHP:
.. code-block:: php
<?php
declare(strict_types=1);
namespace In2code\FemanagerExtended\Domain\Service\AutoAdminConfirmation;
use In2code\Femanager\Domain\Service\AutoAdminConfirmation\AbstractConfirmation;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* Class IpAddressConfirmation
*/
class IpAddressConfirmation extends AbstractConfirmation
{
/**
* @return bool
*/
public function isAutoConfirmed(): bool
{
return GeneralUtility::getIndpEnv('REMOTE_ADDR') === $this->config['ip']);
}
}
Some notices
^^^^^^^^^^^^
* Called method in Confirmation class is always isAutoConfirmed()
* Confirmation classes must implement In2code\Femanager\Domain\Service\AutoAdminConfirmation\ConfirmationInterface or extend In2code\Femanager\Domain\Service\AutoAdminConfirmation\AbstractConfirmation
* You have to take care, that your class is included from TYPO3 autoloader otherwise it's not included
* Per default femanager offers only EmailDomainConfirmation class at the momment
@@ -0,0 +1,105 @@
.. include:: ../../Includes.rst.txt
.. _countryselect:
Using static_info_tables for country selection
----------------------------------------------
Basics
^^^^^^
- Install Extension static_info_tables
- Install Extension static_info_tables(_de)(_fr)(_pl) etc... for localized countrynames
- Import Records of the extensions via Extension Manager (see manual of static_info_tables)
- Clear Cache
- Copy all Partials from femanager to a fileadmin folder
- Set the new Partial Path via Constants: plugin.tx_femanager.view.partialRootPath = fileadmin/femanager/Partials/
- Open Partial Fields/Country.html and activate static_info_tables (see notes in HTML-File)
Details for Partial Country.html
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The idea is very simple. You can change the “options Attribute” of the form.select ViewHelper:
.. code-block:: typoscript
<femanager:form.select
id="femanager_field_country"
property="country"
options="{femanager:Form.GetCountriesFromStaticInfoTables()}"
defaultOption="{f:translate(key:'pleaseChoose')}"
class="input-block-level"
additionalAttributes="{femanager:Validation.FormValidationData(settings:'{settings}',fieldName:'country')}" />
The GetCountriesFromStaticInfoTables-ViewHelper
Possible options for this ViewHelper are:
.. t3-field-list-table::
:header-rows: 1
- :Name:
Name
:Description:
Description
:Default:
Default Value
:Examplevalue:
Example Value
- :Name:
key
:Description:
Define the Record Column of static_countries table which should be used for storing to fe_users country
Note: Please use lowerCamelCase Writing for Fieldnames
:Default:
isoCodeA3
:Examplevalue:
isoCodeA2
- :Name:
value
:Description:
Define the Record Column of static_countries table which should be visible in selection in femanager
Note: Please use lowerCamelCase Writing for Fieldnames
:Default:
officialNameLocal
:Examplevalue:
shortNameFr
- :Name:
sortbyField
:Description:
Define the Record Column of static_countries which should be used for a sorting
Note: Please use lowerCamelCase Writing for Fieldnames
:Default:
isoCodeA3
:Examplevalue:
shortNameDe
- :Name:
sorting
:Description:
Could be 'asc' or 'desc' for Ascending or Descending Sorting
:Default:
asc
:Examplevalue:
desc
Some Examples are:
.. code-block:: html
{femanager:Form.GetCountriesFromStaticInfoTables(key:'isoCodeA2',value:'shortNameDe')}
{femanager:Form.GetCountriesFromStaticInfoTables(key:'isoCodeA2',value:'shortNameFr',sortbyField:'shortNameFr')}
{femanager:Form.GetCountriesFromStaticInfoTables(key:'isoCodeA3',value:'isoCodeA3',sortbyField:'isoCodeA3',sorting:'asc')}
@@ -0,0 +1,51 @@
.. include:: ../../Includes.rst.txt
.. _fillEmailAsUsername:
Fill Email as Username during registraion
-----------------------------------------
Introduction
^^^^^^^^^^^^
**Available since 2.0**
If this setting is enabled, the mail address is taken as username. The setting can be applied in three situations:
* During registration (new)
* During edit process of an existing user (edit)
* During Invitation process (invite)
Configuration
^^^^^^^^^^^^^
Enable the "fillEmailWithUsername" option for the area (new, edit, invite), where you like to apply it.
Example for "new" area:
:typoscript:`plugin.tx_femanager.settings.new.fillEmailWithUsername = 1`
Please take care, that the username is not set to required, otherwise it will not work
:typoscript:`plugin.tx_femanager.settings.new.validation.username.required = 0`
Example
'''''''
TypoScript:
.. code-block:: typoscript
plugin.tx_femanager.settings {
new {
fillEmailWithUsername = 1
validation.username.required = 0
}
}
Remarks
^^^^^^^
Please mind, if you use this setting in the edit view, a user is able to change his username.
Therefor you should always take care, via validation settings, that a username (and also the mail address) stays
unique for your users.
@@ -0,0 +1,173 @@
.. include:: ../../Includes.rst.txt
.. _finishers:
Add own Finisher classes
------------------------
Introduction
^^^^^^^^^^^^
Let's say you want to easily add some own php functions,
that should be called after a user registered.
Maybe you want to handle the user input with:
* Send it to an API
* Store it in a logfile
* Save it into a table
* Something else...
Small example
^^^^^^^^^^^^^
Just define which classes should be used. Every method like \*Finisher() will be called - e.g. myFinisher():
.. code-block:: typoscript
plugin.tx_femanager.settings {
finishers {
1 {
class = Vendor\Ext\Finisher\DoSomethingFinisher
}
}
}
Add a php-file and extend your class with the AbstractFinisher from femanager:
.. code-block:: php
<?php
namespace Vendor\Ext\Finisher;
use In2code\Femanager\Finisher\AbstractFinisher;
/**
* Class DoSomethingFinisher
*
* @package Vendor\Ext\Finisher
*/
class DoSomethingFinisher extends AbstractFinisher
{
/**
* MyFinisher
*
* @return void
*/
public function myFinisher()
{
// ...
}
}
Extended example
^^^^^^^^^^^^^^^^
See the advanced example with some configuration
in TypoScript and with the possibility to load the file
(useful if file could not be loaded from autoloader
because it's stored in fileadmin or elsewhere)
.. code-block:: typoscript
plugin.tx_femanager.settings {
finishers {
1 {
# Classname that should be called with method *Finisher()
class = Vendor\Ext\Finisher\DoSomethingFinisher
# optional: Add configuration for your PHP
config {
foo = bar
fooCObject = TEXT
fooCObject.value = do something with this text
}
# optional: If file will not be loaded from autoloader, add path and it will be called with require_once
require = fileadmin/femanager/finisher/DoSomethingFinisher.php
}
}
}
Add your php-file again and extend your class with the AbstractFinisher from femanager:
.. code-block:: php
<?php
namespace Vendor\Ext\Finisher;
use In2code\Femanager\Domain\Model\User;
use In2code\Femanager\Finisher\AbstractFinisher;
/**
* Class DoSomethingFinisher
*
* @package Vendor\Ext\Finisher
*/
class DoSomethingFinisher extends AbstractFinisher
{
/**
* @var User
*/
protected $user;
/**
* @var array
*/
protected $configuration;
/**
* @var array
*/
protected $settings;
/**
* Will be called always at first
*
* @return void
*/
public function initializeFinisher()
{
}
/**
* Will be called before myFinisher()
*
* @return void
*/
public function initializeMyFinisher()
{
}
/**
* MyFinisher
*
* @return void
*/
public function myFinisher()
{
// get value from configuration
$foo = $this->configuration['foo'];
// get subject
$subject = $this->getMail()->getSubject();
// ...
}
}
Some notices
^^^^^^^^^^^^
* All methods which are ending with "finisher" will be called - e.g. saveFinisher()
* The method initializeFinisher() will always be called at first
* Every finisher method could have its own initialize method, which will be called before. Like initializeMyFinisher() before myFinisher()
* Classes in extensions (if namespace and filename fits) will be automaticly included from TYPO3 autoloader. If you place a single file in fileadmin, use "require" in TypoScript
* Per default 10 and 20 is already in use from femanager itself (SaveToAnyTableFinisher, SendParametersFinisher) since version 2.0
@@ -0,0 +1,110 @@
.. include:: ../Includes.rst.txt
Features
========
.. only:: html
:ref:`bestpractices` | :ref:`features`
.. _bestpractices:
Best Practices & HowTos
-----------------------
See some features or best practice parts of the extension femanager.
.. toctree::
:maxdepth: 3
:titlesonly:
:glob:
Templates/Index
ShowListUsers/Index
Countryselect/Index
FillEmailAsUsername/Index
NewFields/Index
NewValidators/Index
AutoConfirmation/Index
Finishers/Index
Signals/Index
ResendUserConfirmationRequest/Index
RateLimiter/Index
.. _features:
All Features
------------
Frontend-User Registration
^^^^^^^^^^^^^^^^^^^^^^^^^^
- One step registration with autologin
- Main configuration with Flexform
- User confirmation (Double-Opt In) (optional)
- Administration confirmation (optional)
- Refuse and Silent Refuse
- Fill email field with username (optional)
- Redirect with TypoScript standardWrap (optional)
- Prefill Formfields via TypoScript standardWrap (optional)
- Multiple Validation Possibilities (JavaScript and PHP) (required, email, min, max, intOnly, lettersOnly, unicodeLettersOnly, uniqueInPage, uniqueInDb, mustInclude(number,letter,special), inList(1,2,3))
- Same PHP Methods for JavaScript and PHP Validation
- Simply extend validation methods with your extension
- Override a lot of Email settings with TypoScript if needed
- Set mail attachments or embeded images
- Override field values on every single step (e.g. push user to usergroup1 and if he is ready confimed push him to usergroup2)
- Send user values to a third party software (e.g. a CRM like salesforce)
- Store values in other database tables (e.g. tt_address)
- Add Captcha (sr_freecap) for spam prevention
Edit Profile
^^^^^^^^^^^^
- Main configuration with Flexform
- Administration confirmation for change request (optional)
- Refuse and Silent Refuse
- Fill email field with username (optional)
- Prefill Formfields via TypoScript standardWrap (optional)
- Multiple Validation Possibilities (JavaScript and PHP) (required, email, min, max, intOnly, lettersOnly, unicodeLettersOnly, uniqueInPage, uniqueInDb, mustInclude(number,letter,special), inList(1,2,3))
- Same PHP Methods for JavaScript and PHP Validation
- Simply extend validation methods with your extension
- Override a lot of Email settings with TypoScript if needed
- Set mail attachments or embeded images
- Delete profile with TypoScript redirect
Invitation
^^^^^^^^^^
- Admin could create a new User in Frontend
- The new user receives a mail with a secured link, which leads to a password generation form
- Same validations as in edit and new
- A lot of configuration possibilities with TypoScript
Backend Module
^^^^^^^^^^^^^^
- Fulltext search for fe_users
- Hide and delete of fe_users via AJAX
- Shows Login status
- Logout of a frontend user
General
^^^^^^^
- Logging of every change
- Saltedpasswords support
- List FE-Users in the frontend
- Show a user profile in frontend
- jQuery include must activate via constants (per default no extra jQuery inclusion)
- Show fe_user crdate and tstamp for editors
- Store values in other database tables (e.g. tt_address)
- Save password as md5 or sha1 per default
- HTML with twitter bootstrap classes to reduce integration time
- Image upload with status bar
- Supports static_info_tables
- Extend this extension with new validators or new fields in fe_users (see example in best practice section) or use some SignalSlots
- Extension uses namespaces (so TYPO3 version 6.0 or higher is needed)
@@ -0,0 +1,465 @@
.. include:: ../../Includes.rst.txt
.. _newfields:
Adding new fields to fe_users with your own extension
-----------------------------------------------------
Picture
^^^^^^^
.. image:: ../../Images/femanager_edit2.png
Add new Fields to the Registraion-/Editform
Basics
^^^^^^
- Create a new extension for the new fields
- Create ext_tables.sql and Configuration/TCA/Overrides/fe_users.php for adding one or more new fields to fe_users
- Add TSConfig file to add one or more fields to the field selection in femanager flexform and include it
- Use TypoScript to add your own partials folder and add the templates for your new fields
- Create your own user model with getter/setter for your new fields that extends the user model from femanager
- Override the user model in your ext_localconf.php
See https://github.com/in2code-de/femanagerextended for an example extension how to extend femanager with new fields
and validation methods
Step by Step
^^^^^^^^^^^^
Add new fields to the flexform
""""""""""""""""""""""""""""""
.. image:: ../../Images/femanager_flexform_newfields.png
Extend Fieldselection in Flexform
Add some Page-TSConfig to extend the selection:
.. code-block:: typoscript
tx_femanager {
flexForm {
new {
addFieldOptions {
twitterId = Twitter ID
skypeId = Skype ID
userCategories = User Categories
somethingElse = LLL:EXT:yourextension/Resources/Private/Language/locallang_be.xlf:custom
}
}
edit < tx_femanager.flexForm.new
}
}
Modify the partial folder
"""""""""""""""""""""""""
“twitterId” (see TSConfig) means that femanager searches for a partial TwitterId.html to render the field in the form. So you have to copy the folder EXT:femanager/Resources/Private/Partials (e.g.) to fileadmin/Partials and set the new partial path via TypoScript Constants (see exmple below). In addition you have to add the new Partials files.
.. code-block:: typoscript
plugin.tx_femanager.view.partialRootPaths.100 = EXT:yourextension/Resources/Private/Partials/
Example file fileadmin/Partials/Fields/TwitterId.html:
.. code-block:: html
{namespace femanager=In2code\Femanager\ViewHelpers}
<div class="femanager_fieldset femanager_twitterid form-group">
<label for="femanager_field_twitterid" class="col-sm-2 control-label">
<f:translate key="tx_yourextension_domain_model_user.twitter_id" extensionName="yourextension" />
<f:if condition="{femanager:Validation.IsRequiredField(fieldName:'twitterId')}">
<span>*</span>
</f:if>
</label>
<div class="col-sm-10">
<femanager:form.textfield
id="femanager_field_twitterid"
property="twitterId"
class="form-control"
additionalAttributes="{femanager:Validation.FormValidationData(settings:settings,fieldName:'twitterId')}" />
</div>
</div>
Example file fileadmin/Partials/Fields/UserCategories.html:
.. code-block:: html
<html
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:femanager="http://typo3.org/ns/In2code/Femanager/ViewHelpers"
xmlns:femanagerextended="http://typo3.org/ns/In2code/Femanagerextended/ViewHelpers"
data-namespace-typo3-fluid="true">
<div class="femanager_fieldset femanager_user_categories form-group">
<div class="col-sm-10">
<fieldset>
<f:translate key="tx_femanagerextended_domain_model_user.user_categories" extensionName="femanagerextended" />
<f:if condition="{femanager:Validation.IsRequiredField(fieldName:'user_categories')}">
<span>*</span>
</f:if>
</fieldset>
<f:if condition="{femanager:Validation.IsRequiredField(fieldName:'user_categories')}">
<span>*</span>
</f:if>
<f:for as="category" each="{femanagerextended:form.getCategories(rootCategory:1)}">
<div class="form-check">
<f:form.checkbox property="userCategories" value="{category.uid}" multiple="true" class="form-check-input" />
<label class="form-check-label">{category.title}</label>
</div>
</f:for>
<f:comment>
<f:form.select property="userCategories" options="{femanagerextended:form.getCategories(rootCategory:1)}" optionLabelField="title" multiple="true" class="form-select" />
</f:comment>
</div>
</div>
</html>
ext_tables.sql
""""""""""""""
Example SQL file in your extension which extends fe_users with your new fields:
.. code-block:: sql
CREATE TABLE fe_users (
twitter_id varchar(255) DEFAULT '' NOT NULL,
skype_id varchar(255) DEFAULT '' NOT NULL,
user_categories tinytext DEFAULT '0'
);
Configuration/TCA/Overrides/fe_users.php
""""""""""""""""""""""""""""""""""""""""
Example Configuration/TCA/Overrides/fe_users.php file:
.. code-block:: php
$GLOBALS['TCA']['fe_users']['ctrl']['type'] = 'tx_extbase_type';
$tmpFeUsersColumns = [
'twitter_id' => [
'exclude' => 1,
'label' => 'LLL:EXT:yourextension/Resources/Private/Language/locallang_db.xlf:' .
'tx_yourextension_domain_model_user.twitter_id',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim',
],
],
'skype_id' => [
'exclude' => 1,
'label' => 'LLL:EXT:yourextension/Resources/Private/Language/locallang_db.xlf:' .
'tx_yourextension_domain_model_user.skype_id',
'config' => [
'type' => 'input',
'size' => 30,
'eval' => 'trim',
],
],
'tx_extbase_type' => [
'config' => [
'type' => 'input',
'default' => '0',
],
],
'user_categories' => [
'exclude' => 1,
'label' => 'LLL:EXT:femanagerextended/Resources/Private/Language/locallang_db.xlf:' .
'tx_femanagerextended_domain_model_user.user_categories',
'config' => [
'type' => 'category',
'relationship' => 'oneToMany',
'treeConfig' => [
'startingPoints' => 1,
],
'minitems' => 0,
'maxitems' => 99,
]
],
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users', $tmpFeUsersColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'twitter_id, skype_id');
Own User Model
""""""""""""""
Example Model User.php which extends to the default femanager Model:
.. code-block:: php
namespace In2code\Femanagerextended\Domain\Model;
use TYPO3\CMS\Extbase\Domain\Model\Category;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
class User extends \In2code\Femanager\Domain\Model\User
{
/**
* twitterId
*
* @var string
*/
protected string $twitterId;
/**
* skypeId
*
* @var string
*/
protected string $skypeId;
/**
* @var ObjectStorage<Category>
*/
protected ObjectStorage $userCategories;
public function __construct($username = '', $password = '')
{
parent::__construct($username, $password);
$this->userCategories = new ObjectStorage();
}
/**
* Returns the twitterId
*
* @return string $twitterId
*/
public function getTwitterId(): string
{
return $this->twitterId;
}
/**
* Sets the twitterId
*
* @param string $twitterId
* @return void
*/
public function setTwitterId(string $twitterId): void
{
$this->twitterId = $twitterId;
}
/**
* Returns the skypeId
*
* @return string $skypeId
*/
public function getSkypeId(): string
{
return $this->skypeId;
}
/**
* Sets the skypeId
*
* @param string $skypeId
* @return void
*/
public function setSkypeId(string $skypeId): void
{
$this->skypeId = $skypeId;
}
/**
* @return ObjectStorage
*/
public function getUserCategories(): ObjectStorage
{
return $this->userCategories;
}
/**
* @param ObjectStorage $userCategories
*/
public function setUserCategories(ObjectStorage $userCategories): void
{
$this->userCategories = $userCategories;
}
/**
* @param Category $category
* @return void
*/
public function addUserCategory(Category $category)
{
$this->userCategories->attach($category);
}
/**
* @param Category $category
* @return void
*/
public function removeUserCategory(Category $category)
{
$this->userCategories->detach($category);
}
}
Include model with TYPO3 10.4.x
"""""""""""""""""""""""""""""""
Configuration/Extbase/Persistence/Classes.php:
.. code-block:: php
return [
\YourVendor\YourExtension\Domain\Model\User::class => [
'tableName' => 'fe_users',
'recordType' => 0,
],
];
ext_localconf.php:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Model\User::class] = [
'className' => \YourVendor\YourExtension\Domain\Model\User::class,
];
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)
->registerImplementation(
\In2code\Femanager\Domain\Model\User::class,
\YourVendor\YourExtension\Domain\Model\User::class
);
TypoScript to include Model and override default controller with TYPO3 9.5.x
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.. code-block:: typoscript
config.tx_extbase{
persistence{
classes{
In2code\Femanager\Domain\Model\User {
subclasses {
0 = In2code\Femanagerextended\Domain\Model\User
}
}
In2code\Femanagerextended\Domain\Model\User {
mapping {
tableName = fe_users
recordType = 0
}
}
}
}
objects {
In2code\Femanager\Controller\NewController.className = In2code\Femanagerextended\Controller\NewController
In2code\Femanager\Controller\EditController.className = In2code\Femanagerextended\Controller\EditController
}
}
Own Controller Files with TYPO3 9.5.x
"""""""""""""""""""""""""""""""""""""
EditController.php:
.. code-block:: text
namespace In2code\Femanagerextended\Controller;
class EditController extends \In2code\Femanager\Controller\EditController {
/**
* action update
*
* @param In2code\Femanagerextended\Domain\Model\User $user
* @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
* @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
* @return void
*/
public function updateAction(\In2code\Femanagerextended\Domain\Model\User $user) {
parent::updateAction($user);
}
}
NewController.php:
.. code-block:: text
namespace In2code\Femanagerextended\Controller;
class NewController extends \In2code\Femanager\Controller\NewController {
/**
* action create
*
* @param In2code\Femanagerextended\Domain\Model\User $user
* @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
* @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
* @return void
*/
public function createAction(\In2code\Femanagerextended\Domain\Model\User $user) {
parent::createAction($user);
}
}
**Note:** If there are PHP warnings like “…should be compatible with…“ for PHP7, see discussion and solution:
https://stackoverflow.com/questions/45563671/how-to-extend-femanager-controller-under-php-7/45564378
**or try to change the Controller Files to:**
Own Controller Files with PHP 7.2 / TYPO3 9.5.x
"""""""""""""""""""""""""""""""""""""""""""""""
EditController.php:
.. code-block:: text
namespace In2code\Femanagerextended\Controller;
class EditController extends \In2code\Femanager\Controller\EditController {
/**
* action update
*
* @param In2code\Femanagerextended\Domain\Model\User $user
* @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
* @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
* @return void
*/
public function updateAction($user) {
parent::updateAction($user);
}
}
NewController.php:
.. code-block:: text
namespace In2code\Femanagerextended\Controller;
class NewController extends \In2code\Femanager\Controller\NewController {
/**
* action create
*
* @param In2code\Femanagerextended\Domain\Model\User $user
* @validate $user In2code\Femanager\Domain\Validator\ServersideValidator
* @validate $user In2code\Femanager\Domain\Validator\PasswordValidator
* @return void
*/
public function createAction($user) {
parent::createAction($user);
}
}
@@ -0,0 +1,129 @@
.. include:: ../../Includes.rst.txt
.. _extendvalidators:
Adding own serverside and clientside validation to femanager forms
------------------------------------------------------------------
Picture
^^^^^^^
.. image:: ../../Images/femanager_newfield1.png
Add own clientside (JavaScript) Validation
.. image:: ../../Images/femanager_newfield2.png
Add own serverside (PHP) Validation
Basics
^^^^^^
- Use TypoScript to override ValidationClass of femanager with own classes – this enables your validation methods
- Config the new validation methods via TypoScript
- Add translation labels via TypoScript
.. attention::
The following example works only with TYPO3 Version 10.4 LTS
See https://github.com/einpraegsam/femanagerextended for an example extension how to extend femanager
with new fields and validation methods
Step by Step
^^^^^^^^^^^^
New validation classes
""""""""""""""""""""""
CustomClientsideValidator.php:
.. code-block:: php
namespace YourVendor\YourExtension\Domain\Validator;
class CustomClientsideValidator extends \In2code\Femanager\Domain\Validator\ClientsideValidator
{
/**
* Custom Validator
* Activate via TypoScript - e.g. plugin.tx_femanager.settings.new.validation.username.custom = validationSetting
*
* @param string $value Given value from input field
* @param string $validationSetting TypoScript Setting for this field
* @return bool
*/
protected function validateCustom($value, $validationSetting): bool
{
// check if string has string inside
if (stristr($value, $validationSetting)) {
return true;
}
return false;
}
}
CustomServersideValidator.php:
.. code-block:: php
namespace YourVendor\YourExtension\Domain\Validator;
class CustomServersideValidator extends \In2code\Femanager\Domain\Validator\ServersideValidator
{
/**
* Custom Validator
* Activate via TypoScript - e.g. plugin.tx_femanager.settings.new.validation.username.custom = validationSetting
*
* @param string $value Given value from input field
* @param string $validationSetting TypoScript Setting for this field
* @return bool
*/
protected function validateCustom($value, $validationSetting): bool
{
// check if string has string inside
if (stristr($value, $validationSetting)) {
return true;
}
return false;
}
}
Configure override of ServersideValidator and ClientsideValidator
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ext_localconf.php
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Validator\ServersideValidator::class] = [
'className' => \YourVendor\YourExtension\Domain\Validator\CustomServersideValidator::class,
];
$GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects'][\In2code\Femanager\Domain\Validator\ClientsideValidator::class] = [
'className' => \YourVendor\YourExtension\Domain\Validator\CustomClientsideValidator::class,
];
TypoScript to enable new validation and set labels
""""""""""""""""""""""""""""""""""""""""""""""""""
.. code-block:: typoscript
plugin.tx_femanager {
settings.new.validation {
_enable.client = 1
_enable.server = 1
username {
# Custom Validator - check if value includes "abc"
custom = abc
}
}
_LOCAL_LANG {
default.validationErrorCustom = "abc" is missing
de.validationErrorCustom = "abc" wird erwartet
}
}
@@ -0,0 +1,31 @@
.. include:: ../../Includes.rst.txt
.. _ratelimiter:
Rate Limiter
------------
Basics
^^^^^^
If you want prevent, that your registration forms, you can enable the rate limiter.
Note: The limiter is enabled by default.
TypoScript Settings
^^^^^^^^^^^^^^^^^^^
.. code-block:: typoscript
plugin.tx_femanager {
settings {
ratelimiter {
# Number of seconds for the sliding window rate limiter
timeframe = {$plugin.tx_femanager.settings.ratelimiter.timeframe}
# Request count. How many requests are allowed in the last <timeframe> seconds. Set to 0 to disable rate limiter.
limit = {$plugin.tx_femanager.settings.ratelimiter.limit}
}
}
}
@@ -0,0 +1,54 @@
.. include:: ../../Includes.rst.txt
.. _resendUserConfirmationRequest:
Resend User Confirmation Request
--------------------------------
Introduction
^^^^^^^^^^^^
**Available since 4.2.0**
This feature adds a new view in the backend module to list user, which did not confirm their user accounts. An frontend
user admin is now able to resend the confirmation mail or decline (and delete) the user via backend.
Frontend View
^^^^^^^^^^^^^
An editor can setup a new view "resend confirmation mail". Frontend users, who started their registration process and did
not confirm their email so far, can resend a confirmation mail.
Configuration. Add the plugin "Femanager" to a page and select "resend confirmation mail".
IMPORTANT: If you want to use these new views and you did use femanager version 4.1 or older, you need open existing plugins and save them again, in order to allow the
usage of this views.
.. image:: ../../Images/femanager_plugin3.png
Sometimes unconfirmed users are trying to trigger the confirmation mail again by registering again with the same email or username. They get an error "username / email already existing". Since 4.2, an additional message with a "resend confirmation mail" link is displayed in those cases where the existing user has not yet confirmed his registration.
For this message to be displayed, you need to have the following typoscript setting configured:
::
settings.showResendUserConfirmationRequestView = {your pid}
The pid is the page uid where your "resend confirmation mail" plugin resides.
Backend View
^^^^^^^^^^^^
Lists all frontend users, which did not confirm their email so far. An admin is able, to decline (delete) users or
resend an email with a confirmation link.
.. image:: ../../Images/femanager_backend4.png
To activate the feature add the userTSConfig:
.. code-block:: typoscript
tx_femanager.UserBackend.confirmation.ResendUserConfirmationRequest = 1
@@ -0,0 +1,65 @@
.. include:: ../../Includes.rst.txt
.. _showlistusers:
Show and List Frontend Users
----------------------------
This Feature allows you to display the data of the current user, a selected user by an editor or list user and provide
a detail page.
Caution: Please take care, that you do not disclose information in public environments and be careful, which data you show in the detail view.
Show the current user
^^^^^^^^^^^^^^^^^^^^^
Useful, if you want to show a "read only view" for the current logged in
frontend user.
**Configuration:**
#. Add a femanager plugin to your page
#. choose "detail" view
#. select the tab "Detail" and choose "Logged in FE User"
.. image:: ../../Images/feature-showlistusers-loggedin-user.png
Show a given user
^^^^^^^^^^^^^^^^^
You can provide a list view of all frontend users or frontend users of selected groups
.. image:: ../../Images/feature-showlistusers-loggedin-user1.png
#. Add a femanager plugin to your page
#. choose "detail" view
#. select the tab "Detail" and select your options
.. attention::
If you add this plugin with the selected view, take care, that you do not disclose information in public environments and be careful, which data you show in the detail view.
List Users and provide a detail page
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Add a femanager plugin to your page
#. choose "list" view
#. select the tab "Detail" and choose a frontend user
.. attention::
By combining a list aIf you don't select any frontend user, any users can be displayed by passing the get param &tx_femanager_pi1[user]=XX to the detail page url. Be careful to avoid unwanted information disclosure!
.. image:: ../../Images/feature-showlistusers-loggedin-user2.png
Plugin Options:
* Show Searchfield: You can provide a searchfield, to filter the users
* Limit: Define, how many users are listed per page
* Order by: Choose which field should be used to order the list
* Sorting: Define sort ordering
* Show from usergroup (empty = show all): Select one or more usergroups. If you don't select a group, all frontend users are displayed
@@ -0,0 +1,306 @@
.. include:: ../../Includes.rst.txt
.. _signalslots:
Using SignalSlots (Hook pendant) to extend femanager
----------------------------------------------------
Introduction
^^^^^^^^^^^^
SignalSlots (former Hooks) are the possibility for other developer to extend the runtime of a femanager process with their own code.
As an example let's build an extension which sends username and email address of a new registered user to a defined email address.
Note: this is a little bit useless because there is already a setting in flexform to inform administrators and there is a setting in TypoScript to POST values to a third-party-software, but let's use this case for an example.
SignalSlots List
^^^^^^^^^^^^^^^^
.. t3-field-list-table::
:header-rows: 1
- :File:
File
:Located:
Located in
:Signal:
Signal Name
:Parameters:
Available Parameters
:Description:
Description
- :File:
NewController.php
:Located:
createAction()
:Signal:
createActionBeforePersist
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process before the new user was persisted
- :File:
NewController.php
:Located:
confirmCreateRequestAction()
:Signal:
confirmCreateRequestActionBeforePersist
:Parameters:
$user, $hash, $status, $this
:Description:
Use this signal if you want to hook into the confirmation process
- :File:
NewController.php
:Located:
createAdminConfirmationRequest()
:Signal:
createAdminConfirmationRequestAutoConfirm
:Parameters:
$user, $this
:Description:
Signal if a user was auto-confirmed
- :File:
NewController.php
:Located:
createAdminConfirmationRequest()
:Signal:
createAdminConfirmationRequestManualConfirmation
:Parameters:
$user, $this
:Description:
Signal if a user was not auto-confirmed and must be confirmed manually
- :File:
EditController.php
:Located:
updateAction()
:Signal:
updateActionBeforePersist
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process before the user- profile was updated
- :File:
EditController.php
:Located:
confirmUpdateRequestAction()
:Signal:
confirmUpdateRequestActionAfterPersist
:Parameters:
$user, $hash, $status, $this
:Description:
Use this signal if you want to hook after a profile was accepted or refused
- :File:
EditController.php
:Located:
deleteAction()
:Signal:
deleteAction
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process before the user- profile will be deleted
- :File:
InvitationController.php
:Located:
createAction()
:Signal:
confirmUpdateRequestActionBeforePersist
:Parameters:
$user, $hash, $status, $this
:Description:
Use this signal if you want to hook into the process before a new user was persisted
- :File:
InvitationController.php
:Located:
createAllConfirmed()
:Signal:
createAllConfirmedAfterPersist
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process after a new user was persisted
- :File:
InvitationController.php
:Located:
editAction()
:Signal:
editActionAfterPersist
:Parameters:
$user, $hash, $this
:Description:
Use this signal if you want to hook into the process before a user adds a new password (step 1)
- :File:
InvitationController.php
:Located:
updateAction()
:Signal:
updateActionAfterPersist
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process after a user adds a new password (step 2)
- :File:
UserController.php
:Located:
loginAsAction()
:Signal:
loginAsAction
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process after you simulate a frontend user login
- :File:
UserBackendController.php
:Located:
confirmUserAction()
:Signal:
confirmUserAction
:Parameters:
$user, $this
:Description:
Signal if a user profile was confirmed in backend module
- :File:
UserBackendController.php
:Located:
refuseUserAction()
:Signal:
refuseUserAction
:Parameters:
$user, $this
:Description:
Signal if a user profile was refused in backend module
- :File:
AbstractController.php
:Located:
finalCreate()
:Signal:
finalCreateAfterPersist
:Parameters:
$user, $action, $this
:Description:
Use this signal if you want to hook into the process after the new user was persisted
- :File:
AbstractController.php
:Located:
updateAllConfirmed()
:Signal:
updateAllConfirmedAfterPersist
:Parameters:
$user, $this
:Description:
Use this signal if you want to hook into the process after the new user was persisted
- :File:
?
:Located:
?
:Signal:
?
:Parameters:
?
:Description:
Do you need a new Signal in femanager? Just request one on https://github.com/in2code-de/femanager
Use a SignalSlot
^^^^^^^^^^^^^^^^
Introduction
""""""""""""
As described before, we want to send an email to a defined address every time when a new user is registered.
Creating an extension
"""""""""""""""""""""
femanagersignalslot/ext_emconf.php:
This file is important to install your new extension – write something like:
.. code-block:: php
<?php
$EM_CONF[$_EXTKEY] = array(
'title' => 'femanagersignalslot',
'description' => 'signalslotexample for femanager',
'state' => 'alpha',
'version' => '0.0.1',
'constraints' => array(
'depends' => array(
'extbase' => '6.0.0-6.1.99',
'fluid' => '6.0.0-6.1.99',
'typo3' => '6.0.0-6.1.99',
'femanager' => '1.0.0-1.0.99',
),
'conflicts' => array(
),
'suggests' => array(
),
),
);
file:`femanagersignalslot/ext_localconf.php`:
This is an example how to use a signal from femanager – in this case we decided to use the signal “createActionBeforePersist” in class “In2codeFemanagerControllerNewController” and want to call a slot in class “In2codeFemanagersignalslotDomainServiceSendMailService” with methodname “send()”
.. code-block:: php
<?php
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher');
$signalSlotDispatcher->connect(
'In2code\Femanager\Controller\NewController',
'createActionBeforePersist',
'In2code\Femanagersignalslot\Domain\Service\SendMailService',
'send',
FALSE
);
femanagersignalslot/Classes/Domain/Service/SendMailService.php:
This is our main class which is called every time a new registration process was initiated.
.. code-block:: php
<?php
namespace In2code\Femanagersignalslot\Domain\Service;
class SendMailService
{
/**
* Send mail about user information
*
* @param \In2code\Femanager\Domain\Model\User $user
* @param \In2code\Femanager\Controller\NewController $pObj
* @return void
*/
public function send($user, $pObj)
{
$message = '
New user registered
Username: ' . $user->getUsername() . '
Email: ' . $user->getEmail() . '
';
mail('your@email.com', 'SignalSlot Test', $message);
}
}
@@ -0,0 +1,68 @@
.. include:: ../../Includes.rst.txt
.. _changetemplates:
Use own HTML Templates
----------------------
Basics
^^^^^^
If you want to modify a HTML-File of femanager, you should not overwrite them directly in the extension folder.
Think about upcoming versions with important bugfixes or security-patches.
There are two ways to use own HTML-Templates (and Partials / Layouts) instead of the original Templates.
Replace all HTML Templates from Femanager with own Templates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can copy all Files from
- EXT:femanager/Resources/Private/Templates/
- EXT:femanager/Resources/Private/Partials/
- EXT:femanager/Resources/Private/Layouts/
to a new folder in fileadmin - e.g. fileadmin/templates/femanager/ and modify them as you want.
After that, you should say femanager to use the new Templates with some lines of TypoScript setup:
.. code-block:: typoscript
plugin.tx_femanager {
view {
templateRootPath = fileadmin/templates/femanager/Templates/
partialRootPath = fileadmin/templates/femanager/Partials/
layoutRootPath = fileadmin/templates/femanager/Layouts/
}
}
Replace single HTML Template-Files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can copy only the Files that you want to modify from
- EXT:femanager/Resources/Private/Templates/
- EXT:femanager/Resources/Private/Partials/
- EXT:femanager/Resources/Private/Layouts/
to a new folder in fileadmin - e.g. fileadmin/templates/femanager/ and modify them as you want.
After that, you should say femanager to use the old folders and merge them with the new folders
.. code-block:: typoscript
plugin.tx_femanager {
view {
templateRootPath >
templateRootPaths {
10 = EXT:femanager/Resources/Private/Templates/
20 = fileadmin/templates/femanager/Templates/
}
partialRootPath >
partialRootPaths {
10 = EXT:femanager/Resources/Private/Partials/
20 = fileadmin/templates/femanager/Partials/
}
layoutRootPath >
layoutRootPaths {
10 = EXT:femanager/Resources/Private/Layouts/
20 = fileadmin/templates/femanager/Layouts/
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@@ -0,0 +1 @@
.. You can put central messages to display on all pages here
@@ -0,0 +1,67 @@
.. include:: Includes.rst.txt
=========
femanager
=========
Femanager is a TYPO3 extension for a modern Frontend-User registration and profile management.
.. only:: html
:Copyright:
2013 - 2024
:Classification:
femanager
:Version:
7.4.0
:Language:
en
:Keywords:
frontend, user, registration, frontend, profile, sr_feuser_register
:Author:
Alex Kellner, Stefan Busemann
:Email:
service@in2code.de
Table of Contents
=================
.. toctree::
:maxdepth: 3
:titlesonly:
:glob:
Introduction/Index
Installation/Index
Upgrade/Index
Features/Index
FAQ/Index
Changelog/Index
.. Meta Menu
.. toctree::
:hidden:
Sitemap
Additional Links
================
You can use one of the following links, to get more informations about this plugin:
- All information about femanager developing, the developers behind femanager, etc...: https://github.com/in2code-de/femanager
- femanager is powered by https://www.in2code.de
- Do you need help from the community:
- Slack channel #ext-femanager: https://typo3.slack.com/messages/C0NAHDRJB/
Known Issues
=============
* Resend confirmation in Backend Module is broken in V7
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,47 @@
.. |create1| image:: ../Images/femanager_create1.png
.. :align: left
.. :border: 0
.. :name: create1
.. :vspace: 20
.. |create2| image:: ../Images/femanager_create2.png
.. :align: left
.. :border: 0
.. :name: create2
.. :vspace: 20
.. |create3| image:: ../Images/femanager_create3.png
.. :align: left
.. :border: 0
.. :name: create3
.. :vspace: 20
.. |edit1| image:: ../Images/femanager_edit1.png
.. :align: left
.. :border: 0
.. :name: edit1
.. :vspace: 20
.. |edit2| image:: ../Images/femanager_edit2.png
.. :align: left
.. :border: 0
.. :name: edit2
.. :vspace: 20
.. |backend1| image:: ../Images/femanager_backend1.png
.. :align: left
.. :border: 0
.. :name: backend1
.. :vspace: 20
.. |backend2| image:: ../Images/femanager_backend2.png
.. :align: left
.. :border: 0
.. :name: backend2
.. :vspace: 20
.. |backend3| image:: ../Images/femanager_backend3.png
.. :align: left
.. :border: 0
.. :name: backend3
.. :vspace: 20
@@ -0,0 +1,44 @@
.. include:: ../Includes.rst.txt
.. include:: Images.txt
.. _introduction:
Introduction
============
.. only:: html
:ref:`what` | :ref:`requirements` | :ref:`suggests` |
.. _what:
What does it do?
----------------
Femanager is an extension for a TYPO3 Frontend-User Registration.
Maybe you know sr_feuser_register but you want to use a more modern extension, give femanager a try.
This extension basicly brings an easy-to-use frontend-user-registration with a profile manager to your system.
In addition femanager was developed to be very flexible and to bring a lot of features out of the box.
Note: Login and a *I forgot my password* function is part of the core and not part of femanager.
.. _requirements:
Requirements
------------
- TYPO3 11.5 LTS
- Extbase / Fluid
- Best use with jQuery and bootstrap
.. _suggests:
Suggestions
-----------
- static_info_tables (to show localized countryselection)
- sr_freecap (captcha for a spam prevention)
@@ -0,0 +1,9 @@
:template: sitemap.html
.. include:: /Includes.rst.txt
=======
Sitemap
=======
.. The sitemap.html template will insert here the page tree automatically.
@@ -0,0 +1,150 @@
.. include:: ../Includes.rst.txt
.. _upgrade:
Upgrade
=======
:ref:`v7.1` | :ref:`v6.0` | :ref:`v5.2` | :ref:`v5.0` | :ref:`v4.0`
.. _v7.1:
to version 7.1.0
----------------
**Invitation Template**
If you are using customized templates for the invitation function, please check the Resources/Private/Templates/Invitation/Edit.html
You need to add
.. code-block:: html
<f:form.hidden name="hash" value="{hash}"/>
in order,that the function is working.
.. _v6.0:
to version 6.0.0
----------------
Version 6.0 support TYPO3 9 LTS and 10 LTS. The support for TYPO3 8 was dropped. No changes on Templates are needed.
**Backend Module "Frontend User" - View User Confirmation**
If you want to use the Backend Module to confirm or refuse Frontend User, you need to setup the configPID. The extension
uses now a frontend call out of the backend, to organise these actions.
.. code-block:: text
module.tx_femanager {
settings {
configPID = 1
}
}
.. _v5.2:
to version 5.2.0
----------------
The edit template has to be adjusted, as there is a new parameter 'token' is introduced.
Please update these partials:
:file:`/Partials/Misc/DeleteLink.html`
The argument token was introduced :php:`(token:token)`
**old:**
.. code-block:: html
<f:link.action
action="delete"
arguments="{user:user}"
class="btn btn-warning btn-large"
additionalAttributes="{data-confirm:'{f:translate(key:\'UserDeleteConfirmation\')}'}">
<i class="icon-trash icon-white"></i>
<f:translate key="deleteProfile" />
</f:link.action>
**new:**
.. code-block:: html
<f:link.action
action="delete"
arguments="{user:user, token:token}"
class="btn btn-warning btn-large"
additionalAttributes="{data-confirm:'{f:translate(key:\'UserDeleteConfirmation\')}'}">
<i class="icon-trash icon-white"></i>
<f:translate key="deleteProfile" />
</f:link.action>
:file:`/Templates/Edit/Edit.html`
You need to add: :php:`<f:form.hidden name="token" value="{token}" />` between the form tag.
Example:
.. code-block:: html
<f:form
name="user"
object="{user}"
action="update"
enctype="multipart/form-data"
additionalAttributes="{data-femanager-plugin:data.uid}"
class="form-horizontal {f:if(condition:'{settings.edit.validation._enable.client}',then:'feManagerValidation',else:'')}">
<fieldset>
<legend>
<f:translate key="titleUpdateProfile" />
</legend>
<f:form.hidden name="token" value="{token}" />
more stuff here in the template file…
</f:form>
.. _v5.0:
to version 5
------------
There are minor breaking changes include. Main change is, that all eid scripts were replace, by a page num approach.
In order that the js validation works, you need to take care, that you these page typenums are available:
1. Backend Module: Login as User feature
::
feManagerLoginAs.typeNum = 1548943013
see the complete config in file ext_typoscript_setup.txt
2. Frontend Validation via JS
::
feManagerLoginAs.typeNum = 1548935210
see the complete config in file Configuration/TypoScript/setup.ext
.. _v4.0:
to version 4.2.3 / 4.2.4 / 4.2.5
--------------------------------
If you use your own HTML templates of new/edit/invitation-templates you should compare them with the one from
EXT:femanager. There is a new additional attribute inside the form viewhelper: data-femanager-plugin, which contains
the content element id.
If you use a modified version of the Validation.js, there are also changes: plugin and action parameter is send to
the eID-Script now
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<guides xmlns="https://www.phpdoc.org/guides"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.phpdoc.org/guides ../vendor/phpdocumentor/guides-cli/resources/schema/guides.xsd"
links-are-relative="true">
<extension class="\T3Docs\Typo3DocsTheme\DependencyInjection\Typo3DocsThemeExtension"
project-home="https://github.com/in2code-de/femanager"
project-contact="mailto:service@in2code.de"
project-repository="https://github.com/in2code-de/femanager"
project-issues="https://github.com/in2code-de/femanager/issues"
edit-on-github-branch="master"
edit-on-github="in2code-de/femanager"
typo3-core-preferred="stable"
interlink-shortcode="in2code/femanager"
/>
<project title="Femanager"
release="main"
version="7"
copyright="since 2013 by the in2code GmbH"
/>
<inventory id="t3coreapi"
url="https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/"
/>
<inventory id="t3tca"
url="https://docs.typo3.org/m/typo3/reference-tca/master/en-us/"
/>
<inventory id="t3tsref"
url="https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/"
/>
</guides>