diff options
author | Dries Buytaert <dries@buytaert.net> | 2007-08-02 10:41:26 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2007-08-02 10:41:26 +0000 |
commit | 79d8390f9041a4ac992924a5d0b99315f2366dc8 (patch) | |
tree | 596fd6c8feab31e06e981c4009b6481a440d9992 | |
parent | 99276849da740da568b54f165aa5256639a133b0 (diff) | |
download | brdo-79d8390f9041a4ac992924a5d0b99315f2366dc8.tar.gz brdo-79d8390f9041a4ac992924a5d0b99315f2366dc8.tar.bz2 |
- Patch #161510 by dvessel: tplified user.module.
-rw-r--r-- | modules/user/user-picture.tpl.php | 19 | ||||
-rw-r--r-- | modules/user/user-profile-category.tpl.php | 33 | ||||
-rw-r--r-- | modules/user/user-profile-item.tpl.php | 26 | ||||
-rw-r--r-- | modules/user/user-profile.tpl.php | 45 | ||||
-rw-r--r-- | modules/user/user.module | 90 |
5 files changed, 200 insertions, 13 deletions
diff --git a/modules/user/user-picture.tpl.php b/modules/user/user-picture.tpl.php new file mode 100644 index 000000000..10fe596ba --- /dev/null +++ b/modules/user/user-picture.tpl.php @@ -0,0 +1,19 @@ +<?php +// $Id +/** + * @file user-picture.tpl.php + * Default theme implementation to present an picture configured for the + * user's account. + * + * Available variables: + * - $picture: Image set by the user or the site's default. Will be linked + * depending on the viewer's permission to view the users profile page. + * - $account: Array of account information. Potentially unsafe. Be sure to + * check_plain() before use. + * + * @see template_preprocess_user_picture() + */ +?> +<div class="picture"> + <?php print $picture; ?> +</div> diff --git a/modules/user/user-profile-category.tpl.php b/modules/user/user-profile-category.tpl.php new file mode 100644 index 000000000..920d93cd3 --- /dev/null +++ b/modules/user/user-profile-category.tpl.php @@ -0,0 +1,33 @@ +<?php +// $Id +/** + * @file user-profile-category.tpl.php + * Default theme implementation to present profile categories (groups of + * profile items). + * + * Categories are defined when configuring user profile fields for the site. + * It can also be defined by modules. All profile items for a category will be + * output through the $profile_items variable. + * + * @see user-profile-item.tpl.php + * where each profile item is rendered. It is implemented as a definition + * list by default. + * @see user-profile.tpl.php + * where all items and categories are collected and printed out. + * + * Available variables: + * - $title: Category title for the group of items. + * - $profile_items: All the items for the group rendered through + * user-profile-item.tpl.php. + * - $attributes: HTML attributes. Usually renders classes. + * + * @see template_preprocess_user_profile_category() + */ +?> +<?php if ($title) : ?> + <h3><?php print $title; ?></h3> +<?php endif; ?> + +<dl<?php print $attributes; ?>> + <?php print $profile_items; ?> +</dl> diff --git a/modules/user/user-profile-item.tpl.php b/modules/user/user-profile-item.tpl.php new file mode 100644 index 000000000..bcab25de2 --- /dev/null +++ b/modules/user/user-profile-item.tpl.php @@ -0,0 +1,26 @@ +<?php +// $Id +/** + * @file user-profile-item.tpl.php + * Default theme implementation to present profile items (values from user + * account profile fields or modules). + * + * This template is used to loop through and render each field configured + * for the user's account. It can also be the data from modules. The output is + * grouped by categories. + * + * @see user-profile-category.tpl.php + * for the parent markup. Implemented as a definition list by default. + * @see user-profile.tpl.php + * where all items and categories are collected and printed out. + * + * Available variables: + * - $title: Field title for the profile item. + * - $value: User defined value for the profile item or data from a module. + * - $attributes: HTML attributes. Usually renders classes. + * + * @see template_preprocess_user_profile_item() + */ +?> +<dt<?php print $attributes; ?>><?php print $title; ?></dt> +<dd<?php print $attributes; ?>><?php print $value; ?></dd> diff --git a/modules/user/user-profile.tpl.php b/modules/user/user-profile.tpl.php new file mode 100644 index 000000000..92bd3f07e --- /dev/null +++ b/modules/user/user-profile.tpl.php @@ -0,0 +1,45 @@ +<?php +// $Id +/** + * @file user-profile.tpl.php + * Default theme implementation to present all user profile data. + * + * This template is used when viewing a registered member's profile page, + * e.g., example.com/user/123. 123 being the users ID. + * + * By default, all user profile data is printed out with the $user_profile + * variable. If there is a need to break it up you can use $profile instead. + * It is keyed to the name of each category or other data attached to the + * account. If it is a category it will contain all the profile items. By + * default $profile['summary'] is provided which contains data on the user's + * history. Other data can be included by modules. $profile['picture'] is + * available by default showing the account picture. + * + * Also keep in mind that profile items and their categories can be defined by + * site administrators. They are also available within $profile. For example, + * if a site is configured with a category of "contact" with + * fields for of addresses, phone numbers and other related info, then doing a + * straight print of $profile['contact'] will output everything in the + * category. This is useful for altering source order and adding custom + * markup for the group. + * + * To check for all available data within $profile, use the code below. + * + * <?php print '<pre>'. check_plain(print_r($profile, 1)) .'</pre>'; ?> + * + * @see user-profile-category.tpl.php + * where the html is handled for the group. + * @see user-profile-field.tpl.php + * where the html is handled for each item in the group. + * + * Available variables: + * - $user_profile: All user profile data. Ready for print. + * - $profile: Keyed array of profile categories and their items or other data + * provided by modules. + * + * @see template_preprocess_user_profile() + */ +?> +<div class="profile"> + <?php print $user_profile; ?> +</div> diff --git a/modules/user/user.module b/modules/user/user.module index 1ac25e4f0..aa9a5b4f3 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -31,18 +31,19 @@ function user_theme() { return array( 'user_picture' => array( 'arguments' => array('account' => NULL), + 'file' => 'user-picture', ), 'user_profile' => array( 'arguments' => array('account' => NULL), - 'file' => 'user_profile', + 'file' => 'user-profile', ), 'user_profile_category' => array( 'arguments' => array('element' => NULL), - 'file' => 'user_profile_category', + 'file' => 'user-profile-category', ), 'user_profile_item' => array( 'arguments' => array('element' => NULL), - 'file' => 'user_profile_item', + 'file' => 'user-profile-item', ), 'user_list' => array( 'arguments' => array('users' => NULL, 'title' => NULL), @@ -729,8 +730,18 @@ function user_block($op = 'list', $delta = 0, $edit = array()) { } } -function theme_user_picture($account) { +/** + * Process variables for user-picture.tpl.php. + * + * The $variables array contains the following arguments: + * - $account + * + * @see user-picture.tpl.php + */ +function template_preprocess_user_picture(&$variables) { + $variables['picture'] = ''; if (variable_get('user_pictures', 0)) { + $account = $variables['account']; if (!empty($account->picture) && file_exists($account->picture)) { $picture = file_create_url($account->picture); } @@ -740,19 +751,22 @@ function theme_user_picture($account) { if (isset($picture)) { $alt = t("@user's picture", array('@user' => $account->name ? $account->name : variable_get('anonymous', t('Anonymous')))); - $picture = theme('image', $picture, $alt, $alt, '', FALSE); + $variables['picture'] = theme('image', $picture, $alt, $alt, '', FALSE); if (!empty($account->uid) && user_access('access user profiles')) { - $picture = l($picture, "user/$account->uid", array('attributes' => array('title' => t('View user profile.')), 'html' => TRUE)); + $attributes = array('attributes' => array('title' => t('View user profile.')), 'html' => TRUE); + $variables['picture'] = l($variables['picture'], "user/$account->uid", $attributes); } - - return "<div class=\"picture\">$picture</div>"; } } } /** * Make a list of users. - * @param $items an array with user objects. Should contain at least the name and uid + * + * @param $users + * An array with user objects. Should contain at least the name and uid. + * @param $title + * (optional) Title to pass on to theme_item_list(). * * @ingroup themeable */ @@ -765,6 +779,58 @@ function theme_user_list($users, $title = NULL) { return theme('item_list', $items, $title); } +/** + * Process variables for user-profile.tpl.php. + * + * The $variables array contains the following arguments: + * - $account + * + * @see user-picture.tpl.php + */ +function template_preprocess_user_profile(&$variables) { + $variables['profile'] = array(); + // Provide keyed variables so themers can print each section independantly. + foreach (element_children($variables['account']->content) as $key) { + $variables['profile'][$key] = drupal_render($variables['account']->content[$key]); + } + // Collect all profiles to make it easier to print all items at once. + $variables['user_profile'] = implode($variables['profile']); +} + +/** + * Process variables for user-profile-item.tpl.php. + * + * The $variables array contains the following arguments: + * - $element + * + * @see user-profile-item.tpl.php + */ +function template_preprocess_user_profile_item(&$variables) { + $variables['title'] = $variables['element']['#title']; + $variables['value'] = $variables['element']['#value']; + $variables['attributes'] = ''; + if (isset($variables['element']['#attributes'])) { + $variables['attributes'] = drupal_attributes($variables['element']['#attributes']); + } +} + +/** + * Process variables for user-profile-category.tpl.php. + * + * The $variables array contains the following arguments: + * - $element + * + * @see user-profile-category.tpl.php + */ +function template_preprocess_user_profile_category(&$variables) { + $variables['title'] = $variables['element']['#title']; + $variables['profile_items'] = $variables['element']['#children']; + $variables['attributes'] = ''; + if (isset($variables['element']['#attributes'])) { + $variables['attributes'] = drupal_attributes($variables['element']['#attributes']); + } +} + function user_is_anonymous() { return !$GLOBALS['user']->uid; } @@ -1718,11 +1784,9 @@ function user_edit_submit($form, &$form_state) { } function user_view($account) { - global $user; - - // Retrieve all profile fields and store data in content element. - $account->content = user_build_content($account); drupal_set_title(check_plain($account->name)); + // Retrieve all profile fields and attach to $account->content. + user_build_content($account); /** * To theme user profiles, copy modules/user/user_profile.tpl.php * to your theme directory, and edit it as instructed in that file's comments. |