madeyourday/contao-rocksolid-custom-elements

dependsOn = Mandatory

kgansberger opened this issue · 11 comments

an error occurs if dependsOn is true and field has 'mandatory'=>'true' .

ausi commented

Can you provide a small example configuration?

...
'insertImage' => array(
	'label'                   => array('de' => array('Bild einfügen','')),
	'default'               => 0,
	'inputType'          => 'checkbox',
	'eval'                    => array('tl_class'=>'w50'),
),
'image' => array(
	'label'                   => array('Bild wählen',''),
	'inputType'               => 'fileTree',
	'default'                 => 0,
	'dependsOn' => array(
		'field' => 'insertImage',  
		'value' => '1',
	),
	'eval'                    => array('mandatory'=>'true', 'fieldType'=>'radio', 'files'=>true, 'filesOnly'=>true, 'tl_class'=>'clr'), 
        'extensions'=>GLOBALS['TL_CONFIG']['validImageTypes']),
),
...

and before I forget: thank you for this great functionality!

ausi commented

Could you please verify if the current master branch works correctly?

"madeyourday/contao-rocksolid-custom-elements": "dev-master as 2.3.999",

I can confirm this behavior too although I copied your changed javascript.

If I have 2 fields with mandatory while one of them is hidden and I try to save the content element the console shows following error message

An invalid form control with name='vimeo' is not focusable

My code in the config file

'showYoutubeVimeo' => array(
			'label' => array(
				'en' => array('Add YouTube or Vimeo', 'If you want to add a Vimeo or YouTube video, please, choose of the options'),
				'de' => array('YouTube oder Vimeo hinzufügen', 'Wenn du ein YouTube- oder Vimeo-Video hinzufügen willst, wähle eine der Optionen.'),
			),
			'inputType' => 'select',
			'options' => array(
				'',
				'showYoutube',
				'showVimeo',
			),
			'reference' => array(
				'' => array('en' => '', 'de' => ''),
				'showYoutube' => array('en' => 'Add an YouTube video', 'de' => 'Ein YouTube-Video hinzufügen'),
				'showVimeo' => array('en' => 'Add a Vimeo video', 'de' => 'Ein Vimeo-Video hinzufügen'),
			),
			'eval' => array(
				'tl_class' => 'w50',
			),
		),
		'youtube' => array (
			'exclude' => false,
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => 'showYoutube',      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
			'eval' => array('mandatory'=>true, 'decodeEntities'=>true, 'tl_class'=>'long clr'),
		),
		'vimeo' => array (
			'exclude' => false,
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => 'showVimeo',      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
			'eval' => array('mandatory'=>true, 'decodeEntities'=>true, 'tl_class'=>'long clr'),
		),
		'playerSize' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => array('showYoutube', 'showVimeo'),      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'playerStart' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => array('showYoutube', 'showVimeo'),    // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'playerStop' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => 'showYoutube',      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'playerColor' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => 'showVimeo',     // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'playerCaption' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => array('showYoutube', 'showVimeo'),     // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'playerAspect' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => array('showYoutube', 'showVimeo'),      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'splashImage' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => array('showYoutube', 'showVimeo'),      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
			'eval' => array('tl_class' => 'long clr'),
		),
		'youtubeOptions' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => 'showYoutube',      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
		'vimeoOptions' => array
		(
			'inputType' => 'standardField',
			'dependsOn' => array(
				'field' => 'showYoutubeVimeo',  // Name des Feldes das geprüft werden soll
				'value' => 'showVimeo',      // Der Wert der mit dem Feldwert übereinstimmen muss
			),
		),
ausi commented

I can confirm this behavior too although I copied your changed javascript.

Did you clear your browser cache afterwards or tried the feature in the inkognito mode of your browser?

Yes, I tried it in the incognito mode (Chrome) and unfortunately, it did work. As I mentioned I copied only the new part of your javascript.

ausi commented

Please try the current master branch if the issue appears there too:

"madeyourday/contao-rocksolid-custom-elements": "dev-master as 2.3.999",

I tried it. But it didn't work as expected. There is the same error message in the console if I don't fill out the second mandatory field which is currently in the hidden part.

An invalid form control with name='vimeo' is not focusable.

ausi commented

Could you please try it again with "dev-master as 2.3.999"?
I think your case did’t work because you used standardFields, this should be fixed now too.

Hello, it seems to work. Thank you very much.

ausi commented

Released as version 2.3.5