summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-11-03 14:04:08 -0700
committerBrion Vibber <brion@pobox.com>2010-11-03 14:06:06 -0700
commita3928e5583aa0e2f4a429a6322bfc094ca907fd2 (patch)
treee7afdf62af5fc3124b38204efd1f4a9d7193da8c /plugins
parent8e04e88800047b13fc4dbe316f37249cc2988cd2 (diff)
UserFlagPlugin fix for ticket #2118 and ticket #2847: flagged state wasn't reflected in profile lists such as group members page and profile search .
Pulled common code for the profile page and profile list cases to give them the same logic on checking. Also fixes the problem that you'd get a flag button for yourself in profile lists, while we explicitly exclude that from the profile page -- it's now skipped in both places.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/UserFlag/UserFlagPlugin.php60
1 files changed, 31 insertions, 29 deletions
diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php
index e6ad3e37d..fc7698841 100644
--- a/plugins/UserFlag/UserFlagPlugin.php
+++ b/plugins/UserFlag/UserFlagPlugin.php
@@ -128,25 +128,9 @@ class UserFlagPlugin extends Plugin
*/
function onEndProfilePageActionsElements(&$action, $profile)
{
- $user = common_current_user();
-
- if (!empty($user) && ($user->id != $profile->id)) {
-
- $action->elementStart('li', 'entity_flag');
-
- if (User_flag_profile::exists($profile->id, $user->id)) {
- // @todo FIXME: Add a title explaining what 'flagged' means?
- // TRANS: Message added to a profile if it has been flagged for review.
- $action->element('p', 'flagged', _('Flagged'));
- } else {
- $form = new FlagProfileForm($action, $profile,
- array('action' => 'showstream',
- 'nickname' => $profile->nickname));
- $form->show();
- }
-
- $action->elementEnd('li');
- }
+ $this->showFlagButton($action, $profile,
+ array('action' => 'showstream',
+ 'nickname' => $profile->nickname));
return true;
}
@@ -160,22 +144,40 @@ class UserFlagPlugin extends Plugin
*/
function onEndProfileListItemActionElements($item)
{
- $user = common_current_user();
+ list($action, $args) = $item->action->returnToArgs();
+ $args['action'] = $action;
+ $this->showFlagButton($item->action, $item->profile, $args);
+
+ return true;
+ }
- if (!empty($user)) {
+ /**
+ * Actually output a flag button. If the target profile has already been
+ * flagged by the current user, a null-action faux button is shown.
+ *
+ * @param Action $action
+ * @param Profile $profile
+ * @param array $returnToArgs
+ */
+ protected function showFlagButton($action, $profile, $returnToArgs)
+ {
+ $user = common_current_user();
- list($action, $args) = $item->action->returnToArgs();
+ if (!empty($user) && ($user->id != $profile->id)) {
- $args['action'] = $action;
+ $action->elementStart('li', 'entity_flag');
- $form = new FlagProfileForm($item->action, $item->profile, $args);
+ if (User_flag_profile::exists($profile->id, $user->id)) {
+ // @todo FIXME: Add a title explaining what 'flagged' means?
+ // TRANS: Message added to a profile if it has been flagged for review.
+ $action->element('p', 'flagged', _m('Flagged'));
+ } else {
+ $form = new FlagProfileForm($action, $profile, $returnToArgs);
+ $form->show();
+ }
- $item->action->elementStart('li', 'entity_flag');
- $form->show();
- $item->action->elementEnd('li');
+ $action->elementEnd('li');
}
-
- return true;
}
/**