]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Move personal group nav menu to its own class
authorEvan Prodromou <evan@controlyourself.ca>
Thu, 15 Jan 2009 23:45:43 +0000 (23:45 +0000)
committerEvan Prodromou <evan@controlyourself.ca>
Thu, 15 Jan 2009 23:45:43 +0000 (23:45 +0000)
lib/personal.php
lib/personalgroupnav.php [new file with mode: 0644]

index 4e56c95664813816a9881841aeeb62ddb4f82413..46f9ff6be7a15c7b1eba1afdc67053b26addb4de 100644 (file)
@@ -21,95 +21,10 @@ if (!defined('LACONICA')) { exit(1); }
 
 class PersonalAction extends Action
 {
-
-    function is_readonly()
-    {
-        return true;
-    }
-
     function handle($args)
     {
         parent::handle($args);
         common_set_returnto($this->self_url());
     }
 
-    function views_menu()
-    {
-
-        $user = null;
-        $action = $this->trimmed('action');
-        $nickname = $this->trimmed('nickname');
-
-        if ($nickname) {
-            $user = User::staticGet('nickname', $nickname);
-            $user_profile = $user->getProfile();
-        } else {
-            $user_profile = false;
-        }
-
-        common_element_start('ul', array('id' => 'nav_views'));
-
-        common_menu_item(common_local_url('all', array('nickname' =>
-                                                       $nickname)),
-                         _('Personal'),
-                         sprintf(_('%s and friends'), (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
-                         $action == 'all');
-        common_menu_item(common_local_url('replies', array('nickname' =>
-                                                              $nickname)),
-                         _('Replies'),
-                         sprintf(_('Replies to %s'), (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
-                         $action == 'replies');
-        common_menu_item(common_local_url('showstream', array('nickname' =>
-                                                              $nickname)),
-                         _('Profile'),
-                         ($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname,
-                         $action == 'showstream');
-        common_menu_item(common_local_url('showfavorites', array('nickname' =>
-                                                              $nickname)),
-                         _('Favorites'),
-                         sprintf(_('%s\'s favorite notices'), ($user_profile) ? $user_profile->getBestName() : _('User')),
-                         $action == 'showfavorites');
-
-        $cur = common_current_user();
-
-        if ($cur && $cur->id == $user->id) {
-
-            common_menu_item(common_local_url('inbox', array('nickname' =>
-                                                                     $nickname)),
-                             _('Inbox'),
-                             _('Your incoming messages'),
-                             $action == 'inbox');
-            common_menu_item(common_local_url('outbox', array('nickname' =>
-                                                                     $nickname)),
-                             _('Outbox'),
-                             _('Your sent messages'),
-                             $action == 'outbox');
-        }
-
-        common_element_end('ul');
-    }
-
-    function source_link($source)
-    {
-        $source_name = _($source);
-        switch ($source) {
-         case 'web':
-         case 'xmpp':
-         case 'mail':
-         case 'omb':
-         case 'api':
-            common_element('span', 'noticesource', $source_name);
-            break;
-         default:
-            $ns = Notice_source::staticGet($source);
-            if ($ns) {
-                common_element('a', array('href' => $ns->url),
-                               $ns->name);
-            } else {
-                common_element('span', 'noticesource', $source_name);
-            }
-            break;
-        }
-        return;
-    }
 }
diff --git a/lib/personalgroupnav.php b/lib/personalgroupnav.php
new file mode 100644 (file)
index 0000000..5d727a5
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Laconica, the distributed open-source microblogging tool
+ *
+ * Base class for all actions (~views)
+ *
+ * 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  Action
+ * @package   Laconica
+ * @author    Evan Prodromou <evan@controlyourself.ca>
+ * @author    Sarven Capadisli <csarven@controlyourself.ca>
+ * @copyright 2008 Control Yourself, Inc.
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link      http://laconi.ca/
+ */
+
+if (!defined('LACONICA')) {
+    exit(1);
+}
+
+require_once INSTALLDIR.'/lib/widget.php';
+
+/**
+ * Base class for all actions
+ *
+ * This is the base class for all actions in the package. An action is
+ * more or less a "view" in an MVC framework.
+ *
+ * Actions are responsible for extracting and validating parameters; using
+ * model classes to read and write to the database; and doing ouput.
+ *
+ * @category Output
+ * @package  Laconica
+ * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @author   Sarven Capadisli <csarven@controlyourself.ca>
+ * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link     http://laconi.ca/
+ *
+ * @see      HTMLOutputter
+ */
+
+class PersonalGroupNav extends Widget
+{
+    var $action = null;
+
+    /**
+     * Construction
+     *
+     * @param Action $action current action, used for output
+     */
+
+    function __construct($action=null)
+    {
+        parent::__construct($action);
+        $this->action = $action;
+    }
+
+    /**
+     * Show the menu
+     *
+     * @return void
+     */
+
+    function show()
+    {
+        $user = null;
+       
+       // FIXME: we should probably pass this in
+       
+        $action = $this->action->trimmed('action');
+        $nickname = $this->action->trimmed('nickname');
+
+        if ($nickname) {
+            $user = User::staticGet('nickname', $nickname);
+            $user_profile = $user->getProfile();
+        } else {
+            $user_profile = false;
+        }
+
+        $this->out->elementStart('ul', array('id' => 'nav_views'));
+
+        $this->out->menuItem(common_local_url('all', array('nickname' =>
+                                                       $nickname)),
+                         _('Personal'),
+                         sprintf(_('%s and friends'), (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
+                         $action == 'all');
+        $this->out->menuItem(common_local_url('replies', array('nickname' =>
+                                                              $nickname)),
+                         _('Replies'),
+                         sprintf(_('Replies to %s'), (($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname)),
+                         $action == 'replies');
+        $this->out->menuItem(common_local_url('showstream', array('nickname' =>
+                                                              $nickname)),
+                         _('Profile'),
+                         ($user_profile && $user_profile->fullname) ? $user_profile->fullname : $nickname,
+                         $action == 'showstream');
+        $this->out->menuItem(common_local_url('showfavorites', array('nickname' =>
+                                                              $nickname)),
+                         _('Favorites'),
+                         sprintf(_('%s\'s favorite notices'), ($user_profile) ? $user_profile->getBestName() : _('User')),
+                         $action == 'showfavorites');
+
+        $cur = common_current_user();
+
+        if ($cur && $cur->id == $user->id) {
+
+            $this->out->menuItem(common_local_url('inbox', array('nickname' =>
+                                                                     $nickname)),
+                             _('Inbox'),
+                             _('Your incoming messages'),
+                             $action == 'inbox');
+            $this->out->menuItem(common_local_url('outbox', array('nickname' =>
+                                                                     $nickname)),
+                             _('Outbox'),
+                             _('Your sent messages'),
+                             $action == 'outbox');
+        }
+
+        $this->out->elementEnd('ul');
+    }
+}