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
b48d098a1e
commit
d60d5be0b9
|
@ -27,6 +27,7 @@ display:
|
|||
id: changed
|
||||
table: users_field_data
|
||||
field: changed
|
||||
label: Updated date
|
||||
provider: user
|
||||
date_format: html_date
|
||||
filters: { }
|
||||
|
|
|
@ -428,7 +428,13 @@ abstract class FieldPluginBase extends HandlerBase {
|
|||
protected function 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['alter'] = array(
|
||||
'contains' => array(
|
||||
|
@ -864,10 +870,10 @@ abstract class FieldPluginBase extends HandlerBase {
|
|||
// Setup the tokens for fields.
|
||||
$previous = $this->getPreviousFieldLabels();
|
||||
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.
|
||||
$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.
|
||||
foreach ($this->view->display_handler->getHandlers('argument') as $arg => $handler) {
|
||||
|
|
|
@ -104,6 +104,13 @@ abstract class StylePluginBase extends PluginBase {
|
|||
*/
|
||||
protected $groupingTheme = 'views_view_grouping';
|
||||
|
||||
/**
|
||||
* Should field labels be enabled by default.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $defaultFieldLabels = FALSE;
|
||||
|
||||
/**
|
||||
* Overrides \Drupal\views\Plugin\views\PluginBase::init().
|
||||
*
|
||||
|
@ -189,6 +196,15 @@ abstract class StylePluginBase extends PluginBase {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
|
|
@ -49,6 +49,13 @@ class Table extends StylePluginBase {
|
|||
*/
|
||||
protected $usesRowClass = TRUE;
|
||||
|
||||
/**
|
||||
* Should field labels be enabled by default.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $defaultFieldLabels = TRUE;
|
||||
|
||||
/**
|
||||
* Contains the current active sort column.
|
||||
* @var string
|
||||
|
|
|
@ -326,6 +326,8 @@ class FieldWebTest extends HandlerTestBase {
|
|||
$id_field = $view->field['id'];
|
||||
|
||||
$id_field->options['element_default_classes'] = FALSE;
|
||||
// Setup some kind of label by default.
|
||||
$id_field->options['label'] = $this->randomMachineName();
|
||||
$output = $view->preview();
|
||||
$output = drupal_render($output);
|
||||
$this->assertFalse($this->xpathContent($output, '//div[contains(@class, :class)]', array(':class' => 'field-content')));
|
||||
|
|
|
@ -121,18 +121,21 @@ class StyleTest extends ViewTestBase {
|
|||
'table' => 'views_test_data',
|
||||
'field' => 'name',
|
||||
'relationship' => 'none',
|
||||
'label' => 'Name',
|
||||
),
|
||||
'job' => array(
|
||||
'id' => 'job',
|
||||
'table' => 'views_test_data',
|
||||
'field' => 'job',
|
||||
'relationship' => 'none',
|
||||
'label' => 'Job',
|
||||
),
|
||||
'age' => array(
|
||||
'id' => 'age',
|
||||
'table' => 'views_test_data',
|
||||
'field' => 'age',
|
||||
'relationship' => 'none',
|
||||
'label' => 'Age',
|
||||
),
|
||||
));
|
||||
|
||||
|
|
|
@ -10,18 +10,21 @@ display:
|
|||
id: id
|
||||
table: views_test_data
|
||||
field: id
|
||||
label: ID
|
||||
plugin_id: numeric
|
||||
provider: views_test_data
|
||||
name:
|
||||
id: name
|
||||
table: views_test_data
|
||||
field: name
|
||||
label: Name
|
||||
plugin_id: string
|
||||
provider: views_test_data
|
||||
created:
|
||||
id: created
|
||||
table: views_test_data
|
||||
field: created
|
||||
label: created
|
||||
plugin_id: date
|
||||
provider: views_test_data
|
||||
display_options:
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
|
||||
namespace Drupal\views_ui\Tests;
|
||||
|
||||
use Drupal\views\Views;
|
||||
|
||||
/**
|
||||
* Tests the UI of field handlers.
|
||||
*
|
||||
|
@ -28,14 +30,14 @@ class FieldUITest extends UITestBase {
|
|||
public function testFieldUI() {
|
||||
// Ensure the field is not marked as hidden on the first run.
|
||||
$this->drupalGet('admin/structure/views/view/test_view/edit');
|
||||
$this->assertText('Views test: Name (Name)');
|
||||
$this->assertNoText('Views test: Name (Name) [' . t('hidden') . ']');
|
||||
$this->assertText('Views test: Name');
|
||||
$this->assertNoText('Views test: Name [' . t('hidden') . ']');
|
||||
|
||||
// Hides the field and check whether the hidden label is appended.
|
||||
$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->assertText('Views test: Name (Name) [' . t('hidden') . ']');
|
||||
$this->assertText('Views test: Name [' . t('hidden') . ']');
|
||||
|
||||
// Ensure that the expected tokens appear in the UI.
|
||||
$edit_handler_url = 'admin/structure/views/nojs/handler/test_view/default/field/age';
|
||||
|
@ -57,4 +59,26 @@ class FieldUITest extends UITestBase {
|
|||
$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 @@ class GroupByTest extends UITestBase {
|
|||
|
||||
// Change the groupby type in the UI.
|
||||
$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'));
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<?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.');
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue