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'; } }