Form element validation handler for #type 'color'.
function form_validate_color(&$element, &$form_state) {
$value = trim($element['#value']);
// Default to black if no value is given.
// @see http://www.w3.org/TR/html5/number-state.html#color-state
if ($value === '') {
form_set_value($element, '#000000', $form_state);
}
else {
// Try to parse the value and normalize it.
try {
form_set_value($element, Color::rgbToHex(Color::hexToRgb($value)), $form_state);
} catch (InvalidArgumentException $e) {
form_error($element, t('%name must be a valid color.', array(
'%name' => empty($element['#title']) ? $element['#parents'][0] : $element['#title'],
)));
}
}
}