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),
);
}
}