]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
"Lists with you" and "List subscriptions" in the right aside, "Lists" in the left...
authorShashi Gowda <connect2shashi@gmail.com>
Thu, 14 Apr 2011 18:05:04 +0000 (23:35 +0530)
committerZach Copley <zach@status.net>
Thu, 14 Apr 2011 19:49:43 +0000 (19:49 +0000)
lib/action.php
lib/defaultlocalnav.php
lib/listsnav.php [new file with mode: 0644]
lib/peopletagsubscriptionssection.php
lib/profileaction.php

index f626c04480f69112d7e7230443cca585b740d0b1..0234d2fa237aa7c64ed2217396b7175043fc0c89 100644 (file)
@@ -1354,13 +1354,16 @@ class Action extends HTMLOutputter // lawsuit
      *
      * @return nothing
      */
-    function menuItem($url, $text, $title=null, $is_selected=false, $id=null)
+    function menuItem($url, $text, $title=null, $is_selected=false, $id=null, $class=null)
     {
         // Added @id to li for some control.
         // XXX: We might want to move this to htmloutputter.php
         $lattrs = array();
-        if ($is_selected) {
-            $lattrs['class'] = 'current';
+        if ($class !== null) {
+            $lattrs['class'] = $class;
+            if ($is_selected) {
+                $lattrs['class'] = trim('current ' . $lattrs['class']);
+            }
         }
 
         (is_null($id)) ? $lattrs : $lattrs['id'] = $id;
index 84a6267ac97861037092a1acc460c21c565dd403..ffef87480c02312f8e47e76598bec81400897247 100644 (file)
@@ -72,6 +72,14 @@ class DefaultLocalNav extends Menu
                 }
             }
 
+            if (!empty($user)) {
+                $sn = new ListsNav($this->action, $user->getProfile());
+                if ($sn->hasLists()) {
+                    // TRANS: Menu item in default local navigation panel.
+                    $this->submenu(_m('MENU', 'Lists'), $sn);
+                }
+            }
+
             Event::handle('EndDefaultLocalNav', array($this, $user));
         }
 
diff --git a/lib/listsnav.php b/lib/listsnav.php
new file mode 100644 (file)
index 0000000..67d8941
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Lists a user has created
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category  Widget
+ * @package   StatusNet
+ * @author    Shashi Gowda <connect2shashi@gmail.com>
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+    exit(1);
+}
+
+/**
+ * Peopletags a user has subscribed to
+ *
+ * @category Widget
+ * @package  StatusNet
+ * @author   Shashi Gowda <connect2shashi@gmail.com>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://status.net/
+ */
+class ListsNav extends Menu
+{
+    var $profile=null;
+    var $lists=null;
+
+    function __construct($out, Profile $profile)
+    {
+        parent::__construct($out);
+        $this->profile = $profile;
+
+        $user = common_current_user();
+
+        $this->lists = $profile->getOwnedTags($user);
+    }
+
+    function show()
+    {
+        $action = $this->actionName;
+
+        $this->out->elementStart('ul', array('class' => 'nav'));
+
+        if (Event::handle('StartListsNav', array($this))) {
+
+            while ($this->lists->fetch()) {
+                $mode = $this->lists->private ? 'private' : 'public';
+                $this->out->menuItem(($this->lists->mainpage) ?
+                                     $this->lists->mainpage :
+                                     common_local_url('showprofiletag',
+                                                      array('tagger' => $this->profile->nickname,
+                                                            'tag'    => $this->lists->tag)),
+                                     $this->lists->tag,
+                                     '',
+                                     $action == 'showprofiletag' &&
+                                     $this->action->arg('tagger') == $this->profile->nickname &&
+                                     $this->action->arg('tag')    == $this->lists->tag,
+                                     'nav_timeline_list_'.$this->lists->id,
+                                     'mode-' . $mode);
+            }
+            Event::handle('EndListsNav', array($this));
+        }
+
+        $this->out->elementEnd('ul');
+    }
+
+    function hasLists()
+    {
+        return (!empty($this->lists) && $this->lists->N > 0);
+    }
+}
index 616af28d4cdb13c9b103856d0bba07df1ffa7980..ab90f7eb755aba7938b70cf124687953964a6e05 100644 (file)
@@ -42,21 +42,22 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
 class PeopletagSubscriptionsSection extends PeopletagSection
 {
     var $profile=null;
+    var $ptags=null;
 
     function __construct($out, Profile $profile)
     {
         parent::__construct($out);
         $this->profile = $profile;
-    }
 
-    function getPeopletags()
-    {
         $limit = PEOPLETAGS_PER_SECTION+1;
         $offset = 0;
 
-        $ptags = $this->profile->getTagSubscriptions($offset, $limit);
+        $this->ptags = $this->profile->getTagSubscriptions($offset, $limit);
+    }
 
-        return $ptags;
+    function getPeopletags()
+    {
+        return $this->ptags;
     }
 
     function title()
index 16592783c9c0db9d0707d4b65c1d2bf32caea539..ca008739de500649c44d20442e6e99fbc877146f 100644 (file)
@@ -97,7 +97,8 @@ class ProfileAction extends OwnerDesignAction
         $this->showSubscriptions();
         $this->showSubscribers();
         $this->showGroups();
-        $this->showPeopletags();
+        $this->showListsFor();
+        $this->showListSubscriptions();
         $this->showStatistics();
     }
 
@@ -189,14 +190,25 @@ class ProfileAction extends OwnerDesignAction
         $this->elementEnd('div');
     }
 
-    function showPeopletags()
+    function showListsFor()
     {
-        if (Event::handle('StartShowPeopletagsSection', array($this))) {
+        if (Event::handle('StartShowListsForSection', array($this))) {
 
             $section = new PeopletagsForUserSection($this, $this->profile);
             $section->show();
 
-            Event::handle('EndShowPeopletagsSection', array($this));
+            Event::handle('EndShowListsForSection', array($this));
+        }
+    }
+
+    function showListSubscriptions()
+    {
+        if (Event::handle('StartShowListSubscriptionsSection', array($this))) {
+
+            $section = new PeopletagSubscriptionsSection($this, $this->profile);
+            $section->show();
+
+            Event::handle('EndShowListSubscriptionsSection', array($this));
         }
     }