mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[feature/avatars] Update ACP manage users, fix gallery focus issue
Updated ACP to match UCP with dropdown. Correctly determe which avatar to focus on by checking if the form was submitted and avatar_driver is set. PHPBB3-10018
This commit is contained in:
parent
6deadc3acf
commit
d0bb14ded1
4 changed files with 92 additions and 81 deletions
|
@ -6,18 +6,52 @@
|
||||||
<dl>
|
<dl>
|
||||||
<dt><label>{L_CURRENT_IMAGE}:</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
<dt><label>{L_CURRENT_IMAGE}:</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
|
||||||
<dd>{AVATAR}</dd>
|
<dd>{AVATAR}</dd>
|
||||||
<!-- IF AV_SHOW_DELETE --><dd><input type="submit" name="av_delete" id="av_delete" value="{LA_DELETE_AVATAR}" class="button2" /></dd><!-- ENDIF -->
|
|
||||||
</dl>
|
</dl>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<!-- BEGIN avatar_drivers -->
|
<fieldset>
|
||||||
<fieldset>
|
<legend>{L_AVATAR_SELECT_NEW}</legend>
|
||||||
<legend>{avatar_drivers.L_TITLE}</legend>
|
<dl>
|
||||||
<p>{avatar_drivers.L_EXPLAIN}</p>
|
<dt><label>{L_AVATAR_TYPE}</label></dt>
|
||||||
{avatar_drivers.OUTPUT}
|
<dd><select name="avatar_driver" id="avatar_driver">
|
||||||
</fieldset>
|
<option value="">{L_NO_AVATAR}</option>
|
||||||
<fieldset class="quick">
|
<!-- BEGIN avatar_drivers -->
|
||||||
<input type="submit" name="submit_av_{avatar_drivers.DRIVER}" value="{L_SUBMIT}" class="button1" />
|
<option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option>
|
||||||
</fieldset>
|
<!-- END avatar_drivers -->
|
||||||
<!-- END avatar_drivers -->
|
</select></dd>
|
||||||
|
</dl>
|
||||||
|
<div id="av_options">
|
||||||
|
<!-- BEGIN avatar_drivers -->
|
||||||
|
<div id="av_option_{avatar_drivers.DRIVER}">
|
||||||
|
<p>{avatar_drivers.L_EXPLAIN}</p>
|
||||||
|
{avatar_drivers.OUTPUT}
|
||||||
|
</div>
|
||||||
|
<!-- END avatar_drivers -->
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
<script type="text/javascript">
|
||||||
|
// <![CDATA[
|
||||||
|
function avatar_simplify() {
|
||||||
|
var node = document.getElementById('av_options');
|
||||||
|
for (var i = 0; i < node.children.length; i++) {
|
||||||
|
child = node.children[i];
|
||||||
|
child.style.display = 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
var selected = document.getElementById('avatar_driver').value;
|
||||||
|
var id = 'av_option_' + selected;
|
||||||
|
node = document.getElementById(id);
|
||||||
|
if (node != null) {
|
||||||
|
node.style.display = 'block';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
avatar_simplify();
|
||||||
|
document.getElementById('avatar_driver').onchange = avatar_simplify;
|
||||||
|
// ]]>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<fieldset class="quick">
|
||||||
|
<input type="submit" name="update" value="{L_SUBMIT}" class="button1" />
|
||||||
|
</fieldset>
|
||||||
{S_FORM_TOKEN}
|
{S_FORM_TOKEN}
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -1689,53 +1689,17 @@ class acp_users
|
||||||
{
|
{
|
||||||
$avatar_manager = new phpbb_avatar_manager($phpbb_root_path, $phpEx, $config, $cache->getDriver());
|
$avatar_manager = new phpbb_avatar_manager($phpbb_root_path, $phpEx, $config, $cache->getDriver());
|
||||||
|
|
||||||
if (isset($_POST['av_delete']))
|
|
||||||
{
|
|
||||||
if (!check_form_key($form_name))
|
|
||||||
{
|
|
||||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = array(
|
|
||||||
'user_avatar' => '',
|
|
||||||
'user_avatar_type' => '',
|
|
||||||
'user_avatar_height' => 0,
|
|
||||||
'user_avatar_width' => 0,
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($driver = $avatar_manager->get_driver($user_row['user_avatar_type']))
|
|
||||||
{
|
|
||||||
$driver->delete($user_row);
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
|
||||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
|
||||||
WHERE user_id = ' . $user_id;
|
|
||||||
|
|
||||||
$db->sql_query($sql);
|
|
||||||
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
|
||||||
}
|
|
||||||
|
|
||||||
$avatar_drivers = $avatar_manager->get_valid_drivers();
|
$avatar_drivers = $avatar_manager->get_valid_drivers();
|
||||||
sort($avatar_drivers);
|
sort($avatar_drivers);
|
||||||
|
|
||||||
foreach ($avatar_drivers as $driver)
|
if ($submit)
|
||||||
{
|
{
|
||||||
if ($config["allow_avatar_$driver"])
|
if (check_form_key($form_name))
|
||||||
{
|
{
|
||||||
$avatars_enabled = true;
|
$driver = request_var('avatar_driver', '');
|
||||||
$template->set_filenames(array(
|
if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"])
|
||||||
'avatar' => "acp_avatar_options_$driver.html",
|
|
||||||
));
|
|
||||||
|
|
||||||
$avatar = $avatar_manager->get_driver($driver);
|
|
||||||
if (isset($_POST["submit_av_$driver"]))
|
|
||||||
{
|
{
|
||||||
if (!check_form_key($form_name))
|
$avatar = $avatar_manager->get_driver($driver);
|
||||||
{
|
|
||||||
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = $avatar->process_form($template, $user_row, $error);
|
$result = $avatar->process_form($template, $user_row, $error);
|
||||||
|
|
||||||
if ($result && empty($error))
|
if ($result && empty($error))
|
||||||
|
@ -1750,6 +1714,42 @@ class acp_users
|
||||||
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Removing the avatar
|
||||||
|
$result = array(
|
||||||
|
'user_avatar' => '',
|
||||||
|
'user_avatar_type' => '',
|
||||||
|
'user_avatar_width' => 0,
|
||||||
|
'user_avatar_height' => 0,
|
||||||
|
);
|
||||||
|
|
||||||
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
|
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
||||||
|
WHERE user_id = ' . $user_id;
|
||||||
|
|
||||||
|
$db->sql_query($sql);
|
||||||
|
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&u=' . $user_id), E_USER_WARNING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$focused_driver = request_var('avatar_driver', $user_row['user_avatar_type']);
|
||||||
|
|
||||||
|
foreach ($avatar_drivers as $driver)
|
||||||
|
{
|
||||||
|
if ($config["allow_avatar_$driver"])
|
||||||
|
{
|
||||||
|
$avatars_enabled = true;
|
||||||
|
$template->set_filenames(array(
|
||||||
|
'avatar' => "acp_avatar_options_$driver.html",
|
||||||
|
));
|
||||||
|
|
||||||
|
$avatar = $avatar_manager->get_driver($driver);
|
||||||
|
|
||||||
if ($avatar->prepare_form($template, $user_row, $error))
|
if ($avatar->prepare_form($template, $user_row, $error))
|
||||||
{
|
{
|
||||||
|
@ -1757,7 +1757,9 @@ class acp_users
|
||||||
$template->assign_block_vars('avatar_drivers', array(
|
$template->assign_block_vars('avatar_drivers', array(
|
||||||
'L_TITLE' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_TITLE'), // @TODO add lang values
|
'L_TITLE' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_TITLE'), // @TODO add lang values
|
||||||
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
|
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
|
||||||
|
|
||||||
'DRIVER' => $driver,
|
'DRIVER' => $driver,
|
||||||
|
'SELECTED' => ($driver == $focused_driver),
|
||||||
'OUTPUT' => $template->assign_display('avatar'),
|
'OUTPUT' => $template->assign_display('avatar'),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ abstract class phpbb_avatar_driver
|
||||||
/**
|
/**
|
||||||
* @TODO
|
* @TODO
|
||||||
**/
|
**/
|
||||||
public function prepare_form($template, $user_row, &$error)
|
public function prepare_form($template, $user_row, &$error, &$override_focus)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -615,6 +615,8 @@ class ucp_profile
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$focused_driver = request_var('avatar_driver', $user->data['user_avatar_type']);
|
||||||
|
|
||||||
foreach ($avatar_drivers as $driver)
|
foreach ($avatar_drivers as $driver)
|
||||||
{
|
{
|
||||||
if ($config["allow_avatar_$driver"])
|
if ($config["allow_avatar_$driver"])
|
||||||
|
@ -625,33 +627,6 @@ class ucp_profile
|
||||||
));
|
));
|
||||||
|
|
||||||
$avatar = $avatar_manager->get_driver($driver);
|
$avatar = $avatar_manager->get_driver($driver);
|
||||||
if (isset($_POST["submit_av_$driver"]))
|
|
||||||
{
|
|
||||||
if (check_form_key('ucp_avatar'))
|
|
||||||
{
|
|
||||||
$result = $avatar->process_form($template, $user->data, $error);
|
|
||||||
|
|
||||||
if ($result && empty($error))
|
|
||||||
{
|
|
||||||
// Success! Lets save the result in the database
|
|
||||||
$result['user_avatar_type'] = $driver;
|
|
||||||
|
|
||||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
|
||||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
|
||||||
WHERE user_id = ' . $user->data['user_id'];
|
|
||||||
|
|
||||||
$db->sql_query($sql);
|
|
||||||
|
|
||||||
meta_refresh(3, $this->u_action);
|
|
||||||
$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
|
|
||||||
trigger_error($message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$error[] = 'FORM_INVALID';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($avatar->prepare_form($template, $user->data, $error))
|
if ($avatar->prepare_form($template, $user->data, $error))
|
||||||
{
|
{
|
||||||
|
@ -662,7 +637,7 @@ class ucp_profile
|
||||||
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
|
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
|
||||||
|
|
||||||
'DRIVER' => $driver,
|
'DRIVER' => $driver,
|
||||||
'SELECTED' => ($driver == $user->data['user_avatar_type']),
|
'SELECTED' => ($driver == $focused_driver),
|
||||||
'OUTPUT' => $template->assign_display('avatar'),
|
'OUTPUT' => $template->assign_display('avatar'),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue