diff --git a/core/modules/language/config/schema/language.views.schema.yml b/core/modules/language/config/schema/language.views.schema.yml deleted file mode 100644 index 616a27a..0000000 --- a/core/modules/language/config/schema/language.views.schema.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Schema for the views plugins of the Language module. - -views.argument.language: - type: views_argument - label: 'Language' - -views.field.language: - type: views_field - label: 'Language' - -views.filter.language: - type: views.filter.in_operator - label: 'Language' - -views.filter_value.language: - type: string - label: 'Language' diff --git a/core/modules/language/src/Plugin/views/argument/LanguageArgument.php b/core/modules/language/src/Plugin/views/argument/LanguageArgument.php deleted file mode 100644 index 1366a0f..0000000 --- a/core/modules/language/src/Plugin/views/argument/LanguageArgument.php +++ /dev/null @@ -1,55 +0,0 @@ -language($data->{$this->name_alias}); - } - - /** - * Overrides \Drupal\views\Plugin\views\argument\ArgumentPluginBase::title(). - * - * Gets the user friendly version of the language name for display as a - * title placeholder. - */ - function title() { - return $this->language($this->argument); - } - - /** - * Returns the language name for a given langcode. - * - * @param string $langcode - * The language code. - * - * @return string - * The translated name for the language, or "Unknown language" if the - * language was not found. - */ - function language($langcode) { - $languages = views_language_list(); - return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language'); - } - -} diff --git a/core/modules/language/src/Plugin/views/field/LanguageField.php b/core/modules/language/src/Plugin/views/field/LanguageField.php deleted file mode 100644 index 3909fcd..0000000 --- a/core/modules/language/src/Plugin/views/field/LanguageField.php +++ /dev/null @@ -1,50 +0,0 @@ - FALSE, 'bool' => TRUE); - - return $options; - } - - public function buildOptionsForm(&$form, &$form_state) { - parent::buildOptionsForm($form, $form_state); - $form['native_language'] = array( - '#title' => t('Native language'), - '#type' => 'checkbox', - '#default_value' => $this->options['native_language'], - '#description' => t('If enabled, the native name of the language will be displayed'), - ); - } - - /** - * {@inheritdoc} - */ - public function render(ResultRow $values) { - // @todo: Drupal Core dropped native language until config translation is - // ready, see http://drupal.org/node/1616594. - $value = $this->getValue($values); - $language = language_load($value); - return $language ? $language->name : ''; - } - -} diff --git a/core/modules/language/src/Plugin/views/filter/LanguageFilter.php b/core/modules/language/src/Plugin/views/filter/LanguageFilter.php deleted file mode 100644 index d03ea6f..0000000 --- a/core/modules/language/src/Plugin/views/filter/LanguageFilter.php +++ /dev/null @@ -1,33 +0,0 @@ -value_options)) { - $this->value_title = t('Language'); - $languages = array( - '***CURRENT_LANGUAGE***' => t("Current user's language"), - '***DEFAULT_LANGUAGE***' => t("Default site language"), - ); - $languages = array_merge($languages, views_language_list()); - $this->value_options = $languages; - } - } - -} diff --git a/core/modules/node/config/install/views.view.content.yml b/core/modules/node/config/install/views.view.content.yml index 4b95eb3..f01eb21 100644 --- a/core/modules/node/config/install/views.view.content.yml +++ b/core/modules/node/config/install/views.view.content.yml @@ -53,7 +53,6 @@ display: changed: changed edit_node: edit_node delete_node: delete_node - translation_link: translation_link dropbutton: dropbutton timestamp: title info: @@ -111,13 +110,6 @@ display: separator: '' empty_column: false responsive: '' - translation_link: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' dropbutton: sortable: false default_sort_order: asc @@ -268,24 +260,6 @@ display: text: Delete plugin_id: node_link_delete provider: node - translation_link: - id: translation_link - table: node - field: translation_link - label: '' - exclude: true - alter: - alter_text: false - element_class: '' - element_default_classes: true - hide_alter_empty: true - hide_empty: false - empty_zero: false - empty: '' - text: Translate - optional: true - plugin_id: content_translation_link - provider: content_translation dropbutton: id: dropbutton table: views @@ -294,7 +268,6 @@ display: fields: edit_node: edit_node delete_node: delete_node - translation_link: translation_link destination: true plugin_id: dropbutton provider: views diff --git a/core/modules/node/src/Tests/NodeTranslationUITest.php b/core/modules/node/src/Tests/NodeTranslationUITest.php index b6dde03..ea4cb9f 100644 --- a/core/modules/node/src/Tests/NodeTranslationUITest.php +++ b/core/modules/node/src/Tests/NodeTranslationUITest.php @@ -174,22 +174,6 @@ protected function doTestAuthoringInfo() { } /** - * Tests translate link on content admin page. - */ - function testTranslateLinkContentAdminPage() { - $this->drupalLogin($this->administrator); - - $page = $this->drupalCreateNode(array('type' => 'page')); - $article = $this->drupalCreateNode(array('type' => 'article', 'langcode' => $this->langcodes[0])); - - // Verify translation links. - $this->drupalGet('admin/content'); - $this->assertResponse(200); - $this->assertLinkByHref('node/' . $article->id() . '/translations'); - $this->assertNoLinkByHref('node/' . $page->id() . '/translations'); - } - - /** * Tests that translation page inherits admin status of edit page. */ function testTranslationLinkTheme() { diff --git a/core/modules/user/config/install/views.view.user_admin_people.yml b/core/modules/user/config/install/views.view.user_admin_people.yml index e08752e..963303f 100644 --- a/core/modules/user/config/install/views.view.user_admin_people.yml +++ b/core/modules/user/config/install/views.view.user_admin_people.yml @@ -77,7 +77,6 @@ display: created: created access: access edit_node: edit_node - translation_link: translation_link dropbutton: dropbutton info: user_bulk_form: @@ -125,11 +124,6 @@ display: separator: '' empty_column: false responsive: priority-low - translation_link: - align: '' - separator: '' - empty_column: false - responsive: '' dropbutton: sortable: false default_sort_order: asc @@ -511,58 +505,6 @@ display: text: Edit plugin_id: user_link_edit provider: user - translation_link: - id: translation_link - table: users - field: translation_link - relationship: none - group_type: group - admin_label: '' - label: 'Translation link' - exclude: true - alter: - alter_text: false - text: '' - make_link: false - path: '' - absolute: false - external: false - replace_spaces: false - path_case: none - trim_whitespace: false - alt: '' - rel: '' - link_class: '' - prefix: '' - suffix: '' - target: '' - nl2br: false - max_length: '' - word_boundary: true - ellipsis: true - more_link: false - more_link_text: '' - more_link_path: '' - strip_tags: false - trim: false - preserve_tags: '' - html: false - element_type: '' - element_class: '' - element_label_type: '' - element_label_class: '' - element_label_colon: true - element_wrapper_type: '' - element_wrapper_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - text: Translate - optional: true - plugin_id: content_translation_link - provider: content_translation dropbutton: id: dropbutton table: views @@ -613,7 +555,6 @@ display: hide_alter_empty: true fields: edit_node: edit_node - translation_link: translation_link user_bulk_form: '0' name: '0' status: '0' diff --git a/core/modules/user/src/Tests/UserTranslationUITest.php b/core/modules/user/src/Tests/UserTranslationUITest.php index d8c8332..c5b6a8f 100644 --- a/core/modules/user/src/Tests/UserTranslationUITest.php +++ b/core/modules/user/src/Tests/UserTranslationUITest.php @@ -52,19 +52,4 @@ protected function getNewEntityValues($langcode) { return array('name' => $this->name) + parent::getNewEntityValues($langcode); } - /** - * Tests translate link on user admin list. - */ - function testTranslateLinkUserAdminPage() { - $this->admin_user = $this->drupalCreateUser(array_merge(parent::getTranslatorPermissions(), array('access administration pages', 'administer users'))); - $this->drupalLogin($this->admin_user); - - $uid = $this->createEntity(array('name' => $this->randomName()), $this->langcodes[0]); - - // Verify translation links. - $this->drupalGet('admin/people'); - $this->assertResponse(200); - $this->assertLinkByHref('user/' . $uid . '/translations'); - } - } diff --git a/core/modules/views/config/schema/views.argument.schema.yml b/core/modules/views/config/schema/views.argument.schema.yml index 92aa477..8d9a3b4 100644 --- a/core/modules/views/config/schema/views.argument.schema.yml +++ b/core/modules/views/config/schema/views.argument.schema.yml @@ -143,3 +143,7 @@ views.argument.date_year_month: created: type: string label: 'Date Year month' + +views.argument.language: + type: views_argument + label: 'Language' diff --git a/core/modules/views/config/schema/views.field.schema.yml b/core/modules/views/config/schema/views.field.schema.yml index 595461b..c515361 100644 --- a/core/modules/views/config/schema/views.field.schema.yml +++ b/core/modules/views/config/schema/views.field.schema.yml @@ -174,3 +174,7 @@ views.field.url: views.field.xss: type: views_field label: 'Xss' + +views.field.language: + type: views_field + label: 'Language' diff --git a/core/modules/views/config/schema/views.filter.schema.yml b/core/modules/views/config/schema/views.filter.schema.yml index 4f4f77a..537ba81 100644 --- a/core/modules/views/config/schema/views.filter.schema.yml +++ b/core/modules/views/config/schema/views.filter.schema.yml @@ -140,3 +140,11 @@ views.filter_value.boolean: views.filter_value.combine: type: string + +views.filter.language: + type: views.filter.in_operator + label: 'Language' + +views.filter_value.language: + type: string + label: 'Language' diff --git a/core/modules/views/src/Plugin/views/argument/LanguageArgument.php b/core/modules/views/src/Plugin/views/argument/LanguageArgument.php new file mode 100644 index 0000000..c73ca6b --- /dev/null +++ b/core/modules/views/src/Plugin/views/argument/LanguageArgument.php @@ -0,0 +1,53 @@ +language($data->{$this->name_alias}); + } + + /** + * Overrides \Drupal\views\Plugin\views\argument\ArgumentPluginBase::title(). + * + * Gets the user friendly version of the language name for display as a + * title placeholder. + */ + function title() { + return $this->language($this->argument); + } + + /** + * Returns the language name for a given langcode. + * + * @param string $langcode + * The language code. + * + * @return string + * The translated name for the language, or "Unknown language" if the + * language was not found. + */ + function language($langcode) { + $languages = views_language_list(); + return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language'); + } + +} diff --git a/core/modules/views/src/Plugin/views/field/LanguageField.php b/core/modules/views/src/Plugin/views/field/LanguageField.php new file mode 100644 index 0000000..7c6c35c --- /dev/null +++ b/core/modules/views/src/Plugin/views/field/LanguageField.php @@ -0,0 +1,49 @@ + FALSE, 'bool' => TRUE); + + return $options; + } + + public function buildOptionsForm(&$form, &$form_state) { + parent::buildOptionsForm($form, $form_state); + $form['native_language'] = array( + '#title' => t('Native language'), + '#type' => 'checkbox', + '#default_value' => $this->options['native_language'], + '#description' => t('If enabled, the native name of the language will be displayed'), + ); + } + + /** + * {@inheritdoc} + */ + public function render(ResultRow $values) { + // @todo: Drupal Core dropped native language until config translation is + // ready, see http://drupal.org/node/1616594. + $value = $this->getValue($values); + $language = language_load($value); + return $language ? $language->name : ''; + } + +} diff --git a/core/modules/views/src/Plugin/views/filter/LanguageFilter.php b/core/modules/views/src/Plugin/views/filter/LanguageFilter.php new file mode 100644 index 0000000..8b08f33 --- /dev/null +++ b/core/modules/views/src/Plugin/views/filter/LanguageFilter.php @@ -0,0 +1,31 @@ +value_options)) { + $this->value_title = t('Language'); + $languages = array( + '***CURRENT_LANGUAGE***' => t("Current user's language"), + '***DEFAULT_LANGUAGE***' => t("Default site language"), + ); + $languages = array_merge($languages, views_language_list()); + $this->value_options = $languages; + } + } + +} diff --git a/core/profiles/standard/src/Tests/StandardTest.php b/core/profiles/standard/src/Tests/StandardTest.php index a8d4724..9977e64 100644 --- a/core/profiles/standard/src/Tests/StandardTest.php +++ b/core/profiles/standard/src/Tests/StandardTest.php @@ -7,7 +7,7 @@ namespace Drupal\standard\Tests; -use Drupal\comment\Entity\Comment; +use Drupal\config\Tests\SchemaCheckTestTrait; use Drupal\simpletest\WebTestBase; /** @@ -17,6 +17,8 @@ */ class StandardTest extends WebTestBase { + use SchemaCheckTestTrait; + protected $profile = 'standard'; /** @@ -86,6 +88,18 @@ function testStandard() { $this->drupalGet('rss.xml'); $this->assertText('Foobar'); $this->assertNoText('Then she picked out two somebodies, Sally and me'); + + // Now we have all configuration imported, test all of them for schema + // conformance. Ensures all imported default configuration is valid when + // standard profile modules are enabled. + $names = $this->container->get('config.storage')->listAll(); + $factory = $this->container->get('config.factory'); + /** @var \Drupal\Core\Config\TypedConfigManagerInterface $typed_config */ + $typed_config = $this->container->get('config.typed'); + foreach ($names as $name) { + $config = $factory->get($name); + $this->assertConfigSchema($typed_config, $name, $config->get()); + } } }