You are here

callbacks.inc in Panels 7.3

Same filename and directory in other branches
  1. 6.3 includes/callbacks.inc
  2. 6.2 includes/callbacks.inc

Callbacks.inc Minor menu callbacks for Panels helpers.

File

includes/callbacks.inc
View source
<?php

/**
 * @file Callbacks.inc
 * Minor menu callbacks for Panels helpers.
 */

/**
 * A central administrative page for Panels.
 */
function panels_admin_page() {

  // @todo I think this should return a renderable array somehow?
  return theme('panels_dashboard');
}
function panels_dashboard_final_blocks(&$vars) {

  // Add in links for missing modules that we still want to mention:
  if (empty($vars['links']['page_manager'])) {
    $vars['links']['page_manager'] = array(
      'weight' => -100,
      'title' => t('Panel page'),
      'description' => '<em>' . t('You must activate the page manager module for this functionality.') . '</em>',
    );
  }
  if (empty($vars['links']['panels_mini'])) {
    $vars['links']['panels_mini'] = array(
      'title' => t('Mini panel'),
      'description' => '<em>' . t('You must activate the Mini panels module for this functionality.') . '</em>',
    );
  }
  if (empty($vars['links']['panels_node'])) {
    $vars['links']['panels_mini'] = array(
      'title' => t('Panel node'),
      'description' => '<em>' . t('You must activate the panel node module for this functionality.') . '</em>',
    );
  }
}

/**
 * Implementation of hook_panels_dashboard_blocks().
 *
 * Adds page information to the Panels dashboard.
 */
function panels_panels_dashboard_blocks(&$vars) {
  $vars['links']['panels_layout'] = array(
    'title' => l(t('Custom layout'), 'admin/structure/panels/layouts/add'),
    'description' => t('Custom layouts can add more, site-specific layouts that you can use in your panels.'),
  );

  // Load all mini panels and their displays.
  ctools_include('export');
  $items = ctools_export_crud_load_all('panels_layout');
  $count = 0;
  $rows = array();
  foreach ($items as $item) {
    $rows[] = array(
      check_plain($item->admin_title),
      array(
        'data' => l(t('Edit'), "admin/structure/panels/layouts/list/{$item->name}/edit"),
        'class' => 'links',
      ),
    );

    // Only show 10.
    if (++$count >= 10) {
      break;
    }
  }
  if ($rows) {
    $content = theme('table', array(
      'rows' => $rows,
      'attributes' => array(
        'class' => 'panels-manage',
      ),
    ));
  }
  else {
    $content = '<p>' . t('There are no custom layouts.') . '</p>';
  }
  $vars['blocks']['panels_layout'] = array(
    'title' => t('Manage custom layouts'),
    'link' => l(t('Go to list'), 'admin/structure/panels/layouts'),
    'content' => $content,
    'class' => 'dashboard-layouts',
    'section' => 'right',
  );
}
function template_preprocess_panels_dashboard(&$vars) {
  ctools_add_css('panels-dashboard', 'panels');
  ctools_include('plugins');
  $vars['image_path'] = ctools_image_path('', 'panels');
  $vars['links'] = array();
  $vars['blocks'] = array();
  foreach (module_implements('panels_dashboard_blocks') as $module) {
    $function = $module . '_panels_dashboard_blocks';
    $function($vars);
  }

  // Add in any default links for modules that are not active.
  panels_dashboard_final_blocks($vars);

  // If page manager module is enabled, add a very low eight block to
  // list the page wizards.
  if (module_exists('page_manager')) {
    $vars['blocks']['wizards'] = array(
      'weight' => -101,
      'section' => 'right',
      'title' => t('Page wizards'),
      'content' => '',
      'class' => 'dashboard-wizards',
    );
    ctools_include('page-wizard');
    $plugins = page_manager_get_page_wizards();
    uasort($plugins, 'ctools_plugin_sort');
    foreach ($plugins as $id => $plugin) {
      if (isset($plugin['type']) && $plugin['type'] == 'panels') {
        $link = array(
          'title' => l($plugin['title'], 'admin/structure/pages/wizard/' . $id),
          'description' => $plugin['description'],
        );
        $vars['blocks']['wizards']['content'] .= theme('panels_dashboard_link', array(
          'link' => $link,
        ));
      }
    }
  }
  uasort($vars['links'], 'ctools_plugin_sort');
  $vars['blocks']['links'] = array(
    'weight' => -100,
    'section' => 'left',
    'title' => t('Create new') . '...',
    'content' => '',
    'class' => 'dashboard-create',
  );

  // Turn the links into a block.
  foreach ($vars['links'] as $link) {
    $vars['blocks']['links']['content'] .= theme('panels_dashboard_link', array(
      'link' => $link,
    ));
  }
  uasort($vars['blocks'], 'ctools_plugin_sort');
  $vars['left'] = '';
  $vars['right'] = '';

  // Render all the blocks.
  foreach ($vars['blocks'] as $block) {
    $section = !empty($block['section']) ? $block['section'] : 'left';
    $vars[$section] .= theme('panels_dashboard_block', array(
      'block' => $block,
    ));
  }
}
function panels_admin_settings_page() {
  $form = array();
  if (module_exists('page_manager')) {
    foreach (page_manager_get_tasks() as $task) {
      if ($function = ctools_plugin_get_function($task, 'admin settings')) {
        $function($form);
      }
    }
  }
  ctools_include('content');
  foreach (ctools_get_content_types() as $content) {
    if ($function = ctools_plugin_get_function($content, 'admin settings')) {
      $function($form);
    }
  }
  ctools_include('plugins', 'panels');
  $pipelines = panels_get_renderer_pipelines();
  $options = array();
  foreach ($pipelines as $key => $value) {
    $options[$key] = $value->admin_title;
  }
  if (count($options) > 1) {
    $form['panels_renderer_default'] = array(
      '#type' => 'select',
      '#title' => t('Default renderer'),
      '#options' => $options,
      '#default_value' => variable_get('panels_renderer_default', 'standard'),
      '#description' => t('The default renderer for new panel pages.'),
    );
  }
  if (empty($form)) {
    return array(
      '#value' => t('There are currently no settings to change, but additional plugins or modules may provide them in the future.'),
    );
  }
  return system_settings_form($form);
}

/**
 * Settings for panel contexts created by the page manager.
 */
function panels_admin_panel_context_page() {
  ctools_include('common', 'panels');
  return drupal_get_form('panels_common_settings', 'panels_page');
}

Functions

Namesort descending Description
panels_admin_page A central administrative page for Panels.
panels_admin_panel_context_page Settings for panel contexts created by the page manager.
panels_admin_settings_page
panels_dashboard_final_blocks
panels_panels_dashboard_blocks Implementation of hook_panels_dashboard_blocks().
template_preprocess_panels_dashboard