Commit d60d5be0 authored by alexpott's avatar alexpott

Issue #1831674 by lokapujya, longwave, dawehner, Mirakolous, neoligero, Kevin...

Issue #1831674 by lokapujya, longwave, dawehner, Mirakolous, neoligero, Kevin Morse | Bojhan: "Create a label" should be off by default, with an opt-in for style plugins.
parent b48d098a
...@@ -27,6 +27,7 @@ display: ...@@ -27,6 +27,7 @@ display:
id: changed id: changed
table: users_field_data table: users_field_data
field: changed field: changed
label: Updated date
provider: user provider: user
date_format: html_date date_format: html_date
filters: { } filters: { }
......
...@@ -428,7 +428,13 @@ public function useStringGroupBy() { ...@@ -428,7 +428,13 @@ public function useStringGroupBy() {
protected function defineOptions() { protected function defineOptions() {
$options = parent::defineOptions(); $options = parent::defineOptions();
$options['label'] = array('default' => $this->definition['title'], 'translatable' => TRUE); $options['label'] = array('default' => '', 'translatable' => TRUE);
// Some styles (for example table) should have labels enabled by default.
$style = $this->view->getStyle();
if (isset($style) && $style->defaultFieldLabels()) {
$options['label']['default'] = $this->definition['title'];
}
$options['exclude'] = array('default' => FALSE, 'bool' => TRUE); $options['exclude'] = array('default' => FALSE, 'bool' => TRUE);
$options['alter'] = array( $options['alter'] = array(
'contains' => array( 'contains' => array(
...@@ -864,10 +870,10 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) { ...@@ -864,10 +870,10 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
// Setup the tokens for fields. // Setup the tokens for fields.
$previous = $this->getPreviousFieldLabels(); $previous = $this->getPreviousFieldLabels();
foreach ($previous as $id => $label) { foreach ($previous as $id => $label) {
$options[t('Fields')]["[$id]"] = $label; $options[t('Fields')]["[$id]"] = substr(strrchr($label, ":"), 2 );
} }
// Add the field to the list of options. // Add the field to the list of options.
$options[t('Fields')]["[{$this->options['id']}]"] = $this->label(); $options[t('Fields')]["[{$this->options['id']}]"] = substr(strrchr($this->adminLabel(), ":"), 2 );
$count = 0; // This lets us prepare the key as we want it printed. $count = 0; // This lets us prepare the key as we want it printed.
foreach ($this->view->display_handler->getHandlers('argument') as $arg => $handler) { foreach ($this->view->display_handler->getHandlers('argument') as $arg => $handler) {
......
...@@ -104,6 +104,13 @@ abstract class StylePluginBase extends PluginBase { ...@@ -104,6 +104,13 @@ abstract class StylePluginBase extends PluginBase {
*/ */
protected $groupingTheme = 'views_view_grouping'; protected $groupingTheme = 'views_view_grouping';
/**
* Should field labels be enabled by default.
*
* @var bool
*/
protected $defaultFieldLabels = FALSE;
/** /**
* Overrides \Drupal\views\Plugin\views\PluginBase::init(). * Overrides \Drupal\views\Plugin\views\PluginBase::init().
* *
...@@ -189,6 +196,15 @@ public function usesTokens() { ...@@ -189,6 +196,15 @@ public function usesTokens() {
} }
} }
/**
* Return TRUE if this style enables field labels by default.
*
* @return bool
*/
public function defaultFieldLabels() {
return $this->defaultFieldLabels;
}
/** /**
* Return the token replaced row class for the specified row. * Return the token replaced row class for the specified row.
*/ */
......
...@@ -49,6 +49,13 @@ class Table extends StylePluginBase { ...@@ -49,6 +49,13 @@ class Table extends StylePluginBase {
*/ */
protected $usesRowClass = TRUE; protected $usesRowClass = TRUE;
/**
* Should field labels be enabled by default.
*
* @var bool
*/
protected $defaultFieldLabels = TRUE;
/** /**
* Contains the current active sort column. * Contains the current active sort column.
* @var string * @var string
......
...@@ -326,6 +326,8 @@ public function testFieldClasses() { ...@@ -326,6 +326,8 @@ public function testFieldClasses() {
$id_field = $view->field['id']; $id_field = $view->field['id'];
$id_field->options['element_default_classes'] = FALSE; $id_field->options['element_default_classes'] = FALSE;
// Setup some kind of label by default.
$id_field->options['label'] = $this->randomMachineName();
$output = $view->preview(); $output = $view->preview();
$output = drupal_render($output); $output = drupal_render($output);
$this->assertFalse($this->xpathContent($output, '//div[contains(@class, :class)]', array(':class' => 'field-content'))); $this->assertFalse($this->xpathContent($output, '//div[contains(@class, :class)]', array(':class' => 'field-content')));
......
...@@ -121,18 +121,21 @@ function _testGrouping($stripped = FALSE) { ...@@ -121,18 +121,21 @@ function _testGrouping($stripped = FALSE) {
'table' => 'views_test_data', 'table' => 'views_test_data',
'field' => 'name', 'field' => 'name',
'relationship' => 'none', 'relationship' => 'none',
'label' => 'Name',
), ),
'job' => array( 'job' => array(
'id' => 'job', 'id' => 'job',
'table' => 'views_test_data', 'table' => 'views_test_data',
'field' => 'job', 'field' => 'job',
'relationship' => 'none', 'relationship' => 'none',
'label' => 'Job',
), ),
'age' => array( 'age' => array(
'id' => 'age', 'id' => 'age',
'table' => 'views_test_data', 'table' => 'views_test_data',
'field' => 'age', 'field' => 'age',
'relationship' => 'none', 'relationship' => 'none',
'label' => 'Age',
), ),
)); ));
......
...@@ -10,18 +10,21 @@ display: ...@@ -10,18 +10,21 @@ display:
id: id id: id
table: views_test_data table: views_test_data
field: id field: id
label: ID
plugin_id: numeric plugin_id: numeric
provider: views_test_data provider: views_test_data
name: name:
id: name id: name
table: views_test_data table: views_test_data
field: name field: name
label: Name
plugin_id: string plugin_id: string
provider: views_test_data provider: views_test_data
created: created:
id: created id: created
table: views_test_data table: views_test_data
field: created field: created
label: created
plugin_id: date plugin_id: date
provider: views_test_data provider: views_test_data
display_options: display_options:
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
namespace Drupal\views_ui\Tests; namespace Drupal\views_ui\Tests;
use Drupal\views\Views;
/** /**
* Tests the UI of field handlers. * Tests the UI of field handlers.
* *
...@@ -28,14 +30,14 @@ class FieldUITest extends UITestBase { ...@@ -28,14 +30,14 @@ class FieldUITest extends UITestBase {
public function testFieldUI() { public function testFieldUI() {
// Ensure the field is not marked as hidden on the first run. // Ensure the field is not marked as hidden on the first run.
$this->drupalGet('admin/structure/views/view/test_view/edit'); $this->drupalGet('admin/structure/views/view/test_view/edit');
$this->assertText('Views test: Name (Name)'); $this->assertText('Views test: Name');
$this->assertNoText('Views test: Name (Name) [' . t('hidden') . ']'); $this->assertNoText('Views test: Name [' . t('hidden') . ']');
// Hides the field and check whether the hidden label is appended. // Hides the field and check whether the hidden label is appended.
$edit_handler_url = 'admin/structure/views/nojs/handler/test_view/default/field/name'; $edit_handler_url = 'admin/structure/views/nojs/handler/test_view/default/field/name';
$this->drupalPostForm($edit_handler_url, array('options[exclude]' => TRUE), t('Apply')); $this->drupalPostForm($edit_handler_url, array('options[exclude]' => TRUE), t('Apply'));
$this->assertText('Views test: Name (Name) [' . t('hidden') . ']'); $this->assertText('Views test: Name [' . t('hidden') . ']');
// Ensure that the expected tokens appear in the UI. // Ensure that the expected tokens appear in the UI.
$edit_handler_url = 'admin/structure/views/nojs/handler/test_view/default/field/age'; $edit_handler_url = 'admin/structure/views/nojs/handler/test_view/default/field/age';
...@@ -57,4 +59,26 @@ public function testFieldUI() { ...@@ -57,4 +59,26 @@ public function testFieldUI() {
$this->assertEqual((string) $result[2], '[name] == Name'); $this->assertEqual((string) $result[2], '[name] == Name');
} }
/**
* Tests the field labels.
*/
public function testFieldLabel() {
// Create a view with unformatted style and make sure the fields have no
// labels by default.
$view = array();
$view['label'] = $this->randomMachineName(16);
$view['id'] = strtolower($this->randomMachineName(16));
$view['description'] = $this->randomMachineName(16);
$view['show[wizard_key]'] = 'node';
$view['page[create]'] = TRUE;
$view['page[style][style_plugin]'] = 'default';
$view['page[title]'] = $this->randomMachineName(16);
$view['page[path]'] = $view['id'];
$this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
$view = Views::getView($view['id']);
$view->initHandlers();
$this->assertEqual($view->field['title']->options['label'], '', 'The field label for normal styles are empty.');
}
} }
...@@ -42,7 +42,7 @@ function testGroupBySave() { ...@@ -42,7 +42,7 @@ function testGroupBySave() {
// Change the groupby type in the UI. // Change the groupby type in the UI.
$this->drupalPostForm($edit_groubpy_url, array('options[group_type]' => 'count'), t('Apply')); $this->drupalPostForm($edit_groubpy_url, array('options[group_type]' => 'count'), t('Apply'));
$this->assertLink('COUNT(Views test: ID) (ID)', 0, 'The count setting is displayed in the UI'); $this->assertLink('COUNT(Views test: ID)', 0, 'The count setting is displayed in the UI');
$this->drupalPostForm(NULL, array(), t('Save')); $this->drupalPostForm(NULL, array(), t('Save'));
......
<?php
/**
* @file
* Contains \Drupal\views_ui\Tests\StyleTableTest.
*/
namespace Drupal\views_ui\Tests;
use Drupal\views\Views;
/**
* Tests the UI of views when using the table style.
*
* @group views_ui
* @see \Drupal\views\Plugin\views\style\Table.
*/
class StyleTableTest extends UITestBase {
/**
* Tests created a table style view.
*/
public function testWizard() {
// Create a new view and check that the first field has a label.
$view = array();
$view['label'] = $this->randomMachineName(16);
$view['id'] = strtolower($this->randomMachineName(16));
$view['show[wizard_key]'] = 'node';
$view['page[create]'] = TRUE;
$view['page[style][style_plugin]'] = 'table';
$view['page[title]'] = $this->randomMachineName(16);
$view['page[path]'] = $view['id'];
$this->drupalPostForm('admin/structure/views/add', $view, t('Save and edit'));
$view = Views::getView($view['id']);
$view->initHandlers();
$this->assertEqual($view->field['title']->options['label'], 'Title', 'The field label for table styles is not empty.');
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment