ToggleObjectFeaturesCommandForm: Use a select instead of radio buttons

refs #3957
This commit is contained in:
Johannes Meyer 2019-10-08 09:03:05 +02:00
parent 30a4c62a2a
commit b3c6af4ea6
2 changed files with 44 additions and 8 deletions

View File

@ -80,17 +80,25 @@ class ToggleObjectFeaturesCommandForm extends ObjectsCommandForm
$options['description'] = $this->translate('changed'); $options['description'] = $this->translate('changed');
} }
if ($formData[$feature] === 2) { if ($formData[$feature] === 2) {
$options['multiOptions'] = array( $this->addElement('select', $feature, $options + [
$this->translate('disable'), 'description' => $this->translate('Multiple Values'),
$this->translate('enable'), 'filters' => [['Null', ['type' => \Zend_Filter_Null::STRING]]],
); 'multiOptions' => [
$options['separator'] = ''; '' => $this->translate('Leave Unchanged'),
$elementType = 'radio'; $this->translate('Disable All'),
$this->translate('Enable All')
],
'decorators' => array_merge(
array_slice(static::$defaultElementDecorators, 0, 3),
[['Description', ['tag' => 'span']]],
array_slice(static::$defaultElementDecorators, 4, 1),
[['HtmlTag', ['tag' => 'div', 'class' => 'control-group indeterminate']]]
)
]);
} else { } else {
$elementType = 'checkbox';
$options['value'] = $formData[$feature]; $options['value'] = $formData[$feature];
$this->addElement('checkbox', $feature, $options);
} }
$this->addElement($elementType, $feature, $options);
} }
} }

View File

@ -629,11 +629,39 @@ form.instance-features span.description, form.object-features span.description {
.control-group { .control-group {
margin-top: 0; margin-top: 0;
margin-bottom: 0; margin-bottom: 0;
&.indeterminate {
justify-content: flex-start;
.control-label-group {
flex: 0 1 auto;
}
select {
width: auto;
flex: 0 1 auto;
& + span.hint {
flex: 0 1 auto;
}
}
}
} }
.toggle-switch { .toggle-switch {
margin-left: @table-column-padding; margin-left: @table-column-padding;
} }
select {
margin-right: .5em;
margin-left: @table-column-padding;
& + span.hint {
margin: .35em;
color: @gray-light;
font-style: italic;
}
}
} }
.plugin-output { .plugin-output {