]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/usergroups.php
Merge branch '1.0.x' of gitorious.org:statusnet/mainline into 1.0.x
[quix0rs-gnu-social.git] / actions / usergroups.php
index 20f2e5a75831d94400b1879b4369b08091eb77e2..178a3586fdea7d473d77caf229039182992b1d32 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
  *
  * User groups information
  *
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * @category  Personal
- * @package   Laconica
- * @author    Evan Prodromou <evan@controlyourself.ca>
- * @author    Sarven Capadisli <csarven@controlyourself.ca>
- * @copyright 2008-2009 Control Yourself, Inc.
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @author    Sarven Capadisli <csarven@status.net>
+ * @copyright 2008-2009 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://laconi.ca/
+ * @link      http://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -40,24 +40,31 @@ require_once INSTALLDIR.'/lib/grouplist.php';
  * Show the groups a user belongs to
  *
  * @category Personal
- * @package  Laconica
- * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  */
-
-class UsergroupsAction extends Action
+class UsergroupsAction extends ProfileAction
 {
-    var $user = null;
     var $page = null;
     var $profile = null;
 
+    function isReadOnly($args)
+    {
+        return true;
+    }
+
     function title()
     {
         if ($this->page == 1) {
-            return sprintf(_("%s groups"), $this->user->nickname);
+            // TRANS: Page title for first page of groups for a user.
+            // TRANS: %s is a nickname.
+            return sprintf(_('%s groups'), $this->user->nickname);
         } else {
-            return sprintf(_("%s groups, page %d"),
+            // TRANS: Page title for all but the first page of groups for a user.
+            // TRANS: %1$s is a nickname, %2$d is a page number.
+            return sprintf(_('%1$s groups, page %2$d'),
                            $this->user->nickname,
                            $this->page);
         }
@@ -84,6 +91,7 @@ class UsergroupsAction extends Action
         $this->user = User::staticGet('nickname', $nickname);
 
         if (!$this->user) {
+            // TRANS: Client error displayed requesting groups for a non-existing user.
             $this->clientError(_('No such user.'), 404);
             return false;
         }
@@ -91,6 +99,7 @@ class UsergroupsAction extends Action
         $this->profile = $this->user->getProfile();
 
         if (!$this->profile) {
+            // TRANS: Error message displayed when referring to a user without a profile.
             $this->serverError(_('User has no profile.'));
             return false;
         }
@@ -106,30 +115,66 @@ class UsergroupsAction extends Action
         $this->showPage();
     }
 
-    function showLocalNav()
-    {
-        $nav = new SubGroupNav($this, $this->user);
-        $nav->show();
-    }
-
     function showContent()
     {
+        $this->elementStart('p', array('id' => 'new_group'));
         $this->element('a', array('href' => common_local_url('newgroup'),
-                                  'id' => 'new_group'),
+                                  'class' => 'more'),
+                       // TRANS: Link text on group page to create a new group.
                        _('Create a new group'));
+        $this->elementEnd('p');
+
+        $this->elementStart('p', array('id' => 'group_search'));
+        $this->element('a', array('href' => common_local_url('groupsearch'),
+                                  'class' => 'more'),
+                       // TRANS: Link text on group page to search for groups.
+                       _('Search for more groups'));
+        $this->elementEnd('p');
+
+        if (Event::handle('StartShowUserGroupsContent', array($this))) {
+            $offset = ($this->page-1) * GROUPS_PER_PAGE;
+            $limit =  GROUPS_PER_PAGE + 1;
+
+            $groups = $this->user->getGroups($offset, $limit);
+
+            if ($groups) {
+                $gl = new GroupList($groups, $this->user, $this);
+                $cnt = $gl->show();
+                if (0 == $cnt) {
+                    $this->showEmptyListMessage();
+                }
+            }
 
-        $offset = ($this->page-1) * GROUPS_PER_PAGE;
-        $limit =  GROUPS_PER_PAGE + 1;
+            $this->pagination($this->page > 1, $cnt > GROUPS_PER_PAGE,
+                              $this->page, 'usergroups',
+                              array('nickname' => $this->user->nickname));
 
-        $groups = $this->user->getGroups($offset, $limit);
+            Event::handle('EndShowUserGroupsContent', array($this));
+        }
+    }
 
-        if ($groups) {
-            $gl = new GroupList($groups, $this->user, $this);
-            $cnt = $gl->show();
+    function showEmptyListMessage()
+    {
+        // TRANS: Text on group page for a user that is not a member of any group.
+        // TRANS: %s is a user nickname.
+        $message = sprintf(_('%s is not a member of any group.'), $this->user->nickname) . ' ';
+
+        if (common_logged_in()) {
+            $current_user = common_current_user();
+            if ($this->user->id === $current_user->id) {
+                // TRANS: Text on group page for a user that is not a member of any group. This message contains
+                // TRANS: a Markdown link in the form [link text](link) and a variable that should not be changed.
+                $message .= _('Try [searching for groups](%%action.groupsearch%%) and joining them.');
+            }
         }
+        $this->elementStart('div', 'guide');
+        $this->raw(common_markup_to_html($message));
+        $this->elementEnd('div');
+    }
 
-        $this->pagination($this->page > 1, $cnt > GROUPS_PER_PAGE,
-                          $this->page, 'usergroups',
-                          array('nickname' => $this->user->nickname));
+    function showProfileBlock()
+    {
+        $block = new AccountProfileBlock($this, $this->profile);
+        $block->show();
     }
 }