Agency Registration 

An improved variant of Kasper Skårhøj’s Front End User Admin extension.

Installation 

Explains how to install this extension in Composer-based and Classic TYPO3 installations.

Configuration 

Learn how to include the site set jambagecom/agency-default-plugin-set and how to use settings to configure this extension.

Frequently Asked Questions (FAQ) 

These questions have been frequently asked.

How to get help 

Learn where to get help and how to report issues you found.

Introduction 

What does it do? 

The Agency Registration plugin is an improved variant of Kasper Skårhøj's Front End User Admin extension. The German translation is 'Büro Anmeldung'. The Agency Registration extension features include:

  • Use of standard TYPO3 facilities and tools: localization, alternate languages, character sets (utf-8 by default), TypoLink URLs, constant editor, default CSS in TypoScript setup;
  • Use of country codes, country subdivision codes and language codes of the Static Info Tables;
  • Addition of the following fields: gender, status, date of birth, comments, cnum (customer number), terms acknowledged and usergroup;
  • Compatibility with extension “Mail” 3.0 in the use of field 'Receive HTML emails?' (mail_html) and of “Systeml Categories” (categories);
  • Sending HTML emails;
  • Optional attachment to HTML confirmation emails;
  • Optional use of email address as username;
  • Optional selection of user group on registration;
  • Optional administrative review process for approval of registrations;
  • User upload and maintenance of a set of images;
  • Validation of the user's Internet site URL;
  • Switching salutation mode;
  • Sending an invitation to register;
  • Compatibility with salted passwords (saltedpasswords) and RSA authentication (rsaauth);
  • CSS-styled XHTML 1.0 Strict template;
  • Seven optional hooks;
  • Compatibility with Doctrine.
  • status report to check for possible problems with the installation of the extension (required extensions)

Requirements 

Agency Registration (extension key: agency) requires TYPO3 13+ and PHP 8.2+.

Configuration 

Include the site set 

This extension comes with a site set called jambagecom/agency-default-plugin-set. To use it include this set in your site configuration via

config/sites/my-site/config.yaml (diff)
 base: 'https://example.com/'
 rootPageId: 1
+dependencies:
+  - jambagecom/agency-default-plugin-set
Copied!

See also: TYPO3 Explained, Using a site set as dependency in a site.

Configuration 

Configuration steps 

These are the steps to configuring the Agency Registration extension:

#. Install the extension using the Extension Manager. If not already installed, it is recommended that you install the extensions Frontend Login for Website Users (felogin), Salted user password hashes (saltedpasswords), RSA authentication for TYPO3 (rsaauth). And it is required that you install Static Info Tables (static_info_tables) 2.3.0+ and Static Methods since 2007 (div2007) 1.0.3+. If you want to use the fields of Mail, e.g. the checkbox to send HTML emails, then you must install Mail. Make sure to add the table fields for Mail. You can deinstall Mail afterwards.. #. Using the TYPO3 Install Tool, frontend (FE) login security level should be configured to 'normal', if using an SSL connection, or to 'rsa' otherwise. When frontend (FE) login security level is configured to 'rsa', the page cannot contain multiple registration/login forms (see: http://forge.typo3.org/issues/34568). #. The extension always uses character set utf-8 by default. #. Use the status report in Admin Tools->Reports (TYPO3 4.6+ only) to check for possible problems with the installation of the extension (required and conflicting extensions, login security level, salted passwords enablement). #. Add the following static template to your TypoScript template: 'Agency Registration'. #. Create a folder page that will contain the records of front end users. Set the TS template constant pid to the page id of this folder. In the folder, create two Front End User Groups. Set the TS template constant userGroupUponRegistration to the uid of the first group and constant userGroupAfterConfirmation to the uid of the second group. The second group gives access to the pages targeted at the registered front end users, while the first group does not. If you use the generation of the user group from an XML file then the user groups will be filled in from uid values in the setfixed setup array. #. Insert the login box plugin on any page. Then, on the same page, after the login box, insert the Agency Registration extension, using the default (DE: 'normal') display mode, but setting the Record Storage Page to the folder that will contain the front end user records. Set the TS template constant loginPID to the page id of this page. #. Create a second page after the previous one and set the access general options to “Hide at login”. Insert the Agency Registration extension, setting the display mode to Create (DE: 'Anlegen'), and the Record Storage Page to the folder that will contain the front end user records. Note that the access restriction should be set on the page, not on the content elements. Set the TS template constant registerPID to the page id of this page. #. Create a third page limiting access to this page to the second user group you created. Insert the Agency extension, setting the display mode to Edit, and the Record Storage Page to the folder that will contain the front end user records. Note that the access restriction should be set on the page, not on the content elements. Set the TS template constant editPID to the page id of this page. #. Create a fourth page and click the checkbox “Hide in menu”. Insert the Agency Registration plugin, using the Default display mode and setting the Record Storage Page to the folder that will contain the front end user records. Note that no access restriction should be set on this page, because otherwise unregistered users cannot see the confirmation page, and they cannot click on the confirmation link. Set the TS template constant confirmPID to the page id of this page. #. Decide which fields you want included on the registration form and, among those, which ones you want to be required in order to register. Set TS template constants formFields and requiredFields. #. Review the extension constants described below. All these properties may be conveniently edited using the Constant Editor TS template tool. If you do not use the Constant Editor to configure the extension, please note the form of the constants assignments in the constants section of your TS template: typoscript:plugin.tx_agency.property = value or if you assign multiple values:

constants example
plugin.tx_agency {
   property = value
   ...
}
Copied!
  1. TypoScript Setup:

.. code-block:: php :caption: EXT:my_extension/ext_localconf.php

config {
sys_language_uid = 0 language = de locale_all = german typolinkLinkAccessRestrictedPages = NONE

}

Setting an image upload folder compatible with front end login for website users 

The path of the image upload folder used by the Agency Registration extension may be set in the installation dialog. The default value is uploads/tx_agency. A popular alternative in many configurations is uploads/pics. The Agency Registration extension will update the TCA of the fe_users table. Therefore, the back end forms will use the specified path. It is also possible to show the user image in the user listing produced by the front end login for website users.

Configure the extension to use the email address as user name 

  1. Use the Constant editor to set the constant useEmailAsUsername to 1;
  2. You may want to change the relative position of the email field in the following subparts of the HTML template: ###TEMPLATE_CREATE###, ###TEMPLATE_INVITE### and ###TEMPLATE_EDIT###.

Note that if you have set constant enableEmailConfirmation, the email field will not appear on the editing form because no confirmation request is sent when the email address is modified. Also in tt_products the email addresses are used as user names.

Make the user name changeable 

Use the following setup. Example:

Enable username modifications
plugin.tx_agency {
	edit {
		overrideValues {
			username >
		}
	}
}
Copied!

automatic generation of the customer number 

Generation of the customer number
plugin.tx_agency {
  create {
     generateCustomerNumber = 1
     generateCustomerNumber {
        prefix = No-
     }
  }
}
Copied!

Activate the privacy policy check 

Setup: 

Activation of privacy policy check
plugin.tx_agency {
  privacyPolicyUrl = 28

  create {
     fields =  first_name, last_name, password, hidden, email, mail_html, privacy_policy_acknowledged
  }
}
Copied!

Alternative in Constants: 

Activation of privacy policy check in Constants
plugin.tx_agency {

    formFields := addToList(privacy_policy_acknowledged)
}
Copied!

Language Labels: 

Language Labels for Privacy Policy
plugin.tx_agency._LOCAL_LANG {
  de {
     click_here_to_edit = Benutzerdaten bearbeiten
     privacy_policy_acknowledged = Ich bestätige, dass ich die Datenschutzbestimmung gelesen habe und dieser zustimme.
     privacy_policy_acknowledged_2 = Ich bestätige für alle Daten, die ich auf dieser Webseite eingebe, dass Sie diese gemäß den Datenschutzbestimmungen verwenden dürfen.
     privacy_policy_hint = Hinweis
     privacy_policy_hint_1 = Sie haben das Recht diese Zustimmung zu einem späteren Zeitpunkt per E-Mail zu widerrufen.
     click_here_to_see_privacy_policy = Hier klicken um die Datenschutzbestimmung zu lesen.
  }
}
Copied!

Extension Configuration Variables 

The Extension Manager installation dialog allows you to set the following extension configuration variables:

  • image upload folder: this is the name of the upload folder for images uploaded by front end users. The default value is fileadmin/user_upload . In some configurations, you may prefer to set it to uploads/tx_agency . Changes will update the TCA-definition of the image column of the fe_users table;
  • Maximum image size: this is the maximum size in kBytes an image may be to be uploaded by front end users. The default value is 500 – changes will update the TCA-definition of the image column of the fe_users table;
  • Allowed image types: this is the list of accepted file extensions for uploaded images. The default value is png, jpg, jpeg, gif, tif, tiff . Changes will update the TCA-definition of the image column of the fe_users table.
  • Gender is set by default: This will force the gender to be set to 0 for male and 1 for female. If set no undefined gender is allowed. The default value is 0 .
  • Endtime Year: Enter the year for the endtime field. Some Microsoft Windows systems are limited to 2038 for the PHP function mktime. The default value is 2030 .

Front End Rendering 

HTML Template 

The default HTML template provided with the plugin is: EXT:agency/template/agency_css_tmpl.html

CSS Styles 

Default CSS styles are defined in TS template setup field of static template FE User Registration CSS-styled. As usual, the default CSS styles may be modified and moved to a .css file. In such a case , the location of the file should be specified by an import rule overriding the default TS template setup: plugin.tx_agency._CSS_DEFAULT_STYLE = @import url("fileadmin/styles/some_style_sheet_file.css");

Alternatively, the selectors may be moved to some site-wide style sheet file and the default styles may be nullified: plugin.tx_agency._CSS_DEFAULT_STYLE >

HTML Template Markers 

The following is the list of global and main subparts markers used in the example HTML template.

Global markers: 

Marker Description
CHARSET config.metaCharset or iso-8859-1

Main subpart markers: 

  • TEMPLATE_CREATE
    initial registration form
  • TEMPLATE_CREATE_PREVIEW
    (optional) registration preview form
  • TEMPLATE_CREATE_SAVED
    when email confirmation request is disabled, confirmation that the account was created
  • TEMPLATE_CREATE_SAVED_REVIEW
    when email confirmation request is disabled, but administrative review is enabled,
    confirmation that the account was created and an administrative review is required
  • TEMPLATE_SETFIXED_CREATE
    when email confirmation request is enabled and administrative review is disabled,
    confirmation that the account was created but that an email is being sent to the user to complete the registration process
  • TEMPLATE_SETFIXED_CREATE_REVIEW
    when administrative review is enabled, confirmation that the account was created, but that an email is being sent to the user to complete the registration process
  • TEMPLATE_INVITE
    initial account creation form in the case of an invitation
  • TEMPLATE_INVITE_PREVIEW
    (recommended) account creation preview form, in the case of an invitation
  • TEMPLATE_SETFIXED_INVITE
    confirmation that an account was created and that an invitation email has been sent to the user to complete the registration process or decline the invitation
  • TEMPLATE_INFOMAIL
    screen that allows the subscriber to request links to be sent to his email address so
    that he(she) may update or terminate his(her) subscription
  • TEMPLATE_INFOMAIL_SENT
    confirmation that the “infomail” message is being sent to the subscriber
  • TEMPLATE_SETFIXED_OK_APPROVE_INVITE
    password update form when the invited person accepts the invitation
  • TEMPLATE_EDIT
    account or profile editing form
  • TEMPLATE_EDIT_PREVIEW
    (optional) editing preview form
  • TEMPLATE_EDIT_SAVED
    confirmation that the account was updated
  • TEMPLATE_DELETE_PREVIEW
    deletion confirmation form
  • TEMPLATE_DELETE_SAVED
    confirmation that the account was deleted
  • TEMPLATE_SETFIXED_OK
    when administrative review is disabled, confirmation that the registration process was completed
  • TEMPLATE_SETFIXED_OK_APPROVE_REVIEW
    when administrative review is enabled, confirmation that the registration was completed,
    but that the registration must be accepted by the site administrator
  • TEMPLATE_SETFIXED_OK_ACCEPT
    when administrative review is enabled, response page when the administrator accepts
    the account registration
  • TEMPLATE_SETFIXED_OK_ENTER
    when administrative review is enabled, response page when the user clicks on the link
    in the acceptation email (without auto-login)
  • TEMPLATE_SETFIXED_OK_REFUSE
    when administrative review is enabled, response page when the administrator refuse the account registration
  • TEMPLATE_SETFIXED_OK_DELETE
    confirmation that the registration process was canceled
  • TEMPLATE_SETFIXED_OK_UNSUBSCRIBE
    response page when a user was unsubscribed by following a link of a mailing application
  • TEMPLATE_SETFIXED_FAILED
    message when the registration or cancellation process could not be completed
  • TEMPLATE_SETFIXED_LOGIN_FAILED
    message when the autologin process ends up in an error
  • TEMPLATE_AUTH
    link to the registration form
  • TEMPLATE_NO_PERMISSIONS
    message when some illegal access is attempted
  • EMAIL_TEMPLATE_CREATE_SAVED_HTML
    when email confirmation request is disabled, HTML message sent to the user when he has
    created an account
  • EMAIL_TEMPLATE_CREATE_SAVED
    when email confirmation request is disabled, plain text message sent to the user when
    he has created an account
  • EMAIL_TEMPLATE_CREATE_SAVED_ADMIN
    when email confirmation request is disabled,
    plain text notification sent to the site administrator when a user has created an account0
  • EMAIL_TEMPLATE_EDIT_SAVED_HTML
    the HTML message sent to the user when he has updated his account
  • EMAIL_TEMPLATE_EDIT_SAVED
    plain text message sent to the user when he has updated his account
  • EMAIL_TEMPLATE_EDIT_SAVED_ADMIN
    plain text notification sent to the site administrator when a user has updated his account
  • EMAIL_TEMPLATE_SETFIXED_CREATE_HTML
    when email confirmation request is enabled and administrative review is disabled, HTML
    message sent to the user when he has created an account and needs to confirm it
  • EMAIL_TEMPLATE_SETFIXED_CREATE
    when email confirmation request is enabled and administrative review is disabled, plain
    text message sent to the user when he has created an account and needs to confirm it
  • EMAIL_TEMPLATE_SETFIXED_CREATE_ADMIN
    when email confirmation request is enabled and administrative review is disabled, plain text notification sent to the site administrator when a user has created an account and needs to confirm it
  • EMAIL_TEMPLATE_SETFIXED_CREATE_REVIEW_HTML
    when administrative review is enabled, HTML message sent to the user when he has created
    and he needs to confirm his registration, and administrative review will be required
  • EMAIL_TEMPLATE_SETFIXED_CREATE_REVIEW
    when administrative review is enabled, plain text message sent to the user when he has
    created and he needs to confirm it, and administrative review will be required
  • EMAIL_TEMPLATE_SETFIXED_CREATE_REVIEW_ADMIN
    when administrative review is enabled, plain text notification sent to the site
    administrator when a user has created an account and needs to confirm it
  • EMAIL_TEMPLATE_SETFIXED_REVIEW_ADMIN_HTML
    when administrative review is enabled, template for the HTML message sent to the site
    administrator when a user has approved it and a decision to accept or refuse the registration is required
  • EMAIL_TEMPLATE_SETFIXED_REVIEW_ADMIN
    when administrative review is enabled, plain text message sent to the site administrator
    when a user has approved it and a decision to accept or refuse the registration is required
  • EMAIL_TEMPLATE_SETFIXED_INVITE_HTML
    HTML invitation message sent to a person for whom an account has been created and requesting the invitation be accepted to confirm registration, or to decline the invitation
  • EMAIL_TEMPLATE_SETFIXED_INVITE
    plain text invitation message sent to a person for whom an account has been created and
    requesting the invitation be accepted to confirm it, or to decline the invitation
  • EMAIL_TEMPLATE_SETFIXED_INVITE_ADMIN
    plain text notification sent to the site administrator when an invitation to register has
    been sent and the invited person needs to confirm his/her registration
  • EMAIL_TEMPLATE_SETFIXED_APPROVE_HTML
    when email confirmation request is enabled and administrative review is disabled, HTML
    message sent to the user when he has confirmed the registration
  • EMAIL_TEMPLATE_SETFIXED_APPROVE
    when email confirmation request is enabled and administrative review is disabled, plain
    text message sent to the user when he has confirmed it
  • EMAIL_TEMPLATE_SETFIXED_APPROVE_ADMIN
    when email confirmation request is enabled and administrative review is disabled, plain text notification sent to the site administrator when a user has confirm it
  • EMAIL_TEMPLATE_SETFIXED_APPROVE_REVIEW_HTML
    when administrative review is enabled, template for the HTML message sent to the user
    when he has confirmed the registration
  • EMAIL_TEMPLATE_SETFIXED_APPROVE_REVIEW
    when administrative review is enabled, plain text message sent to the user when he has confirmed the registration.
  • EMAIL_TEMPLATE_SETFIXED_APPROVE_REVIEW_ADMIN
    when administrative review is enabled, plain text notification sent to the site
    administrator when a user has confirmed his registration.
  • EMAIL_TEMPLATE_SETFIXED_ACCEPT_HTML
    when administrative review is enabled, HTML welcome message sent to the user when the registration was accepted
  • EMAIL_TEMPLATE_SETFIXED_ACCEPT
    when administrative review is enabled, plain text welcome message sent to the user
    when the registration was accepted
  • EMAIL_TEMPLATE_SETFIXED_ACCEPT_ADMIN
    when administrative review is enabled, plain text notification sent to the site
    administrator when a registration was accepted
  • EMAIL_TEMPLATE_SETFIXED_REFUSE_HTML
    when administrative review is enabled, HTML message sent to the user when the registration was refused
  • EMAIL_TEMPLATE_SETFIXED_REFUSE
    when administrative review is enabled, plain text message sent to the user when the registration was refused.
  • EMAIL_TEMPLATE_SETFIXED_REFUSE_ADMIN
    when administrative review is enabled, plain text notification sent to the site administrator when a registration was refused
  • EMAIL_TEMPLATE_SETFIXED_DELETE_HTML
    HTML message sent to the user when he has canceled his registration
  • EMAIL_TEMPLATE_SETFIXED_DELETE
    plain text message sent to the user when he has canceled his registration
  • EMAIL_TEMPLATE_SETFIXED_DELETE_ADMIN
    plain text notification sent to the site administrator when a user has canceled his registration.
  • EMAIL_TEMPLATE_INFOMAIL_HTML
    HTML message sent to the subscriber when he wants to update or terminate his subscription (tt_address)
  • EMAIL_TEMPLATE_INFOMAIL
    plain text message sent to the subscriber when he wants to update or terminate his subscription (tt_address).
  • EMAIL_TEMPLATE_INFOMAIL_NORECORD_HTML
    HTML message sent to the subscriber when no record with his email was found
  • EMAIL_TEMPLATE_INFOMAIL_NORECORD
    plain text message sent to the subscriber when no record with his email was found
  • EMAIL_TEMPLATE_DELETE_SAVED_HTML
    the HTML message sent to the user when he has deleted his account
  • EMAIL_TEMPLATE_DELETE_SAVED
    plain text message sent to the user when he has deleted his account
  • EMAIL_TEMPLATE_DELETE_SAVED_ADMIN
    plain text notification sent to the site administrator when a user has deleted his account
  • EMAIL_TEMPLATE_SETFIXED_UNSUBSCRIBE_HTML
    HTML message sent to the user to confirm that he/she was unsubscribed, but that his account is still active
  • EMAIL_TEMPLATE_SETFIXED_UNSUBSCRIBE
    plain text message sent to the user to confirm that he/she was unsubscribed, but that his account is still active
  • EMAIL_TEMPLATE_SETFIXED_PASSWORD_HTML
    HTML message sent to the user who has forgotten his password to create a new password for his account (fe_users)
  • EMAIL_TEMPLATE_SETFIXED_PASSWORD
    plain text message sent to the user who has forgotten his password to create a new password for his account (fe_users)

Localization 

Language files 

The main language file is Resources/Private/Language/locallang.xlf. See Translation files (XLIFF format) .

Use the TYPO3 back end to install the available translations.

Activate languages 

You must activate your languages for TYPO3.

See languages .

Adapting labels 

You can adapt the labels in the extension file Resources/Private/Language/locallang.xlf to to your needs and languages. Any label may be overridden by inserting the appropriate assignment in your TS template setup: plugin.tx_agency._LOCAL_LANG.languageCode.labelName = overridingValue

You can find the name of the label (languageCode) you want to modify (or translate) by inspecting this file.

Overriding labels specified in TCA 

You may also override by the same method labels from other files when they are referenced by the TCA definition of a field (see the tutorial section on adding fields to the registration form). This is done as follows:

plugin.tx_agency._LOCAL_LANG.languageCode.tableName.fieldName = overridingValue

Switching salutation mode 

You may also switch the salutation mode used in these labels when this is relevant for the language being used and when the labels are either available in the file Resources/Private/Language/locallang.xlf or provided by TypoScript setup. See the TypoScript Reference section.

v_dear_male or v_dear_female markers will be used instead of v_dear if a gender has been entered by the user.

Localization of user group title 

This extension adds the table fe_groups_language_overlay in order to allow localization of the user group title.

en_US localization 

If the language is set to en_US in the site configuration for languages, labels localized to US English will be used in the front end. If not available, default (en_GB) labels will be used.

Labels with variables 

Some labels in Resources/Private/Language/locallang.xlf have names starting with v_. In those labels, the following variables may be used: :php:`%1$s` : the title of the pid containing the front end user records created by the extension; %2$s : the user name of the front end user; :php:`%3$s` : the name of the front end user; %4$s : the email address of the front end user. * %5$s : the password of the front end user.

Special functions can be inserted. They will be replaced by the result of the function. :php:`{data:<field>}`: value of this field of the FE user record {tca:<field>}: value of the marker ###TCA_INPUT_field'### * {meta:<stuff>}: extra stuff functions: title: page title

Adding extra labels 

Property extraLabels in TS setup may specify a list of extra labels that may be used in the HTML template. The values of these labels are specified in TS setup with the same type of assignment as when overriding localized labels: plugin.tx_agency._LOCAL_LANG.languageCode.extraLabelName = extraLabelValue

Short Urls 

Reducing the length of URL's 

You may find that the URL's sent in emails to the front end user are too long and may be broken when using plain text emails.

Using plain text emails and notification_email_urlmode 

If you are using plain text emails (enableHTMLMail is set to 0):

  • In your TS template setup, set config.notification_email_urlmode = 76 or config.notification_email_urlmode = all . See TSRef for information about this CONFIG setup property.

Using the short URL feature - RealURL 

This approach is compatible with both HTML and plain text emails. Simply enable the feature by setting the TS constant useShortUrls = 1 in your TS template. You should also review the default value of TS constant shortUrlLife and set it to a value that fits your needs. If you are using the RealURL extension, you should add something like the following to your RealURL configuration in the $TYPO3_CONF_VARS['EXTCONF']['realurl'] variable of localconf.php:

EXT:my_extension/ext_localconf.php
'postVarSets' => array(
      '_DEFAULT' => array(
          'user' => array(
              array(
                  'GETvar' => 'agency[regHash]'
              )
          )
      )
  ),
Copied!

Adding Fields to Registration Form 

Extend the fe_users table 

The simplest way to extend the fe_users table is to create a small extension that will define the required fields in the database and the TCA. Your small extension will not contain any plugin or other processing. Extension Kickstarter is a wizard that will help you create this small extension. If not yet installed, install the extension using the Extension Manager. Once installed, you access the Kickstarter Wizard through the Extension Manager back end module. Just remember that you will not need to create any plugin or TypoScript. Once your extension is created, install it. This will make the fields you have defined available to the TYPO3 backend. In this tutorial the name of the extension is mynewext.

Add the fields in the HTML template 

You need to update the HTML template in order to include the fields you have defined in the proper subparts. The subparts of interest are: ###TEMPLATE_CREATE### ###TEMPLATE_CREATE_PREVIEW### ###TEMPLATE_INVITE### ###TEMPLATE_INVITE_PREVIEW### ###TEMPLATE_EDIT### ###TEMPLATE_EDIT_PREVIEW### and perhaps some of the email subparts. Have a look at how the predefined fields are included in each of the subparts, and do the same for the fields you are adding. The HTML for a field named myNewFieldName in the CREATE, INVITE and EDIT subparts would look like:

Enhancement of the HTML template by self defined field
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
<dt>
	<label for="agency-myNewFieldName">###LABEL_MYNEWFIELDNAME###</label>
	<span class="agency-required">###REQUIRED_MYNEWFIELDNAME###</span>
</dt>
<dd>
	<!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
	<p class="agency-error">###EVAL_ERROR_FIELD_myNewFieldName###</p>
	<!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
	<!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
	<p class="agency-error">###MISSING_MYNEWFIELDNAME###</p>
	<!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
	<input id="agency-myNewFieldName" type="text" size="40" maxlength="50" title="###TOOLTIP_MYNEWFIELDNAME###" name="###NAME_MYNEWFIELDNAME###" class="agency-text" />
</dd>
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
Copied!

In the case of a field of type textarea, check, radio and select, the HTML for the field should rather look like the following:

Enhancement of the HTML template by self defined field of type textarea, check, radio and select
   <!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
   <dt>
   	<label for="agency-myNewFieldName">###LABEL_MYNEWFIELDNAME###</label>
   	<span class="agency-required">###REQUIRED_MYNEWFIELDNAME###</span>
   </dt>
   <dd>
   	<!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
   	<p class="agency-error">###EVAL_ERROR_FIELD_myNewFieldName###</p>
   	<!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
   	<!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
   	<p class="agency-error">###MISSING_MYNEWFIELDNAME###</p>
   	<!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
   	###TCA_INPUT_myNewFieldName###
   </dd>
   <!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->

In each PREVIEW subpart, you need to add lines like:
Copied!
Enhancement of the HTML template by self defined field in preview
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
<dt>###LABEL_MYNEWFIELDNAME###</dt>
<dd>###FIELD_MYNEWFIELDNAME###</dd>
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
Copied!

or

Enhancement of the HTML template by self defined field in preview
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
<dt>###LABEL_MYNEWFIELDNAME###</dt>
<dd>###TCA_INPUT_myNewFieldName###</dd>
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
Copied!

Add the language labels for the new fields 

The language labels for the additional database fields should be added in Step 1 above. These will be used by the back end forms. The language labels used by the front end plugin should be added in the TS template setup using the method described in the Localization section of this document. For each language of interest to you with :phplanguageCode, which must be replaced by :phpde, :phpdefault or others. All cursive letters in the following examples must be replaced with your field names and texts. You may need the following statements for each additional field with myNewFieldName000: The basic field label:

Set the myNewFieldLabel into languageCode for myNewFieldName
plugin.tx_agency._LOCAL_LANG.languageCode.myNewFieldName = myNewFieldLabel
Copied!

The message displayed when the field is required but missing:

Set the missing_myNewFieldName for myNewFieldName
plugin.tx_agency._LOCAL_LANG.languageCode.missing_myNewFieldName = missingRequiredFieldMessage
Copied!

Same as previous but for the invitation form:

Set the missing_invitation_myNewFieldName for myNewFieldName
plugin.tx_agency._LOCAL_LANG.languageCode.missing_invitation_myNewFieldName = missingRequiredFieldMessageOnInvitationForm
Copied!

The following message displayed when a validation rule evalRuleName applicable to the field is not satisfied:

Set the evalErrors_evalRuleName_myNewFieldName for myNewFieldName
plugin.tx_agency._LOCAL_LANG.languageCode.evalErrors_evalRuleName_myNewFieldName = errorMessageForEvalRule
Copied!

Add fe_users.php 

TYPO3 reads in the $GLOBALS['TCA'] modified in your extension. Just add the new columns for your fields into the php:$GLOBALS['TCA'] of your file fe_users.php. This must be placed into the folder Configuration/TCA/Overrides of your extension.

Captcha 

It is possible to activate the display of a captcha image and a text field where the user must enter the text displayed on the image. Extension sr_freecap or captcha must have been installed. The captcha_response field should not be specified as a required field. Set in TS Constants:

activate captcha
formFields := addToList(captcha_response)
Copied!

or, using the TS Constant Editor, add captcha_response to the list of fields

Set also in TS Setup:

activate captcha
plugin.tx_agency {
  create.evalValues.captcha_response = freecap
}
Copied!

or set in TS Setup:

activate captcha in evalValues
plugin.tx_agency {
    create.evalValues.captcha_response = captcha
}
Copied!

Captcha markers 

  • ###NAME_CAPTCHA_RESPONSE###
  • ###CAPTCHA_NOTICE###
  • ###CAPTCHA_CANT_READ###
  • ###CAPTCHA_IMAGE###
  • ###CAPTCHA_ACCESSIBLE###

TypoScript Constants 

Properties 

termsUrl 

termsUrl

termsUrl
Type
string

Page (id or id,type) or url where the terms of usage are shown.

file.templateFile 

file.templateFile

file.templateFile
Type
file[html,htm,tmpl,txt]
Default
EXT:agency/Resources/Private/Templates/AgencyRegistrationTemplate.html

File name of the HTML template

file.attachmentFile 

file.attachmentFile

file.attachmentFile
Type
file[pdf,doc,txt]
Default
EXT:agency/Resources/Public/Examples/tx_agency_sample.txt

File name of a file to be attached to the registration confirmation email.

file.termsFile 

file.termsFile

file.termsFile
Type
file[pdf,doc,sxw,txt]
Default
EXT:agency/Resources/Public/Examples/tx_agency_terms.txt

File name of the terms of usage file.

file.privacyPolicyFile 

file.privacyPolicyFile

file.privacyPolicyFile
Type
file[pdf,doc,sxw,txt]
Default
EXT:agency/Resources/Private/Templates/AgencyPrivacyPolicy.txt

File to be shown as the privacy policy.

privacyPolicyUrl 

privacyPolicyUrl

privacyPolicyUrl
Type
string

Page (id or id,type) or url where the privacy policy is shown. If set, it overrides the privacy policy file. This is needed for compliance with DSGVO / GDPR .

enableHTMLMail 

enableHTMLMail

enableHTMLMail
Type
boolean
Default
1 (true)

If set, emails sent to the front end user will be sent in HTML format. A plain text version will always be included in the emails.

enableEmailAttachment 

enableEmailAttachment

enableEmailAttachment
Type
boolean
Default
0 (false)

If set, and if enableHTMLMail is also set, the attachment file - specified by file.attachmentFile - will be attached to the registration confirmation HTML email.

enableAutoLoginOnConfirmation 

enableAutoLoginOnConfirmation

enableAutoLoginOnConfirmation
Type
boolean
Default
0 (false)

If set, the user will be automatically logged in upon confirmation of his registration.

enableAutoLoginOnCreate 

enableAutoLoginOnCreate

enableAutoLoginOnCreate
Type
boolean
Default
0 (false)

Enable auto-login on account creation: if set and if email confirmation is not set, the user will be automatically logged in upon creation of his(her) account.

enableAutoLoginOnInviteConfirmation 

enableAutoLoginOnInviteConfirmation

enableAutoLoginOnInviteConfirmation
Type
boolean
Default
1 (true)

If set, the user will be automatically logged in upon confirmation of his (her) invitation.

autoLoginRedirect_url 

autoLoginRedirect_url

autoLoginRedirect_url
Type
string

When auto login is enabled, URL to which the user may be redirected upon login.

HTMLMailCSS 

HTMLMailCSS

HTMLMailCSS
Type
string
Default
EXT:agency/template/tx_agency_htmlmail_xhtml.css

File name of the HTML emails style sheet. If HTML emails are enabled, this file contains the CSS style sheet to be incorporated in these emails.

email 

email

email
Type
string
Default
MyTypo3Site@mydomain.org

Administration email address. This email address will be the sender email address and the recipient of administrator notifications.

siteName 

siteName

siteName
Type
string
Default
My Typo3 Site

Name of the registering site. If set, this will be used as the email address name in all sent emails and may be used as a signature on the mails.

formFields 

formFields

formFields
Type
positive integer / stdwrap
Default
username, password, gender, first_name, last_name, status, date_of_birth, email, address, city, zone, static_info_country, zip, telephone, fax, language, title, company, www, mail_html, categories, image, comments, terms_acknowledged, privacy_policy_acknowledged, disable

List of fields to be included on the Agency Registration form. Should be a subset of the columns of the 'fe_users' table.

requiredFields 

requiredFields

requiredFields
Type
positive string
Default
username,password,first_name,last_name,email

List of fields that must be filled in on the Agency Registration form. Should be a subset of the list specified on the 'formFields' property.

doNotEnforceUsername 

doNotEnforceUsername

doNotEnforceUsername
Type
boolean
Default
0 (false)

If set, field username is not forced to be part of formFields and requiredFields.

unsubscribeAllowedFields 

unsubscribeAllowedFields

unsubscribeAllowedFields
Type
string
Default
module_sys_dmail_newsletter

Unsubscribe allowed fields: List of fields that are allowed to be updated by an UNSUBSCRIBE link without any login.

codeLength 

codeLength

codeLength
Type
int
Default
8

Length of the authentication codes.

formName 

formName

formName
Type
string

Name of the HTML form. The name is also referenced on the onChangeCountryAttribute. See below.

onChangeCountryAttribute 

onChangeCountryAttribute

onChangeCountryAttribute
Type
string
Default
javascript:window.document.forms['fe_users_form'].submit();

Javascript to execute when the selected country is changed in the country selector box.

defaultCODE 

defaultCODE

defaultCODE
Type
string

Default CODE, when not specified on the inserted plugin record. May be CREATE or EDIT or empty.

pid 

pid

pid
Type
page_id

Front end user records PID. If the records edited/created are located in another page than the 'current,' the PID of that page should be specified here.

userGroupsPidList 

userGroupsPidList

userGroupsPidList
Type
list of page_id's

User groups records PID list: List of page id's on which user groups records are located.

categories_PIDLIST 

categories_PIDLIST

categories_PIDLIST
Type
positive integer / stdwrap
Default
0

PID list for Direct Mail categories. The Direct mail categories used by the plugin will be restricted to those found on the pages identified by the PID's in this list.

pidTitleOverride 

pidTitleOverride

pidTitleOverride
Type
string

The specified string will override the title of the System Folder page specified by the pid property. The title of the System Folder is used in some online and email messages in the default HTML template.

registerPID 

registerPID

registerPID
Type
page_id

Registration page PID: PID of the page on which the extension is inserted with the intent of serving as the Agency Registration page. If not set, will default to 'current' page.

editPID 

editPID

editPID
Type
page_id

Profile editing page PID: PID of the page on which the extension is inserted with the intent of serving as the front end user profile editing page. If not set, will default to 'current' page.

linkToPID 

linkToPIDAddButton 

confirmPID 

confirmPID

confirmPID
Type
page_id

Confirmation page PID: PID of the page on which the extension is inserted with the intent of serving as the front end user confirmation page (or setfixed page!).

confirmInvitationPID 

confirmInvitationPID

confirmInvitationPID
Type
page_id

Confirmation of invitation page PID: PID of the page on which the extension is inserted with the intent of serving as the front end user confirmation page (or setfixed page!) when replying to an invitation. Meaningful only if email confirmation request is enabled.

passwordPID 

passwordPID

passwordPID
Type
page_id

Password page PID: PID of the page on which the plugin is inserted with the intent of entering a new password.

confirmType 

confirmType

confirmType
Type
int
Default
0

Confirmation page Type: Type (or pageNum) of the confirmation page. Meaningful only if email confirmation request is enabled.

loginPID 

loginPID

loginPID
Type
page_id

Login page PID: PID of the page on which the New login box extension is inserted with the intent of serving as the front end user login page. If not set, will default to 'current' page.

enablePreviewRegister 

enablePreviewRegister

enablePreviewRegister
Type
boolean
Default
1 (true)

Enable preview on registration. If set, the registration dialog will include a preview of the front end user data before it is saved.

enablePreviewEdit 

enablePreviewEdit

enablePreviewEdit
Type
boolean
Default
1 (true)

Enable preview on profile update. If set, the profile update dialog will include a preview of the front end user data before it is saved.

enableAdminReview 

enableAdminReview

enableAdminReview
Type
boolean
Default
0 (false)

Enable administrative review. If set, the site administrator will be asked to accept the registration before it becomes enabled.

enableEmailConfirmation 

enableEmailConfirmation

enableEmailConfirmation
Type
boolean
Default
1 (true)

Enable email confirmation request: If set, an email will be sent to the prospective front end user requesting a confirmation of registration.

useEmailAsUsername 

useEmailAsUsername

useEmailAsUsername
Type
boolean
Default
0 (false)

Enable the use of the email address as username.

generateUsername 

generateUsername

generateUsername
Type
boolean
Default
0 (false)

Generate the username. If set, the username is assumed to be generated.

generatePassword 

generatePassword

generatePassword
Type
integer
Default
0

Generate the password: If non-zero, a random password is generated. The number of characters in the password is given by this parameter.

allowUserGroupSelection 

allowUserGroupSelection

allowUserGroupSelection
Type
boolean
Default
0 (false)

Allow selection of usergroup on registration. If set, the user may select to adhere to user group(s) when registering.

allowUserGroupUpdate 

allowUserGroupSelection

allowUserGroupSelection
Type
boolean
Default
0 (false)

Allow selection of usergroup on editing. If set, the user may edit the list of user groups to which he(she) belongs.

allowMultipleUserGroupSelection 

allowMultipleUserGroupSelection

allowMultipleUserGroupSelection
Type
boolean
Default
0 (false)

Allow selection of multiple usergroups. If set, the user may select to adhere to multiple user groups.

allowedUserGroups 

allowedUserGroups

allowedUserGroups
Type
string

Comma separated list of user groups to be selectable. If 'ALL', then all groups are allowed.

allowedSubgroups 

allowedSubgroups

allowedSubgroups
Type
string

Comma separated list of subgroups from which all user groups shall be selectable. The user groups from allowedUserGroups shall be added also.

deniedUserGroups 

deniedUserGroups

deniedUserGroups
Type
string

Comma separated list of user groups to be never selectable. These usegroups supersede the resulted user grous from allowedUserGroups and allowedSubgroups.

keepUnselectableUserGroups 

keepUnselectableUserGroups

keepUnselectableUserGroups
Type
boolean
Default
0 (false)

If set und if a FE user is changing his FE user group then all the other FE user groups which are not shown in the select box will remain. If unset then the user will only keep the user group selected by himself and the reserved user groups which consist of the temporal user groups from the registration process: userGroupUponRegistration, userGroupAfterConfirmation, userGroupAfterAcceptation . This is only useful if allowUserGroupUpdate has been set, too.

Note: See also the constants allowedUserGroups., allowedSubgroups and deniedUserGroups

enableEmailOnApprove 

enableEmailOnApprove

enableEmailOnApprove
Type
boolean
Default
1 (true)

Enable email on approval. If set, an email will be sent to the front end user when he confirms his registration. Effective only if email confirmation request is enabled.

enableEmailOnRefuse 

enableEmailOnRefuse

enableEmailOnRefuse
Type
boolean
Default
1 (true)

Enable email on refusal: If set, an email will be sent to the prospective front end user when he refuses to confirm his registration. Effective only if email confirmation request is enabled.

enableEmailOnAdminRefuse 

enableEmailOnAdminRefuse

enableEmailOnAdminRefuse
Type
boolean
Default
1 (true)

Enable email on denial: If set, an email will be sent to the prospective front end user when the site administrator refuses to confirm his registration.

enableEmailOnRegister 

enableEmailOnRegister

enableEmailOnRegister
Type
boolean
Default
1 (true)

Enable email on registration: If set, an email will be sent to the front end user confirming his registration. Ignored if email confirmation request is enabled.

enableEmailOnUpdate 

enableEmailOnUpdate

enableEmailOnUpdate
Type
integer
Default
1

Enable email on profile update. If set to 1, an email will be sent to the front end user to confirm the update of his profile. If set to 2, only the changed fields will be sent.

enableEmailOnDelete 

enableEmailOnDelete

enableEmailOnDelete
Type
boolean
Default
1 (true)

Enable email on delete. If set, an email will be sent to the front end user to confirm the deletion of his account.

enableEmailOnUnsubscribe 

enableEmailOnUnsubscribe

enableEmailOnUnsubscribe
Type
boolean
Default
1 (true)

Enable email on unsubscribe: If set, an email will be sent to the front end user end its subscription to newsletters through a link from a mailing application.

enableEmailPassword 

enableEmailPassword

enableEmailPassword
Type
boolean
Default
0 (false)

Enable email for password creation: If set, an email can be sent to the front end user who has forgotten his password.

enableAdminNotifyConfirmation 

enableAdminNotifyConfirmation

enableAdminNotifyConfirmation
Type
boolean
Default
1 (true)

If set, an email will be sent to the site administrator when a request for confirmation of registration is sent to a user.

enableAdminNotifyOnApprove 

enableAdminNotifyOnApprove

enableAdminNotifyOnApprove
Type
boolean
Default
1 (true)

Enable admin notification on approval: If set, an email will be sent to the site administrator when a user confirms his registration.

enableAdminNotifyOnRefuse 

enableAdminNotifyOnRefuse

enableAdminNotifyOnRefuse
Type
boolean
Default
1 (true)

Enable admin notification on refusal. If set, an email will be sent to the site administrator when a user refuses to confirm his registration.

enableAdminNotifyOnRegister 

enableAdminNotifyOnRegister

enableAdminNotifyOnRegister
Type
boolean
Default
1 (true)

Enable admin notification on registration. If set, an email will be sent to the site administrator when a user registers. This is ignored if email confirmation request is enabled.

enableAdminNotifyOnUpdate 

enableAdminNotifyOnUpdate

enableAdminNotifyOnUpdate
Type
boolean
Default
1 (true)

Enable admin notification on update: If set, an email will be sent to the site administrator when a user updates his profile.

enableAdminNotifyOnDelete 

enableAdminNotifyOnDelete

enableAdminNotifyOnDelete
Type
boolean
Default
1 (true)

Enable admin notification on deletion: If set, an email will be sent to the site administrator when a user deletes his account.

enableAdminNotifyOnEnter 

enableAdminNotifyOnEnter

enableAdminNotifyOnEnter
Type
boolean
Default
0 (false)

Enable admin notification on entering: If set, an email will be sent to the site administration when a user clicks on the link to log in.

enableAdminNotifyOnAdminAccept 

enableAdminNotifyOnAdminAccept

enableAdminNotifyOnAdminAccept
Type
boolean
Default
1 (true)

Enable admin notification on approval by admin: If set, an email will be sent to the site administration when a registration is accepted by the administration.

enableAdminNotifyOnAdminRefuse 

enableAdminNotifyOnAdminRefuse

enableAdminNotifyOnAdminRefuse
Type
boolean
Default
1 (true)

Enable admin notification on refusal by admin: If set, an email will be sent to the site administration when a registration is refused by the administration.

enableAdminNotifyOnUnsubscribe 

enableAdminNotifyOnUnsubscribe

enableAdminNotifyOnUnsubscribe
Type
boolean
Default
1 (true)

Enable admin notification on unsubscribe: If set, an email will be sent to the site administration when the user ends his membership through a link from a mailing application.

enableAdminNotifyOnPassword 

enableAdminNotifyOnPassword

enableAdminNotifyOnPassword
Type
boolean
Default
1 (true)

Enable admin notification on lost password: If set, an email will be sent to the site administration when the user requests to recreate his lost password..

mailCheckedUponRegistration 

mailCheckedUponRegistration

mailCheckedUponRegistration
Type
boolean
Default
0 (false)

Check all the checkboxes for Mail categories in creation dialogues.

userGroupUponRegistration 

userGroupUponRegistration

userGroupUponRegistration
Type
string

User group(s) upon registration: The value of the user group field. Must be a list of integers WITHOUT spaces between the comma separated values! Furthermore, these integers MUST point to actual fe_groups records!

userGroupAfterConfirmation 

userGroupAfterConfirmation

userGroupAfterConfirmation
Type
string

User group(s) after confirmation: The value of the user group(s) assigned to the front end user after receipt of his confirmation.

userGroupAfterAcceptation 

userGroupAfterAcceptation

userGroupAfterAcceptation
Type
string

User group(s) after acceptation: The value of the user group(s) assigned to the front end user after acceptation of his(her) registration, when the administrative review is enabled.

passwordAtLeast 

passwordAtLeast

passwordAtLeast
Type
string

Minimum password length: The minimum number of characters that the password must contain.

passwordAtMost 

passwordAtMost

passwordAtMost
Type
string

Maximum password length: The maximum number of characters that the password may contain.

usernameAtLeast 

usernameAtLeast

usernameAtLeast
Type
string

Minimum username length: The minimum number of characters that the username must contain.

usernameAtMost 

usernameAtMost

usernameAtMost
Type
string

Maximum username length: The maximum number of characters that the username may contain.

nameAtMost 

nameAtMost

nameAtMost
Type
integer
Default
80

Maximum name length: The maximum number of characters that the name of the front end user may contain.

alphaSpecials 

alphaSpecials

alphaSpecials
Type
string

Allow special characters to alpha: The parse values for the alpha check normally contain alphabethical letters. Here you can add also special characters (e.g. German Umlauts) to the username.

alphaSpecials = äöüß

forceFileDelete 

forceFileDelete

forceFileDelete
Type
boolean
Default
1 (true)

If set, on record deletion, related images and files will be deleted even if the record in the database is only marked deleted .

maxImages 

maxImages

maxImages
Type
integer
Default
6

Number of images that may be uploaded. Value: An integer larger than 0 and smaller than 7.

salutation 

salutation

salutation
Type
string

If set, should be either 'formal' or 'informal'.

useShortUrls 

useShortUrls

useShortUrls
Type
boolean
Default
1 (true)

Enable the use of short URLs in email messages sent to users is enabled. Do not disable this if possible, because a short URL provides the highest security level.

useLocalization 

useLocalization

useLocalization
Type
boolean
Default
0 (false)

Enable the localization for selectable items.

useLocalCountry 

useLocalCountry

useLocalCountry
Type
boolean
Default
0 (false)

Show the country names in their local languages.

shortUrlLife 

shortUrlLife

shortUrlLife
Type
int+
Default
30

Short URL cache lifespan. This is the number of days that short URL's will be kept in the DB. After this delay, the short URL's will be removed. Confirmation URL's included in email messages older than this number of days will not work.

dateFormat 

dateFormat

dateFormat
Type
string
Default
d-m-Y

date format You should also change the error message output if you change this.

day: d - day of the month, 2 digits with leading zeros; i.e. "01" to "31" j - day of the month without leading zeros; i.e. "1" to "31" month: m - month; i.e. "01" to "12" n - month without leading zeros; i.e. "1" to "12" year: Y - year, 4 digits; e.g. "1999" y - year, 2 digits; e.g. "99"

dateSplit 

dateSplit

dateSplit
Type
string
Default
-

split characters for the dateFormat. This is a regular expression and might need the escape character ''! Use dateSplit = \. to separate the date with a dot . .

mergeLabels 

mergeLabels

mergeLabels
Type
boolean
Default
1 (true)

If set then the labels for select boxes found in setup are merged to the labels already in the TCA, which might come from TCEFORM.fe_users altLabels or addItems. If 0, then only the labels from plugin.tx_agency._LOCAL_LANG.de.fe_users.x.I.x are taken.

Display of Front End User Data 

If you want to display the FE users data without any edit functionality, you can use TypoScript for setting this up. by Peter Klein

Example Setup:

Setup for Display of Front End User Data
lib.userinfo = COA_INT
lib.userinfo {
  10 = TEXT
  10.data = TSFE:fe_user|user|username
  10.wrap = Username:&nbsp;|<br />
  10.required = 1

  # Use "first_name" and "last_name", if present,
  # otherwise use the "name" field
  20 = COA
  20.1 = TEXT
  20.1.data = TSFE:fe_user|user|first_name
  20.1.required = 1
  20.2 = TEXT
  20.2.data = TSFE:fe_user|user|last_name
  20.2.wrap = &nbsp;|
  20.2.required = 1
  20.stdWrap.ifEmpty.data = TSFE:fe_user|user|name
  20.stdWrap.wrap = Name:&nbsp;|<br />
  20.stdWrap.required = 1

  30 <.10
  30.data = TSFE:fe_user|user|address
  30.wrap = Address:&nbsp;|<br />

  40 <.10
  40.data = TSFE:fe_user|user|city
  40.wrap = City:&nbsp;|<br />

  50 <.10
  50.data = TSFE:fe_user|user|zip
  50.wrap = Zip:&nbsp;|<br />

  60 <.10
  60.data = TSFE:fe_user|user|country
  60.wrap = Country:&nbsp;|<br />

  70 <.10
  70.data = TSFE:fe_user|user|company
  70.wrap = Company:&nbsp;|<br />

  80 <.10
  80.data = TSFE:fe_user|user|telephone
  80.wrap = Telephone:&nbsp;|<br />

  90 <.10
  90.data = TSFE:fe_user|user|fax
  90.wrap = Fax:&nbsp;|<br />

  100 <.10
  100.data = TSFE:fe_user|user|email
  100.typolink.parameter.data = TSFE:fe_user|user|email
  100.wrap = Email:&nbsp;|<br />

  110 <.10
  110.data = TSFE:fe_user|user|www
  110.typolink.parameter.data = TSFE:fe_user|user|www
  110.typolink.extTarget = _blank
  110.wrap = WWW:&nbsp;|<br />

  200 < .10
  200.data = TSFE:fe_user|user|usergroup
  200.split {
    token = ,
    cObjNum = 1 || 2
    1 {
     10 = CONTENT
     10.table = fe_groups
      # ID 13 is the folder where I store my FE users and FE groups.
      # Remember to change it to the ID of the folder
      # where YOU store your FE data!!
     10.select.pidInList = 13
     10.select.andWhere.current = 1
     10.select.andWhere.wrap = uid=|
     10.renderObj = TEXT
     10.renderObj.field = title
     10.renderObj.wrap = |,
    }
    2 < .1
    2.10.renderObj.wrap >
  }
  200.wrap = Member of group(s):&nbsp;|<br />

  300 < .10
  300.data = TSFE:fe_user|user|image
  300.split {
    token = ,
    cObjNum = 1
    1 {
     10 = IMAGE
     10.file.import.current = 1
     10.file.import = uploads/tx_agency/
     10.file.width = 100
    }
  }
  300.wrap = Image(s):&nbsp;|<br />
}
page.100 < lib.userinfo
Copied!

Display Mode Specific Setup 

Use the display mode (lower case) as the first parameter.

Example:

configure edit.overrideValues.usergroup
edit.overrideValues.usergroup = 3
Copied!

Properties 

fields 

fields

fields
Type
string
Default
See TS constant formFields

List of fields to be included on the Agency Registration form. Should be a subset of the columns of the fe_users table.

Allows to specify a different list of fields for each CODE.

required 

required

required
Type
string
Default
See TS constant formFields

List of fields that must be filled in on the Agency Registration form. Should be a subset of the list specified on the 'formFields' property.

Allows to specify a different list of required fields for each CODE.

defaultValues 

defaultValues

defaultValues
Type
array of strings
Default
See TS constant formFields

Default values for the fields.

overrrideValues 

overrrideValues

overrrideValues
Type
array of strings/stdWrap

Array of field names for which a fixed value or stdWrap function shall be applied. The stdWrap e.g. can be used when FE Users should not be able to change a field, which they must fill out only at registration.

Example: .. code-block:: typoscript :caption: Example overrideValues

overrideValues {
username = usergroup > disable = 0 by_invitation > user_myfield = {TSFE:fe_user|user|user_myfield} user_myfield.insertData = 1

}

evalValues 

evalValues

evalValues
Type
array of strings
Default
See TS constant formFields

Check functions to be applied on the fields.

Modify the TS template Constants and Setup 

Using the Constant Editor, modify the value of the following constants of plugin agency:

  • formFields: add to the list of fields the names of the fields you have defined and want to be displayed in the front end form. If the field is not in this list, the subpart

<!--###SUB_INCLUDED_FIELD_myNewFieldName###--> will be deleted; * requiredFields: add to the list of fields the names of the fields you have defined and want to be treated as required fields. If the field is not in the list OR if the field is in this list and is correctly filled, the subpart <!--###SUB_REQUIRED_FIELD_myNewFieldName###--> will be deleted.

You may also specify in the TS template Setup some default values and validation rules to be applied by the extension to the additional fields. If there are no validation rules, you should set:

unset create evalValues validation for new field
plugin.tx_agency.create.evalValues.myNewFieldName =
Copied!

If your field is a select field and if you wish to enable multiple selection, you should also set:

set parseValues for new field
plugin.tx_agency.parseValues.myNewFieldName  = multiple
Copied!

Available Hooks 

Thee sets of hooks may be used by the extension. The first set of hooks is named confirmRegistrationClass and offers the possibility to follow two hooks:

  • confirmRegistrationClass_preProcess: This hook is invoked just BEFORE the registration confirmation (or so-called setfixed) is processed;
  • confirmRegistrationClass_postProcess: This hook is invoked just AFTER the registration confirmation (or so-called setfixed) is processed.

The second set of hooks is named registrationProcess and offers the possibility of the following four hooks:

  • registrationProcess_beforeConfirmCreate: This hook is invoked just BEFORE the user record is filled for preview by the user;
  • registrationProcess_afterSaveCreate: This hook is invoked just AFTER the user record has been created and saved;
  • registrationProcess_afterSaveEdit: This hook is invoked just AFTER the user record has been edited and saved.
  • registrationProcess_beforeSaveDelete: This hook is invoked just BEFORE the user record is deleted.

The third set of hooks is for global markers and processing.

  • addGlobalMarkers: This hook is invoked in the fillInMarkerArray function of the marker object. You can add your own global markers here. This is used for the markers from the extensions sr_freecap, voucher and others.

Each set of hooks must be defined within a class, each hook being a method of this class. However, all seven hooks could be defined as methods of the same class. Some of the hooks receive two parameters: the current front end user record (or marker array, in the case of addGlobalMarkers) and a reference to the invoking object. In the case of registrationProcess_beforeConfirmCreate, the first parameter is also passed as a reference so that some action may be taken on the content of the record. The hooks are configured by the following assignments which could be included in the file ext_localconf.php of the extension providing the hooks:

EXT:my_extension/ext_localconf.php
$TYPO3_CONF_VARS['EXTCONF']['agency']['confirmRegistrationClass'][] = classReference;
$TYPO3_CONF_VARS['EXTCONF']['agency']['registrationProcess'][] = classReference;
Copied!

Note that these are arrays, therefore you could configure multiple hooks of each type for various purposes. File Classes/Hooks/RegistrationProcessHooks.php of this extension provides a simple example class containing seven hooks doing nothing but provinding the interface you must use. File ext_localconf.php also contains example statements for configuring these example hooks. They are commented out. If you uncomment them, you should see the hooks being invoked when the extension is used in the front end. You must enter some PHP echo lines into the example hooks. In the case of the confirmRegistrationClass, if the confirmation page is configured to be redirected to auto-login, you may not notice on the front end that the example hooks are being invoked. In the case of the registrationProcess_beforeConfirmCreate example hook, if the plugin is configured to generate a username. A username is generated based on the first and last names of the user. For more information on hooks, see: http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.2.0/view/3/4/#id4198363 .

Registration Process 

Use 'setfixed' as the first and the registration process name (upper case) as the second parameter.

Example:

Example setfixed
setfixed.ACCEPT {
   _FIELDLIST = uid,pid,usergroup
   usergroup = {$plugin.tx_agency.userGroupAfterAcceptation}
   disable = 0
}
Copied!

Codes: 

  • APPROVE: It starts after the user clicks the confirmation link in the email.
  • ACCEPT: It starts after the admin clicks the acceptation confirmation link in the email.
  • DELETE: It starts when the user starts the deletion process.
  • REFUSE: It starts after the admin clicks the refusal link in the email
  • ENTER: It starts after the user clicks the login link in the email.

Properties 

_FIELDLIST 

_FIELDLIST

_FIELDLIST
Type
string
Default
uid,pid,usergroup

List of fields to be used by the generated links. The encoding and decoding process wil consider these fields.

Allows to specify a different list of fields for each PROCESS.

placeholder fieldname 

*placeholder fieldname+

*placeholder fieldname+
Type
string

Replace placeholder fieldname with the database's field name of the table fe_users or tt_address resp. . The listed table field names will get a new value after the registration process.

placeholder fieldname. 

*placeholder fieldname+

*placeholder fieldname+
Type
array
See fieldname above (only supported for usergroup)

Enhanced replacements for the values of table fields at the end of the given registration process.

See chapter 'usergroup generation'

EXT:my_extension/ext_localconf.php
usergroup {
   10.uid = 3
   10.file = fileadmin/Mitglieder.xml
 }
Copied!

Wrap for Select, Check Boxes and Radio Buttons 

You can have different select boxes defined in TCA, which can also be shown as checkboxes in FE. You will need this for Mail or overwritten topics. The configuration needs the activity ( create, edit, email for email, preview for preview, input for the page with input fields) and the field name of fe_users.

activities: EMAIL

Example Setup:

setup select box wrap
plugin.tx_agency {
	select {
		email {
			categories.item.wrap = | <br/>
		}
	}
}
Copied!

Properties 

item 

item

item
Type
stdWrap

Wrap around each single item. additional property: notLast: if set the last item will not be wrapped

list 

list

list
Type
stdWrap

list stdWrap Wrap around the list of items.

Sending Invitation 

Create a page, limiting access to this page to front end user groups who will be authorized to send invitations to register. Insert the Agency Registration plugin, setting the display mode to 'Invite' and the Starting Point to the System Folder that will contain the front end user records created. When an account is created through this page, an invitation message will be sent to the email address specified on the account. The invited person may accept or decline the invitation

TypoScript Setup 

Please note that the following properties refer to TS template setup, not to TS template constants! When installing this extension, you should NOT use the following setting: config.disableAllHeaderCode = 1

This setting will prevent the inclusion of Javascript essential to the correct behavior of the profile editing features.

Properties 

extraLabels 

extraLabels

extraLabels
Type
string

Comma-separated list of additional labels to use in the HTML template.

See section Labels and localisation about adding extra labels.

templateFile 

templateFile

templateFile
Type
string

Same as file.templateFile from Constants. This is needed under Setup for language specific template files only.

where.static_countries 

extraLabels

extraLabels
Type
string

Set a SQL WHERE condition to follow for the selected country in the static_countries table of the static_info_tables extension. Maybe you want to see only users from EU countries on your site.

See section Labels and localisation about adding extra labels.

Example 1:

plugin.tx_agency {
where.static_countries = cn_eu_member = 1

}

Example 2:

evalFunc 

evalFunc

evalFunc
Type
function-name

additional evaluation function for the records, e.g. user_myfunctionor user_myclass->main

userFunc_updateArray 

evalFunc

evalFunc
Type
function-name

User function to update the records

displayRequired 

displayRequired

displayRequired
Type
cObject

Use this cOject for the display of required fields. By default the required fields are printed with an asterisk (*).

Example:

displayRequired = COA
displayRequired = COA
displayRequired {
   10 = TEXT
   10.value = You must fill this in!
   10.wrap = <b>Attention:</b> | *
}
Copied!

Table Configuration 

Properties 

sys_language_uid 

sys_language_uid

sys_language_uid
Type
integer

The system language uid as in config.sys_language_uid. You can override this on the extension level for each table and field to use Dmail categories in multiple languages under all website languages. Do not set it if you want to use the settings from config.sys_language_uid in the case when the Dmail categories are translated.

Usergroup Generation 

Use setfixed as the first, the registration process name (upper case) as the second parameter and ' usergroup as the third parameter.

Example:

Example setfixed.ACCEPT.usergroup
setfixed.ACCEPT.usergroup {
   10.uid = 3
   10.file = fileadmin/Mitglieder.xml  
}
Copied!

Meanings of the array lines :

Properties 

uid 

uid

uid
Type
integer

The database table field uid of fe_groups. This is the uid of the FE user group.

file 

file

file
Type
string

File name of the XML file for member comparison. See example file Resources/Public/Examples/tx_agency_members.xml. The xml file uses the table field names of fe_users as the leaf names. The fields cnum, last_name, email and php:zip are required.

When a user registers himself, then a different user group will be used if the user's customer number (cnum) is already present in a XML file and if the following conditions are matched : The entered customer number must fit the cnum of the XML file and then it is checked if either the last names are equal or if otherwise both the zip codes and the emails are equal. The XML uses Row tags inside of the Members tag. XML format :

EXT:agemcy/Resources/Public/Examples/tx_agency_members.xml
<?xml version="1.0" ?>
<Members>
  <Row>
  	<cnum>00001</cnum>
  	<last_name>Mustermann</last_name>
  	<zip>80100</zip>
  	<email>max.mustermann@mail.de</email>
  </Row>
  <Row>
  	<cnum>00002</cnum>
  	<last_name>Musterfrau</last_name>
  	<zip>80200</zip>
  	<email>susi.musterfrau@mail.dk</email>
  </Row>
</Members>
Copied!

Using Frames 

If the registration confirmation page (confirmPID) is designed to be displayed within frames, then add the following lines to your TS template setup:

TypoScript for frames
[globalVar = TSFE:id = {$plugin.tx_agency.confirmPID}]
config.page.frameReloadIfNotInFrameset = 1
config.linkVars >
config.linkVars =  L,agency,fD,cmd,rU,aC
config.no_cache = 1
[global]
Copied!

after setting plugin.tx_agency.confirmPID in your TS template constants.

User Manual 

  1. The extension must be installed and configured: see the Configuration section.
  2. The HTML template needs to be tailored to your site: see the Administration section.
  3. Then visitors can start registering as front end users.

Administrative Review 

The extension may also be configured so that an email is sent to the site administrator when a visitor confirms his(her) registration. In such case, the visitor is informed by email that his(her) registration needs to be reviewed and accepted by the site administration before he(she) may login. The email sent to the site administrator contains all the information provided by the visitor (except the password). It also contains two links allowing the site administrator to accept or refuse the registration. When the site administrator accepts or refuses the registration, an email is sent to inform the visitor of the decision of the site administration. The visitor may login only after the registration has been accepted by the site administrator. The administrative review is bypassed when the registration was made by invitation.

Registration Process 

The default procedure is the following:

  • Just below the login box, the visitor is presented a link to a registration form or, if the user is already logged in, a link to a profile editing form;
  • The first time visitor completes the registration form and clicks on the submit button. He is presented with a preview form in order to verify the registration information before creating the account. Hitting 'Cancel', he may go back to the form to make any desired correction; he will have to re-enter his password. Upon submitting the verified registration information, the new user is informed that an email is being sent to him to complete the registration process and his account is assigned to a user group preventing any special access;
  • An email is sent to the registering visitor. The message contains two links. One link allows the visitor to confirm the registration and the other link cancels the registration (in case somebody has used his email address);
  • Clicking on either link brings the visitor to a message page displayed in his browser. If he has confirmed his registration, he is presented with a login box and may log into the site. When the user confirms his registration, his account is assigned a user group allowing him to access whatever pages are targeted at registered users;
  • When logged in, the user may edit his account information or delete his account;
  • Upon each event (registration, confirmation, cancellation, update, or deletion), an email may be sent to the user to confirm the action. An email notification may also be sent to the administrator of the site. The email to the user may be in HTML format, if desired (the email will always include a plain text version).

invitation. The extension may also be configured so that a front end user can create an account for another person and send an invitation to register. The invitation email allows the invited person to accept or decline the invitation. If the invited person accepts the invitation, she will be presented a form and requested to enter twice the same password. Consider to set enableAutoLoginOnInviteConfirmation to 1 if you want to enable this quick process. Otherwise you must send the invited person his password in the registration email or by other means.

Frequently Asked Questions (FAQ) 

See chapter Installation.

See chapter Configuration.

See chapter Where to get help.

No text replacement has been found for missing_tx_myextension_my_tablefield :name: no marker replacement :header-level: 2

You have to add the marker replacements for the user-defined fields into the setup. Follow the steps in chapter “Add the language labels for the new fields”

Add the marker ###EVAL_ERROR_saved### inside of the subpart <!-- ###TEMPLATE_EDIT### --> of the template file. Then a collected error message will be shown on that place.

Set $TYPO3_CONF_VARS['FE']['cookieDomain'] = my.domain.com.

See

###LABEL_CATEGORIES### ###TCA_INPUT_categories### ###LABEL_MAIL_HTML### ###TCA_INPUT_mail_html### ###LABEL_MAIL_HTML_CHECKED### :name: empty form token :header-level: 2

You must install Mail, add the Mail tables in the EM or Install Tool. Afterwards deinstall Mail or leave it. Then go to the EM of Agency and set enableMail to 1 if no Mail is installed or 0 if Mail is installed.

Other Solution: Do not use these markers : Remove all subparts and markers for Mail from the HTML template file.