You are here

context_reaction_block.theme.inc in Context 7.3

File

theme/context_reaction_block.theme.inc
View source
<?php

/**
 * Block form.
 */
function theme_context_block_form($vars) {
  $row = array(
    array(
      'data' => drupal_render($vars['form']['blocks']),
      'class' => array(
        'blocks',
      ),
    ),
    array(
      'data' => drupal_render($vars['form']['selector']) . drupal_render($vars['form']['block']['help']),
      'class' => array(
        'selector',
      ),
    ),
  );
  $output = drupal_render_children($vars['form']);
  $table = array(
    'rows' => array(
      $row,
    ),
    'attributes' => array(
      'id' => 'context-blockform',
    ),
  );
  $output .= theme('table', $table);
  return $output;
}

/**
 * Generates the AJAX enabled block administration portion of the context_ui admin form.
 */
function theme_context_block_regions_form($vars) {
  $form = $vars['form'];

  // Add draggable weights
  drupal_add_js('misc/tableheader.js');
  drupal_add_js(drupal_get_path('module', 'context') . '/plugins/context_reaction_block.js');
  drupal_add_css(drupal_get_path('module', 'context') . '/plugins/context_reaction_block.css');
  $output = '';
  foreach (element_children($form) as $region) {
    $attr = array(
      'id' => "context-blockform-region-{$region}",
      'class' => array(
        "context-blockform-region",
      ),
    );
    drupal_add_tabledrag($attr['id'], 'order', 'sibling', 'tabledrag-hide', NULL, NULL, FALSE);
    $rows = array();
    foreach (element_children($form[$region]) as $id) {
      $form[$region][$id]['weight']['#attributes'] = array(
        'class' => array(
          'tabledrag-hide',
        ),
      );
      $label = $form[$region][$id]['#value'];
      $remove = l(t('X'), $_GET['q'], array(
        'fragment' => 'remove',
        'attributes' => array(
          'class' => array(
            'remove',
          ),
        ),
      ));
      $rows[] = array(
        'data' => array(
          $label,
          drupal_render($form[$region][$id]['weight']),
          $remove,
        ),
        'class' => array(
          'draggable',
        ),
        'id' => $id,
      );
    }
    $output .= "<div class='label context-blockform-regionlabel-{$region}'>";
    $output .= l(t('+') . ' ' . t('Add'), $_GET['q'], array(
      'fragment' => $region,
      'attributes' => array(
        'class' => array(
          'add-block',
        ),
      ),
    ));
    $output .= $form[$region]['#title'];
    $output .= '</div>';
    $output .= theme('table', array(
      'rows' => $rows,
      'attributes' => $attr,
    ));
  }
  return $output;
}

/**
 * Use placeholder content for script tags that need to be replaced.
 */
function theme_context_block_script_placeholder($vars) {
  $text = $vars['text'];
  $message = t('Please reload the page to view this block.');
  return "<div class='script-placeholder'><strong>{$text}</strong><div class='description'>{$message}</div></div>";
}

/**
 * Preprocessor for theme('context_block_browser').
 */
function template_preprocess_context_block_browser(&$vars) {
  $categories = array(
    '#type' => 'select',
    '#options' => array(
      0 => '<' . t('All Categories') . '>',
    ),
    '#attributes' => array(
      'class' => array(
        'context-block-browser-categories',
      ),
    ),
    '#value' => 0,
    '#size' => 1,
    '#id' => '',
    '#name' => '',
    '#parents' => array(
      '',
    ),
    '#multiple' => FALSE,
    '#required' => FALSE,
  );
  $blocks = array();

  // Group blocks by module.
  foreach ($vars['blocks'] as $block) {
    $group = isset($block->context_group) ? $block->context_group : $block->module;

    // Normalize the $group, borrowed from drupal_html_id
    $group = strtr(drupal_strtolower($group), array(
      ' ' => '-',
      '_' => '-',
      '[' => '-',
      ']' => '',
    ));
    if (!isset($categories[$group])) {
      $info = system_get_info('module', $block->module);
      $title = isset($block->context_group) ? $block->context_group : (!empty($info['name']) ? $info['name'] : $block->module);
      $categories['#options'][$group] = $title;
    }
    $blocks[$group][$block->bid] = $block;

    // Don't call theme('context_block_browser_item') to allow others to alter.
  }

  //add help text to tell people how to use the block browser
  $help_text = array(
    '#prefix' => '<div class="context_ui-help-text">',
    '#markup' => t('To add a block to the current region, simply click on the block. You may use the category filter to filter by block type or the search filter to find the block that you wish to add.'),
    '#suffix' => '</div>',
  );
  $filter_label = array(
    '#prefix' => '<div class="filter-label">',
    '#markup' => t('Search filter'),
    '#suffix' => '</div>',
  );
  $vars['categories'] = $categories;

  // Don't call theme('select') here to allow further preprocesses to alter the element.
  $vars['blocks'] = $blocks;
  $vars['help_text'] = $help_text;
  $vars['filter_label'] = $filter_label;
}

/**
 * Preprocessor for theme('context_block_browser_item').
 */
function template_preprocess_context_block_browser_item(&$vars) {
  $vars['bid'] = $vars['block']->bid;
  $vars['info'] = check_plain($vars['block']->info);
}

/**
 * Theme wrapper for editable blocks.
 *
 * @ingroup themeable
 */
function theme_context_block_edit_wrap($vars) {
  $block = $vars['element']['#block'];
  return $vars['element']['#children'] . "<a id='context-block-{$block->module}-{$block->delta}' class='context-block editable edit-{$block->context}'></a>";
}

Functions

Namesort descending Description
template_preprocess_context_block_browser Preprocessor for theme('context_block_browser').
template_preprocess_context_block_browser_item Preprocessor for theme('context_block_browser_item').
theme_context_block_edit_wrap Theme wrapper for editable blocks.
theme_context_block_form Block form.
theme_context_block_regions_form Generates the AJAX enabled block administration portion of the context_ui admin form.
theme_context_block_script_placeholder Use placeholder content for script tags that need to be replaced.