Commit a888a694 authored by alexpott's avatar alexpott

Issue #1836384 by Lendude, pguillard, dawehner, damiankloip, hynnot, tadityar,...

Issue #1836384 by Lendude, pguillard, dawehner, damiankloip, hynnot, tadityar, anil280988, jain_deepak, gaurav_varshney: The views UI should display "All Displays" option only when there are more 1 displays
parent c6e1b960
......@@ -47,6 +47,9 @@ class PagerTest extends PluginTestBase {
* @see https://www.drupal.org/node/652712
*/
public function testStorePagerSettings() {
// Show the master display so the override selection is shown.
\Drupal::configFactory()->getEditable('views.settings')->set('ui.show.master_display', TRUE)->save();
$admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
$this->drupalLogin($admin_user);
// Test behavior described in
......@@ -106,7 +109,7 @@ public function testStorePagerSettings() {
'pager[type]' => 'mini',
);
$this->drupalPostForm('admin/structure/views/nojs/display/test_store_pager_settings/page_1/pager', $edit, t('Apply'));
$this->drupalGet('admin/structure/views/view/test_store_pager_settings/edit');
$this->drupalGet('admin/structure/views/view/test_store_pager_settings/edit/page_1');
$this->assertText('Mini', 'Changed pager plugin, should change some text');
$edit = array(
......
......@@ -226,7 +226,11 @@ function views_ui_standard_display_dropdown(&$form, FormStateInterface $form_sta
$form['progress']['#weight'] = -1001;
}
if ($current_display->isDefaultDisplay()) {
// The dropdown should not be added when :
// - this is the default display.
// - there is no master shown and just one additional display (mostly page)
// and the current display is defaulted.
if ($current_display->isDefaultDisplay() || ($current_display->isDefaulted($section) && !\Drupal::config('views.settings')->get('ui.show.master_display') && count($displays) <= 2)) {
return;
}
......
......@@ -305,4 +305,32 @@ public function testActionLinks() {
$this->assertNoRaw($display_title);
}
/**
* Tests that the override option is hidden when it's not needed.
*/
public function testHideDisplayOverride() {
// Test that the override option appears with two displays.
$this->drupalGet('admin/structure/views/nojs/handler/test_display/page_1/field/title');
$this->assertText('All displays');
// Remove a display and test if the override option is hidden.
$this->drupalPostForm('admin/structure/views/view/test_display/edit/block_1', [], t('Delete @display', ['@display' => 'Block']));
$this->drupalPostForm(NULL, [], t('Save'));
$this->drupalGet('admin/structure/views/nojs/handler/test_display/page_1/field/title');
$this->assertNoText('All displays');
// Test that the override option is shown when display master is on.
\Drupal::configFactory()->getEditable('views.settings')->set('ui.show.master_display', TRUE)->save();
$this->drupalGet('admin/structure/views/nojs/handler/test_display/page_1/field/title');
$this->assertText('All displays');
// Test that the override option is shown if the current display is
// overridden so that the option to revert is available.
$this->drupalPostForm(NULL, ['override[dropdown]' => 'page_1'], t('Apply'));
\Drupal::configFactory()->getEditable('views.settings')->set('ui.show.master_display', FALSE)->save();
$this->drupalGet('admin/structure/views/nojs/handler/test_display/page_1/field/title');
$this->assertText('Revert to default');
}
}
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