diff --git a/Classes/Domain/Model/Field.php b/Classes/Domain/Model/Field.php
index b2377b7f2..d43991cf1 100644
--- a/Classes/Domain/Model/Field.php
+++ b/Classes/Domain/Model/Field.php
@@ -143,6 +143,26 @@ class Field extends AbstractEntity
*/
protected int $l10nParent = 0;
+ /**
+ * @var string
+ */
+ protected string $autocompleteToken = '';
+
+ /**
+ * @var string
+ */
+ protected string $autocompleteSection = '';
+
+ /**
+ * @var string
+ */
+ protected string $autocompleteType = '';
+
+ /**
+ * @var string
+ */
+ protected string $autocompletePurpose = '';
+
/**
* @var Page
* This property can hold Page|int|null (depending on the context). "@var" must set to Page for property mapping.
@@ -830,4 +850,78 @@ protected function getExportableTypesFromTypoScript(): array
}
return $types;
}
+
+ /**
+ * @return string
+ */
+ public function getAutocompleteToken(): string
+ {
+ return $this->autocompleteToken;
+ }
+
+ /**
+ * @param string $autocompleteToken
+ *
+ * @return void
+ */
+ public function setAutocompleteToken(string $autocompleteToken): void
+ {
+ $this->autocompleteToken = $autocompleteToken;
+ }
+
+ /**
+ * @return string
+ */
+ public function getAutocompleteSection(): string
+ {
+ return $this->autocompleteSection;
+ }
+
+ /**
+ * @param string $autocompleteSection
+ *
+ * @return void
+ */
+ public function setAutocompleteSection(string $autocompleteSection): void
+ {
+ $this->autocompleteSection = $autocompleteSection;
+ }
+
+ /**
+ * @return string
+ */
+ public function getAutocompleteType(): string
+ {
+ return $this->autocompleteType;
+ }
+
+ /**
+ * @param string $autocompleteType
+ *
+ * @return void
+ */
+ public function setAutocompleteType(string $autocompleteType): void
+ {
+ $this->autocompleteType = $autocompleteType;
+ }
+
+ /**
+ * @return string
+ */
+ public function getAutocompletePurpose(): string
+ {
+ return $this->autocompletePurpose;
+ }
+
+ /**
+ * @param string $autocompletePurpose
+ *
+ * @return void
+ */
+ public function setAutocompletePurpose(string $autocompletePurpose): void
+ {
+ $this->autocompletePurpose = $autocompletePurpose;
+ }
+
+
}
diff --git a/Classes/Domain/Model/Form.php b/Classes/Domain/Model/Form.php
index a5e82ea15..95a9a74bb 100644
--- a/Classes/Domain/Model/Form.php
+++ b/Classes/Domain/Model/Form.php
@@ -49,6 +49,11 @@ class Form extends AbstractEntity
*/
protected array $pagesByUid = [];
+ /**
+ * @var string
+ */
+ protected string $autocompleteToken = '';
+
/**
* @return string
*/
@@ -223,4 +228,22 @@ protected function isCorrectFieldType(Field $field, string $fieldType): bool
}
return false;
}
+
+ /**
+ * @return string
+ */
+ public function getAutocompleteToken(): string
+ {
+ return $this->autocompleteToken;
+ }
+
+ /**
+ * @param string $autocompleteToken
+ *
+ * @return void
+ */
+ public function setAutocompleteToken(string $autocompleteToken): void
+ {
+ $this->autocompleteToken = $autocompleteToken;
+ }
}
diff --git a/Classes/Tca/AddAutocompleteTokens.php b/Classes/Tca/AddAutocompleteTokens.php
new file mode 100644
index 000000000..e954f117c
--- /dev/null
+++ b/Classes/Tca/AddAutocompleteTokens.php
@@ -0,0 +1,96 @@
+ self::$LLL . 'name', 'value' => 'name', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'honorific-prefix', 'value' => 'honorific-prefix', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'given-name', 'value' => 'given-name', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'additional-name', 'value' => 'additional-name', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'family-name', 'value' => 'family-name', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'honorific-suffix', 'value' => 'honorific-suffix', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'nickname', 'value' => 'nickname', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'sex', 'value' => 'sex', 'icon' => '', 'group' => 'name'],
+ ['label' => self::$LLL . 'email', 'value' => 'email', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'impp', 'value' => 'impp', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'url', 'value' => 'url', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'organization-title', 'value' => 'organization-title', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'organization', 'value' => 'organization', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'street-address', 'value' => 'street-address', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'country', 'value' => 'country', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'country-name', 'value' => 'country-name', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'postal-code', 'value' => 'postal-code', 'icon' => '', 'group' => 'contact'],
+ ['label' => self::$LLL . 'address-line1', 'value' => 'address-line1', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'address-line2', 'value' => 'address-line2', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'address-line3', 'value' => 'address-line3', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'address-level1', 'value' => 'address-level1', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'address-level2', 'value' => 'address-level2', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'address-level3', 'value' => 'address-level3', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'address-level4', 'value' => 'address-level4', 'icon' => '', 'group' => 'address'],
+ ['label' => self::$LLL . 'tel', 'value' => 'tel', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-country-code', 'value' => 'tel-country-code', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-area-code', 'value' => 'tel-area-code', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-national', 'value' => 'tel-national', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-local', 'value' => 'tel-local', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-local-prefix', 'value' => 'tel-local-prefix', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-local-suffix', 'value' => 'tel-local-suffix', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'tel-extension', 'value' => 'tel-extension', 'icon' => '', 'group' => 'tel'],
+ ['label' => self::$LLL . 'username', 'value' => 'username', 'icon' => '', 'group' => 'user'],
+ ['label' => self::$LLL . 'new-password', 'value' => 'new-password', 'icon' => '', 'group' => 'user'],
+ ['label' => self::$LLL . 'current-password', 'value' => 'current-password', 'icon' => '', 'group' => 'user'],
+ ['label' => self::$LLL . 'one-time-code', 'value' => 'one-time-code', 'icon' => '', 'group' => 'user'],
+ ['label' => self::$LLL . 'bday', 'value' => 'bday', 'icon' => '', 'group' => 'bday'],
+ ['label' => self::$LLL . 'bday-day', 'value' => 'bday-day', 'icon' => '', 'group' => 'bday'],
+ ['label' => self::$LLL . 'bday-month', 'value' => 'bday-month', 'icon' => '', 'group' => 'bday'],
+ ['label' => self::$LLL . 'bday-year', 'value' => 'bday-year', 'icon' => '', 'group' => 'bday'],
+ ['label' => self::$LLL . 'cc-name', 'value' => 'cc-name', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-given-name', 'value' => 'cc-given-name', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-additional-name', 'value' => 'cc-additional-name', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-family-name', 'value' => 'cc-family-name', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-number', 'value' => 'cc-number', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-exp', 'value' => 'cc-exp', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-exp-month', 'value' => 'cc-exp-month', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-exp-year', 'value' => 'cc-exp-year', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-csc', 'value' => 'cc-csc', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'cc-type', 'value' => 'cc-type', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'transaction-currency', 'value' => 'transaction-currency', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'transaction-amount', 'value' => 'transaction-amount', 'icon' => '', 'group' => 'cc'],
+ ['label' => self::$LLL . 'language', 'value' => 'language', 'icon' => '', 'group' => 'other'],
+ ['label' => self::$LLL . 'photo', 'value' => 'photo', 'icon' => '', 'group' => 'other'],
+ ];
+ }
+}
\ No newline at end of file
diff --git a/Classes/ViewHelpers/String/AutocompleteViewHelper.php b/Classes/ViewHelpers/String/AutocompleteViewHelper.php
new file mode 100644
index 000000000..3328191a2
--- /dev/null
+++ b/Classes/ViewHelpers/String/AutocompleteViewHelper.php
@@ -0,0 +1,179 @@
+registerArgument('field', Field::class, 'Field', true);
+ }
+
+ /**
+ * render the value for the autocomplete attribute
+ *
+ * @return string
+ */
+ public function render(): string
+ {
+ $field = $this->arguments['field'];
+
+ [$fieldType, $autocompleteTokens, $token, $section, $type, $purpose]
+ = [
+ $field->getType(),
+ '',
+ $field->getAutocompleteToken(),
+ trim($field->getAutocompleteSection()),
+ $field->getAutocompleteType(),
+ $field->getAutocompletePurpose(),
+ ];
+
+ // If token is empty or 'on'/'off', other tokens are not allowed.
+ if (empty($token) || in_array($token, ['on', 'off'])) {
+ return $token;
+ }
+
+ if (!$this->tokenIsAllowedForFieldType($token, $fieldType)) {
+ return '';
+ }
+
+ // Optional section token must begin with the string 'section-'
+ if (!empty($section)) {
+ if ($this->tokenIsAllowedForSection($token)) {
+ $autocompleteTokens .= 'section-' . $section . ' ';
+ }
+ }
+
+ // Optional type token must be either 'shipping' or 'billing'
+ if (!empty($type)) {
+ if ($this->tokenIsAllowedForType($token, $type)) {
+ $autocompleteTokens .= $type . ' ';
+ }
+ }
+
+ // Optional purpose token is only allowed for certain autofill-field tokens
+ if (!empty($purpose)) {
+ if ($this->tokenIsAllowedForPurpose($token, $purpose, $fieldType)) {
+ $autocompleteTokens .= $purpose . ' ';
+ }
+ }
+
+ return $autocompleteTokens . $token;
+ }
+
+
+ /**
+ * Checks if the given type token is allowed for the specified autocomplete field token.
+ *
+ * Based on WHATWG HTML Spec:
+ * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill
+ *
+ * @param string $token
+ * @param string $type
+ *
+ * @return bool
+ */
+ protected function tokenIsAllowedForType(string $token, string $type): bool
+ {
+ $allowedTypes = ['shipping', 'billing'];
+ $tokensNotSupportingType = [
+ 'nickname', 'sex', 'impp', 'url', 'organization-title',
+ 'tel-country-code', 'tel-area-code', 'tel-national', 'tel-local',
+ 'tel-local-prefix', 'tel-local-suffix', 'tel-extension',
+ 'username', 'new-password', 'current-password', 'one-time-code',
+ 'bday', 'bday-day', 'bday-month', 'bday-year', 'language', 'photo'
+ ];
+ return in_array($type, $allowedTypes)
+ && !in_array($token, $tokensNotSupportingType);
+ }
+
+ /**
+ * Checks if the given purpose token is allowed for the specified autocomplete field token.
+ *
+ * Based on WHATWG HTML Spec:
+ * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill
+ *
+ * @param string $token
+ * @param string $purpose
+ * @param string $fieldType
+ *
+ * @return bool
+ */
+ protected function tokenIsAllowedForPurpose(string $token, string $purpose, string $fieldType): bool
+ {
+ $allowedPurposes = ['home', 'work', 'mobile', 'fax', 'pager'];
+ $tokensSupportingPurpose = ['tel', 'email', 'impp'];
+ $purposeAllowedForFields = ['input', 'textarea', 'hidden'];
+
+ return in_array($fieldType, $purposeAllowedForFields)
+ && in_array($purpose, $allowedPurposes, true)
+ && in_array($token, $tokensSupportingPurpose, true);
+ }
+
+ /**
+ * Checks if the given autocomplete field token allows a section token prefix.
+ *
+ * Based on WHATWG HTML Spec:
+ * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill
+ *
+ * @param string $token
+ *
+ * @return bool
+ */
+ protected function tokenIsAllowedForSection(string $token): bool
+ {
+ $tokensNotSupportingSection = [
+ 'nickname', 'sex', 'impp', 'url', 'organization-title',
+ 'username', 'new-password', 'current-password', 'one-time-code',
+ 'bday', 'bday-day', 'bday-month', 'bday-year', 'language', 'photo'
+ ];
+ return !in_array($token, $tokensNotSupportingSection, true);
+ }
+
+ /**
+ * Checks if the given autocomplete field token is allowed for the current field type.
+ *
+ * Based on WHATWG HTML Spec:
+ * https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill
+ *
+ * @param string $token
+ * @param string $fieldType
+ *
+ * @return bool
+ */
+ protected function tokenIsAllowedForFieldType(string $token, string $fieldType): bool
+ {
+ $allowedForAllTypes = ['on', 'off'];
+ $allowedForSelect = ['country', 'country-name', 'language', 'sex', 'bday', 'bday-day', 'bday-month', 'bday-year', 'title', 'address-level1', 'address-level2', 'cc-exp-month', 'cc-exp-year'];
+ $allowedForLocation = ['country', 'country-name', 'street-address', 'postal-code', 'address-line1', 'address-line2', 'address-line3', 'address-level1', 'address-level2', 'address-level3', 'address-level4'];
+ $allowedForCountry = ['country', 'country-name'];
+ $allowedForHidden = ['name', 'honorific-prefix', 'given-name', 'additional-name', 'family-name', 'honorific-suffix', 'email', 'username', 'organization', 'organization-title', 'country', 'country-name', 'language'];
+ $allowedForPassword = ['new-password', 'current-password'];
+
+ switch ($fieldType) {
+ case 'input':
+ case 'textarea':
+ //allow all
+ return true;
+ case 'location':
+ return in_array($token, $allowedForAllTypes, true) || in_array($token, $allowedForLocation, true);
+ case 'select':
+ return in_array($token, $allowedForAllTypes, true) || in_array($token, $allowedForSelect, true);
+ case 'country':
+ return in_array($token, $allowedForAllTypes, true) || in_array($token, $allowedForCountry, true);
+ case 'hidden':
+ return in_array($token, $allowedForAllTypes, true) || in_array($token, $allowedForHidden, true);
+ case 'password':
+ return in_array($token, $allowedForAllTypes, true) || in_array($token, $allowedForPassword, true);
+ }
+ }
+}
diff --git a/Configuration/TCA/tx_powermail_domain_model_field.php b/Configuration/TCA/tx_powermail_domain_model_field.php
index ddacbcf90..0ed843a4b 100644
--- a/Configuration/TCA/tx_powermail_domain_model_field.php
+++ b/Configuration/TCA/tx_powermail_domain_model_field.php
@@ -14,15 +14,19 @@
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.palette1;1, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;2, ' .
+ Field::TABLE_NAME . '.validation_title;2, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.prefill_title;32, ' .
+ Field::TABLE_NAME . '.prefill_title;32, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete;50, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete_additional;51, ' .
'--palette--;Layout;43, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- 'tabs.access, sys_language_uid, ' .
+ 'tabs.access, sys_language_uid, ' .
'l10n_parent, l10n_diffsource, hidden, starttime, endtime';
/**
@@ -34,15 +38,15 @@
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.palette1;1, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;21, ' .
+ Field::TABLE_NAME . '.validation_title;21, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.prefill_title;33, ' .
+ Field::TABLE_NAME . '.prefill_title;33, ' .
'--palette--;Layout;43, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- 'tabs.access, sys_language_uid, ' .
+ 'tabs.access, sys_language_uid, ' .
'l10n_parent, l10n_diffsource, hidden, starttime, endtime';
/**
@@ -53,15 +57,19 @@
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.palette1;1, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;21, ' .
+ Field::TABLE_NAME . '.validation_title;21, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.prefill_title;33, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete;50, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.prefill_title;33, ' .
+ Field::TABLE_NAME . '.palette.autocomplete_additional;51, ' .
'--palette--;Layout;41, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- 'tabs.access, sys_language_uid, ' .
+ 'tabs.access, sys_language_uid, ' .
'l10n_parent, l10n_diffsource, hidden, starttime, endtime';
/**
@@ -73,7 +81,7 @@
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;Layout;43, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -87,9 +95,13 @@
'--palette--;Layout;43, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.palette.autocomplete;50, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete_additional;51, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
- 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
+ 'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
/**
* Fieldtypes
@@ -98,9 +110,13 @@
$typeSmallPrefill = 'page, title, type, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.prefill_title;31, ' .
+ Field::TABLE_NAME . '.prefill_title;31, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.palette.autocomplete;50, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete_additional;51, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -111,13 +127,17 @@
$typeSmallPrefillDescription = 'page, title, type, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;21, ' .
+ Field::TABLE_NAME . '.validation_title;21, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.prefill_title;31, ' .
+ Field::TABLE_NAME . '.prefill_title;31, ' .
'--palette--;Layout;43, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.palette.autocomplete;50, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete_additional;51, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -128,11 +148,15 @@
$typeSmallMandatory = 'page, title, type, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;21, ' .
+ Field::TABLE_NAME . '.validation_title;21, ' .
'--palette--;Layout;43, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.palette.autocomplete;50, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.palette.autocomplete_additional;51, ' .
+ '--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -145,7 +169,7 @@
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;Layout;43, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -157,7 +181,7 @@
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;Layout;43, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -168,13 +192,13 @@
$typeFile = 'page, title, type, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;21, ' .
+ Field::TABLE_NAME . '.validation_title;21, ' .
'--palette--;Layout;41, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- 'tabs.access, sys_language_uid, ' .
+ 'tabs.access, sys_language_uid, ' .
'l10n_parent, l10n_diffsource, hidden, starttime, endtime';
/**
@@ -184,13 +208,13 @@
$typeDate = 'page, title, type, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation_title;21, ' .
+ Field::TABLE_NAME . '.validation_title;21, ' .
'--palette--;Layout;42, ' .
'description, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- 'tabs.access, sys_language_uid, ' .
+ 'tabs.access, sys_language_uid, ' .
'l10n_parent, l10n_diffsource, hidden, starttime, endtime';
/**
@@ -201,7 +225,7 @@
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.sheet1, ' .
'--palette--;Layout;43, ' .
'--palette--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.marker_title;5, ' .
+ Field::TABLE_NAME . '.marker_title;5, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime';
@@ -275,6 +299,12 @@
'showitem' => 'auto_marker, marker, own_marker_select',
'canNotCollapse' => 1,
],
+ '50' => [
+ 'showitem' => 'autocomplete_token,autocomplete_purpose',
+ ],
+ '51' => [
+ 'showitem' => 'autocomplete_section,autocomplete_type',
+ ],
'canNotCollapse' => '1',
],
'types' => [
@@ -420,107 +450,107 @@
'items' => [
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.spacer1',
+ Field::TABLE_NAME . '.type.spacer1',
'value' => '--div--',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.0',
+ Field::TABLE_NAME . '.type.0',
'value' => 'input',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.1',
+ Field::TABLE_NAME . '.type.1',
'value' => 'textarea',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.2',
+ Field::TABLE_NAME . '.type.2',
'value' => 'select',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.3',
+ Field::TABLE_NAME . '.type.3',
'value' => 'check',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.4',
+ Field::TABLE_NAME . '.type.4',
'value' => 'radio',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.5',
+ Field::TABLE_NAME . '.type.5',
'value' => 'submit',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.spacer2',
+ Field::TABLE_NAME . '.type.spacer2',
'value' => '--div--',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.6',
+ Field::TABLE_NAME . '.type.6',
'value' => 'captcha',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.7',
+ Field::TABLE_NAME . '.type.7',
'value' => 'reset',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.8',
+ Field::TABLE_NAME . '.type.8',
'value' => 'text',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.9',
+ Field::TABLE_NAME . '.type.9',
'value' => 'content',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.10',
+ Field::TABLE_NAME . '.type.10',
'value' => 'html',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.11',
+ Field::TABLE_NAME . '.type.11',
'value' => 'password',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.12',
+ Field::TABLE_NAME . '.type.12',
'value' => 'file',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.13',
+ Field::TABLE_NAME . '.type.13',
'value' => 'hidden',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.14',
+ Field::TABLE_NAME . '.type.14',
'value' => 'date',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.17',
+ Field::TABLE_NAME . '.type.17',
'value' => 'country',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.15',
+ Field::TABLE_NAME . '.type.15',
'value' => 'location',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.16',
+ Field::TABLE_NAME . '.type.16',
'value' => 'typoscript',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.spacer3',
+ Field::TABLE_NAME . '.type.spacer3',
'value' => '--div--',
],
],
@@ -620,8 +650,8 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.spacer1',
- 'value' => '--div--',
+ Field::TABLE_NAME . '.type.spacer1',
+ 'value' => '--div--',
],
/**
* EMAIL (+html5)
@@ -631,7 +661,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.1',
+ Field::TABLE_NAME . '.validation.1',
'value' => 1,
],
/**
@@ -642,7 +672,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.2',
+ Field::TABLE_NAME . '.validation.2',
'value' => 2,
],
/**
@@ -655,7 +685,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.3',
+ Field::TABLE_NAME . '.validation.3',
'value' => 3,
],
/**
@@ -666,7 +696,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.4',
+ Field::TABLE_NAME . '.validation.4',
'value' => 4,
],
/**
@@ -677,7 +707,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.5',
+ Field::TABLE_NAME . '.validation.5',
'value' => 5,
],
/**
@@ -685,7 +715,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.spacer2',
+ Field::TABLE_NAME . '.type.spacer2',
'value' => '--div--',
],
/**
@@ -697,7 +727,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.6',
+ Field::TABLE_NAME . '.validation.6',
'value' => 6,
],
/**
@@ -709,7 +739,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.7',
+ Field::TABLE_NAME . '.validation.7',
'value' => 7,
],
/**
@@ -722,7 +752,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.8',
+ Field::TABLE_NAME . '.validation.8',
'value' => 8,
],
/**
@@ -734,7 +764,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.9',
+ Field::TABLE_NAME . '.validation.9',
'value' => 9,
],
/**
@@ -747,7 +777,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.validation.10',
+ Field::TABLE_NAME . '.validation.10',
'value' => 10,
],
/**
@@ -755,7 +785,7 @@
*/
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.type.spacer3',
+ Field::TABLE_NAME . '.type.spacer3',
'value' => '--div--',
],
],
@@ -813,52 +843,52 @@
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.name',
+ Field::TABLE_NAME . '.feuser_value.name',
'value' => 'name',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.address',
+ Field::TABLE_NAME . '.feuser_value.address',
'value' => 'address',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.phone',
+ Field::TABLE_NAME . '.feuser_value.phone',
'value' => 'telephone',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.fax',
+ Field::TABLE_NAME . '.feuser_value.fax',
'value' => 'fax',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.email',
+ Field::TABLE_NAME . '.feuser_value.email',
'value' => 'email',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.zip',
+ Field::TABLE_NAME . '.feuser_value.zip',
'value' => 'zip',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.city',
+ Field::TABLE_NAME . '.feuser_value.city',
'value' => 'city',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.country',
+ Field::TABLE_NAME . '.feuser_value.country',
'value' => 'country',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.www',
+ Field::TABLE_NAME . '.feuser_value.www',
'value' => 'www',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.feuser_value.company',
+ Field::TABLE_NAME . '.feuser_value.company',
'value' => 'company',
],
],
@@ -893,7 +923,7 @@
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.css.1',
- 'value' => 'layout1',
+ 'value' => 'layout1',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.css.2',
@@ -933,17 +963,17 @@
'items' => [
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.datepicker_settings.1',
+ Field::TABLE_NAME . '.datepicker_settings.1',
'value' => 'date',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.datepicker_settings.2',
+ Field::TABLE_NAME . '.datepicker_settings.2',
'value' => 'datetime',
],
[
'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
- Field::TABLE_NAME . '.datepicker_settings.3',
+ Field::TABLE_NAME . '.datepicker_settings.3',
'value' => 'time',
],
],
@@ -1010,7 +1040,7 @@
'renderType' => 'selectSingle',
'items' => [
[
- 'label' =>'',
+ 'label' => '',
'value' => 0,
],
],
@@ -1025,6 +1055,97 @@
'type' => 'none',
],
],
+ 'autocomplete_section' => [
+ 'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.autocomplete_section',
+ 'config' => [
+ 'type' => 'input',
+ 'eval' => 'trim',
+ 'max' => '100',
+ 'behaviour' => [
+ 'allowLanguageSynchronization' => true,
+ ],
+ ],
+ 'displayCond' => [
+ 'AND' => [
+ 'FIELD:type:IN:input,textarea,password,select,country,location,hidden',
+ 'FIELD:autocomplete_token:!IN:on,off,nickname,sex,impp,url,organization-title,username,new-password,current-password,one-time-code,bday,bday-day,bday-month,bday-year,language,photo',
+ 'FIELD:autocomplete_token:REQ:true',
+ ],
+ ],
+ ],
+ 'autocomplete_type' => [
+ 'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.autocomplete_type',
+ 'config' => [
+ 'type' => 'select',
+ 'renderType' => 'selectSingle',
+ 'items' => [
+ ['label' => '', 'value' => ''],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_type.billing', 'value' => 'billing'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_type.shipping', 'value' => 'shipping'],
+ ],
+ ],
+ 'displayCond' => [
+ 'AND' => [
+ 'FIELD:type:IN:input,textarea,select,country,location,hidden',
+ 'FIELD:autocomplete_token:!IN:on,off,nickname,sex,impp,url,organization-title,tel-country-code,tel-area-code,tel-national,tel-local,tel-local-prefix,tel-local-suffix,tel-extension,username,new-password,current-password,one-time-code,bday,bday-day,bday-month,bday-year,language,photo',
+ 'FIELD:autocomplete_token:REQ:true',
+ ],
+ ],
+ ],
+ 'autocomplete_purpose' => [
+ 'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.autocomplete_purpose',
+ 'config' => [
+ 'type' => 'select',
+ 'renderType' => 'selectSingle',
+ 'items' => [
+ ['label' => '', 'value' => ''],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_purpose.home', 'value' => 'home'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_purpose.work', 'value' => 'work'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_purpose.mobile', 'value' => 'mobile'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_purpose.fax', 'value' => 'fax'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_purpose.pager', 'value' => 'pager'],
+ ],
+
+ ],
+ 'displayCond' => [
+ 'AND' => [
+ 'FIELD:type:IN:input,textarea,select,country,location,hidden',
+ 'FIELD:autocomplete_token:IN:email,impp,tel',
+ ],
+ ],
+ ],
+ 'autocomplete_token' => [
+ 'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Field::TABLE_NAME . '.autocomplete_token',
+ 'config' => [
+ 'type' => 'select',
+ 'renderType' => 'selectSingle',
+ 'itemsProcFunc' => 'In2code\Powermail\Tca\AddAutocompleteTokens->getAutocompleteTokens',
+ 'itemsProcConfig' => [
+ 'useDefaultItems' => true,
+ ],
+ 'items' => [
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.none', 'value' => ''],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.on', 'value' => 'on', 'icon' => '', 'group' => 'general'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.off', 'value' => 'off', 'icon' => '', 'group' => 'general'],
+ ],
+ 'itemGroups' => [
+ 'general' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.general',
+ 'name' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.name',
+ 'contact' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.contact',
+ 'address' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.address',
+ 'tel' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.tel',
+ 'bday' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.bday',
+ 'user' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.user',
+ 'cc' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.cc',
+ 'other' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.groups.other',
+ ],
+ 'default' => '',
+ 'behaviour' => [
+ 'allowLanguageSynchronization' => true,
+ ],
+ ],
+ 'displayCond' => 'FIELD:type:IN:'.$fieldsWithAutocompleteOptions,
+ ],
],
];
return $fieldsTca;
diff --git a/Configuration/TCA/tx_powermail_domain_model_form.php b/Configuration/TCA/tx_powermail_domain_model_form.php
index ca3f556be..dbf6df8b1 100644
--- a/Configuration/TCA/tx_powermail_domain_model_form.php
+++ b/Configuration/TCA/tx_powermail_domain_model_form.php
@@ -33,7 +33,7 @@
'showitem' => 'title, pages, note, ' .
'--div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' .
Field::TABLE_NAME . '.sheet1, ' .
- 'css, --div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
+ 'css,autocomplete_token, --div--;LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:tabs.access, ' .
'sys_language_uid, l10n_parent, l10n_diffsource, hidden, starttime, endtime',
],
],
@@ -177,6 +177,23 @@
],
],
],
+ 'autocomplete_token' => [
+ 'label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Form::TABLE_NAME . '.autocomplete_token',
+ 'description' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:' . Form::TABLE_NAME . '.autocomplete_token.description',
+ 'config' => [
+ 'type' => 'select',
+ 'renderType' => 'selectSingle',
+ 'items' => [
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.none', 'value' => ''],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.on', 'value' => 'on'],
+ ['label' => 'LLL:EXT:powermail/Resources/Private/Language/locallang_db.xlf:autocomplete_token.off', 'value' => 'off'],
+ ],
+ 'default' => '',
+ 'behaviour' => [
+ 'allowLanguageSynchronization' => true,
+ ],
+ ],
+ ],
],
];
diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf
index 16eefed23..88f4947c8 100644
--- a/Resources/Private/Language/locallang_db.xlf
+++ b/Resources/Private/Language/locallang_db.xlf
@@ -114,6 +114,9 @@
Pages
+
+ Autocomplete
+
Page
@@ -375,6 +378,24 @@
Email or Name
+
+ Autocomplete options
+
+
+ Additional autocomplete options
+
+
+ Token (optional)
+
+
+ Section (optional)
+
+
+ Purpose (optional)
+
+
+ Type (optional)
+
Answer
@@ -633,6 +654,227 @@
More ...
+
+ Disable attribute (default)
+
+
+ Automatically complete (on)
+
+
+ Do not automatically complete (off)
+
+
+ General
+
+
+ Personal information
+
+
+ Birthday
+
+
+ User information
+
+
+ Contact information
+
+
+ Individual address information
+
+
+ Payment information
+
+
+ Telephone
+
+
+ Other
+
+
+ Full name
+
+
+ Prefix or title
+
+
+ Given (or "first") name
+
+
+ Middle name
+
+
+ Family (or "last") name
+
+
+ Honorific suffix
+
+
+ Nickname
+
+
+ Gender identity
+
+
+ Email address
+
+
+ Instant messaging protocol endpoint
+
+
+ Website
+
+
+ Organization title
+
+
+ Organization
+
+
+ Street address
+
+
+ Address line 1
+
+
+ Address line 2
+
+
+ Address line 3
+
+
+ First administrative level
+
+
+ Second administrative level
+
+
+ Third administrative level
+
+
+ Fourth administrative level
+
+
+ Country or territory code
+
+
+ Country or territory name
+
+
+ Postal code (ZIP)
+
+
+ Full telephone no.
+
+
+ Country code
+
+
+ Area code
+
+
+ Telephone number without the county code component
+
+
+ Telephone number without the country or area code
+
+
+ Exchange number
+
+
+ Number within exchange
+
+
+ Internal extension code
+
+
+ Username
+
+
+ New password
+
+
+ Current password
+
+
+ One-time verification code
+
+
+ Birthday
+
+
+ Day component of birthday
+
+
+ Month component of birthday
+
+
+ Year component of birthday
+
+
+ Full name
+
+
+ Given (or "first") name
+
+
+ Middle name
+
+
+ Family (or "last") name
+
+
+ Identification code, e.g. CC no.
+
+
+ Expiration date
+
+
+ Month component of the expiration date
+
+
+ Year component of the expiration date
+
+
+ Security code
+
+
+ Type of payment instrument
+
+
+ Transaction currency
+
+
+ Transaction amount
+
+
+ Preferred language
+
+
+ Photo
+
+
+
+ Home
+
+
+ Work
+
+
+ Mobile
+
+
+ Fax
+
+
+
+
+ Billing
+
+
+ Shipping
+