| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?php/** * @file * Stub file for bootstrap_form_element_label(). *//** * Returns HTML for a form element label and required marker. * * 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 * before or after elements, depending on theme_form_element() and * #title_display. * * This function will not be called for elements with no labels, depending on * #title_display. For elements that have an empty #title and are not required, * this function will output no label (''). For required elements that have an * empty #title, this will output the required marker alone within the label. * The label will use the #id to associate the marker with the field that is * required. That is especially important for screenreader users to know * which field is required. * * @param array $variables *   An associative array containing: *   - element: An associative array containing the properties of the element. *     Properties used: #required, #title, #id, #value, #description. * * @return string *   The constructed HTML. * * @see theme_form_element_label() * * @ingroup theme_functions */function bootstrap_form_element_label(array &$variables) {  $element = $variables['element'];  // Extract variables.  $output = '';  $title = !empty($element['#title']) ? filter_xss_admin($element['#title']) : '';  // Only show the required marker if there is an actual title to display.  $marker = array('#theme' => 'form_required_marker', '#element' => $element);  if ($title && $required = !empty($element['#required']) ? drupal_render($marker) : '') {    $title .= ' ' . $required;  }  $display = isset($element['#title_display']) ? $element['#title_display'] : 'before';  $type = !empty($element['#type']) ? $element['#type'] : FALSE;  $checkbox = $type && $type === 'checkbox';  $radio = $type && $type === 'radio';  // Immediately return if the element is not a checkbox or radio and there is  // no label to be rendered.  if (!$checkbox && !$radio && ($display === 'none' || !$title)) {    return '';  }  // Retrieve the label attributes array.  $attributes = &_bootstrap_get_attributes($element, 'label_attributes');  // Add Bootstrap label class.  $attributes['class'][] = 'control-label';  // Add the necessary 'for' attribute if the element ID exists.  if (!empty($element['#id'])) {    $attributes['for'] = $element['#id'];  }  // Checkboxes and radios must construct the label differently.  if ($checkbox || $radio) {    if ($display === 'before') {      $output .= $title;    }    elseif ($display === 'none' || $display === 'invisible') {      $output .= '<span class="element-invisible">' . $title . '</span>';    }    // Inject the rendered checkbox or radio element inside the label.    if (!empty($element['#children'])) {      $output .= $element['#children'];    }    if ($display === 'after') {      $output .= $title;    }  }  // Otherwise, just render the title as the label.  else {    // Show label only to screen readers to avoid disruption in visual flows.    if ($display === 'invisible') {      $attributes['class'][] = 'element-invisible';    }    $output .= $title;  }  // The leading whitespace helps visually separate fields from inline labels.  return ' <label' . drupal_attributes($attributes) . '>' . $output . "</label>\n";}
 |