Hi, bin gerade nochmal über diesen Thread gestoßen, hier meine Lösung:
Ich habe die Änderungen direkt im femanager gemacht, ich weiß das ist nicht mehr updatefähig, aber das ist erstmal nebensächlich, das ganze auf eine provider extension zu übertragen sollte man hinbekommen 😉
Ich habe mir meine Anpassungen in eine Readme gepackt:
/*******************************************************************************
Adding field 'information by mail' to registration for ...
/*******************************************************************************
* file: ext_tables.sql
* add info_mail to table 'fe_users'
*/
CREATE TABLE fe_users (
...
info_mail varchar(255) DEFAULT '' NOT NULL,
);
/*******************************************************************************
* file: ext_tables.php
* added infoMail to TCA of fe_users
*/
$tempColumns = array (
...
'info_mail' => array (
'exclude' => 1,
'label' => 'LLL:EXT:femanager/Resources/Private/Language/locallang_db.xlf:tx_femanager_domain_model_user.infoMail',
'config' => array (
'type' => 'select',
'items' => array(
array('LLL:EXT:femanager/Resources/Private/Language/locallang.xlf:tx_femanager_domain_model_user.infoMail.0', 0),
array('LLL:EXT:femanager/Resources/Private/Language/locallang.xlf:tx_femanager_domain_model_user.infoMail.1', 1),
),
'minitems' => 0,
'maxitems' => 999,
'renderMode' => 'checkbox',
)
),
);
...
$fields .= ', info_mail';
/*******************************************************************************
* file: Classes/Domain/Model/User.php
* added infoMail to User-Model
*/
/**
*
* @var \string
*/
protected $infoMail;
/**
* sets infoMail
*
* @param string $infoMail
* @return void
*/
public function setInfoMail($infoMail){
$this->infoMail = $infoMail;
}
/**
* returns infoMail
*
* @return string $infoMail
*/
public function getInfoMail(){
return $this->infoMail;
}
/*******************************************************************************
* file: Classes/Controller/NewController.php
* added implode and set value for infoMail to user
*/
public function createAction(User $user) {
if ($this->request->hasArgument('infoMail')) {
$user->setInfoMail(implode(',', $this->request->getArgument('infoMail')));
}
...
}
/*******************************************************************************
* file: Configuation/TypoScript/Main/setup.txt
* added config for amount of checkboxes
*/
settings {
...
misc {
...
# Number of infoMail options, if overwrite default(2) don't forget to add locallang values in TS or .xlf
infoMailOptionAmount = 2
}
...
}
/*******************************************************************************
* file: Configuation/Flexforms/FlexFormPi1.xml
* added infoMail to Flexform
*/
<settings.new.fields>
...
<items type="array">
...
<numIndex index="20" type="array">
<numIndex index="0">LLL:EXT:femanager/Resources/Private/Language/locallang_db.xlf:tx_femanager_domain_model_user.infoMail</numIndex>
<numIndex index="1">infoMail</numIndex>
</numIndex>
</items>
...
</settings.new.fields>
/*******************************************************************************
* file: Resources/Private/Language/locallang.xlf
* added default FE labels to locallang
*/
<trans-unit id="tx_femanager_domain_model_user.infoMailLabel">
<source>I would like to receive information by email about</source>
</trans-unit>
<trans-unit id="tx_femanager_domain_model_user.infoMail.1">
<source>Option 1</source>
</trans-unit>
<trans-unit id="tx_femanager_domain_model_user.infoMail.2">
<source>Option 2</source>
</trans-unit>
/*******************************************************************************
* file: Resources/Private/Language/locallang_db.xlf
* added default BE labels to locallang_db
*/
<trans-unit id="tx_femanager_domain_model_user.infoMail">
<source>Information by email</source>
</trans-unit>
/*******************************************************************************
* file: Resources/Private/Partial/Fields/InfoMail.html
* added partial for field
*/
{namespace femanager=In2\Femanager\ViewHelpers}
{namespace v=Tx_Vhs_ViewHelpers}
<div class="femanager_fieldset femanager_firstname control-group">
<label for="femanager_field_infoMail" class="control-label">
<f:translate key="tx_femanager_domain_model_user.infoMailLabel" />
<f:if condition="{femanager:Misc.IsRequiredField(fieldName: 'infoMail', actionName: actionName)}">
<span>*</span>
</f:if>
</label>
<v:iterator.for from="1" to="{settings.misc.infoMailOptionAmount}" iteration="i">
<div class="controls">
<f:form.checkbox
id="femanager_field_infoMail_{i.index}"
name="infoMail[]"
class=""
value="<v:math.subtract a='{i.index}' b='1' fail='1' />" />
<f:translate key="tx_femanager_domain_model_user.infoMail.{i.index}" />
</div>
</v:iterator.for>
</div>