]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/block.php
DocAction now extends ManagedAction
[quix0rs-gnu-social.git] / actions / block.php
index 7f609c253b99b2d270f65c2779f784ebdf0a2d83..53d8ae7ae0600c17a800cfc5e927a7efd40facfd 100644 (file)
@@ -42,7 +42,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
  * @link     http://status.net/
  */
-
 class BlockAction extends ProfileFormAction
 {
     var $profile = null;
@@ -54,7 +53,6 @@ class BlockAction extends ProfileFormAction
      *
      * @return boolean success flag
      */
-
     function prepare($args)
     {
         if (!parent::prepare($args)) {
@@ -66,8 +64,8 @@ class BlockAction extends ProfileFormAction
         assert(!empty($cur)); // checked by parent
 
         if ($cur->hasBlocked($this->profile)) {
+            // TRANS: Client error displayed when blocking a user that has already been blocked.
             $this->clientError(_('You already blocked that user.'));
-            return false;
         }
 
         return true;
@@ -76,24 +74,23 @@ class BlockAction extends ProfileFormAction
     /**
      * Handle request
      *
-     * Shows a page with list of favorite notices
-     *
      * @param array $args $_REQUEST args; handled in prepare()
      *
      * @return void
      */
-
     function handle($args)
     {
         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();
         }
     }
 
@@ -102,6 +99,7 @@ class BlockAction extends ProfileFormAction
     }
 
     function title() {
+        // TRANS: Title for block user page.
         return _('Block user');
     }
 
@@ -118,6 +116,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',
@@ -125,8 +129,10 @@ class BlockAction extends ProfileFormAction
                                            'action' => common_local_url('block')));
         $this->elementStart('fieldset');
         $this->hidden('token', common_session_token());
+        // TRANS: Legend for block user form.
         $this->element('legend', _('Block user'));
         $this->element('p', null,
+                       // TRANS: Explanation of consequences when blocking a user on the block user page.
                        _('Are you sure you want to block this user? '.
                          'Afterwards, they will be unsubscribed from you, '.
                          'unable to subscribe to you in the future, and '.
@@ -140,8 +146,20 @@ class BlockAction extends ProfileFormAction
                 $this->hidden($k, $v);
             }
         }
-        $this->submit('form_action-no', _('No'), 'submit form_action-primary', 'no', _("Do not block this user"));
-        $this->submit('form_action-yes', _('Yes'), 'submit form_action-secondary', 'yes', _('Block this user'));
+        $this->submit('form_action-no',
+                      // TRANS: Button label on the user block form.
+                      _m('BUTTON','No'),
+                      'submit form_action-primary',
+                      'no',
+                      // TRANS: Submit button title for 'No' when blocking a user.
+                      _('Do not block this user.'));
+        $this->submit('form_action-yes',
+                      // TRANS: Button label on the user block form.
+                      _m('BUTTON','Yes'),
+                      'submit form_action-secondary',
+                      'yes',
+                      // TRANS: Submit button title for 'Yes' when blocking a user.
+                      _('Block this user.'));
         $this->elementEnd('fieldset');
         $this->elementEnd('form');
     }
@@ -164,8 +182,8 @@ class BlockAction extends ProfileFormAction
         }
 
         if (!$result) {
+            // TRANS: Server error displayed when blocking a user fails.
             $this->serverError(_('Failed to save block information.'));
-            return;
         }
     }
 
@@ -175,4 +193,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');
+        }
+    }
 }