You are here

function custom_breadcrumbs_form_alter in Custom Breadcrumbs 6.2

Implements hook_form_alter().

File

./custom_breadcrumbs.module, line 204
Provide custom breadcrumbs for node-type pages and base functionality for submodules to add custom breadcrumbs for other types of pages.

Code

function custom_breadcrumbs_form_alter(&$form, $form_state, $form_id) {

  // Provide custom breadcrumbs for comment forms associated with nodes.
  if ($form_id == 'comment_form' && isset($form['nid']['#value'])) {
    $node = node_load($form['nid']['#value']);

    // Call custom_breadcrumbs_nodeapi to provide a custom_breadcrumb for this comment.
    custom_breadcrumbs_nodeapi($node, 'alter', array(), array(
      1,
    ));
  }
  elseif (isset($form['#node']->type) && variable_get('custom_breadcrumbs_show_form_table_' . $form['#node']->type, CUSTOM_BREADCRUMBS_SHOW_FORM_TABLE_DEFAULT) && user_access('administer custom breadcrumbs') && isset($form['type']) && isset($form['#node']) && $form['type']['#value'] . '_node_form' == $form_id) {

    // Provide a custom breadcrumbs fieldset for node edit forms.
    $node = $form['#node'];

    // Load all custom breadcrumbs for this node type.
    $breadcrumbs = custom_breadcrumbs_load_breadcrumbs('custom_breadcrumbs', 'custom_breadcrumb', array(
      'node_type' => $form['type']['#value'],
    ));
    foreach (module_implements('cb_node_form_table') as $module) {
      $func = $module . '_cb_node_form_table';
      $more = $func($node);
      if (!empty($more)) {
        $breadcrumbs = array_merge($breadcrumbs, $more);
      }
    }
    $output = NULL;
    if (count($breadcrumbs) > 0) {
      $output = '<p>' . t('Custom breadcrumbs have been created for this %type page. Use the <a href="@link">Custom Breadcrumbs Administration Page</a> to add additional breadcrumbs, or follow the links in the table below to edit or delete existing custom breadcrumbs.', array(
        '%type' => $form['type']['#value'],
        '@link' => url('admin/build/custom_breadcrumbs'),
      )) . '</p>';
    }

    // Show a table of custom breadcrumbs with links to the edit form.
    module_load_include('inc', 'custom_breadcrumbs', 'custom_breadcrumbs.admin');
    $output .= custom_breadcrumbs_simple_breadcrumb_table($breadcrumbs);
    $form['custom_breadcrumbs'] = array(
      '#type' => 'fieldset',
      '#title' => t('Custom Breadcrumbs'),
      '#access' => user_access('administer custom breadcrumbs'),
      '#group' => 'additional_settings',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#weight' => function_exists('content_extra_field_weight') && isset($form['type']) ? content_extra_field_weight($form['type']['#value'], 'custom_breadcrumbs') : CUSTOM_BREADCRUMBS_TYPE_FIELDS_WEIGHT,
    );
    $form['custom_breadcrumbs']['breadcrumb_table'] = array(
      '#value' => $output,
    );
  }
  if (user_access('administer custom breadcrumbs') && $form_id == 'node_type_form') {
    $form['custom_breadcrumbs'] = array(
      '#type' => 'fieldset',
      '#title' => t('Custom Breadcrumbs'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#weight' => function_exists('content_extra_field_weight') && isset($form['type']) ? content_extra_field_weight($form['type']['#value'], 'custom_breadcrumbs') : CUSTOM_BREADCRUMBS_TYPE_FIELDS_WEIGHT,
    );
    $form['custom_breadcrumbs']['custom_breadcrumbs_show_form_table'] = array(
      '#type' => 'checkbox',
      '#title' => t('Display defined custom breadcrumbs on node edit form'),
      '#description' => t('Access is limited to users with administer custom breadcrumbs permission.'),
      '#default_value' => variable_get('custom_breadcrumbs_show_form_table_' . $form['#node_type']->type, CUSTOM_BREADCRUMBS_SHOW_FORM_TABLE_DEFAULT),
    );
  }
}