diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc index a42bd78..d14062b 100644 --- a/core/modules/file/file.field.inc +++ b/core/modules/file/file.field.inc @@ -433,16 +433,29 @@ function theme_file_widget_multiple($variables) { /** * Returns HTML for help text based on file upload validators. * - * @param $variables + * @param array $variables * An associative array containing: * - description: The normal description for this field, specified by the * user. * - upload_validators: An array of upload validators as used in * $element['#upload_validators']. + * - cardinality: The number of files this field can store. -1 is unlimited. + * - separator: The string used to separate description components. Defaults + * to '
'. * - * @ingroup themeable + * @return string + * A string containing all the components of a file upload field description + * explaining the criteria for uploading files to this field. */ -function theme_file_upload_help($variables) { +function file_upload_description($variables = array()) { + // Merge in defaults. + $variables += array( + 'description' => '', + 'upload_validators' => array(), + 'cardinality' => NULL, + 'separator' => '
', + ); + $description = $variables['description']; $upload_validators = $variables['upload_validators']; $cardinality = $variables['cardinality']; @@ -450,14 +463,14 @@ function theme_file_upload_help($variables) { $descriptions = array(); if (strlen($description)) { - $descriptions[] = _filter_htmlcorrector($description); + $descriptions['description'] = _filter_htmlcorrector($description); } if (isset($cardinality)) { if ($cardinality == -1) { - $descriptions[] = t('Unlimited number of files can be uploaded to this field.'); + $descriptions['cardinality'] = t('Unlimited number of files can be uploaded to this field.'); } else { - $descriptions[] = format_plural($cardinality, 'One file only.', 'Maximum @count files.'); + $descriptions['cardinality'] = format_plural($cardinality, 'One file only.', 'Maximum @count files.'); } } if (isset($upload_validators['file_validate_size'])) { @@ -471,20 +484,23 @@ function theme_file_upload_help($variables) { $max = $upload_validators['file_validate_image_resolution'][0]; $min = $upload_validators['file_validate_image_resolution'][1]; if ($min && $max && $min == $max) { - $descriptions[] = t('Images must be exactly !size pixels.', array('!size' => '' . $max . '')); + $descriptions['file_validate_image_resolution'] = t('Images must be exactly !size pixels.', array('!size' => '' . $max . '')); } elseif ($min && $max) { - $descriptions[] = t('Images must be between !min and !max pixels.', array('!min' => '' . $min . '', '!max' => '' . $max . '')); + $descriptions['file_validate_image_resolution'] = t('Images must be between !min and !max pixels.', array('!min' => '' . $min . '', '!max' => '' . $max . '')); } elseif ($min) { - $descriptions[] = t('Images must be larger than !min pixels.', array('!min' => '' . $min . '')); + $descriptions['file_validate_image_resolution'] = t('Images must be larger than !min pixels.', array('!min' => '' . $min . '')); } elseif ($max) { - $descriptions[] = t('Images must be smaller than !max pixels.', array('!max' => '' . $max . '')); + $descriptions['file_validate_image_resolution'] = t('Images must be smaller than !max pixels.', array('!max' => '' . $max . '')); } } - return implode(' ', $descriptions); + // Allow other modules to modify the description components. + Drupal::moduleHandler()->alter(__FUNCTION__, $descriptions, $variables); + + return implode($variables['separator'], $descriptions); } /** diff --git a/core/modules/file/file.module b/core/modules/file/file.module index f2b0fef..4923a3b 100644 --- a/core/modules/file/file.module +++ b/core/modules/file/file.module @@ -601,9 +601,6 @@ function file_theme() { 'file_formatter_table' => array( 'variables' => array('items' => NULL), ), - 'file_upload_help' => array( - 'variables' => array('description' => NULL, 'upload_validators' => NULL, 'cardinality' => NULL), - ), ); } diff --git a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php index 7ce14b8..1bd6962 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php +++ b/core/modules/file/lib/Drupal/file/Plugin/Field/FieldWidget/FileWidget.php @@ -157,12 +157,7 @@ protected function formMultipleElements(FieldItemListInterface $items, array &$f // field. These are added here so that they may be referenced easily // through a hook_form_alter(). $elements['#file_upload_title'] = t('Add a new file'); - $elements['#file_upload_description'] = array( - '#theme' => 'file_upload_help', - '#description' => '', - '#upload_validators' => $elements[0]['#upload_validators'], - '#cardinality' => $cardinality, - ); + $elements['#file_upload_description'] = file_upload_description(array('description' => '', 'upload_validators' => $elements[0]['#upload_validators'], 'cardinality' => $cardinality)); } return $elements; @@ -221,13 +216,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen $default_fids = $element['#extended'] ? $element['#default_value']['fids'] : $element['#default_value']; if (empty($default_fids)) { - $file_upload_help = array( - '#theme' => 'file_upload_help', - '#description' => $element['#description'], - '#upload_validators' => $element['#upload_validators'], - '#cardinality' => $cardinality, - ); - $element['#description'] = drupal_render($file_upload_help); + $element['#description'] = file_upload_description(array('description' => $element['#description'], 'upload_validators' => $element['#upload_validators'], 'cardinality' => $cardinality)); $element['#multiple'] = $cardinality != 1 ? TRUE : FALSE; if ($cardinality != 1 && $cardinality != -1) { $element['#element_validate'] = array('file_field_widget_multiple_count_validate'); diff --git a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php index 3a37aa0..8699776 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php +++ b/core/modules/image/lib/Drupal/image/Plugin/Field/FieldWidget/ImageWidget.php @@ -87,12 +87,11 @@ protected function formMultipleElements(FieldItemListInterface $items, array &$f if ($cardinality == 1) { // If there's only one field, return it as delta 0. if (empty($elements[0]['#default_value']['fids'])) { - $file_upload_help['#description'] = field_filter_xss($this->fieldDefinition->getFieldDescription()); - $elements[0]['#description'] = drupal_render($file_upload_help); + $elements[0]['#description'] = file_upload_description(array('description' => field_filter_xss($this->fieldDefinition->getFieldDescription()), 'upload_validators' => $elements[0]['#upload_validators'], 'cardinality' => $cardinality)); } } else { - $elements['#file_upload_description'] = drupal_render($file_upload_help); + $elements['#file_upload_description'] = file_upload_description(array('upload_validators' => $elements[0]['#upload_validators'], 'cardinality' => $cardinality)); } return $elements; diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc index 5256244..a3d1e1e 100644 --- a/core/modules/locale/locale.bulk.inc +++ b/core/modules/locale/locale.bulk.inc @@ -56,7 +56,7 @@ function locale_translate_import_form($form, &$form_state) { $form['file'] = array( '#type' => 'file', '#title' => t('Translation file'), - '#description' => theme('file_upload_help', array('description' => t('A Gettext Portable Object file.'), 'upload_validators' => $validators)), + '#description' => file_upload_description(array('description' => t('A Gettext Portable Object file.'), 'upload_validators' => $validators)), '#size' => 50, '#upload_validators' => $validators, '#attributes' => array('class' => array('file-import-input')),