diff options
author | Evan Prodromou <evan@status.net> | 2010-05-21 16:47:57 -0400 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-05-21 16:47:57 -0400 |
commit | 6d8e01ad13dd9bc9e149f43a1eb88671d4737f4d (patch) | |
tree | 12f8b318971d1a1eebbb318e3c19142a56dce444 /actions/block.php | |
parent | 8a2144aeed2e338ef1b21425b9387086790aa820 (diff) | |
parent | bbfd6eff0c69f038d151d3bf6c8bf9b45a64716f (diff) |
Merge branch 'master' of gitorious.org:statusnet/mainline
Diffstat (limited to 'actions/block.php')
-rw-r--r-- | actions/block.php | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/actions/block.php b/actions/block.php index 7f609c253..239a50868 100644 --- a/actions/block.php +++ b/actions/block.php @@ -87,13 +87,15 @@ class BlockAction extends ProfileFormAction { if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($this->arg('no')) { - $this->returnToArgs(); + $this->returnToPrevious(); } elseif ($this->arg('yes')) { $this->handlePost(); - $this->returnToArgs(); + $this->returnToPrevious(); } else { $this->showPage(); } + } else { + $this->showPage(); } } @@ -118,6 +120,12 @@ class BlockAction extends ProfileFormAction */ function areYouSureForm() { + // @fixme if we ajaxify the confirmation form, skip the preview on ajax hits + $profile = new ArrayWrapper(array($this->profile)); + $preview = new ProfileList($profile, $this); + $preview->show(); + + $id = $this->profile->id; $this->elementStart('form', array('id' => 'block-' . $id, 'method' => 'post', @@ -175,4 +183,38 @@ class BlockAction extends ProfileFormAction $this->autofocus('form_action-yes'); } + /** + * Override for form session token checks; on our first hit we're just + * requesting confirmation, which doesn't need a token. We need to be + * able to take regular GET requests from email! + * + * @throws ClientException if token is bad on POST request or if we have + * confirmation parameters which could trigger something. + */ + function checkSessionToken() + { + if ($_SERVER['REQUEST_METHOD'] == 'POST' || + $this->arg('yes') || + $this->arg('no')) { + + return parent::checkSessionToken(); + } + } + + /** + * If we reached this form without returnto arguments, return to the + * current user's subscription list. + * + * @return string URL + */ + function defaultReturnTo() + { + $user = common_current_user(); + if ($user) { + return common_local_url('subscribers', + array('nickname' => $user->nickname)); + } else { + return common_local_url('public'); + } + } } |