mute and bugfixes
This commit is contained in:
parent
4d5b8e2907
commit
9bf92d11aa
|
@ -153,6 +153,11 @@ class QvitterPlugin extends Plugin {
|
||||||
// route/reroute urls
|
// route/reroute urls
|
||||||
public function onRouterInitialized($m)
|
public function onRouterInitialized($m)
|
||||||
{
|
{
|
||||||
|
$m->connect(':nickname/mutes',
|
||||||
|
array('action' => 'qvitter',
|
||||||
|
'nickname' => Nickname::INPUT_FMT));
|
||||||
|
$m->connect('api/qvitter/mutes.json',
|
||||||
|
array('action' => 'ApiQvitterMutes'));
|
||||||
$m->connect('api/qvitter/sandboxed.:format',
|
$m->connect('api/qvitter/sandboxed.:format',
|
||||||
array('action' => 'ApiQvitterSandboxed',
|
array('action' => 'ApiQvitterSandboxed',
|
||||||
'format' => '(xml|json)'));
|
'format' => '(xml|json)'));
|
||||||
|
@ -1291,6 +1296,16 @@ class QvitterPlugin extends Plugin {
|
||||||
$notification->whereAdd(sprintf('qvitternotification.from_profile_id IN (SELECT subscribed FROM subscription WHERE subscriber = %u)', $user_id));
|
$notification->whereAdd(sprintf('qvitternotification.from_profile_id IN (SELECT subscribed FROM subscription WHERE subscriber = %u)', $user_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the user might have opted out from notifications from profiles they have muted
|
||||||
|
$hide_notifications_from_muted_users = Profile_prefs::getConfigData($profile, 'qvitter', 'hide_notifications_from_muted_users');
|
||||||
|
if($hide_notifications_from_muted_users == '1') {
|
||||||
|
$muted_ids = QvitterMuted::getMutedIDs($profile->id,0,10000); // get all (hopefully not more than 10 000...)
|
||||||
|
if($muted_ids !== false && count($muted_ids) > 0) {
|
||||||
|
$ids_imploded = implode(',',$muted_ids);
|
||||||
|
$notification->whereAdd('qvitternotification.from_profile_id NOT IN ('.$ids_imploded.')');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// the user might have opted out from certain notification types
|
// the user might have opted out from certain notification types
|
||||||
$current_profile = $user->getProfile();
|
$current_profile = $user->getProfile();
|
||||||
$disable_notify_replies_and_mentions = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_replies_and_mentions');
|
$disable_notify_replies_and_mentions = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_replies_and_mentions');
|
||||||
|
|
|
@ -96,7 +96,7 @@ class ApiQvitterBlocksAction extends ApiPrivateAuthAction
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the user's subscribers (followers) as an array of profiles
|
* Get the user's blocked profiles
|
||||||
*
|
*
|
||||||
* @return array Profiles
|
* @return array Profiles
|
||||||
*/
|
*/
|
||||||
|
|
182
actions/apiqvittermutes.php
Normal file
182
actions/apiqvittermutes.php
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· API for getting all muted profiles for a profile ·
|
||||||
|
· ·
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· 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 ApiQvitterMutesAction extends ApiPrivateAuthAction
|
||||||
|
{
|
||||||
|
var $profiles = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Take arguments for running
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST args
|
||||||
|
*
|
||||||
|
* @return boolean success flag
|
||||||
|
*/
|
||||||
|
protected function prepare(array $args=array())
|
||||||
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
$this->format = 'json';
|
||||||
|
|
||||||
|
$this->count = (int)$this->arg('count', 100);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the request
|
||||||
|
*
|
||||||
|
* Show the profiles
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function handle()
|
||||||
|
{
|
||||||
|
parent::handle();
|
||||||
|
|
||||||
|
$this->target = Profile::current();
|
||||||
|
|
||||||
|
if(!$this->target instanceof Profile) {
|
||||||
|
$this->clientError(_('You have to be logged in to view your mutes.'), 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->profiles = $this->getProfiles();
|
||||||
|
|
||||||
|
$this->initDocument('json');
|
||||||
|
print json_encode($this->showProfiles());
|
||||||
|
$this->endDocument('json');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the user's muted profiles
|
||||||
|
*
|
||||||
|
* @return array Profiles
|
||||||
|
*/
|
||||||
|
protected function getProfiles()
|
||||||
|
{
|
||||||
|
$offset = ($this->page - 1) * $this->count;
|
||||||
|
$limit = $this->count;
|
||||||
|
|
||||||
|
$mutes = QvitterMuted::getMutedProfiles($this->target->id, $offset, $limit);
|
||||||
|
|
||||||
|
if($mutes) {
|
||||||
|
return $mutes;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this action read only?
|
||||||
|
*
|
||||||
|
* @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 profile in the stream
|
||||||
|
*/
|
||||||
|
function lastModified()
|
||||||
|
{
|
||||||
|
if (!empty($this->profiles) && (count($this->profiles) > 0)) {
|
||||||
|
return strtotime($this->profiles[0]->modified);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An entity tag for this action
|
||||||
|
*
|
||||||
|
* Returns an Etag based on the action name, language, user ID, and
|
||||||
|
* timestamps of the first and last profiles in the subscriptions list
|
||||||
|
* There's also an indicator to show whether this action is being called
|
||||||
|
* as /api/statuses/(friends|followers) or /api/(friends|followers)/ids
|
||||||
|
*
|
||||||
|
* @return string etag
|
||||||
|
*/
|
||||||
|
function etag()
|
||||||
|
{
|
||||||
|
if (!empty($this->profiles) && (count($this->profiles) > 0)) {
|
||||||
|
|
||||||
|
$last = count($this->profiles) - 1;
|
||||||
|
|
||||||
|
return '"' . implode(
|
||||||
|
':',
|
||||||
|
array($this->arg('action'),
|
||||||
|
common_user_cache_hash($this->auth_user),
|
||||||
|
common_language(),
|
||||||
|
$this->target->id,
|
||||||
|
'Profiles',
|
||||||
|
strtotime($this->profiles[0]->modified),
|
||||||
|
strtotime($this->profiles[$last]->modified))
|
||||||
|
)
|
||||||
|
. '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the profiles as Twitter-style useres and statuses
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function showProfiles()
|
||||||
|
{
|
||||||
|
$user_arrays = array();
|
||||||
|
if($this->profiles !== false) {
|
||||||
|
foreach ($this->profiles as $profile) {
|
||||||
|
$user_arrays[] = $this->twitterUserArray($profile, false );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $user_arrays;
|
||||||
|
}
|
||||||
|
}
|
|
@ -480,11 +480,8 @@ class QvitterAction extends ApiAction
|
||||||
<span class="caret-outer"></span>
|
<span class="caret-outer"></span>
|
||||||
<span class="caret-inner"></span>
|
<span class="caret-inner"></span>
|
||||||
</li>
|
</li>
|
||||||
<li class="fullwidth"><a id="logout"></a></li>
|
<li class="fullwidth"><a id="top-menu-profile-link" class="no-hover-card" href="<?php print $instanceurl.$logged_in_user_obj['screen_name']; ?>"><div id="top-menu-profile-link-fullname"><?php print $logged_in_user_obj['name']; ?></div><div id="top-menu-profile-link-view-profile"></div></a></li>
|
||||||
<li class="fullwidth dropdown-divider"></li>
|
<li class="fullwidth dropdown-divider"></li>
|
||||||
<li class="fullwidth"><a id="edit-profile-header-link"></a></li>
|
|
||||||
<li class="fullwidth"><a id="settings" href="<?php print $instanceurl; ?>settings/profile" donthijack></a></li>
|
|
||||||
<li class="fullwidth"><a id="blocking-link" href="<?php print $instanceurl.$logged_in_user_obj['screen_name'].'/blocks'; ?>"></a></li>
|
|
||||||
<li class="fullwidth"><a id="faq-link"></a></li>
|
<li class="fullwidth"><a id="faq-link"></a></li>
|
||||||
<li class="fullwidth"><a id="tou-link"></a></li>
|
<li class="fullwidth"><a id="tou-link"></a></li>
|
||||||
<li class="fullwidth"><a id="shortcuts-link"></a></li>
|
<li class="fullwidth"><a id="shortcuts-link"></a></li>
|
||||||
|
@ -492,6 +489,8 @@ class QvitterAction extends ApiAction
|
||||||
<li class="fullwidth"><a id="invite-link" href="<?php print $instanceurl; ?>main/invite"></a></li>
|
<li class="fullwidth"><a id="invite-link" href="<?php print $instanceurl; ?>main/invite"></a></li>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<li class="fullwidth"><a id="classic-link"></a></li>
|
<li class="fullwidth"><a id="classic-link"></a></li>
|
||||||
|
<li class="fullwidth dropdown-divider"></li>
|
||||||
|
<li class="fullwidth"><a id="logout"></a></li>
|
||||||
<li class="fullwidth language dropdown-divider"></li>
|
<li class="fullwidth language dropdown-divider"></li>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -601,7 +600,7 @@ class QvitterAction extends ApiAction
|
||||||
if($logged_in_user) { ?>
|
if($logged_in_user) { ?>
|
||||||
<div id="user-container" style="display:none;">
|
<div id="user-container" style="display:none;">
|
||||||
<div id="user-header" style="background-image:url('<?php print htmlspecialchars($logged_in_user_obj['cover_photo']) ?>')">
|
<div id="user-header" style="background-image:url('<?php print htmlspecialchars($logged_in_user_obj['cover_photo']) ?>')">
|
||||||
<div id="mini-edit-profile-button"></div>
|
<div id="mini-logged-in-user-cog-wheel"></div>
|
||||||
<div class="profile-header-inner-overlay"></div>
|
<div class="profile-header-inner-overlay"></div>
|
||||||
<div id="user-avatar-container"><img id="user-avatar" src="<?php print htmlspecialchars($logged_in_user_obj['profile_image_url_profile_size']) ?>" /></div>
|
<div id="user-avatar-container"><img id="user-avatar" src="<?php print htmlspecialchars($logged_in_user_obj['profile_image_url_profile_size']) ?>" /></div>
|
||||||
<div id="user-name"><?php print htmlspecialchars($logged_in_user_obj['name']) ?></div>
|
<div id="user-name"><?php print htmlspecialchars($logged_in_user_obj['name']) ?></div>
|
||||||
|
|
|
@ -48,6 +48,16 @@ class NotificationStream
|
||||||
$notification->whereAdd(sprintf('qvitternotification.from_profile_id IN (SELECT subscribed FROM subscription WHERE subscriber = %u)', $current_profile->id));
|
$notification->whereAdd(sprintf('qvitternotification.from_profile_id IN (SELECT subscribed FROM subscription WHERE subscriber = %u)', $current_profile->id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the user might have opted out from notifications from profiles they have muted
|
||||||
|
$hide_notifications_from_muted_users = Profile_prefs::getConfigData($current_profile, 'qvitter', 'hide_notifications_from_muted_users');
|
||||||
|
if($hide_notifications_from_muted_users == '1') {
|
||||||
|
$muted_ids = QvitterMuted::getMutedIDs($current_profile->id,0,10000); // get all (hopefully not more than 10 000...)
|
||||||
|
if($muted_ids !== false && count($muted_ids) > 0) {
|
||||||
|
$ids_imploded = implode(',',$muted_ids);
|
||||||
|
$notification->whereAdd('qvitternotification.from_profile_id NOT IN ('.$ids_imploded.')');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// the user might have opted out from certain notification types
|
// the user might have opted out from certain notification types
|
||||||
$disable_notify_replies_and_mentions = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_replies_and_mentions');
|
$disable_notify_replies_and_mentions = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_replies_and_mentions');
|
||||||
$disable_notify_favs = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_favs');
|
$disable_notify_favs = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_favs');
|
||||||
|
|
105
classes/QvitterMuted.php
Normal file
105
classes/QvitterMuted.php
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· Get muted profiles for a profile ·
|
||||||
|
· ·
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· 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 QvitterMuted
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function getMutedProfiles($profile_id, $offset = 0, $limit = PROFILES_PER_PAGE)
|
||||||
|
{
|
||||||
|
|
||||||
|
$ids = self::getMutedIDs($profile_id, $offset, $limit);
|
||||||
|
|
||||||
|
if(count($ids) === 0) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
$profiles = array();
|
||||||
|
foreach($ids as $id) {
|
||||||
|
try {
|
||||||
|
$profiles[] = Profile::getByID($id);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count($profiles) === 0) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return $profiles;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function getMutedIDs($profile_id, $offset, $limit)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(!is_numeric($profile_id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$mutes = new Profile_prefs();
|
||||||
|
$mutes->selectAdd('topic');
|
||||||
|
$mutes->whereAdd("profile_id = ".$profile_id);
|
||||||
|
$mutes->whereAdd("namespace = 'qvitter'");
|
||||||
|
$mutes->whereAdd("data = '1'");
|
||||||
|
$mutes->whereAdd("topic LIKE 'mute:%'");
|
||||||
|
$mutes->orderBy('modified DESC');
|
||||||
|
$mutes->limit($offset, $limit);
|
||||||
|
|
||||||
|
if (!$mutes->find()) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$topics = $mutes->fetchAll('topic');
|
||||||
|
$ids = array();
|
||||||
|
foreach($topics as $topic) {
|
||||||
|
$topic_exploded = explode(':',$topic);
|
||||||
|
if(is_numeric($topic_exploded[1])) {
|
||||||
|
$ids[] = $topic_exploded[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -491,6 +491,7 @@ button.icon.nav-search span {
|
||||||
.dropdown-menu li.fullwidth:not(.dropdown-caret) {
|
.dropdown-menu li.fullwidth:not(.dropdown-caret) {
|
||||||
width:100%;
|
width:100%;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
body.rtl .dropdown-menu li:not(.dropdown-caret) {
|
body.rtl .dropdown-menu li:not(.dropdown-caret) {
|
||||||
text-align:right;
|
text-align:right;
|
||||||
|
@ -517,11 +518,32 @@ body.rtl .dropdown-menu li:not(.dropdown-caret) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.dropdown-menu li:not(.dropdown-caret) a:hover {
|
.dropdown-menu li:not(.dropdown-caret) a:hover {
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#top-menu-profile-link-fullname,
|
||||||
|
#top-menu-profile-link-view-profile {
|
||||||
|
width:100%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-size:11px;
|
||||||
|
color:#999;
|
||||||
|
}
|
||||||
|
#top-menu-profile-link-fullname {
|
||||||
|
font-size:13px;
|
||||||
|
font-weight:700;
|
||||||
|
color:#292f33;
|
||||||
|
margin-top:5px;
|
||||||
|
}
|
||||||
|
#top-menu-profile-link:hover div {
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
|
||||||
/* dropdown menu from ellipsis button */
|
/* dropdown menu from ellipsis button */
|
||||||
.action-ellipsis-container {
|
.action-ellipsis-container {
|
||||||
position:relative;
|
position:relative;
|
||||||
|
@ -549,6 +571,10 @@ body.rtl .dropdown-menu li:not(.dropdown-caret) {
|
||||||
content:' ';
|
content:' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-menu .row-type-profile-prefs-toggle.tick-disabled::before {
|
||||||
|
content:' ';
|
||||||
|
}
|
||||||
|
|
||||||
/* these toggles are inverted, they appear the the user as disabled when enabled,
|
/* these toggles are inverted, they appear the the user as disabled when enabled,
|
||||||
since they are enabled by default....*/
|
since they are enabled by default....*/
|
||||||
.dropdown-menu a#disable_notify_replies_and_mentions.disabled::before,
|
.dropdown-menu a#disable_notify_replies_and_mentions.disabled::before,
|
||||||
|
@ -1703,6 +1729,34 @@ body.rtl #history-container.menu-container a .chev-right {
|
||||||
display:block;
|
display:block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.stream-item.user.user-muted > .queet > .user-menu-cog::after,
|
||||||
|
.profile-card.user-muted .user-menu-cog::after,
|
||||||
|
.stream-item.notice.user-muted > .queet .account-group .name::after,
|
||||||
|
.stream-item.notification.user-muted > .queet .account-group .name::after {
|
||||||
|
display:block;
|
||||||
|
position: absolute;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
left:-20px;
|
||||||
|
top:0;
|
||||||
|
color:#e81c4f;
|
||||||
|
content:'\f070';
|
||||||
|
font-family: fontAwesome;
|
||||||
|
}
|
||||||
|
.hover-card .profile-card.user-muted .user-menu-cog::after {
|
||||||
|
left:auto;
|
||||||
|
right:-25px;
|
||||||
|
}
|
||||||
|
.stream-item.notice.user-muted > .queet .account-group .name::after,
|
||||||
|
.stream-item.notification.user-muted > .queet .account-group .name::after {
|
||||||
|
display: inline-block;
|
||||||
|
height: auto;
|
||||||
|
left: auto;
|
||||||
|
margin: 0 5px;
|
||||||
|
position: relative;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
.queet-streams {
|
.queet-streams {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
color: #999999;
|
color: #999999;
|
||||||
|
@ -2075,11 +2129,15 @@ body.rtl .queet.rtl .expanded-content {
|
||||||
color:#999999;
|
color:#999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stream-item:not(.expanded).profile-blocked-by-me {
|
.stream-item:not(.expanded):not(.user).profile-blocked-by-me,
|
||||||
|
.stream-item:not(.expanded):not(.user):not(.notification).user-muted,
|
||||||
|
#feed-body.hide-notifications-from-muted-users .stream-item:not(.expanded).user-muted {
|
||||||
height:15px;
|
height:15px;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
}
|
}
|
||||||
.stream-item:not(.expanded).profile-blocked-by-me::before {
|
.stream-item:not(.expanded):not(.user).profile-blocked-by-me::before,
|
||||||
|
.stream-item:not(.expanded):not(.user):not(.notification).user-muted::before,
|
||||||
|
#feed-body.hide-notifications-from-muted-users .stream-item:not(.expanded).user-muted::before {
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left:0;
|
left:0;
|
||||||
|
@ -2093,12 +2151,16 @@ body.rtl .queet.rtl .expanded-content {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stream-item:not(.expanded).profile-blocked-by-me .queet {
|
.stream-item:not(.expanded):not(.user).profile-blocked-by-me .queet,
|
||||||
|
.stream-item:not(.expanded):not(.user):not(.notification).user-muted .queet,
|
||||||
|
#feed-body.hide-notifications-from-muted-users .stream-item:not(.expanded).user-muted .queet {
|
||||||
width:20px;
|
width:20px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
right:0;
|
right:0;
|
||||||
}
|
}
|
||||||
.stream-item:not(.expanded).profile-blocked-by-me .queet::before {
|
.stream-item:not(.expanded):not(.user).profile-blocked-by-me .queet::before,
|
||||||
|
.stream-item:not(.expanded):not(.user):not(.notification).user-muted .queet::before,
|
||||||
|
#feed-body.hide-notifications-from-muted-users .stream-item:not(.expanded).user-muted .queet::before {
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left:0;
|
left:0;
|
||||||
|
@ -2117,6 +2179,10 @@ body.rtl .queet.rtl .expanded-content {
|
||||||
border-bottom:1px solid #ddd;
|
border-bottom:1px solid #ddd;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
.stream-item:not(.expanded):not(.user):not(.notification).user-muted .queet::before,
|
||||||
|
#feed-body.hide-notifications-from-muted-users .stream-item:not(.expanded).user-muted .queet::before {
|
||||||
|
content: '\f070';
|
||||||
|
}
|
||||||
|
|
||||||
#feed-body > .stream-item.activity {
|
#feed-body > .stream-item.activity {
|
||||||
display:none;
|
display:none;
|
||||||
|
@ -3477,18 +3543,18 @@ span.inline-reply-caret .caret-inner {
|
||||||
content:'@';
|
content:'@';
|
||||||
}
|
}
|
||||||
|
|
||||||
#mini-edit-profile-button {
|
#mini-logged-in-user-cog-wheel {
|
||||||
width:30px;
|
width:30px;
|
||||||
height:30px;
|
height:30px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
z-index:102;
|
z-index:201;
|
||||||
right:5px;
|
right:5px;
|
||||||
top:5px;
|
top:5px;
|
||||||
}
|
}
|
||||||
#mini-edit-profile-button:before {
|
#mini-logged-in-user-cog-wheel:before {
|
||||||
font-family: 'FontAwesome';
|
font-family: 'FontAwesome';
|
||||||
font-size:17px;
|
font-size:17px;
|
||||||
content:'\f044';
|
content:'\f013';
|
||||||
display:block;
|
display:block;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
width:30px;
|
width:30px;
|
||||||
|
@ -3496,10 +3562,10 @@ span.inline-reply-caret .caret-inner {
|
||||||
line-height:30px;
|
line-height:30px;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
text-shadow:none;
|
text-shadow:none;
|
||||||
color:rgba(255,255,255,0.7);
|
color:rgba(255,255,255,0.9);
|
||||||
z-index:102;
|
z-index:102;
|
||||||
}
|
}
|
||||||
#mini-edit-profile-button:hover:before {
|
#mini-logged-in-user-cog-wheel:hover:before {
|
||||||
color:rgba(255,255,255,1);
|
color:rgba(255,255,255,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4709,14 +4775,16 @@ background:rgba(0,0,0,0.2);
|
||||||
content: " ";
|
content: " ";
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
.modal-container[id*="popup-reply-"] .modal-footer {
|
.modal-container[id*="popup-reply-"] .modal-footer,
|
||||||
|
#queet-thumb-popup .modal-footer {
|
||||||
padding:0;
|
padding:0;
|
||||||
}
|
}
|
||||||
.modal-container[id*="popup-reply-"] .modal-footer {}
|
|
||||||
.modal-footer .queet,
|
.modal-footer .queet,
|
||||||
.modal-footer .stream-item {
|
.modal-footer .stream-item {
|
||||||
border:0 none;
|
border:0 none;
|
||||||
cursor:auto;
|
cursor:auto;
|
||||||
|
border-radius: 0 0 5px 5px;
|
||||||
}
|
}
|
||||||
.modal-footer .queet:hover {
|
.modal-footer .queet:hover {
|
||||||
background-color:#fff;
|
background-color:#fff;
|
||||||
|
@ -5568,11 +5636,14 @@ body.rtl #feed-header-inner h2 {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#feed,
|
#feed {
|
||||||
.profile-card {
|
|
||||||
position:relative;
|
position:relative;
|
||||||
z-index:10;
|
z-index:10;
|
||||||
}
|
}
|
||||||
|
.profile-card {
|
||||||
|
position:relative;
|
||||||
|
z-index:11;
|
||||||
|
}
|
||||||
|
|
||||||
#search-query-hint {
|
#search-query-hint {
|
||||||
display:none;
|
display:none;
|
||||||
|
|
|
@ -81,22 +81,31 @@ function getMenu(menuArray) {
|
||||||
|
|
||||||
// enabled?
|
// enabled?
|
||||||
var prefEnabledOrDisabled = 'disabled';
|
var prefEnabledOrDisabled = 'disabled';
|
||||||
if(typeof window.qvitterProfilePrefs[this.topic] != 'undefined'
|
if(isQvitterProfilePrefEnabled(this.topic)) {
|
||||||
&& window.qvitterProfilePrefs[this.topic] !== null
|
|
||||||
&& window.qvitterProfilePrefs[this.topic] != ''
|
|
||||||
&& window.qvitterProfilePrefs[this.topic] !== false
|
|
||||||
&& window.qvitterProfilePrefs[this.topic] != 0
|
|
||||||
&& window.qvitterProfilePrefs[this.topic] != '0') {
|
|
||||||
prefEnabledOrDisabled = 'enabled';
|
prefEnabledOrDisabled = 'enabled';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sometimes we want another label when the toggle is enabled
|
||||||
|
var labelToUse = this.label;
|
||||||
|
if(isQvitterProfilePrefEnabled(this.topic) && typeof this.enabledLabel != 'undefined') {
|
||||||
|
labelToUse = this.enabledLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
// the tick can be disabled
|
||||||
|
var disableTickClass = '';
|
||||||
|
if(typeof this.tickDisabled != 'undefined' && this.tickDisabled === true) {
|
||||||
|
var disableTickClass = ' tick-disabled';
|
||||||
|
}
|
||||||
|
|
||||||
// get row html
|
// get row html
|
||||||
menuHTML = menuHTML + buildMenuRowFullwidth(this.label, {
|
menuHTML = menuHTML + buildMenuRowFullwidth(labelToUse, {
|
||||||
id: this.topic,
|
id: this.topic,
|
||||||
class: 'row-type-' + this.type + ' ' + prefEnabledOrDisabled,
|
class: 'row-type-' + this.type + ' ' + prefEnabledOrDisabled + disableTickClass,
|
||||||
'data-menu-row-type': this.type,
|
'data-menu-row-type': this.type,
|
||||||
'data-profile-prefs-topic': this.topic,
|
'data-profile-prefs-topic': this.topic,
|
||||||
'data-profile-prefs-namespace': this.namespace,
|
'data-profile-prefs-namespace': this.namespace,
|
||||||
|
'data-profile-prefs-label': replaceHtmlSpecialChars(this.label),
|
||||||
|
'data-profile-prefs-enabled-label': replaceHtmlSpecialChars(this.enabledLabel),
|
||||||
'data-profile-pref-state': prefEnabledOrDisabled,
|
'data-profile-pref-state': prefEnabledOrDisabled,
|
||||||
'data-profile-pref-callback': this.callback
|
'data-profile-pref-callback': this.callback
|
||||||
});
|
});
|
||||||
|
@ -380,6 +389,11 @@ function buildProfileCard(data) {
|
||||||
if(data.is_sandboxed === true) {
|
if(data.is_sandboxed === true) {
|
||||||
is_sandboxed = ' sandboxed';
|
is_sandboxed = ' sandboxed';
|
||||||
}
|
}
|
||||||
|
// muted?
|
||||||
|
var is_muted = '';
|
||||||
|
if(isUserMuted(data.id)) {
|
||||||
|
is_muted = ' user-muted';
|
||||||
|
}
|
||||||
|
|
||||||
var followButton = '';
|
var followButton = '';
|
||||||
|
|
||||||
|
@ -406,7 +420,7 @@ function buildProfileCard(data) {
|
||||||
|
|
||||||
// full card html
|
// full card html
|
||||||
data.profileCardHtml = '\
|
data.profileCardHtml = '\
|
||||||
<div class="profile-card' + is_me + logged_in + '">\
|
<div class="profile-card' + is_me + logged_in + is_muted + '">\
|
||||||
<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 + '">\
|
||||||
|
@ -495,6 +509,12 @@ function buildExternalProfileCard(data) {
|
||||||
is_sandboxed = ' sandboxed';
|
is_sandboxed = ' sandboxed';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// muted?
|
||||||
|
var is_muted = '';
|
||||||
|
if(isUserMuted(data.local.id)) {
|
||||||
|
is_muted = ' user-muted';
|
||||||
|
}
|
||||||
|
|
||||||
// local id/screen_name
|
// local id/screen_name
|
||||||
var localUserId = data.local.id;
|
var localUserId = data.local.id;
|
||||||
var localUserScreenName = data.local.screen_name;
|
var localUserScreenName = data.local.screen_name;
|
||||||
|
@ -532,7 +552,7 @@ function buildExternalProfileCard(data) {
|
||||||
data.screenNameWithServer = '@' + data.screen_name + '@' + serverUrl;
|
data.screenNameWithServer = '@' + data.screen_name + '@' + serverUrl;
|
||||||
|
|
||||||
data.profileCardHtml = '\
|
data.profileCardHtml = '\
|
||||||
<div class="profile-card' + is_me + logged_in + '">\
|
<div class="profile-card' + is_me + logged_in + is_muted + '">\
|
||||||
<div class="profile-header-inner' + is_silenced + is_sandboxed + '" style="background-image:url(\'' + cover_photo + '\')" data-user-id="' + localUserId + '" data-screen-name="' + localUserScreenName + '">\
|
<div class="profile-header-inner' + is_silenced + is_sandboxed + '" style="background-image:url(\'' + cover_photo + '\')" data-user-id="' + localUserId + '" data-screen-name="' + localUserScreenName + '">\
|
||||||
<div class="profile-header-inner-overlay"></div>\
|
<div class="profile-header-inner-overlay"></div>\
|
||||||
<a class="profile-picture"><img src="' + data.profile_image_url_profile_size + '" /></a>\
|
<a class="profile-picture"><img src="' + data.profile_image_url_profile_size + '" /></a>\
|
||||||
|
@ -813,6 +833,10 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
|
||||||
markAllNoticesFromBlockedUsersAsBlockedInJQueryObject(oldStreamState);
|
markAllNoticesFromBlockedUsersAsBlockedInJQueryObject(oldStreamState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mark all notices and profile cards from muted users as muted
|
||||||
|
markAllNoticesFromMutedUsersAsMutedInJQueryObject(oldStreamState);
|
||||||
|
markAllProfileCardsFromMutedUsersAsMutedInDOM();
|
||||||
|
|
||||||
// hide dublicate repeats, only show the first/oldest instance of a notice
|
// hide dublicate repeats, only show the first/oldest instance of a notice
|
||||||
oldStreamState = hideAllButOldestInstanceOfStreamItem(oldStreamState);
|
oldStreamState = hideAllButOldestInstanceOfStreamItem(oldStreamState);
|
||||||
|
|
||||||
|
@ -1367,7 +1391,7 @@ function cleanUpAfterCollapseQueet(streamItem) {
|
||||||
streamItem.find('.view-more-container-top').remove();
|
streamItem.find('.view-more-container-top').remove();
|
||||||
streamItem.find('.view-more-container-bottom').remove();
|
streamItem.find('.view-more-container-bottom').remove();
|
||||||
streamItem.find('.inline-reply-queetbox').remove();
|
streamItem.find('.inline-reply-queetbox').remove();
|
||||||
streamItem.find('.stream-item.conversation').remove();
|
streamItem.children('.stream-item.conversation').remove();
|
||||||
streamItem.find('.show-full-conversation').remove();
|
streamItem.find('.show-full-conversation').remove();
|
||||||
streamItem.removeAttr('style');
|
streamItem.removeAttr('style');
|
||||||
queet.removeAttr('style');
|
queet.removeAttr('style');
|
||||||
|
@ -1734,7 +1758,11 @@ function addToFeed(feed, after, extraClasses) {
|
||||||
var notificationTime = parseTwitterDate(obj.created_at);
|
var notificationTime = parseTwitterDate(obj.created_at);
|
||||||
|
|
||||||
if(obj.is_seen == '0') {
|
if(obj.is_seen == '0') {
|
||||||
extraClassesThisRun += ' not-seen'
|
extraClassesThisRun += ' not-seen';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isUserMuted(obj.from_profile.id)) {
|
||||||
|
extraClassesThisRun += ' user-muted';
|
||||||
}
|
}
|
||||||
|
|
||||||
// external
|
// external
|
||||||
|
@ -1743,10 +1771,9 @@ function addToFeed(feed, after, extraClasses) {
|
||||||
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 + '"></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(obj.ntype == 'like') {
|
if(obj.ntype == 'like') {
|
||||||
var noticeTime = parseTwitterDate(obj.notice.created_at);
|
var noticeTime = parseTwitterDate(obj.notice.created_at);
|
||||||
var notificationHtml = '<div data-quitter-id-in-stream="' + obj.id + '" id="stream-item-n-' + obj.id + '" class="stream-item ' + extraClassesThisRun + ' notification like">\
|
var notificationHtml = '<div data-user-id="' + obj.from_profile.id + '" data-quitter-id-in-stream="' + obj.id + '" id="stream-item-n-' + obj.id + '" class="stream-item ' + extraClassesThisRun + ' notification like">\
|
||||||
<div class="queet">\
|
<div class="queet">\
|
||||||
<div class="dogear"></div>\
|
<div class="dogear"></div>\
|
||||||
' + ostatusHtml + '\
|
' + ostatusHtml + '\
|
||||||
|
@ -1772,7 +1799,7 @@ function addToFeed(feed, after, extraClasses) {
|
||||||
}
|
}
|
||||||
else if(obj.ntype == 'repeat') {
|
else if(obj.ntype == 'repeat') {
|
||||||
var noticeTime = parseTwitterDate(obj.notice.created_at);
|
var noticeTime = parseTwitterDate(obj.notice.created_at);
|
||||||
var notificationHtml = '<div data-quitter-id-in-stream="' + obj.id + '" id="stream-item-n-' + obj.id + '" class="stream-item ' + extraClassesThisRun + ' notification repeat">\
|
var notificationHtml = '<div data-user-id="' + obj.from_profile.id + '" data-quitter-id-in-stream="' + obj.id + '" id="stream-item-n-' + obj.id + '" class="stream-item ' + extraClassesThisRun + ' notification repeat">\
|
||||||
<div class="queet">\
|
<div class="queet">\
|
||||||
<div class="dogear"></div>\
|
<div class="dogear"></div>\
|
||||||
' + ostatusHtml + '\
|
' + ostatusHtml + '\
|
||||||
|
@ -1803,7 +1830,7 @@ function addToFeed(feed, after, extraClasses) {
|
||||||
var notificationHtml = buildQueetHtml(obj.notice, obj.id, extraClassesThisRun + ' notification reply');
|
var notificationHtml = buildQueetHtml(obj.notice, obj.id, extraClassesThisRun + ' notification reply');
|
||||||
}
|
}
|
||||||
else if(obj.ntype == 'follow') {
|
else if(obj.ntype == 'follow') {
|
||||||
var notificationHtml = '<div data-quitter-id-in-stream="' + obj.id + '" id="stream-item-n-' + obj.id + '" class="stream-item ' + extraClassesThisRun + ' notification follow">\
|
var notificationHtml = '<div data-user-id="' + obj.from_profile.id + '" data-quitter-id-in-stream="' + obj.id + '" id="stream-item-n-' + obj.id + '" class="stream-item ' + extraClassesThisRun + ' notification follow">\
|
||||||
<div class="queet">\
|
<div class="queet">\
|
||||||
<div class="queet-content">\
|
<div class="queet-content">\
|
||||||
' + ostatusHtml + '\
|
' + ostatusHtml + '\
|
||||||
|
@ -2015,6 +2042,11 @@ function buildUserStreamItemHtml(obj) {
|
||||||
if(window.loggedIn !== false) {
|
if(window.loggedIn !== false) {
|
||||||
loggedInClass = ' logged-in';
|
loggedInClass = ' logged-in';
|
||||||
}
|
}
|
||||||
|
// muted?
|
||||||
|
var mutedClass = '';
|
||||||
|
if(isUserMuted(obj.id)) {
|
||||||
|
mutedClass = ' user-muted';
|
||||||
|
}
|
||||||
|
|
||||||
var followButton = '';
|
var followButton = '';
|
||||||
if(typeof window.loggedIn.screen_name != 'undefined' // if logged in
|
if(typeof window.loggedIn.screen_name != 'undefined' // if logged in
|
||||||
|
@ -2024,7 +2056,7 @@ function buildUserStreamItemHtml(obj) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<div id="stream-item-' + obj.id + '" class="stream-item user' + silencedClass + sandboxedClass + '" data-user-id="' + obj.id + '">\
|
return '<div id="stream-item-' + obj.id + '" class="stream-item user' + silencedClass + sandboxedClass + mutedClass + '" data-user-id="' + obj.id + '">\
|
||||||
<div class="queet ' + rtlOrNot + '">\
|
<div class="queet ' + rtlOrNot + '">\
|
||||||
' + followButton + '\
|
' + followButton + '\
|
||||||
<div class="user-menu-cog' + silencedClass + sandboxedClass + loggedInClass + '" data-tooltip="' + window.sL.userOptions + '" data-user-id="' + obj.id + '" data-screen-name="' + obj.screen_name + '"></div>\
|
<div class="user-menu-cog' + silencedClass + sandboxedClass + loggedInClass + '" data-tooltip="' + window.sL.userOptions + '" data-user-id="' + obj.id + '" data-screen-name="' + obj.screen_name + '"></div>\
|
||||||
|
@ -2069,6 +2101,11 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// muted? (if class is not already added)
|
||||||
|
if(isUserMuted(obj.user.id) && extraClasses.indexOf(' user-muted') == -1) {
|
||||||
|
extraClasses += ' user-muted';
|
||||||
|
blockingTooltip = ' data-tooltip="' + window.sL.thisIsANoticeFromAMutedUser + '"';
|
||||||
|
}
|
||||||
// silenced?
|
// silenced?
|
||||||
if(obj.user.is_silenced === true) {
|
if(obj.user.is_silenced === true) {
|
||||||
extraClasses += ' silenced';
|
extraClasses += ' silenced';
|
||||||
|
|
|
@ -117,9 +117,15 @@ function removeOldestLocalStorageEntries(callback) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log('removed 100 old localstorage items');
|
console.log('removed ' + i + ' old localstorage items');
|
||||||
|
|
||||||
|
if(i>0) {
|
||||||
callback();
|
callback();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -290,9 +296,18 @@ function localStorageIsEnabled() {
|
||||||
}
|
}
|
||||||
catch(e) {
|
catch(e) {
|
||||||
if (e.name == 'QUOTA_EXCEEDED_ERR' || e.name == 'NS_ERROR_DOM_QUOTA_REACHED' || e.name == 'QuotaExceededError' || e.name == 'W3CException_DOM_QUOTA_EXCEEDED_ERR') {
|
if (e.name == 'QUOTA_EXCEEDED_ERR' || e.name == 'NS_ERROR_DOM_QUOTA_REACHED' || e.name == 'QuotaExceededError' || e.name == 'W3CException_DOM_QUOTA_EXCEEDED_ERR') {
|
||||||
removeOldestLocalStorageEntries(function(){
|
|
||||||
localStorageIsEnabled();
|
// if localstorage is empty but returns a full error, we assume it's disabled (in an ugly way)
|
||||||
|
if(localStorage.length === 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var successfulRemoval = removeOldestLocalStorageEntries(function(){
|
||||||
|
return localStorageIsEnabled();
|
||||||
});
|
});
|
||||||
|
if(successfulRemoval === false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -454,6 +469,58 @@ function markAllNoticesFromBlockedUsersAsBlockedInJQueryObject(obj) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Marks all notices from muted users in an jQuery object as muted
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function markAllNoticesFromMutedUsersAsMutedInJQueryObject(obj) {
|
||||||
|
|
||||||
|
$.each(obj.find('.stream-item'),function(){
|
||||||
|
if(isUserMuted($(this).attr('data-user-id'))) {
|
||||||
|
$(this).addClass('user-muted');
|
||||||
|
$(this).children('.queet').attr('data-tooltip',window.sL.thisIsANoticeFromAMutedUser);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(this).children('.queet').removeAttr('data-tooltip');
|
||||||
|
$(this).removeClass('user-muted');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Marks all profile cards from muted users as muted in DOM
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function markAllProfileCardsFromMutedUsersAsMutedInDOM() {
|
||||||
|
|
||||||
|
$.each($('body').find('.profile-header-inner'),function(){
|
||||||
|
if(isUserMuted($(this).attr('data-user-id'))) {
|
||||||
|
$(this).parent('.profile-card').addClass('user-muted');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(this).parent('.profile-card').removeClass('user-muted');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Function invoked after mute and unmute
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function hideOrShowNoticesAfterMuteOrUnmute() {
|
||||||
|
markAllNoticesFromMutedUsersAsMutedInJQueryObject($('#feed-body'));
|
||||||
|
markAllProfileCardsFromMutedUsersAsMutedInDOM();
|
||||||
|
}
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
· Sandbox/unsandbox user and do necessary stuff
|
· Sandbox/unsandbox user and do necessary stuff
|
||||||
|
@ -494,6 +561,39 @@ function silenceCreateOrDestroy(arg, callback) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Get the logged in user's menu array
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function loggedInUsersMenuArray() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
type: 'function',
|
||||||
|
functionName: 'goToEditProfile',
|
||||||
|
label: window.sL.editMyProfile
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'link',
|
||||||
|
href: window.siteInstanceURL + 'settings/profile',
|
||||||
|
label: window.sL.settings
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type:'divider'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'link',
|
||||||
|
href: window.siteInstanceURL + window.loggedIn.screen_name + '/mutes',
|
||||||
|
label: window.sL.userMuted
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'link',
|
||||||
|
href: window.siteInstanceURL + window.loggedIn.screen_name + '/blocks',
|
||||||
|
label: window.sL.userBlocked
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -611,20 +711,36 @@ function isLocalURL(url) {
|
||||||
· · · · · · · · · */
|
· · · · · · · · · */
|
||||||
|
|
||||||
function maybeShowTheNewQueetsBar() {
|
function maybeShowTheNewQueetsBar() {
|
||||||
var new_queets_num = $('#feed-body').find('.stream-item.hidden:not(.always-hidden):not(.hidden-repeat)').length;
|
|
||||||
if(new_queets_num > 0) {
|
var newQueetsNum = $('#feed-body').find('.stream-item.hidden:not(.always-hidden):not(.hidden-repeat)').length;
|
||||||
|
|
||||||
|
// subtract the number of hidden notices from muted users if this isn't the notifications stream,
|
||||||
|
// or if this is the notifications stream but the user has opted out of seeing notifications from muted users
|
||||||
|
var mutedHiddenNum = 0;
|
||||||
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
|
if($('#feed-body').hasClass('hide-notifications-from-muted-users')) {
|
||||||
|
mutedHiddenNum = $('#feed-body').find('.stream-item.hidden.user-muted:not(.always-hidden):not(.hidden-repeat)').length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var mutedHiddenNum = $('#feed-body').find('.stream-item.hidden.user-muted:not(.always-hidden):not(.hidden-repeat)').length;
|
||||||
|
}
|
||||||
|
|
||||||
|
newQueetsNum = newQueetsNum - mutedHiddenNum;
|
||||||
|
|
||||||
|
if(newQueetsNum > 0) {
|
||||||
|
|
||||||
$('#new-queets-bar').parent().removeClass('hidden');
|
$('#new-queets-bar').parent().removeClass('hidden');
|
||||||
|
|
||||||
// bar label
|
// bar label
|
||||||
if(new_queets_num == 1) { var q_txt = window.sL.newQueet; }
|
if(newQueetsNum == 1) { var q_txt = window.sL.newQueet; }
|
||||||
else { var q_txt = window.sL.newQueets; }
|
else { var q_txt = window.sL.newQueets; }
|
||||||
if(window.currentStreamObject.name == 'notifications') {
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
if(new_queets_num == 1) { var q_txt = window.sL.newNotification; }
|
if(newQueetsNum == 1) { var q_txt = window.sL.newNotification; }
|
||||||
else { var q_txt = window.sL.newNotifications; }
|
else { var q_txt = window.sL.newNotifications; }
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#new-queets-bar').html(q_txt.replace('{new-notice-count}',new_queets_num));
|
$('#new-queets-bar').html(q_txt.replace('{new-notice-count}',newQueetsNum));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1319,19 +1435,9 @@ function rememberStreamStateInLocalStorage() {
|
||||||
|
|
||||||
var feed = $('<div/>').append(firstTwentyVisibleHTML);
|
var feed = $('<div/>').append(firstTwentyVisibleHTML);
|
||||||
|
|
||||||
// we add these again (with updated blocking list) when the notices are fetched from the cache
|
// we add some of these things again when the notices are fetched from the cache
|
||||||
feed.children('.stream-item').removeClass('profile-blocked-by-me');
|
cleanStreamItemsFromClassesAndConversationElements(feed);
|
||||||
feed.children('.stream-item').children('.queet').removeAttr('data-tooltip'); // can contain tooltip about blocked user
|
|
||||||
|
|
||||||
feed.find('.temp-post').remove();
|
|
||||||
feed.children('.stream-item').removeClass('not-seen');
|
|
||||||
feed.children('.stream-item').removeClass('hidden-repeat'); // this means we need hide repeats when adding cached notices to feed later
|
|
||||||
feed.children('.stream-item').removeClass('selected-by-keyboard');
|
|
||||||
feed.find('.dropdown-menu').remove();
|
|
||||||
feed.find('.stream-item').removeClass('expanded').removeClass('next-expanded').removeClass('hidden').removeClass('collapsing').addClass('visible');
|
|
||||||
feed.children('.stream-item').each(function() {
|
|
||||||
cleanUpAfterCollapseQueet($(this));
|
|
||||||
});
|
|
||||||
var feedHtml = feed.html();
|
var feedHtml = feed.html();
|
||||||
var profileCardHtml = $('#feed').siblings('.profile-card').outerHTML();
|
var profileCardHtml = $('#feed').siblings('.profile-card').outerHTML();
|
||||||
var streamData = {
|
var streamData = {
|
||||||
|
@ -1343,6 +1449,30 @@ function rememberStreamStateInLocalStorage() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Clean stream items from classes and conversation elements,
|
||||||
|
· to use e.g. for caching and including in popup footers
|
||||||
|
·
|
||||||
|
· @param streamItems: jQuery object with stream items as children
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function cleanStreamItemsFromClassesAndConversationElements(streamItems) {
|
||||||
|
streamItems.children('.stream-item').removeClass('profile-blocked-by-me');
|
||||||
|
streamItems.children('.stream-item').children('.queet').removeAttr('data-tooltip'); // can contain tooltip about blocked user
|
||||||
|
|
||||||
|
streamItems.find('.temp-post').remove();
|
||||||
|
streamItems.children('.stream-item').removeClass('not-seen');
|
||||||
|
streamItems.children('.stream-item').removeClass('hidden-repeat'); // this means we need hide repeats when adding cached notices to feed later
|
||||||
|
streamItems.children('.stream-item').removeClass('selected-by-keyboard');
|
||||||
|
streamItems.find('.dropdown-menu').remove();
|
||||||
|
streamItems.find('.stream-item').removeClass('expanded').removeClass('next-expanded').removeClass('hidden').removeClass('collapsing').addClass('visible');
|
||||||
|
streamItems.children('.stream-item').each(function() {
|
||||||
|
cleanUpAfterCollapseQueet($(this));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -1440,6 +1570,38 @@ function appendUserToMentionsSuggestionsArray(user) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Is a profile pref in the qvitter namespace enabled?
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function isQvitterProfilePrefEnabled(topic) {
|
||||||
|
if(typeof window.qvitterProfilePrefs != 'undefined' && typeof window.qvitterProfilePrefs[topic] != 'undefined'
|
||||||
|
&& window.qvitterProfilePrefs[topic] !== null
|
||||||
|
&& window.qvitterProfilePrefs[topic] != ''
|
||||||
|
&& window.qvitterProfilePrefs[topic] !== false
|
||||||
|
&& window.qvitterProfilePrefs[topic] != 0
|
||||||
|
&& window.qvitterProfilePrefs[topic] != '0') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Is this user muted?
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function isUserMuted(userID) {
|
||||||
|
if(isQvitterProfilePrefEnabled('mute:' + userID)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
|
@ -1508,6 +1670,12 @@ function iterateRecursiveReplaceHtmlSpecialChars(obj) {
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
function replaceHtmlSpecialChars(text) {
|
function replaceHtmlSpecialChars(text) {
|
||||||
|
|
||||||
|
// don't do anything if the text is undefined
|
||||||
|
if(typeof text == 'undefined') {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
var map = {
|
var map = {
|
||||||
'&': '&',
|
'&': '&',
|
||||||
'<': '<',
|
'<': '<',
|
||||||
|
|
169
js/qvitter.js
169
js/qvitter.js
|
@ -258,6 +258,11 @@ $('body').on('mouseover',function (e) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// no hover card if the element has the no-hover-card class
|
||||||
|
if(targetElement.hasClass('no-hover-card')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// no hovercard for anchor links
|
// no hovercard for anchor links
|
||||||
if(hrefAttr.substring(0,1) == '#') {
|
if(hrefAttr.substring(0,1) == '#') {
|
||||||
return true;
|
return true;
|
||||||
|
@ -943,15 +948,16 @@ function proceedToSetLanguageAndLogin(data){
|
||||||
$('#invite-link').html(window.sL.inviteAFriend);
|
$('#invite-link').html(window.sL.inviteAFriend);
|
||||||
$('#classic-link').html(window.sL.classicInterface);
|
$('#classic-link').html(window.sL.classicInterface);
|
||||||
$('#edit-profile-header-link').html(window.sL.editMyProfile);
|
$('#edit-profile-header-link').html(window.sL.editMyProfile);
|
||||||
$('#mini-edit-profile-button').attr('data-tooltip',window.sL.editMyProfile);
|
$('#mini-logged-in-user-cog-wheel').attr('data-tooltip',window.sL.profileSettings);
|
||||||
$('#accessibility-toggle-link').html(window.sL.accessibilityToggleLink);
|
$('#accessibility-toggle-link').html(window.sL.accessibilityToggleLink);
|
||||||
$('#settingslink .nav-session').attr('data-tooltip',window.sL.tooltipTopMenu);
|
$('#settingslink .nav-session').attr('data-tooltip',window.sL.profileAndSettings);
|
||||||
$('#top-compose').attr('data-tooltip',window.sL.compose);
|
$('#top-compose').attr('data-tooltip',window.sL.compose);
|
||||||
$('button.upload-image').attr('data-tooltip',window.sL.tooltipAttachImage);
|
$('button.upload-image').attr('data-tooltip',window.sL.tooltipAttachImage);
|
||||||
$('button.shorten').attr('data-tooltip',window.sL.tooltipShortenUrls);
|
$('button.shorten').attr('data-tooltip',window.sL.tooltipShortenUrls);
|
||||||
$('.reload-stream').attr('data-tooltip',window.sL.tooltipReloadStream);
|
$('.reload-stream').attr('data-tooltip',window.sL.tooltipReloadStream);
|
||||||
$('#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);
|
||||||
|
|
||||||
// show site body now
|
// show site body now
|
||||||
$('#user-container').css('display','block');
|
$('#user-container').css('display','block');
|
||||||
|
@ -1207,21 +1213,7 @@ $('body').on('click','.user-menu-cog',function(e){
|
||||||
|
|
||||||
// settings etc if it's me
|
// settings etc if it's me
|
||||||
if(userID == window.loggedIn.id) {
|
if(userID == window.loggedIn.id) {
|
||||||
menuArray.push({
|
menuArray = loggedInUsersMenuArray();
|
||||||
type: 'function',
|
|
||||||
functionName: 'triggerEditProfileButtonClick',
|
|
||||||
label: window.sL.editMyProfile
|
|
||||||
});
|
|
||||||
menuArray.push({
|
|
||||||
type: 'link',
|
|
||||||
href: window.siteInstanceURL + 'settings/profile',
|
|
||||||
label: window.sL.settings
|
|
||||||
});
|
|
||||||
menuArray.push({
|
|
||||||
type: 'link',
|
|
||||||
href: window.siteInstanceURL + window.loggedIn.screen_name + '/blocks',
|
|
||||||
label: window.sL.userBlocks
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
// block etc if it not me
|
// block etc if it not me
|
||||||
else {
|
else {
|
||||||
|
@ -1246,6 +1238,17 @@ $('body').on('click','.user-menu-cog',function(e){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mute profile pref
|
||||||
|
menuArray.push({
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'mute:' + userID,
|
||||||
|
label: window.sL.muteUser,
|
||||||
|
enabledLabel: window.sL.unmuteUser,
|
||||||
|
tickDisabled: true,
|
||||||
|
callback: 'hideOrShowNoticesAfterMuteOrUnmute'
|
||||||
|
});
|
||||||
|
|
||||||
// moderator actions
|
// moderator actions
|
||||||
menuArray = appendModeratorUserActionsToMenuArray(menuArray,userID,userScreenName,sandboxed,silenced);
|
menuArray = appendModeratorUserActionsToMenuArray(menuArray,userID,userScreenName,sandboxed,silenced);
|
||||||
}
|
}
|
||||||
|
@ -1364,6 +1367,17 @@ $('body').on('click','.sm-ellipsis',function(e){
|
||||||
label: window.sL.blockUser.replace('{username}',streamItemUsername)
|
label: window.sL.blockUser.replace('{username}',streamItemUsername)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mute profile pref
|
||||||
|
menuArray.push({
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'mute:' + streamItemUserID,
|
||||||
|
label: window.sL.muteUser,
|
||||||
|
enabledLabel: window.sL.unmuteUser,
|
||||||
|
tickDisabled: true,
|
||||||
|
callback: 'hideOrShowNoticesAfterMuteOrUnmute'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// moderator actions
|
// moderator actions
|
||||||
|
@ -1402,7 +1416,7 @@ $('body').on('click','.row-type-function',function(e){
|
||||||
thisFunctionRow.addClass('clicked');
|
thisFunctionRow.addClass('clicked');
|
||||||
|
|
||||||
var functionName = $(this).attr('data-function-name');
|
var functionName = $(this).attr('data-function-name');
|
||||||
if($(this).attr('data-function-arguments') == 'undefined') {
|
if(typeof $(this).attr('data-function-arguments') == 'undefined' || $(this).attr('data-function-arguments') == 'undefined') {
|
||||||
var functionArguments = false;
|
var functionArguments = false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1445,6 +1459,8 @@ $('body').on('click','.row-type-profile-prefs-toggle',function(e){
|
||||||
|
|
||||||
var prefNamespace = thisToggle.attr('data-profile-prefs-namespace');
|
var prefNamespace = thisToggle.attr('data-profile-prefs-namespace');
|
||||||
var prefTopic = thisToggle.attr('data-profile-prefs-topic');
|
var prefTopic = thisToggle.attr('data-profile-prefs-topic');
|
||||||
|
var prefLabel = thisToggle.attr('data-profile-prefs-label');
|
||||||
|
var prefEnabledLabel = thisToggle.attr('data-profile-prefs-enabled-label');
|
||||||
|
|
||||||
// only prefs in the 'qvitter' namespace allowed
|
// only prefs in the 'qvitter' namespace allowed
|
||||||
if(prefNamespace != 'qvitter') {
|
if(prefNamespace != 'qvitter') {
|
||||||
|
@ -1462,12 +1478,18 @@ $('body').on('click','.row-type-profile-prefs-toggle',function(e){
|
||||||
thisToggle.removeClass('disabled');
|
thisToggle.removeClass('disabled');
|
||||||
thisToggle.addClass('enabled');
|
thisToggle.addClass('enabled');
|
||||||
thisToggle.attr('data-profile-pref-state','enabled');
|
thisToggle.attr('data-profile-pref-state','enabled');
|
||||||
|
if(prefEnabledLabel != 'undefined') {
|
||||||
|
thisToggle.html(prefEnabledLabel);
|
||||||
|
}
|
||||||
window.qvitterProfilePrefs[prefTopic] = '1';
|
window.qvitterProfilePrefs[prefTopic] = '1';
|
||||||
}
|
}
|
||||||
else if(thisToggle.attr('data-profile-pref-state') == 'enabled') {
|
else if(thisToggle.attr('data-profile-pref-state') == 'enabled') {
|
||||||
thisToggle.removeClass('enabled');
|
thisToggle.removeClass('enabled');
|
||||||
thisToggle.addClass('disabled');
|
thisToggle.addClass('disabled');
|
||||||
thisToggle.attr('data-profile-pref-state','disabled');
|
thisToggle.attr('data-profile-pref-state','disabled');
|
||||||
|
if(prefEnabledLabel != 'undefined') {
|
||||||
|
thisToggle.html(prefLabel);
|
||||||
|
}
|
||||||
window.qvitterProfilePrefs[prefTopic] = '0';
|
window.qvitterProfilePrefs[prefTopic] = '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1519,15 +1541,11 @@ function showOrHideEmbeddedContentInTimelineFromProfilePref() {
|
||||||
var showHide = window.qvitterProfilePrefs['hide_embedded_in_timeline:' + window.currentStreamObject.path];
|
var showHide = window.qvitterProfilePrefs['hide_embedded_in_timeline:' + window.currentStreamObject.path];
|
||||||
if(parseInt(showHide,10) == 1) {
|
if(parseInt(showHide,10) == 1) {
|
||||||
$('#feed-body').addClass('embedded-content-hidden-by-user');
|
$('#feed-body').addClass('embedded-content-hidden-by-user');
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$('#feed-body').removeClass('embedded-content-hidden-by-user');
|
$('#feed-body').removeClass('embedded-content-hidden-by-user');
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
$('#feed-body').removeClass('embedded-content-hidden-by-user');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -1540,14 +1558,28 @@ function showOrHideQuotesInTimelineFromProfilePref() {
|
||||||
var showHide = window.qvitterProfilePrefs['hide_quotes_in_timeline:' + window.currentStreamObject.path];
|
var showHide = window.qvitterProfilePrefs['hide_quotes_in_timeline:' + window.currentStreamObject.path];
|
||||||
if(parseInt(showHide,10) == 1) {
|
if(parseInt(showHide,10) == 1) {
|
||||||
$('#feed-body').addClass('quotes-hidden-by-user');
|
$('#feed-body').addClass('quotes-hidden-by-user');
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$('#feed-body').removeClass('quotes-hidden-by-user');
|
$('#feed-body').removeClass('quotes-hidden-by-user');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Show or hide notices from muted users in notifications?
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function showOrHideNoticesFromMutedUsersInNotifications() {
|
||||||
|
if(typeof window.qvitterProfilePrefs['hide_notifications_from_muted_users'] != 'undefined') {
|
||||||
|
var showHide = window.qvitterProfilePrefs['hide_notifications_from_muted_users'];
|
||||||
|
if(parseInt(showHide,10) == 1) {
|
||||||
|
$('#feed-body').addClass('hide-notifications-from-muted-users');
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$('#feed-body').removeClass('quotes-hidden-by-user');
|
|
||||||
}
|
}
|
||||||
|
$('#feed-body').removeClass('hide-notifications-from-muted-users')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1724,8 +1756,8 @@ $('body').on('click','.member-button',function(event){
|
||||||
· · · · · · · · · · · · · */
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
$('#user-header').on('click',function(e){
|
$('#user-header').on('click',function(e){
|
||||||
// not if we're clicking the mini-edit-profile-button
|
// not if we're clicking the mini-logged-in-user-cog-wheel
|
||||||
if($(e.target).is('#mini-edit-profile-button')) {
|
if($(e.target).is('#mini-logged-in-user-cog-wheel')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setNewCurrentStream(pathToStreamRouter(window.loggedIn.screen_name),true,false);
|
setNewCurrentStream(pathToStreamRouter(window.loggedIn.screen_name),true,false);
|
||||||
|
@ -2137,15 +2169,13 @@ $('body').on('click','.stream-item .queet img.attachment-thumb',function (event)
|
||||||
var thisAttachmentThumbSrc = $(this).attr('src');
|
var thisAttachmentThumbSrc = $(this).attr('src');
|
||||||
var parentStreamItem = $(this).closest('.stream-item');
|
var parentStreamItem = $(this).closest('.stream-item');
|
||||||
var $parentStreamItemClone = $('<div/>').append(parentStreamItem.outerHTML());
|
var $parentStreamItemClone = $('<div/>').append(parentStreamItem.outerHTML());
|
||||||
|
|
||||||
if(!parentStreamItem.hasClass('conversation')) {
|
|
||||||
$parentStreamItemClone.find('.stream-item.conversation').remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
var $queetThumbsClone = $('<div/>').append($parentStreamItemClone.find('.queet-thumbs').outerHTML());
|
var $queetThumbsClone = $('<div/>').append($parentStreamItemClone.find('.queet-thumbs').outerHTML());
|
||||||
|
|
||||||
$parentStreamItemClone.find('.queet-thumbs, .expanded-content, .inline-reply-queetbox, .stream-item-footer').remove();
|
// cleaned version of the stream item to show in the footer
|
||||||
var footerHTML = $parentStreamItemClone.find('.queet').outerHTML();
|
cleanStreamItemsFromClassesAndConversationElements($parentStreamItemClone);
|
||||||
|
$parentStreamItemClone.find('.context,.stream-item-footer').remove();
|
||||||
|
var parentStreamItemHTMLWithoutFooter = $parentStreamItemClone.outerHTML();
|
||||||
|
|
||||||
$thumbToDisplay = $queetThumbsClone.find('img.attachment-thumb[src="' + thisAttachmentThumbSrc + '"]');
|
$thumbToDisplay = $queetThumbsClone.find('img.attachment-thumb[src="' + thisAttachmentThumbSrc + '"]');
|
||||||
$thumbToDisplay.parent().addClass('display-this-thumb');
|
$thumbToDisplay.parent().addClass('display-this-thumb');
|
||||||
|
|
||||||
|
@ -2188,7 +2218,7 @@ $('body').on('click','.stream-item .queet img.attachment-thumb',function (event)
|
||||||
$thisImgInQueetThumbsClone.parent('.thumb-container').children('iframe').attr('height',calculatedDimensions.displayImgHeight);
|
$thisImgInQueetThumbsClone.parent('.thumb-container').children('iframe').attr('height',calculatedDimensions.displayImgHeight);
|
||||||
|
|
||||||
// open popup
|
// open popup
|
||||||
popUpAction('queet-thumb-popup', '', '' + $queetThumbsClone.outerHTML() + '', footerHTML, calculatedDimensions.popUpWidth);
|
popUpAction('queet-thumb-popup', '', '' + $queetThumbsClone.outerHTML() + '', parentStreamItemHTMLWithoutFooter, calculatedDimensions.popUpWidth);
|
||||||
disableOrEnableNavigationButtonsInImagePopup($('#queet-thumb-popup'));
|
disableOrEnableNavigationButtonsInImagePopup($('#queet-thumb-popup'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2597,12 +2627,13 @@ $('body').on('click','.action-reply-container',function(){
|
||||||
var this_stream_item_id = this_stream_item.attr('data-quitter-id');
|
var this_stream_item_id = this_stream_item.attr('data-quitter-id');
|
||||||
this_stream_item.addClass('replying-to');
|
this_stream_item.addClass('replying-to');
|
||||||
|
|
||||||
// grabbing the queet and view it in the popup, stripped of footer, reply box and other sruff
|
// grabbing the stream-item and view it in the popup, stripped of conversation footer, reply box and other sruff
|
||||||
var $queetHtml = $(this_stream_item.outerHTML());
|
var streamItemHTML = $('<div/>').html(this_stream_item.outerHTML());
|
||||||
$queetHtml.children('.stream-item.conversation').remove();
|
cleanStreamItemsFromClassesAndConversationElements(streamItemHTML);
|
||||||
$queetHtml.find('.context,.stream-item-footer,.inline-reply-queetbox,.expanded-content').remove();
|
streamItemHTML.find('.context,.stream-item-footer').remove();
|
||||||
var queetHtmlWithoutFooter = $queetHtml.outerHTML();
|
var streamItemHTMLWithoutFooter = streamItemHTML.outerHTML();
|
||||||
popUpAction('popup-reply-' + this_stream_item_id, window.sL.replyTo + ' ' + this_stream_item.children('.queet').find('.screen-name').html(),replyFormHtml(this_stream_item,this_stream_item_id),queetHtmlWithoutFooter);
|
|
||||||
|
popUpAction('popup-reply-' + this_stream_item_id, window.sL.replyTo + ' ' + this_stream_item.children('.queet').find('.screen-name').html(),replyFormHtml(this_stream_item,this_stream_item_id),streamItemHTMLWithoutFooter);
|
||||||
|
|
||||||
$('#popup-reply-' + this_stream_item_id).find('.modal-body').find('.queet-box').trigger('click'); // expand
|
$('#popup-reply-' + this_stream_item_id).find('.modal-body').find('.queet-box').trigger('click'); // expand
|
||||||
|
|
||||||
|
@ -4140,20 +4171,62 @@ function uploadAttachment(e, thisUploadButton) {
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
· Small edit profile button on mini-card. Go-to user stream and hit edit button
|
· Small edit profile button on hover cards goes to edit profile
|
||||||
·
|
·
|
||||||
· · · · · · · · · · · · · */
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
$('body').on('click','#mini-edit-profile-button, #edit-profile-header-link, .hover-card .edit-profile-button, .row-type-edit-profile-menu-link',function(){
|
$('body').on('click','.hover-card .edit-profile-button',function(){
|
||||||
|
goToEditProfile();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· User menu when clicking the mini cog wheel in the logged in mini card
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
$('body').on('click','#mini-logged-in-user-cog-wheel:not(.dropped)',function(){
|
||||||
|
var menu = $(getMenu(loggedInUsersMenuArray())).appendTo(this);
|
||||||
|
alignMenuToParent(menu,$(this));
|
||||||
|
$(this).addClass('dropped');
|
||||||
|
});
|
||||||
|
// hide when clicking it again
|
||||||
|
$('body').on('click','#mini-logged-in-user-cog-wheel.dropped',function(e){
|
||||||
|
if($(e.target).is('#mini-logged-in-user-cog-wheel')) {
|
||||||
|
$('#mini-logged-in-user-cog-wheel').children('.dropdown-menu').remove();
|
||||||
|
$('#mini-logged-in-user-cog-wheel').removeClass('dropped');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// hide the menu when clicking outside it
|
||||||
|
$('body').on('click',function(e){
|
||||||
|
if($('#mini-logged-in-user-cog-wheel').hasClass('dropped') && !$(e.target).closest('#mini-logged-in-user-cog-wheel').length>0) {
|
||||||
|
$('#mini-logged-in-user-cog-wheel').children('.dropdown-menu').remove();
|
||||||
|
$('#mini-logged-in-user-cog-wheel').removeClass('dropped');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Goes to edit profile
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function goToEditProfile(arg, callback) {
|
||||||
if(window.currentStreamObject.name == 'my profile') {
|
if(window.currentStreamObject.name == 'my profile') {
|
||||||
$('#page-container > .profile-card .edit-profile-button').trigger('click');
|
$('#page-container > .profile-card .edit-profile-button').trigger('click');
|
||||||
|
if(typeof callback == 'function') {
|
||||||
|
callback(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
setNewCurrentStream(pathToStreamRouter(window.loggedIn.screen_name), true, false, function(){
|
setNewCurrentStream(pathToStreamRouter(window.loggedIn.screen_name), true, false, function(){
|
||||||
$('#page-container > .profile-card .edit-profile-button').trigger('click');
|
$('#page-container > .profile-card .edit-profile-button').trigger('click');
|
||||||
});
|
if(typeof callback == 'function') {
|
||||||
|
callback(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
function triggerEditProfileButtonClick() {
|
}
|
||||||
$('#user-header #mini-edit-profile-button').trigger('click');
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -583,6 +583,13 @@ function pathToStreamRouter(path) {
|
||||||
label: window.sL.onlyShowNotificationsFromUsersIFollow,
|
label: window.sL.onlyShowNotificationsFromUsersIFollow,
|
||||||
callback: 'reloadCurrentStreamAndClearCache'
|
callback: 'reloadCurrentStreamAndClearCache'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'hide_notifications_from_muted_users',
|
||||||
|
label: window.sL.hideNotificationsFromMutedUsers,
|
||||||
|
callback: 'showOrHideNoticesFromMutedUsersInNotifications'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'divider'
|
type: 'divider'
|
||||||
},
|
},
|
||||||
|
@ -617,7 +624,8 @@ function pathToStreamRouter(path) {
|
||||||
];
|
];
|
||||||
streamObject.callbacks = [
|
streamObject.callbacks = [
|
||||||
'showOrHideEmbeddedContentInTimelineFromProfilePref',
|
'showOrHideEmbeddedContentInTimelineFromProfilePref',
|
||||||
'showOrHideQuotesInTimelineFromProfilePref'
|
'showOrHideQuotesInTimelineFromProfilePref',
|
||||||
|
'showOrHideNoticesFromMutedUsersInNotifications'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return streamObject;
|
return streamObject;
|
||||||
|
@ -692,8 +700,7 @@ function pathToStreamRouter(path) {
|
||||||
if(pathSplit.length == 2 && /^[a-zA-Z0-9]+$/.test(pathSplit[0]) && pathSplit[1] == 'blocks') {
|
if(pathSplit.length == 2 && /^[a-zA-Z0-9]+$/.test(pathSplit[0]) && pathSplit[1] == 'blocks') {
|
||||||
streamObject.name = 'user blocks';
|
streamObject.name = 'user blocks';
|
||||||
streamObject.nickname = pathSplit[0];
|
streamObject.nickname = pathSplit[0];
|
||||||
streamObject.parentPath = streamObject.nickname;
|
streamObject.streamHeader = window.sL.userBlocked;
|
||||||
streamObject.streamHeader = '@' + replaceHtmlSpecialChars(streamObject.nickname);
|
|
||||||
streamObject.streamSubHeader = window.sL.userBlocks;
|
streamObject.streamSubHeader = window.sL.userBlocks;
|
||||||
streamObject.stream = 'qvitter/blocks.json?count=20&id=' + streamObject.nickname + '&withuserarray=1';
|
streamObject.stream = 'qvitter/blocks.json?count=20&id=' + streamObject.nickname + '&withuserarray=1';
|
||||||
streamObject.maxIdOrPage = 'page';
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
@ -701,6 +708,19 @@ function pathToStreamRouter(path) {
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {screen_name}/mutes
|
||||||
|
if(pathSplit.length == 2 && /^[a-zA-Z0-9]+$/.test(pathSplit[0]) && pathSplit[1] == 'mutes') {
|
||||||
|
streamObject.name = 'user mutes';
|
||||||
|
streamObject.nickname = pathSplit[0];
|
||||||
|
streamObject.streamHeader = window.sL.userMuted;
|
||||||
|
streamObject.streamSubHeader = window.sL.userMutes;
|
||||||
|
streamObject.streamDescription = window.sL.mutedStreamDescription;
|
||||||
|
streamObject.stream = 'qvitter/mutes.json?count=20&withuserarray=1';
|
||||||
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
streamObject.type = 'users';
|
||||||
|
return streamObject;
|
||||||
|
}
|
||||||
|
|
||||||
// {screen_name}/groups
|
// {screen_name}/groups
|
||||||
if(pathSplit.length == 2 && /^[a-zA-Z0-9]+$/.test(pathSplit[0]) && pathSplit[1] == 'groups') {
|
if(pathSplit.length == 2 && /^[a-zA-Z0-9]+$/.test(pathSplit[0]) && pathSplit[1] == 'groups') {
|
||||||
streamObject.name = 'user group list';
|
streamObject.name = 'user group list';
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
"cropAndSave": "قُص و احفظ.",
|
"cropAndSave": "قُص و احفظ.",
|
||||||
"showTerms": "Read our Terms of Use",
|
"showTerms": "Read our Terms of Use",
|
||||||
"ellipsisMore": "More",
|
"ellipsisMore": "More",
|
||||||
"blockUser": "Block {username}",
|
"blockUser": "Block",
|
||||||
"goToOriginalNotice": "Go to original notice",
|
"goToOriginalNotice": "Go to original notice",
|
||||||
"goToTheUsersRemoteProfile": "Go to the user's remote profile",
|
"goToTheUsersRemoteProfile": "Go to the user's remote profile",
|
||||||
"clickToDrag":"Click to drag",
|
"clickToDrag":"Click to drag",
|
||||||
|
@ -169,7 +169,7 @@
|
||||||
"buttonUnblock":"Unblock",
|
"buttonUnblock":"Unblock",
|
||||||
"failedBlockingUser":"Failed to block the user.",
|
"failedBlockingUser":"Failed to block the user.",
|
||||||
"failedUnblockingUser":"Failed to unblock the user.",
|
"failedUnblockingUser":"Failed to unblock the user.",
|
||||||
"unblockUser": "Unblock {username}",
|
"unblockUser": "Unblock",
|
||||||
"tooltipBlocksYou":"You are blocked from following {username}.",
|
"tooltipBlocksYou":"You are blocked from following {username}.",
|
||||||
"silenced":"Silenced",
|
"silenced":"Silenced",
|
||||||
"silencedPlural":"Silenced profiles",
|
"silencedPlural":"Silenced profiles",
|
||||||
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
"cropAndSave": "Crop and save",
|
"cropAndSave": "Crop and save",
|
||||||
"showTerms": "Read our Terms of Use",
|
"showTerms": "Read our Terms of Use",
|
||||||
"ellipsisMore": "More",
|
"ellipsisMore": "More",
|
||||||
"blockUser": "Block {username}",
|
"blockUser": "Block",
|
||||||
"goToOriginalNotice": "Go to the original quip",
|
"goToOriginalNotice": "Go to the original quip",
|
||||||
"goToTheUsersRemoteProfile": "Go to the user's remote profile",
|
"goToTheUsersRemoteProfile": "Go to the user's remote profile",
|
||||||
"clickToDrag":"Click to drag",
|
"clickToDrag":"Click to drag",
|
||||||
|
@ -169,7 +169,7 @@
|
||||||
"buttonUnblock":"Unblock",
|
"buttonUnblock":"Unblock",
|
||||||
"failedBlockingUser":"Failed to block the user.",
|
"failedBlockingUser":"Failed to block the user.",
|
||||||
"failedUnblockingUser":"Failed to unblock the user.",
|
"failedUnblockingUser":"Failed to unblock the user.",
|
||||||
"unblockUser": "Unblock {username}",
|
"unblockUser": "Unblock",
|
||||||
"tooltipBlocksYou":"You are blocked from following {username}.",
|
"tooltipBlocksYou":"You are blocked from following {username}.",
|
||||||
"silenced":"Silenced",
|
"silenced":"Silenced",
|
||||||
"silencedPlural":"Silenced profiles",
|
"silencedPlural":"Silenced profiles",
|
||||||
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Malsilentigi {nickname}",
|
"unSilenceThisUser":"Malsilentigi {nickname}",
|
||||||
"unSandboxThisUser":"Malsablokesti {nickname}",
|
"unSandboxThisUser":"Malsablokesti {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Malsukcesis sablokestigi/malsablokestigi la uzanton",
|
"ERRORfailedSandboxingUser":"Malsukcesis sablokestigi/malsablokestigi la uzanton",
|
||||||
"ERRORfailedSilencingUser":"Malsukcesis silentigi/malsilentigi la uzanton"
|
"ERRORfailedSilencingUser":"Malsukcesis silentigi/malsilentigi la uzanton",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,5 +187,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Opphev forstumming for {nickname}",
|
"unSilenceThisUser":"Opphev forstumming for {nickname}",
|
||||||
"unSandboxThisUser":"Opphev lekekasse for {nickname}",
|
"unSandboxThisUser":"Opphev lekekasse for {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Feilet ved forsøk på å sette i lekekasse/oppheve lekekasse av bruker",
|
"ERRORfailedSandboxingUser":"Feilet ved forsøk på å sette i lekekasse/oppheve lekekasse av bruker",
|
||||||
"ERRORfailedSilencingUser":"Feilet ved forstumming/oppheving av forstumming av bruker"
|
"ERRORfailedSilencingUser":"Feilet ved forstumming/oppheving av forstumming av bruker",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Ontdemp {nickname}",
|
"unSilenceThisUser":"Ontdemp {nickname}",
|
||||||
"unSandboxThisUser":"Beperking opheffen {nickname}",
|
"unSandboxThisUser":"Beperking opheffen {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Beperking/beperking opheffen voor gebruiker gefaald.",
|
"ERRORfailedSandboxingUser":"Beperking/beperking opheffen voor gebruiker gefaald.",
|
||||||
"ERRORfailedSilencingUser":"Dempen/ontdempen gebruiker gefaald."
|
"ERRORfailedSilencingUser":"Dempen/ontdempen gebruiker gefaald.",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Permitir {nickname}",
|
"unSilenceThisUser":"Permitir {nickname}",
|
||||||
"unSandboxThisUser":"Liberar {nickname}",
|
"unSandboxThisUser":"Liberar {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Falha ao restringir/liberar o usuário",
|
"ERRORfailedSandboxingUser":"Falha ao restringir/liberar o usuário",
|
||||||
"ERRORfailedSilencingUser":"Falha ao silenciar/permitir o usuário"
|
"ERRORfailedSilencingUser":"Falha ao silenciar/permitir o usuário",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,5 +184,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,7 @@
|
||||||
"continueRant":"Fortsätt harangen",
|
"continueRant":"Fortsätt harangen",
|
||||||
"hideEmbeddedInTimeline":"Dölj inbäddat innehåll i detta flöde",
|
"hideEmbeddedInTimeline":"Dölj inbäddat innehåll i detta flöde",
|
||||||
"hideQuotesInTimeline":"Dölj citat i detta flöde",
|
"hideQuotesInTimeline":"Dölj citat i detta flöde",
|
||||||
"userBlocks":"Konton du blockerar",
|
"userBlocks":"Konton som du blockerar",
|
||||||
"buttonBlocked":"Blockerad",
|
"buttonBlocked":"Blockerad",
|
||||||
"buttonUnblock":"Avblockera",
|
"buttonUnblock":"Avblockera",
|
||||||
"failedBlockingUser":"Misslyckades med att blockera användaren.",
|
"failedBlockingUser":"Misslyckades med att blockera användaren.",
|
||||||
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Ta bort nedtystning av {nickname}",
|
"unSilenceThisUser":"Ta bort nedtystning av {nickname}",
|
||||||
"unSandboxThisUser":"Ta {nickname} ur sandlådan",
|
"unSandboxThisUser":"Ta {nickname} ur sandlådan",
|
||||||
"ERRORfailedSandboxingUser":"Misslyckades med att sätta/ta ur användaren i sandlådan",
|
"ERRORfailedSandboxingUser":"Misslyckades med att sätta/ta ur användaren i sandlådan",
|
||||||
"ERRORfailedSilencingUser":"Misslyckades med att tysta ner eller ta bort nedtystning"
|
"ERRORfailedSilencingUser":"Misslyckades med att tysta ner eller ta bort nedtystning",
|
||||||
|
"muteUser":"Ignorera",
|
||||||
|
"unmuteUser":"Sluta ignorera",
|
||||||
|
"hideNotificationsFromMutedUsers":"Dölj notiser från användare som du ignorerar",
|
||||||
|
"thisIsANoticeFromAMutedUser":"Det här är en qvittring från en användare som du ignorerar. Klicka här för att visa kvittringen.",
|
||||||
|
"userMutes":"Konton som du ignorerar",
|
||||||
|
"userBlocked":"Blockerade konton",
|
||||||
|
"userMuted":"Ignorerade konton",
|
||||||
|
"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",
|
||||||
|
"profileSettings":"Profilinställningar"
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,5 +186,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,5 +185,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,5 +185,15 @@
|
||||||
"unSilenceThisUser":"Unsilence {nickname}",
|
"unSilenceThisUser":"Unsilence {nickname}",
|
||||||
"unSandboxThisUser":"Unsandbox {nickname}",
|
"unSandboxThisUser":"Unsandbox {nickname}",
|
||||||
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
"ERRORfailedSandboxingUser":"Failed sandboxing/unsandboxing the user",
|
||||||
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user"
|
"ERRORfailedSilencingUser":"Failed silencing/unsilencing the user",
|
||||||
|
"muteUser":"Mute",
|
||||||
|
"unmuteUser":"Unmute",
|
||||||
|
"hideNotificationsFromMutedUsers":"Hide notifications from muted users",
|
||||||
|
"thisIsANoticeFromAMutedUser":"You have muted the author of this quip. Click here to show it anyway.",
|
||||||
|
"userMutes":"Accounts you're muting",
|
||||||
|
"userBlocked":"Blocked 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.",
|
||||||
|
"profileAndSettings":"Profile and settings",
|
||||||
|
"profileSettings":"Profile settings"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user