diff --git a/core/modules/contact/tests/modules/contact_test_views/test_views/views.view.test_contact_link.yml b/core/modules/contact/tests/modules/contact_test_views/test_views/views.view.test_contact_link.yml index 680ab67..61a9940 100644 --- a/core/modules/contact/tests/modules/contact_test_views/test_views/views.view.test_contact_link.yml +++ b/core/modules/contact/tests/modules/contact_test_views/test_views/views.view.test_contact_link.yml @@ -99,9 +99,8 @@ display: element_default_classes: true empty: '' hide_alter_empty: true - anonymous_text: '' - format_username: true - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name contact: diff --git a/core/modules/content_translation/tests/modules/content_translation_test_views/test_views/views.view.test_entity_translations_link.yml b/core/modules/content_translation/tests/modules/content_translation_test_views/test_views/views.view.test_entity_translations_link.yml index 1767c67..87da0bb 100644 --- a/core/modules/content_translation/tests/modules/content_translation_test_views/test_views/views.view.test_entity_translations_link.yml +++ b/core/modules/content_translation/tests/modules/content_translation_test_views/test_views/views.view.test_entity_translations_link.yml @@ -50,9 +50,8 @@ display: table: users_field_data field: name label: Username - link_to_user: true - format_username: true - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name translation_link: diff --git a/core/modules/node/config/optional/views.view.content.yml b/core/modules/node/config/optional/views.view.content.yml index a3387be..9a1a7f3 100644 --- a/core/modules/node/config/optional/views.view.content.yml +++ b/core/modules/node/config/optional/views.view.content.yml @@ -208,11 +208,8 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - link_to_user: true - overwrite_anonymous: false - anonymous_text: '' - format_username: true - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name status: diff --git a/core/modules/node/config/optional/views.view.content_recent.yml b/core/modules/node/config/optional/views.view.content_recent.yml index 7cd39e1..1ad0161 100644 --- a/core/modules/node/config/optional/views.view.content_recent.yml +++ b/core/modules/node/config/optional/views.view.content_recent.yml @@ -185,13 +185,10 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - link_to_user: true - overwrite_anonymous: false - anonymous_text: '' - format_username: true entity_type: user entity_field: name - plugin_id: user_name + plugin_id: field + type: user_name edit_node: id: edit_node table: node diff --git a/core/modules/node/config/optional/views.view.glossary.yml b/core/modules/node/config/optional/views.view.glossary.yml index b0de110..08add9d 100644 --- a/core/modules/node/config/optional/views.view.glossary.yml +++ b/core/modules/node/config/optional/views.view.glossary.yml @@ -122,7 +122,8 @@ display: label: Author link_to_user: true relationship: uid - plugin_id: user_name + plugin_id: field + type: user_name group_type: group admin_label: '' exclude: false diff --git a/core/modules/user/config/optional/views.view.user_admin_people.yml b/core/modules/user/config/optional/views.view.user_admin_people.yml index 01a48e8..e2d6a5f 100644 --- a/core/modules/user/config/optional/views.view.user_admin_people.yml +++ b/core/modules/user/config/optional/views.view.user_admin_people.yml @@ -237,11 +237,8 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - link_to_user: true - overwrite_anonymous: false - anonymous_text: '' - format_username: true - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name status: diff --git a/core/modules/user/config/optional/views.view.who_s_new.yml b/core/modules/user/config/optional/views.view.who_s_new.yml index 0f10a8d..7905b35 100644 --- a/core/modules/user/config/optional/views.view.who_s_new.yml +++ b/core/modules/user/config/optional/views.view.who_s_new.yml @@ -58,7 +58,8 @@ display: table: users_field_data field: name label: '' - plugin_id: user_name + plugin_id: field + type: user_name alter: alter_text: false make_link: false @@ -70,8 +71,6 @@ display: html: false hide_empty: false empty_zero: false - link_to_user: true - overwrite_anonymous: false relationship: none group_type: group admin_label: '' @@ -86,8 +85,6 @@ display: element_default_classes: true empty: '' hide_alter_empty: true - anonymous_text: '' - format_username: true entity_type: user entity_field: name filters: diff --git a/core/modules/user/config/optional/views.view.who_s_online.yml b/core/modules/user/config/optional/views.view.who_s_online.yml index db54c5b..d34de2a 100644 --- a/core/modules/user/config/optional/views.view.who_s_online.yml +++ b/core/modules/user/config/optional/views.view.who_s_online.yml @@ -65,7 +65,8 @@ display: table: users_field_data field: name label: '' - plugin_id: user_name + plugin_id: field + type: user_name alter: alter_text: false make_link: false @@ -77,8 +78,6 @@ display: html: false hide_empty: false empty_zero: false - link_to_user: true - overwrite_anonymous: false relationship: none group_type: group admin_label: '' @@ -93,8 +92,6 @@ display: element_default_classes: true empty: '' hide_alter_empty: true - anonymous_text: '' - format_username: true entity_type: user entity_field: name filters: diff --git a/core/modules/user/config/schema/user.views.schema.yml b/core/modules/user/config/schema/user.views.schema.yml index 16573f4..8ed38cb 100644 --- a/core/modules/user/config/schema/user.views.schema.yml +++ b/core/modules/user/config/schema/user.views.schema.yml @@ -87,20 +87,6 @@ views.field.user_mail: type: views_field_user label: 'User language' -views.field.user_name: - type: views_field_user - label: 'User name' - mapping: - format_username: - type: boolean - label: 'Use formatted username' - overwrite_anonymous: - type: boolean - label: 'Overwrite the value to display for anonymous users' - anonymous_text: - type: label - label: 'Text to display for anonymous users' - views.field.user_permissions: type: views.field.prerender_list label: 'List of permission' @@ -132,10 +118,6 @@ views.filter.user_current: type: views.filter.boolean label: 'Current user' -views.filter.user_name: - type: views.filter.in_operator - label: 'User name' - views.filter.user_permissions: type: views.filter.many_to_one label: 'Permission' diff --git a/core/modules/user/src/Plugin/Field/FieldFormatter/UserFormatter.php b/core/modules/user/src/Plugin/Field/FieldFormatter/UserFormatter.php new file mode 100644 index 0000000..c5594b4 --- /dev/null +++ b/core/modules/user/src/Plugin/Field/FieldFormatter/UserFormatter.php @@ -0,0 +1,58 @@ + $item) { + /** @var $username \Drupal\user\UserInterface */ + if ($username = $item->getEntity()) { + $elements[$delta] = array( + '#theme' => 'username', + '#account' => $username, + '#link_options' => array('attributes' => array('rel' => 'user')), + '#cache' => array( + 'tags' => $username->getCacheTags(), + ), + ); + } + } + + return $elements; + } + + /** + * {@inheritdoc} + */ + public static function isApplicable(FieldDefinitionInterface $field_definition) { + return $field_definition->getName() == 'username'; + } + +} diff --git a/core/modules/user/src/Plugin/views/field/Name.php b/core/modules/user/src/Plugin/views/field/Name.php deleted file mode 100644 index cc91eea..0000000 --- a/core/modules/user/src/Plugin/views/field/Name.php +++ /dev/null @@ -1,109 +0,0 @@ -options['overwrite_anonymous']) || !empty($this->options['format_username'])) { - $this->additional_fields['uid'] = 'uid'; - } - } - - protected function defineOptions() { - $options = parent::defineOptions(); - - $options['overwrite_anonymous'] = array('default' => FALSE); - $options['anonymous_text'] = array('default' => ''); - $options['format_username'] = array('default' => TRUE); - - return $options; - } - - /** - * {@inheritdoc} - */ - public function buildOptionsForm(&$form, FormStateInterface $form_state) { - parent::buildOptionsForm($form, $form_state); - - $form['format_username'] = array( - '#title' => $this->t('Use formatted username'), - '#type' => 'checkbox', - '#default_value' => !empty($this->options['format_username']), - '#description' => $this->t('If checked, the username will be formatted by the system. If unchecked, it will be displayed raw.'), - ); - $form['overwrite_anonymous'] = array( - '#title' => $this->t('Overwrite the value to display for anonymous users'), - '#type' => 'checkbox', - '#default_value' => !empty($this->options['overwrite_anonymous']), - '#description' => $this->t('Enable to display different text for anonymous users.'), - ); - $form['anonymous_text'] = array( - '#title' => $this->t('Text to display for anonymous users'), - '#type' => 'textfield', - '#default_value' => $this->options['anonymous_text'], - '#states' => array( - 'visible' => array( - ':input[name="options[overwrite_anonymous]"]' => array('checked' => TRUE), - ), - ), - ); - } - - /** - * {@inheritdoc} - */ - protected function renderLink($data, ResultRow $values) { - if (!empty($this->options['link_to_user']) || !empty($this->options['overwrite_anonymous']) || !empty($this->options['format_username'])) { - $account = entity_create('user'); - $account->uid = $this->getValue($values, 'uid'); - $account->name = $this->getValue($values); - if (!empty($this->options['overwrite_anonymous']) && !$account->id()) { - // This is an anonymous user, and we're overriting the text. - return String::checkPlain($this->options['anonymous_text']); - } - elseif (!empty($this->options['link_to_user'])) { - $account->name = $this->getValue($values); - $username = array( - '#theme' => 'username', - '#account' => $account, - ); - return drupal_render($username); - } - // If we want a formatted username, do that. - if (!empty($this->options['format_username'])) { - return user_format_name($account); - } - } - - // Otherwise, there's no special handling, so return the data directly. - return $data; - } - -} diff --git a/core/modules/user/src/Plugin/views/wizard/Users.php b/core/modules/user/src/Plugin/views/wizard/Users.php index aa6488e..171bf4b 100644 --- a/core/modules/user/src/Plugin/views/wizard/Users.php +++ b/core/modules/user/src/Plugin/views/wizard/Users.php @@ -73,9 +73,7 @@ protected function defaultDisplayOptions() { $display_options['fields']['name']['alter']['html'] = 0; $display_options['fields']['name']['hide_empty'] = 0; $display_options['fields']['name']['empty_zero'] = 0; - $display_options['fields']['name']['link_to_user'] = 1; - $display_options['fields']['name']['overwrite_anonymous'] = 0; - $display_options['fields']['name']['plugin_id'] = 'user_name'; + $display_options['fields']['name']['plugin_id'] = 'field'; return $display_options; } diff --git a/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php b/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php index 8312b11..9fce98d 100644 --- a/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php +++ b/core/modules/user/src/Tests/Views/HandlerFieldUserNameTest.php @@ -31,6 +31,7 @@ public function testUserName() { $view = Views::getView('test_views_handler_field_user_name'); $view->initHandlers(); $view->field['name']->options['link_to_user'] = TRUE; + $view->field['name']->options['type'] = 'user_name'; $view->field['name']->init($view, $view->getDisplay('default')); $this->executeView($view); @@ -41,6 +42,7 @@ public function testUserName() { $this->assertTrue(strpos($render, 'user/1') !== FALSE, 'If link to user is checked the link to the user should appear as well.'); $view->field['name']->options['link_to_user'] = FALSE; + $view->field['name']->options['type'] = 'user_name'; $username = $view->result[0]->users_field_data_name = $this->randomMachineName(); $view->result[0]->uid = 1; $render = $view->field['name']->advancedRender($view->result[0]); diff --git a/core/modules/user/src/UserViewsData.php b/core/modules/user/src/UserViewsData.php index 621da71..2704fe6 100644 --- a/core/modules/user/src/UserViewsData.php +++ b/core/modules/user/src/UserViewsData.php @@ -80,7 +80,8 @@ public function getViewsData() { ); $data['users_field_data']['name']['help'] = t('The user or author name.'); - $data['users_field_data']['name']['field']['id'] = 'user_name'; + $data['users_field_data']['name']['field']['id'] = 'field'; + $data['users_field_data']['name']['field']['default_formatter'] = 'user_name'; $data['users_field_data']['name']['filter']['title'] = t('Name (raw)'); $data['users_field_data']['name']['filter']['help'] = t('The user or author name. This filter does not check if the user exists and allows partial matching. Does not use autocomplete.'); diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_field_permission.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_field_permission.yml index a9090c0..7fd0c08 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_field_permission.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_field_permission.yml @@ -81,8 +81,8 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - link_to_user: false - plugin_id: user + plugin_id: field + type: user entity_type: user entity_field: uid permission: diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_filter_permission.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_filter_permission.yml index 53c2355..5cc9537 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_filter_permission.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_filter_permission.yml @@ -81,8 +81,8 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - link_to_user: false - plugin_id: user + plugin_id: field + type: user entity_type: user entity_field: uid filters: diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml index 33d89fc..f9eaa6e 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_groupwise_user.yml @@ -28,7 +28,8 @@ display: field: name id: name table: users_field_data - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name nid: diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_data.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_data.yml index 30842f5..9bdb32a 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_data.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_data.yml @@ -51,9 +51,8 @@ display: html: false hide_empty: false empty_zero: false - link_to_user: true - overwrite_anonymous: false - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name data: diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_relationship.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_relationship.yml index b6b2953..7e44245 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_relationship.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_user_relationship.yml @@ -43,10 +43,9 @@ display: hide_alter_empty: false hide_empty: false id: name - link_to_user: true - overwrite_anonymous: false table: users_field_data - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name title: @@ -89,9 +88,9 @@ display: hide_alter_empty: false hide_empty: false id: uid - link_to_user: true table: users_field_data - plugin_id: user + plugin_id: field + type: user entity_type: user entity_field: uid pager: diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_role.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_role.yml index 315c891..7cfbca9 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_role.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_role.yml @@ -85,11 +85,8 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - link_to_user: true - overwrite_anonymous: false - anonymous_text: '' - format_username: true - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name roles_target_id: diff --git a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_user_name.yml b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_user_name.yml index 8136550..c0c3e94 100644 --- a/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_user_name.yml +++ b/core/modules/user/tests/modules/user_test_views/test_views/views.view.test_views_handler_field_user_name.yml @@ -36,11 +36,9 @@ display: hide_empty: false id: name label: '' - link_to_user: false - overwrite_anonymous: false - format_username: false table: users_field_data - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name pager: diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_alias.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_alias.yml index 174ed8d..da36f2f 100644 --- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_alias.yml +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_alias.yml @@ -38,10 +38,9 @@ display: hide_empty: false id: name label: '' - link_to_user: true - overwrite_anonymous: false table: users_field_data - plugin_id: user_name + plugin_id: field + type: user_name entity_type: user entity_field: name filters: