diff --git a/panels_mini/panels_mini.module b/panels_mini/panels_mini.module index 534916d..1a038f4 100644 --- a/panels_mini/panels_mini.module +++ b/panels_mini/panels_mini.module @@ -115,6 +115,7 @@ function panels_mini_block_view($delta = 0) { $panel_mini->context = $panel_mini->display->context = ctools_context_load_contexts($panel_mini, FALSE, $contexts); $panel_mini->display->css_id = panels_mini_get_id($panel_mini->name); + $panel_mini->display->owner = $panel_mini; $block = array(); @@ -470,6 +471,15 @@ function panels_mini_panels_cache_break_lock($key, $cache) { } /** + * Implements hook_panels_pre_render(). + */ +function panels_mini_panels_pre_render($display, $renderer) { + if (isset($display->owner->table) && $display->owner->table == 'panels_mini' && $renderer instanceof panels_renderer_standard) { + $renderer->show_empty_layout = FALSE; + } +} + +/** * Implementation of hook_panels_dashboard_blocks(). * * Adds mini panels information to the Panels dashboard. diff --git a/plugins/display_renderers/panels_renderer_standard.class.php b/plugins/display_renderers/panels_renderer_standard.class.php index db71b6b..2ad7ef3 100644 --- a/plugins/display_renderers/panels_renderer_standard.class.php +++ b/plugins/display_renderers/panels_renderer_standard.class.php @@ -152,6 +152,15 @@ class panels_renderer_standard { var $suffix = ''; /** + * Boolean flag indicating whether to render the layout even if all rendered + * regions are blank. If FALSE, the layout renders as an empty string (without + * prefix or suffix) if not in administrative mode. + * + * @var bool + */ + var $show_empty_layout = TRUE; + + /** * Receive and store the display object to be rendered. * * This is a psuedo-constructor that should typically be called immediately @@ -396,6 +405,22 @@ class panels_renderer_standard { $theme = $this->plugins['layout']['theme']; } + // Determine whether to render layout. + $show = TRUE; + if (!$this->show_empty_layout && !$this->admin) { + $show = FALSE; + // Render layout if any region is not empty. + foreach ($this->rendered['regions'] as $region) { + if (is_string($region) && $region !== '') { + $show = TRUE; + break; + } + } + } + if (!$show) { + return; + } + $this->rendered['layout'] = theme($theme, array('css_id' => check_plain($this->display->css_id), 'content' => $this->rendered['regions'], 'settings' => $this->display->layout_settings, 'display' => $this->display, 'layout' => $this->plugins['layout'], 'renderer' => $this)); return $this->prefix . $this->rendered['layout'] . $this->suffix; }