Issue #1520716 by lokapujya, cwells, David Lesieur: "Files displayed by default" not respected

8.0.x
Alex Pott 2015-02-02 12:00:18 +00:00
parent dff5688063
commit d6be512c0e
2 changed files with 33 additions and 2 deletions

View File

@ -351,13 +351,17 @@ class FileWidget extends WidgetBase {
$element['#theme'] = 'file_widget';
// Add the display field if enabled.
if ($element['#display_field'] && $item['fids']) {
if ($element['#display_field']) {
$element['display'] = array(
'#type' => empty($item['fids']) ? 'hidden' : 'checkbox',
'#title' => t('Include file in display'),
'#value' => isset($item['display']) ? $item['display'] : $element['#display_default'],
'#attributes' => array('class' => array('file-display')),
);
if (isset($item['display'])) {
$element['display']['#value'] = $item['display'] ? '1' : '';
} else {
$element['display']['#value'] = $element['#display_default'];
}
}
else {
$element['display'] = array(

View File

@ -93,4 +93,31 @@ class FileFieldDisplayTest extends FileFieldTestBase {
$this->assertRaw($field_name . '[0][display]', 'First file appears as expected.');
$this->assertRaw($field_name . '[1][display]', 'Second file appears as expected.');
}
/**
* Tests default display of File Field.
*/
function testDefaultFileFieldDisplay() {
$field_name = strtolower($this->randomMachineName());
$type_name = 'article';
$field_storage_settings = array(
'display_field' => '1',
'display_default' => '0',
'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
);
$field_settings = array(
'description_field' => '1',
);
$widget_settings = array();
$this->createFileField($field_name, 'node', $type_name, $field_storage_settings, $field_settings, $widget_settings);
$test_file = $this->getTestFile('text');
// Create a new node with the uploaded file.
$nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
$this->drupalGet('node/' . $nid . '/edit');
$this->assertFieldByXPath('//input[@type="checkbox" and @name="' . $field_name . '[0][display]"]', NULL, 'Default file display checkbox field exists.');
$this->assertFieldByXPath('//input[@type="checkbox" and @name="' . $field_name . '[0][display]" and not(@checked)]', NULL, 'Default file display is off.');
}
}