You are here

content_profile.theme.inc in Content Profile 6

Theme and template preprocessing code

File

content_profile.theme.inc
View source
<?php

/**
 * @file
 * Theme and template preprocessing code
 */

/**
 * Themes the add link.
 */
function theme_content_profile_display_add_link($element) {
  $type = $element['#content_type'];
  $uid = $element['#admin'] ? 'uid=' . intval($element['#uid']) . '&' : '';
  $text = $element['#admin'] ? t("Create the user's @profile_node.", array(
    '@profile_node' => node_get_types('name', $type),
  )) : t("Create your @profile_node.", array(
    '@profile_node' => node_get_types('name', $type),
  ));
  return l($text, content_profile_get_add_path($type, $element['#uid']), array(
    'query' => $uid . drupal_get_destination(),
    'html' => TRUE,
  ));
}

/**
 * Theme function for the content_profile display as link
 */
function theme_content_profile_display_link($element) {
  if ($node = content_profile_load($element['#content_type'], $element['#uid'])) {
    if (node_access('view', $node)) {
      $output = l(node_get_types('name', $node->type), 'node/' . $node->nid);
      if ($element['#edit_link'] && node_access('update', $node)) {
        $output .= ' ' . l('[' . t('edit') . ']', content_profile_get_edit_path($node), array(
          'query' => drupal_get_destination(),
        ));
      }
      return $output;
    }
  }
}

/**
 * Implementation of content_profile_preprocess_HOOK()
 */
function content_profile_preprocess_content_profile_display_view(&$variables) {
  $element = $variables['element'];
  $node = content_profile_load($element['#content_type'], $element['#uid']);
  $variables['node'] =& $node;
  $variables['uid'] = $element['#uid'];
  $variables['type'] = $element['#content_type'];
  $path = drupal_get_path('module', 'content_profile') . '/content_profile.css';
  drupal_add_css($path, 'module', 'all', FALSE);
  $variables['title'] = check_plain(node_get_types('name', $node->type));
  $tabs = array();
  if ($element['#edit_link']) {
    $tabs[] = theme('content_profile_display_tab_view', $node);
    $tabs[] = theme('content_profile_display_tab_edit', $node);
  }
  if (count($tabs) > 0) {
    $variables['tabs'] = $tabs;
  }
  $variables['content'] = node_view($node, $element['#style'] == 'teaser', TRUE, TRUE);
}

/**
 * Themes the view tab
 */
function theme_content_profile_display_tab_view($node) {
  return l(t('View'), 'node/' . $node->nid);
}

/**
 * Themes the edit tab
 */
function theme_content_profile_display_tab_edit($node) {
  if (node_access('update', $node)) {
    return l(t('Edit'), content_profile_get_edit_path($node), array(
      'query' => drupal_get_destination(),
    ));
  }
}

/**
 * Imagecache formatter.
 */
function theme_content_profile_imagecache_formatter_userlink($element) {

  // Inside a view $element may contain NULL data. In that case, just return.
  if (empty($element['#item']['fid'])) {
    return '';
  }

  // Extract the preset name from the formatter name.
  $presetname = substr($element['#formatter'], 0, strrpos($element['#formatter'], '_'));
  $style = 'userlink';
  $item = $element['#item'];
  $item['data']['alt'] = isset($item['data']['alt']) ? $item['data']['alt'] : '';
  $item['data']['title'] = isset($item['data']['title']) ? $item['data']['title'] : NULL;
  $imagetag = theme('imagecache', $presetname, $item['filepath'], $item['data']['alt'], $item['data']['title']);
  $path = empty($item['uid']) ? '' : 'user/' . $item['uid'];
  $class = "imagecache imagecache-{$presetname} imagecache-{$style} imagecache-{$element['#formatter']}";
  return l($imagetag, $path, array(
    'attributes' => array(
      'class' => $class,
    ),
    'html' => TRUE,
  ));
}

/**
 * Gets the edit path for a content_profile
 */
function content_profile_get_edit_path($node) {
  $handler = variable_get('content_profile_path_handler', 'content_profile_default_path_handler');
  return $handler('edit', $node, $node->uid);
}

/**
 * Gets the add path for a content_profile of the active user
 */
function content_profile_get_add_path($type, $uid) {
  $handler = variable_get('content_profile_path_handler', 'content_profile_default_path_handler');
  return $handler('add', $type, $uid);
}

/**
 * Default path handler for content profile, which uses the default system paths
 *
 * @param $action 'add' or 'edit
 * @param $arg For 'add' the content type, for 'edit' the node to be edited
 * @param $uid the uid of the profile's owner.
 */
function content_profile_default_path_handler($action, $arg, $uid) {
  $type = $action == 'add' ? $arg : $arg->type;
  if (content_profile_get_settings($type, 'edit_tab') == 'top') {
    return 'user/' . $uid . '/profile/' . $type;
  }
  elseif (content_profile_get_settings($type, 'edit_tab') == 'sub') {
    return 'user/' . $uid . '/edit/' . $type;
  }
  elseif ($action == 'add') {
    return 'node/add/' . str_replace('_', '-', $arg);
  }
  else {
    return 'node/' . $arg->nid . '/edit';
  }
}

Functions

Namesort descending Description
content_profile_default_path_handler Default path handler for content profile, which uses the default system paths
content_profile_get_add_path Gets the add path for a content_profile of the active user
content_profile_get_edit_path Gets the edit path for a content_profile
content_profile_preprocess_content_profile_display_view Implementation of content_profile_preprocess_HOOK()
theme_content_profile_display_add_link Themes the add link.
theme_content_profile_display_link Theme function for the content_profile display as link
theme_content_profile_display_tab_edit Themes the edit tab
theme_content_profile_display_tab_view Themes the view tab
theme_content_profile_imagecache_formatter_userlink Imagecache formatter.