remote profiles open locally, and "find someone" user search/remote follow input field
This commit is contained in:
parent
70ab099e2f
commit
a37a4cb9f9
|
@ -160,6 +160,10 @@ class QvitterPlugin extends Plugin {
|
||||||
// route/reroute urls
|
// route/reroute urls
|
||||||
public function onRouterInitialized($m)
|
public function onRouterInitialized($m)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$m->connect('api/qvitter/statuses/user_timeline.:format',
|
||||||
|
array('action' => 'ApiQvitterTimelineUser',
|
||||||
|
'format' => '(xml|json|rss|atom|as)'));
|
||||||
$m->connect(':nickname/mutes',
|
$m->connect(':nickname/mutes',
|
||||||
array('action' => 'qvitter',
|
array('action' => 'qvitter',
|
||||||
'nickname' => Nickname::INPUT_FMT));
|
'nickname' => Nickname::INPUT_FMT));
|
||||||
|
@ -371,6 +375,10 @@ class QvitterPlugin extends Plugin {
|
||||||
array('action' => 'shownotice'),
|
array('action' => 'shownotice'),
|
||||||
array('notice' => '[0-9]+'),
|
array('notice' => '[0-9]+'),
|
||||||
'qvitter');
|
'qvitter');
|
||||||
|
URLMapperOverwrite::overwrite_variable($m, 'user/:id',
|
||||||
|
array('action' => 'userbyid'),
|
||||||
|
array('id' => '[0-9]+'),
|
||||||
|
'qvitter');
|
||||||
URLMapperOverwrite::overwrite_variable($m, 'conversation/:id',
|
URLMapperOverwrite::overwrite_variable($m, 'conversation/:id',
|
||||||
array('action' => 'conversation'),
|
array('action' => 'conversation'),
|
||||||
array('id' => '[0-9]+'),
|
array('id' => '[0-9]+'),
|
||||||
|
@ -397,6 +405,7 @@ class QvitterPlugin extends Plugin {
|
||||||
case 'api/favorites.json':
|
case 'api/favorites.json':
|
||||||
case 'api/statuses/friends_timeline.json':
|
case 'api/statuses/friends_timeline.json':
|
||||||
case 'api/statuses/user_timeline.json':
|
case 'api/statuses/user_timeline.json':
|
||||||
|
case 'api/qvitter/statuses/user_timeline.json':
|
||||||
|
|
||||||
// add logged in user's user array
|
// add logged in user's user array
|
||||||
if (common_logged_in() && !isset($_GET['screen_name']) && !isset($_GET['id'])) {
|
if (common_logged_in() && !isset($_GET['screen_name']) && !isset($_GET['id'])) {
|
||||||
|
@ -409,13 +418,17 @@ class QvitterPlugin extends Plugin {
|
||||||
|
|
||||||
if(isset($_GET['screen_name'])) {
|
if(isset($_GET['screen_name'])) {
|
||||||
$user = User::getKV('nickname', $_GET['screen_name']);
|
$user = User::getKV('nickname', $_GET['screen_name']);
|
||||||
|
if($user instanceof User) {
|
||||||
|
$profile = $user->getProfile();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elseif(isset($_GET['id'])) {
|
elseif(isset($_GET['id'])) {
|
||||||
|
$profile = Profile::getKV('id', $_GET['id']);
|
||||||
$user = User::getKV('id', $_GET['id']);
|
$user = User::getKV('id', $_GET['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($user instanceof User) {
|
if(isset($profile) && $profile instanceof Profile) {
|
||||||
header('Qvitter-User-Array: '.json_encode($this->qvitterTwitterUserArray($user->getProfile())));
|
header('Qvitter-User-Array: '.json_encode($this->qvitterTwitterUserArray($profile)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -52,8 +52,17 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
|
||||||
$nickname = urldecode($this->arg('nickname'));
|
$nickname = urldecode($this->arg('nickname'));
|
||||||
|
|
||||||
$this->profile = new stdClass();
|
$this->profile = new stdClass();
|
||||||
$this->profile->external = null;
|
$this->profile->external = null;
|
||||||
$this->profile->local = null;
|
$this->profile->local = null;
|
||||||
|
$this->profile->ostatus = null;
|
||||||
|
|
||||||
|
// the user might not exist in our db yet, try to use the Ostatus plugin
|
||||||
|
// to get it in there
|
||||||
|
$validate = new Validate();
|
||||||
|
if ($validate->uri($profileurl)) {
|
||||||
|
$ostatus_profile = Ostatus_profile::ensureProfileURL($profileurl);
|
||||||
|
$local_profile = Profile::getKV('id',$ostatus_profile->profile_id);
|
||||||
|
}
|
||||||
|
|
||||||
// we can get urls of two types of urls (1) ://instance/nickname
|
// we can get urls of two types of urls (1) ://instance/nickname
|
||||||
// (2) ://instance/user/1234
|
// (2) ://instance/user/1234
|
||||||
|
@ -97,7 +106,9 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
|
||||||
}
|
}
|
||||||
|
|
||||||
// case (1)
|
// case (1)
|
||||||
$local_profile = Profile::getKV('profileurl',$profileurl);
|
if(!isset($local_profile)) {
|
||||||
|
$local_profile = Profile::getKV('profileurl',$profileurl);
|
||||||
|
}
|
||||||
|
|
||||||
if($local_profile instanceof Profile) {
|
if($local_profile instanceof Profile) {
|
||||||
|
|
||||||
|
@ -138,13 +149,9 @@ class ApiExternalUserShowAction extends ApiPrivateAuthAction
|
||||||
{
|
{
|
||||||
parent::handle();
|
parent::handle();
|
||||||
|
|
||||||
if(is_null($this->profile->local) && is_null($this->profile->external)) {
|
$this->initDocument('json');
|
||||||
$this->clientError(_('List not found.'), 404);
|
$this->showJsonObjects($this->profile);
|
||||||
} else {
|
$this->endDocument('json');
|
||||||
$this->initDocument('json');
|
|
||||||
$this->showJsonObjects($this->profile);
|
|
||||||
$this->endDocument('json');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
181
actions/apiqvittertimelineuser.php
Normal file
181
actions/apiqvittertimelineuser.php
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
<?php
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· Show timelines for both local and remote users ·
|
||||||
|
· ·
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· Q V I T T E R ·
|
||||||
|
· ·
|
||||||
|
· https://git.gnu.io/h2p/Qvitter ·
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· <o) ·
|
||||||
|
· /_//// ·
|
||||||
|
· (____/ ·
|
||||||
|
· (o< ·
|
||||||
|
· o> \\\\_\ ·
|
||||||
|
· \\) \____) ·
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· Qvitter 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 three of the License or (at ·
|
||||||
|
· your option) any later version. ·
|
||||||
|
· ·
|
||||||
|
· Qvitter is distributed in hope that it will be useful but WITHOUT ANY ·
|
||||||
|
· WARRANTY; without even the implied warranty of MERCHANTABILTY 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 Qvitter. If not, see <http://www.gnu.org/licenses/>. ·
|
||||||
|
· ·
|
||||||
|
· Contact h@nnesmannerhe.im if you have any questions. ·
|
||||||
|
· ·
|
||||||
|
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
if (!defined('GNUSOCIAL')) { exit(1); }
|
||||||
|
|
||||||
|
class ApiQvitterTimelineUserAction extends ApiBareAuthAction
|
||||||
|
{
|
||||||
|
var $notices = null;
|
||||||
|
|
||||||
|
var $next_id = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Take arguments for running
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST args
|
||||||
|
*
|
||||||
|
* @return boolean success flag
|
||||||
|
*/
|
||||||
|
protected function prepare(array $args=array())
|
||||||
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
$this->target = $this->getTargetProfile($this->arg('id'));
|
||||||
|
|
||||||
|
if (!($this->target instanceof Profile)) {
|
||||||
|
// TRANS: Client error displayed requesting most recent notices for a non-existing user.
|
||||||
|
$this->clientError(_('No such user.'), 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (!$this->target->isLocal()) {
|
||||||
|
// $this->serverError(_('Remote user timelines are not available here yet.'), 501);
|
||||||
|
// }
|
||||||
|
|
||||||
|
$this->notices = $this->getNotices();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the request
|
||||||
|
*
|
||||||
|
* Just show the notices
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function handle()
|
||||||
|
{
|
||||||
|
parent::handle();
|
||||||
|
|
||||||
|
$this->showTimeline();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the timeline of notices
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function showTimeline()
|
||||||
|
{
|
||||||
|
$this->showJsonTimeline($this->notices);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get notices
|
||||||
|
*
|
||||||
|
* @return array notices
|
||||||
|
*/
|
||||||
|
function getNotices()
|
||||||
|
{
|
||||||
|
$notices = array();
|
||||||
|
|
||||||
|
$notice = $this->target->getNotices(($this->page-1) * $this->count,
|
||||||
|
$this->count + 1,
|
||||||
|
$this->since_id,
|
||||||
|
$this->max_id,
|
||||||
|
$this->scoped);
|
||||||
|
|
||||||
|
while ($notice->fetch()) {
|
||||||
|
if (count($notices) < $this->count) {
|
||||||
|
$notices[] = clone($notice);
|
||||||
|
} else {
|
||||||
|
$this->next_id = $notice->id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $notices;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We expose AtomPub here, so non-GET/HEAD reqs must be read/write.
|
||||||
|
*
|
||||||
|
* @param array $args other arguments
|
||||||
|
*
|
||||||
|
* @return boolean true
|
||||||
|
*/
|
||||||
|
|
||||||
|
function isReadOnly($args)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When was this feed last modified?
|
||||||
|
*
|
||||||
|
* @return string datestamp of the latest notice in the stream
|
||||||
|
*/
|
||||||
|
function lastModified()
|
||||||
|
{
|
||||||
|
if (!empty($this->notices) && (count($this->notices) > 0)) {
|
||||||
|
return strtotime($this->notices[0]->created);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An entity tag for this stream
|
||||||
|
*
|
||||||
|
* Returns an Etag based on the action name, language, user ID, and
|
||||||
|
* timestamps of the first and last notice in the timeline
|
||||||
|
*
|
||||||
|
* @return string etag
|
||||||
|
*/
|
||||||
|
function etag()
|
||||||
|
{
|
||||||
|
if (!empty($this->notices) && (count($this->notices) > 0)) {
|
||||||
|
$last = count($this->notices) - 1;
|
||||||
|
|
||||||
|
return '"' . implode(
|
||||||
|
':',
|
||||||
|
array($this->arg('action'),
|
||||||
|
common_user_cache_hash($this->scoped),
|
||||||
|
common_language(),
|
||||||
|
$this->target->getID(),
|
||||||
|
strtotime($this->notices[0]->created),
|
||||||
|
strtotime($this->notices[$last]->created))
|
||||||
|
)
|
||||||
|
. '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -694,6 +694,7 @@ class QvitterAction extends ApiAction
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
<div class="menu-container" id="bookmark-container"></div>
|
<div class="menu-container" id="bookmark-container"></div>
|
||||||
|
<div id="find-someone"><input id="find-someone-input" placeholder="" data-tooltip=""/></div>
|
||||||
<div class="menu-container" id="history-container"></div>
|
<div class="menu-container" id="history-container"></div>
|
||||||
<div id="clear-history"></div>
|
<div id="clear-history"></div>
|
||||||
<div id="qvitter-notice"><?php print common_config('site', 'qvitternotice'); ?></div><?php
|
<div id="qvitter-notice"><?php print common_config('site', 'qvitternotice'); ?></div><?php
|
||||||
|
@ -817,7 +818,8 @@ class QvitterAction extends ApiAction
|
||||||
}
|
}
|
||||||
#user-footer-inner,
|
#user-footer-inner,
|
||||||
.inline-reply-queetbox,
|
.inline-reply-queetbox,
|
||||||
#popup-faq #faq-container p.indent {
|
#popup-faq #faq-container p.indent,
|
||||||
|
#find-someone {
|
||||||
background-color:/*LIGHTERBACKGROUNDCOLORSTART*/rgb(205,230,239)/*LIGHTERBACKGROUNDCOLOREND*/;
|
background-color:/*LIGHTERBACKGROUNDCOLORSTART*/rgb(205,230,239)/*LIGHTERBACKGROUNDCOLOREND*/;
|
||||||
}
|
}
|
||||||
#user-footer-inner,
|
#user-footer-inner,
|
||||||
|
@ -831,7 +833,8 @@ class QvitterAction extends ApiAction
|
||||||
.quoted-notice:hover,
|
.quoted-notice:hover,
|
||||||
.oembed-item:hover,
|
.oembed-item:hover,
|
||||||
.stream-item:hover:not(.expanded) .quoted-notice:hover,
|
.stream-item:hover:not(.expanded) .quoted-notice:hover,
|
||||||
.stream-item:hover:not(.expanded) .oembed-item:hover {
|
.stream-item:hover:not(.expanded) .oembed-item:hover,
|
||||||
|
#find-someone input:focus {
|
||||||
border-color:/*LIGHTERBORDERCOLORSTART*/rgb(155,206,224)/*LIGHTERBORDERCOLOREND*/;
|
border-color:/*LIGHTERBORDERCOLORSTART*/rgb(155,206,224)/*LIGHTERBORDERCOLOREND*/;
|
||||||
}
|
}
|
||||||
span.inline-reply-caret .caret-inner {
|
span.inline-reply-caret .caret-inner {
|
||||||
|
|
|
@ -1357,6 +1357,47 @@ body.rtl #footer-spinner-container {
|
||||||
top: 9px;
|
top: 9px;
|
||||||
width: 12px;
|
width: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#find-someone {
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
text-shadow: 0 1px 0 #FFFFFF;
|
||||||
|
background-clip: padding-box;
|
||||||
|
border-radius: 6px;
|
||||||
|
line-height: 16px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
overflow:hidden;
|
||||||
|
position: relative;
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-right: 12px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
padding-left: 12px;
|
||||||
|
background-color: #F9F9F9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#find-someone input {
|
||||||
|
padding: 6px 8px 5px 8px;
|
||||||
|
position: relative;
|
||||||
|
border-radius: 3px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
width: 248px;
|
||||||
|
font-size: 13px;
|
||||||
|
color:#333;
|
||||||
|
line-height: 18px;
|
||||||
|
background-color: #fff;
|
||||||
|
margin:0;
|
||||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) inset, 0 1px 0 rgba(255, 255, 255, 0.075);
|
||||||
|
outline-color: #aaa;
|
||||||
|
display: block;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#find-someone input[disabled="disabled"] {
|
||||||
|
background-color: #eee;
|
||||||
|
color:#aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#bookmark-container a:hover .chev-right {
|
#bookmark-container a:hover .chev-right {
|
||||||
background-position:-18px -508px;
|
background-position:-18px -508px;
|
||||||
}
|
}
|
||||||
|
@ -4096,6 +4137,27 @@ div.nav-session {
|
||||||
width: 588px;
|
width: 588px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.profile-card.local-user > .ostatus-link,
|
||||||
|
.profile-card.local-user .username .screen-name-with-server,
|
||||||
|
.profile-card.remote-user .username .screen-name,
|
||||||
|
.profile-card.remote-user ul.stats {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.profile-card .remote-user-info {
|
||||||
|
background-color: pink;
|
||||||
|
color: #333;
|
||||||
|
text-shadow: none;
|
||||||
|
border: 10px solid #fff;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.profile-card .remote-user-info a {
|
||||||
|
text-decoration: underline;
|
||||||
|
color:#333;
|
||||||
|
}
|
||||||
|
.hover-card .profile-card .remote-user-info {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
.hover-card .profile-card {
|
.hover-card .profile-card {
|
||||||
width:290px;
|
width:290px;
|
||||||
margin-bottom:0;
|
margin-bottom:0;
|
||||||
|
|
|
@ -394,6 +394,18 @@ function buildProfileCard(data) {
|
||||||
if(isUserMuted(data.id)) {
|
if(isUserMuted(data.id)) {
|
||||||
is_muted = ' user-muted';
|
is_muted = ' user-muted';
|
||||||
}
|
}
|
||||||
|
// local or remote user?
|
||||||
|
var local_or_remote = '';
|
||||||
|
var remote_user_info = '';
|
||||||
|
var serverUrl = guessInstanceUrlWithoutProtocolFromProfileUrlAndNickname(data.statusnet_profile_url, data.screen_name);
|
||||||
|
data.screenNameWithServer = '@' + data.screen_name + '@' + serverUrl;
|
||||||
|
if(data.is_local !== true) {
|
||||||
|
remote_user_info = '<div class="remote-user-info">' + window.sL.thisIsARemoteUser.replace('{remote-profile-url}',data.statusnet_profile_url) + '</div>'
|
||||||
|
local_or_remote = ' remote-user';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
local_or_remote = ' local-user';
|
||||||
|
}
|
||||||
|
|
||||||
var followButton = '';
|
var followButton = '';
|
||||||
|
|
||||||
|
@ -420,8 +432,9 @@ function buildProfileCard(data) {
|
||||||
|
|
||||||
// full card html
|
// full card html
|
||||||
var profileCardHtml = '\
|
var profileCardHtml = '\
|
||||||
<div class="profile-card' + is_me + logged_in + is_muted + '">\
|
<div class="profile-card' + is_me + logged_in + is_muted + local_or_remote + '">\
|
||||||
<script class="profile-json" type="application/json">' + JSON.stringify(data) + '</script>\
|
<script class="profile-json" type="application/json">' + JSON.stringify(data) + '</script>\
|
||||||
|
<a href="' + data.statusnet_profile_url + '" class="ostatus-link" data-tooltip="' + window.sL.goToTheUsersRemoteProfile + '" donthijack></a>\
|
||||||
<div class="profile-header-inner' + is_silenced + is_sandboxed + '" style="' + coverPhotoHtml + '" data-user-id="' + data.id + '" data-screen-name="' + data.screen_name + '">\
|
<div class="profile-header-inner' + is_silenced + is_sandboxed + '" style="' + coverPhotoHtml + '" data-user-id="' + data.id + '" data-screen-name="' + data.screen_name + '">\
|
||||||
<div class="profile-header-inner-overlay"></div>\
|
<div class="profile-header-inner-overlay"></div>\
|
||||||
<a class="profile-picture" href="' + data.profile_image_url_original + '">\
|
<a class="profile-picture" href="' + data.profile_image_url_original + '">\
|
||||||
|
@ -432,6 +445,7 @@ function buildProfileCard(data) {
|
||||||
<span class="silenced-flag" data-tooltip="' + window.sL.silencedStreamDescription + '">' + window.sL.silenced + '</span>\
|
<span class="silenced-flag" data-tooltip="' + window.sL.silencedStreamDescription + '">' + window.sL.silenced + '</span>\
|
||||||
<span class="sandboxed-flag" data-tooltip="' + window.sL.sandboxedStreamDescription + '">' + window.sL.sandboxed + '</span>\
|
<span class="sandboxed-flag" data-tooltip="' + window.sL.sandboxedStreamDescription + '">' + window.sL.sandboxed + '</span>\
|
||||||
<h2 class="username">\
|
<h2 class="username">\
|
||||||
|
<span class="screen-name-with-server" data-user-id="' + data.id + '">' + data.screenNameWithServer + '</span>\
|
||||||
<span class="screen-name" data-user-id="' + data.id + '">@' + data.screen_name + '</span>\
|
<span class="screen-name" data-user-id="' + data.id + '">@' + data.screen_name + '</span>\
|
||||||
' + follows_you + '\
|
' + follows_you + '\
|
||||||
</h2>\
|
</h2>\
|
||||||
|
@ -446,6 +460,7 @@ function buildProfileCard(data) {
|
||||||
</div>\
|
</div>\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="profile-banner-footer">\
|
<div class="profile-banner-footer">\
|
||||||
|
' + remote_user_info + '\
|
||||||
<ul class="stats">\
|
<ul class="stats">\
|
||||||
<li class="tweet-num"><a href="' + data.statusnet_profile_url + '" class="tweet-stats">' + window.sL.notices + '<strong>' + data.statuses_count + '</strong></a></li>\
|
<li class="tweet-num"><a href="' + data.statusnet_profile_url + '" class="tweet-stats">' + window.sL.notices + '<strong>' + data.statuses_count + '</strong></a></li>\
|
||||||
<li class="following-num"><a href="' + data.statusnet_profile_url + '/subscriptions" class="following-stats">' + window.sL.following + '<strong>' + data.friends_count + '</strong></a></li>\
|
<li class="following-num"><a href="' + data.statusnet_profile_url + '/subscriptions" class="following-stats">' + window.sL.following + '<strong>' + data.friends_count + '</strong></a></li>\
|
||||||
|
@ -564,7 +579,7 @@ function buildExternalProfileCard(data) {
|
||||||
<span class="sandboxed-flag" data-tooltip="' + window.sL.sandboxedStreamDescription + '">' + window.sL.sandboxed + '</span>\
|
<span class="sandboxed-flag" data-tooltip="' + window.sL.sandboxedStreamDescription + '">' + window.sL.sandboxed + '</span>\
|
||||||
<h2 class="username">\
|
<h2 class="username">\
|
||||||
<span class="screen-name">' + data.screenNameWithServer + '</span>\
|
<span class="screen-name">' + data.screenNameWithServer + '</span>\
|
||||||
<span class="ostatus-link" data-tooltip="' + window.sL.goToTheUsersRemoteProfile + '">' + window.sL.goToTheUsersRemoteProfile + '</span>\
|
<span class="ostatus-link" data-tooltip="' + window.sL.goToTheUsersRemoteProfile + '" donthijack>' + window.sL.goToTheUsersRemoteProfile + '</span>\
|
||||||
' + follows_you + '\
|
' + follows_you + '\
|
||||||
</h2>\
|
</h2>\
|
||||||
</a>\
|
</a>\
|
||||||
|
@ -945,6 +960,13 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// local for local users requested by id, we want to go to the nickname-url instead
|
||||||
|
else if(streamObject.name == 'profile by id' && userArray && userArray.is_local === true) {
|
||||||
|
removeHistoryContainerItemByHref(window.siteInstanceURL + 'user/' + userArray.id);
|
||||||
|
setNewCurrentStream(pathToStreamRouter('/' + userArray.screen_name),true,false,actionOnSuccess);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// getting stream failed, and we don't have a fallback id
|
// getting stream failed, and we don't have a fallback id
|
||||||
else if(queet_data === false) {
|
else if(queet_data === false) {
|
||||||
|
|
||||||
|
@ -1017,6 +1039,19 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
|
||||||
// profile card from user array
|
// profile card from user array
|
||||||
if(userArray) {
|
if(userArray) {
|
||||||
addProfileCardToDOM(buildProfileCard(userArray));
|
addProfileCardToDOM(buildProfileCard(userArray));
|
||||||
|
|
||||||
|
// set remote users username in the browsing history container
|
||||||
|
// (because stream-router can't know username from the URL, that only have id:s)
|
||||||
|
if(userArray.is_local !== true) {
|
||||||
|
var serverUrl = guessInstanceUrlWithoutProtocolFromProfileUrlAndNickname(userArray.statusnet_profile_url, userArray.screen_name);
|
||||||
|
var screenNameWithServer = '@' + userArray.screen_name + '@' + serverUrl;
|
||||||
|
updateHistoryContainerItemByHref(window.siteInstanceURL + 'user/' + userArray.id, screenNameWithServer);
|
||||||
|
updateHistoryContainerItemByHref(userArray.statusnet_profile_url, screenNameWithServer);
|
||||||
|
}
|
||||||
|
// if we for some reason have visited a local user's profile by id, adjust the history container
|
||||||
|
else {
|
||||||
|
updateHistoryContainerItemByHref(window.siteInstanceURL + 'user/' + userArray.id, userArray.screen_name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// remove any trailing profile cards
|
// remove any trailing profile cards
|
||||||
else {
|
else {
|
||||||
|
@ -1781,7 +1816,7 @@ function addToFeed(feed, after, extraClasses) {
|
||||||
// external
|
// external
|
||||||
var ostatusHtml = '';
|
var ostatusHtml = '';
|
||||||
if(obj.from_profile.is_local === false) {
|
if(obj.from_profile.is_local === false) {
|
||||||
ostatusHtml = '<a target="_blank" data-tooltip="' + window.sL.goToOriginalNotice + '" class="ostatus-link" href="' + obj.from_profile.statusnet_profile_url + '"></a>';
|
ostatusHtml = '<a target="_blank" data-tooltip="' + window.sL.goToOriginalNotice + '" class="ostatus-link" href="' + obj.from_profile.statusnet_profile_url + '" donthijack></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if(obj.ntype == 'like') {
|
if(obj.ntype == 'like') {
|
||||||
|
@ -2027,7 +2062,7 @@ function buildUserStreamItemHtml(obj) {
|
||||||
// external
|
// external
|
||||||
var ostatusHtml = '';
|
var ostatusHtml = '';
|
||||||
if(obj.is_local === false) {
|
if(obj.is_local === false) {
|
||||||
ostatusHtml = '<a target="_blank" title="' + window.sL.goToTheUsersRemoteProfile + '" class="ostatus-link" href="' + obj.statusnet_profile_url + '"></a>';
|
ostatusHtml = '<a target="_blank" title="' + window.sL.goToTheUsersRemoteProfile + '" class="ostatus-link" href="' + obj.statusnet_profile_url + '" donthijack></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// rtl or not
|
// rtl or not
|
||||||
|
@ -2296,7 +2331,7 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
|
||||||
// external
|
// external
|
||||||
var ostatusHtml = '';
|
var ostatusHtml = '';
|
||||||
if(obj.user.is_local === false) {
|
if(obj.user.is_local === false) {
|
||||||
ostatusHtml = '<a target="_blank" data-tooltip="' + window.sL.goToOriginalNotice + '" class="ostatus-link" href="' + obj.external_url + '"></a>';
|
ostatusHtml = '<a target="_blank" data-tooltip="' + window.sL.goToOriginalNotice + '" class="ostatus-link" href="' + obj.external_url + '" donthijack></a>';
|
||||||
var qSource = '<a href="' + obj.external_url + '">' + getHost(obj.external_url) + '</a>';
|
var qSource = '<a href="' + obj.external_url + '">' + getHost(obj.external_url) + '</a>';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -893,6 +893,7 @@ function cacheSyntaxHighlightingGroups() {
|
||||||
window.userArrayCache = new Object();
|
window.userArrayCache = new Object();
|
||||||
window.convertUriToUserArrayCacheKey = new Object();
|
window.convertUriToUserArrayCacheKey = new Object();
|
||||||
window.convertStatusnetProfileUrlToUserArrayCacheKey = new Object();
|
window.convertStatusnetProfileUrlToUserArrayCacheKey = new Object();
|
||||||
|
window.convertLocalIdToUserArrayCacheKey = new Object();
|
||||||
|
|
||||||
function userArrayCacheStore(data) {
|
function userArrayCacheStore(data) {
|
||||||
|
|
||||||
|
@ -949,6 +950,7 @@ function userArrayCacheStore(data) {
|
||||||
window.userArrayCache[key].modified = Date.now();
|
window.userArrayCache[key].modified = Date.now();
|
||||||
|
|
||||||
// easy conversion between URI and statusnet_profile_url and the key we're using in window.userArrayCache
|
// easy conversion between URI and statusnet_profile_url and the key we're using in window.userArrayCache
|
||||||
|
window.convertLocalIdToUserArrayCacheKey[parseInt(dataToStore.local.id, 10)] = key;
|
||||||
window.convertUriToUserArrayCacheKey[dataToStore.local.ostatus_uri] = key;
|
window.convertUriToUserArrayCacheKey[dataToStore.local.ostatus_uri] = key;
|
||||||
window.convertStatusnetProfileUrlToUserArrayCacheKey[dataToStore.local.statusnet_profile_url] = key;
|
window.convertStatusnetProfileUrlToUserArrayCacheKey[dataToStore.local.statusnet_profile_url] = key;
|
||||||
}
|
}
|
||||||
|
@ -963,6 +965,7 @@ function userArrayCacheStore(data) {
|
||||||
window.userArrayCache[key].local = dataToStore.local;
|
window.userArrayCache[key].local = dataToStore.local;
|
||||||
|
|
||||||
// easy conversion between URI and statusnet_profile_url and the key we're using in window.userArrayCache
|
// easy conversion between URI and statusnet_profile_url and the key we're using in window.userArrayCache
|
||||||
|
window.convertLocalIdToUserArrayCacheKey[dataToStore.local.id] = key;
|
||||||
window.convertUriToUserArrayCacheKey[dataToStore.local.ostatus_uri] = key;
|
window.convertUriToUserArrayCacheKey[dataToStore.local.ostatus_uri] = key;
|
||||||
window.convertStatusnetProfileUrlToUserArrayCacheKey[dataToStore.local.statusnet_profile_url] = key;
|
window.convertStatusnetProfileUrlToUserArrayCacheKey[dataToStore.local.statusnet_profile_url] = key;
|
||||||
}
|
}
|
||||||
|
@ -993,9 +996,13 @@ function userArrayCacheGetByLocalNickname(localNickname) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function userArrayCacheGetByProfileUrlAndNickname(profileUrl, nickname) {
|
function userArrayCacheGetByProfileUrlAndNickname(profileUrl, nickname) {
|
||||||
|
var possibleLocalId = false;
|
||||||
if(nickname.substring(0,1) == '@') {
|
if(nickname.substring(0,1) == '@') {
|
||||||
nickname = nickname.substring(1);
|
nickname = nickname.substring(1);
|
||||||
}
|
}
|
||||||
|
if(profileUrl.indexOf(window.siteInstanceURL + 'user/') == 0) {
|
||||||
|
possibleLocalId = parseInt(profileUrl.substring(window.siteInstanceURL.length+5),10);
|
||||||
|
}
|
||||||
// the url might match a known profile uri
|
// the url might match a known profile uri
|
||||||
if(typeof window.convertUriToUserArrayCacheKey[profileUrl] != 'undefined') {
|
if(typeof window.convertUriToUserArrayCacheKey[profileUrl] != 'undefined') {
|
||||||
if(typeof window.userArrayCache[window.convertUriToUserArrayCacheKey[profileUrl]] != 'undefined') {
|
if(typeof window.userArrayCache[window.convertUriToUserArrayCacheKey[profileUrl]] != 'undefined') {
|
||||||
|
@ -1008,6 +1015,12 @@ function userArrayCacheGetByProfileUrlAndNickname(profileUrl, nickname) {
|
||||||
return window.userArrayCache[window.convertStatusnetProfileUrlToUserArrayCacheKey[profileUrl]];
|
return window.userArrayCache[window.convertStatusnetProfileUrlToUserArrayCacheKey[profileUrl]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// or the local id might match a known id
|
||||||
|
else if(typeof window.convertLocalIdToUserArrayCacheKey[possibleLocalId] != 'undefined') {
|
||||||
|
if(typeof window.userArrayCache[window.convertLocalIdToUserArrayCacheKey[possibleLocalId]] != 'undefined') {
|
||||||
|
return window.userArrayCache[window.convertLocalIdToUserArrayCacheKey[possibleLocalId]];
|
||||||
|
}
|
||||||
|
}
|
||||||
// or we try to guess the instance url, and see if we have a match in our cache
|
// or we try to guess the instance url, and see if we have a match in our cache
|
||||||
else if(typeof window.userArrayCache[guessInstanceUrlWithoutProtocolFromProfileUrlAndNickname(profileUrl, nickname) + '/' + nickname] != 'undefined') {
|
else if(typeof window.userArrayCache[guessInstanceUrlWithoutProtocolFromProfileUrlAndNickname(profileUrl, nickname) + '/' + nickname] != 'undefined') {
|
||||||
return window.userArrayCache[guessInstanceUrlWithoutProtocolFromProfileUrlAndNickname(profileUrl, nickname) + '/' + nickname];
|
return window.userArrayCache[guessInstanceUrlWithoutProtocolFromProfileUrlAndNickname(profileUrl, nickname) + '/' + nickname];
|
||||||
|
@ -1244,7 +1257,7 @@ function updateUserDataInStream() {
|
||||||
// profile urls
|
// profile urls
|
||||||
// try to find the last account group with this id, if the statusnet_profile_url seems to
|
// try to find the last account group with this id, if the statusnet_profile_url seems to
|
||||||
// be changed we replace it wherever we can find it, even in list urls etc that starts with statusnet_profile_url
|
// be changed we replace it wherever we can find it, even in list urls etc that starts with statusnet_profile_url
|
||||||
if($('a.account-group[data-user-id="' + userArray.local.id + '"]').last().attr('href') != userArray.local.statusnet_profile_url) {
|
if(userArray.local.is_local === true && $('a.account-group[data-user-id="' + userArray.local.id + '"]').last().attr('href') != userArray.local.statusnet_profile_url) {
|
||||||
var oldStatusnetProfileURL = $('a.account-group[data-user-id="' + userArray.local.id + '"]').last().attr('href');
|
var oldStatusnetProfileURL = $('a.account-group[data-user-id="' + userArray.local.id + '"]').last().attr('href');
|
||||||
// all links with the exact statusnet_profile_url
|
// all links with the exact statusnet_profile_url
|
||||||
$.each($('[href="' + oldStatusnetProfileURL + '"]'),function(){
|
$.each($('[href="' + oldStatusnetProfileURL + '"]'),function(){
|
||||||
|
@ -2236,6 +2249,29 @@ function appendAllBookmarks(bookmarkContainer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Change the header of an item in the history container by href attribute
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function updateHistoryContainerItemByHref(href, streamHeader) {
|
||||||
|
$('#history-container .stream-selection[href="' + href + '"]').html(streamHeader + '<i class="chev-right" data-tooltip="' + window.sL.tooltipBookmarkStream + '"></i>');
|
||||||
|
updateHistoryLocalStorage();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Remove items in the history container by href attribute
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function removeHistoryContainerItemByHref(href) {
|
||||||
|
$('#history-container .stream-selection[href="' + href + '"]').remove();
|
||||||
|
updateHistoryLocalStorage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
· Updates the browsing history local storage
|
· Updates the browsing history local storage
|
||||||
|
|
151
js/qvitter.js
151
js/qvitter.js
|
@ -486,6 +486,96 @@ $('body').on('mouseleave','.hover-card', function(e) {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· find someone tool
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
$('#find-someone input').keyup(function(e){
|
||||||
|
var thisFindSomeoneInput = $(this);
|
||||||
|
if(e.keyCode==13 && !thisFindSomeoneInput.hasClass('submitted')) {
|
||||||
|
thisFindSomeoneInput.addClass('submitted');
|
||||||
|
thisFindSomeoneInput.attr('disabled','disabled');
|
||||||
|
var val = $.trim(thisFindSomeoneInput.val());
|
||||||
|
|
||||||
|
// if this is a simple text input, we assume it is a local user
|
||||||
|
if(val.length>1 && /^(@)?[a-zA-Z0-9]+$/.test(val)) {
|
||||||
|
if(val.indexOf('@') == 0) {
|
||||||
|
val = val.replace('@','');
|
||||||
|
}
|
||||||
|
setNewCurrentStream(pathToStreamRouter(val),true,false,function(){
|
||||||
|
foundSomeone(thisFindSomeoneInput);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// urls might be a remote user
|
||||||
|
else if(val.length==0 || /^(ftp|http|https):\/\/[^ "]+$/.test(val)) {
|
||||||
|
getFromAPI('qvitter/external_user_show.json?profileurl=' + encodeURIComponent(val),function(data){
|
||||||
|
if(data && data.local !== null) {
|
||||||
|
setNewCurrentStream(pathToStreamRouter('user/' + data.local.id),true,false,function(){
|
||||||
|
foundSomeone(thisFindSomeoneInput);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cantFindSomeone(thisFindSomeoneInput);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// @user@instance.domain style syntax
|
||||||
|
else if(val.length==0 || /^(@)?[a-zA-Z0-9]+@[a-zA-Z0-9\-]+(\.)(.*)+$/.test(val)) {
|
||||||
|
|
||||||
|
if(val.indexOf('@') == 0) {
|
||||||
|
val = val.substring(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
var username = val.substring(0, val.indexOf('@'));
|
||||||
|
var domain = val.substring(val.indexOf('@')+1);
|
||||||
|
var urlToTry = 'https://' + domain + '/' + username;
|
||||||
|
var secondUrlToTry = 'http://' + domain + '/' + username;
|
||||||
|
|
||||||
|
getFromAPI('qvitter/external_user_show.json?profileurl=' + encodeURIComponent(urlToTry),function(data){
|
||||||
|
if(data && data.local !== null) {
|
||||||
|
setNewCurrentStream(pathToStreamRouter('user/' + data.local.id),true,false,function(){
|
||||||
|
foundSomeone(thisFindSomeoneInput);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
getFromAPI('qvitter/external_user_show.json?profileurl=' + encodeURIComponent(secondUrlToTry),function(data){
|
||||||
|
if(data && data.local !== null) {
|
||||||
|
setNewCurrentStream(pathToStreamRouter('user/' + data.local.id),true,false,function(){
|
||||||
|
foundSomeone(thisFindSomeoneInput);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cantFindSomeone(thisFindSomeoneInput);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cantFindSomeone(thisFindSomeoneInput);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function cantFindSomeone(thisFindSomeoneInput) {
|
||||||
|
thisFindSomeoneInput.css('background-color','pink');
|
||||||
|
thisFindSomeoneInput.effect('shake',{distance:5,times:3,duration:700},function(){
|
||||||
|
thisFindSomeoneInput.animate({backgroundColor:'#fff'},1000);
|
||||||
|
thisFindSomeoneInput.removeAttr('disabled');
|
||||||
|
thisFindSomeoneInput.removeClass('submitted');
|
||||||
|
thisFindSomeoneInput.focus();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function foundSomeone(thisFindSomeoneInput) {
|
||||||
|
thisFindSomeoneInput.removeAttr('disabled');
|
||||||
|
thisFindSomeoneInput.val('');
|
||||||
|
thisFindSomeoneInput.blur();
|
||||||
|
thisFindSomeoneInput.removeClass('submitted');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
|
@ -970,6 +1060,9 @@ function proceedToSetLanguageAndLogin(data){
|
||||||
$('#clear-history').html(window.sL.clearHistory);
|
$('#clear-history').html(window.sL.clearHistory);
|
||||||
$('#user-screen-name, #user-avatar, #user-name').attr('data-tooltip', window.sL.viewMyProfilePage);
|
$('#user-screen-name, #user-avatar, #user-name').attr('data-tooltip', window.sL.viewMyProfilePage);
|
||||||
$('#top-menu-profile-link-view-profile').html(window.sL.viewMyProfilePage);
|
$('#top-menu-profile-link-view-profile').html(window.sL.viewMyProfilePage);
|
||||||
|
$('#find-someone input').attr('placeholder',window.sL.findSomeone);
|
||||||
|
$('#find-someone input').attr('data-tooltip',window.sL.findSomeoneTooltip);
|
||||||
|
|
||||||
|
|
||||||
// show site body now
|
// show site body now
|
||||||
$('#user-container').css('display','block');
|
$('#user-container').css('display','block');
|
||||||
|
@ -1841,42 +1934,34 @@ $('body').on('click','a', function(e) {
|
||||||
}
|
}
|
||||||
// hijack link if we find a matching link that qvitter can handle
|
// hijack link if we find a matching link that qvitter can handle
|
||||||
else {
|
else {
|
||||||
var streamObject = URLtoStreamRouter($(this).attr('href'));
|
|
||||||
|
var hrefAttr = $(this).attr('href');
|
||||||
|
|
||||||
|
// this might be a remote profile that we want to reroute to a local instance/user/id url, let's check our cache
|
||||||
|
if(typeof window.convertStatusnetProfileUrlToUserArrayCacheKey[hrefAttr] != 'undefined') {
|
||||||
|
if(typeof window.userArrayCache[window.convertStatusnetProfileUrlToUserArrayCacheKey[hrefAttr]] != 'undefined') {
|
||||||
|
var cachedUserArray = window.userArrayCache[window.convertStatusnetProfileUrlToUserArrayCacheKey[hrefAttr]];
|
||||||
|
if(cachedUserArray.local.is_local === false) {
|
||||||
|
hrefAttr = window.siteInstanceURL + 'user/' + cachedUserArray.local.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(typeof window.convertUriToUserArrayCacheKey[hrefAttr] != 'undefined') {
|
||||||
|
if(typeof window.userArrayCache[window.convertUriToUserArrayCacheKey[hrefAttr]] != 'undefined') {
|
||||||
|
var cachedUserArray = window.userArrayCache[window.convertUriToUserArrayCacheKey[hrefAttr]];
|
||||||
|
if(cachedUserArray.local.is_local === false) {
|
||||||
|
hrefAttr = window.siteInstanceURL + 'user/' + cachedUserArray.local.id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var streamObject = URLtoStreamRouter(hrefAttr);
|
||||||
if(streamObject && streamObject.stream) {
|
if(streamObject && streamObject.stream) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
// if this is a user/{id} type link we want to find the nickname before setting a new stream
|
// if this is a user/{id} type link but we know the nickname already
|
||||||
// the main reason is that we want to update the browsers location bar and the .stream-selecton
|
if(streamObject.name == 'profile by id' && streamObject.nickname !== false) {
|
||||||
// links as fast as we can. we rather not wait for the server response
|
setNewCurrentStream(pathToStreamRouter(streamObject.nickname),true,streamObject.id);
|
||||||
if(streamObject.name == 'profile by id') {
|
|
||||||
|
|
||||||
// pathToStreamRouter() might have found a cached nickname
|
|
||||||
if(streamObject.nickname) {
|
|
||||||
setNewCurrentStream(pathToStreamRouter(streamObject.nickname),true,streamObject.id);
|
|
||||||
}
|
|
||||||
// otherwise we might follow the user and thereby already know its nickname
|
|
||||||
else if (typeof window.following != 'undefined' && typeof window.following[streamObject.id] != 'undefined') {
|
|
||||||
setNewCurrentStream(pathToStreamRouter(window.following[streamObject.id].username),true,streamObject.id);
|
|
||||||
}
|
|
||||||
// if the text() of the clicked element looks like a user nickname, use that (but send id to setNewCurrentStream() in case this is bad data)
|
|
||||||
else if(/^@[a-zA-Z0-9]+$/.test($(e.target).text()) || /^[a-zA-Z0-9]+$/.test($(e.target).text())) {
|
|
||||||
var nickname = $(e.target).text();
|
|
||||||
if(nickname.indexOf('@') == 0) {
|
|
||||||
nickname = nickname.substring(1); // remove any starting @
|
|
||||||
}
|
|
||||||
setNewCurrentStream(pathToStreamRouter(nickname),true,streamObject.id);
|
|
||||||
}
|
|
||||||
// if we can't figure out or guess a nickname, query the server for it
|
|
||||||
else {
|
|
||||||
getNicknameByUserIdFromAPI(streamObject.id,function(nickname) {
|
|
||||||
if(nickname) {
|
|
||||||
setNewCurrentStream(pathToStreamRouter(nickname),true,false);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alert('user not found');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// same with group/{id}/id links
|
// same with group/{id}/id links
|
||||||
else if(streamObject.name == 'group notice stream by id') {
|
else if(streamObject.name == 'group notice stream by id') {
|
||||||
|
|
|
@ -57,7 +57,14 @@ window.pluginStreamObjects = [];
|
||||||
· · · · · · · · · */
|
· · · · · · · · · */
|
||||||
|
|
||||||
function setUrlFromStream(streamObject) {
|
function setUrlFromStream(streamObject) {
|
||||||
history.pushState({strm:streamObject.path},'','/' + streamObject.path);
|
|
||||||
|
// if we know the nickname for profiles, go with that instead of the id
|
||||||
|
if(streamObject.name == 'profile by id' && streamObject.nickname !== false) {
|
||||||
|
history.pushState({strm:streamObject.nickname},'','/' + streamObject.nickname);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
history.pushState({strm:streamObject.path},'','/' + streamObject.path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -387,7 +394,7 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.streamSubHeader = window.sL.notices + '<div class="queet-streams">/ <a class="queet-stream mentions" href="' + window.siteInstanceURL + streamObject.nickname + '/replies">' + window.sL.mentions + '</a> / <a class="queet-stream favorites" href="' + window.siteInstanceURL + streamObject.nickname + '/favorites">' + window.sL.favoritesNoun +'</a></div>';
|
streamObject.streamSubHeader = window.sL.notices + '<div class="queet-streams">/ <a class="queet-stream mentions" href="' + window.siteInstanceURL + streamObject.nickname + '/replies">' + window.sL.mentions + '</a> / <a class="queet-stream favorites" href="' + window.siteInstanceURL + streamObject.nickname + '/favorites">' + window.sL.favoritesNoun +'</a></div>';
|
||||||
}
|
}
|
||||||
streamObject.id = pathSplit[1];
|
streamObject.id = pathSplit[1];
|
||||||
streamObject.stream = 'statuses/user_timeline.json?id=' + streamObject.id + '&withuserarray=1';
|
streamObject.stream = 'qvitter/statuses/user_timeline.json?id=' + streamObject.id + '&withuserarray=1';
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Has ocultat aquests comptes de la teva línia temporal. Seguiràs rebent notificacions d'aquests comptes tret que seleccions "Amagar notificacions d'usuaris silenciats" des del menú amb forma de roda dentada a la pàgina de notificacions.",
|
"mutedStreamDescription":"Has ocultat aquests comptes de la teva línia temporal. Seguiràs rebent notificacions d'aquests comptes tret que seleccions "Amagar notificacions d'usuaris silenciats" des del menú amb forma de roda dentada a la pàgina de notificacions.",
|
||||||
"profileAndSettings":"Perfil i ajustos",
|
"profileAndSettings":"Perfil i ajustos",
|
||||||
"profileSettings":"Ajustos del perfil",
|
"profileSettings":"Ajustos del perfil",
|
||||||
"thisIsABookmark":"Això és un marcador va crear en l'interfície Clàssic"
|
"thisIsABookmark":"Això és un marcador va crear en l'interfície Clàssic",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Du hast diese Nutzer in Deiner Timeline ausgeblendet. Benachrichtigungen von diesen Nutzern werden werden weiterhin angezeigt. Um sie ebenfalls zu verbergen, wähle im Zahnradmenu der Benachrichtigungsseite die Option "Benachrichtigungen von ausgeblendeten Benutzern verbergen".",
|
"mutedStreamDescription":"Du hast diese Nutzer in Deiner Timeline ausgeblendet. Benachrichtigungen von diesen Nutzern werden werden weiterhin angezeigt. Um sie ebenfalls zu verbergen, wähle im Zahnradmenu der Benachrichtigungsseite die Option "Benachrichtigungen von ausgeblendeten Benutzern verbergen".",
|
||||||
"profileAndSettings":"Profil und Einstellungen",
|
"profileAndSettings":"Profil und Einstellungen",
|
||||||
"profileSettings":"Profileinstellungen",
|
"profileSettings":"Profileinstellungen",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still receive notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still receive notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,5 +196,9 @@
|
||||||
"userMuted":"Muted accounts",
|
"userMuted":"Muted accounts",
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings"
|
"profileSettings":"Profile settings",
|
||||||
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,5 +196,8 @@
|
||||||
"mutedStreamDescription":"Has ocultado estas cuentas de tu línea temporal. Seguirás recibiendo notificaciones de dichas cuentas a menos que selecciones "Ocultar notificaciones de usuarios silencioados" desde el menú con forma de rueda dentada en la página de notificaciones.",
|
"mutedStreamDescription":"Has ocultado estas cuentas de tu línea temporal. Seguirás recibiendo notificaciones de dichas cuentas a menos que selecciones "Ocultar notificaciones de usuarios silencioados" desde el menú con forma de rueda dentada en la página de notificaciones.",
|
||||||
"profileAndSettings":"Perfil y ajustes",
|
"profileAndSettings":"Perfil y ajustes",
|
||||||
"profileSettings":"Ajustes del perfil",
|
"profileSettings":"Ajustes del perfil",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Haz ocultado esas cuentas de tu línea temporal. Igualmente recibirás notificaciones de esas cuentas, a menos que selecciones "Hide notifications from muted users" desde el menú de la rueda dentada en la página de notificaciones.",
|
"mutedStreamDescription":"Haz ocultado esas cuentas de tu línea temporal. Igualmente recibirás notificaciones de esas cuentas, a menos que selecciones "Hide notifications from muted users" desde el menú de la rueda dentada en la página de notificaciones.",
|
||||||
"profileAndSettings":"Perfiles y configuraciones",
|
"profileAndSettings":"Perfiles y configuraciones",
|
||||||
"profileSettings":"Perfil y configuración",
|
"profileSettings":"Perfil y configuración",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Has ocultado estas cuentas de tu línea temporal. Seguirás recibiendo notificaciones de dichas cuentas a menos que selecciones "Ocultar notificaciones de usuarios silencioados" desde el menú con forma de rueda dentada en la página de notificaciones.",
|
"mutedStreamDescription":"Has ocultado estas cuentas de tu línea temporal. Seguirás recibiendo notificaciones de dichas cuentas a menos que selecciones "Ocultar notificaciones de usuarios silencioados" desde el menú con forma de rueda dentada en la página de notificaciones.",
|
||||||
"profileAndSettings":"Perfil y ajustes",
|
"profileAndSettings":"Perfil y ajustes",
|
||||||
"profileSettings":"Ajustes del perfil",
|
"profileSettings":"Ajustes del perfil",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,5 +198,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Ocultaches estas contas da túa liña de tempo. Continuarás a recibir notificacións destas contas, a non ser que selecciones "Agochar notificacións de usuarias acaladas" na roda dentada do menú da páxina de notificacións.",
|
"mutedStreamDescription":"Ocultaches estas contas da túa liña de tempo. Continuarás a recibir notificacións destas contas, a non ser que selecciones "Agochar notificacións de usuarias acaladas" na roda dentada do menú da páxina de notificacións.",
|
||||||
"profileAndSettings":"Perfil e axustes",
|
"profileAndSettings":"Perfil e axustes",
|
||||||
"profileSettings":"Axustes do perfil",
|
"profileSettings":"Axustes do perfil",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"הסתרת את חשבונות אלה מתוך ציר הזמן שלך. You will still recieve notifications from these accounts, unless you select "הסתר התרעות ממשתמשים מוסתרים" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"הסתרת את חשבונות אלה מתוך ציר הזמן שלך. You will still recieve notifications from these accounts, unless you select "הסתר התרעות ממשתמשים מוסתרים" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"פרופיל והגדרות",
|
"profileAndSettings":"פרופיל והגדרות",
|
||||||
"profileSettings":"הגדרות פרופיל",
|
"profileSettings":"הגדרות פרופיל",
|
||||||
"thisIsABookmark":"זוהי סימנייה שנוצרה בתוך הממשק הקלאסי"
|
"thisIsABookmark":"זוהי סימנייה שנוצרה בתוך הממשק הקלאסי",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,5 +194,8 @@
|
||||||
"mutedStreamDescription":"Դուք թացրել եք այս օգտատերերին Ձեր հոսքից։ Դուք կշարունակեք ստանալ այս օգտատերերից ծանուցումներ, եթե չընտրեք "Թաքցնել արհամարհվող օգտատերերի ծանուցումները " Ծանուցումների էջի մենյուի կարգավորումներում",
|
"mutedStreamDescription":"Դուք թացրել եք այս օգտատերերին Ձեր հոսքից։ Դուք կշարունակեք ստանալ այս օգտատերերից ծանուցումներ, եթե չընտրեք "Թաքցնել արհամարհվող օգտատերերի ծանուցումները " Ծանուցումների էջի մենյուի կարգավորումներում",
|
||||||
"profileAndSettings":"Էջ և կարգավորումներ",
|
"profileAndSettings":"Էջ և կարգավորումներ",
|
||||||
"profileSettings":"Էջի կարգավորումներ",
|
"profileSettings":"Էջի կարգավորումներ",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Tu ha celate iste contos de tu chronologia. Tu recipera totevia notificationes de iste contos, excepte si tu selige "Celar notificationes de usatores ignorate" ab le menu de rota dentate sur le pagina de notificationes.",
|
"mutedStreamDescription":"Tu ha celate iste contos de tu chronologia. Tu recipera totevia notificationes de iste contos, excepte si tu selige "Celar notificationes de usatores ignorate" ab le menu de rota dentate sur le pagina de notificationes.",
|
||||||
"profileAndSettings":"Profilo e configuration",
|
"profileAndSettings":"Profilo e configuration",
|
||||||
"profileSettings":"Configuration del profilo",
|
"profileSettings":"Configuration del profilo",
|
||||||
"thisIsABookmark":"Iste es un marcapaginas create in le interfacie Classic"
|
"thisIsABookmark":"Iste es un marcapaginas create in le interfacie Classic",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Vu celis ca konti de vua tempolineo. Vu recevos ankore notifiki de ca konti, ecepte se vu selektus "Celar notifiki de muta uzeri" per la menuo dentorota en la pagino di notifiki.",
|
"mutedStreamDescription":"Vu celis ca konti de vua tempolineo. Vu recevos ankore notifiki de ca konti, ecepte se vu selektus "Celar notifiki de muta uzeri" per la menuo dentorota en la pagino di notifiki.",
|
||||||
"profileAndSettings":"Profilo ed ajusti",
|
"profileAndSettings":"Profilo ed ajusti",
|
||||||
"profileSettings":"Ajusti di profilo",
|
"profileSettings":"Ajusti di profilo",
|
||||||
"thisIsABookmark":"Ca esas markorubando kreita en la interfacio klasika"
|
"thisIsABookmark":"Ca esas markorubando kreita en la interfacio klasika",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Hai nascosto questi account dalla tua bacheca. Riceverai comunque le loro notifiche, per disabilitarle seleziona "Nascondi notifiche dagli account senza voce" dal menu delle impostazioni sulla pagina relativa alle notifiche.",
|
"mutedStreamDescription":"Hai nascosto questi account dalla tua bacheca. Riceverai comunque le loro notifiche, per disabilitarle seleziona "Nascondi notifiche dagli account senza voce" dal menu delle impostazioni sulla pagina relativa alle notifiche.",
|
||||||
"profileAndSettings":"Profilo e impostazioni",
|
"profileAndSettings":"Profilo e impostazioni",
|
||||||
"profileSettings":"Impostazioni del profilo",
|
"profileSettings":"Impostazioni del profilo",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"あなたのタイムラインから、選択されたユーザーを隠しました。あなたがお知らせページの歯車のメニューにある"ミュートしたユーザーからのお知らせを隠す"を選択しなかったユーザー以外からは、まだお知らせを受け取ります。",
|
"mutedStreamDescription":"あなたのタイムラインから、選択されたユーザーを隠しました。あなたがお知らせページの歯車のメニューにある"ミュートしたユーザーからのお知らせを隠す"を選択しなかったユーザー以外からは、まだお知らせを受け取ります。",
|
||||||
"profileAndSettings":"プロフィールと設定",
|
"profileAndSettings":"プロフィールと設定",
|
||||||
"profileSettings":"プロフィール設定",
|
"profileSettings":"プロフィール設定",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Du har skjul disse kontoene fra din tidslinje. Du vil alikevel motta notifikasjoner fra disse kontoene, hvis da du ikke velger "Skjul notifikasjoner fra forstummede brukere" fra tannhjul menyen på notifikasjons siden.",
|
"mutedStreamDescription":"Du har skjul disse kontoene fra din tidslinje. Du vil alikevel motta notifikasjoner fra disse kontoene, hvis da du ikke velger "Skjul notifikasjoner fra forstummede brukere" fra tannhjul menyen på notifikasjons siden.",
|
||||||
"profileAndSettings":"Profiler og innstillinger",
|
"profileAndSettings":"Profiler og innstillinger",
|
||||||
"profileSettings":"Profil innstillinger",
|
"profileSettings":"Profil innstillinger",
|
||||||
"thisIsABookmark":"Dette er et bokmerke som ble laget i det klassiske grensesnittet"
|
"thisIsABookmark":"Dette er et bokmerke som ble laget i det klassiske grensesnittet",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Je negeert deze gebruikers in je tijdlijn. Je krijgt wel nog mededelingen van deze gebruikers, tenzij je "Geen mededelingen van genegeerde gebruikers." kiest van het instellingen icoon op de mededelingen pagina.",
|
"mutedStreamDescription":"Je negeert deze gebruikers in je tijdlijn. Je krijgt wel nog mededelingen van deze gebruikers, tenzij je "Geen mededelingen van genegeerde gebruikers." kiest van het instellingen icoon op de mededelingen pagina.",
|
||||||
"profileAndSettings":"Profiel en instellingen",
|
"profileAndSettings":"Profiel en instellingen",
|
||||||
"profileSettings":"Profiel instellingen",
|
"profileSettings":"Profiel instellingen",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Ukryłeś te konta na swojej osi czasu. Nadal będziesz otrzymywać powiadomienia od tych użytkowników, chyba że wybierzesz opcję "Ukryj powiadomienia od wyciszonych użytkowników", znajdującą się w rozwijanym menu na stronie powiadomień.",
|
"mutedStreamDescription":"Ukryłeś te konta na swojej osi czasu. Nadal będziesz otrzymywać powiadomienia od tych użytkowników, chyba że wybierzesz opcję "Ukryj powiadomienia od wyciszonych użytkowników", znajdującą się w rozwijanym menu na stronie powiadomień.",
|
||||||
"profileAndSettings":"Profil i ustawienia",
|
"profileAndSettings":"Profil i ustawienia",
|
||||||
"profileSettings":"Ustawienia profilu",
|
"profileSettings":"Ustawienia profilu",
|
||||||
"thisIsABookmark":"To jest zakładka stworzona w klasycznym interfejsie"
|
"thisIsABookmark":"To jest zakładka stworzona w klasycznym interfejsie",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Você escondeu estas contas da sua linha do tempo. Irá continuar a receber notificações delas, a não ser que selecione a opção \"Esconder notificações de utilizadores calados\" a partir do menu da roldana na página de notificações.",
|
"mutedStreamDescription":"Você escondeu estas contas da sua linha do tempo. Irá continuar a receber notificações delas, a não ser que selecione a opção \"Esconder notificações de utilizadores calados\" a partir do menu da roldana na página de notificações.",
|
||||||
"profileAndSettings":"Perfil e Definições",
|
"profileAndSettings":"Perfil e Definições",
|
||||||
"profileSettings":"Definições do Perfil",
|
"profileSettings":"Definições do Perfil",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Você escondeu estas contas de sua linha do tempo. Você ainda receberá notificações destas contas, a menos que você selecione "Esconder notificações de usuários calados" no menu de engrenagem na página de notificações.",
|
"mutedStreamDescription":"Você escondeu estas contas de sua linha do tempo. Você ainda receberá notificações destas contas, a menos que você selecione "Esconder notificações de usuários calados" no menu de engrenagem na página de notificações.",
|
||||||
"profileAndSettings":"Perfil e ajustes",
|
"profileAndSettings":"Perfil e ajustes",
|
||||||
"profileSettings":"Ajustes de perfil",
|
"profileSettings":"Ajustes de perfil",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,5 +195,8 @@
|
||||||
"mutedStreamDescription":"Вы скрыли этих пользователей из вашей ленты. Вы будете продолжать получать уведомления от этих пользователей, если не выберете "Скрыть уведомления от игнорируемых пользователей" в меню с шестерёнкой на странице уведомлений",
|
"mutedStreamDescription":"Вы скрыли этих пользователей из вашей ленты. Вы будете продолжать получать уведомления от этих пользователей, если не выберете "Скрыть уведомления от игнорируемых пользователей" в меню с шестерёнкой на странице уведомлений",
|
||||||
"profileAndSettings":"Профиль и настройки",
|
"profileAndSettings":"Профиль и настройки",
|
||||||
"profileSettings":"Настройки профиля",
|
"profileSettings":"Настройки профиля",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Këto llogari i keni fshehur prej rrjedhës suaj kohore. Do të merrni, prapëseprapë, njoftime nga këto llogari, veç në përzgjedhshi "Fshihi njoftimet prej përdorues me zë të hequr", te menuja me ikonën e ingranazhit te faqja e njoftimeve.",
|
"mutedStreamDescription":"Këto llogari i keni fshehur prej rrjedhës suaj kohore. Do të merrni, prapëseprapë, njoftime nga këto llogari, veç në përzgjedhshi "Fshihi njoftimet prej përdorues me zë të hequr", te menuja me ikonën e ingranazhit te faqja e njoftimeve.",
|
||||||
"profileAndSettings":"Profil dhe rregullime",
|
"profileAndSettings":"Profil dhe rregullime",
|
||||||
"profileSettings":"Rregullime profili",
|
"profileSettings":"Rregullime profili",
|
||||||
"thisIsABookmark":"Ky është një faqerojtës i krijuar nën ndërfaqen Klasike"
|
"thisIsABookmark":"Ky është një faqerojtës i krijuar nën ndërfaqen Klasike",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Du har dolt dessa användare från dina flöden. Du kommer fortfarande få notiser från dem, om du inte väljer "Dölj notiser från användare som du ignorerar" från kugghjulsmenyn på notissidan.",
|
"mutedStreamDescription":"Du har dolt dessa användare från dina flöden. Du kommer fortfarande få notiser från dem, om du inte väljer "Dölj notiser från användare som du ignorerar" från kugghjulsmenyn på notissidan.",
|
||||||
"profileAndSettings":"Profil och inställningar",
|
"profileAndSettings":"Profil och inställningar",
|
||||||
"profileSettings":"Profilinställningar",
|
"profileSettings":"Profilinställningar",
|
||||||
"thisIsABookmark":"Detta är ett bokmärke som skapats i GNU socials standardgränssnitt"
|
"thisIsABookmark":"Detta är ett bokmärke som skapats i GNU socials standardgränssnitt",
|
||||||
|
"thisIsARemoteUser":"<strong>Obs!</strong> Detta är en extern användare. Den här sidan visar bara en cachad version av deras profil. Gå till <a href=\"{remote-profile-url}\" donthijack>använderas profil på deras server</a> för se hela deras profil.",
|
||||||
|
"findSomeone":"Hitta en användare",
|
||||||
|
"findSomeoneTooltip":"Skriv in ett användarnamn eller en url till en profil, t ex @anvandarnamn eller https://extern.server/anvandarnamn"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,5 +197,8 @@
|
||||||
"mutedStreamDescription":"Ви сховали ці облікови записи з вашей стрічкі. Ви будете одержувати оголошення від цих облікових записів, доки Ви не виберіте "Сховати оголошення від корістувачей котрих я ігнорую" в меню з шестернею на сторінкі оголошень.",
|
"mutedStreamDescription":"Ви сховали ці облікови записи з вашей стрічкі. Ви будете одержувати оголошення від цих облікових записів, доки Ви не виберіте "Сховати оголошення від корістувачей котрих я ігнорую" в меню з шестернею на сторінкі оголошень.",
|
||||||
"profileAndSettings":"Профіль та налаштування",
|
"profileAndSettings":"Профіль та налаштування",
|
||||||
"profileSettings":"Налаштування профіля",
|
"profileSettings":"Налаштування профіля",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,5 +196,8 @@
|
||||||
"mutedStreamDescription":"你已从你的时间线中隐藏了这些用户。但你仍将收到这些用户的通知,除非你在设置页的齿轮菜单中选择“隐藏被忽略用户的通知”。",
|
"mutedStreamDescription":"你已从你的时间线中隐藏了这些用户。但你仍将收到这些用户的通知,除非你在设置页的齿轮菜单中选择“隐藏被忽略用户的通知”。",
|
||||||
"profileAndSettings":"个人档案及设置",
|
"profileAndSettings":"个人档案及设置",
|
||||||
"profileSettings":"个人设置",
|
"profileSettings":"个人设置",
|
||||||
"thisIsABookmark":"该书签系在旧版视图下创建。"
|
"thisIsABookmark":"该书签系在旧版视图下创建。",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,5 +196,8 @@
|
||||||
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
"mutedStreamDescription":"You've hidden these accounts from your timeline. You will still recieve notifications from these accounts, unless you select "Hide notifications from muted users" from the cog wheel menu on the notifications page.",
|
||||||
"profileAndSettings":"Profile and settings",
|
"profileAndSettings":"Profile and settings",
|
||||||
"profileSettings":"Profile settings",
|
"profileSettings":"Profile settings",
|
||||||
"thisIsABookmark":"This is a bookmark created in the Classic interface"
|
"thisIsABookmark":"This is a bookmark created in the Classic interface",
|
||||||
|
"thisIsARemoteUser":"<strong>Attention!</strong> This is a remote user. This page is only a cached copy of their profile, and includes only data known to this GNU social instance. Go to the <a href=\"{remote-profile-url}\" donthijack>user's profile on their server</a> to view their full profile.",
|
||||||
|
"findSomeone":"Find someone",
|
||||||
|
"findSomeoneTooltip":"Input a username or a profile url, e.g. @localuser or https://remote.instance/nickname"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user