Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function dashboard_page_build

Implements hook_page_build().

Display dashboard blocks in the main content region.

File

modules/dashboard/dashboard.module, line 139

Code

function dashboard_page_build (&$page) {
 global $theme_key;
 if (dashboard_is_visible ()) {
 $block_info = array();
 // Create a wrapper for the dashboard itself, then insert each dashboard
 // region into it.
 $page['content']['dashboard'] = array(
 '#theme_wrappers' => array(
 'dashboard',
 ),
 );
 foreach (dashboard_regions () as $region) {
 // Do not show dashboard blocks that are disabled.
 if ($region == 'dashboard_inactive') {
 continue;
 }
 // Insert regions even when they are empty, so that they will be
 // displayed when the dashboard is being configured.
 $page['content']['dashboard'][$region] = !empty($page[$region]) ? $page[$region] : array();
 $page['content']['dashboard'][$region]['#dashboard_region'] = $region;
 // Allow each dashboard region to be themed differently, or fall back on
 // the generic theme wrapper function for dashboard regions.
 $page['content']['dashboard'][$region]['#theme_wrappers'][] = array(
 $region,
 'dashboard_region',
 );
 unset($page[$region]);
 $blocks_found = array();
 foreach ($page['content']['dashboard'][$region] as $item) {
 if (isset($item['#theme_wrappers']) && is_array ($item['#theme_wrappers']) && in_array ('block', $item['#theme_wrappers'])) {
 // If this item is a block, ensure it has a subject.
 if (empty($item['#block']->subject)) {
 // Locally cache info data for the object for all blocks, in case
 // we find a block similarly missing title from the same module.
 if (!isset($block_info[$item['#block']->module])) {
 $block_info[$item['#block']->module] = module_invoke ($item['#block']->module, 'block_info');
 }
 $item['#block']->subject = $block_info[$item['#block']->module][$item['#block']->delta]['info'];
 }
 $blocks_found[$item['#block']->module . '_' . $item['#block']->delta] = TRUE;
 }
 }
 // Find blocks which were not yet displayed on the page (were empty), and
 // add placeholder items in their place for rendering.
 $block_list = db_select ('block')->condition ('theme', $theme_key)
 ->condition ('status', 1)
 ->condition ('region', $region)
 ->fields ('block')
 ->execute ();
 foreach ($block_list as $block) {
 if (!isset($blocks_found[$block->module . '_' . $block->delta])) {
 $block->enabled = $block->page_match = TRUE;
 $block->content  = array(
 '#markup' => '<div class="dashboard-block-empty">(empty)</div>',
 );
 if (!isset($block_info[$block->module])) {
 $block_info[$block->module] = module_invoke ($block->module, 'block_info');
 }
 $block->subject = t ('@title', array(
 '@title' => $block_info[$block->module][$block->delta]['info'],
 ));
 $block_render = array(
 $block->module . '_' . $block->delta => $block,
 );
 $build = _block_get_renderable_array ($block_render);
 $page['content']['dashboard'][$block->region][] = $build;
 }
 }
 }
 }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.