Problem/Motivation

From #1847596-266: Remove Taxonomy term reference field in favor of Entity reference

I noticed a minor labeling inconsistency while updating the hook_help(). When you add a field, you select Taxonomy term under References in the Add Field UI. However, once you've configured the field, it's listed simply as Entity reference with no indication that it has anything to do with taxonomy. I don't think that's worth blocking this patch on, but it might be worth a followup issue. (Really it'd actually be a followup to #2446511: Add a "preconfigured field options" concept in Field UI I think.)

Proposed resolution

  1. Remove the link from the entries in the "Field type" column. It duplicates a link already available from the drop button in the Operations column.
  2. Provide a way for field-type plugins to give additional information. Default to the label of the field type.
  3. Implement this for Reference types. This affects File, Image, and other references.
  4. Also add this information as a new column on the "Field list" page (/admin/reports/fields).

Remaining tasks

  • Add a change record.
  • Subsystem maintainer review
  • Follow-up issues as described in #75, #78, #110

User interface changes

With the MR, the "Manage Fields" page now looks like this:

The Field report (/admin/reports/fields) gets a new Summary column with the information added by this issue:

Screenshot of Field list page

API changes

  1. Add fieldSettingsSummary() and storageSettingsSummary() methods to Drupal/Core/Field/FieldItemInterface.
  2. Give default implementations of these methods in Drupal/Core/Field/FieldItemBase.
  3. Implement both methods in Drupal/Core/Field/Plugin/Field/FieldType/EntityReferenceItem, showing "Entity reference" and the targeted entity type.
  4. Add getFieldSettingsSummary() and getStorageSettingsSummary() methods to Drupal/Core/Field/FieldTypePluginManagerInterface.
  5. Implement these methods in Drupal/Core/Field/FieldTypePluginManager. These methods call the two new methods in FieldItemInterface.
  6. Update the buildHeader() and buildRow() methods in Drupal/field_ui/src/FieldConfigListBuilder and Drupal/field_ui/src/FieldStorageConfigListBuilder to use the new methods.
CommentFileSizeAuthor
#111 Screen Shot 2023-03-03 at 3.29.33 PM.png41.22 KBsmustgrave
#105 Screen Shot 2023-02-16 at 14.25.56.png85.36 KBlauriii
#100 reroll_diff_82-99.txt16.74 KBhooroomoo
#99 2458127-99.patch18.43 KBhooroomoo
#98 2458127-98.patch18.14 KBhooroomoo
#96 reroll_diff_82-95.txt14.52 KBhooroomoo
#95 2458127-95.patch17.96 KBhooroomoo
#93 2458127-nr-bot.txt144 bytesneeds-review-queue-bot
#82 2458127-82.patch20.72 KBbenjifisher
#82 interdiff-2458127-80-82.txt1.9 KBbenjifisher
#80 field-list-80.png49.7 KBbenjifisher
#80 manage-fields-80.png73.47 KBbenjifisher
#80 2458127-80.patch20.38 KBbenjifisher
#80 interdiff-2458127-75-80.txt3.96 KBbenjifisher
#77 field-list-with-summary.png184.27 KBbenjifisher
#75 2458127-75.patch18.48 KBbenjifisher
#75 interdiff-2458127-69-75.txt8.19 KBbenjifisher
#69 2458127-69.patch18.72 KBbenjifisher
#69 interdiff-2458127-67-69.txt6.16 KBbenjifisher
#68 2458127-67-patch-result-good.png24.45 KBmcdwayne
#67 2458127-67.patch18.59 KBbenjifisher
#67 interdiff-2458127-66-67.txt3.67 KBbenjifisher
#67 interdiff-2458127-30-67.txt11.13 KBbenjifisher
#66 2458127-66.patch18.92 KBbenjifisher
#66 interdiff-2458127-30-66.txt12.14 KBbenjifisher
#66 interdiff-2458127-64-66.txt3.21 KBbenjifisher
#64 2458127-64.patch19.48 KBbenjifisher
#64 interdiff-2458127-62-64.txt3.59 KBbenjifisher
#62 2458127-62.patch19.48 KBvacho
#59 2458127-59.patch19.7 KBizus
#57 interdiff-51-57.txt2.43 KBizus
#57 2458127-57.patch19.96 KBizus
#55 interdiff-51-55.txt2.43 KBizus
#55 2458127-55.patch2.43 KBizus
#51 2458127-51.patch20.28 KBchrisfromredfin
#50 2458127-50.patch20.62 KBchrisfromredfin
#49 2458127-49.patch20.6 KBchrisfromredfin
#48 interdiff.txt1.06 KBchrisfromredfin
#48 2458127-48.patch20.34 KBchrisfromredfin
#45 interdiff.txt4.25 KBchrisfromredfin
#45 2458127-45.patch20.42 KBchrisfromredfin
#43 interdiff-2458127-30-38.txt5.1 KBbenjifisher
#38 drupal-field-storage-summary-2458127-38.patch19.67 KBleanderl
#30 2458127-30.patch20.34 KBmarcoscano
#30 interdiff-26-30.txt11.23 KBmarcoscano
#26 manage_fields_with_summary_column.png41.57 KBmarcoscano
#26 interdiff-20-26.txt9.78 KBmarcoscano
#26 2458127-26.patch19.4 KBmarcoscano
#20 field_list_before.png32.99 KBmarcoscano
#20 field_list_after.png38.39 KBmarcoscano
#20 field_storage_list_after.png51.38 KBmarcoscano
#20 interdiff-19-20.txt4.72 KBmarcoscano
#20 2458127-20.patch10.88 KBmarcoscano
#19 2458127-19.patch7.89 KBmarcoscano
#12 interdiff.txt3.36 KBGábor Hojtsy
#12 2458127-12.patch7.99 KBGábor Hojtsy
#9 2458127-9.patch8.2 KBGábor Hojtsy
#8 screenshot-d8.dev 2015-04-01 22-00-32.png27.08 KBjibran
#8 screenshot-d8.dev 2015-04-01 22-00-04.png20.11 KBjibran
#8 show_target_type_of_er-2458127-8.patch8.17 KBjibran

Issue fork drupal-2458127

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

xjm’s picture

yched’s picture

Quoting myself from #1847596-268: Remove Taxonomy term reference field in favor of Entity reference

One approach could be to change the "field type" column in the "Manage Fields" overview to contain a summary , like we have on “Manage Display“. Would need a new method in FieldItemInterface though

Consistency++ ?

amateescu’s picture

Forgot to say it in the other issue but I think #2 is a great idea!

amateescu’s picture

Component: entity_reference.module » field_ui.module

Also, this is more a Field UI thing, with ER being the early adopter.. as usual :)

xjm’s picture

Issue tags: +Usability
jibran’s picture

Status: Postponed » Active

Go go go!

yched’s picture

Just an additional note : turning the column into a summary would also mean it's not a link (to the "storage settings" form) anymore - which is fine IMO, since it currently duplicates the "Storage settings" link present in the "operations" dropdown in the last column.

jibran’s picture

How about this as a start?

  • Added two new method to FieldItemInterface
  1. storageSettingsSummary()
  2. fieldSettingsSummary()
  • Added two getters for the methods in FieldTypePluginManager
  • Added summary to field storage and field config listings same as display forms.
  • Field storage listing

    Field config listing

    Gábor Hojtsy’s picture

    Status: Active » Needs review
    FileSize
    8.2 KB

    Rerolled first.

    Status: Needs review » Needs work

    The last submitted patch, 9: 2458127-9.patch, failed testing.

    Gábor Hojtsy’s picture

    Version: 8.0.x-dev » 8.1.x-dev

    First of all this means changes for APIs so need to go on 8.1 or later. Next will post cleanup patch.

    Gábor Hojtsy’s picture

    Status: Needs work » Needs review
    FileSize
    7.99 KB
    3.36 KB

    Fixed some minor docs stuff. Looked into reinstantiating the field type + settings links. However the new summary column is based on field settings not field storage settings while the old link/name is based on storage settings. So is this new behavior is what we want/need?

    Status: Needs review » Needs work

    The last submitted patch, 12: 2458127-12.patch, failed testing.

    jibran’s picture

    @Gábor Hojtsy this was more like an idea I worked on neither @amateescu nor @yched weighed in on this. Feel free to change it.

    Version: 8.1.x-dev » 8.2.x-dev

    Drupal 8.1.0-beta1 was released on March 2, 2016, which means new developments and disruptive changes should now be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    Version: 8.2.x-dev » 8.3.x-dev

    Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    Version: 8.3.x-dev » 8.4.x-dev

    Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    Version: 8.4.x-dev » 8.5.x-dev

    Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    marcoscano’s picture

    Rerolled, and changed array() by [].

    marcoscano’s picture

    Title: Show target type of ER field on manage field page. » Show field/field-storage summary instead of field type on field listings
    Status: Needs work » Needs review
    Issue tags: +Needs usability review, +Media Initiative
    FileSize
    10.88 KB
    4.72 KB
    51.38 KB
    38.39 KB
    32.99 KB

    Can we bring this back to life?

    "Media fields" would definitely benefit from this information exposed there.

    The attached patch:
    - Fixes $field_storage typehinting in FieldItemInterface::storageSettingsSummary()
    - Implements a default summary on the base class with something like "Field type: @type"
    - Implemnets an extention to that for EntityReferenceFieldItem fields that shows the target entity type as well.

    Before:

    field list before

    After:

    field list after

    storage list after

    Status: Needs review » Needs work

    The last submitted patch, 20: 2458127-20.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    marcoscano’s picture

    Status: Needs work » Needs review

    Tests were not updated, the fail is expected.
    If the approach looks good I can update the tests.

    The last submitted patch, 8: show_target_type_of_er-2458127-8.patch, failed testing. View results

    The last submitted patch, 19: 2458127-19.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    benjifisher’s picture

    Status: Needs review » Needs work

    We discussed this at the weekly UX meeting today. I think that @yoroy was taking notes, but here are the suggestions that I remember.

    Instead of using a column header like "Details" or "Summary", neither of which contains a lot of information, keep the current header "Field type". Then you can remove the repeated "Field type: " on each row.

    You can distinguish between the default information (field type) and the additional information by making the default information bold. For example,

    Entity reference
    Referenced entity type: Media

    If that formatting draws too much attention to this column, then perhaps make the field type normal and make the additional information italic.

    I think everyone agreed that using unlinked text for this column is a good idea.

    marcoscano’s picture

    Status: Needs work » Needs review
    FileSize
    19.4 KB
    9.78 KB
    41.57 KB

    Thanks @benjifisher for the feedback!

    This is the result after the changes mentioned above:

    In this patch I have also modified / added some tests.

    Version: 8.5.x-dev » 8.6.x-dev

    Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    benjifisher’s picture

    1. +++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
      @@ -7,6 +7,7 @@
       use Drupal\Core\TypedData\DataDefinitionInterface;
       use Drupal\Core\TypedData\Plugin\DataType\Map;
       use Drupal\Core\TypedData\TypedDataInterface;
      +use Drupal\field\FieldStorageConfigInterface;
      ...
      +  public static function storageSettingsSummary(FieldStorageConfigInterface $field_storage) {
      +    return [];
      +  }
      

      This looks like a problem: I do not think that core/lib/Drupal/Core classes are supposed to depend on modules. (Maybe it is allowed to depend on System and User, since they are rquired, but Field is not.)

      But then I see

      +++ b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
      @@ -124,6 +124,30 @@ public function getDefaultFieldSettings($type) {
         /**
          * {@inheritdoc}
          */
      +  public function getStorageSettingsSummary(FieldStorageDefinitionInterface $field_definition) {
      +    $plugin_definition = $this->getDefinition($field_definition->getType(), FALSE);
      +    if (!empty($plugin_definition['class'])) {
      +      $plugin_class = DefaultFactory::getPluginClass($field_definition->getType(), $plugin_definition);
      +      return $plugin_class::storageSettingsSummary($field_definition);
      +    }
      +    return [];
      +  }

      So maybe the type hint should be FieldStorageDefinitionInterface instead of FieldStorageConfigInterface?

    2. This is not required, just a question of style. In the previous snippet, I would switch the two parts of the if block. This would remove a double negative (!empty()), exit earlier, and deal with the simpler case first, all of which I like.
    3. +++ b/core/modules/field_ui/src/FieldStorageConfigListBuilder.php
      @@ -124,6 +125,19 @@ public function buildRow(EntityInterface $field_storage) {
             '#items' => $usage,
             '#context' => ['list_style' => 'comma-list'],
           ];
      +    $summary = $this->fieldTypeManager->getStorageSettingsSummary($field_storage);

      I think that the type hint has to be updated.

    4. +++ b/core/modules/field_ui/tests/src/Functional/ManageFieldsTest.php
      @@ -5,7 +5,7 @@
       use Drupal\Tests\BrowserTestBase;
       
       /**
      - * Tests the Manage Display page of a fieldable entity type.
      + * Tests the Manage Fields page of a fieldable entity type.

      and

       -  public function testFieldDropButtonOperations() {
      +  /**
      +   * Tests the Manage Fields page of a fieldable entity type
      +   */
      +  public function testFieldUiManageFields() {

      These look like unrelated fixes. If you think they belong here, then please say why, for the record.

    5.  @@ -50,12 +57,52 @@ public function testFieldDropButtonOperations() {
             ->getStorage('field_config')
             ->create([
               'field_storage' => $storage,
      -        'bundle' => $node_type->id(),
      +        'bundle' => $bundle,
             ])
             ->save();
       
      -    $this->drupalGet('/admin/structure/types/manage/' . $node_type->id() . '/fields');
      +    $this->drupalGet('/admin/structure/types/manage/' . $bundle . '/fields');

      Now that you have introduced the extra variable, this can be simplified to "/admin/structure/types/manage/$bundle/fields".

    6. +++ b/core/modules/system/tests/src/Functional/Update/UpdatePathRC1TestBaseFilledTest.php
      @@ -228,24 +230,24 @@ public function testUpdatedSite() {
           $this->drupalGet('admin/structure/types/manage/test_content_type/fields');
       
           // Make sure fields are the right type.
      -    $this->assertLink('Text (formatted, long, with summary)');
      -    $this->assertLink('Boolean');
      -    $this->assertLink('Comments');
      ...
      +    $assert_session->pageTextContains('Text (formatted, long, with summary)');
      +    $assert_session->pageTextContains('Boolean');
      +    $assert_session->pageTextContains('Comments');
      

      Can we make these tests more specific? We used to be looking for a link with the exact text "Boolean", and now we are just looking for that string anywhere on the page. The same thing happens in UpdatePathTestBaseFilledTest.

    I will have another look once these points are addressed.

    benjifisher’s picture

    Status: Needs review » Needs work
    marcoscano’s picture

    Status: Needs work » Needs review
    FileSize
    11.23 KB
    20.34 KB

    Rerolled to 8.6.x and addressed most points of #28

    About #28.1:
    Is this a hard requirement? :) I can see at least one example of a class requiring the node module (\Drupal\Core\Menu\DefaultMenuLinkTreeManipulators), and an argument could be made that it's more likely to have a site that doesn't depend on node than a site that doesn't depend on field... :)

    benjifisher’s picture

    Is #28.1 a hard requirement? I am not sure.

    As I said there, it does not look as though FieldStorageConfigInterface is even the correct type hint for storageSettingsSummary(). If the right interface is \Drupal\Core\Field\FieldStorageDefinitionInterface, then the problem goes away.

    benjifisher’s picture

    Looking quickly at the interdiff, it looks as if you are replacing FieldStorageDefinitionInterface with FieldStorageConfigInterface in many places. I was hoping to do the opposite. Does that not work?

    On the bright side (after the quick look) the assertions in the tests look like a big improvement.

    benjifisher’s picture

    Status: Needs review » Needs work

    @marcoscano: I think that replacing FieldStorageConfigInterface with FieldStorageDefinitionInterface everywhere (the opposite of what you did in the latest patch) is the right thing to do.

    shubhangi1995’s picture

    Assigned: Unassigned » shubhangi1995
    benjifisher’s picture

    Assigned: shubhangi1995 » Unassigned

    @shubhangi1995, have you made any progress on this? I am un-assigning this for now, but you can take it back if you are still working on it. If you do that, then please leave a comment with a progress report.

    benjifisher’s picture

    Issue summary: View changes
    Issue tags: +Nashville2018, +Novice
    leanderl’s picture

    I'm at the Code Sprint, DrupalCon Nashville and will take a look at this now...

    leanderl’s picture

    Status: Needs work » Needs review
    FileSize
    19.67 KB

    Followed @benjifisher's suggestion in #33 and created a new patch.

    Verified by adding a entity reference field and the correct output appeared in /admin/structure/types/manage/article/fields:
    "Entity reference
    Referenced entity type: Taxonomy term"

    Status: Needs review » Needs work

    The last submitted patch, 38: drupal-field-storage-summary-2458127-38.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    benjifisher’s picture

    @leanderl: I am glad to see some progress on this issue. I think it will be a big improvement in site building!

    The test failed, but I do not know whether that means my suggestion in #28.1 was misguided or if you just missed one of the places where the class has to be changed. Looking at the results on the testbot should help us understand what the problem is.

    jphelan’s picture

    On /admin/reports/fields I get the following error.
    TypeError: Argument 1 passed to Drupal\Core\Field\FieldTypePluginManager::getStorageSettingsSummary() must be an instance of Drupal\field\FieldStorageDefinitionInterface, instance of Drupal\field\Entity\FieldStorageConfig given, called in /var/www/d8core/core/modules/field_ui/src/FieldStorageConfigListBuilder.php on line 128 in Drupal\Core\Field\FieldTypePluginManager->getStorageSettingsSummary() (line 128 of core/lib/Drupal/Core/Field/FieldTypePluginManager.php).

    benjifisher’s picture

    Yes, that is the same error that the testbot shows.

    benjifisher’s picture

    @leanderl:

    It helps to review your changes if you attach an interdiff. There are instructions for creating one here: https://www.drupal.org/documentation/git/interdiff. I have done that for you. If you update the patch, it might be more helpful to provide an interdiff comparing to the patch in #130, ignoring the intermediate patch #138.

    I am still not sure that my suggestion will work, but this looks like a problem:

    +++ b/core/lib/Drupal/Core/Field/FieldTypePluginManager.php
    @@ -9,6 +9,7 @@
     use Drupal\Core\Plugin\CategorizingPluginManagerTrait;
     use Drupal\Core\Plugin\DefaultPluginManager;
     use Drupal\Core\TypedData\TypedDataManagerInterface;
    +use Drupal\field\FieldStorageDefinitionInterface;
    

    We want use Drupal\Core\Field\FieldStorageDefinitionInterface; instead.

    I see the same problem in the interface, too.

    See my review in #26: the reason I requested this change is that Core (and Component) classes are not supposed to depend on modules (such as the Field module). So use Drupal\field\... is something we want to avoid.

    As long as you are fixing these, please make sure that the use statements are in alphabetical order. It makes it more maintainable.

    Also review the codesniffer_fixes.patch provided by the testbot.

    benjifisher’s picture

    From #28 above:

    This looks like a problem: I do not think that core/lib/Drupal/Core classes are supposed to depend on modules.

    From #30:

    About #28.1: Is this a hard requirement?

    Yes, it is a requirement: according to core/lib/Drupal/Core/README.txt,

    Code in the Drupal\Core namespace represents Drupal Subsystems provided by the
    base system.  These subsystems MAY depend on Drupal Components and other
    Subsystems, but MAY NOT depend on any code in a module.
    
    chrisfromredfin’s picture

    Status: Needs work » Needs review
    Issue tags: -Nashville2018
    FileSize
    20.42 KB
    4.25 KB
    • Swapped FieldStorageConfigInterface for FieldStorageDefinitionInterface, to remove dependency on module code and keep it in core lib
    • Addresses 28.3 - not 100% sure if this was the right thing
    • Addresses 28.6
    benjifisher’s picture

    Status: Needs review » Needs work

    @cwells:

    Thanks for working on this! I would love to see this issue get committed. I have not tested yet, but looking at the interdiff I see one minor issue:

    --- a/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
    +++ b/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
    @@ -80,14 +79,14 @@ public function getDefaultStorageSettings($type);
       /**
        * Returns the summary of storage-level settings for a field type.
        *
    -   * @param \Drupal\field\FieldStorageConfigInterface $field_definition
    +   * @param FieldStorageDefinitionInterface $field_definition
    

    According to Drupal coding standards (https://www.drupal.org/docs/develop/coding-standards/api-documentation-a...),

    Always prefix types with the fully-qualified namespace for classes and interfaces (beginning with a backslash). If the class/interface is in the global namespace, prefix by a backslash.

    Also see the documentation for @param elements on the same page.

    benjifisher’s picture

    P.S. Once the testbot is done, please see whether CodeSniffer finds any problems.

    chrisfromredfin’s picture

    Status: Needs work » Needs review
    FileSize
    20.34 KB
    1.06 KB

    This should pass now, even though the hinting is a little dodgy.

    chrisfromredfin’s picture

    OK with that point proven, this checks that it also implements the necessary Interface to build the settings summary. Also refactored into a separate private so buildRow() didn't get too out of control (per comments from Benji in person at D4D).

    chrisfromredfin’s picture

    Feel bad for the testbot today.

    Fixed the point from #46 re: fully-qualified namespace.

    chrisfromredfin’s picture

    OK srsly now this one actually does ALL the right changes, not just some. :)

    Status: Needs review » Needs work

    The last submitted patch, 51: 2458127-51.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    benjifisher’s picture

    @cwells:

    Thanks, this looks really promising! I have not yet tested manually nor checked out the test failures.

    Looking at the interdiff, I notice just a couple of nit picks:

    1. --- a/core/lib/Drupal/Core/Field/FieldItemInterface.php
      +++ b/core/lib/Drupal/Core/Field/FieldItemInterface.php
      @@ -4,6 +4,7 @@
       
       use Drupal\Core\Form\FormStateInterface;
       use Drupal\Core\TypedData\ComplexDataInterface;
      +use Drupal\Core\Field\FieldStorageDefinitionInterface;
      

      Can we keep these in alphabetical order?

    2. --- a/core/modules/field_ui/src/FieldStorageConfigListBuilder.php
      +++ b/core/modules/field_ui/src/FieldStorageConfigListBuilder.php
      @@ -95,6 +97,7 @@ public function buildHeader() {
          * {@inheritdoc}
          */
         public function buildRow(EntityInterface $field_storage) {
      +    /** @var \Drupal\Core\Field\FieldStorageDefinitionInterface $field_storage */
      

      Please remove that line. It is only at the end of the function, in the new lines added for this issue, that we check whether this EntityInterface object also implements FieldStorageDefinitionInterface.

    3. --- a/core/modules/field_ui/tests/src/Functional/ManageFieldsTest.php
      +++ b/core/modules/field_ui/tests/src/Functional/ManageFieldsTest.php
      @@ -34,9 +34,12 @@ protected function setUp() {
      ...
      -    /** @var \Drupal\field\FieldStorageConfigInterface $storage */
      +    /** @var \Drupal\Core\Field\FieldStorageDefinitionInterface $storage */
           $storage = $this->container->get('entity_type.manager')
             ->getStorage('field_storage_config')
             ->create([
      

      This code is inside the field_ui module, so we no longer have to avoid using classed from the field module. Did you check what type $storage actually is? Do we have to change this type hint?

    4. +    // Add an entity reference field, and check that its summary is custom.
      +    /** @var \Drupal\Core\Field\FieldStorageDefinitionInterface $storage */
      +    $storage = $this->container->get('entity_type.manager')
      +      ->getStorage('field_storage_config')
      +      ->create([
      +        'type' => 'entity_reference',
      +        'field_name' => 'downlander',
      +        'entity_type' => 'node',
      +        'settings' => [
      +          'target_type' => 'node',
      +        ],
      +      ]);
      

      Same question.

    (OK, I started by looking at the interdiff, but then I looked at the whole patch.)

    Version: 8.6.x-dev » 8.7.x-dev

    Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    izus’s picture

    Status: Needs work » Needs review
    FileSize
    2.43 KB
    2.43 KB

    Hi,

    here is a new patch to adress #53

    for the point 3 : i corrected it. actuallay the class is "Drupal\field\Entity\FieldStorageConfig"

    hope it'll be green :)

    Thanks

    Status: Needs review » Needs work

    The last submitted patch, 55: 2458127-55.patch, failed testing. View results

    izus’s picture

    Status: Needs work » Needs review
    FileSize
    19.96 KB
    2.43 KB

    hi,
    idk what happened with yesterday's patch but here is a new one.
    Thanks

    Status: Needs review » Needs work

    The last submitted patch, 57: 2458127-57.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    izus’s picture

    Status: Needs work » Needs review
    FileSize
    19.7 KB

    applied the codesniffer_fixes.patch from #57 (so it's the interdiff)

    Status: Needs review » Needs work

    The last submitted patch, 59: 2458127-59.patch, failed testing. View results

    Version: 8.7.x-dev » 8.8.x-dev

    Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

    vacho’s picture

    Patch rerolled.

    jibran’s picture

    Component: field_ui.module » field system
    Issue tags: -Novice +Needs subsystem maintainer review, +Entity Field API

    As I said in #14 it was just an idea which I started exploring we still need subsystem maintainer input on this approach before finishing this up so adding the tag. Yes, it is changing the field UI screen but it is changing the base classes of the field system that's why I'm changing the component.

    benjifisher’s picture

    Status: Needs work » Needs review
    FileSize
    3.59 KB
    19.48 KB

    @jibran:

    Thanks for updating this issue.

    I am not sure that the current approach is the best one. I think we could implement this in the field_ui module without touching anything in the Drupal\Core namespace. But for now I will keep the same approach and try to get a working patch that passes tests ... or at least does not have as many failures.

    +++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
    @@ -43,11 +43,11 @@
    -  public static function fieldSettingsSummary(FieldStorageDefinitionInterface $field_config) {
    +  public static function fieldSettingsSummary(FieldStorageDefinitionInterface $storage_config) {
    

    I changed the variable name so that it matches the type hint better and avoids confusion with the variable $field_config in the calling function.

    -        '@type' => $definitions[$field_config->getFieldStorageDefinition()->getType()]['label'],
    +        '@type' => $definitions[$storage_config->getType()]['label'],
    

    This should fix many of the failing tests. We cannot call getFieldStorageDefinition() on an object that implements FieldStorageDefinitionInterface. Instead, we want to call $field_config->getFieldStorageDefinition() in the calling function and pass the result to this function.

    +++ b/core/lib/Drupal/Core/Field/FieldTypePluginManagerInterface.php
    @@ -91,14 +91,14 @@
    -  public function getFieldSettingsSummary(FieldConfigInterface $field_config);
    +  public function getFieldSettingsSummary(FieldDefinitionInterface $field_config);
    

    I may still be confused: I expect to get errors without this change, but I do not. I think there is some confusion between the unrelated classes FieldConfigInterface in the namespaces Drupal\field and Drupal\Core\Field. At any rate, we are passing an object of class Drupal\field\Entity\FieldConfig, which implements FieldDefinitionInterface, and then applying two methods of that interface (getType() and getFieldStorageDefinition()), so I think this is the correct type hint.

    I have not run tests locally, but at least I get something like what we want on /admin/structure/types/manage/recipe/fields (testing on the Umami installation profile), which is an improvement over the patch in #62.

    benjifisher’s picture

    Hurray, that fixed all of the tests!

    I think this patch needs some serious cleanup, but I do not have the heart to set it back to NW after getting the first patch to pass tests since #50.

    benjifisher’s picture

    Here is a new patch. Compared to the one in #64, it makes three changes:

    1. Change the variable name back to $field_config
    2. Restore an unused use statement
    3. Remove an unneeded helper function

    There are two reasons for (1): I want to make it easier to compare to the patch in #30 (interdiff attached), and I realized that the patch (this one or the one in #64) introduces a lot of variables with the type hint FieldStorageDefinitionInterface: $field_storage, $field_config, and $field_definition. I plan to make all of these consistent in a later patch.

    Removing an unused use statement is a good idea, but it is out of scope for this issue.

    The helper function was added in an attempt to get the types to work out correctly. Now that I have sorted out the type hints in #64, it is no longer needed.

    Comparing to the patch in #30, the changes are mostly type hints and use statements, plus the change I called out in #64, moving the call to getFieldStorageDefinition() from fieldSettingsSummary() to the calling function. The net result is to fix the problem I called out in #28.1 (see also #44): code in the Drupal\Core namespace should not depend on code in modules.

    benjifisher’s picture

    I think I found a better solution. I reverted the change of where I was calling getFieldStorageDefinition(), so the field config (not the field-storage config) is passed to fieldSettingsSummary(), as it was in earlier patches.

    The two FieldConfigInterface interfaces are not unrelated: both of these interfaces extend Drupal\Core\Field\FieldDefinitionInterface. I think that is what we should use for type hints. This interface declares both getType() and getFieldStorageDefinitions().

    Compared to the patch in #30 (interdiff attached), my latest patch just makes the following changes to type hints:

    • storageSettingsSummary() and getStorageSettingsSummary() use \Drupal\Core\Field\FieldStorageDefinitionInterface instead of \Drupal\field\FieldStorageConfigInterface
    • fieldSettingsSummary() and getFieldSettingsSummary() use \Drupal\Core\Field\FieldDefinitionInterface instead of \Drupal\Core\Field\FieldConfigInterface
    mcdwayne’s picture

    Issue summary: View changes
    FileSize
    24.45 KB

    Applied patch and worked as described by @benjifisher
    Screenshot embedded

    benjifisher’s picture

    This patch just makes two kinds of changes:

    1. Change variable names to be more consistent with existing usage. In particular,
      • FieldDefinitionInterface $field_config becomes $field_definition.
      • FieldStorageDefinitionInterface $field_definition becomes $field_storage.
    2. Update the documentation blocks.
      • Make parameter descriptions more consistent with existing usage.
      • Mention when @return array means a renderable array.
    benjifisher’s picture

    Issue summary: View changes

    I am updating the issue summary. Thanks to @mcdwayne for providing the screenshot!

    Other candidates for implementing the new methods are Media fields, List fields, and perhaps Layout Section fields.

    benjifisher’s picture

    Issue summary: View changes

    I forgot to mention: the new data also show up on the Field list (/admin/reports/fields). I will add that to the issue summary.

    Status: Needs review » Needs work

    The last submitted patch, 69: 2458127-69.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    phenaproxima’s picture

    I think this patch is doing a Good Thing -- the proposed UI is, in my opinion, a lot nicer and more useful than what is currently in core. However, this introduces two new methods to heavily-used, and often-extended, pieces of Drupal's API. That means it needs framework manager review in addition to subsystem maintainer sign-off. So, tagging accordingly.

    Godspeed.

    benjifisher’s picture

    Issue summary: View changes
    benjifisher’s picture

    This patch has some code cleanup. It should not affect the results.

    Some of the changes are just to make the code more consistent with existing code in the same file. In particular,

    1. I changed $field_storage back to $field_definition, reverting one of the changes I made in #69.
    2. I rewrote the new functions in Drupal\field_ui\src\FieldConfigListBuilder so that they do not use an "exit early" strategy.

    I noticed a couple of things that I would like to address in follow-up issues. The first is related to my second point above.

    1. Add a helper function to avoid having four nearly identical functions (DRY principle).
    2. Clean up buildRow() in Drupal\field_ui\src\FieldConfigListBuilder: remove the unused variable $route_parameters and move $field_storage to later in the function, where it can be eliminated.
    benjifisher’s picture

    Status: Needs work » Needs review

    I did not notice the test failure for #69. The failing test may be related to #3059022: If Vimeo is down our tests break. I do not understand the coding-standards message: yes, that use statement is unneeded, but my patch did not touch it.

    I am setting back to NR to see what the testbot does.

    benjifisher’s picture

    I am rewriting the "Proposed solution" section of the summary (again) and moving what used to be there into the "API changes" section.

    I am also adding a screenshot of the Field list page.

    benjifisher’s picture

    Issue summary: View changes

    We discussed this issue at the start of today's Drupal usability meeting 2019-07-02.

    We discussed removing the link from entries in the "Field type" column, and agreed it was a good idea.

    We agreed to open a follow-up issue(s) to consider reformatting labels such as "Text (formatted, long)" from other core modules.

    We discussed the formatting and decided that

    1. The markup should use Twig templates so that it can be controlled by the admin theme.
    2. The default styling should be normal weight (not bold), and the second line should be in a smaller font than the first line. Be consistent with styling on the "Manage form display" tab, where the third column has a smaller font than the first column.

    I am setting the issue back to NW for that.

    benjifisher’s picture

    Status: Needs review » Needs work
    benjifisher’s picture

    Status: Needs work » Needs review
    FileSize
    3.96 KB
    20.38 KB
    73.47 KB
    49.7 KB

    This turns out to be harder than I expected. I hope you will forgive me for skipping one of the suggestions from #78: I do add CSS classes so that the theme can control the display, but I do not use Twig templates. In part, this is because I looked at the code in Drupal\field_ui\Form\EntityDisplayFormBase, which creates the markup on the "Manage form display" tab. We want to have some consistency with this markup, the existing code (including the use of inline_template) seems to be based on it, and this code does not use Twig templates.

    Let me discuss a few snippets from the interdiff:

    1. +++ b/core/lib/Drupal/Core/Field/FieldItemBase.php
      @@ -46,7 +46,7 @@
         public static function fieldSettingsSummary(FieldDefinitionInterface $field_definition) {
           $definition = \Drupal::service('plugin.manager.field.field_type')
             ->getDefinition($field_definition->getType())['label'];
      -    return [t('<b>@type</b>', ['@type' => $definition])];
      +    return ['#markup' => $definition];
         }
          

      That gets rid of the hard-coded <b> tags. It also removes a call to the (global) t() function. I do not love the call to the service container, but I already lost a lot of time trying to figure out a better way. Maybe someone else can give me a hint.

    2. +++ b/core/modules/field_ui/src/FieldConfigListBuilder.php
      @@ -154,11 +155,10 @@
           $summary = $this->fieldTypeManager->getFieldSettingsSummary($field_config);
           $settings_summary = empty($summary) ? '' : [
             'data' => [
      -        '#type' => 'inline_template',
      -        '#template' => '<div class="field-plugin-summary">{{ summary|safe_join("<br />") }}</div>',
      -        '#context' => ['summary' => $summary],
      -        '#cell_attributes' => ['class' => ['field-plugin-summary-cell']],
      +        '#theme' => 'item_list',
      +        '#items' => $summary,
             ],
      +      'class' => ['field-settings-summary-cell'],
           ];
          

      and similar changes in core/modules/field_ui/src/FieldStorageConfigListBuilder.php. Instead of pasting together a bunch of lines with <br /> tags, I format them as a list. I think this is the best way to make it so that we can apply different styles to the first item.

    3. +++ b/core/modules/field_ui/src/FieldConfigListBuilder.php
      @@ -108,6 +108,7 @@
           $build = parent::render();
           $build['table']['#attributes']['id'] = 'field-overview';
           $build['table']['#empty'] = $this->t('No fields are present yet.');
      +    $build['#attached']['library'][] = 'field_ui/drupal.field_ui';
       
           return $build;
         }
      +++ b/core/modules/field_ui/src/FieldStorageConfigListBuilder.php
      @@ -91,0 +92,9 @@
      +  public function render() {
      +    $build = parent::render();
      +    $build['#attached']['library'][] = 'field_ui/drupal.field_ui';
      +    return $build;
      +  }
          

      Curiously, although the comments in the CSS files say that they apply to the "Manage fields" page, they do not until we make this change.

    4. +++ b/core/modules/field_ui/css/field_ui.admin.css
      @@ -10,6 +10,17 @@
       .field-ui-overview .region-message td {
         font-style: italic;
       }
      +.field-settings-summary-cell > .item-list > ul > li,
      +.storage-settings-summary-cell > .item-list > ul > li {
      +  list-style-type: none;
      +  margin: 0;
      +}
      +.field-settings-summary-cell > .item-list > ul > li {
      +  font-size: 0.9em;
      +}
      +.field-settings-summary-cell > .item-list > ul > li:first-child {
      +  font-size: 1.0em;
      +}
          

      I also made the same change in the identical file in the stable theme. I am not proud of chaining together four selectors, but I do not see any other way to avoid affecting markup generated by the plugins, which may contain HTML lists.

    The markup for the "Field type" column on the "Manage fields" page now looks like this:

      <td class="field-settings-summary-cell">
        <div class="item-list">
          <ul>
            <li>Entity reference</li>
            <li>Referenced entity type: Taxonomy term</li>
          </ul>
        </div>
      </td>
    

    The difference in font size is subtle, at least on my system (Firefox on Linux). Here is a screen shot:

    screenshot of "Manage fields" tab


    Here is a screenshot of the "Field list" page:

    screenshot of "Field list" page

    Status: Needs review » Needs work

    The last submitted patch, 80: 2458127-80.patch, failed testing. View results
    - codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

    benjifisher’s picture

    Status: Needs work » Needs review
    FileSize
    1.9 KB
    20.72 KB

    The attached patch updates the tests to match the updated markup. These tests are added as part of this patch, so I do not feel bad about changing them.

    I also removed the unused use statement. This line was removed in a previous patch, but I restored it in #66, saying it was out of scope. I was wrong. Since we are making the "Field settings" column plain text instead of a link, we no longer use Url::fromRoute(), which is the only reference to the Url class.

    benjifisher’s picture

    I just tested this patch on a site that uses a lot of Paragraph types (and ERR fields).

    Good news: Since the ERR (entity reference revision) field type extends the ER (entity reference) field type, the patch works without any changes to the Paragraphs nor ERR modules.

    Bad news: All it tells me is "Entity reference revisions // Referenced entity type: Paragraph".

    Conclusion: If the entity type has bundles, then we should add bundle information to the output.

    Berdir’s picture

    > Conclusion: If the entity type has bundles, then we should add bundle information to the output.

    There's no API to get that however, jsonapi is struggling with the same thing. While ERR's configuration keys basically match ER, it for example has the negate setting, which actually turns the whole thing around and then it would be wrong. Also, both ER and specifically also ERR/paragraph fields often allow *a lot* of bundles, which would make for very long lists..

    benjifisher’s picture

    There's no API to get that

    I am not sure what you are saying: there is no API to find out whether an entity type has bundles? (I think this is what you mean. Looking at NodeTypeListBuilder, I see that /admin/structure/types lists content types because they are defined by configuration. But not all entity types have bundles described by configuration, right?)

    Also, both ER and specifically also ERR/paragraph fields often allow *a lot* of bundles, which would make for very long lists..

    Good point. Listing the bundles should not be the default. Maybe it should not even be in Drupal core. If not, then the API we introduce in this issue should provide an alter hook or an event listener so that a contrib module could provide the option to list bundles.

    Version: 8.8.x-dev » 8.9.x-dev

    Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

    Version: 8.9.x-dev » 9.1.x-dev

    Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

    Version: 9.1.x-dev » 9.2.x-dev

    Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

    Version: 9.2.x-dev » 9.3.x-dev

    Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

    Version: 9.3.x-dev » 9.4.x-dev

    Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

    Version: 9.4.x-dev » 9.5.x-dev

    Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

    Version: 9.5.x-dev » 10.1.x-dev

    Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

    needs-review-queue-bot’s picture

    Status: Needs review » Needs work
    FileSize
    144 bytes

    The Needs Review Queue Bot tested this issue. It either no longer applies to Drupal core, or fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

    Apart from a re-roll or rebase, this issue may need more work to address feedback in the issue or MR comments. To progress an issue, incorporate this feedback as part of the process of updating the issue. This helps other contributors to know what is outstanding.

    Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

    lauriii’s picture

    Issue tags: +Field UX
    hooroomoo’s picture

    Rerolled #82

    hooroomoo’s picture

    FileSize
    14.52 KB
    hooroomoo’s picture

    Status: Needs work » Needs review
    hooroomoo’s picture

    hooroomoo’s picture

    hooroomoo’s picture

    FileSize
    16.74 KB

    Status: Needs review » Needs work

    The last submitted patch, 99: 2458127-99.patch, failed testing. View results

    hooroomoo’s picture

    Status: Needs work » Needs review
    hooroomoo’s picture

    Opened an MR that applies patch #99, fixes the failed test, and added the new styling to the claro theme as well

    lauriii’s picture

    Issue summary: View changes
    FileSize
    85.36 KB

    Updating the screenshot in the issue summary with a recent screenshot that uses Claro, and shows the bundle information that was just made visible by recent commits to the MR. 😇

    bnjmnm made their first commit to this issue’s fork.

    tim.plunkett made their first commit to this issue’s fork.

    tim.plunkett’s picture

    This infra commit fixed the composer issue

    lauriii’s picture

    Issue summary: View changes
    Issue tags: -Needs usability review

    I brought this up with the usability group to discuss the "Target entity type" text. I had the impression that we generally avoid using the term "entity" in the UI whenever that's possible. It seems like that is the case, and for that reason the group recommends to use "Reference type" instead.

    Something else that the group suggested was looking into alternative ways of presenting the different summaries. Currently, they are displayed as a list and each item is on it's own line. However, from usability standpoint, it might be better to display them differently. Within the group there was consensus that this issue is a net win even without addressing this concern and therefore addressing these concerns could be left for a follow-up issue.

    This has also reviewed by the Usability group in the past, as documented in #78. As part of this, the group had reviewed the removal of the link.

    At the moment it is unclear to where the link is pointing, rendering it useless for most users. Removing the link may cause some friction for users who are who are accustomed to using the link for checking information about the field storage (i.e. cardinality). However, there is a pre-existing link to the same destination under the operations, with a much clearer link text. We may have to look into what other information users need from the field storage page as an additional follow-up.

    benjifisher’s picture

    We discussed this issue at #3340893: Drupal Usability Meeting 2023-02-17. That issue will have a link to a recording of the meeting. (See also #109.)

    For the record, the attendees at the usability meeting were @AaronMcHale, @BlackBamboo, @benjifisher, @gaurav mahlawat, @lauriii, @rkoller, @shaal, and @simohell.

    We specifically discussed the new text for an entity reference (ER) field. From the screenshot in the issue description:

    Entity reference
    Referenced entity type: Media
    Media type: Image, Video

    For this issue, we would like to change "Referenced entity type" to "Reference type", as @lauriii said in #109. Either as part of this issue or as a follow-up, we would like to combine the first two lines. Some possibilities are "Media reference", "Reference: Media", or "Reference (Media)". Depending on which modules are enabled, some possibilities are two words or longer ("Taxonomy term", "Content moderation state", ...).

    One guideline is to be consistent with the forms for adding a new field and for editing the field-storage settings. When adding a field, the select list has "Reference" as a group header and Content, File, Image, ... as options in that group. When editing the field-storage settings, the text is "Type of item to reference".

    smustgrave’s picture

    Status: Needs review » Needs work
    FileSize
    41.22 KB

    This seems really close but this one feature seemed off

    off

    Don't think these fields need a reference type right?

    lauriii’s picture

    Status: Needs work » Needs review

    Pushed commit which should address #111 👍

    smustgrave’s picture

    #111 has been fixed so +1 from me for RTBC.

    Not moving it for subsyste, framework manager, and usability review.

    Think after that happens change record can be written.

    Also was tagged for follow up 4 years ago if that still needs to happen.

    lauriii’s picture

    Issue summary: View changes

    Updating issue summary since this has received multiple rounds of usability review.

    amateescu’s picture

    Reviewed the MR and I think it looks great! Posted a few minor points, should be an easy RTBC after that :)

    lauriii’s picture

    Status: Needs review » Reviewed & tested by the community
    Issue tags: -Needs followup
    lauriii’s picture

    bnjmnm’s picture

    This probably needs a non FE framework manager signoff as that's where most of the changes are, but this is looking good to me. It introduces some smaller than usual fonts in the details, but the .9rem is well above the 9px needed for AA compliance. I also tried this out with Paragraphs, and paragraphs fields in content types look great, as do fields within paragraphs.

    As unlikely a use case as this might be, may be worth if the CR includes info on the array returned by \Drupal\field_ui\FieldConfigListBuilder::buildHeader as it no longer returns a field_type key and now has settings_summary. I went through https://git.drupalcode.org/search to see if there's any evidence of this impacting contrib in any way, and it certainly doesn't look like it... it just seems like an easy enough base to cover.

    larowlan’s picture

    bnjmnm’s picture

    Status: Reviewed & tested by the community » Needs work

    Left a comment on the MR about the module stylesheet. If that's addressed with something simple like a selector change I'd say go ahead and switch back to RTBC after the change.

    lauriii’s picture

    Status: Needs work » Reviewed & tested by the community

    Addressed the feedback regarding the CSS selector.

    • bnjmnm committed 9c7640c2 on 10.1.x
      Issue #2458127 by lauriii, benjifisher, hooroomoo, chrisfromredfin,...
    bnjmnm’s picture

    Status: Reviewed & tested by the community » Fixed

    After many high quality reviews from many excellent contributors, I've committed this to 10.1.x, and opting to not backport since it is a UI change that isn't addressing a bug.

    For context: This ticket was filed two months before the release of "Avengers: Age of Ultron" and "Mad Max: Fury Road" (which I saw right after returning from Drupalcon LA). The number one movie in the US on the actual date was "The Divergent Series: Insurgent". Nice work everyone, great to see this UX improvement added to core!

    Status: Fixed » Closed (fixed)

    Automatically closed - issue fixed for 2 weeks with no activity.

    quietone’s picture

    Published change record