You are here

function block_edit_preprocess_node in Block edit 6

Preprocess function to add the node edit links to nodes by concatenating with the content variable.

File

./block_edit.module, line 136
Adds edit links to blocks and nodes to make administration more intuitive.

Code

function block_edit_preprocess_node(&$vars) {
  if (!block_edit_visible('node', $vars)) {
    return;
  }
  $node = $vars['node'];
  $vars['node_edit_links_array'] = array();
  global $user;
  $options = variable_get('block_edit_node_link_options', block_edit_node_link_options());
  if (user_access('access content') && $options['view']) {
    $vars['node_edit_links_array']['node-view'] = array(
      'title' => t('[View]'),
      'href' => "node/{$node->nid}",
    );
  }
  if ((user_access("edit any {$node->type} content") || user_access("edit own {$node->type} content") && $user->uid == $node->uid || $node->type == 'webform' && user_access("edit {$node->type}s") || user_access('administer nodes')) && $options['edit']) {
    $vars['node_edit_links_array']['node-edit'] = array(
      'title' => t('[Edit]'),
      'href' => "node/{$node->nid}/edit",
      'query' => drupal_get_destination(),
    );
  }
  if ((user_access("delete any {$node->type} content") || user_access("delete own {$node->type} content") && $user->uid == $node->uid || user_access('administer nodes')) && $options['delete']) {
    $vars['node_edit_links_array']['node-delete'] = array(
      'title' => t('[Delete]'),
      'href' => "node/{$node->nid}/delete",
      'query' => drupal_get_destination(),
    );
  }
  if (module_exists('clone') && user_access('clone node') && !empty($options['clone'])) {
    $vars['node_edit_links_array']['clone'] = array(
      'title' => t('[Clone]'),
      'href' => "node/{$node->nid}/clone",
      'query' => drupal_get_destination(),
    );
  }
  if (module_exists('devel') && user_access('access devel information') && !empty($options['devel'])) {
    $vars['node_edit_links_array']['devel-load'] = array(
      'title' => t('[Dev load]'),
      'href' => "node/{$node->nid}/devel/load",
    );
    $vars['node_edit_links_array']['devel-render'] = array(
      'title' => t('[Dev render]'),
      'href' => "node/{$node->nid}/devel/render",
    );
  }
  if (module_exists('content') && user_access('administer nodes') && user_access('administer content types') && !empty($options['cck'])) {
    $node_type = str_replace('_', '-', $node->type);
    $vars['node_edit_links_array']['node-type'] = array(
      'title' => t('[Edit type]'),
      'href' => "admin/content/node-type/{$node_type}",
      'query' => drupal_get_destination(),
    );
    $vars['node_edit_links_array']['node-type-fields'] = array(
      'title' => t('[Manage fields]'),
      'href' => "admin/content/node-type/{$node_type}/fields",
      'query' => drupal_get_destination(),
    );
    $vars['node_edit_links_array']['node-type-display'] = array(
      'title' => t('[Display fields]'),
      'href' => "admin/content/node-type/{$node_type}/display",
      'query' => drupal_get_destination(),
    );
  }
  drupal_alter('node_edit_links', $vars['node_edit_links_array'], $vars);
  $edit_links = theme('links', $vars['node_edit_links_array']);
  $id = 'node-edit-link-' . $node->nid;
  $original_content = $vars['content'];
  $vars['node_edit_links'] = '<div class="node-edit-link" id="' . $id . '">' . $edit_links . '</div>';
  $vars['content'] = $vars['node_edit_links'] . $original_content;
}