[feature/avatars] Made ACP avatar gallery in Manage Users prettier

Added row/column information so avatars can be displayed nicely in
the ACP

PHPBB3-10018
This commit is contained in:
Cullen Walsh 2011-06-18 23:49:04 -07:00
parent a06380c69a
commit 8416bf3dc9
4 changed files with 68 additions and 27 deletions

View file

@ -1,14 +1,25 @@
<label for="category">{L_AVATAR_CATEGORY}: <select name="av_local_cat" id="category"> <dl>
<option value="">{L_NO_AVATAR_CATEGORY}</option> <dt><label for="category">{L_AVATAR_CATEGORY}:</label></dt>
<!-- BEGIN av_local_cats --> <dd><select name="av_local_cat" id="category">
<option value="{av_local_cats.NAME}"<!-- IF av_local_cats.SELECTED --> selected="selected"<!-- ENDIF -->>{av_local_cats.NAME}</option> <option value="">{L_NO_AVATAR_CATEGORY}</option>
<!-- END av_local_cats --> <!-- BEGIN av_local_cats -->
</select></label> <option value="{av_local_cats.NAME}"<!-- IF av_local_cats.SELECTED --> selected="selected"<!-- ENDIF -->>{av_local_cats.NAME}</option>
<input type="submit" value="{L_GO}" name="av_local_go" class="button2" /> <!-- END av_local_cats -->
</select>&nbsp;<input type="submit" value="{L_GO}" name="av_local_go" class="button2" /></dd>
<div id="gallery"> </dl>
<!-- BEGIN av_local_imgs --> <dl>
<label for="av-{av_local_imgs.S_ROW_COUNT}"><img src="{av_local_imgs.AVATAR_IMAGE}" alt="" /><br /> <table cellspacing="1">
<input type="radio" name="av_local_file" id="av-{av_local_imgs.S_ROW_COUNT}" value="{av_local_imgs.AVATAR_FILE}" /></label> <!-- BEGIN av_local_row -->
<!-- END av_local_imgs --> <tr>
</div> <!-- BEGIN av_local_col -->
<td class="row1" style="text-align: center;"><img src="{av_local_row.av_local_col.AVATAR_IMAGE}" alt="{av_local_row.av_local_col.AVATAR_NAME}" title="{av_local_row.av_local_col.AVATAR_NAME}"/></td>
<!-- END av_local_col -->
</tr>
<tr>
<!-- BEGIN av_local_col -->
<td class="row2" style="text-align: center;"><input type="radio" name="av_local_file" id="av-{av_local_row.av_local_col.S_ROW_COUNT}" value="{av_local_row.av_local_col.AVATAR_FILE}" /></td>
<!-- END av_local_col -->
</tr>
<!-- END av_local_row -->
</table>
</dl>

View file

@ -1692,6 +1692,9 @@ class acp_users
$avatar_drivers = $avatar_manager->get_valid_drivers(); $avatar_drivers = $avatar_manager->get_valid_drivers();
sort($avatar_drivers); sort($avatar_drivers);
// This is normalised data, without the user_ prefix
$avatar_data = phpbb_avatar_driver::clean_row($user_row, phpbb_avatar_driver::FROM_USER);
if ($submit) if ($submit)
{ {
if (check_form_key($form_name)) if (check_form_key($form_name))
@ -1700,12 +1703,17 @@ class acp_users
if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"]) if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"])
{ {
$avatar = $avatar_manager->get_driver($driver); $avatar = $avatar_manager->get_driver($driver);
$result = $avatar->process_form($template, $user_row, $error); $result = $avatar->process_form($template, $avatar_data, $error);
if ($result && empty($error)) if ($result && empty($error))
{ {
// Success! Lets save the result in the database // Success! Lets save the result in the database
$result['user_avatar_type'] = $driver; $result = array(
'user_avatar_type' => $driver,
'user_avatar' => $result['avatar'],
'user_avatar_width' => $result['avatar_width'],
'user_avatar_height' => $result['avatar_height'],
);
$sql = 'UPDATE ' . USERS_TABLE . ' $sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $result) . ' SET ' . $db->sql_build_array('UPDATE', $result) . '
WHERE user_id = ' . $user_id; WHERE user_id = ' . $user_id;
@ -1751,7 +1759,7 @@ class acp_users
$avatar = $avatar_manager->get_driver($driver); $avatar = $avatar_manager->get_driver($driver);
if ($avatar->prepare_form($template, $user_row, $error)) if ($avatar->prepare_form($template, $avatar_data, $error))
{ {
$driver_u = strtoupper($driver); $driver_u = strtoupper($driver);
$template->assign_block_vars('avatar_drivers', array( $template->assign_block_vars('avatar_drivers', array(

View file

@ -67,14 +67,34 @@ class phpbb_avatar_driver_local extends phpbb_avatar_driver
if (!empty($avatar_list[$category])) if (!empty($avatar_list[$category]))
{ {
foreach ($avatar_list[$category] as $img => $data) $table_cols = isset($row['av_gallery_cols']) ? $row['av_gallery_cols'] : 4;
$row_count = $col_count = $av_pos = 0;
$av_count = sizeof($avatar_list[$category]);
reset($avatar_list[$category]);
while ($av_pos < $av_count)
{ {
$template->assign_block_vars('av_local_imgs', array( $img = current($avatar_list[$category]);
'AVATAR_IMAGE' => $this->phpbb_root_path . $this->config['avatar_gallery_path'] . '/' . $data['file'], next($avatar_list[$category]);
'AVATAR_NAME' => $data['name'],
'AVATAR_FILE' => $data['filename'], if ($col_count == 0)
{
++$row_count;
$template->assign_block_vars('av_local_row', array(
)); ));
} }
$template->assign_block_vars('av_local_row.av_local_col', array(
'AVATAR_IMAGE' => $this->phpbb_root_path . $this->config['avatar_gallery_path'] . '/' . $img['file'],
'AVATAR_NAME' => $img['name'],
'AVATAR_FILE' => $img['filename'],
));
$col_count = ($col_count + 1) % $table_cols;
++$av_pos;
}
} }
return true; return true;

View file

@ -7,8 +7,10 @@
<input type="submit" value="{L_GO}" name="av_local_go" class="button2" /> <input type="submit" value="{L_GO}" name="av_local_go" class="button2" />
<div id="gallery"> <div id="gallery">
<!-- BEGIN av_local_imgs --> <!-- BEGIN av_local_row -->
<label for="av-{av_local_imgs.S_ROW_COUNT}"><img src="{av_local_imgs.AVATAR_IMAGE}" alt="" /><br /> <!-- BEGIN av_local_col -->
<input type="radio" name="av_local_file" id="av-{av_local_imgs.S_ROW_COUNT}" value="{av_local_imgs.AVATAR_FILE}" /></label> <label for="av-{av_local_row.av_local_col.S_ROW_COUNT}"><img src="{av_local_row.av_local_col.AVATAR_IMAGE}" alt="" /><br />
<!-- END av_local_imgs --> <input type="radio" name="av_local_file" id="av-{av_local_row.av_local_col.S_ROW_COUNT}" value="{av_local_row.av_local_col.AVATAR_FILE}" /></label>
<!-- END av_local_col -->
<!-- END av_local_row -->
</div> </div>