From 55d00a3a907fa275a0df580a82cea20da95889c6 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 16 Nov 2009 18:24:59 +0100 Subject: [PATCH] make profile flag actions work like other profile actions --- plugins/UserFlag/flagprofile.php | 94 ++++++--------------------- plugins/UserFlag/flagprofileform.php | 96 ++++------------------------ 2 files changed, 31 insertions(+), 159 deletions(-) diff --git a/plugins/UserFlag/flagprofile.php b/plugins/UserFlag/flagprofile.php index 77c86b233b..8ff2f1f727 100644 --- a/plugins/UserFlag/flagprofile.php +++ b/plugins/UserFlag/flagprofile.php @@ -41,11 +41,8 @@ if (!defined('STATUSNET')) { * @link http://status.net/ */ -class FlagprofileAction extends Action +class FlagprofileAction extends ProfileFormAction { - var $profile = null; - var $flag = null; - /** * Take arguments for running * @@ -56,34 +53,14 @@ class FlagprofileAction extends Action function prepare($args) { - parent::prepare($args); - - if ($_SERVER['REQUEST_METHOD'] != 'POST') { - throw new ClientException(_('Action only accepts POST')); - } - - if (!common_logged_in()) { - $this->clientError(_('Not logged in.')); - return false; - } - - $id = $this->trimmed('flagprofileto'); - - if (!$id) { - $this->clientError(_('No profile specified.')); - return false; - } - - $this->profile = Profile::staticGet('id', $id); - - if (empty($this->profile)) { - $this->clientError(_('No profile with that ID.')); + if (!parent::prepare($args)) { return false; } $user = common_current_user(); assert(!empty($user)); // checked above + assert(!empty($this->profile)); // checked above if (User_flag_profile::exists($this->profile->id, $user->id)) @@ -96,46 +73,12 @@ class FlagprofileAction extends Action } /** - * Handle request - * - * @param array $args $_REQUEST args; handled in prepare() + * Handle POST * * @return void */ - function handle($args) - { - parent::handle($args); - - $this->flagProfile(); - - if ($this->boolean('ajax')) { - header('Content-Type: text/xml;charset=utf-8'); - $this->xw->startDocument('1.0', 'UTF-8'); - $this->elementStart('html'); - $this->elementStart('head'); - $this->element('title', null, _('Flagged for review')); - $this->elementEnd('head'); - $this->elementStart('body'); - $this->element('p', 'flagged', _('Flagged')); - $this->elementEnd('body'); - $this->elementEnd('html'); - } else { - $this->returnTo(); - } - } - - function title() { - return _('Flag profile'); - } - - /** - * save the profile flag - * - * @return void - */ - - function flagProfile() + function handlePost() { $user = common_current_user(); @@ -149,25 +92,24 @@ class FlagprofileAction extends Action $ufp->created = common_sql_now(); if (!$ufp->insert()) { - throw new ServerException(sprintf(_("Couldn't flag profile '%s' with flag '%s'."), - $this->profile->nickname, $this->flag)); + throw new ServerException(sprintf(_("Couldn't flag profile '%s' for review."), + $this->profile->nickname)); } $ufp->free(); } - function returnTo() - { - // Now, gotta figure where we go back to - foreach ($this->args as $k => $v) { - if ($k == 'returnto-action') { - $action = $v; - } elseif (substr($k, 0, 9) == 'returnto-') { - $args[substr($k, 9)] = $v; - } - } - - common_redirect(common_local_url($action, $args), 303); + function ajaxResults() { + header('Content-Type: text/xml;charset=utf-8'); + $this->xw->startDocument('1.0', 'UTF-8'); + $this->elementStart('html'); + $this->elementStart('head'); + $this->element('title', null, _('Flagged for review')); + $this->elementEnd('head'); + $this->elementStart('body'); + $this->element('p', 'flagged', _('Flagged')); + $this->elementEnd('body'); + $this->elementEnd('html'); } } diff --git a/plugins/UserFlag/flagprofileform.php b/plugins/UserFlag/flagprofileform.php index a8396e2d57..262dad4a77 100644 --- a/plugins/UserFlag/flagprofileform.php +++ b/plugins/UserFlag/flagprofileform.php @@ -45,108 +45,38 @@ require_once INSTALLDIR.'/lib/form.php'; * @link http://status.net/ */ -class FlagProfileForm extends Form +class FlagProfileForm extends ProfileActionForm { /** - * Profile of profile to flag - */ - - var $profile = null; - - /** - * Return-to args - */ - - var $args = null; - - /** - * Constructor - * - * @param HTMLOutputter $out output channel - * @param Profile $profile profile of user to flag - * @param array $args return-to args - */ - - function __construct($out=null, $profile=null, $args=null) - { - parent::__construct($out); - - $this->profile = $profile; - $this->args = $args; - } - - /** - * ID of the form - * - * @return int ID of the form - */ - - function id() - { - return 'flagprofile-' . $this->profile->id; - } - - /** - * class of the form + * Action this form provides * - * @return string class of the form + * @return string Name of the action, lowercased. */ - function formClass() + function target() { - return 'form_entity_flag'; + return 'flagprofile'; } /** - * Action of the form + * Title of the form * - * @return string URL of the action + * @return string Title of the form, internationalized */ - function action() - { - return common_local_url('flagprofile'); - } - - /** - * Legend of the Form - * - * @return void - */ - function formLegend() + function title() { - $this->out->element('legend', null, _('Flag profile for review')); - } - - /** - * Data elements of the form - * - * @return void - */ - - function formData() - { - // TODO: let the user choose a flag - - $this->out->hidden('flagprofileto-' . $this->profile->id, - $this->profile->id, - 'flagprofileto'); - - if ($this->args) { - foreach ($this->args as $k => $v) { - $this->out->hidden('returnto-' . $k, $v); - } - } + return _('Flag'); } /** - * Action elements + * Description of the form * - * @return void + * @return string description of the form, internationalized */ - function formActions() + function description() { - $this->out->submit('submit', _('Flag'), 'submit', null, _('Flag profile for review')); + return _('Flag profile for review'); } } -- 2.39.5