aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCullen Walsh <ckwalsh@cullenwalsh.com>2011-06-18 22:05:54 -0700
committerCullen Walsh <ckwalsh@cullenwalsh.com>2012-03-18 22:21:36 +0000
commitd0bb14ded1960de47eb07d955a483d74fd9e0af2 (patch)
tree66f53ef1b36797941026e9f3775d513c7c992050
parent6deadc3acf302e9fd15adfd6bff5f0fe525240c7 (diff)
downloadforums-d0bb14ded1960de47eb07d955a483d74fd9e0af2.tar
forums-d0bb14ded1960de47eb07d955a483d74fd9e0af2.tar.gz
forums-d0bb14ded1960de47eb07d955a483d74fd9e0af2.tar.bz2
forums-d0bb14ded1960de47eb07d955a483d74fd9e0af2.tar.xz
forums-d0bb14ded1960de47eb07d955a483d74fd9e0af2.zip
[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
-rw-r--r--phpBB/adm/style/acp_users_avatar.html56
-rw-r--r--phpBB/includes/acp/acp_users.php84
-rw-r--r--phpBB/includes/avatar/driver.php2
-rw-r--r--phpBB/includes/ucp/ucp_profile.php31
4 files changed, 92 insertions, 81 deletions
diff --git a/phpBB/adm/style/acp_users_avatar.html b/phpBB/adm/style/acp_users_avatar.html
index c0ec9e5f8c..6316ff4a22 100644
--- a/phpBB/adm/style/acp_users_avatar.html
+++ b/phpBB/adm/style/acp_users_avatar.html
@@ -6,18 +6,52 @@
<dl>
<dt><label>{L_CURRENT_IMAGE}:</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
<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>
</fieldset>
- <!-- BEGIN avatar_drivers -->
- <fieldset>
- <legend>{avatar_drivers.L_TITLE}</legend>
- <p>{avatar_drivers.L_EXPLAIN}</p>
- {avatar_drivers.OUTPUT}
- </fieldset>
- <fieldset class="quick">
- <input type="submit" name="submit_av_{avatar_drivers.DRIVER}" value="{L_SUBMIT}" class="button1" />
- </fieldset>
- <!-- END avatar_drivers -->
+ <fieldset>
+ <legend>{L_AVATAR_SELECT_NEW}</legend>
+ <dl>
+ <dt><label>{L_AVATAR_TYPE}</label></dt>
+ <dd><select name="avatar_driver" id="avatar_driver">
+ <option value="">{L_NO_AVATAR}</option>
+ <!-- BEGIN avatar_drivers -->
+ <option value="{avatar_drivers.DRIVER}"<!-- IF avatar_drivers.SELECTED --> selected="selected"<!-- ENDIF -->>{avatar_drivers.L_TITLE}</option>
+ <!-- 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}
</form>
diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php
index 9c8a1c683e..bcce458e20 100644
--- a/phpBB/includes/acp/acp_users.php
+++ b/phpBB/includes/acp/acp_users.php
@@ -1689,53 +1689,17 @@ class acp_users
{
$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 . '&amp;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 . '&amp;u=' . $user_id));
- }
-
$avatar_drivers = $avatar_manager->get_valid_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;
- $template->set_filenames(array(
- 'avatar' => "acp_avatar_options_$driver.html",
- ));
-
- $avatar = $avatar_manager->get_driver($driver);
- if (isset($_POST["submit_av_$driver"]))
+ $driver = request_var('avatar_driver', '');
+ if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"])
{
- if (!check_form_key($form_name))
- {
- trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
- }
-
+ $avatar = $avatar_manager->get_driver($driver);
$result = $avatar->process_form($template, $user_row, $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 . '&amp;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 . '&amp;u=' . $user_id));
+ }
+ }
+ else
+ {
+ trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;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))
{
@@ -1757,7 +1757,9 @@ class acp_users
$template->assign_block_vars('avatar_drivers', array(
'L_TITLE' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_TITLE'), // @TODO add lang values
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
+
'DRIVER' => $driver,
+ 'SELECTED' => ($driver == $focused_driver),
'OUTPUT' => $template->assign_display('avatar'),
));
}
diff --git a/phpBB/includes/avatar/driver.php b/phpBB/includes/avatar/driver.php
index 5322f73c60..1ed5b1a5f7 100644
--- a/phpBB/includes/avatar/driver.php
+++ b/phpBB/includes/avatar/driver.php
@@ -102,7 +102,7 @@ abstract class phpbb_avatar_driver
/**
* @TODO
**/
- public function prepare_form($template, $user_row, &$error)
+ public function prepare_form($template, $user_row, &$error, &$override_focus)
{
return false;
}
diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php
index d5f3ec4b81..186c023798 100644
--- a/phpBB/includes/ucp/ucp_profile.php
+++ b/phpBB/includes/ucp/ucp_profile.php
@@ -615,6 +615,8 @@ class ucp_profile
}
}
+ $focused_driver = request_var('avatar_driver', $user->data['user_avatar_type']);
+
foreach ($avatar_drivers as $driver)
{
if ($config["allow_avatar_$driver"])
@@ -625,33 +627,6 @@ class ucp_profile
));
$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))
{
@@ -662,7 +637,7 @@ class ucp_profile
'L_EXPLAIN' => $user->lang('AVATAR_DRIVER_' . $driver_u . '_EXPLAIN'),
'DRIVER' => $driver,
- 'SELECTED' => ($driver == $user->data['user_avatar_type']),
+ 'SELECTED' => ($driver == $focused_driver),
'OUTPUT' => $template->assign_display('avatar'),
));
}