profile_fields.inc
File
-
plugins/
content_types/ user_context/ profile_fields.inc
View source
<?php
/**
* @file
*/
if (module_exists('profile') && !(defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update') && !is_null(profile_user_categories())) {
/**
* Plugins are described by creating a $plugin array which will be used
* by the system that includes this file.
*/
$plugin = array(
'single' => TRUE,
'title' => t('Profile category'),
'icon' => 'icon_user.png',
'description' => t('Contents of a single profile category.'),
'required context' => new ctools_context_required(t('User'), 'user'),
'category' => t('User'),
'defaults' => array(
'category' => '',
'empty' => '',
),
'hook theme' => 'ctools_profile_fields_content_type_theme',
);
}
/**
* 'Render' callback for the 'profile fields' content type.
*/
function ctools_profile_fields_content_type_render($subtype, $conf, $panel_args, $context) {
$account = isset($context->data) ? clone $context->data : NULL;
$block = new stdClass();
$block->module = 'profile fields';
if ($account) {
// Get the category from the options.
$category = str_replace("_", " ", $conf['category']);
// Set the subject to the name of the category.
$block->subject = $category;
// Put all the fields in the category into an array.
profile_view_profile($account);
if (is_array($account->content[$category])) {
foreach ($account->content[$category] as $field) {
if (is_array($field['#attributes'])) {
// @todo 'class' is *always* an array now. 04/10/2009 sun
$vars[$field['#attributes']['class']]['title'] = $field['#title'];
$vars[$field['#attributes']['class']]['value'] = $field['#value'];
}
}
}
if (count($vars) == 0) {
// Output the given empty text.
$output = $conf['empty'];
}
else {
// Call the theme function with the field vars.
$output = theme('profile_fields_pane', $category, $vars);
}
$block->content = $output;
$block->delta = $account->uid;
}
else {
$block->subject = $conf['category'];
$block->content = t('Profile content goes here.');
$block->delta = 'unknown';
}
return $block;
}
/**
* Helper function : build the list of categories for the 'edit' form.
*/
function _ctools_profile_fields_options() {
$cat_list = array();
$categories = profile_categories();
foreach ($categories as $key => $value) {
$cat_list[str_replace(" ", "_", $value['name'])] = $value['title'];
}
return $cat_list;
}
/**
* 'Edit' callback for the 'profile fields' content type.
*/
function ctools_profile_fields_content_type_edit_form($form, &$form_state) {
$conf = $form_state['conf'];
$form['category'] = array(
'#type' => 'radios',
'#title' => t('Which category'),
'#options' => _ctools_profile_fields_options(),
'#default_value' => $conf['category'],
'#prefix' => '<div class="clearfix no-float">',
'#suffix' => '</div>',
);
$form['empty'] = array(
'#type' => 'textarea',
'#title' => 'Empty text',
'#description' => t('Text to display if category has no data. Note that title will not display unless overridden.'),
'#rows' => 5,
'#default_value' => $conf['empty'],
'#prefix' => '<div class="clearfix no-float">',
'#suffix' => '</div>',
);
return $form;
}
function ctools_profile_fields_content_type_edit_form_submit($form, &$form_state) {
// Copy everything from our defaults.
foreach (array_keys($form_state['plugin']['defaults']) as $key) {
$form_state['conf'][$key] = $form_state['values'][$key];
}
}
/**
* 'Title' callback for the 'profile fields' content type.
*/
function ctools_profile_fields_content_type_admin_title($subtype, $conf, $context) {
return t('"@s" profile fields', array(
'@s' => $conf['category'],
));
}
function ctools_profile_fields_content_type_theme(&$theme, $plugin) {
$theme['profile_fields_pane'] = array(
'variables' => array(
'category' => NULL,
'vars' => NULL,
),
'path' => $plugin['path'],
'template' => 'profile_fields_pane',
);
}
Functions
Title | Deprecated | Summary |
---|---|---|
ctools_profile_fields_content_type_admin_title | 'Title' callback for the 'profile fields' content type. | |
ctools_profile_fields_content_type_edit_form | 'Edit' callback for the 'profile fields' content type. | |
ctools_profile_fields_content_type_edit_form_submit | ||
ctools_profile_fields_content_type_render | 'Render' callback for the 'profile fields' content type. | |
ctools_profile_fields_content_type_theme | ||
_ctools_profile_fields_options | Helper function : build the list of categories for the 'edit' form. |