| 
									
										
										
										
											2010-11-15 14:15:41 -08:00
										 |  |  | <?php | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  |  * StatusNet - the distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2010, StatusNet, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!defined('STATUSNET')) { | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Some UI extras for now... | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package ModPlusPlugin | 
					
						
							|  |  |  |  * @maintainer Brion Vibber <brion@status.net> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class ModPlusPlugin extends Plugin | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     function onPluginVersion(&$versions) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $versions[] = array('name' => 'ModPlus', | 
					
						
							| 
									
										
										
										
											2013-11-01 13:51:41 +01:00
										 |  |  |                             'version' => GNUSOCIAL_VERSION, | 
					
						
							| 
									
										
										
										
											2010-11-15 14:15:41 -08:00
										 |  |  |                             'author' => 'Brion Vibber', | 
					
						
							|  |  |  |                             'homepage' => 'http://status.net/wiki/Plugin:ModPlus', | 
					
						
							|  |  |  |                             'rawdescription' => | 
					
						
							| 
									
										
										
										
											2011-04-25 19:12:26 +02:00
										 |  |  |                             // TRANS: Plugin description.
 | 
					
						
							|  |  |  |                             _m('UI extension for profile moderation actions.')); | 
					
						
							| 
									
										
										
										
											2010-11-15 14:15:41 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-15 15:34:12 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Load JS at runtime if we're logged in. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param Action $action | 
					
						
							|  |  |  |      * @return boolean hook result | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function onEndShowScripts($action) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $user = common_current_user(); | 
					
						
							|  |  |  |         if ($user) { | 
					
						
							| 
									
										
										
										
											2011-02-03 11:28:39 -05:00
										 |  |  |             $action->script($this->path('modplus.js')); | 
					
						
							| 
									
										
										
										
											2010-11-15 15:34:12 -08:00
										 |  |  |         } | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-17 20:41:54 +02:00
										 |  |  |     public function onEndShowStylesheets(Action $action) { | 
					
						
							| 
									
										
										
										
											2011-02-03 11:28:39 -05:00
										 |  |  |         $action->cssLink($this->path('modplus.css')); | 
					
						
							| 
									
										
										
										
											2010-11-15 17:32:33 -08:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-15 15:34:12 -08:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2011-03-18 16:35:50 -07:00
										 |  |  |      * Add ModPlus-related paths to the router table | 
					
						
							| 
									
										
										
										
											2010-11-15 15:34:12 -08:00
										 |  |  |      * | 
					
						
							|  |  |  |      * Hook for RouterInitialized event. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param Net_URL_Mapper $m URL mapper | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean hook return | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function onStartInitializeRouter($m) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $m->connect('user/remote/:id', | 
					
						
							|  |  |  |                 array('action' => 'remoteprofile'), | 
					
						
							|  |  |  |                 array('id' => '[\d]+')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-15 17:32:33 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-18 16:35:50 -07:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Add per-profile info popup menu for author on notice lists. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param NoticeListItem $item | 
					
						
							|  |  |  |      * @return boolean hook value | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-06-21 21:01:17 +02:00
										 |  |  |     function onStartShowNoticeItem(NoticeListItem $item) | 
					
						
							| 
									
										
										
										
											2010-11-15 17:32:33 -08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-03-18 16:35:50 -07:00
										 |  |  |         $this->showProfileOptions($item->out, $item->profile); | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Add per-profile info popup menu on profile lists. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param ProfileListItem $item | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function onStartProfileListItemProfile($item) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->showProfileOptions($item->out, $item->profile); | 
					
						
							|  |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Build common remote-profile options structure. | 
					
						
							|  |  |  |      * Currently only adds output for remote profiles, nothing for local users. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param HTMLOutputter $out | 
					
						
							| 
									
										
										
										
											2014-06-21 21:01:17 +02:00
										 |  |  |      * @param Profile $profile | 
					
						
							| 
									
										
										
										
											2011-03-18 16:35:50 -07:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-06-21 21:01:17 +02:00
										 |  |  |     protected function showProfileOptions(HTMLOutputter $out, Profile $profile) | 
					
						
							| 
									
										
										
										
											2011-03-18 16:35:50 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-06-21 21:01:17 +02:00
										 |  |  |         if (!$profile->isLocal()) { | 
					
						
							| 
									
										
										
										
											2010-11-15 17:32:33 -08:00
										 |  |  |             $target = common_local_url('remoteprofile', array('id' => $profile->id)); | 
					
						
							| 
									
										
										
										
											2011-04-25 19:12:26 +02:00
										 |  |  |             // TRANS: Label for access to remote profile options.
 | 
					
						
							| 
									
										
										
										
											2010-11-15 17:32:33 -08:00
										 |  |  |             $label = _m('Remote profile options...'); | 
					
						
							| 
									
										
										
										
											2011-03-18 16:35:50 -07:00
										 |  |  |             $out->elementStart('div', 'remote-profile-options'); | 
					
						
							|  |  |  |             $out->element('a', array('href' => $target), $label); | 
					
						
							|  |  |  |             $out->elementEnd('div'); | 
					
						
							| 
									
										
										
										
											2010-11-15 17:32:33 -08:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-15 14:15:41 -08:00
										 |  |  | } |