Issue #2547811 by nlisgo, borisson_, davidhernandez, dawehner, mansspams: Header and footer are appearing in markup when they should be empty

8.0.x
Alex Pott 2015-09-10 14:56:43 +01:00
parent 997da33d6c
commit d997d39712
2 changed files with 38 additions and 1 deletions

View File

@ -2217,7 +2217,9 @@ abstract class DisplayPluginBase extends PluginBase implements DisplayPluginInte
public function renderArea($area, $empty = FALSE) {
$return = array();
foreach ($this->getHandlers($area) as $key => $area_handler) {
$return[$key] = $area_handler->render($empty);
if ($area_render = $area_handler->render($empty)) {
$return[$key] = $area_render;
}
}
return $return;
}

View File

@ -115,6 +115,41 @@ class AreaTest extends HandlerTestBase {
$this->assertTrue(strpos($output, '<script') === FALSE, 'Script tags were escaped');
}
/**
* Tests that the header and footer areas are not rendered if empty.
*/
public function testRenderEmptyHeaderFooter() {
$view = Views::getView('test_example_area');
$view->initHandlers();
// Set example empty text.
$view->empty['test_example']->options['string'] = '<p>' . $this->randomMachineName() . '</p>';
$xpath = '//div[contains(@class, :class)]';
// Verify that the empty header and footer sections have not been rendered.
$output = $view->preview();
$html = $this->container->get('renderer')->renderRoot($output);
$this->setRawContent($html);
$this->assertEqual(0, count($this->xpath($xpath, [':class' => 'view-header'])));
$this->assertEqual(0, count($this->xpath($xpath, [':class' => 'view-footer'])));
// Set example header text.
$view->header['test_example']->options['string'] = '<p>' . $this->randomMachineName() . '</p>';
$view->header['test_example']->options['empty'] = TRUE;
// Set example footer text.
$view->footer['test_example']->options['string'] = '<p>' . $this->randomMachineName() . '</p>';
$view->footer['test_example']->options['empty'] = TRUE;
// Verify that the header and footer sections have been rendered.
$output = $view->preview();
$html = $this->container->get('renderer')->renderRoot($output);
$this->setRawContent($html);
$this->assertEqual(1, count($this->xpath($xpath, [':class' => 'view-header'])));
$this->assertEqual(1, count($this->xpath($xpath, [':class' => 'view-footer'])));
}
/**
* Tests the access for an area.
*/