forked from GNUsocial/gnu-social
Merge branch '0.9.x' into twitstream
This commit is contained in:
commit
905d621b6f
@ -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,21 +63,24 @@ 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);
|
||||||
if ($this->page == 1) {
|
} else {
|
||||||
return $base;
|
// 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 {
|
} else {
|
||||||
return sprintf(_('%1$s, page %2$d'),
|
if ($this->page == 1) {
|
||||||
$base,
|
return $base;
|
||||||
$this->page);
|
} 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'),
|
||||||
|
$base,
|
||||||
|
$this->page);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,10 +336,11 @@ 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'))
|
||||||
window.open(url,
|
.bind('click', function() {
|
||||||
|
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');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user