content_profile.theme.inc in Content Profile 6
Theme and template preprocessing code
File
content_profile.theme.incView 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
Name | 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. |