Issue #2677990 by DuaelFr, agomezmoron, heykarthikwithu, gvso, alexpott, Wim Leers, larowlan: Add a setting on "Table of files" and "Generic files" formatters to use files descriptions (or not)
							parent
							
								
									2d25dc4c2d
								
							
						
					
					
						commit
						daf25aa9f6
					
				| 
						 | 
					@ -129,11 +129,14 @@ class MigrateFieldFormatterSettingsTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    // Test the file field formatter settings.
 | 
					    // Test the file field formatter settings.
 | 
				
			||||||
    $expected['weight'] = 8;
 | 
					    $expected['weight'] = 8;
 | 
				
			||||||
    $expected['type'] = 'file_default';
 | 
					    $expected['type'] = 'file_default';
 | 
				
			||||||
    $expected['settings'] = [];
 | 
					    $expected['settings'] = [
 | 
				
			||||||
 | 
					      'use_description_as_link_text' => TRUE
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
    $component = $display->getComponent('field_test_filefield');
 | 
					    $component = $display->getComponent('field_test_filefield');
 | 
				
			||||||
    $this->assertIdentical($expected, $component);
 | 
					    $this->assertIdentical($expected, $component);
 | 
				
			||||||
    $display = EntityViewDisplay::load('node.story.default');
 | 
					    $display = EntityViewDisplay::load('node.story.default');
 | 
				
			||||||
    $expected['type'] = 'file_url_plain';
 | 
					    $expected['type'] = 'file_url_plain';
 | 
				
			||||||
 | 
					    $expected['settings'] = [];
 | 
				
			||||||
    $component = $display->getComponent('field_test_filefield');
 | 
					    $component = $display->getComponent('field_test_filefield');
 | 
				
			||||||
    $this->assertIdentical($expected, $component);
 | 
					    $this->assertIdentical($expected, $component);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,13 +73,17 @@ field.field_settings.file:
 | 
				
			||||||
field.formatter.settings.file_default:
 | 
					field.formatter.settings.file_default:
 | 
				
			||||||
  type: mapping
 | 
					  type: mapping
 | 
				
			||||||
  label: 'Generic file format settings'
 | 
					  label: 'Generic file format settings'
 | 
				
			||||||
 | 
					  mapping:
 | 
				
			||||||
 | 
					    use_description_as_link_text:
 | 
				
			||||||
 | 
					      type: boolean
 | 
				
			||||||
 | 
					      label: 'Replace the file name by its description when available'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
field.formatter.settings.file_rss_enclosure:
 | 
					field.formatter.settings.file_rss_enclosure:
 | 
				
			||||||
  type: mapping
 | 
					  type: mapping
 | 
				
			||||||
  label: 'RSS enclosure format settings'
 | 
					  label: 'RSS enclosure format settings'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
field.formatter.settings.file_table:
 | 
					field.formatter.settings.file_table:
 | 
				
			||||||
  type: mapping
 | 
					  type: field.formatter.settings.file_default
 | 
				
			||||||
  label: 'Table of files format settings'
 | 
					  label: 'Table of files format settings'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
field.formatter.settings.file_url_plain:
 | 
					field.formatter.settings.file_url_plain:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,8 @@
 | 
				
			||||||
 * Install, update and uninstall functions for File module.
 | 
					 * Install, update and uninstall functions for File module.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Core\Entity\Entity\EntityViewDisplay;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Implements hook_schema().
 | 
					 * Implements hook_schema().
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -128,3 +130,37 @@ function file_update_8300() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return t('Files that have no remaining usages are no longer deleted by default.');
 | 
					  return t('Files that have no remaining usages are no longer deleted by default.');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Add 'use_description_as_link_text' setting to file field formatters.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function file_update_8001() {
 | 
				
			||||||
 | 
					  $displays = EntityViewDisplay::loadMultiple();
 | 
				
			||||||
 | 
					  foreach ($displays as $display) {
 | 
				
			||||||
 | 
					    /** @var \Drupal\Core\Entity\Entity\EntityViewDisplay $display */
 | 
				
			||||||
 | 
					    $fields_settings = $display->get('content');
 | 
				
			||||||
 | 
					    $changed = FALSE;
 | 
				
			||||||
 | 
					    foreach ($fields_settings as $field_name => $settings) {
 | 
				
			||||||
 | 
					      if (!empty($settings['type'])) {
 | 
				
			||||||
 | 
					        switch ($settings['type']) {
 | 
				
			||||||
 | 
					          // The file_table formatter never displayed available descriptions
 | 
				
			||||||
 | 
					          // before, so we disable this option to ensure backward compatibility.
 | 
				
			||||||
 | 
					          case 'file_table':
 | 
				
			||||||
 | 
					            $fields_settings[$field_name]['settings']['use_description_as_link_text'] = FALSE;
 | 
				
			||||||
 | 
					            $changed = TRUE;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          // The file_default formatter always displayed available descriptions
 | 
				
			||||||
 | 
					          // before, so we enable this option to ensure backward compatibility.
 | 
				
			||||||
 | 
					          case 'file_default':
 | 
				
			||||||
 | 
					            $fields_settings[$field_name]['settings']['use_description_as_link_text'] = TRUE;
 | 
				
			||||||
 | 
					            $changed = TRUE;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if ($changed === TRUE) {
 | 
				
			||||||
 | 
					      $display->set('content', $fields_settings)->save();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\file\Plugin\Field\FieldFormatter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Core\Form\FormStateInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Base class for file formatters that have to deal with file descriptions.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					abstract class DescriptionAwareFileFormatterBase extends FileFormatterBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public static function defaultSettings() {
 | 
				
			||||||
 | 
					    $settings = parent::defaultSettings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $settings['use_description_as_link_text'] = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $settings;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function settingsForm(array $form, FormStateInterface $form_state) {
 | 
				
			||||||
 | 
					    $form = parent::settingsForm($form, $form_state);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $form['use_description_as_link_text'] = [
 | 
				
			||||||
 | 
					      '#title' => $this->t('Use description as link text'),
 | 
				
			||||||
 | 
					      '#description' => $this->t('Replace the file name by its description when available'),
 | 
				
			||||||
 | 
					      '#type' => 'checkbox',
 | 
				
			||||||
 | 
					      '#default_value' => $this->getSetting('use_description_as_link_text'),
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $form;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function settingsSummary() {
 | 
				
			||||||
 | 
					    $summary = parent::settingsSummary();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($this->getSetting('use_description_as_link_text')) {
 | 
				
			||||||
 | 
					      $summary[] = $this->t('Use description as link text');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $summary;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ use Drupal\Core\Field\FieldItemListInterface;
 | 
				
			||||||
 *   }
 | 
					 *   }
 | 
				
			||||||
 * )
 | 
					 * )
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class GenericFileFormatter extends FileFormatterBase {
 | 
					class GenericFileFormatter extends DescriptionAwareFileFormatterBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ class GenericFileFormatter extends FileFormatterBase {
 | 
				
			||||||
      $elements[$delta] = [
 | 
					      $elements[$delta] = [
 | 
				
			||||||
        '#theme' => 'file_link',
 | 
					        '#theme' => 'file_link',
 | 
				
			||||||
        '#file' => $file,
 | 
					        '#file' => $file,
 | 
				
			||||||
        '#description' => $item->description,
 | 
					        '#description' => $this->getSetting('use_description_as_link_text') ? $item->description : NULL,
 | 
				
			||||||
        '#cache' => [
 | 
					        '#cache' => [
 | 
				
			||||||
          'tags' => $file->getCacheTags(),
 | 
					          'tags' => $file->getCacheTags(),
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,7 +15,7 @@ use Drupal\Core\Field\FieldItemListInterface;
 | 
				
			||||||
 *   }
 | 
					 *   }
 | 
				
			||||||
 * )
 | 
					 * )
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class TableFormatter extends FileFormatterBase {
 | 
					class TableFormatter extends DescriptionAwareFileFormatterBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
| 
						 | 
					@ -27,11 +27,13 @@ class TableFormatter extends FileFormatterBase {
 | 
				
			||||||
      $header = [t('Attachment'), t('Size')];
 | 
					      $header = [t('Attachment'), t('Size')];
 | 
				
			||||||
      $rows = [];
 | 
					      $rows = [];
 | 
				
			||||||
      foreach ($files as $delta => $file) {
 | 
					      foreach ($files as $delta => $file) {
 | 
				
			||||||
 | 
					        $item = $file->_referringItem;
 | 
				
			||||||
        $rows[] = [
 | 
					        $rows[] = [
 | 
				
			||||||
          [
 | 
					          [
 | 
				
			||||||
            'data' => [
 | 
					            'data' => [
 | 
				
			||||||
              '#theme' => 'file_link',
 | 
					              '#theme' => 'file_link',
 | 
				
			||||||
              '#file' => $file,
 | 
					              '#file' => $file,
 | 
				
			||||||
 | 
					              '#description' => $this->getSetting('use_description_as_link_text') ? $item->description : NULL,
 | 
				
			||||||
              '#cache' => [
 | 
					              '#cache' => [
 | 
				
			||||||
                'tags' => $file->getCacheTags(),
 | 
					                'tags' => $file->getCacheTags(),
 | 
				
			||||||
              ],
 | 
					              ],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@ namespace Drupal\file\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Field\FieldStorageDefinitionInterface;
 | 
					use Drupal\Core\Field\FieldStorageDefinitionInterface;
 | 
				
			||||||
use Drupal\file\Entity\File;
 | 
					use Drupal\file\Entity\File;
 | 
				
			||||||
 | 
					use Drupal\node\Entity\Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Tests the display of file fields in node and views.
 | 
					 * Tests the display of file fields in node and views.
 | 
				
			||||||
| 
						 | 
					@ -173,4 +174,49 @@ class FileFieldDisplayTest extends FileFieldTestBase {
 | 
				
			||||||
    $this->assertText(t('The description may be used as the label of the link to the file.'));
 | 
					    $this->assertText(t('The description may be used as the label of the link to the file.'));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Tests description display of File Field.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function testDescriptionDefaultFileFieldDisplay() {
 | 
				
			||||||
 | 
					    $field_name = strtolower($this->randomMachineName());
 | 
				
			||||||
 | 
					    $type_name = 'article';
 | 
				
			||||||
 | 
					    $field_storage_settings = [
 | 
				
			||||||
 | 
					      'display_field' => '1',
 | 
				
			||||||
 | 
					      'display_default' => '1',
 | 
				
			||||||
 | 
					      'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					    $field_settings = [
 | 
				
			||||||
 | 
					      'description_field' => '1',
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					    $widget_settings = [];
 | 
				
			||||||
 | 
					    $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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Add file description.
 | 
				
			||||||
 | 
					    $description = 'This is the test file description';
 | 
				
			||||||
 | 
					    $this->drupalPostForm("node/$nid/edit", [$field_name . '[0][description]' => $description], t('Save'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Load uncached node.
 | 
				
			||||||
 | 
					    \Drupal::entityTypeManager()->getStorage('node')->resetCache([$nid]);
 | 
				
			||||||
 | 
					    $node = Node::load($nid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Test default formatter.
 | 
				
			||||||
 | 
					    $this->drupalGet('node/' . $nid);
 | 
				
			||||||
 | 
					    $this->assertFieldByXPath('//a[@href="' . $node->{$field_name}->entity->url() . '"]', $description);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Change formatter to "Table of files".
 | 
				
			||||||
 | 
					    $display = \Drupal::entityTypeManager()->getStorage('entity_view_display')->load('node.' . $type_name . '.default');
 | 
				
			||||||
 | 
					    $display->setComponent($field_name, [
 | 
				
			||||||
 | 
					      'label' => 'hidden',
 | 
				
			||||||
 | 
					      'type' => 'file_table',
 | 
				
			||||||
 | 
					    ])->save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $this->drupalGet('node/' . $nid);
 | 
				
			||||||
 | 
					    $this->assertFieldByXPath('//a[@href="' . $node->{$field_name}->entity->url() . '"]', $description);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\file\Tests\Update;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\system\Tests\Update\UpdatePathTestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Tests File update path.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @group file
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class FileUpdateTest extends UpdatePathTestBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Modules to enable after the database is loaded.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected static $modules = ['file'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected function setDatabaseDumpFiles() {
 | 
				
			||||||
 | 
					    $this->databaseDumpFiles = [
 | 
				
			||||||
 | 
					      __DIR__ . '/../../../../system/tests/fixtures/update/drupal-8.bare.standard.php.gz',
 | 
				
			||||||
 | 
					      __DIR__ . '/../../../tests/fixtures/update/drupal-8.file_formatters_update_2677990.php',
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Tests file_update_8001().
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function testPostUpdate8001() {
 | 
				
			||||||
 | 
					    $view = 'core.entity_view_display.node.article.default';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check that field_file_generic formatter has no
 | 
				
			||||||
 | 
					    // use_description_as_link_text setting.
 | 
				
			||||||
 | 
					    $formatter_settings = $this->config($view)->get('content.field_file_generic_2677990.settings');
 | 
				
			||||||
 | 
					    $this->assertTrue(!isset($formatter_settings['use_description_as_link_text']));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check that field_file_table formatter has no use_description_as_link_text
 | 
				
			||||||
 | 
					    // setting.
 | 
				
			||||||
 | 
					    $formatter_settings = $this->config($view)->get('content.field_file_table_2677990.settings');
 | 
				
			||||||
 | 
					    $this->assertTrue(!isset($formatter_settings['use_description_as_link_text']));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Run updates.
 | 
				
			||||||
 | 
					    $this->runUpdates();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check that field_file_generic formatter has a
 | 
				
			||||||
 | 
					    // use_description_as_link_text setting which value is TRUE.
 | 
				
			||||||
 | 
					    $formatter_settings = $this->config($view)->get('content.field_file_generic_2677990.settings');
 | 
				
			||||||
 | 
					    $this->assertEqual($formatter_settings, ['use_description_as_link_text' => TRUE]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check that field_file_table formatter has a use_description_as_link_text
 | 
				
			||||||
 | 
					    // setting which value is FALSE.
 | 
				
			||||||
 | 
					    $formatter_settings = $this->config($view)->get('content.field_file_table_2677990.settings');
 | 
				
			||||||
 | 
					    $this->assertEqual($formatter_settings, ['use_description_as_link_text' => FALSE]);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					uuid: 9ca49b35-b49d-4014-9337-965cdf15b61e
 | 
				
			||||||
 | 
					langcode: en
 | 
				
			||||||
 | 
					status: true
 | 
				
			||||||
 | 
					dependencies:
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					    - field.field.node.article.body
 | 
				
			||||||
 | 
					    - field.field.node.article.comment
 | 
				
			||||||
 | 
					    - field.field.node.article.field_file_generic_2677990
 | 
				
			||||||
 | 
					    - field.field.node.article.field_file_table_2677990
 | 
				
			||||||
 | 
					    - field.field.node.article.field_image
 | 
				
			||||||
 | 
					    - field.field.node.article.field_tags
 | 
				
			||||||
 | 
					    - image.style.large
 | 
				
			||||||
 | 
					    - node.type.article
 | 
				
			||||||
 | 
					  module:
 | 
				
			||||||
 | 
					    - comment
 | 
				
			||||||
 | 
					    - file
 | 
				
			||||||
 | 
					    - image
 | 
				
			||||||
 | 
					    - text
 | 
				
			||||||
 | 
					    - user
 | 
				
			||||||
 | 
					_core:
 | 
				
			||||||
 | 
					  default_config_hash: JtAg_-waIt1quMtdDtHIaXJMxvTuSmxW7bWyO6Zd68E
 | 
				
			||||||
 | 
					id: node.article.default
 | 
				
			||||||
 | 
					targetEntityType: node
 | 
				
			||||||
 | 
					bundle: article
 | 
				
			||||||
 | 
					mode: default
 | 
				
			||||||
 | 
					content:
 | 
				
			||||||
 | 
					  body:
 | 
				
			||||||
 | 
					    type: text_default
 | 
				
			||||||
 | 
					    weight: 0
 | 
				
			||||||
 | 
					    settings: {  }
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					    label: hidden
 | 
				
			||||||
 | 
					  comment:
 | 
				
			||||||
 | 
					    label: above
 | 
				
			||||||
 | 
					    type: comment_default
 | 
				
			||||||
 | 
					    weight: 20
 | 
				
			||||||
 | 
					    settings:
 | 
				
			||||||
 | 
					      pager_id: 0
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					  field_file_generic_2677990:
 | 
				
			||||||
 | 
					    weight: 101
 | 
				
			||||||
 | 
					    label: above
 | 
				
			||||||
 | 
					    settings: {  }
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					    type: file_default
 | 
				
			||||||
 | 
					  field_file_table_2677990:
 | 
				
			||||||
 | 
					    weight: 102
 | 
				
			||||||
 | 
					    label: above
 | 
				
			||||||
 | 
					    settings: {  }
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					    type: file_table
 | 
				
			||||||
 | 
					  field_image:
 | 
				
			||||||
 | 
					    type: image
 | 
				
			||||||
 | 
					    weight: -1
 | 
				
			||||||
 | 
					    settings:
 | 
				
			||||||
 | 
					      image_style: large
 | 
				
			||||||
 | 
					      image_link: ''
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					    label: hidden
 | 
				
			||||||
 | 
					  field_tags:
 | 
				
			||||||
 | 
					    type: entity_reference_label
 | 
				
			||||||
 | 
					    weight: 10
 | 
				
			||||||
 | 
					    label: above
 | 
				
			||||||
 | 
					    settings:
 | 
				
			||||||
 | 
					      link: true
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					  links:
 | 
				
			||||||
 | 
					    weight: 100
 | 
				
			||||||
 | 
					    settings: {  }
 | 
				
			||||||
 | 
					    third_party_settings: {  }
 | 
				
			||||||
 | 
					hidden: {  }
 | 
				
			||||||
							
								
								
									
										88
									
								
								core/modules/file/tests/fixtures/update/drupal-8.file_formatters_update_2677990.php
								
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										88
									
								
								core/modules/file/tests/fixtures/update/drupal-8.file_formatters_update_2677990.php
								
								
								
									vendored
								
								
									Normal file
								
							| 
						 | 
					@ -0,0 +1,88 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains database additions to drupal-8.bare.standard.php.gz for testing the
 | 
				
			||||||
 | 
					 * upgrade path of https://www.drupal.org/node/2677990.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
 | 
					use Drupal\Component\Serialization\Yaml;
 | 
				
			||||||
 | 
					use Drupal\field\Entity\FieldStorageConfig;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$connection = Database::getConnection();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Configuration for a file field storage for generic display.
 | 
				
			||||||
 | 
					$field_file_generic_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/field.storage.node.field_file_generic_2677990.yml'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Configuration for a file field storage for table display.
 | 
				
			||||||
 | 
					$field_file_table_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/field.storage.node.field_file_table_2677990.yml'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$connection->insert('config')
 | 
				
			||||||
 | 
					  ->fields([
 | 
				
			||||||
 | 
					    'collection',
 | 
				
			||||||
 | 
					    'name',
 | 
				
			||||||
 | 
					    'data',
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->values([
 | 
				
			||||||
 | 
					    'collection' => '',
 | 
				
			||||||
 | 
					    'name' => 'field.storage.' . $field_file_generic_2677990['id'],
 | 
				
			||||||
 | 
					    'data' => serialize($field_file_generic_2677990),
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->values([
 | 
				
			||||||
 | 
					    'collection' => '',
 | 
				
			||||||
 | 
					    'name' => 'field.storage.' . $field_file_table_2677990['id'],
 | 
				
			||||||
 | 
					    'data' => serialize($field_file_table_2677990),
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->execute();
 | 
				
			||||||
 | 
					// We need to Update the registry of "last installed" field definitions.
 | 
				
			||||||
 | 
					$installed = $connection->select('key_value')
 | 
				
			||||||
 | 
					  ->fields('key_value', ['value'])
 | 
				
			||||||
 | 
					  ->condition('collection', 'entity.definitions.installed')
 | 
				
			||||||
 | 
					  ->condition('name', 'node.field_storage_definitions')
 | 
				
			||||||
 | 
					  ->execute()
 | 
				
			||||||
 | 
					  ->fetchField();
 | 
				
			||||||
 | 
					$installed = unserialize($installed);
 | 
				
			||||||
 | 
					$installed['field_file_generic_2677990'] = new FieldStorageConfig($field_file_generic_2677990);
 | 
				
			||||||
 | 
					$installed['field_file_table_2677990'] = new FieldStorageConfig($field_file_table_2677990);
 | 
				
			||||||
 | 
					$connection->update('key_value')
 | 
				
			||||||
 | 
					  ->condition('collection', 'entity.definitions.installed')
 | 
				
			||||||
 | 
					  ->condition('name', 'node.field_storage_definitions')
 | 
				
			||||||
 | 
					  ->fields([
 | 
				
			||||||
 | 
					    'value' => serialize($installed)
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Configuration for a file field storage for generic display.
 | 
				
			||||||
 | 
					$field_file_generic_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/field.field.node.article.field_file_generic_2677990.yml'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Configuration for a file field storage for table display.
 | 
				
			||||||
 | 
					$field_file_table_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/field.field.node.article.field_file_table_2677990.yml'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$connection->insert('config')
 | 
				
			||||||
 | 
					  ->fields([
 | 
				
			||||||
 | 
					    'collection',
 | 
				
			||||||
 | 
					    'name',
 | 
				
			||||||
 | 
					    'data',
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->values([
 | 
				
			||||||
 | 
					    'collection' => '',
 | 
				
			||||||
 | 
					    'name' => 'field.field.' . $field_file_generic_2677990['id'],
 | 
				
			||||||
 | 
					    'data' => serialize($field_file_generic_2677990),
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->values([
 | 
				
			||||||
 | 
					    'collection' => '',
 | 
				
			||||||
 | 
					    'name' => 'field.field.' . $field_file_table_2677990['id'],
 | 
				
			||||||
 | 
					    'data' => serialize($field_file_table_2677990),
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Configuration of the view mode to set the proper formatters.
 | 
				
			||||||
 | 
					$view_mode_2677990 = Yaml::decode(file_get_contents(__DIR__ . '/core.entity_view_display.node.article.default_2677990.yml'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$connection->update('config')
 | 
				
			||||||
 | 
					  ->fields([
 | 
				
			||||||
 | 
					    'data' => serialize($view_mode_2677990),
 | 
				
			||||||
 | 
					  ])
 | 
				
			||||||
 | 
					  ->condition('name', 'core.entity_view_display.' . $view_mode_2677990['id'])
 | 
				
			||||||
 | 
					  ->execute();
 | 
				
			||||||
							
								
								
									
										27
									
								
								core/modules/file/tests/fixtures/update/field.field.node.article.field_file_generic_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										27
									
								
								core/modules/file/tests/fixtures/update/field.field.node.article.field_file_generic_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					uuid: d352a831-c267-4ecc-9b4e-7ae1896b2241
 | 
				
			||||||
 | 
					langcode: en
 | 
				
			||||||
 | 
					status: true
 | 
				
			||||||
 | 
					dependencies:
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					    - field.storage.node.field_file_generic_2677990
 | 
				
			||||||
 | 
					    - node.type.article
 | 
				
			||||||
 | 
					  module:
 | 
				
			||||||
 | 
					    - file
 | 
				
			||||||
 | 
					id: node.article.field_file_generic_2677990
 | 
				
			||||||
 | 
					field_name: field_file_generic_2677990
 | 
				
			||||||
 | 
					entity_type: node
 | 
				
			||||||
 | 
					bundle: article
 | 
				
			||||||
 | 
					label: 'File generic'
 | 
				
			||||||
 | 
					description: ''
 | 
				
			||||||
 | 
					required: false
 | 
				
			||||||
 | 
					translatable: false
 | 
				
			||||||
 | 
					default_value: {  }
 | 
				
			||||||
 | 
					default_value_callback: ''
 | 
				
			||||||
 | 
					settings:
 | 
				
			||||||
 | 
					  file_directory: '[date:custom:Y]-[date:custom:m]'
 | 
				
			||||||
 | 
					  file_extensions: txt
 | 
				
			||||||
 | 
					  max_filesize: ''
 | 
				
			||||||
 | 
					  description_field: true
 | 
				
			||||||
 | 
					  handler: 'default:file'
 | 
				
			||||||
 | 
					  handler_settings: {  }
 | 
				
			||||||
 | 
					field_type: file
 | 
				
			||||||
							
								
								
									
										27
									
								
								core/modules/file/tests/fixtures/update/field.field.node.article.field_file_table_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										27
									
								
								core/modules/file/tests/fixtures/update/field.field.node.article.field_file_table_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					uuid: 44c7a590-ffcc-4534-b01c-b17b8d57ed48
 | 
				
			||||||
 | 
					langcode: en
 | 
				
			||||||
 | 
					status: true
 | 
				
			||||||
 | 
					dependencies:
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					    - field.storage.node.field_file_table_2677990
 | 
				
			||||||
 | 
					    - node.type.article
 | 
				
			||||||
 | 
					  module:
 | 
				
			||||||
 | 
					    - file
 | 
				
			||||||
 | 
					id: node.article.field_file_table_2677990
 | 
				
			||||||
 | 
					field_name: field_file_table_2677990
 | 
				
			||||||
 | 
					entity_type: node
 | 
				
			||||||
 | 
					bundle: article
 | 
				
			||||||
 | 
					label: 'File table'
 | 
				
			||||||
 | 
					description: ''
 | 
				
			||||||
 | 
					required: false
 | 
				
			||||||
 | 
					translatable: false
 | 
				
			||||||
 | 
					default_value: {  }
 | 
				
			||||||
 | 
					default_value_callback: ''
 | 
				
			||||||
 | 
					settings:
 | 
				
			||||||
 | 
					  file_directory: '[date:custom:Y]-[date:custom:m]'
 | 
				
			||||||
 | 
					  file_extensions: txt
 | 
				
			||||||
 | 
					  max_filesize: ''
 | 
				
			||||||
 | 
					  description_field: true
 | 
				
			||||||
 | 
					  handler: 'default:file'
 | 
				
			||||||
 | 
					  handler_settings: {  }
 | 
				
			||||||
 | 
					field_type: file
 | 
				
			||||||
							
								
								
									
										23
									
								
								core/modules/file/tests/fixtures/update/field.storage.node.field_file_generic_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										23
									
								
								core/modules/file/tests/fixtures/update/field.storage.node.field_file_generic_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					uuid: a7eb470d-e538-4221-a8ac-57f989d92d8e
 | 
				
			||||||
 | 
					langcode: en
 | 
				
			||||||
 | 
					status: true
 | 
				
			||||||
 | 
					dependencies:
 | 
				
			||||||
 | 
					  module:
 | 
				
			||||||
 | 
					    - file
 | 
				
			||||||
 | 
					    - node
 | 
				
			||||||
 | 
					id: node.field_file_generic_2677990
 | 
				
			||||||
 | 
					field_name: field_file_generic_2677990
 | 
				
			||||||
 | 
					entity_type: node
 | 
				
			||||||
 | 
					type: file
 | 
				
			||||||
 | 
					settings:
 | 
				
			||||||
 | 
					  display_field: false
 | 
				
			||||||
 | 
					  display_default: false
 | 
				
			||||||
 | 
					  uri_scheme: public
 | 
				
			||||||
 | 
					  target_type: file
 | 
				
			||||||
 | 
					module: file
 | 
				
			||||||
 | 
					locked: false
 | 
				
			||||||
 | 
					cardinality: 1
 | 
				
			||||||
 | 
					translatable: true
 | 
				
			||||||
 | 
					indexes: {  }
 | 
				
			||||||
 | 
					persist_with_no_fields: false
 | 
				
			||||||
 | 
					custom_storage: false
 | 
				
			||||||
							
								
								
									
										23
									
								
								core/modules/file/tests/fixtures/update/field.storage.node.field_file_table_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							
							
						
						
									
										23
									
								
								core/modules/file/tests/fixtures/update/field.storage.node.field_file_table_2677990.yml
								
								
								
									vendored
								
								
									Normal file
								
							| 
						 | 
					@ -0,0 +1,23 @@
 | 
				
			||||||
 | 
					uuid: 43113a5e-3e07-4234-b045-4aa4cd217dca
 | 
				
			||||||
 | 
					langcode: en
 | 
				
			||||||
 | 
					status: true
 | 
				
			||||||
 | 
					dependencies:
 | 
				
			||||||
 | 
					  module:
 | 
				
			||||||
 | 
					    - file
 | 
				
			||||||
 | 
					    - node
 | 
				
			||||||
 | 
					id: node.field_file_table_2677990
 | 
				
			||||||
 | 
					field_name: field_file_table_2677990
 | 
				
			||||||
 | 
					entity_type: node
 | 
				
			||||||
 | 
					type: file
 | 
				
			||||||
 | 
					settings:
 | 
				
			||||||
 | 
					  display_field: false
 | 
				
			||||||
 | 
					  display_default: false
 | 
				
			||||||
 | 
					  uri_scheme: public
 | 
				
			||||||
 | 
					  target_type: file
 | 
				
			||||||
 | 
					module: file
 | 
				
			||||||
 | 
					locked: false
 | 
				
			||||||
 | 
					cardinality: 1
 | 
				
			||||||
 | 
					translatable: true
 | 
				
			||||||
 | 
					indexes: {  }
 | 
				
			||||||
 | 
					persist_with_no_fields: false
 | 
				
			||||||
 | 
					custom_storage: false
 | 
				
			||||||
		Loading…
	
		Reference in New Issue