forked from GNUsocial/gnu-social
		
	Merge branch '0.9.x' into twitstream
This commit is contained in:
		| @@ -151,7 +151,7 @@ class NewgroupAction extends Action | |||||||
|             // TRANS: %d is the maximum number of allowed characters. |             // TRANS: %d is the maximum number of allowed characters. | ||||||
|             $this->showForm(sprintf(_m('Description is too long (maximum %d character).', |             $this->showForm(sprintf(_m('Description is too long (maximum %d character).', | ||||||
|                                        'Description is too long (maximum %d characters).', |                                        'Description is too long (maximum %d characters).', | ||||||
|                                        User_group::maxDescription(), |                                        User_group::maxDescription()), | ||||||
|                                     User_group::maxDescription())); |                                     User_group::maxDescription())); | ||||||
|             return; |             return; | ||||||
|         } else if (!is_null($location) && mb_strlen($location) > 255) { |         } else if (!is_null($location) && mb_strlen($location) > 255) { | ||||||
|   | |||||||
| @@ -63,23 +63,26 @@ class ShowstreamAction extends ProfileAction | |||||||
|  |  | ||||||
|     function title() |     function title() | ||||||
|     { |     { | ||||||
|         if (!empty($this->profile->fullname)) { |         $base = $this->profile->getFancyName(); | ||||||
|             $base = $this->profile->fullname . ' (' . $this->user->nickname . ') '; |  | ||||||
|         } else { |  | ||||||
|             $base = $this->user->nickname; |  | ||||||
|         } |  | ||||||
|         if (!empty($this->tag)) { |         if (!empty($this->tag)) { | ||||||
|             $base .= sprintf(_(' tagged %s'), $this->tag); |             if ($this->page == 1) { | ||||||
|  |                 // TRANS: Page title showing tagged notices in one user's stream. Param 1 is the username, 2 is the hash tag. | ||||||
|  |                 return sprintf(_('%1$s tagged %2$s'), $base, $this->tag); | ||||||
|  |             } else { | ||||||
|  |                 // TRANS: Page title showing tagged notices in one user's stream. Param 1 is the username, 2 is the hash tag, 3 is the page number. | ||||||
|  |                 return sprintf(_('%1$s tagged %2$s, page %3$d'), $base, $this->tag, $this->page); | ||||||
|             } |             } | ||||||
|  |         } else { | ||||||
|             if ($this->page == 1) { |             if ($this->page == 1) { | ||||||
|                 return $base; |                 return $base; | ||||||
|             } else { |             } else { | ||||||
|  |                 // TRANS: Extended page title showing tagged notices in one user's stream. Param 1 is the username, param 2 is the page number. | ||||||
|                 return sprintf(_('%1$s, page %2$d'), |                 return sprintf(_('%1$s, page %2$d'), | ||||||
|                                $base, |                                $base, | ||||||
|                                $this->page); |                                $this->page); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     function handle($args) |     function handle($args) | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -141,11 +141,32 @@ class Profile extends Memcached_DataObject | |||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Gets either the full name (if filled) or the nickname. | ||||||
|  |      * | ||||||
|  |      * @return string | ||||||
|  |      */ | ||||||
|     function getBestName() |     function getBestName() | ||||||
|     { |     { | ||||||
|         return ($this->fullname) ? $this->fullname : $this->nickname; |         return ($this->fullname) ? $this->fullname : $this->nickname; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Gets the full name (if filled) with nickname as a parenthetical, or the nickname alone | ||||||
|  |      * if no fullname is provided. | ||||||
|  |      * | ||||||
|  |      * @return string | ||||||
|  |      */ | ||||||
|  |     function getFancyName() | ||||||
|  |     { | ||||||
|  |         if ($this->fullname) { | ||||||
|  |             // TRANS: Full name of a profile or group followed by nickname in parens | ||||||
|  |             return sprintf(_('%1$s (%2$s)'), $this->fullname, $this->nickname); | ||||||
|  |         } else { | ||||||
|  |             return $this->nickname; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the most recent notice posted by this user, if any. |      * Get the most recent notice posted by this user, if any. | ||||||
|      * |      * | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								js/util.js
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								js/util.js
									
									
									
									
									
								
							| @@ -56,6 +56,15 @@ var SN = { // StatusNet | |||||||
|             NoticeDataGeoCookie: 'NoticeDataGeo', |             NoticeDataGeoCookie: 'NoticeDataGeo', | ||||||
|             NoticeDataGeoSelected: 'notice_data-geo_selected', |             NoticeDataGeoSelected: 'notice_data-geo_selected', | ||||||
|             StatusNetInstance:'StatusNetInstance' |             StatusNetInstance:'StatusNetInstance' | ||||||
|  |         }, | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     messages: {}, | ||||||
|  |     msg: function(key) { | ||||||
|  |         if (typeof SN.messages[key] == "undefined") { | ||||||
|  |             return '[' + key + ']'; | ||||||
|  |         } else { | ||||||
|  |             return SN.messages[key]; | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
| @@ -416,7 +425,7 @@ var SN = { // StatusNet | |||||||
|                     }); |                     }); | ||||||
|  |  | ||||||
|                     return false; |                     return false; | ||||||
|                 }); |                 }).attr('title', SN.msg('showmore_tooltip')); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 $.fn.jOverlay.options = { |                 $.fn.jOverlay.options = { | ||||||
|   | |||||||
| @@ -283,6 +283,7 @@ class Action extends HTMLOutputter // lawsuit | |||||||
|             if (Event::handle('StartShowStatusNetScripts', array($this)) && |             if (Event::handle('StartShowStatusNetScripts', array($this)) && | ||||||
|                 Event::handle('StartShowLaconicaScripts', array($this))) { |                 Event::handle('StartShowLaconicaScripts', array($this))) { | ||||||
|                 $this->script('util.js'); |                 $this->script('util.js'); | ||||||
|  |                 $this->showScriptMessages(); | ||||||
|                 // Frame-busting code to avoid clickjacking attacks. |                 // Frame-busting code to avoid clickjacking attacks. | ||||||
|                 $this->inlineScript('if (window.top !== window.self) { window.top.location.href = window.self.location.href; }'); |                 $this->inlineScript('if (window.top !== window.self) { window.top.location.href = window.self.location.href; }'); | ||||||
|                 Event::handle('EndShowStatusNetScripts', array($this)); |                 Event::handle('EndShowStatusNetScripts', array($this)); | ||||||
| @@ -292,6 +293,54 @@ class Action extends HTMLOutputter // lawsuit | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Exports a map of localized text strings to JavaScript code. | ||||||
|  |      * | ||||||
|  |      * Plugins can add to what's exported by hooking the StartScriptMessages or EndScriptMessages | ||||||
|  |      * events and appending to the array. Try to avoid adding strings that won't be used, as | ||||||
|  |      * they'll be added to HTML output. | ||||||
|  |      */ | ||||||
|  |     function showScriptMessages() | ||||||
|  |     { | ||||||
|  |         $messages = array(); | ||||||
|  |         if (Event::handle('StartScriptMessages', array($this, &$messages))) { | ||||||
|  |             // Common messages needed for timeline views etc... | ||||||
|  |  | ||||||
|  |             // TRANS: Localized tooltip for '...' expansion button on overlong remote messages. | ||||||
|  |             $messages['showmore_tooltip'] = _m('TOOLTIP', 'Show more'); | ||||||
|  |  | ||||||
|  |             $messages = array_merge($messages, $this->getScriptMessages()); | ||||||
|  |         } | ||||||
|  |         Event::handle('EndScriptMessages', array($this, &$messages)); | ||||||
|  |         if ($messages) { | ||||||
|  |             $this->inlineScript('SN.messages=' . json_encode($messages)); | ||||||
|  |         } | ||||||
|  |         return $messages; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * If the action will need localizable text strings, export them here like so: | ||||||
|  |      * | ||||||
|  |      * return array('pool_deepend' => _('Deep end'), | ||||||
|  |      *              'pool_shallow' => _('Shallow end')); | ||||||
|  |      * | ||||||
|  |      * The exported map will be available via SN.msg() to JS code: | ||||||
|  |      * | ||||||
|  |      *   $('#pool').html('<div class="deepend"></div><div class="shallow"></div>'); | ||||||
|  |      *   $('#pool .deepend').text(SN.msg('pool_deepend')); | ||||||
|  |      *   $('#pool .shallow').text(SN.msg('pool_shallow')); | ||||||
|  |      * | ||||||
|  |      * Exports a map of localized text strings to JavaScript code. | ||||||
|  |      * | ||||||
|  |      * Plugins can add to what's exported on any action by hooking the StartScriptMessages or | ||||||
|  |      * EndScriptMessages events and appending to the array. Try to avoid adding strings that won't | ||||||
|  |      * be used, as they'll be added to HTML output. | ||||||
|  |      */ | ||||||
|  |     function getScriptMessages() | ||||||
|  |     { | ||||||
|  |         return array(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Show OpenSearch headers |      * Show OpenSearch headers | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -588,7 +588,8 @@ class Ostatus_profile extends Memcached_DataObject | |||||||
|                 // We mark up the attachment link specially for the HTML output |                 // We mark up the attachment link specially for the HTML output | ||||||
|                 // so we can fold-out the full version inline. |                 // so we can fold-out the full version inline. | ||||||
|  |  | ||||||
|                 // TRANS: Shown when a notice is longer than supported and/or when attachments are present. |                 // @fixme I18N this tooltip will be saved with the site's default language | ||||||
|  |                 // TRANS: Shown when a notice is longer than supported and/or when attachments are present. At runtime this will usually be replaced with localized text from StatusNet core messages. | ||||||
|                 $showMoreText = _m('Show more'); |                 $showMoreText = _m('Show more'); | ||||||
|                 $attachUrl = common_local_url('attachment', |                 $attachUrl = common_local_url('attachment', | ||||||
|                                               array('attachment' => $attachment->id)); |                                               array('attachment' => $attachment->id)); | ||||||
|   | |||||||
| @@ -5,6 +5,6 @@ | |||||||
| * Pause ~ retain up to 50-100 most recent notices | * Pause ~ retain up to 50-100 most recent notices | ||||||
| * Add geo data | * Add geo data | ||||||
| * Make it work for Conversation page (perhaps a little tricky) | * Make it work for Conversation page (perhaps a little tricky) | ||||||
| * IE is updating the counter in document title all the time (Not sure if this is still an issue) | * IE is updating the counter in document title all the time (Not sure if this | ||||||
|  |   is still an issue) | ||||||
| * Reconsider the timestamp approach | * Reconsider the timestamp approach | ||||||
|  |  | ||||||
|   | |||||||
| @@ -43,7 +43,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { | |||||||
|  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 |  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | ||||||
|  * @link     http://status.net/ |  * @link     http://status.net/ | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| class RealtimePlugin extends Plugin | class RealtimePlugin extends Plugin | ||||||
| { | { | ||||||
|     protected $replyurl = null; |     protected $replyurl = null; | ||||||
| @@ -326,6 +325,32 @@ class RealtimePlugin extends Plugin | |||||||
|         return array('plugins/Realtime/realtimeupdate.js'); |         return array('plugins/Realtime/realtimeupdate.js'); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Export any i18n messages that need to be loaded at runtime... | ||||||
|  |      * | ||||||
|  |      * @param Action $action | ||||||
|  |      * @param array $messages | ||||||
|  |      * | ||||||
|  |      * @return boolean hook return value | ||||||
|  |      */ | ||||||
|  |     function onEndScriptMessages($action, &$messages) | ||||||
|  |     { | ||||||
|  |         // TRANS: Text label for realtime view "play" button, usually replaced by an icon. | ||||||
|  |         $messages['realtime_play'] = _m('BUTTON', 'Play'); | ||||||
|  |         // TRANS: Tooltip for realtime view "play" button. | ||||||
|  |         $messages['realtime_play_tooltip'] = _m('TOOLTIP', 'Play'); | ||||||
|  |         // TRANS: Text label for realtime view "pause" button | ||||||
|  |         $messages['realtime_pause'] = _m('BUTTON', 'Pause'); | ||||||
|  |         // TRANS: Tooltip for realtime view "pause" button | ||||||
|  |         $messages['realtime_pause_tooltip'] = _m('TOOLTIP', 'Pause'); | ||||||
|  |         // TRANS: Text label for realtime view "popup" button, usually replaced by an icon. | ||||||
|  |         $messages['realtime_popup'] = _m('BUTTON', 'Pop up'); | ||||||
|  |         // TRANS: Tooltip for realtime view "popup" button. | ||||||
|  |         $messages['realtime_popup_tooltip'] = _m('TOOLTIP', 'Pop up in a window'); | ||||||
|  |  | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     function _updateInitialize($timeline, $user_id) |     function _updateInitialize($timeline, $user_id) | ||||||
|     { |     { | ||||||
|         return "RealtimeUpdate.init($user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->repeaturl\", \"$this->deleteurl\"); "; |         return "RealtimeUpdate.init($user_id, \"$this->replyurl\", \"$this->favorurl\", \"$this->repeaturl\", \"$this->deleteurl\"); "; | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								plugins/Realtime/locale/Realtime.pot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								plugins/Realtime/locale/Realtime.pot
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | |||||||
|  | # SOME DESCRIPTIVE TITLE. | ||||||
|  | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||||||
|  | # This file is distributed under the same license as the PACKAGE package. | ||||||
|  | # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||||||
|  | # | ||||||
|  | #, fuzzy | ||||||
|  | msgid "" | ||||||
|  | msgstr "" | ||||||
|  | "Project-Id-Version: PACKAGE VERSION\n" | ||||||
|  | "Report-Msgid-Bugs-To: \n" | ||||||
|  | "POT-Creation-Date: 2010-11-02 19:46+0000\n" | ||||||
|  | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||||||
|  | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||||||
|  | "Language-Team: LANGUAGE <LL@li.org>\n" | ||||||
|  | "MIME-Version: 1.0\n" | ||||||
|  | "Content-Type: text/plain; charset=CHARSET\n" | ||||||
|  | "Content-Transfer-Encoding: 8bit\n" | ||||||
|  |  | ||||||
|  | #. TRANS: Text label for realtime view "play" button, usually replaced by an icon. | ||||||
|  | #: RealtimePlugin.php:339 | ||||||
|  | msgctxt "BUTTON" | ||||||
|  | msgid "Play" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #. TRANS: Tooltip for realtime view "play" button. | ||||||
|  | #: RealtimePlugin.php:341 | ||||||
|  | msgctxt "TOOLTIP" | ||||||
|  | msgid "Play" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #. TRANS: Text label for realtime view "pause" button | ||||||
|  | #: RealtimePlugin.php:343 | ||||||
|  | msgctxt "BUTTON" | ||||||
|  | msgid "Pause" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #. TRANS: Tooltip for realtime view "pause" button | ||||||
|  | #: RealtimePlugin.php:345 | ||||||
|  | msgctxt "TOOLTIP" | ||||||
|  | msgid "Pause" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #. TRANS: Text label for realtime view "popup" button, usually replaced by an icon. | ||||||
|  | #: RealtimePlugin.php:347 | ||||||
|  | msgctxt "BUTTON" | ||||||
|  | msgid "Pop up" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
|  | #. TRANS: Tooltip for realtime view "popup" button. | ||||||
|  | #: RealtimePlugin.php:349 | ||||||
|  | msgctxt "TOOLTIP" | ||||||
|  | msgid "Pop up in a window" | ||||||
|  | msgstr "" | ||||||
| @@ -35,7 +35,6 @@ width:70%; | |||||||
| margin-left:1%; | margin-left:1%; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| #notices_primary { | #notices_primary { | ||||||
| position:relative; | position:relative; | ||||||
| } | } | ||||||
| @@ -75,4 +74,3 @@ line-height:1.2; | |||||||
| #showstream #notices_primary { | #showstream #notices_primary { | ||||||
| margin-top: 18px; | margin-top: 18px; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -261,9 +261,10 @@ RealtimeUpdate = { | |||||||
|         RealtimeUpdate.addNoticesHover(); |         RealtimeUpdate.addNoticesHover(); | ||||||
|  |  | ||||||
|         $('#realtime_playpause').remove(); |         $('#realtime_playpause').remove(); | ||||||
|         $('#realtime_actions').prepend('<li id="realtime_playpause"><button id="realtime_pause" class="pause" title="Pause">Pause</button></li>'); |         $('#realtime_actions').prepend('<li id="realtime_playpause"><button id="realtime_pause" class="pause"></button></li>'); | ||||||
|  |         $('#realtime_pause').text(SN.msg('realtime_pause')) | ||||||
|         $('#realtime_pause').bind('click', function() { |                             .attr('title', SN.msg('realtime_pause_tooltip')) | ||||||
|  |                             .bind('click', function() { | ||||||
|             RealtimeUpdate.removeNoticesHover(); |             RealtimeUpdate.removeNoticesHover(); | ||||||
|             RealtimeUpdate.showPlay(); |             RealtimeUpdate.showPlay(); | ||||||
|             return false; |             return false; | ||||||
| @@ -274,9 +275,10 @@ RealtimeUpdate = { | |||||||
|      { |      { | ||||||
|         RealtimeUpdate.setPause(true); |         RealtimeUpdate.setPause(true); | ||||||
|         $('#realtime_playpause').remove(); |         $('#realtime_playpause').remove(); | ||||||
|         $('#realtime_actions').prepend('<li id="realtime_playpause"><span id="queued_counter"></span> <button id="realtime_play" class="play" title="Play">Play</button></li>'); |         $('#realtime_actions').prepend('<li id="realtime_playpause"><span id="queued_counter"></span> <button id="realtime_play" class="play"></button></li>'); | ||||||
|  |         $('#realtime_play').text(SN.msg('realtime_play')) | ||||||
|         $('#realtime_play').bind('click', function() { |                            .attr('title', SN.msg('realtime_play_tooltip')) | ||||||
|  |                            .bind('click', function() { | ||||||
|             RealtimeUpdate.showPause(); |             RealtimeUpdate.showPause(); | ||||||
|             return false; |             return false; | ||||||
|         }); |         }); | ||||||
| @@ -334,9 +336,10 @@ RealtimeUpdate = { | |||||||
|  |  | ||||||
|      initAddPopup: function(url, timeline, path) |      initAddPopup: function(url, timeline, path) | ||||||
|      { |      { | ||||||
|          $('#realtime_timeline').append('<button id="realtime_popup" title="Pop up in a window">Pop up</button>'); |          $('#realtime_timeline').append('<button id="realtime_popup"></button>'); | ||||||
|  |          $('#realtime_popup').text(SN.msg('realtime_popup')) | ||||||
|          $('#realtime_popup').bind('click', function() { |                              .attr('title', SN.msg('realtime_popup_tooltip')) | ||||||
|  |                              .bind('click', function() { | ||||||
|                 window.open(url, |                 window.open(url, | ||||||
|                          '', |                          '', | ||||||
|                          'toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550'); |                          'toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550'); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user