Commit b962ed44 authored by alexpott's avatar alexpott

Issue #2152215 by joelpittet, mr.baileys, benjifisher, martin107, rteijeiro,...

Issue #2152215 by joelpittet, mr.baileys, benjifisher, martin107, rteijeiro, hussainweb, shanethehat, jenlampton, kpa, AnythonyR, EVIIILJ, kgoel, Cottser, dsdeiz, hanpersand, bayousoft: Convert theme_form_element_label() to Twig
parent bc7e413d
...@@ -2936,7 +2936,7 @@ function template_preprocess_form_element(&$variables) { ...@@ -2936,7 +2936,7 @@ function template_preprocess_form_element(&$variables) {
} }
/** /**
* Returns HTML for a form element label and required marker. * Prepares variables for form label templates.
* *
* Form element labels include the #title and a #required marker. The label is * Form element labels include the #title and a #required marker. The label is
* associated with the element itself by the element #id. Labels may appear * associated with the element itself by the element #id. Labels may appear
...@@ -2951,53 +2951,46 @@ function template_preprocess_form_element(&$variables) { ...@@ -2951,53 +2951,46 @@ function template_preprocess_form_element(&$variables) {
* required. That is especially important for screenreader users to know * required. That is especially important for screenreader users to know
* which field is required. * which field is required.
* *
* @param $variables * @param array $variables
* An associative array containing: * An associative array containing:
* - element: An associative array containing the properties of the element. * - element: An associative array containing the properties of the element.
* Properties used: #required, #title, #id, #value, #description. * Properties used: #required, #title, #id, #value, #description.
*
* @ingroup themeable
*/ */
function theme_form_element_label($variables) { function template_preprocess_form_element_label(&$variables) {
$element = $variables['element']; $element = $variables['element'];
// If title and required marker are both empty, output no label. // If title and required marker are both empty, output no label.
if ((!isset($element['#title']) || $element['#title'] === '') && empty($element['#required'])) { $variables['title'] = (isset($element['#title']) && $element['#title'] !== '') ? Xss::filterAdmin($element['#title']) : '';
return ''; $variables['attributes'] = array();
}
$title = Xss::filterAdmin($element['#title']);
$attributes = array();
// Style the label as class option to display inline with the element. // Style the label as class option to display inline with the element.
if ($element['#title_display'] == 'after') { if ($element['#title_display'] == 'after') {
$attributes['class'][] = 'option'; $variables['attributes']['class'][] = 'option';
} }
// Show label only to screen readers to avoid disruption in visual flows. // Show label only to screen readers to avoid disruption in visual flows.
elseif ($element['#title_display'] == 'invisible') { elseif ($element['#title_display'] == 'invisible') {
$attributes['class'][] = 'visually-hidden'; $variables['attributes']['class'][] = 'visually-hidden';
} }
// A #for property of a dedicated #type 'label' element as precedence. // A #for property of a dedicated #type 'label' element as precedence.
if (!empty($element['#for'])) { if (!empty($element['#for'])) {
$attributes['for'] = $element['#for']; $variables['attributes']['for'] = $element['#for'];
// A custom #id allows the referenced form input element to refer back to // A custom #id allows the referenced form input element to refer back to
// the label element; e.g., in the 'aria-labelledby' attribute. // the label element; e.g., in the 'aria-labelledby' attribute.
if (!empty($element['#id'])) { if (!empty($element['#id'])) {
$attributes['id'] = $element['#id']; $variables['attributes']['id'] = $element['#id'];
} }
} }
// Otherwise, point to the #id of the form input element. // Otherwise, point to the #id of the form input element.
elseif (!empty($element['#id'])) { elseif (!empty($element['#id'])) {
$attributes['for'] = $element['#id']; $variables['attributes']['for'] = $element['#id'];
} }
// For required elements a 'form-required' class is appended to the // For required elements a 'form-required' class is appended to the
// label attributes. // label attributes.
$variables['required'] = FALSE;
if (!empty($element['#required'])) { if (!empty($element['#required'])) {
$attributes['class'][] = 'form-required'; $variables['required'] = TRUE;
$variables['attributes']['class'][] = 'form-required';
} }
return '<label' . new Attribute($attributes) . '>' . $title . '</label>';
} }
/** /**
......
...@@ -2668,6 +2668,7 @@ function drupal_common_theme() { ...@@ -2668,6 +2668,7 @@ function drupal_common_theme() {
), ),
'form_element_label' => array( 'form_element_label' => array(
'render element' => 'element', 'render element' => 'element',
'template' => 'form-element-label',
), ),
'vertical_tabs' => array( 'vertical_tabs' => array(
'render element' => 'element', 'render element' => 'element',
......
{#
/**
* @file
* Default theme implementation for a form element label.
*
* Available variables:
* - title: The label's text.
* - required: An indicator for whether the associated form element is required.
* - attributes: A list of HTML attributes for the label.
*
* @see template_preprocess_form_element_label()
*
* @ingroup themeable
*/
#}
{% if title is not empty or required -%}
<label{{ attributes }}>{{ title }}</label>
{%- endif %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment