You are here

function panels_mini_panels_mini_content_type_render in Panels 7.3

Same name and namespace in other branches
  1. 6.3 panels_mini/plugins/content_types/panels_mini.inc \panels_mini_panels_mini_content_type_render()

Render a mini panel called from a panels display.

File

panels_mini/plugins/content_types/panels_mini.inc, line 85
Contains the content type plugin for a mini panel. While this does not need to be broken out into a .inc file, it's convenient that we do so that we don't load code unnecessarily. Plus it demonstrates plugins in modules other than Panels itself.

Code

function panels_mini_panels_mini_content_type_render($subtype, $conf, $panel_args, &$contexts) {
  static $viewing = array();
  $mini = panels_mini_load($subtype);
  if (!$mini) {
    return FALSE;
  }
  if (!empty($viewing[$mini->name])) {
    return FALSE;
  }

  // Load up any contexts we might be using.
  $context = ctools_context_match_required_contexts($mini->requiredcontexts, $contexts);
  $mini->context = $mini->display->context = ctools_context_load_contexts($mini, FALSE, $context);
  if (empty($mini) || !empty($mini->disabled)) {
    return;
  }
  $viewing[$mini->name] = TRUE;
  $mini->display->args = $panel_args;
  $mini->display->css_id = panels_mini_get_id($subtype);
  $mini->display->owner = $mini;

  // Unique ID of this mini.
  $mini->display->owner->id = $mini->name;
  $block = new stdClass();
  $block->module = 'panels_mini';
  $block->delta = $subtype;
  $block->content = panels_render_display($mini->display);
  $block->title = $mini->display
    ->get_title();
  if (user_access('administer mini panels')) {
    $block->admin_links = array(
      array(
        'title' => t('Configure mini panel'),
        'href' => "admin/structure/mini-panels/list/{$subtype}/edit/content",
        'query' => drupal_get_destination(),
      ),
    );
  }
  unset($viewing[$mini->name]);
  return $block;
}