stream menus, mark all notifications as read, opt-out from certain notifications
This commit is contained in:
parent
560b71d93b
commit
fd43133f0f
|
@ -141,6 +141,10 @@ class QvitterPlugin extends Plugin {
|
||||||
public function onRouterInitialized($m)
|
public function onRouterInitialized($m)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$m->connect('api/qvitter/hello.json',
|
||||||
|
array('action' => 'ApiQvitterHello'));
|
||||||
|
$m->connect('api/qvitter/mark_all_notifications_as_seen.json',
|
||||||
|
array('action' => 'ApiQvitterMarkAllNotificationsAsSeen'));
|
||||||
$m->connect('api/qvitter/favs_and_repeats/:notice_id.json',
|
$m->connect('api/qvitter/favs_and_repeats/:notice_id.json',
|
||||||
array('action' => 'ApiFavsAndRepeats'),
|
array('action' => 'ApiFavsAndRepeats'),
|
||||||
array('notice_id' => '[0-9]+'));
|
array('notice_id' => '[0-9]+'));
|
||||||
|
@ -149,6 +153,8 @@ class QvitterPlugin extends Plugin {
|
||||||
'format' => '(xml|json|rss|atom|as)'));
|
'format' => '(xml|json|rss|atom|as)'));
|
||||||
$m->connect('api/qvitter/update_bookmarks.json',
|
$m->connect('api/qvitter/update_bookmarks.json',
|
||||||
array('action' => 'ApiQvitterUpdateBookmarks'));
|
array('action' => 'ApiQvitterUpdateBookmarks'));
|
||||||
|
$m->connect('api/qvitter/set_profile_pref.json',
|
||||||
|
array('action' => 'ApiQvitterSetProfilePref'));
|
||||||
$m->connect('api/qvitter/update_link_color.json',
|
$m->connect('api/qvitter/update_link_color.json',
|
||||||
array('action' => 'apiqvitterupdatelinkcolor'));
|
array('action' => 'apiqvitterupdatelinkcolor'));
|
||||||
$m->connect('api/qvitter/update_background_color.json',
|
$m->connect('api/qvitter/update_background_color.json',
|
||||||
|
@ -1020,6 +1026,27 @@ class QvitterPlugin extends Plugin {
|
||||||
$notification->selectAdd('ntype');
|
$notification->selectAdd('ntype');
|
||||||
$notification->selectAdd('count(id) as count');
|
$notification->selectAdd('count(id) as count');
|
||||||
$notification->whereAdd("(to_profile_id = '".$user_id."')");
|
$notification->whereAdd("(to_profile_id = '".$user_id."')");
|
||||||
|
|
||||||
|
// the user might have opted out from certain notification types
|
||||||
|
$current_profile = $user->getProfile();
|
||||||
|
$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_repeats = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_repeats');
|
||||||
|
$disable_notify_follows = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_follows');
|
||||||
|
if($disable_notify_replies_and_mentions == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "mention"');
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "reply"');
|
||||||
|
}
|
||||||
|
if($disable_notify_favs == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "like"');
|
||||||
|
}
|
||||||
|
if($disable_notify_repeats == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "repeat"');
|
||||||
|
}
|
||||||
|
if($disable_notify_follows == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "follow"');
|
||||||
|
}
|
||||||
|
|
||||||
$notification->groupBy('ntype');
|
$notification->groupBy('ntype');
|
||||||
$notification->whereAdd("(is_seen = '0')");
|
$notification->whereAdd("(is_seen = '0')");
|
||||||
$notification->whereAdd("(notice_id IS NOT NULL)"); // sometimes notice_id is NULL, those notifications are corrupt and should be discarded
|
$notification->whereAdd("(notice_id IS NOT NULL)"); // sometimes notice_id is NULL, those notifications are corrupt and should be discarded
|
||||||
|
|
78
actions/apiqvitterhello.php
Normal file
78
actions/apiqvitterhello.php
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· Say hello to the API ·
|
||||||
|
· (you will also get headers with e.g. unread notification count....) ·
|
||||||
|
· ·
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· Q V I T T E R ·
|
||||||
|
· ·
|
||||||
|
· http://github.com/hannesmannerheim/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 ApiQvitterHelloAction extends ApiAuthAction
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Take arguments for running
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST args
|
||||||
|
*
|
||||||
|
* @return boolean success flag
|
||||||
|
*/
|
||||||
|
protected function prepare(array $args=array())
|
||||||
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the request
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST data (unused)
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function handle()
|
||||||
|
{
|
||||||
|
parent::handle();
|
||||||
|
|
||||||
|
$this->initDocument('json');
|
||||||
|
$this->showJsonObjects('hello');
|
||||||
|
$this->endDocument('json');
|
||||||
|
}
|
||||||
|
}
|
94
actions/apiqvittermarkallnotificationsasseen.php
Normal file
94
actions/apiqvittermarkallnotificationsasseen.php
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· Say hello to the API ·
|
||||||
|
· (you will also get headers with e.g. unread notification count....) ·
|
||||||
|
· ·
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· Q V I T T E R ·
|
||||||
|
· ·
|
||||||
|
· http://github.com/hannesmannerheim/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 ApiQvitterMarkAllNotificationsAsSeenAction extends ApiAuthAction
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Take arguments for running
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST args
|
||||||
|
*
|
||||||
|
* @return boolean success flag
|
||||||
|
*/
|
||||||
|
protected function prepare(array $args=array())
|
||||||
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the request
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST data (unused)
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function handle()
|
||||||
|
{
|
||||||
|
parent::handle();
|
||||||
|
|
||||||
|
$n = new QvitterNotification();
|
||||||
|
$n->selectAdd();
|
||||||
|
$n->selectAdd('id');
|
||||||
|
$n->whereAdd(sprintf('qvitternotification.to_profile_id = "%s"', $n->escape($this->auth_user->id)));
|
||||||
|
$ids = $n->fetchAll('id');
|
||||||
|
$notifications = QvitterNotification::pivotGet('id', $ids);
|
||||||
|
$notifications = new ArrayWrapper($notifications);
|
||||||
|
$notifications = $notifications->fetchAll();
|
||||||
|
foreach($notifications as $notification) {
|
||||||
|
if($notification->is_seen == 0) {
|
||||||
|
$orig = clone($notification);
|
||||||
|
$notification->is_seen = 1;
|
||||||
|
$notification->update($orig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->initDocument('json');
|
||||||
|
$this->showJsonObjects(true);
|
||||||
|
$this->endDocument('json');
|
||||||
|
}
|
||||||
|
}
|
88
actions/apiqvittersetprofilepref.php
Normal file
88
actions/apiqvittersetprofilepref.php
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· Set any topic in Profile_prefs ·
|
||||||
|
· ·
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
· ·
|
||||||
|
· ·
|
||||||
|
· Q V I T T E R ·
|
||||||
|
· ·
|
||||||
|
· http://github.com/hannesmannerheim/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 ApiQvitterSetProfilePrefAction extends ApiAuthAction
|
||||||
|
{
|
||||||
|
var $prefNamespace = null;
|
||||||
|
var $prefTopic = null;
|
||||||
|
var $prefData = null;
|
||||||
|
|
||||||
|
protected $needPost = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Take arguments for running
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST args
|
||||||
|
*
|
||||||
|
* @return boolean success flag
|
||||||
|
*/
|
||||||
|
protected function prepare(array $args=array())
|
||||||
|
{
|
||||||
|
parent::prepare($args);
|
||||||
|
|
||||||
|
$this->prefNamespace = $this->trimmed('namespace');
|
||||||
|
$this->prefTopic = $this->trimmed('topic');
|
||||||
|
$this->prefData = $this->trimmed('data');
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the request
|
||||||
|
*
|
||||||
|
* @param array $args $_REQUEST data (unused)
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function handle()
|
||||||
|
{
|
||||||
|
parent::handle();
|
||||||
|
|
||||||
|
// save the new bookmarks
|
||||||
|
$saved = Profile_prefs::setData($this->scoped, $this->prefNamespace, $this->prefTopic, $this->prefData);
|
||||||
|
|
||||||
|
$this->initDocument('json');
|
||||||
|
$this->showJsonObjects($saved);
|
||||||
|
$this->endDocument('json');
|
||||||
|
}
|
||||||
|
}
|
|
@ -251,14 +251,18 @@ class QvitterAction extends ApiAction
|
||||||
window.siteLocalOnlyDefaultPath = <?php print (common_config('public', 'localonly') ? 'true' : 'false'); ?>;
|
window.siteLocalOnlyDefaultPath = <?php print (common_config('public', 'localonly') ? 'true' : 'false'); ?>;
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// bookmarks
|
// Get all topics in Qvitter's namespace in Profile_prefs
|
||||||
if($logged_in_user) {
|
if($logged_in_user) {
|
||||||
$bookmarks = Profile_prefs::getConfigData(Profile::current(), 'qvitter', 'bookmarks');
|
$qvitter_profile_prefs = Profile_prefs::getNamespace(Profile::current(),'qvitter');
|
||||||
if($bookmarks) {
|
if(count($qvitter_profile_prefs)>0) {
|
||||||
print 'window.allBookmarks = '.$bookmarks.';';
|
$topic_data = new stdClass();
|
||||||
|
foreach($qvitter_profile_prefs as $pref) {
|
||||||
|
$topic_data->{$pref->topic} = $pref->data;
|
||||||
|
}
|
||||||
|
print 'window.qvitterProfilePrefs = '.json_encode($topic_data).';';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
print 'window.allBookmarks = false;';
|
print 'window.qvitterProfilePrefs = false;';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
@ -604,7 +608,7 @@ class QvitterAction extends ApiAction
|
||||||
color:/*COLORSTART*/<?php print QvitterPlugin::settings("defaultlinkcolor"); ?>/*COLOREND*/;
|
color:/*COLORSTART*/<?php print QvitterPlugin::settings("defaultlinkcolor"); ?>/*COLOREND*/;
|
||||||
}
|
}
|
||||||
#unseen-notifications,
|
#unseen-notifications,
|
||||||
.stream-item.notification .not-seen,
|
.stream-item.notification .not-seen-disc,
|
||||||
#top-compose,
|
#top-compose,
|
||||||
#logo,
|
#logo,
|
||||||
.queet-toolbar button,
|
.queet-toolbar button,
|
||||||
|
@ -618,7 +622,8 @@ class QvitterAction extends ApiAction
|
||||||
.save-profile-button,
|
.save-profile-button,
|
||||||
.crop-and-save-button,
|
.crop-and-save-button,
|
||||||
.topbar .global-nav.show-logo:before,
|
.topbar .global-nav.show-logo:before,
|
||||||
.topbar .global-nav.pulse-logo:before {
|
.topbar .global-nav.pulse-logo:before,
|
||||||
|
.dropdown-menu li:not(.dropdown-caret) a:hover {
|
||||||
background-color:/*BACKGROUNDCOLORSTART*/<?php print QvitterPlugin::settings("defaultlinkcolor"); ?>/*BACKGROUNDCOLOREND*/;
|
background-color:/*BACKGROUNDCOLORSTART*/<?php print QvitterPlugin::settings("defaultlinkcolor"); ?>/*BACKGROUNDCOLOREND*/;
|
||||||
}
|
}
|
||||||
.queet-box-syntax[contenteditable="true"]:focus,
|
.queet-box-syntax[contenteditable="true"]:focus,
|
||||||
|
|
|
@ -33,20 +33,42 @@ class NotificationStream
|
||||||
*/
|
*/
|
||||||
function getNotificationIds($offset, $limit, $since_id, $max_id)
|
function getNotificationIds($offset, $limit, $since_id, $max_id)
|
||||||
{
|
{
|
||||||
|
|
||||||
$notification = new QvitterNotification();
|
$notification = new QvitterNotification();
|
||||||
$notification->selectAdd();
|
$notification->selectAdd();
|
||||||
$notification->selectAdd('id');
|
$notification->selectAdd('id');
|
||||||
$notification->whereAdd(sprintf('qvitternotification.to_profile_id = "%s"', $notification->escape($this->target->id)));
|
$notification->whereAdd(sprintf('qvitternotification.to_profile_id = "%s"', $notification->escape($this->target->id)));
|
||||||
$notification->whereAdd(sprintf('qvitternotification.created >= "%s"', $notification->escape($this->target->created)));
|
$notification->whereAdd(sprintf('qvitternotification.created >= "%s"', $notification->escape($this->target->created)));
|
||||||
|
|
||||||
|
// the user might have opted out from certain notification types
|
||||||
|
$current_profile = Profile::current();
|
||||||
|
$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_repeats = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_repeats');
|
||||||
|
$disable_notify_follows = Profile_prefs::getConfigData($current_profile, 'qvitter', 'disable_notify_follows');
|
||||||
|
if($disable_notify_replies_and_mentions == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "mention"');
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "reply"');
|
||||||
|
}
|
||||||
|
if($disable_notify_favs == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "like"');
|
||||||
|
}
|
||||||
|
if($disable_notify_repeats == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "repeat"');
|
||||||
|
}
|
||||||
|
if($disable_notify_follows == '1') {
|
||||||
|
$notification->whereAdd('qvitternotification.ntype != "follow"');
|
||||||
|
}
|
||||||
|
|
||||||
$notification->limit($offset, $limit);
|
$notification->limit($offset, $limit);
|
||||||
$notification->orderBy('qvitternotification.created DESC');
|
$notification->orderBy('qvitternotification.created DESC');
|
||||||
|
|
||||||
if($since_id) {
|
if($since_id) {
|
||||||
$notification->whereAdd(sprintf('qvitternotification.id > %d', $notification->escape($since_id)));
|
$notification->whereAdd(sprintf('qvitternotification.id > %d', $notification->escape($since_id)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if($max_id) {
|
if($max_id) {
|
||||||
$notification->whereAdd(sprintf('qvitternotification.id <= %d', $notification->escape($max_id)));
|
$notification->whereAdd(sprintf('qvitternotification.id <= %d', $notification->escape($max_id)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$notification->find()) {
|
if (!$notification->find()) {
|
||||||
|
@ -84,7 +106,7 @@ class NotificationStream
|
||||||
|
|
||||||
return new ArrayWrapper($all);
|
return new ArrayWrapper($all);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -481,20 +481,6 @@ body.rtl .dropdown-menu li:not(.dropdown-caret) {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.dropdown-menu li:not(.dropdown-caret) a:hover {
|
.dropdown-menu li:not(.dropdown-caret) a:hover {
|
||||||
background-color: #2271A9;
|
|
||||||
background: -moz-linear-gradient(top, #2f7eb6 0px, #2271a9 100%); /* FF3.6+ */
|
|
||||||
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0px,#2f7eb6), color-stop(100%,#2271a9)); /* Chrome,Safari4+ */
|
|
||||||
|
|
||||||
background: -webkit-linear-gradient(top, #2f7eb6 0px,#2271a9 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
|
|
||||||
background: -o-linear-gradient(top, #2f7eb6 0px,#2271a9 100%); /* Opera 11.10+ */
|
|
||||||
|
|
||||||
background: -ms-linear-gradient(top, #2f7eb6 0px,#2271a9 100%); /* IE10+ */
|
|
||||||
|
|
||||||
background: linear-gradient(to bottom, #2f7eb6 0px,#2271a9 100%); /* W3C */
|
|
||||||
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
@ -516,6 +502,37 @@ body.rtl .dropdown-menu li:not(.dropdown-caret) {
|
||||||
width:auto;
|
width:auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-menu .row-type-profile-prefs-toggle::before {
|
||||||
|
position: absolute;
|
||||||
|
height:24px;
|
||||||
|
width:18px;
|
||||||
|
text-align: center;
|
||||||
|
left: 3px;
|
||||||
|
font-family: fontAwesome;
|
||||||
|
content:'\f00c';
|
||||||
|
font-size:10px;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
.dropdown-menu .row-type-profile-prefs-toggle.disabled::before {
|
||||||
|
content:' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* these toggles are inverted, they appear the the user as disabled when enabled,
|
||||||
|
since they are enabled by default....*/
|
||||||
|
.dropdown-menu a#disable_notify_replies_and_mentions.disabled::before,
|
||||||
|
.dropdown-menu a#disable_notify_favs.disabled::before,
|
||||||
|
.dropdown-menu a#disable_notify_repeats.disabled::before,
|
||||||
|
.dropdown-menu a#disable_notify_follows.disabled::before {
|
||||||
|
content:'\f00c';
|
||||||
|
}
|
||||||
|
.dropdown-menu a#disable_notify_replies_and_mentions.enabled::before,
|
||||||
|
.dropdown-menu a#disable_notify_favs.enabled::before,
|
||||||
|
.dropdown-menu a#disable_notify_repeats.enabled::before,
|
||||||
|
.dropdown-menu a#disable_notify_follows.enabled::before {
|
||||||
|
content:' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#invite-link {
|
#invite-link {
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
|
@ -1569,6 +1586,27 @@ body.rtl #footer-spinner-container {
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#stream-menu-cog {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
margin-left: 9px;
|
||||||
|
opacity: 0.4;
|
||||||
|
position: relative;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
#stream-menu-cog::before {
|
||||||
|
content:'\f013';
|
||||||
|
font-family: fontAwesome;
|
||||||
|
}
|
||||||
|
#stream-menu-cog.dropped {
|
||||||
|
opacity:1;
|
||||||
|
}
|
||||||
|
#stream-menu-cog .dropdown-menu {
|
||||||
|
z-index:1000;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
|
||||||
.queet-streams {
|
.queet-streams {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
color: #999999;
|
color: #999999;
|
||||||
|
@ -1687,7 +1725,7 @@ body.rtl #footer-spinner-container {
|
||||||
background-color:#F6F6F6;
|
background-color:#F6F6F6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stream-item.notification .not-seen {
|
.stream-item.notification .not-seen-disc {
|
||||||
position:absolute;
|
position:absolute;
|
||||||
left:-5px;
|
left:-5px;
|
||||||
top:50%;
|
top:50%;
|
||||||
|
|
|
@ -186,6 +186,23 @@ function getFromAPI(stream, actionOnSuccess) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Hello to the API! When saying hello you will e.g. also get headers
|
||||||
|
· with up-to-date unread notifications count to update etc
|
||||||
|
·
|
||||||
|
· @param callback: function to invoke when done
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function helloAPI(callback) {
|
||||||
|
getFromAPI('qvitter/hello.json',function(){
|
||||||
|
if(typeof callback == 'function') {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -309,6 +326,34 @@ function postNewBackgroundColor(newBackgroundColor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Set a profile pref
|
||||||
|
·
|
||||||
|
· @param namespace: the namespace field in the db table, should be 'qvitter'
|
||||||
|
· @param topic: the topic field in the db table,
|
||||||
|
· @param data: the data to set
|
||||||
|
· @param callback: function to run when finished
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function postSetProfilePref(namespace, topic, data, callback) {
|
||||||
|
$.ajax({ url: window.apiRoot + 'qvitter/set_profile_pref.json',
|
||||||
|
cache: false,
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
namespace: namespace,
|
||||||
|
topic: topic,
|
||||||
|
data: data
|
||||||
|
},
|
||||||
|
dataType:"json",
|
||||||
|
error: function(data){ callback(false); },
|
||||||
|
success: function(data) {
|
||||||
|
callback(data); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
|
|
@ -37,6 +37,104 @@
|
||||||
· ·
|
· ·
|
||||||
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · */
|
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Build a menu for a stream, if there is any to build
|
||||||
|
·
|
||||||
|
· Stream menus currently support three row types: divider, functions and profile-prefs-toggles
|
||||||
|
· They are defined in stream-router.js. Function rows run the function in
|
||||||
|
· the function attribute when clicked. Profile-prefs-toggle rows toggles the
|
||||||
|
· preference in the attribute when clicked.
|
||||||
|
·
|
||||||
|
· @param streamObject: stream object returned by pathToStreamRouter()
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function streamObjectGetMenu(streamObject) {
|
||||||
|
if(typeof streamObject == 'undefined') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(streamObject.menu === false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var menuHTML = buildMenuTop();
|
||||||
|
$.each(streamObject.menu,function(){
|
||||||
|
if(this.type == 'divider') {
|
||||||
|
menuHTML = menuHTML + buildMenuDivider();
|
||||||
|
}
|
||||||
|
else if(this.type == 'function') {
|
||||||
|
menuHTML = menuHTML + buildMenuRowFullwidth(this.label, {
|
||||||
|
class: 'row-type-' + this.type,
|
||||||
|
'data-menu-row-type': this.type,
|
||||||
|
'data-function-name': this.functionName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if(this.type == 'profile-prefs-toggle') {
|
||||||
|
|
||||||
|
// only prefs in the qvitter namespace is supported
|
||||||
|
if(this.namespace == 'qvitter') {
|
||||||
|
|
||||||
|
// enabled?
|
||||||
|
var prefEnabledOrDisabled = 'disabled';
|
||||||
|
if(typeof window.qvitterProfilePrefs[this.topic] != 'undefined'
|
||||||
|
&& 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';
|
||||||
|
}
|
||||||
|
|
||||||
|
// get row html
|
||||||
|
menuHTML = menuHTML + buildMenuRowFullwidth(this.label, {
|
||||||
|
id: this.topic,
|
||||||
|
class: 'row-type-' + this.type + ' ' + prefEnabledOrDisabled,
|
||||||
|
'data-menu-row-type': this.type,
|
||||||
|
'data-profile-prefs-topic': this.topic,
|
||||||
|
'data-profile-prefs-namespace': this.namespace,
|
||||||
|
'data-profile-pref-state': prefEnabledOrDisabled
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return menuHTML + buildMenuBottom();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Menu components
|
||||||
|
·
|
||||||
|
· · · · · · · · · */
|
||||||
|
|
||||||
|
function buildMenuTop() {
|
||||||
|
return '<ul class="dropdown-menu">\
|
||||||
|
<li class="dropdown-caret right">\
|
||||||
|
<span class="caret-outer"></span>\
|
||||||
|
<span class="caret-inner"></span>\
|
||||||
|
</li>';
|
||||||
|
}
|
||||||
|
function buildMenuBottom() {
|
||||||
|
return '</ul>';
|
||||||
|
}
|
||||||
|
function buildMenuDivider() {
|
||||||
|
return '<li class="fullwidth dropdown-divider"></li>';
|
||||||
|
}
|
||||||
|
function buildMenuRowFullwidth(label, attributes) {
|
||||||
|
var attributesHTML = '';
|
||||||
|
$.each(attributes,function(k,v){
|
||||||
|
attributesHTML = attributesHTML + ' ' + k + '="' + v + '"';
|
||||||
|
});
|
||||||
|
return '<li class="fullwidth"><a' + attributesHTML + '>' + replaceHtmlSpecialChars(label) + '</a></li>';
|
||||||
|
}
|
||||||
|
function alignMenuToParent(menu, parent) {
|
||||||
|
var menuLeft = parent.width()/2 - menu.width() + 15;
|
||||||
|
var menuTop = parent.height()+5;
|
||||||
|
menu.css('left', menuLeft + 'px');
|
||||||
|
menu.css('top', menuTop + 'px');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -388,28 +486,6 @@ function addProfileCardToDOM(data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
|
||||||
·
|
|
||||||
· Adds a profile card before feed element, with data from the first object in the included object
|
|
||||||
·
|
|
||||||
· @param data: an object with one or more queet objects
|
|
||||||
·
|
|
||||||
· · · · · · · · · */
|
|
||||||
|
|
||||||
function profileCardFromFirstObject(data,screen_name) {
|
|
||||||
var first = new Object();
|
|
||||||
for (var i in data) {
|
|
||||||
if (data.hasOwnProperty(i) && typeof(i) !== 'function') {
|
|
||||||
first = data[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(typeof first.user != 'undefined') {
|
|
||||||
addProfileCardToDOM(first.user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
|
@ -571,6 +647,9 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
|
||||||
$('#feed-body').removeAttr('data-end-reached');
|
$('#feed-body').removeAttr('data-end-reached');
|
||||||
$('#feed-header-inner h2').css('opacity','0.2');
|
$('#feed-header-inner h2').css('opacity','0.2');
|
||||||
$('#feed-header-inner h2').html(h2FeedHeader); // update header (could be wrong in cache)
|
$('#feed-header-inner h2').html(h2FeedHeader); // update header (could be wrong in cache)
|
||||||
|
if(streamObject.menu && window.loggedIn) {
|
||||||
|
$('#feed-header-inner h2').append('<div id="stream-menu-cog" data-tooltip="' + window.sL.timelineOptions + '"></div>');
|
||||||
|
}
|
||||||
$('#feed-header-inner h2').animate({opacity:'1'},1000);
|
$('#feed-header-inner h2').animate({opacity:'1'},1000);
|
||||||
|
|
||||||
// set location bar from stream
|
// set location bar from stream
|
||||||
|
@ -598,6 +677,9 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
|
||||||
$('.profile-card,.hover-card,.hover-card-caret').remove();
|
$('.profile-card,.hover-card,.hover-card-caret').remove();
|
||||||
$('#feed-body').html('');
|
$('#feed-body').html('');
|
||||||
$('#feed-header-inner h2').html(h2FeedHeader);
|
$('#feed-header-inner h2').html(h2FeedHeader);
|
||||||
|
if(streamObject.menu && window.loggedIn) {
|
||||||
|
$('#feed-header-inner h2').append('<div id="stream-menu-cog" data-tooltip="' + window.sL.timelineOptions + '"></div>');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,6 +800,12 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
|
||||||
groupProfileCard(streamObject.nickname);
|
groupProfileCard(streamObject.nickname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// say hello to the api if this is notifications stream, to
|
||||||
|
// get correct unread notifcation count
|
||||||
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
|
helloAPI();
|
||||||
|
}
|
||||||
|
|
||||||
// start checking for new queets again
|
// start checking for new queets again
|
||||||
window.clearInterval(checkForNewQueetsInterval);
|
window.clearInterval(checkForNewQueetsInterval);
|
||||||
checkForNewQueetsInterval=window.setInterval(function(){checkForNewQueets()},window.timeBetweenPolling);
|
checkForNewQueetsInterval=window.setInterval(function(){checkForNewQueets()},window.timeBetweenPolling);
|
||||||
|
@ -1067,7 +1155,7 @@ function cleanUpAfterCollapseQueet(q) {
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
· Get an inline queet box
|
· Get a queet box, mainly for popups
|
||||||
·
|
·
|
||||||
· @return the html for the queet box
|
· @return the html for the queet box
|
||||||
·
|
·
|
||||||
|
@ -1499,7 +1587,7 @@ function addToFeed(feed, after, extraClasses, isReply) {
|
||||||
// add not seen notification circle
|
// add not seen notification circle
|
||||||
$.each($('.notification.not-seen .queet'),function(){
|
$.each($('.notification.not-seen .queet'),function(){
|
||||||
if($(this).children('.not-seen').length<1) {
|
if($(this).children('.not-seen').length<1) {
|
||||||
$(this).prepend('<div class="not-seen"></div>');
|
$(this).prepend('<div class="not-seen-disc"></div>');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -612,46 +612,57 @@ function appendUserToMentionsSuggestionsArray(user) {
|
||||||
function displayOrHideUnreadNotifications(notifications) {
|
function displayOrHideUnreadNotifications(notifications) {
|
||||||
|
|
||||||
var data = $.parseJSON(notifications);
|
var data = $.parseJSON(notifications);
|
||||||
|
var totNotif = 0;
|
||||||
|
|
||||||
// if this is notifications page, we use the info from the hidden items in the feed
|
if(data !== null && typeof data != 'undefined') {
|
||||||
if(window.currentStream == 'qvitter/statuses/notifications.json') {
|
|
||||||
var new_queets_num = $('#feed-body').find('.stream-item.notification.hidden').length;
|
|
||||||
|
|
||||||
if(new_queets_num == 0) {
|
|
||||||
document.title = window.siteTitle;
|
|
||||||
$('#unseen-notifications').hide();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
document.title = window.siteTitle + ' (' + new_queets_num + ')';
|
|
||||||
$('#unseen-notifications').html(new_queets_num);
|
|
||||||
$('#unseen-notifications').show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// all other pages use the header info
|
|
||||||
else if(data === null || typeof data == 'undefined' || data.length == 0) {
|
|
||||||
$('#unseen-notifications').hide();
|
|
||||||
document.title = window.siteTitle;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
var totNotif = 0;
|
|
||||||
$.each(data,function(k,v){
|
$.each(data,function(k,v){
|
||||||
totNotif = totNotif + parseInt(v,10);
|
totNotif = totNotif + parseInt(v,10);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if(totNotif>0) {
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
$('#unseen-notifications').html(totNotif);
|
var hiddenNotifications = $('#feed-body').find('.stream-item.hidden:not(.activity)').length;
|
||||||
document.title = window.siteTitle + ' (' + totNotif + ')'; // update html page title
|
if(hiddenNotifications>0) {
|
||||||
$('#unseen-notifications').show();
|
totNotif = totNotif + hiddenNotifications;
|
||||||
}
|
|
||||||
else {
|
|
||||||
$('#unseen-notifications').hide();
|
|
||||||
document.title = window.siteTitle;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(totNotif>0) {
|
||||||
|
$('#unseen-notifications').html(totNotif);
|
||||||
|
document.title = window.siteTitle + ' (' + totNotif + ')'; // update html page title
|
||||||
|
$('#unseen-notifications').show();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#unseen-notifications').hide();
|
||||||
|
document.title = window.siteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Mark all notifications as seen
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
function markAllNotificationsAsSeen() {
|
||||||
|
display_spinner();
|
||||||
|
getFromAPI('qvitter/mark_all_notifications_as_seen.json',function(data){
|
||||||
|
if(data === false) {
|
||||||
|
showErrorMessage(window.sL.ERRORfailedMarkingAllNotificationsAsRead);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
helloAPI(function(){
|
||||||
|
$('.not-seen-disc').remove();
|
||||||
|
$('#new-queets-bar').trigger('click'); // show any hidden notifications (this will also remove the dropdown menu)
|
||||||
|
remove_spinner();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -1196,9 +1207,10 @@ function saveAllBookmarks() {
|
||||||
· · · · · · · · · · · · · */
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
function appendAllBookmarks(bookmarkContainer) {
|
function appendAllBookmarks(bookmarkContainer) {
|
||||||
if(bookmarkContainer) {
|
if(typeof bookmarkContainer != 'undefined' && bookmarkContainer) {
|
||||||
$('#bookmark-container').html('');
|
$('#bookmark-container').html('');
|
||||||
$.each(bookmarkContainer, function(key,obj) {
|
var bookmarkContainerParsed = JSON.parse(bookmarkContainer);
|
||||||
|
$.each(bookmarkContainerParsed, function(key,obj) {
|
||||||
$('#bookmark-container').append('<a class="stream-selection" href="' + obj.dataStreamHref + '">' + obj.dataStreamHeader + '</i><i class="chev-right" data-tooltip="' + window.sL.tooltipRemoveBookmark + '"></i></a>');
|
$('#bookmark-container').append('<a class="stream-selection" href="' + obj.dataStreamHref + '">' + obj.dataStreamHeader + '</i><i class="chev-right" data-tooltip="' + window.sL.tooltipRemoveBookmark + '"></i></a>');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
176
js/qvitter.js
176
js/qvitter.js
|
@ -923,7 +923,7 @@ function doLogin(streamObjectToSet) {
|
||||||
loadHistoryFromLocalStorage();
|
loadHistoryFromLocalStorage();
|
||||||
|
|
||||||
// show bookmarks
|
// show bookmarks
|
||||||
appendAllBookmarks(window.allBookmarks);
|
appendAllBookmarks(window.qvitterProfilePrefs.bookmarks);
|
||||||
|
|
||||||
// set stream
|
// set stream
|
||||||
setNewCurrentStream(streamObjectToSet,true,false,function(){
|
setNewCurrentStream(streamObjectToSet,true,false,function(){
|
||||||
|
@ -1076,6 +1076,108 @@ $('#settingslink').click(function(){
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· Show/hide the stream menu dropdown on click
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
$('body').on('click','#stream-menu-cog',function(e){
|
||||||
|
if(!$(e.target).is('#stream-menu-cog') && $(e.target).closest('#stream-menu-cog').length>0) {
|
||||||
|
// don't show/hide when clicking inside the menu
|
||||||
|
}
|
||||||
|
else if($(this).hasClass('dropped')) {
|
||||||
|
$(this).removeClass('dropped');
|
||||||
|
$(this).children('.dropdown-menu').remove();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(this).addClass('dropped');
|
||||||
|
var menu = $(streamObjectGetMenu(window.currentStreamObject)).appendTo(this);
|
||||||
|
alignMenuToParent(menu,$(this));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// hide the stream menu when clicking outside it
|
||||||
|
$('body').on('click',function(e){
|
||||||
|
if(!$(e.target).is('#stream-menu-cog') && $('#stream-menu-cog').hasClass('dropped') && !$(e.target).closest('#stream-menu-cog').length>0) {
|
||||||
|
$('#stream-menu-cog').children('.dropdown-menu').remove();
|
||||||
|
$('#stream-menu-cog').removeClass('dropped');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· When clicking a function row in a stream menu – invoke the function
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
$('body').on('click','.row-type-function',function(e){
|
||||||
|
window[$(this).attr('data-function-name')]();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/* ·
|
||||||
|
·
|
||||||
|
· When toggeling a a profile pref in a dropdown menu
|
||||||
|
·
|
||||||
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
|
$('body').on('click','.row-type-profile-prefs-toggle',function(e){
|
||||||
|
|
||||||
|
var thisToggle = $(this);
|
||||||
|
|
||||||
|
// wait for last toggle to finish before toggeling again
|
||||||
|
if(thisToggle.hasClass('clicked')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(thisToggle.attr('data-profile-pref-state') == 'disabled') {
|
||||||
|
var prefDataToSet = '1';
|
||||||
|
}
|
||||||
|
else if(thisToggle.attr('data-profile-pref-state') == 'enabled') {
|
||||||
|
var prefDataToSet = '0';
|
||||||
|
}
|
||||||
|
else { // invalid
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
thisToggle.addClass('clicked');
|
||||||
|
|
||||||
|
var prefNamespace = thisToggle.attr('data-profile-prefs-namespace');
|
||||||
|
var prefTopic = thisToggle.attr('data-profile-prefs-topic');
|
||||||
|
|
||||||
|
// only prefs in the 'qvitter' namespace allowed
|
||||||
|
if(prefNamespace != 'qvitter') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// save pref to server
|
||||||
|
postSetProfilePref(prefNamespace,prefTopic,prefDataToSet,function(data){
|
||||||
|
if(data === false) { // error
|
||||||
|
showErrorMessage(window.sL.ERRORfailedSavingYourSetting + ' (' + prefTopic + ')');
|
||||||
|
}
|
||||||
|
else { // success
|
||||||
|
thisToggle.removeClass('clicked');
|
||||||
|
if(thisToggle.attr('data-profile-pref-state') == 'disabled') {
|
||||||
|
thisToggle.removeClass('disabled');
|
||||||
|
thisToggle.addClass('enabled');
|
||||||
|
thisToggle.attr('data-profile-pref-state','enabled');
|
||||||
|
window.qvitterProfilePrefs[prefTopic] = '1';
|
||||||
|
}
|
||||||
|
else if(thisToggle.attr('data-profile-pref-state') == 'enabled') {
|
||||||
|
thisToggle.removeClass('enabled');
|
||||||
|
thisToggle.addClass('disabled');
|
||||||
|
thisToggle.attr('data-profile-pref-state','disabled');
|
||||||
|
window.qvitterProfilePrefs[prefTopic] = '0';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
|
@ -1397,10 +1499,12 @@ $('body').on('click','a', function(e) {
|
||||||
$('body').on('click','.sm-ellipsis',function(){
|
$('body').on('click','.sm-ellipsis',function(){
|
||||||
// hide
|
// hide
|
||||||
if($(this).closest('.action-ellipsis-container').children('.dropdown-menu').length > 0) {
|
if($(this).closest('.action-ellipsis-container').children('.dropdown-menu').length > 0) {
|
||||||
|
$(this).closest('.action-ellipsis-container').removeClass('dropped');
|
||||||
$(this).closest('.action-ellipsis-container').children('.dropdown-menu').remove();
|
$(this).closest('.action-ellipsis-container').children('.dropdown-menu').remove();
|
||||||
}
|
}
|
||||||
// show
|
// show
|
||||||
else {
|
else {
|
||||||
|
$(this).closest('.action-ellipsis-container').addClass('dropped');
|
||||||
$('.action-ellipsis-container').children('.dropdown-menu').remove(); // remove menu from other queets
|
$('.action-ellipsis-container').children('.dropdown-menu').remove(); // remove menu from other queets
|
||||||
var streamItemUsername = $(this).closest('.queet').find('.stream-item-header').find('.screen-name').text();
|
var streamItemUsername = $(this).closest('.queet').find('.stream-item-header').find('.screen-name').text();
|
||||||
var streamItemUserID = $(this).closest('.queet').find('.stream-item-header').find('.name').attr('data-user-id');
|
var streamItemUserID = $(this).closest('.queet').find('.stream-item-header').find('.name').attr('data-user-id');
|
||||||
|
@ -1426,7 +1530,13 @@ $('body').on('click','.sm-ellipsis',function(){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// remove the ellipsis menu when clicking outside it
|
||||||
|
$('body').on('click',function(e){
|
||||||
|
if(!$(e.target).is('.action-ellipsis-container') && $('.action-ellipsis-container.dropped').length>0 && !$(e.target).closest('.action-ellipsis-container').length>0) {
|
||||||
|
$('.action-ellipsis-container').children('.dropdown-menu').remove();
|
||||||
|
$('.action-ellipsis-container').removeClass('dropped');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1578,8 +1688,8 @@ function checkForNewQueets() {
|
||||||
if(!$('body').hasClass('loading-newer')) {
|
if(!$('body').hasClass('loading-newer')) {
|
||||||
$('body').addClass('loading-newer');
|
$('body').addClass('loading-newer');
|
||||||
|
|
||||||
// only of logged in and not user stream
|
// only if logged in and only for notice or notification streams
|
||||||
if($('#user-container').css('display') == 'block' && $('.stream-item.user').length==0) {
|
if(window.loggedIn && (window.currentStreamObject.type == 'notices' || window.currentStreamObject.type == 'notifications')) {
|
||||||
var lastId = $('#feed-body').children('.stream-item').not('.temp-post').attr('data-quitter-id-in-stream');
|
var lastId = $('#feed-body').children('.stream-item').not('.temp-post').attr('data-quitter-id-in-stream');
|
||||||
var addThisStream = window.currentStream;
|
var addThisStream = window.currentStream;
|
||||||
var timeNow = new Date().getTime();
|
var timeNow = new Date().getTime();
|
||||||
|
@ -1588,32 +1698,34 @@ function checkForNewQueets() {
|
||||||
$('body').removeClass('loading-newer');
|
$('body').removeClass('loading-newer');
|
||||||
if(addThisStream == window.currentStream) {
|
if(addThisStream == window.currentStream) {
|
||||||
addToFeed(data, false, 'hidden');
|
addToFeed(data, false, 'hidden');
|
||||||
|
|
||||||
|
// if we have hidden items, show new-queets-bar
|
||||||
|
var new_queets_num = $('#feed-body').find('.stream-item.hidden:not(.activity)').length;
|
||||||
|
if(new_queets_num > 0) {
|
||||||
|
|
||||||
|
$('#new-queets-bar').parent().removeClass('hidden');
|
||||||
|
|
||||||
|
// bar label
|
||||||
|
if(new_queets_num == 1) { var q_txt = window.sL.newQueet; }
|
||||||
|
else { var q_txt = window.sL.newQueets; }
|
||||||
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
|
if(new_queets_num == 1) { var q_txt = window.sL.newNotification; }
|
||||||
|
else { var q_txt = window.sL.newNotifications; }
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#new-queets-bar').html(q_txt.replace('{new-notice-count}',new_queets_num));
|
||||||
|
|
||||||
|
// say hello to the api if this is notifications stream, to
|
||||||
|
// get correct unread notifcation count
|
||||||
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
|
helloAPI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we have hidden items, show new-queets-bar
|
|
||||||
var new_queets_num = $('#feed-body').find('.stream-item.hidden:not(.activity)').length;
|
|
||||||
if(new_queets_num > 0) {
|
|
||||||
|
|
||||||
// if this is notifications page, update site title with hidden notification count
|
|
||||||
if(window.currentStreamObject.name == 'notifications') {
|
|
||||||
document.title = window.siteTitle + ' (' + new_queets_num + ')';
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#new-queets-bar').parent().removeClass('hidden');
|
|
||||||
|
|
||||||
// text plural
|
|
||||||
if(new_queets_num == 1) {
|
|
||||||
var q_txt = ' ' + window.sL.newQueet;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var q_txt = ' ' + window.sL.newQueets;
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#new-queets-bar').html(new_queets_num + q_txt);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1634,6 +1746,12 @@ $('body').on('click','#new-queets-bar',function(){
|
||||||
hiddenStreamItems.addClass('visible');
|
hiddenStreamItems.addClass('visible');
|
||||||
hiddenStreamItems.removeClass('hidden');
|
hiddenStreamItems.removeClass('hidden');
|
||||||
$('#new-queets-bar').parent().addClass('hidden');
|
$('#new-queets-bar').parent().addClass('hidden');
|
||||||
|
|
||||||
|
// say hello to the api if this is notifications stream, to
|
||||||
|
// get correct unread notifcation count
|
||||||
|
if(window.currentStreamObject.name == 'notifications') {
|
||||||
|
helloAPI();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -1905,13 +2023,12 @@ function disableOrEnableNavigationButtonsInImagePopup(popUp) {
|
||||||
|
|
||||||
/* ·
|
/* ·
|
||||||
·
|
·
|
||||||
· Collapse all open conversations, ellipsis menus and the welcome text on esc or when clicking the margin
|
· Collapse all open conversations and the welcome text on esc or when clicking the margin
|
||||||
·
|
·
|
||||||
· · · · · · · · · · · · · */
|
· · · · · · · · · · · · · */
|
||||||
|
|
||||||
$('body').click(function(event){
|
$('body').click(function(event){
|
||||||
if($(event.target).is('body')) {
|
if($(event.target).is('body') || $(event.target).is('#page-container')) {
|
||||||
$('.action-ellipsis-container').children('.dropdown-menu').remove();
|
|
||||||
$('.front-welcome-text.expanded > .show-full-welcome-text').trigger('click');
|
$('.front-welcome-text.expanded > .show-full-welcome-text').trigger('click');
|
||||||
$.each($('.stream-item.expanded'),function(){
|
$.each($('.stream-item.expanded'),function(){
|
||||||
expand_queet($(this), false);
|
expand_queet($(this), false);
|
||||||
|
@ -1921,7 +2038,6 @@ $('body').click(function(event){
|
||||||
|
|
||||||
$(document).keyup(function(e){
|
$(document).keyup(function(e){
|
||||||
if(e.keyCode==27) { // esc
|
if(e.keyCode==27) { // esc
|
||||||
$('.action-ellipsis-container').children('.dropdown-menu').remove();
|
|
||||||
$('.front-welcome-text.expanded > .show-full-welcome-text').trigger('click');
|
$('.front-welcome-text.expanded > .show-full-welcome-text').trigger('click');
|
||||||
$.each($('.stream-item.expanded'),function(){
|
$.each($('.stream-item.expanded'),function(){
|
||||||
expand_queet($(this), false);
|
expand_queet($(this), false);
|
||||||
|
|
|
@ -130,7 +130,9 @@ function pathToStreamRouter(path) {
|
||||||
stream: false, // the API path
|
stream: false, // the API path
|
||||||
nickname: false, // if we can read a nickname/screen_name from the path, add it to this property
|
nickname: false, // if we can read a nickname/screen_name from the path, add it to this property
|
||||||
id: false, // if we can read a id number string from the path, add it to this property
|
id: false, // if we can read a id number string from the path, add it to this property
|
||||||
maxIdOrPage: 'maxId' // whether this stream uses 'maxId' or 'page' for paging (maxId is default)
|
maxIdOrPage: 'maxId', // whether this stream uses 'maxId' or 'page' for paging (maxId is default)
|
||||||
|
menu: false, // optional menu in the header
|
||||||
|
type: 'notices' // notices, notifications, users, groups, lists etc. notices is default
|
||||||
};
|
};
|
||||||
|
|
||||||
// instance's public timeline
|
// instance's public timeline
|
||||||
|
@ -262,6 +264,7 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.streamSubHeader = window.sL.memberCount;
|
streamObject.streamSubHeader = window.sL.memberCount;
|
||||||
streamObject.stream = 'statusnet/groups/membership/' + streamObject.nickname + '.json?count=20';
|
streamObject.stream = 'statusnet/groups/membership/' + streamObject.nickname + '.json?count=20';
|
||||||
streamObject.maxIdOrPage = 'page';
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
streamObject.type = 'users';
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,6 +277,7 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.streamSubHeader = window.sL.adminCount;
|
streamObject.streamSubHeader = window.sL.adminCount;
|
||||||
streamObject.stream = 'statusnet/groups/admins/' + streamObject.nickname + '.json?count=20';
|
streamObject.stream = 'statusnet/groups/admins/' + streamObject.nickname + '.json?count=20';
|
||||||
streamObject.maxIdOrPage = 'page';
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
streamObject.type = 'users';
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,6 +294,14 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.stream = 'statuses/friends_timeline.json?screen_name=' + streamObject.nickname + '&withuserarray=1';
|
streamObject.stream = 'statuses/friends_timeline.json?screen_name=' + streamObject.nickname + '&withuserarray=1';
|
||||||
streamObject.parentPath = streamObject.nickname;
|
streamObject.parentPath = streamObject.nickname;
|
||||||
}
|
}
|
||||||
|
streamObject.menu = [
|
||||||
|
{
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'hide_replies',
|
||||||
|
label: window.sL.hideRepliesToPeopleIDoNotFollow
|
||||||
|
}
|
||||||
|
];
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,6 +331,41 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.stream = 'qvitter/statuses/notifications.json';
|
streamObject.stream = 'qvitter/statuses/notifications.json';
|
||||||
streamObject.streamHeader = '@' + replaceHtmlSpecialChars(streamObject.nickname);
|
streamObject.streamHeader = '@' + replaceHtmlSpecialChars(streamObject.nickname);
|
||||||
streamObject.streamSubHeader = window.sL.notifications;
|
streamObject.streamSubHeader = window.sL.notifications;
|
||||||
|
streamObject.type = 'notifications';
|
||||||
|
streamObject.menu = [
|
||||||
|
{
|
||||||
|
type: 'function',
|
||||||
|
functionName: 'markAllNotificationsAsSeen',
|
||||||
|
label: window.sL.markAllNotificationsAsSeen
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'divider'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'disable_notify_replies_and_mentions',
|
||||||
|
label: window.sL.notifyRepliesAndMentions
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'disable_notify_favs',
|
||||||
|
label: window.sL.notifyFavs
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'disable_notify_repeats',
|
||||||
|
label: window.sL.notifyRepeats
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'profile-prefs-toggle',
|
||||||
|
namespace: 'qvitter',
|
||||||
|
topic: 'disable_notify_follows',
|
||||||
|
label: window.sL.notifyFollows
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
@ -349,6 +396,7 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.streamSubHeader = '<div class="queet-streams"><a class="queet-stream following" href="' + window.siteInstanceURL + streamObject.nickname + '/subscriptions">' + window.sL.following + '</a> / </div>' + window.sL.followers;
|
streamObject.streamSubHeader = '<div class="queet-streams"><a class="queet-stream following" href="' + window.siteInstanceURL + streamObject.nickname + '/subscriptions">' + window.sL.following + '</a> / </div>' + window.sL.followers;
|
||||||
streamObject.stream = 'statuses/followers.json?count=20&screen_name=' + streamObject.nickname + '&withuserarray=1';
|
streamObject.stream = 'statuses/followers.json?count=20&screen_name=' + streamObject.nickname + '&withuserarray=1';
|
||||||
streamObject.maxIdOrPage = 'page';
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
streamObject.type = 'users';
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,6 +409,7 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.streamSubHeader = window.sL.following + '<div class="queet-streams">/ <a class="queet-stream followers" href="' + window.siteInstanceURL + streamObject.nickname + '/subscribers">' + window.sL.followers + '</a></div>';
|
streamObject.streamSubHeader = window.sL.following + '<div class="queet-streams">/ <a class="queet-stream followers" href="' + window.siteInstanceURL + streamObject.nickname + '/subscribers">' + window.sL.followers + '</a></div>';
|
||||||
streamObject.stream = 'statuses/friends.json?count=20&screen_name=' + streamObject.nickname + '&withuserarray=1';
|
streamObject.stream = 'statuses/friends.json?count=20&screen_name=' + streamObject.nickname + '&withuserarray=1';
|
||||||
streamObject.maxIdOrPage = 'page';
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
streamObject.type = 'users';
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,6 +422,7 @@ function pathToStreamRouter(path) {
|
||||||
streamObject.streamSubHeader = window.sL.groups;
|
streamObject.streamSubHeader = window.sL.groups;
|
||||||
streamObject.stream = 'statusnet/groups/list.json?count=10&screen_name=' + streamObject.nickname + '&withuserarray=1';
|
streamObject.stream = 'statusnet/groups/list.json?count=10&screen_name=' + streamObject.nickname + '&withuserarray=1';
|
||||||
streamObject.maxIdOrPage = 'page';
|
streamObject.maxIdOrPage = 'page';
|
||||||
|
streamObject.type = 'groups';
|
||||||
return streamObject;
|
return streamObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "مفضّلة",
|
"favoritesNoun": "مفضّلة",
|
||||||
"requeetNoun": "إعادة تغريد",
|
"requeetNoun": "إعادة تغريد",
|
||||||
"requeetsNoun": "إعادة تغريد",
|
"requeetsNoun": "إعادة تغريد",
|
||||||
"newQueet": "تغريدة جديدة",
|
"newQueet": "{new-notice-count} تغريدة جديدة",
|
||||||
"newQueets": "تغريدة جديدة",
|
"newQueets": "{new-notice-count} تغريدة جديدة",
|
||||||
"longmonthsJanuary": "يناير",
|
"longmonthsJanuary": "يناير",
|
||||||
"longmonthsFebruary": "فبراير",
|
"longmonthsFebruary": "فبراير",
|
||||||
"longmonthsMars": "مارس",
|
"longmonthsMars": "مارس",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoritos",
|
"favoritesNoun": "Favoritos",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeets",
|
"requeetsNoun": "Requeets",
|
||||||
"newQueet": "Queet nuevu",
|
"newQueet": "{new-notice-count} Queet nuevu",
|
||||||
"newQueets": "Queets nuevos",
|
"newQueets": "{new-notice-count} Queets nuevos",
|
||||||
"longmonthsJanuary": "xineru",
|
"longmonthsJanuary": "xineru",
|
||||||
"longmonthsFebruary": "febreru",
|
"longmonthsFebruary": "febreru",
|
||||||
"longmonthsMars": "marzu",
|
"longmonthsMars": "marzu",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Preferits",
|
"favoritesNoun": "Preferits",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeets",
|
"requeetsNoun": "Requeets",
|
||||||
"newQueet": "queet nou",
|
"newQueet": "{new-notice-count} queet nou",
|
||||||
"newQueets": "queets nous",
|
"newQueets": "{new-notice-count} queets nous",
|
||||||
"longmonthsJanuary": "gener",
|
"longmonthsJanuary": "gener",
|
||||||
"longmonthsFebruary": "febrer",
|
"longmonthsFebruary": "febrer",
|
||||||
"longmonthsMars": "març",
|
"longmonthsMars": "març",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"No s'ha pogut trobar aquesta pàgina",
|
"ERRORcouldNotFindPage":"No s'ha pogut trobar aquesta pàgina",
|
||||||
"ERRORnoticeRemoved": "Aquest avís s'ha eliminat.",
|
"ERRORnoticeRemoved": "Aquest avís s'ha eliminat.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoriten",
|
"favoritesNoun": "Favoriten",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeets",
|
"requeetsNoun": "Requeets",
|
||||||
"newQueet": "neuer Queet",
|
"newQueet": "n{new-notice-count} euer Queet",
|
||||||
"newQueets": "neue Queets",
|
"newQueets": "{new-notice-count} neue Queets",
|
||||||
"longmonthsJanuary": "Januar",
|
"longmonthsJanuary": "Januar",
|
||||||
"longmonthsFebruary": "Februar",
|
"longmonthsFebruary": "Februar",
|
||||||
"longmonthsMars": "März",
|
"longmonthsMars": "März",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Konnte Seite nicht finden.",
|
"ERRORcouldNotFindPage":"Konnte Seite nicht finden.",
|
||||||
"ERRORnoticeRemoved": "Dieser Queet wurde gelöscht.",
|
"ERRORnoticeRemoved": "Dieser Queet wurde gelöscht.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favorites",
|
"favoritesNoun": "Favorites",
|
||||||
"requeetNoun": "Repeat",
|
"requeetNoun": "Repeat",
|
||||||
"requeetsNoun": "Repeats",
|
"requeetsNoun": "Repeats",
|
||||||
"newQueet": "new notice",
|
"newQueet": "{new-notice-count} new notice",
|
||||||
"newQueets": "new notices",
|
"newQueets": "{new-notice-count} new notices",
|
||||||
"longmonthsJanuary": "January",
|
"longmonthsJanuary": "January",
|
||||||
"longmonthsFebruary": "February",
|
"longmonthsFebruary": "February",
|
||||||
"longmonthsMars": "March",
|
"longmonthsMars": "March",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Stelsignitaj",
|
"favoritesNoun": "Stelsignitaj",
|
||||||
"requeetNoun": "Repepo",
|
"requeetNoun": "Repepo",
|
||||||
"requeetsNoun": "Repepoj",
|
"requeetsNoun": "Repepoj",
|
||||||
"newQueet": "nova pepo",
|
"newQueet": "{new-notice-count} nova pepo",
|
||||||
"newQueets": "novaj pepoj",
|
"newQueets": "{new-notice-count} novaj pepoj",
|
||||||
"longmonthsJanuary": "januaro",
|
"longmonthsJanuary": "januaro",
|
||||||
"longmonthsFebruary": "februaro",
|
"longmonthsFebruary": "februaro",
|
||||||
"longmonthsMars": "marto",
|
"longmonthsMars": "marto",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoritos",
|
"favoritesNoun": "Favoritos",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeets",
|
"requeetsNoun": "Requeets",
|
||||||
"newQueet": "nuevo Queet",
|
"newQueet": "{new-notice-count} nuevo Queet",
|
||||||
"newQueets": "nuevos Queets",
|
"newQueets": "{new-notice-count} nuevos Queets",
|
||||||
"longmonthsJanuary": "enero",
|
"longmonthsJanuary": "enero",
|
||||||
"longmonthsFebruary": "febrero",
|
"longmonthsFebruary": "febrero",
|
||||||
"longmonthsMars": "marzo",
|
"longmonthsMars": "marzo",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"No se pudo encontrar la página.",
|
"ERRORcouldNotFindPage":"No se pudo encontrar la página.",
|
||||||
"ERRORnoticeRemoved": "Este aviso se ha eliminado.",
|
"ERRORnoticeRemoved": "Este aviso se ha eliminado.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoritos",
|
"favoritesNoun": "Favoritos",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeets",
|
"requeetsNoun": "Requeets",
|
||||||
"newQueet": "nuevo Queet",
|
"newQueet": "{new-notice-count} nuevo Queet",
|
||||||
"newQueets": "nuevos Queets",
|
"newQueets": "{new-notice-count} nuevos Queets",
|
||||||
"longmonthsJanuary": "enero",
|
"longmonthsJanuary": "enero",
|
||||||
"longmonthsFebruary": "febrero",
|
"longmonthsFebruary": "febrero",
|
||||||
"longmonthsMars": "marzo",
|
"longmonthsMars": "marzo",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Gogokoak",
|
"favoritesNoun": "Gogokoak",
|
||||||
"requeetNoun": "Bertxio",
|
"requeetNoun": "Bertxio",
|
||||||
"requeetsNoun": "Bertxioak",
|
"requeetsNoun": "Bertxioak",
|
||||||
"newQueet": "Txio berria",
|
"newQueet": "{new-notice-count} Txio berria",
|
||||||
"newQueets": "Txio berriak",
|
"newQueets": "{new-notice-count} Txio berriak",
|
||||||
"longmonthsJanuary": "Urtarrila",
|
"longmonthsJanuary": "Urtarrila",
|
||||||
"longmonthsFebruary": "Otsaila",
|
"longmonthsFebruary": "Otsaila",
|
||||||
"longmonthsMars": "Martxoa",
|
"longmonthsMars": "Martxoa",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "برگزیده",
|
"favoritesNoun": "برگزیده",
|
||||||
"requeetNoun": "بازتوییت",
|
"requeetNoun": "بازتوییت",
|
||||||
"requeetsNoun": "بازتوییت",
|
"requeetsNoun": "بازتوییت",
|
||||||
"newQueet": "توییت جدید",
|
"newQueet": "{new-notice-count} توییت جدید",
|
||||||
"newQueets": "توییت جدید",
|
"newQueets": "{new-notice-count} توییت جدید",
|
||||||
"longmonthsJanuary": "ژانويه",
|
"longmonthsJanuary": "ژانويه",
|
||||||
"longmonthsFebruary": "فوريه",
|
"longmonthsFebruary": "فوريه",
|
||||||
"longmonthsMars": "مارس",
|
"longmonthsMars": "مارس",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Suosikit",
|
"favoritesNoun": "Suosikit",
|
||||||
"requeetNoun": "Toista",
|
"requeetNoun": "Toista",
|
||||||
"requeetsNoun": "Toistot",
|
"requeetsNoun": "Toistot",
|
||||||
"newQueet": "uusi ilmoitus",
|
"newQueet": "{new-notice-count} uusi ilmoitus",
|
||||||
"newQueets": "uudet ilmoitukset",
|
"newQueets": "{new-notice-count} uudet ilmoitukset",
|
||||||
"longmonthsJanuary": "tammikuuta",
|
"longmonthsJanuary": "tammikuuta",
|
||||||
"longmonthsFebruary": "helmikuuta",
|
"longmonthsFebruary": "helmikuuta",
|
||||||
"longmonthsMars": "maaliskuuta",
|
"longmonthsMars": "maaliskuuta",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoris",
|
"favoritesNoun": "Favoris",
|
||||||
"requeetNoun": "Repartage",
|
"requeetNoun": "Repartage",
|
||||||
"requeetsNoun": "Repartages",
|
"requeetsNoun": "Repartages",
|
||||||
"newQueet": "nouvel avis",
|
"newQueet": "{new-notice-count} nouvel avis",
|
||||||
"newQueets": "nouveaux avis",
|
"newQueets": "{new-notice-count} nouveaux avis",
|
||||||
"longmonthsJanuary": "janvier",
|
"longmonthsJanuary": "janvier",
|
||||||
"longmonthsFebruary": "février",
|
"longmonthsFebruary": "février",
|
||||||
"longmonthsMars": "mars",
|
"longmonthsMars": "mars",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Impossible de trouver cette page.",
|
"ERRORcouldNotFindPage":"Impossible de trouver cette page.",
|
||||||
"ERRORnoticeRemoved": "Cet avis a été supprimé.",
|
"ERRORnoticeRemoved": "Cet avis a été supprimé.",
|
||||||
"ERRORnoContactWithServer": "Impossible d'établir une connexion avec le serveur. Il peut être surchargé, ou il peut y avoir un problème avec votre connexion. Réessayez plus tard !",
|
"ERRORnoContactWithServer": "Impossible d'établir une connexion avec le serveur. Il peut être surchargé, ou il peut y avoir un problème avec votre connexion. Réessayez plus tard !",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoritos",
|
"favoritesNoun": "Favoritos",
|
||||||
"requeetNoun": "Rechouchío",
|
"requeetNoun": "Rechouchío",
|
||||||
"requeetsNoun": "Rechouchíos",
|
"requeetsNoun": "Rechouchíos",
|
||||||
"newQueet": "novo chío",
|
"newQueet": "{new-notice-count} novo chío",
|
||||||
"newQueets": "novos chíos",
|
"newQueets": "{new-notice-count} novos chíos",
|
||||||
"longmonthsJanuary": "xaneiro",
|
"longmonthsJanuary": "xaneiro",
|
||||||
"longmonthsFebruary": "febreiro",
|
"longmonthsFebruary": "febreiro",
|
||||||
"longmonthsMars": "marzo",
|
"longmonthsMars": "marzo",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "מועדפות",
|
"favoritesNoun": "מועדפות",
|
||||||
"requeetNoun": "חזרה",
|
"requeetNoun": "חזרה",
|
||||||
"requeetsNoun": "חזרות",
|
"requeetsNoun": "חזרות",
|
||||||
"newQueet": "הודעה חדשה",
|
"newQueet": "{new-notice-count} הודעה חדשה",
|
||||||
"newQueets": "הודעות חדשות",
|
"newQueets": "{new-notice-count} הודעות חדשות",
|
||||||
"longmonthsJanuary": "ינואר",
|
"longmonthsJanuary": "ינואר",
|
||||||
"longmonthsFebruary": "פברואר",
|
"longmonthsFebruary": "פברואר",
|
||||||
"longmonthsMars": "מרץ",
|
"longmonthsMars": "מרץ",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favorati",
|
"favoritesNoun": "Favorati",
|
||||||
"requeetNoun": "Repeto",
|
"requeetNoun": "Repeto",
|
||||||
"requeetsNoun": "Repeti",
|
"requeetsNoun": "Repeti",
|
||||||
"newQueet": "nova mesajo",
|
"newQueet": "{new-notice-count} nova mesajo",
|
||||||
"newQueets": "nova mesaji",
|
"newQueets": "{new-notice-count} nova mesaji",
|
||||||
"longmonthsJanuary": "januaro",
|
"longmonthsJanuary": "januaro",
|
||||||
"longmonthsFebruary": "februaro",
|
"longmonthsFebruary": "februaro",
|
||||||
"longmonthsMars": "marto",
|
"longmonthsMars": "marto",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"On ne trovis ica pagino.",
|
"ERRORcouldNotFindPage":"On ne trovis ica pagino.",
|
||||||
"ERRORnoticeRemoved": "Ica mesajo esas supresita.",
|
"ERRORnoticeRemoved": "Ica mesajo esas supresita.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoriti",
|
"favoritesNoun": "Favoriti",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeet",
|
"requeetsNoun": "Requeet",
|
||||||
"newQueet": "nuovo Queet",
|
"newQueet": "{new-notice-count} nuovo Queet",
|
||||||
"newQueets": "nuovi Queet",
|
"newQueets": "{new-notice-count} nuovi Queet",
|
||||||
"longmonthsJanuary": "Gennaio",
|
"longmonthsJanuary": "Gennaio",
|
||||||
"longmonthsFebruary": "Febbraio",
|
"longmonthsFebruary": "Febbraio",
|
||||||
"longmonthsMars": "Marzo",
|
"longmonthsMars": "Marzo",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoritter",
|
"favoritesNoun": "Favoritter",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeeter",
|
"requeetsNoun": "Requeeter",
|
||||||
"newQueet": "ny Queet",
|
"newQueet": "{new-notice-count} ny Queet",
|
||||||
"newQueets": "nye Queets",
|
"newQueets": "{new-notice-count} nye Queets",
|
||||||
"longmonthsJanuary": "Januar",
|
"longmonthsJanuary": "Januar",
|
||||||
"longmonthsFebruary": "Februar",
|
"longmonthsFebruary": "Februar",
|
||||||
"longmonthsMars": "Mars",
|
"longmonthsMars": "Mars",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Kan ikke finne siden.",
|
"ERRORcouldNotFindPage":"Kan ikke finne siden.",
|
||||||
"ERRORnoticeRemoved": "Denne notisen er slettet.",
|
"ERRORnoticeRemoved": "Denne notisen er slettet.",
|
||||||
"ERRORnoContactWithServer": "Kan ikke etablere en kobling til instansen. Dette kan skyldes at den er overbelastet, eller det er et problem med din internet kobling. Vennligst forsøk senere.",
|
"ERRORnoContactWithServer": "Kan ikke etablere en kobling til instansen. Dette kan skyldes at den er overbelastet, eller det er et problem med din internet kobling. Vennligst forsøk senere.",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoritos",
|
"favoritesNoun": "Favoritos",
|
||||||
"requeetNoun": "Requeet",
|
"requeetNoun": "Requeet",
|
||||||
"requeetsNoun": "Requeets",
|
"requeetsNoun": "Requeets",
|
||||||
"newQueet": "novo Queet",
|
"newQueet": "{new-notice-count} novo Queet",
|
||||||
"newQueets": "novos Queets",
|
"newQueets": "{new-notice-count} novos Queets",
|
||||||
"longmonthsJanuary": "janeiro",
|
"longmonthsJanuary": "janeiro",
|
||||||
"longmonthsFebruary": "fevereiro",
|
"longmonthsFebruary": "fevereiro",
|
||||||
"longmonthsMars": "março",
|
"longmonthsMars": "março",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "Favoriter",
|
"favoritesNoun": "Favoriter",
|
||||||
"requeetNoun": "återqvittring",
|
"requeetNoun": "återqvittring",
|
||||||
"requeetsNoun": "återqvittringar",
|
"requeetsNoun": "återqvittringar",
|
||||||
"newQueet": "ny qvittring",
|
"newQueet": "{new-notice-count} ny qvittring",
|
||||||
"newQueets": "nya qvittringar",
|
"newQueets": "{new-notice-count} nya qvittringar",
|
||||||
"longmonthsJanuary": "januari",
|
"longmonthsJanuary": "januari",
|
||||||
"longmonthsFebruary": "februari",
|
"longmonthsFebruary": "februari",
|
||||||
"longmonthsMars": "mars",
|
"longmonthsMars": "mars",
|
||||||
|
@ -139,5 +139,16 @@
|
||||||
"ERRORcouldNotFindPage":"Sidan hittades inte.",
|
"ERRORcouldNotFindPage":"Sidan hittades inte.",
|
||||||
"ERRORnoticeRemoved": "Den här qvittringen är borttagen.",
|
"ERRORnoticeRemoved": "Den här qvittringen är borttagen.",
|
||||||
"ERRORnoContactWithServer": "Kan inte ansluta till servern. Servern kanske är överbelastad, eller så har du ett problem med din internetuppkoppling. Försök igen senare!",
|
"ERRORnoContactWithServer": "Kan inte ansluta till servern. Servern kanske är överbelastad, eller så har du ett problem med din internetuppkoppling. Försök igen senare!",
|
||||||
"ERRORattachmentUploadFailed": "Uppladdningen misslyckades. Filen är kanske för stor eller av en otillåten typ."
|
"ERRORattachmentUploadFailed": "Uppladdningen misslyckades. Filen är kanske för stor eller av en otillåten typ.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Visa inte svar till folk jag inte följer",
|
||||||
|
"markAllNotificationsAsSeen":"Markera alla notiser som lästa",
|
||||||
|
"notifyRepliesAndMentions":"Svar och omnämnanden",
|
||||||
|
"notifyFavs":"Favoriter",
|
||||||
|
"notifyRepeats":"Återqvittringar",
|
||||||
|
"notifyFollows":"Nya följare",
|
||||||
|
"timelineOptions":"Inställningar för det här flödet",
|
||||||
|
"ERRORfailedSavingYourSetting":"Misslyckades med att spara din inställning",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Misslyckades med att markera alla notiser som lästa.",
|
||||||
|
"newNotification": "{new-notice-count} ny notis",
|
||||||
|
"newNotifications": "{new-notice-count} nya notiser"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "收藏",
|
"favoritesNoun": "收藏",
|
||||||
"requeetNoun": "转推",
|
"requeetNoun": "转推",
|
||||||
"requeetsNoun": "转推",
|
"requeetsNoun": "转推",
|
||||||
"newQueet": "条新推文",
|
"newQueet": "{new-notice-count} 条新推文",
|
||||||
"newQueets": "条新推文",
|
"newQueets": "{new-notice-count} 条新推文",
|
||||||
"longmonthsJanuary": "1",
|
"longmonthsJanuary": "1",
|
||||||
"longmonthsFebruary": "2",
|
"longmonthsFebruary": "2",
|
||||||
"longmonthsMars": "3",
|
"longmonthsMars": "3",
|
||||||
|
@ -138,5 +138,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
"favoritesNoun": "收藏",
|
"favoritesNoun": "收藏",
|
||||||
"requeetNoun": "轉推",
|
"requeetNoun": "轉推",
|
||||||
"requeetsNoun": "轉推",
|
"requeetsNoun": "轉推",
|
||||||
"newQueet": "条新推文",
|
"newQueet": "{new-notice-count} 条新推文",
|
||||||
"newQueets": "条新推文",
|
"newQueets": "{new-notice-count} 条新推文",
|
||||||
"longmonthsJanuary": "1",
|
"longmonthsJanuary": "1",
|
||||||
"longmonthsFebruary": "2",
|
"longmonthsFebruary": "2",
|
||||||
"longmonthsMars": "3",
|
"longmonthsMars": "3",
|
||||||
|
@ -138,5 +138,16 @@
|
||||||
"ERRORcouldNotFindPage":"Could not find that page.",
|
"ERRORcouldNotFindPage":"Could not find that page.",
|
||||||
"ERRORnoticeRemoved": "This notice has been removed.",
|
"ERRORnoticeRemoved": "This notice has been removed.",
|
||||||
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
"ERRORnoContactWithServer": "Can not establish a connection to the server. The server could be overloaded, or there might be a problem with your internet connecton. Please try again later!",
|
||||||
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large."
|
"ERRORattachmentUploadFailed": "The upload failed. The format might be unsupported or the size too large.",
|
||||||
|
"hideRepliesToPeopleIDoNotFollow":"Hide replies to people I don't follow",
|
||||||
|
"markAllNotificationsAsSeen":"Mark all notifications as seen",
|
||||||
|
"notifyRepliesAndMentions":"Mentions and replies",
|
||||||
|
"notifyFavs":"Favorites",
|
||||||
|
"notifyRepeats":"Requeets",
|
||||||
|
"notifyFollows":"New followers",
|
||||||
|
"timelineOptions":"Timeline options",
|
||||||
|
"ERRORfailedSavingYourSetting":"Failed saving your setting",
|
||||||
|
"ERRORfailedMarkingAllNotificationsAsRead":"Failed marking all notifications as seen.",
|
||||||
|
"newNotification": "{new-notice-count} new notification",
|
||||||
|
"newNotifications": "{new-notice-count} new notifications"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user