Added tagsub to the left-hand menu
This commit is contained in:
		| @@ -120,6 +120,7 @@ class TagSub extends Managed_DataObject | ||||
|         $ts->profile_id = $profile->id; | ||||
|         $ts->created = common_sql_now(); | ||||
|         $ts->insert(); | ||||
|         self::blow('tagsub:by_profile:%d', $profile->id); | ||||
|         return $ts; | ||||
|     } | ||||
|  | ||||
| @@ -135,6 +136,32 @@ class TagSub extends Managed_DataObject | ||||
|                                     'profile_id' => $profile->id)); | ||||
|         if ($ts) { | ||||
|             $ts->delete(); | ||||
|             self::blow('tagsub:by_profile:%d', $profile->id); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     static function forProfile(Profile $profile) | ||||
|     { | ||||
|         $tags = array(); | ||||
|  | ||||
|         $keypart = sprintf('tagsub:by_profile:%d', $profile->id); | ||||
|         $tagstring = self::cacheGet($keypart); | ||||
|          | ||||
|         if ($tagstring !== false) { | ||||
|             $tags = explode(',', $tagstring); | ||||
|         } else { | ||||
|             $tagsub = new TagSub(); | ||||
|             $tagsub->profile_id = $profile->id; | ||||
|  | ||||
|             if ($tagsub->find()) { | ||||
|                 while ($tagsub->fetch()) { | ||||
|                     $tags[] = $tagsub->tag; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             self::cacheSet($keypart, implode(',', $tags)); | ||||
|         } | ||||
|  | ||||
|         return $tags; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -80,6 +80,7 @@ class TagSubPlugin extends Plugin | ||||
|         case 'TagunsubAction': | ||||
|         case 'TagsubsAction': | ||||
|         case 'TagSubForm': | ||||
|         case 'TagSubMenu': | ||||
|         case 'TagUnsubForm': | ||||
|             include_once $dir.'/'.strtolower($cls).'.php'; | ||||
|             return false; | ||||
| @@ -239,4 +240,28 @@ class TagSubPlugin extends Plugin | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     function onEndDefaultLocalNav($menu, $user) | ||||
|     { | ||||
|         $user = common_current_user(); | ||||
|  | ||||
|         $tags = TagSub::forProfile($user->getProfile()); | ||||
|  | ||||
|         if (!empty($tags)) { | ||||
|             $tagSubMenu = new TagSubMenu($menu->out, $user, $tags); | ||||
|             $menu->submenu(_m('Tags'), $tagSubMenu); | ||||
|         } | ||||
|  | ||||
|         foreach ($tags as $tag) { | ||||
|                 $menu->out->menuItem(common_local_url('tag', | ||||
|                                                       array('tag' => $tag)), | ||||
|                                      sprintf('#%s', $tag), | ||||
|                                      sprintf(_('Notices tagged with %s'), $tag), | ||||
|                                      $menu->actionName == 'tag' && $menu->action->arg('tag') == $tag, | ||||
|                                      'nav_streams_tag_'.$tag); | ||||
|         } | ||||
|  | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
							
								
								
									
										76
									
								
								plugins/TagSub/tagsubmenu.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								plugins/TagSub/tagsubmenu.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| <?php | ||||
| /** | ||||
|  * StatusNet - the distributed open-source microblogging tool | ||||
|  * Copyright (C) 2011, StatusNet, Inc. | ||||
|  * | ||||
|  * Menu to show tags you're subscribed to | ||||
|  *  | ||||
|  * PHP version 5 | ||||
|  * | ||||
|  * 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  Menu | ||||
|  * @package   StatusNet | ||||
|  * @author    Evan Prodromou <evan@status.net> | ||||
|  * @copyright 2011 StatusNet, Inc. | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| if (!defined('STATUSNET')) { | ||||
|     // This check helps protect against security problems; | ||||
|     // your code file can't be executed directly from the web. | ||||
|     exit(1); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Class comment | ||||
|  * | ||||
|  * @category  General | ||||
|  * @package   StatusNet | ||||
|  * @author    Evan Prodromou <evan@status.net> | ||||
|  * @copyright 2011 StatusNet, Inc. | ||||
|  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 | ||||
|  * @link      http://status.net/ | ||||
|  */ | ||||
|  | ||||
| class TagSubMenu extends Menu | ||||
| { | ||||
|     protected $user; | ||||
|     protected $tags; | ||||
|  | ||||
|     function __construct($out, $user, $tags) | ||||
|     { | ||||
|         parent::__construct($out); | ||||
|         $this->user = $user; | ||||
|         $this->tags = $tags; | ||||
|     } | ||||
|  | ||||
|     function show() | ||||
|     { | ||||
|         $this->out->elementStart('ul', array('class' => 'nav')); | ||||
|  | ||||
|         foreach ($tags as $tag) { | ||||
|                 $this->out->menuItem(common_local_url('tag', | ||||
|                                                       array('tag' => $tag)), | ||||
|                                      sprintf('#%s', $tag), | ||||
|                                      sprintf(_('Notices tagged with %s'), $tag), | ||||
|                                      $this->actionName == 'tag' && $this->action->arg('tag') == $tag, | ||||
|                                      'nav_streams_tag_'.$tag); | ||||
|         } | ||||
|  | ||||
|         $this->out->elementEnd('ul'); | ||||
|     } | ||||
|      | ||||
| } | ||||
		Reference in New Issue
	
	Block a user