Merge branch 'master' of git.gnu.io:h2p/Qvitter

This commit is contained in:
abjectio 2016-02-23 21:08:47 +01:00
commit 11d79dbee9
79 changed files with 1188 additions and 153 deletions

View File

@ -62,8 +62,8 @@ class QvitterPlugin extends Plugin {
// DEFAULT BACKGROUND IMAGE
$settings['sitebackground'] = 'img/vagnsmossen.jpg';
// DEFAULT FAVICON
$settings['favicon'] = 'img/favicon.ico?v=5';
// FAVICON PATH (we've used realfavicongenerator.net to generate the icons)
$settings['favicon_path'] = Plugin::staticPath('Qvitter', '').'img/gnusocial-favicons/';
// DEFAULT SPRITE
$settings['sprite'] = Plugin::staticPath('Qvitter', '').'img/sprite.png?v=41';
@ -703,11 +703,33 @@ class QvitterPlugin extends Plugin {
// reply-to profile url
try {
$reply = $notice->getParent();
$twitter_status['in_reply_to_profileurl'] = $reply->getProfile()->getUrl();
$reply_profile = $reply->getProfile();
$twitter_status['in_reply_to_profileurl'] = $reply_profile->getUrl();
$twitter_status['in_reply_to_ostatus_uri'] = $reply_profile->getUri();
} catch (ServerException $e) {
$twitter_status['in_reply_to_profileurl'] = null;
$twitter_status['in_reply_to_ostatus_uri'] = null;
}
// attentions
try {
$attentions = $notice->getAttentionProfiles();
$attentions_array = array();
foreach ($attentions as $attn) {
if(!$attn->isGroup()) {
$attentions_array[] = array(
'id' => $attn->getID(),
'screen_name' => $attn->getNickname(),
'fullname' => $attn->getStreamName(),
'profileurl' => $attn->getUrl(),
'ostatus_uri' => $attn->getUri(),
);
}
}
$twitter_status['attentions'] = $attentions_array;
} catch (Exception $e) {
//
}
// fave number
$faves = Fave::byNotice($notice);

View File

@ -45,7 +45,7 @@ $config['site']['qvitter']['timebetweenpolling'] = 5000;
$config['site']['qvitter']['urlshortenerapiurl'] = 'http://qttr.at/yourls-api.php'; // if your site is on HTTPS, use url to shortener.php here
$config['site']['qvitter']['urlshortenersignature'] = 'b6afeec983';
$config['site']['qvitter']['sitebackground'] = 'img/vagnsmossen.jpg';
$config['site']['qvitter']['favicon'] = 'img/favicon.ico?v=4';
$config['site']['qvitter']['favicon_path'] = Plugin::staticPath('Qvitter', '').'img/gnusocial-favicons/';
$config['site']['qvitter']['sprite'] = Plugin::staticPath('Qvitter', '').'img/sprite.png?v=40';
$config['site']['qvitter']['enablewelcometext'] = true;
// $config['site']['qvitter']['customwelcometext']['sv'] = '<h1>Välkommen till Quitter.se en federerad<sup>1</sup> mikrobloggsallmänning!</h1><p>Etc etc...</p>';

View File

@ -109,14 +109,18 @@ class ApiQvitterBlocksAction extends ApiPrivateAuthAction
$blocks = QvitterBlocked::getBlocked($this->target->id, $offset, $limit);
if($blocks) {
$profiles = array();
while ($blocks->fetch()) {
$this_profile_block = clone($blocks);
$profiles[] = $this->getTargetProfile($this_profile_block->blocked);
}
return $profiles;
} else {
return false;
}
}
/**

View File

@ -390,6 +390,8 @@ class RawInboxNoticeStreamHiddenReplies extends NoticeStream
protected $target = null;
protected $inbox = null;
protected $selectVerbs = array();
/**
* Constructor
*
@ -397,6 +399,7 @@ class RawInboxNoticeStreamHiddenReplies extends NoticeStream
*/
function __construct(Profile $target)
{
parent::__construct();
$this->target = $target;
}
@ -453,9 +456,17 @@ class RawInboxNoticeStreamHiddenReplies extends NoticeStream
if (!empty($max_id)) {
$notice->whereAdd(sprintf('notice.id <= %d', $max_id));
}
if (!empty($this->selectVerbs)) {
// We have changed how selectVerbs work in GNUsocial, so it's an associative array
// where each verb is in the key and then the value (true/false) is how to filter.
// $this->unselectVerbs is always unset in newer GNUsocials.
if (!isset($this->unselectVerbs)) {
self::filterVerbs($notice, $this->selectVerbs);
} elseif (!empty($this->selectVerbs)) {
// old behaviour was just if there were selectVerbs set
$notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb'));
}
$notice->limit($offset, $limit);
// notice.id will give us even really old posts, which were
// recently imported. For example if a remote instance had

View File

@ -86,6 +86,7 @@ class QvitterAction extends ApiAction
$apiroot = common_path('api/', StatusNet::isHTTPS());
$attachmentroot = common_path('attachment/', StatusNet::isHTTPS());
$instanceurl = common_path('', StatusNet::isHTTPS());
$favicon_path = QvitterPlugin::settings("favicon_path");
// user's browser's language setting
$user_browser_language = 'en'; // use english if we can't find the browser language
@ -108,6 +109,8 @@ class QvitterAction extends ApiAction
}
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
@ -117,7 +120,26 @@ class QvitterAction extends ApiAction
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<link rel="stylesheet" type="text/css" href="<?php print $qvitterpath; ?>css/qvitter.css?changed=<?php print date('YmdHis',filemtime(QVITTERDIR.'/css/qvitter.css')); ?>" />
<link rel="stylesheet" type="text/css" href="<?php print $qvitterpath; ?>css/jquery.minicolors.css" />
<link rel="shortcut icon" type="image/x-icon" href="<?php print $qvitterpath; ?><?php print QvitterPlugin::settings("favicon"); ?>">
<link rel="apple-touch-icon" sizes="57x57" href="<?php print $favicon_path ?>apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="<?php print $favicon_path ?>apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="<?php print $favicon_path ?>apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="<?php print $favicon_path ?>apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="<?php print $favicon_path ?>apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="<?php print $favicon_path ?>apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="<?php print $favicon_path ?>apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="<?php print $favicon_path ?>apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="<?php print $favicon_path ?>apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="<?php print $favicon_path ?>favicon-16x16.png" sizes="16x16">
<link rel="icon" type="image/png" href="<?php print $favicon_path ?>favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="<?php print $favicon_path ?>android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="<?php print $favicon_path ?>favicon-96x96.png" sizes="96x96">
<link rel="manifest" href="<?php print $favicon_path ?>manifest.json">
<link rel="mask-icon" href="<?php print $favicon_path ?>safari-pinned-tab.svg" color="#a22430">
<meta name="apple-mobile-web-app-title" content="<?php print $sitetitle; ?>">
<meta name="application-name" content="<?php print $sitetitle; ?>">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileImage" content="<?php print $favicon_path ?>mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<?php
// if qvitter is a webapp and this is a users url we add feeds
@ -174,23 +196,65 @@ class QvitterAction extends ApiAction
}
}
// oembed discovery for local notices
// oembed discovery for local notices, and twitter cards
if(substr($_SERVER['REQUEST_URI'],0,8) == '/notice/'
&& $this->arg('notice')
&& array_key_exists('Oembed', StatusNet::getActivePlugins())) {
$notice = Notice::getKV('id', $this->arg('notice'));
if($notice instanceof Notice) {
if ($notice->isLocal()) {
$profile = $notice->getProfile();
if ($notice->isLocal() && $profile instanceof Profile) {
// maybe get thumbnail url
$embed_thumbnail_url = false;
$attachments = $notice->attachments();
if (!empty($attachments)) {
foreach ($attachments as $attachment) {
if(is_object($attachment)) {
try {
$notice_url = $notice->getUrl();
print '<link title="oEmbed" href="'.common_local_url('apiqvitteroembednotice', array('id' => $notice->id, 'format'=>'json')).'?url='.urlencode($notice_url).'" type="application/json+oembed" rel="alternate">';
print '<link title="oEmbed" href="'.common_local_url('apiqvitteroembednotice', array('id' => $notice->id, 'format'=>'xml')).'?url='.urlencode($notice_url).'" type="application/xml+oembed" rel="alternate">';
} catch (Exception $e) {
$thumb = $attachment->getThumbnail();
} catch (ServerException $e) {
//
}
if(!empty($thumb) && method_exists('File_thumbnail','url')) {
try {
$embed_thumbnail_url = File_thumbnail::url($thumb->filename);
break; // only first one
} catch (ClientException $e) {
//
}
}
}
}
}
try {
$notice_url = $notice->getUrl();
print '<link title="oEmbed" href="'.common_local_url('apiqvitteroembednotice', array('id' => $notice->id, 'format'=>'json')).'?url='.urlencode($notice_url).'" type="application/json+oembed" rel="alternate">'."\n";
print '<link title="oEmbed" href="'.common_local_url('apiqvitteroembednotice', array('id' => $notice->id, 'format'=>'xml')).'?url='.urlencode($notice_url).'" type="application/xml+oembed" rel="alternate">'."\n";
} catch (Exception $e) {
//
}
// twitter cards
print '<meta name="twitter:card" content="summary" />'."\n";
print '<meta name="twitter:title" content="'.htmlspecialchars($profile->fullname).' (@'.$profile->nickname.')" />'."\n";
print '<meta name="twitter:description" content="'.htmlspecialchars($notice->content).'" />'."\n";
if($embed_thumbnail_url) {
print '<meta name="twitter:image" content="'.$embed_thumbnail_url.'" />'."\n";
}
// opengraph
print '<meta property="og:description" content="'.htmlspecialchars($notice->content).'" />'."\n";
print '<meta property="og:site_name" content="'.$sitetitle.'" />'."\n";
if($embed_thumbnail_url) {
print '<meta property="og:image" content="'.$embed_thumbnail_url.'" />'."\n";
}
}
}
}
?>
<script>

View File

@ -71,8 +71,13 @@ class RawPublicAndExternalNoticeStream extends NoticeStream
$notice->whereAdd('is_local !='. Notice::GATEWAY);
$notice->whereAdd('repeat_of IS NULL');
Notice::addWhereSinceId($notice, $since_id);
Notice::addWhereMaxId($notice, $max_id);
if(!empty($max_id) && is_numeric($max_id)) {
$notice->whereAdd('id < '.$max_id);
}
if(!empty($since_id) && is_numeric($since_id)) {
$notice->whereAdd('id > '.$since_id);
}
$ids = array();

View File

@ -49,7 +49,12 @@ class QvitterBlocked extends Profile_block
public static function getBlocked($profile_id, $offset = 0, $limit = PROFILES_PER_PAGE)
{
$ids = self::getBlockedIDs($profile_id, $offset, $limit);
return Profile_block::listFind('blocked', $ids);
try {
$blocked = Profile_block::listFind('blocked', $ids);
return $blocked;
} catch(NoResultException $e) {
return false;
}
}

View File

@ -201,6 +201,13 @@ body.rtl .discard-error-message {
left: 0;
width:100%;
text-align: center;
opacity:0;
animation: fadein 1s ease forwards 1s;
}
@keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
#accessibility-toggle-link {
@ -1602,7 +1609,7 @@ body.rtl #history-container.menu-container a .chev-right {
border-image-repeat: stretch stretch;
border-image-slice: 100% 100% 100% 100%;
border-image-source: none;
border-image-width: 1 1 1 1:
border-image-width: 1 1 1 1;
}
#feed-header-inner {
position:relative;
@ -1829,7 +1836,7 @@ background-repeat: no-repeat;
.stream-item.notification .small-grey-notice,
.stream-item.notification .small-grey-notice a {
color:#999;
word-break: break-all;
word-wrap: break-word;
}
.stream-item.notification .small-grey-notice a:hover {
color:#333;
@ -3211,7 +3218,8 @@ ul.stats .avatar-row .avatar {
.permalink-link {
color: #999999 !important;
}
.permalink-link:hover {
.permalink-link:hover,
.longdate a:hover {
text-decoration:underline;
}

View File

@ -5,8 +5,8 @@ direction this instance is going, you are free to move to another instance or st
You will still be able to follow and be followed (and blocked) by users on this instance.</p>
<p>In constrast to the top-down authority of commercial social media, this creates a kind
of flat power structure. We are enabled to protect eachother from harassment and opression,
but without censorship.</p>
of flat power structure. We are enabled to protect eachother from harassment and oppression,
but without centralized censorship.</p>
<p>On this instance, users who harass others will be removed. We also take a strong stance
against e.g. racism, sexism, ableism, homo- and transphobia. Such expressions make the

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

1
img/gnu-social-logo.svg Normal file
View File

@ -0,0 +1 @@
<svg version="1.1" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="50" height="50" viewBox="-2 0 50 50" enable-background="new -2.001 -0.001 50.003 50.003" xml:space="preserve"><g transform="translate(-156.94799,-309.83779)"><g transform="translate(106.33914,-525.03507)"><path fill="#A22430" d="M89.8 834.9H57.4c-3.6 0-6.6 2.9-6.6 6.6v26.3c0 3.6 2.9 6.6 6.6 6.6h19.5c0 7.4-10.1 10.6-10.1 10.6s17-0.1 19.4-10.6h3.6c3.6 0 6.6-2.9 6.6-6.6v-26.3C96.4 837.8 93.5 834.9 89.8 834.9zM73.8 869.1c-8.7-0.4-10.7-7.3-10.8-12 0-2.5 0.4-5.4 2.5-7.4 -2.2-1.2-2.1-3.6-2.1-5 0-2.1 3.1-5.1 3.8-4.4 0.7 0.6-1.2 1.2-1 4.3 0.1 1.3-0.3 2.4 2.2 2.4 1.7 0 1-1.5 3.2-1.5 1.3 0 1.8 0.8 1.9 1.5 0.2-0.7 0.7-1.5 1.9-1.5 2.2 0 1.5 1.5 3.2 1.5 2.6 0 2.2-1 2.2-2.4 0.1-3.1-1.7-3.7-1-4.3 0.7-0.6 3.7 3 3.8 4.4 0.1 1.5 0.1 3.8-2.1 5 2.5 2.4 2.8 5.6 2.8 5.6l-4.3-0.1c0 0-1-4.4-6.1-4.2 -5.2 0.2-5.8 1.1-5.8 6.6 0 5.5 2.4 7.3 6.1 7.5 5.8 0.2 5.2-3 5.2-3l-2.7 0.2 -1.5-4h9.2C84.4 862.7 82.6 869.5 73.8 869.1z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="mstile-70x70.png"/>
<square150x150logo src="mstile-150x150.png"/>
<square310x310logo src="mstile-310x310.png"/>
<wide310x150logo src="mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,41 @@
{
"name": "GNU social",
"icons": [
{
"src": "android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": 0.75
},
{
"src": "android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": 1
},
{
"src": "android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": 1.5
},
{
"src": "android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": 2
},
{
"src": "android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": 3
},
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1129 6996 c-2 -2 -25 -7 -51 -10 -91 -12 -306 -92 -316 -118 -2 -4
-9 -8 -15 -8 -15 0 -130 -92 -181 -145 -124 -129 -215 -311 -244 -489 -9 -56
-9 -3920 0 -3974 66 -386 362 -686 748 -757 61 -11 335 -14 1479 -15 772 0
1407 -2 1411 -5 12 -7 -3 -155 -25 -251 -48 -208 -171 -417 -355 -604 -110
-111 -139 -137 -241 -212 -187 -139 -389 -249 -644 -354 l-130 -54 95 5 c52 3
115 7 140 10 25 3 77 7 115 10 39 3 81 7 95 9 14 3 52 7 85 11 32 4 62 8 65
10 3 1 28 6 55 9 28 4 97 16 155 27 58 11 116 23 130 25 63 12 307 79 420 116
728 237 1195 658 1340 1206 l11 42 267 1 c147 0 291 2 319 4 136 11 292 67
417 149 214 141 350 346 400 606 22 113 22 3887 0 4000 -41 212 -137 384 -294
526 -95 86 -261 177 -365 200 -149 34 -111 33 -2521 34 -1298 0 -2363 -2
-2365 -4z m1481 -755 c17 -33 12 -52 -38 -141 -93 -166 -114 -256 -111 -475 2
-149 3 -163 27 -207 27 -51 56 -70 137 -88 65 -15 202 -15 240 -1 17 7 62 46
102 87 39 41 88 81 108 90 87 36 232 26 302 -21 43 -29 90 -89 98 -126 6 -29
25 -41 25 -16 0 21 41 90 68 116 14 13 49 34 76 47 43 20 64 23 136 20 49 -1
101 -10 122 -19 21 -9 71 -50 111 -91 40 -41 86 -80 103 -87 46 -18 195 -13
272 11 54 16 71 26 90 54 34 50 39 85 40 253 0 199 -13 257 -94 419 -71 142
-76 173 -33 188 20 7 37 4 70 -12 51 -25 182 -150 243 -232 22 -30 44 -57 47
-60 15 -12 92 -143 121 -206 32 -67 33 -73 33 -204 0 -152 -6 -210 -30 -290
-36 -118 -100 -212 -189 -277 -34 -25 -63 -46 -65 -48 -2 -2 23 -35 56 -72
110 -125 201 -283 261 -453 35 -99 66 -234 59 -253 -4 -11 -31 -13 -114 -11
-59 1 -190 3 -290 5 l-182 2 -16 47 c-21 65 -69 154 -120 225 -38 53 -73 88
-165 166 -50 42 -204 108 -300 128 -123 26 -387 22 -577 -8 -112 -18 -125 -21
-193 -48 -102 -40 -165 -93 -214 -179 -26 -46 -62 -173 -70 -249 -3 -27 -8
-74 -11 -102 -8 -66 -8 -453 -1 -513 5 -41 10 -74 22 -155 17 -107 75 -264
130 -350 118 -185 296 -291 557 -329 83 -12 347 -13 402 -2 17 3 46 9 65 12
70 11 186 56 239 92 101 70 150 153 155 267 l1 30 -70 -1 c-38 0 -123 -3 -188
-5 l-119 -4 -69 185 c-38 102 -83 223 -100 270 -18 47 -34 90 -36 96 -5 14
1269 15 1279 0 3 -5 5 -28 3 -50 -3 -23 -7 -83 -10 -135 -3 -51 -7 -96 -9
-100 -2 -3 -7 -31 -11 -61 -9 -73 -57 -259 -89 -343 -150 -395 -440 -667 -819
-766 -67 -18 -151 -33 -257 -46 -52 -6 -323 -7 -360 -1 -14 2 -53 7 -88 10
-128 13 -284 51 -415 102 -275 106 -497 287 -659 540 -79 123 -183 377 -213
524 -7 30 -23 114 -30 155 -2 17 -7 40 -9 51 -23 116 -24 568 -1 636 2 7 6 29
9 48 31 212 125 424 259 582 l55 64 -42 27 c-50 31 -123 106 -158 163 -30 46
-72 175 -83 249 -4 28 -8 109 -10 182 -2 155 15 227 84 343 47 79 142 200 192
245 49 43 132 103 160 114 42 17 87 13 99 -8z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="mstile-70x70.png"/>
<square150x150logo src="mstile-150x150.png"/>
<square310x310logo src="mstile-310x310.png"/>
<wide310x150logo src="mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,41 @@
{
"name": "Quitter",
"icons": [
{
"src": "android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": 0.75
},
{
"src": "android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": 1
},
{
"src": "android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": 1.5
},
{
"src": "android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": 2
},
{
"src": "android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": 3
},
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,99 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M4450 6843 c-30 -8 -71 -17 -90 -20 -35 -6 -54 -22 -134 -113 -102
-118 -122 -269 -54 -415 24 -52 91 -159 125 -199 43 -51 132 -109 238 -155
126 -54 225 -104 225 -112 0 -3 -17 -69 -39 -145 -67 -243 -100 -366 -126
-484 -15 -63 -33 -144 -41 -180 -17 -72 -53 -241 -60 -280 -3 -14 -18 -95 -35
-180 -17 -85 -32 -166 -34 -180 -2 -14 -11 -68 -19 -120 -9 -52 -18 -113 -22
-135 -3 -22 -8 -47 -9 -55 -2 -8 -7 -40 -11 -70 -10 -69 -8 -59 -21 -100 -7
-19 -14 -51 -16 -70 -8 -57 -15 -66 -74 -84 -64 -21 -81 -24 -148 -30 -28 -3
-115 -18 -195 -34 -80 -17 -170 -33 -200 -37 -30 -4 -62 -9 -70 -10 -8 -2 -44
-6 -80 -10 -84 -8 -106 -12 -187 -31 -42 -10 -104 -15 -167 -13 -56 1 -141 -2
-191 -6 -227 -22 -448 -4 -675 54 -69 17 -135 47 -137 61 -8 41 33 50 157 35
147 -18 743 -25 727 -9 -2 2 -21 16 -44 31 -169 114 -319 291 -339 398 -21
116 -5 168 128 410 64 115 51 109 243 119 155 9 296 19 435 31 19 2 59 4 88 4
35 1 52 5 51 14 0 13 -107 85 -199 135 -78 42 -168 94 -216 125 -23 14 -58 33
-79 41 -32 14 -36 19 -31 40 3 14 1 26 -5 28 -9 3 -9 9 0 25 30 57 46 242 27
322 -46 198 -180 357 -366 436 -143 61 -247 79 -440 79 -278 -2 -505 -71 -747
-230 -44 -30 -100 -70 -124 -90 -24 -20 -75 -52 -113 -71 -165 -83 -371 -239
-541 -408 -365 -364 -627 -817 -786 -1360 l-29 -100 0 -786 c0 -851 -2 -821
57 -1059 14 -58 34 -134 45 -169 11 -35 21 -71 23 -80 8 -39 101 -255 147
-341 171 -322 463 -598 823 -778 222 -110 408 -157 660 -166 61 -2 122 -8 136
-14 14 -6 66 -18 115 -27 183 -34 263 -40 525 -39 197 1 240 4 260 18 17 10
58 17 134 21 193 9 329 17 360 21 17 2 50 7 75 9 408 49 834 216 1128 443 108
84 172 147 265 264 42 53 89 105 104 116 53 37 124 55 268 68 39 3 124 17 190
30 66 14 140 27 164 30 24 3 53 9 64 13 31 12 68 1 76 -23 17 -46 1 -275 -24
-347 -8 -20 -15 -59 -16 -85 -3 -66 -6 -72 -39 -79 -37 -8 -76 -38 -187 -142
-76 -71 -90 -89 -83 -104 27 -50 79 -31 170 61 38 38 74 70 79 70 20 0 17 -28
-11 -83 -32 -64 -29 -80 18 -91 34 -9 49 5 70 62 9 26 28 70 41 98 24 50 26
52 57 43 17 -4 40 -7 51 -5 11 2 35 -4 53 -13 29 -13 34 -13 43 -1 5 8 8 26 7
39 -2 19 -12 27 -48 37 -25 8 -63 16 -85 20 -22 3 -44 9 -48 14 -5 4 7 70 26
146 44 175 51 223 52 359 0 149 -24 198 -104 211 -60 10 -466 3 -663 -11 -77
-5 -82 4 -51 114 36 131 64 296 78 466 6 61 6 322 1 350 -2 11 -7 43 -11 71
-10 72 -15 78 -54 58 -19 -9 -56 -22 -84 -28 l-51 -11 -17 -70 c-44 -185 -115
-298 -257 -409 -122 -96 -261 -156 -359 -156 -38 0 -37 2 -19 -42 17 -40 14
-96 -8 -162 -9 -26 -16 -52 -16 -59 0 -7 -11 -36 -25 -66 -67 -142 -257 -246
-470 -255 -123 -6 -193 6 -278 47 -62 29 -215 140 -232 168 -4 5 18 0 47 -12
97 -39 192 -57 291 -53 51 1 107 7 125 13 38 11 35 11 65 11 12 0 45 15 72 32
28 18 57 33 65 34 21 4 76 69 100 119 32 67 87 273 85 320 l-3 42 65 6 c87 9
243 62 307 105 88 61 156 142 213 257 36 71 89 227 98 288 4 24 10 48 13 54 4
6 39 14 77 18 353 33 621 273 676 605 12 72 14 218 4 251 -7 20 -4 20 47 13
29 -5 86 -8 125 -9 45 0 73 -4 73 -11 0 -6 -7 -34 -16 -63 -8 -28 -17 -69 -19
-89 -3 -20 -8 -57 -11 -82 -4 -25 -8 -56 -10 -70 -9 -63 -11 -413 -3 -461 5
-30 12 -75 15 -102 6 -47 6 -47 -18 -38 -35 13 -148 24 -276 26 -112 1 -152
-7 -89 -19 163 -31 321 -87 470 -166 59 -31 79 -38 83 -27 3 8 -11 99 -30 203
-60 331 -65 438 -26 664 5 30 12 68 14 83 3 16 10 43 15 60 9 29 18 74 20 104
1 6 26 24 57 40 124 63 209 190 245 370 22 106 25 113 42 113 25 0 93 42 126
78 54 58 76 121 86 242 2 19 8 58 15 85 12 50 15 372 4 430 -6 36 -21 55 -42
55 -9 0 -58 -21 -110 -47 l-93 -46 -117 0 c-79 -1 -138 5 -182 16 -72 20 -220
85 -220 99 0 4 -5 8 -11 8 -18 0 -121 85 -190 156 -154 161 -261 327 -435 674
-40 80 -82 154 -93 164 -12 11 -47 21 -98 27 -87 11 -180 35 -188 50 -4 5 -2
42 4 82 5 39 12 97 15 127 10 102 16 165 21 230 11 133 17 196 24 236 9 50 -1
82 -31 93 -35 13 -107 11 -168 -6z m-1665 -1049 c117 -35 203 -126 251 -264
30 -84 34 -150 16 -220 -28 -111 -103 -197 -219 -252 -49 -23 -77 -30 -130
-30 -75 -1 -185 28 -261 68 -98 52 -180 156 -209 264 -15 54 0 157 32 222 45
93 172 209 247 229 46 12 213 1 273 -17z m2159 -313 c21 -40 47 -83 60 -95 12
-11 32 -37 43 -56 12 -19 39 -51 60 -70 21 -19 66 -69 100 -111 141 -174 333
-317 494 -370 41 -13 96 -22 154 -24 84 -2 124 1 230 20 l40 8 -30 -24 c-16
-13 -39 -33 -51 -44 -36 -35 -97 -86 -169 -142 -38 -29 -92 -72 -120 -94 -84
-66 -214 -139 -600 -333 -326 -165 -628 -297 -643 -282 -2 3 3 47 11 98 19
106 25 149 32 216 9 87 22 184 31 226 2 11 7 37 9 56 3 19 8 51 11 70 4 19 8
44 9 55 2 11 6 34 8 50 3 17 8 48 12 70 25 167 78 376 154 605 38 113 72 225
86 285 l7 30 13 -35 c7 -19 29 -68 49 -109z"/>
<path d="M2590 5693 c-95 -24 -161 -80 -210 -177 -41 -80 -39 -125 5 -212 51
-100 64 -112 152 -138 132 -40 244 -16 322 69 108 117 110 225 7 377 -53 79
-161 111 -276 81z m123 -167 c9 9 66 -25 76 -45 15 -27 16 -73 3 -97 -6 -12
-27 -35 -47 -53 -32 -28 -50 -33 -105 -34 -27 0 -99 52 -105 76 -13 62 -9 82
23 117 16 17 41 32 62 35 19 3 36 8 38 10 2 2 14 0 27 -5 13 -5 25 -6 28 -4z"/>
<path d="M4060 6180 c-12 -36 -9 -226 5 -350 15 -129 25 -754 15 -915 -5 -77
-20 -121 -42 -122 -11 -1 -52 -24 -92 -51 -87 -59 -169 -102 -351 -182 -181
-80 -217 -100 -385 -215 -77 -53 -180 -116 -230 -141 l-90 -45 112 -100 c61
-56 154 -132 205 -171 52 -39 102 -81 111 -93 16 -20 23 -22 68 -15 27 4 69
11 94 14 105 14 278 51 345 73 65 21 175 59 197 68 17 7 24 28 33 105 3 25 10
61 15 80 5 19 12 55 15 80 3 25 8 56 10 70 9 56 32 237 41 318 3 29 7 63 10
75 3 12 9 101 14 197 5 96 12 189 15 205 6 36 6 226 0 310 -2 33 -7 96 -10
140 -3 44 -8 103 -10 130 -3 28 -7 73 -9 100 -3 28 -7 82 -10 120 -13 142 -17
202 -21 267 -2 38 -7 72 -10 78 -13 21 -32 8 -45 -30z"/>
<path d="M5535 2155 c-5 -2 -44 -13 -85 -25 -89 -26 -224 -73 -263 -92 -27
-13 -32 -22 -42 -83 -2 -16 -10 -51 -17 -77 -6 -26 -9 -50 -6 -53 3 -4 41 11
84 33 44 22 95 42 114 46 64 11 81 15 100 21 17 5 18 0 14 -82 -3 -48 -7 -110
-10 -138 -3 -27 -7 -88 -10 -134 -4 -74 -3 -83 12 -77 9 3 32 9 52 12 21 3 46
7 57 9 11 2 23 4 26 4 3 1 6 7 6 14 0 6 10 57 22 112 28 126 34 183 34 317 0
86 -4 113 -19 139 -20 34 -52 59 -69 54z"/>
<path d="M5479 1175 c-3 -2 -29 -7 -58 -10 -29 -2 -57 -7 -62 -11 -5 -3 -9
-32 -9 -65 0 -43 -4 -59 -14 -59 -7 0 -39 -11 -70 -25 -31 -14 -93 -34 -137
-46 -97 -25 -165 -54 -150 -63 6 -4 11 -16 11 -26 0 -17 7 -18 58 -15 82 5
121 13 171 36 64 28 75 26 56 -11 -36 -70 -29 -150 14 -150 34 0 92 92 108
170 3 17 7 30 8 30 2 0 25 -9 51 -20 80 -35 108 -6 59 60 -29 39 -30 52 -11
83 18 28 26 87 14 110 -8 16 -29 23 -39 12z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

424
img/quitter-logo-small.svg Normal file
View File

@ -0,0 +1,424 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="83.5px" height="83.5px"
viewBox="0 0 83.5 83.5" enable-background="new 0 0 83.5 83.5" xml:space="preserve">
<switch>
<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
<i:pgfRef xlink:href="#adobe_illustrator_pgf">
</i:pgfRef>
</foreignObject>
<g i:extraneous="self">
<path fill="#010101" d="M82.642,84.242c-3.701-1.545-7.216-3.328-11.053-4.617c-3.613-1.214-7.264-2.261-9.978-5.069
c-0.262-0.271-0.536-0.511-0.815-0.735c0.035-0.002,0.069-0.003,0.104-0.005c-0.079-0.026-0.155-0.063-0.233-0.094
c-0.596-0.459-1.222-0.825-1.871-1.089c-0.629-0.473-1.195-0.976-1.699-1.354c-2.281-1.775-4.564-3.804-6.34-6.339
c-2.027-2.791-2.789-6.341-1.521-9.637c0.761-1.775,1.521-3.804,2.789-5.326c0.76-1.773,1.523-3.295,2.535-4.816h1.776
c1.521-0.507,4.564-0.507,5.072-0.507c5.325,0,10.903-1.017,16.229-1.017c0-0.505-0.256-0.76-0.762-1.013
c-0.76-0.507-1.774-1.014-2.537-1.774c-0.505-0.255-1.267-0.763-1.774-1.016c-3.297-1.774-6.593-3.55-9.635-5.578c0,0,0,0-0.254,0
c-0.508-0.254-0.508-0.254-1.014-0.509c-0.508-0.505-0.254-1.013,0.252-1.267c-0.252-0.254-0.506-0.254-0.76-0.507
c0-0.253,0.254-0.508,0.254-0.508c3.296-8.875-0.508-18.258-9.13-22.568c-9.13-4.565-21.047-3.55-30.176,0.254
c-4.565,2.028-8.623,4.817-12.173,7.86c-1.268,0.508-2.79,1.268-4.057,2.029C0.18,22.405-5.049,26.667-9.749,31.583
c1.683,2.962,2.729,6.379,2.999,10c1.023,13.751,0.333,27.56,0.333,41.333v21.472c5.085-0.186,10.173-0.409,15.196-0.291
c11.339,0.266,22.656,0.82,33.983,1.4c8.579,0.439,17.154,0.573,25.729,0.558c-0.128-0.209-0.264-0.414-0.388-0.626
c-0.161-0.275-0.305-0.56-0.458-0.839c2.917-0.858,5.885-2.173,8.938-2.345c0.725-0.041,1.421-0.176,2.086-0.382
c4.342,1.154,9.147-2.532,10.255-6.556C90.351,90.126,87.163,86.13,82.642,84.242z M34.529,22.084v-1.521c0,0,0-0.254,0-0.507
c0-0.255,0.252-0.508,0.252-0.761c0,0,0,0,0-0.254c0.759-2.536,2.536-4.818,4.563-6.339c1.775-2.03,4.312-3.044,8.117-2.536
c0.251,0,0.251,0.254,0.251,0.254c5.071-0.254,9.131,2.789,10.651,7.1c3.044,5.325,1.014,11.918-3.805,14.707
c-2.535,1.775-5.579,2.535-8.874,1.521c-0.508-0.253-1.014-0.253-1.522-0.505h-0.506c-1.521-0.508-3.043-1.269-4.565-2.283
c0-0.253,0-0.253-0.254-0.507c-2.028-1.268-3.04-3.044-3.803-5.071c-0.252-0.762-0.505-1.776-0.761-2.537
C34.273,22.592,34.273,22.338,34.529,22.084z"/>
<path fill="#010101" d="M41.373,29.186c1.268,0.253,2.789,0.759,4.057,1.268c3.299,0.507,6.341-0.509,8.622-3.044
c1.775-2.027,2.537-4.564,1.775-7.353c-0.759-2.029-2.027-3.55-3.044-5.071c-3.804-2.283-8.875-1.776-12.17,1.774
c-1.522,1.775-2.282,3.55-2.537,5.324c0,1.269,0.509,2.79,1.268,4.058C39.852,27.155,40.613,28.171,41.373,29.186z M43.908,20.563
c0.509-0.762,1.521-1.775,2.537-1.521c0.506-0.254,1.267-0.507,2.029,0c0,0,0,0,0.254,0c0.76-0.254,1.267,0,2.027,0.506
c1.015,0.761,1.521,2.536,0.76,3.804c-0.251,0.253-0.506,0.761-0.76,1.014c-1.014,1.521-3.549,2.283-5.071,1.015
c-1.014-0.254-1.776-1.015-2.028-2.029c-0.254-0.76-0.254-1.015-0.254-1.269C43.402,21.578,43.656,21.07,43.908,20.563z"/>
</g>
</switch>
<i:pgf id="adobe_illustrator_pgf">
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
1W4fkkFjX0f+wjsOmWPmVRwgAatf6ZEE3DPjTF3STwS17ZSviIxDl9COiNXQk1NERj+zy1un/EVk
LF6SOf67O7VGZFBK0jIRGYPGfo6XjsgI64Xoup0fR0oYj27Dsf+IDNXf/zleOiIDQxOj9N0d3tPQ
PEZknM5Twmloy0ZkUBKaYMlIXSAic+whIhPwlp9Hj8h4Ss7RbBiEHV/pOY67JFIWY1nLsXLJQ/Vk
LJ9QN0j4yUksXLpMItU3mNtzJezfZj2kjno4N+zE2DlL29PraWgxr/SJ4mP2FHriceuCW/oY2rrg
IVvQNa/OXcgGPOTVeckfdWRcnPnoEHbzskGEwA4tBGqmZBr/WrbqgYzctK6jQhmdGIidXe6LDwvn
w5l9MS0jbtX5cMueP+YtH86NxlaTD6ecpGfNiPPfjnM+nPcdqsvkwxF2MpERt+p8ONcTQVeSD+ew
G0ozNVeQD0feZGTDhivKh1P2wFsz4ladD0fJ4lxxPpyzL0Zb1qk1RyvIrEcKzmUvuec9kdAU5822
9LAnEhrjV8D7gO9rDytWtmYAsRPydhXmBG5lbmew/xVe3I7ZeXbtjV0cBrezdI49bkVlQkJXEos0
vnY8U88AttsD72nHMxjie1tWNqw8l5wRqOzr88CGD0sdCqvFLd833U5N8b41efPXyjnucoy6NXnz
13M6Kd0aL9ltbfBNaM3VnAaM23E7W8aD94rb8cmGtlqsuRI2bFJ1If00Leo26+bckcBup6HFHU9r
hPHN7SpCZb4dakpGajt8RT3A2CsC71aZkXq3yozUu9VkpD7/riAjlQsnV5KRCu2sJCMVtbN8Ripq
ZRUZqSh7zf0YaMu+Pmr+FjCIw6GpnjYZmW/MAQExz4Yteem4liJhiGS4pXf02KXCkVrMy44e8yC9
uu3uZ0GvIhXO4Eo1Ge6vpMIt7Ff6SoWjn0G0ylQ4ZUeES3rk0qlw+AzVV2dd4tE/60yogglbsIQw
8Jb4ZN4g4X4ivH5Xms38Wo8WXvhANQVjv7YLQL4DyKhfU1v7bgEb5sF6yLD74gI1Gx0lsXlYwnE6
nReJ8hRWebS8V/fkZkuXLCd9mymC2AXtvAfVMNiL+GQPG3jktejRq/VsKPH5dY0uRW8EIugC8VZo
62SbCyXKV3foAvFrdIH4TWjr5jCDni5QzVIoedJKs6n776yqjHZH32SXtYiT+bo4JReL8CtNyW4X
KZbEsinvbLK5PiIvTzUnu0U761fftAw7MfbslOz2mqQCxZdqU4Bm1nBaFD3D7tUp2S2UpgNFl2rr
QIX5+/joeWc7oReHS9QuD64IoJbr4tBV09QMu/Tn1sHd1piWAvbglOz2wVqAmu/je6nTM+wi36lm
hwa07QC0xhYc7+P7OF6jAg09r2VuaehNOGXYhatHG5ZZReyaxODxk5aJN+t5qne+Jpn39NJqhs93
Qx5alGetb/IgbjRmwxDV42Ma68LXiahFoTrFjt233M5ZsBcbP9aN8taI6kKpPco9VmNq4Mk+akK/
x+rA9qhm6p4remqP6x0t84tfdrG+5W6SM3dpZtlpv6qb5OymzmMU7mIzvEw2pBHpfSq73zhi2tfn
cJWZ9Qo59yicj0vkqONzv/fN7bIRL+OzO0tt4RRUL/eMeEW6y00M3vmFfW+Iz57wRMY86RfQ6R7f
yrLp7NwLn3EYD9l0dn6AbRRuqWw6u1w69/Nh/GbT2cUEA5FVZ9PZ5dIhflltNp0d5QRWnk1HjVqv
NJvObiOJnxNCvGXTue1RXE02nd06jf3a6zLZdOY5VXLp6Csji2bT2a+9rjqbjp4zsspsOo/nXC2Z
TUdsvNdz6WxXRZfKprNTRgFTkHAV2XR2XSJWq1eUTWeXS2dzY86S2XR286efCbmybDq7ptQV3hVm
09nl0tnkjCyZTbcoxvxl07lgbEXZdHa5dD4x5iGbzi6XjpJjtUQ2nZ3lac2tXj6bzk7gmO9NWEU2
nd1qCfYrV5pNZ25gw817XTCbzm6eqSsjC2fTkTOkLa046JcFs+ns/UoqOhbMpiOQoZuS9EyuRbPp
7AZEnEFEM0pRp5Z0APH6fmEyl7wTLbuaGE4JYlofvo6wA2g6rXHRxCdXaWG2LlZxX52LdbGi++r2
bG6rs7MuvOHJ9WZbgkhxRJF+L5xrMrw3EkBnDrvdRLvlbeo+6crWdqe90+1yblfQ2nZpbncH6pQX
dvbUJc3D9ChhHPCU8S5hqB6RsJ7/Tpk9omOrRzS/+8gaBKPclmW+6G7BnDUjXkzbD+PRJPd4zV3A
S8R46WvucOzC7aI7j4l0Kzg9e6lr7sgsTupFd97TlCjX3PmMKC54zZ1tRNF60Z3PXKX5a+7mTgK3
u+hugc0eoBeIu9gXPefqZIV5FuOT1ZzWjealcLl0Ls+J814MfSekayKd3d5Dn3ut0ZwvfUXOCXXv
r3WniusFdfRNHF6z0vDddC7b27xtIkO4yXqiZOoNW6YFkFh03lFGmXgmRUf6Yr7We1Bo3nNil8Pu
dOio6BwR97EbCtv8q9kNhXP/l6YxwLeXjVAeMh9XsBSCWzEZrDaz77EdPyqPurMLtbMQB861Ai6s
e6awh0vTcWP0swU93MBuTaz9kqJzibVfkutakvfEry/J05W/Nvbd/I5uaGzLkzAjdBcVlddDjEp/
9706LS2BtTa/g7qpHHrrfEuml9BfaW7nyGKZKbervMHwdnU3GN5aEhkW5P3myJf9Ts98jC9jThit
OO7q9NPO8qcEKO0sdlu1yX9B7ThsGfK3VxUYxCaRYYkVXrC95tkQymwSGRaIwC9ww51tfmVzaTYk
mlrdvdVuN9x5s8aXveGOyHy0vePOZ+YN5Ya7hW7K851PRLkpb1k2tNxw53g+v4f8EG833AXojVkT
axe64c7rqea159+lE7vQKc1c2OVEC++JtVzY1m8kzx70nljLhf3dkk7NfJQ85F64Zj5q2e3LnHOF
2/EUzXLec4XbWS6xFreCdeXyibV3jufCHSBd6Se/fW5zjafr8kgbxprGNL+5BuVv3TorMNu4lv29
bw5s6DOJ6R6vNFG1mH0ak1OSWocevFPP6/PquENjnx62C1rddnuuhMa+PXClhySme+y7r8avbMnO
DrzVr6TopEKUcdjL6GoYWqIK0CnHNCa/hmFHWW+1QIHSVZzdhvLTesQB6dab8vzmuJYY+j47QxRY
zoF3yAhb5miqOYyt7LrHzsRYgHXMrfZgw5SYrAet6fGmvPuW91tAaWtJ+Ea6lV33CF1yOrvDc46r
wb176dOhLTx1BhoTWean64GImqR3nH9A2X036M9BKN5ljlFaXwnn9jFCI7+uT92GBWPqkyk1TZ5w
EdkAiijZfA9bmC/k7fPhdsIb1Hw4efbG0JPwAMoO/2G9cy5u3MNmc7ueniX26JT598WZ/RdL7t/7
2TUV6AZ33OrSgPaoqWmByCR3VrwmxmpOTZusfUq0fLhcfe93/UcfqSUfLkYk4el3pREI3uWpQNlq
nj2jAM2srV/98K92QAMRNFaHhMNwdSLSgdYSb00q0E0pmv00IlfWNDzGCWhjkwpUntzuheyABiJK
7t/BS/LGNKtSXgOPn9SJiJUeez9e6r3OfoakhKHUzKz9vlbuz11bTH+qdKeqSZQi83xoMTqNHRHR
n7moSnUm01WUrug8bJtUPHGb9aCn8kouISgjX6tqXrFy2zLkcAGdyea1u8XMa6e8bsScX+giJT/M
W9X5PB6vlm7ZEs61uZnFcyTpqex6CYqxE9IZT362VrlkpW1R3St/WWm0HZqWc3o90ZPPXVrUvT1o
fK570r1m3YHd7cgv3rPuXHazBXx0in7gjU9+2Xa4lV7pzfzeWLNrbXMYJr75axWuRMX5OFqPMdiH
xHSZ4JYJY5XnpvNWGK/r1pWVrPI8JNeWj49VVnFuI8oB1Lh38XOt8Y16HgOaSnSUmgXocmCntxxA
z/libl5LxXGXlqf4mHnTCDe/ttPhf53H7FXCtKur85E7QtjLRHjIg2+HTwlhNbfrxudhV4Ash6Pw
tQCNklnvLarynRtbr5WxBhgp9ohyCo1rdhtYbhSh7ymRzFhJ7NWcLTcfiWS5mUV/LJNj1XE558AI
l2FpSc9uo59z4MEaJy2luYCn31RAYv4sy4l2+fueUzld77yZmz/a3p7vnOyaqOOZGGQPd6V5b4ya
r6rfL+anMd8U74Ax11wePxhb1Zkj0Bh15XIRjDkkpM2lC5tWeBfMAvRqHZrvSvObBWjmSnoOoM2p
Gj6yAM19oOcAWu5H9pkF6DUHUJX8VBeI1oS/G/Vs1sV8ZAFSRN1cDqDjHamuWYDuqoWyV8FXFiAF
n3M5gE45VlR0+L5Rz95H9poF6DUHkOojn9/aj2qhS/kWvJHN56V81IzUlV7K5xJVWNGlfAHvQmOJ
S/kscuwvXcqnREcXvQHP66V8WhTu717Kh2gMdervXsrn//7KRS7ls40qoE5JtpdqYttZ6Y3b2VDk
rX7kLWarOBvK/lY/35lclHv9FjgbaoF7/ahDW8HZUMa9fsvsU/J+r59z1t0KzobC9/otfzaUl3v9
POVXLn2vn4Edu1CGDSUvdK/fnuOtfoGIB5Ndxw79Xj9/mVyL3utnpQjzrX7WnSqL3uvnPDTH+yt9
3OvnfKvf0jeAqPf6OQ8osKJ7/dx2qK7mXj/ni7ACER97zhzu9XPmXs0at6Yf+b3Xz1nRWeyxhe/1
M21RmrvVb4kTqEz3+jlvnQqs6F4/92yOVdzr53yrn7/7+Oj3+vm7j2/Re/3MrVhv9aOc1Or7Xj/6
djIFymru9XNeUFHk2PL3+jmmp+B946vKEqPf6mfNe130Xj/ndRqk91dxr5/zhmtqRqrPe/1oWWDE
asKSeQ/QmIvwCHjPe5Cc7vXzzvvL3OunE5rtrX4L3sfn8xQP6n18y+c9ELf6LZXNcUt1vS1LxJ52
23q41895Y6uev6+z4WL3+jmf52Hcy7PcvX56ypVtYjSZMeQ9/Wj+Xj93ObaKe/2cb/VbzX18bps0
vN7Ht/BhOob3uoJ7/bRW7H1pf6c3zN/r53oVH13CLHCvn1OyxfOv4lcuf6+fLXnpt/otm5Xmzcwh
1iuXutfP2cwhMuuXutfPwLZdFu4i9/H5z8Kl3Me3bDTLcqvfcvfxec3CddhzZXOv36LJ8GpO4tL3
+pnYcO5WPwxlBff6acls9rf6KXJs+Xv9nDc6YQt2Bff6ObvtKsZWlvNkf6uf97ilGWPWe/0W9it9
3etHk4HKrX4r2j1Ycr7Vz3La/ML3+jnf6heIeDANjXS2BRNibTXyAvf6Od/q52KPeU+IdbzVj4go
LnWv3wI2zAL3+lFnEi/geM6udbnXz8t+y+Xv9XNWDig6alUP0nTeRoMyunJQ9cLcjg89sKvaMOz7
bSFlDe1CmYOAd954b05bxNkcBD2NLTEsmJyLksH2ptXV+JBEAU4T0FOg2uFhScUnNA==
]]>
<![CDATA[
Zd5B1JJKsrx31T9ITXeOD7nc3TW/uRcu4yoon6oev7loy6HIc3wjhAJBoc3X+meI2f06jG/v/ebj
O9tXD/Gb/veIrVS+UmzlK1lgqyeXhyD5q6N+g61d5pNs4+isxTZ+3j/Y84H0yV6fCnn25qjfZG8n
n+9sk50O2Obr7oy9Szaj7GPiNsa+dMLn7Ovr/TvbuhKm7Jtwv8m+nUYvZVmupOTJ82hbnnHDZiAi
z1q56GQzu4FMgqspyu3cTPZ79fP6Wf79oPny+BHa2ojcX6zntgfFyMV17Xjj8zsSDudTZ9G1QTdy
JOY3zjtf9+WdLS0RMDRLjMWzNzwlOPUsEAkdVm9uIuy61IPSi5GtDFHnBeeXTiYonbQRShYfROIK
SPUewULRgiyMKsBY7bIgAjpmv+zbzmtMls+ScWOscyMVY/fxHWHzgK0WT4ps9b17zNbOz34ma6+Z
DspcDanw9n4r8d3c2RObqrZCSk7iJVtpZlv4mj82dS4lLMaWmX1MV/a9RX+MeCsxNEP76HpfybTd
CMV2zsRQMrXZRBm35dB6OZcKJWIHB6jsOBS/DJ+htNsz9GI/lDwUeqHE6X09tPW7BiNt/+ZUmlau
z+TjSG6uc1slbjsQKfXbKQ6Nq3Ww3QjJeHKqFf40B0/XYy7x8bEHT81f7Nazqe8wg78W1vM/U5aN
Min8EwnFqPr0JW3BF/WYAu998zeO+aUeVwsK0ST6mVR/NkS1CZAC00r3+zfPptJH7OHPqDE5PLm7
ewEpMM2r3dzLxowXeATai12AQrxqr5d2tVelpPGCLz7e7msvjlLGC7C9Pg61F+ec/uIVJiwyYFO1
3S1cBlBQKQm7VkoY1UnItSMG8J3YAlX2HId21mL8y+RrBi+uOCSx41x9/0oAZFxuxcuJyKwarR8d
cZ2POIMxdpnAKOK669mCOoMgZhWB1E3ucqhKCt9vyHX3j9CEXXLqF5e3uFmUfbqzhiDHUeYxVpjr
fCwpohm4SQIUHSwf2z/YRlC2hf2b6VVxwHxsHV503xvlk6PQteFtsNqFjSWzNrdseyjysXp1B7eH
1itX0+JlY1fvYTE9vViXai+PuY/D69l6PxCpPPYuWDQuLl5p3tfRbLyBcf56oM7Gw6ugEfaNSAy8
vJ/tarR/p1AlX74soYX/u5TiLcITtNx5ieF5ueNUQzx9h7l2hJ4E/UlUmqhs/2Tg56PaYqtbRVPy
mNK+fWT1J47ozRv/CmPR+vMokK/K3+sqg3x/pbWxPGYUMcPG1nMsP7iOVBL52OvBNttcJ7WUnqir
DEjxXpVn1TnR1egLYwAVNmLnCKkv8OfhDqXivnD6E0/WO/0QUZlo6U0A9+ey+tZ8KJXjuVi1Wjlt
5lTZN/1Js1KnkEEUygjrOztv1Vbs6ZHU8cj+MyTj3u7YsFaKfPEhXtGjcJqOJ9XyfnazsDHixcpd
8bcJCnqrHM+nxR2sqg9Sk/E+vDg9Ls/aF+fwYne/ml+/6pVejtdwHnzDUOSoh5v67o708Y/i+IDc
jCnStB0+jmFG06qAyATCZhCOEbKeJ+htSifNZ/iZBemc5qJ4cQj+7I7hZ3YLr76toaOyrkVVMhai
v5pkPEjiRHQkNx9BHjRlRTBLF9kdxYQCMfpk63q+vx48z88+esUlNj8RuZ/ECDGUyE/jqCyudxmk
avhojAUq6mEUhFnnuzgID6tc4jUraTR7AqSSbdZLb9+HPcT7zXFRk4eFGJqcUzAIG1nATo5TcFe7
jSIV9XEOX5+pQq/2IabRT0b5WV8/SJWPd0YstHLOYllqSGykK2u3PCrd0g05wwAtkfYmCHNC+4IC
27bTvrruzYRiZ495pF0P0HkXXaYYSvBVrG4PkFouoMurj5AevkJ6eAO9vUYqeI/Qw2CHJEKJ0Nsm
0vZNwirA3pR0sRtnU7sPyjW/YMFWnqu/ul2Ahd1Bpf1W+T4Y/qbeDpqbVw+HN9tf0fLRU+YYZF80
fLCzX2V0e/MXN4stz9RnZJQw+wsbqr9vAWsHtNSvbsgA7/73YFSXH6qtRH3t8Pxjp3F4UxbXy++X
kyvMZpPQy2aZ7UWGZVnefVzDVh9f7p7vW/fA2w7YBvJl+X1jvFYQSuUODLzbch6u6otpAx7K0OK1
aLUtNeNnUzmpQT2V4XSImC9JyCx2Uh4Wzy8OXqrldPrNgAx63w3VGPJzflHIfLe1hST/82erzFy9
yaX33WHHF9KFQzlU9oDyldLY3m1rq2LxuXVpWTuJY2mpHq1RbcWxWYl5USjmhFxmrdC4OihUpH7x
Oxq9rNQv+tzB72HqsHz0059UywOuqPKiWO4b/gkj1g9/8DzP7x31g2+v2A5ESHzvFy6RdxCO7802
QnZDX3DgMPveh74woQHv+xm67cD3t/c2SGen/Zu09MbYDTUnSK1idGtzbSeU+B03kBhtIBfnBF4k
ZSQ8rxU/J7ZVTISSueRrKNYfgGgdXj6jb1nlDKJ95ZQh0kxYjtktFI9PbrFj9mXETFM6aJ7sHlVb
05tQ5S1z/hmIeGb2JWRbIOJhwEvLNhyHcRswdbiI0C5gTnMz7H+Htj4mtlyO4/yrmmRVmDXXyxZe
w9JyObHugdfw2VDLiXUPOtwHjela3D9kxeNbudHiSYstY7TYIVq1Ljyg2s9wrYQGEkasFzdXM8kO
WsyWs5akMau1BpbS4nJljD0nI4hrWevEn5WKDAv6BVy3h7PDxJg9OOxenlXL+/H08WFiVNgsP1an
L4f1zNvZwfvNeLsiv3TO04PO6zr28w5S8nS9+HbGX1fza+k9w+Pbnn3sJYqMKDf5zf2tmrETEoV/
xOuodgBYah1xPIMDL5qD+AaeeGZtUon3Hz8Pb5p38raUl79h9KHP7G/9qlFptzeZymMv/InxTsxA
ZPSC1ivBQuDBneWOTKP2Cnl9HSyJ32c0B2Asl16f7ewoPaJImBOTM/WUswWA3vFlhtm5A3n+wh1s
H39febVhMFCzEeHXegpEljQcPcnzQMSr7vZhPc1hW72VaUF8ex3zklrMl6Vkq0aXBE+iHHh/JfaD
M2SYF99+gn/5ulJPHAW8LgjXDMWwMN4X95L8EDvWL9YOPK06BmDridf3CqWnY43Rdq+sSEdhIHwS
r0XgmIKFH9nCy8VpHlRH5gCg1DM7RVAUa2e4YGcnOd0BDVJrgOK5bhykpvsnh/X0LQPqpnkNP9lq
YWNULpTXehn2r+iXBQXA5Ay48m+4q171y7KQx6VS8Xtz+FxmspuTQMSXav1/q198ajZF77sM2Hm4
IGHG687BGDWevNJgDFoiHiZzA0OzaTS2hFLfPlkvP5drtd1vkCvCr93A8SqP/UwvaUKRzIWicD7Y
a0ESVzOGFg+DeYIciPhirwWZS9vdsXJCs5VjS9CYh+GSNOaBvRYcM0Dxw14LDpykMQ/s5ZW50LLc
g7Gjbv42efxhonzFo5DeWSj+GD0IxQdiNZRo9Y7Rz020u+NF2bUQvwxvo+DeeSj29p5DCyoVVE9Q
ThbXQ3+BiCX4t1Toj2bVgd5fcbTdzqBD+y5WG6fwHCHxt7hioX07Ifv3fWRkRQdWHqewG7gqx/6W
E6P6UIHIgqHIJWOwC4f95+3pBeJji1C8BjkQ+csTb/JenV2JvxiDpfpvlvgYsFS0vlh8bDiWqzf7
4j12Sar58Czr1Vex43K8Q9WOzzejpX7oKeaVxRX1hjfb7fQzd+rujvv21JTF6ZXRuE1pWvrMvkge
ZduvSmPo+efu6WbjGu1QKKipcL4V/f7V1vPhze3Xq0cvCT9VWyF42k4oESIiCOqT2g6rre/BFtDY
4aD95YHH8BO0E69OQrsv2qbE9i/jwYrG2YJ/c+K1lcS/O/F42gORvzzxeNrx3tG/OfF42j2t8iwz
8XjaEe//1Yn3sca3xMTjaccnhPzNiceTjSO9f3PiPVmwzhOvmvbT/bjj/ilDJuPcYw1j5hHETKTE
jcmp/c5v6Rv5kDvTSFt9CCP7aTNu3sWv7Krfva70NMO4a9phjTXpzsmdoUn50k1HNLqJy9Z+M7NT
3ADiyt23iLWJWefil7BCNx75Y2IEuCy0+/Cj+6e3pnuA8Jw/EMFg8F820qOqtQnh6Mlo4lppQs2a
AJzgzW9bh9khopdNPvZTzKLt5lGu9vrBIjqIqWXt3y1chjD2HY6jvXlpfedeb85BQmibvRW4uH7r
y9bB3VYbk4VyVRLaCI5fxKL7TwOCKdB2XZDJCutu/1zptwO9EDy9Pbg9Qx0NW64NQtMZNeblPjRK
VZSsAbn48KRz5We0s371jLPSxBr0hzNLJWakYWwWMvbph8TJ04bGV7F79GLN6A1JfB1+pKHgQFAj
JAoSIjuhNw0JYspAAurPt4EE5QJFBQXlybWOgmcSBbOncx0F9zh2QSAh4QEJwsFlNKqioL1/bkJB
YaLnMDwbKED3WOEpcUfCPnc8UdmnGDvRUVB/YcJft850oHpJSPiwKhFnz79VJPAzjkRC9/yURgeb
inxVsMh/XFoISaMx5ybw5nFaEx4aULyk2DJNKKdKOPIDjMWJI9R7cZfoAyZInSsXawLnQLqzNZIw
tCZA6jDL9EFYz3+nNGm5GFH5okpsj83JJ5IuvXG3tQGCKqEBhDG/TZBUuZiEiZJ0STbhdTaiJFVq
DSgYe6H1wtqEISjps7Ff+B5qDWwpgyAiilGSLhchqiiVKrV4snsTBl06oJLC4OotZgZdsvXydUe/
yG9oBhUziI+t3hT13povwUP1vNGYw6hi/iWflcZiNBrzSucxg8YMAkE05p3jY6Qy9kEgBI3FSBpb
aBgGjVno3DONxWg05qUPCo3FPMi+0Gb5+VJtgp+8mvuw5Sz5dI3sgIktgy4X7INZIy8yG1skVVIo
Amlkh9nYsqNLD4LLaGBxjYxdLulLQuZnPWHOiv1EiyKPaD3kEa2B1EOJ81hCyXnHaeU9JQtH8el2
H0Rq5qf/vE8lf99f5mfcd94nmcXpNfPTf94nCcVr5qf/vM9AxH/mZ9x33qeSK+ov89N/3qe2i0DL
09yg5nu6ZHs6tgIYc8zyXE2OpxpRpGZ5xleS4xlwyfJcTY6n+SyC+SzP1eR4BiLOWZ6L5Hjyjez8
Xjglq3L3QREpIMcPsTW+pWHxeqxWQRkne+kHlP4oRgFKFHFOa6phrL6Jrhj5RTIprsok4BdzNvrD
iMHUyG8ehF5Qp/ApxgksuIGodo5S/fspo5BpP1GI42RUkBaVY7uj84T95tmJlozJbAS0g/CivVs1
1dMiwnBQB6SX1uUTle0Ttxway0nKSKM0Sa8Gy6Y7J4ibTjgyg5urFX8zehrllj6+mHKBrzIbILOU
sna4FVYkFZZOYP98Kamc9WQVSZgzglxBIxviSj8f8P/sBbK5vBjMZTg+mLqaDST5XO5/9IfBRGA7
kDo84rjbYW9UlSXpRvrPtDzqzn6k4TRYCKYOr0tHR7l0WeqOelIQ31affjOoIal2Vg==
]]>
<![CDATA[
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
]]>
<![CDATA[
JVlqT6Ve8c/Rz3gkTyXZFGYwhQPgn14gE4zGgvd3gUZRiYRUhj0cr0gmA5HIRftDupHb/YEkBz4m
7X+kYHs4HE0BwBjeBD9kaTIdyVJw8jn6F5XAJ1r1SKRyXg38XwygOeE=
]]>
</i:pgf>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

1
img/quitter-logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@ -361,21 +361,19 @@ function buildProfileCard(data) {
var followButton = '';
// only add follow button if this is a local user
if(data.is_local == true) {
if(typeof window.loggedIn.screen_name != 'undefined' && window.loggedIn.id != data.id) {
followButton = buildFollowBlockbutton(data);
}
// follow from external instance if logged out
if(typeof window.loggedIn.screen_name == 'undefined') {
// follow from external instance if logged out and the user is local
if(window.loggedIn === false && data.is_local == true) {
followButton = '<div class="user-actions"><button type="button" class="external-follow-button"><span class="button-text follow-text"><i class="follow"></i>' + window.sL.userExternalFollow + '</span></button></div>';
}
// edit profile button if me
if(typeof window.loggedIn.screen_name != 'undefined' && window.loggedIn.id == data.id) {
// edit profile button if it's me
else if(window.loggedIn !== false && window.loggedIn.id == data.id) {
followButton = '<div class="user-actions"><button type="button" class="edit-profile-button"><span class="button-text edit-profile-text">' + window.sL.editMyProfile + '</span></button></div>';
}
// follow button for logged in users
else if(window.loggedIn !== false) {
followButton = buildFollowBlockbutton(data);
}
// is webpage empty?
@ -1199,15 +1197,15 @@ function expand_queet(q,doScrolling) {
}
// show certain attachments in expanded content
if(q.children('script.attachment-json').length > 0
&& q.children('script.attachment-json').text() != 'undefined') {
if(q.children('.queet').children('script.attachment-json').length > 0
&& q.children('.queet').children('script.attachment-json').text() != 'undefined') {
try {
var attachmentsParsed = JSON.parse(q.children('script.attachment-json').text());
var attachmentsParsed = JSON.parse(q.children('.queet').children('script.attachment-json').text());
}
catch(e) {
var attachmentsParsed = false;
console.log('could not parse attachment json when expanding the notice: ' + e);
console.log("attachment-json: " + q.children('script.attachment-json').text());
console.log("attachment-json: " + q.children('.queet').children('script.attachment-json').text());
}
if(attachmentsParsed !== false) {
@ -1222,11 +1220,6 @@ function expand_queet(q,doScrolling) {
// attachments in the content link to /attachment/etc url and not direct to image/video, link is in title
if(typeof attachment_title != 'undefined') {
// hack to make remote webm-movies load
if(attachment_title_extension == 'webm') {
attachment_mimetype = 'video/webm';
}
// videos
if($.inArray(attachment_mimetype, ['video/mp4', 'video/ogg', 'video/quicktime', 'video/webm']) >=0) {
if(q.children('.queet').find('.expanded-content').children('.media').children('video').children('source[href="' + attachment_title + '"]').length < 1) { // not if already showed
@ -1342,32 +1335,40 @@ function replyFormHtml(streamItem,qid) {
var cachedText = encodeURIComponent(data);
}
// object with ostatus-uri as key to avoid duplicates
var screenNamesToAdd = {};
// add the screen name to the one we're replying to (if it's not me)
if(!thisIsALinkToMyProfile(q.find('.account-group').attr('href'))) {
var replyToScreenName = q.find('.account-group span.screen-name').html().replace('@','');
screenNamesToAdd[q.find('.account-group').attr('href')] = replyToScreenName;
// add the screen name to the one we're replying to first (if it's not me)
if(!thisIsALinkToMyProfile(streamItem.attr('data-user-profile-url')) && typeof streamItem.attr('data-user-ostatus-uri') != 'undefined') {
screenNamesToAdd[streamItem.attr('data-user-ostatus-uri')] = streamItem.attr('data-user-screen-name');
}
// add the screen name to the one who the one we're replying to is replying to (if it's not me)
if(q.find('i.addressees > span.reply-to').length > 0
&& !thisIsALinkToMyProfile(q.find('i.addressees > span.reply-to > a').attr('href'))) {
var replyToScreenName = q.find('i.addressees > span.reply-to > a').html().replace('@','');
if(typeof screenNamesToAdd[q.find('i.addressees > span.reply-to > a').attr('href')] == 'undefined') {
screenNamesToAdd[q.find('i.addressees > span.reply-to > a').attr('href')] = replyToScreenName;
}
// old style notice (probably cached, this can be removed later)
else if (typeof streamItem.attr('data-user-ostatus-uri') == 'undefined') {
screenNamesToAdd[q.find('.account-group').attr('href')] = q.find('.screen-name').text().replace('@','');
}
// get all other mentions (if it's not me)
$.each(q.find('.queet-text').find('.mention'),function(key,obj){
if(!thisIsALinkToMyProfile($(obj).attr('href'))) {
if(typeof screenNamesToAdd[$(obj).attr('href')] == 'undefined') {
var thisMention = $(obj).html().replace('@','');
screenNamesToAdd[$(obj).attr('href')] = thisMention;
// add the rest of the attentions (not me)
if(q.children('script.attentions-json').length > 0
&& q.children('script.attentions-json').text() != 'undefined') {
try {
var attentionsParsed = JSON.parse(q.children('script.attentions-json').text());
}
catch(e) {
var attentionsParsed = false;
console.log('could not parse attentions json: ' + e);
console.log("attentions-json: " + q.children('script.attentions-json').text());
}
if(attentionsParsed !== false) {
$.each(attentionsParsed, function() {
if(!thisIsALinkToMyProfile(this.profileurl)
&& typeof screenNamesToAdd[this.ostatus_uri] == 'undefined') {
screenNamesToAdd[this.ostatus_uri] = this.screen_name;
}
});
}
}
// build reply/rant strings
var repliesText = '';
@ -2040,8 +2041,19 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
// reply-to html
var reply_to_html = '';
if(obj.in_reply_to_screen_name !== null && obj.in_reply_to_profileurl !== null && obj.in_reply_to_screen_name != obj.user.screen_name) {
reply_to_html = '<span class="reply-to"><a class="h-card mention" href="' + obj.in_reply_to_profileurl + '">@' + obj.in_reply_to_screen_name + '</a></span> ';
if(obj.in_reply_to_screen_name !== null
&& obj.in_reply_to_profileurl !== null
&& obj.in_reply_to_profileurl != obj.user.statusnet_profile_url) {
var replyToProfileurl = obj.in_reply_to_profileurl;
var replyToScreenName = obj.in_reply_to_screen_name;
}
// if we don't have a reply-to, we might have attentions, in that case use the first one as reply
else if(typeof obj.attentions != 'undefined' && typeof obj.attentions[0] != 'undefined') {
var replyToProfileurl = obj.attentions[0].profileurl;
var replyToScreenName = obj.attentions[0].screen_name;
}
if(typeof replyToProfileurl != 'undefined' && typeof replyToScreenName != 'undefined') {
reply_to_html = '<span class="reply-to"><a class="h-card mention" href="' + replyToProfileurl + '">@' + replyToScreenName + '</a></span> ';
}
// in-groups html
@ -2097,26 +2109,37 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
statusnetHTML = statusnetHTML.slice(0,-4);
}
// external
var ostatusHtml = '';
if(obj.is_local === false) {
if(obj.user.is_local === false) {
ostatusHtml = '<a target="_blank" data-tooltip="' + window.sL.goToOriginalNotice + '" class="ostatus-link" href="' + obj.external_url + '"></a>';
var qSource = '<a href="' + obj.external_url + '">' + getHost(obj.external_url) + '</a>';
}
else {
var qSource = obj.source;
}
var queetTime = parseTwitterDate(obj.created_at);
var queetHtml = '<div \
id="' + idPrepend + 'stream-item-' + idInStream + '" \
data-uri="' + URItoUse + '" \
class="stream-item notice ' + extraClasses + '" \
data-source="' + escape(obj.source) + '" \
data-source="' + escape(qSource) + '" \
data-quitter-id="' + obj.id + '" \
data-conversation-id="' + obj.statusnet_conversation_id + '" \
data-quitter-id-in-stream="' + idInStream + '" \
data-in-reply-to-screen-name="' + in_reply_to_screen_name + '" \
data-in-reply-to-profile-url="' + obj.in_reply_to_profileurl + '" \
data-in-reply-to-profile-ostatus-uri="' + obj.in_reply_to_ostatus_uri + '" \
data-in-reply-to-status-id="' + obj.in_reply_to_status_id + '"\
data-user-id="' + obj.user.id + '"\
data-user-screen-name="' + obj.user.screen_name + '"\
data-user-ostatus-uri="' + obj.user.ostatus_uri + '"\
data-user-profile-url="' + obj.user.statusnet_profile_url + '"\
' + requeetedByMe + '>\
<div class="queet" id="' + idPrepend + 'q-' + idInStream + '"' + blockingTooltip + '>\
<script class="attachment-json" type="application/json">' + JSON.stringify(obj.attachments) + '</script>\
<script class="attentions-json" type="application/json">' + JSON.stringify(obj.attentions) + '</script>\
' + requeetHtml + '\
' + ostatusHtml + '\
<div class="queet-content">\

File diff suppressed because one or more lines are too long

View File

@ -1101,11 +1101,16 @@ $('#faq-link').click(function(){
·
· · · · · · · · · · · · · */
$('#tou-link').click(function(){
$('#tou-link,.tou-link').click(function(){
popUpAction('popup-terms', window.sL.showTerms,'<div id="terms-container"></div>',false);
if(window.customTermsOfUse) {
$('#terms-container').html(window.customTermsOfUse);
}
else {
getDoc('terms',function(termsHtml){
$('#terms-container').html(termsHtml);
});
}
});
@ -2947,17 +2952,18 @@ $('body').on('keyup paste input', 'div.queet-box-syntax', function() {
}
// long enough match, create a mention span
else {
// don't include ending char, if any of these
// don't include ending char, if any of these (but tags can contain and end with . and -)
if(currentMatch[0].slice(-1) == '<'
|| currentMatch[0].slice(-1) == '&'
|| currentMatch[0].slice(-1) == '?'
|| currentMatch[0].slice(-1) == '!'
|| currentMatch[0].slice(-1) == ' '
|| currentMatch[0].slice(-1) == '-'
|| (currentMatch[0].slice(-1) == '-' && k != 'tag')
|| currentMatch[0].slice(-1) == ':'
|| currentMatch[0].slice(-1) == '.'
|| (currentMatch[0].slice(-1) == '.' && k != 'tag')
|| currentMatch[0].slice(-1) == ','
|| currentMatch[0].slice(-1) == ')') {
|| currentMatch[0].slice(-1) == ')'
|| currentMatch[0].slice(-1) == '\'') {
currentMatch[0] = currentMatch[0].slice(0,-1);
}
@ -3244,6 +3250,18 @@ $('body').on('keyup', 'div.queet-box-syntax', function(e) {
}
});
/* ·
·
· Any click empties the mentions-suggestions
·
· · · · · · · · · · · · · */
$(document).click(function() {
$('.mentions-suggestions').empty();
});
/* ·
·
· Store unposted queets in cache, if the user accidentally reloads the page or something

View File

@ -10,7 +10,7 @@
"followers": "Follower",
"following": "Folgt",
"groups": "Gruppen",
"compose": "Verfasse einen neuen Queet...",
"compose": "Verfasse einen neuen Queet",
"queetVerb": "Quittern",
"queetsNounPlural": "Queets",
"logout": "Abmelden",
@ -76,7 +76,7 @@
"searchVerb": "Suche",
"deleteVerb": "Löschen",
"cancelVerb": "Abbrechen",
"deleteConfirmation": "Bist Du sicher, dass Du diesen Queet löschen möchtest?",
"deleteConfirmation": "Bist du sicher, dass du diesen Queet löschen möchtest?",
"userExternalFollow": "Folgen",
"userExternalFollowHelp": "Deine Konto-ID (z.B. user@rainbowdash.net).",
"userFollow": "Folgen",
@ -93,10 +93,10 @@
"linkColor": "Linkfarbe",
"backgroundColor": "Hintergrundfarbe",
"newToQuitter": "Neu bei {site-title}?",
"signUp": "Registriere Dich!",
"signUp": "Registriere dich!",
"signUpFullName": "Vollständiger Name",
"signUpEmail": "E-Mail",
"signUpButtonText": "Registriere Dich bei {site-title}!",
"signUpButtonText": "Registriere dich bei {site-title}!",
"welcomeHeading": "Willkommen bei {site-title}!",
"welcomeText": "Wir sind eine Community von Microbloggern, verteilt über einen weltweiten <span id=\"federated-tooltip\"><div id=\"what-is-federation\">\"Verbund\" bedeutet, dass du nicht selbst einen {site-title}-Account brauchst, um mit {site-title}-Nutzern zu kommunizieren, ihnen zu folgen oder Follower bei {site-title} zu haben. Du kannst dich genauso gut bei einem der anderen <a href=\"http://www.gnu.org/software/social/\">GNU-Social</a>-Server registrieren oder einem anderen Dienst, der das <a href=\"http://www.w3.org/community/ostatus/wiki/Main_Page\">OStatus</a>-Protokoll unterstützt. Du kannst sogar ganz ohne Anmeldung teilnehmen, wenn du dir GNU social auf deinem eigenen Server installierst.</div>Verbund</span> unabhängiger GNU-Social-Server, auch bekannt als StatusNet. Wir sind genau das Richtige für <strong>Leute wie dich</strong>, denen Ethik und Solidarität etwas bedeuten und die sich nicht mehr an zentralisierten kommerziellen Diensten beteiligen wollen. ",
"registerNickname": "Nutzername",
@ -105,13 +105,13 @@
"registerLocation": "Standort",
"registerRepeatPassword": "Passwort bestätigen",
"moreSettings": "Weitere Einstellungen",
"otherServers": "Du kannst Dir auch gerne ein Konto auf einem anderen Server des GNU social-Netzwerks einrichten. <a href=\"http://federation.skilledtests.com/select_your_server.html\">Übersicht</a>",
"otherServers": "Du kannst dir auch gerne ein Konto auf einem anderen Server des GNU social-Netzwerks einrichten. <a href=\"http://federation.skilledtests.com/select_your_server.html\">Übersicht</a>",
"editMyProfile": "Profil bearbeiten",
"notifications": "Mitteilungen",
"xFavedYourQueet": "favorisierte Deinen Queet",
"xRepeatedYourQueet": "hat Dich requeetet",
"xStartedFollowingYou": "folgt Dir jetzt",
"followsYou": "folgt Dir",
"xFavedYourQueet": "favorisierte deinen Queet",
"xRepeatedYourQueet": "hat dich requeetet",
"xStartedFollowingYou": "folgt dir jetzt",
"followsYou": "folgt dir",
"FAQ": "FAQ",
"inviteAFriend": "Lade deine Freunde ein!",
"goToExternalProfile": "Vollständiges Profil anzeigen",
@ -132,7 +132,7 @@
"tooltipReloadStream": "Diesen Datenstrom aktualisieren",
"tooltipRemoveBookmark": "Dieses Lesezeichen löschen",
"clearHistory": "Verlauf löschen",
"ERRORsomethingWentWrong":"Irgendwas ging da schief.",
"ERRORsomethingWentWrong": "Irgendetwas ging da schief.",
"ERRORmustBeLoggedIn": "Du musst eingeloggt sein, um dies lesen zu können.",
"ERRORcouldNotFindUserWithNickname": "Konnte Nutzer mit Name \"{nickname}\" nicht finden",
"ERRORcouldNotFindGroupWithNickname": "Konnte Gruppe mit Bezeichnung \"{nickname}\" nicht finden",
@ -140,35 +140,35 @@
"ERRORnoticeRemoved": "Dieser Queet wurde gelöscht.",
"ERRORnoContactWithServer": "Konnte keine Verbindung zu diesem Server herstellen. Der Server könnte überlastet sein oder es besteht ein Problem mit deiner Internetverbindung. Bitte versuche es später erneut!",
"ERRORattachmentUploadFailed": "Der Upload ist fehlgeschlagen. Entweder wird das Dateiformat nicht unterstützt oder die Datei ist zu groß.",
"hideRepliesToPeopleIDoNotFollow":"Verstecke Antworten von Personen denen ich nicht folge",
"hideRepliesToPeopleIDoNotFollow": "Verstecke Antworten von Personen, denen ich nicht folge",
"markAllNotificationsAsSeen": "Markiere alle Benachrichtigungen als gelesen",
"notifyRepliesAndMentions": "Erwähnungen und Antworten",
"notifyFavs": "Favoriten",
"notifyRepeats": "Requeets",
"notifyFollows": "Neue Follower",
"timelineOptions":"Timeline Optionen",
"timelineOptions": "Timeline-Optionen",
"ERRORfailedSavingYourSetting": "Speichern deiner Einstellungen fehlgeschlagen",
"ERRORfailedMarkingAllNotificationsAsRead": "Alle Benachrichtigungen als gelesen markieren fehlgeschlagen.",
"newNotification": "{new-notice-count} neue Benachrichtigung",
"newNotifications": "{new-notice-count} neue Benachrichtigungen",
"thisIsANoticeFromABlockedUser":"Achtung: Dies ist ein Queet von einem Nutzer, den du blockiert hast. Klicke um ihn anzuzeigen.",
"thisIsANoticeFromABlockedUser": "Achtung: Dies ist ein Queet von einem Nutzer, den du blockiert hast. Klicke, um ihn anzuzeigen.",
"nicknamesListWithListName": "{nickname}s Liste: {list-name}",
"myListWithListName": "Meine Liste: {list-name}",
"listMembers": "Mitglieder",
"listSubscribers": "Abonnenten",
"ERRORcouldNotFindList": "Diese Liste gibt es nicht.",
"emailAlreadyInUse":"Already in use",
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Eingebettete Inhaltsvorschau nicht anzeigen in dieser Timeline",
"emailAlreadyInUse": "Bereits in Benutzung",
"addEditLanguageLink": "Hilf mit, {site-title} in eine andere Sprache zu übersetzen",
"onlyPartlyTranslated": "{site-title} ist nur teilweise in <em>{language-name}</em> übersetzt ({percent}%). Du kannst im <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter-Repository</a> mithelfen, die Übersetzung zu vervollständigen",
"startRant": "Starte einen Rant",
"continueRant": "Setze den Rant fort",
"hideEmbeddedInTimeline": "Eingebettete Inhaltsvorschau in dieser Timeline nicht anzeigen",
"hideQuotesInTimeline": "Verberge Zitate in dieser Timeline",
"userBlocks":"Accounts you're blocking",
"buttonBlocked":"Blocked",
"buttonUnblock":"Unblock",
"failedBlockingUser":"Failed to block the user.",
"failedUnblockingUser":"Failed to unblock the user.",
"unblockUser": "Unblock {username}",
"tooltipBlocksYou":"You are blocked from following {username}."
"userBlocks": "Benutzer, die du blockierst",
"buttonBlocked": "Blockiert",
"buttonUnblock": "Entblockieren",
"failedBlockingUser": "Blockieren des Benutzers fehlgeschlagen.",
"failedUnblockingUser": "Entblockieren des Benutzers fehlgeschlagen.",
"unblockUser": "Entblockiere {username}",
"tooltipBlocksYou": "{username} blockiert dich, sodass du ihm nicht folgen kannst."
}

View File

@ -6,12 +6,12 @@
"loginSignIn": "Entrar",
"loginRememberMe": "Lembrar-me",
"loginForgotPassword": "Esqueceu sua senha?",
"notices": "Avisos",
"notices": "Mensagens",
"followers": "Seguidores",
"following": "Seguindo",
"groups": "Grupos",
"compose": "Escrever um novo Queet...",
"queetVerb": "Queetear",
"queetVerb": "Queetar",
"queetsNounPlural": "Queets",
"logout": "Sair",
"languageSelected": "Idioma:",
@ -21,12 +21,12 @@
"details": "Detalhes",
"expandFullConversation": "Expandir toda a conversa",
"replyVerb": "Responder",
"requeetVerb": "Requeetear",
"requeetVerb": "Requeetar",
"favoriteVerb": "Favorito",
"requeetedVerb": "Requeeteado",
"requeetedVerb": "Requeetado",
"favoritedVerb": "Marcado como favorito",
"replyTo": "Responder para",
"requeetedBy": "Requeeteado por {requeeted-by}",
"requeetedBy": "Requeetado por {requeeted-by}",
"favoriteNoun": "Favorito",
"favoritesNoun": "Favoritos",
"requeetNoun": "Requeet",
@ -119,25 +119,25 @@
"showTerms": "Leia nossos Termos de Uso",
"ellipsisMore": "Mais",
"blockUser": "Bloquear {username}",
"goToOriginalNotice": "Ir para aviso original",
"goToOriginalNotice": "Ir para mensagem original",
"goToTheUsersRemoteProfile": "Ir para o perfil do usuário",
"clickToDrag":"Clique para arrastar",
"keyboardShortcuts":"Atalhos do teclado",
"classicInterface":"Interface clássica do {site-title}",
"accessibilityToggleLink":"Para melhor acessibilidade, clique neste link para trocar para a interface clássica",
"tooltipBookmarkStream":"Adicione esta stream em seu marcador",
"tooltipBookmarkStream":"Adicione este fluxo aos favoritos",
"tooltipTopMenu":"Menu e configurações",
"tooltipAttachImage":"Anexar uma imagem",
"tooltipShortenUrls":"Encurtar todas as URLs no Queet",
"tooltipReloadStream":"Atualizar esta stream",
"tooltipRemoveBookmark":"Remover este marcador",
"tooltipReloadStream":"Atualizar este fluxo",
"tooltipRemoveBookmark":"Remover este favorito",
"clearHistory":"Limpar histórico de navegação",
"ERRORsomethingWentWrong":"Algo de errado aconteceu.",
"ERRORmustBeLoggedIn":"Você precisa estar logado para visualizar esta stream.",
"ERRORmustBeLoggedIn":"Você precisa estar logado para visualizar este fluxo.",
"ERRORcouldNotFindUserWithNickname":"Não foi possível encontrar um usuário com o apelido \"{nickname}\" neste servidor",
"ERRORcouldNotFindGroupWithNickname":"Não foi possível encontrar um grupo com o nome \"{nickname}\" neste servidor",
"ERRORcouldNotFindPage":"Não foi possível encontrar aquela página.",
"ERRORnoticeRemoved": "Este aviso foi removido.",
"ERRORnoticeRemoved": "Esta mensagem foi removida.",
"ERRORnoContactWithServer": "Não foi possível estabelecer uma conexão com o servidor. O servidor pode estar sobrecarregado, ou pode haver um problema com sua conexão de internet. Por favor tente novamente mais tarde!",
"ERRORattachmentUploadFailed": "O envio falhou. O formato pode não ser suportado ou o tamanho é muito grande.",
"hideRepliesToPeopleIDoNotFollow":"Ocultar respostas para pessoas que eu não sigo",
@ -151,7 +151,7 @@
"ERRORfailedMarkingAllNotificationsAsRead":"Falha ao marcar todas notificações como vistas.",
"newNotification": "{new-notice-count} nova notificação",
"newNotifications": "{new-notice-count} novas notificações",
"thisIsANoticeFromABlockedUser":"Aviso: Este é um aviso de um usuário bloqueado por você. Clique para mostrá-lo.",
"thisIsANoticeFromABlockedUser":"Aviso: Esta é uma mensagem de um usuário bloqueado por você. Clique para mostrá-lo.",
"nicknamesListWithListName":"Lista de {nickname}: {list-name}",
"myListWithListName":"Minha lista: {list-name}",
"listMembers":"Membros",
@ -161,7 +161,7 @@
"addEditLanguageLink":"Ajude a traduzir {site-title} para outro idioma",
"onlyPartlyTranslated":"{site-title} está parcialmente traduzido para <em>{language-name}</em> ({percent}%). Você pode ajudar com a tradução na <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">página do repositório do Qvitter</a>",
"startRant":"Iniciar uma discussão",
"continueRant":"Continuar com a discussão",
"continueRant":"Continuar discussão",
"hideEmbeddedInTimeline":"Ocultar conteúdo incorporado nesta linha do tempo",
"hideQuotesInTimeline":"Ocultar citações nesta linha do tempo",
"userBlocks":"Contas bloqueadas",

174
locale/tr.json Normal file
View File

@ -0,0 +1,174 @@
{
"directionality":"ltr",
"languageName": "Türkçe",
"loginUsername": "Kullanıcı adı veya e-posta",
"loginPassword": "Şifre",
"loginSignIn": "Giriş yap",
"loginRememberMe": "Beni hatırla",
"loginForgotPassword": "Şifreni mi unuttun?",
"notices": "İletiler",
"followers": "Takipçi",
"following": "Takip edilen",
"groups": "Gruplar",
"compose": "Yeni bir ileti oluştur...",
"queetVerb": "Gönder",
"queetsNounPlural": "Bildirimler",
"logout": ıkış yap",
"languageSelected": "Dil:",
"viewMyProfilePage": "Profili görüntüle",
"expand": "Genişlet",
"collapse": "Daralt",
"details": "Detaylar",
"expandFullConversation": "Sohbeti genişlet",
"replyVerb": "Yanıtla",
"requeetVerb": "Tekrarla",
"favoriteVerb": "Favori",
"requeetedVerb": "Tekrarlanan",
"favoritedVerb": "Favorilenen",
"replyTo": "Adlı kişiyi yanıtla",
"requeetedBy": "{requeeted-by} tarafından tekrarlanmış",
"favoriteNoun": "Favori",
"favoritesNoun": "Favoriler",
"requeetNoun": "Tekrar",
"requeetsNoun": "Tekrarlar",
"newQueet": "{new-notice-count} yeni bildirim",
"newQueets": "{new-notice-count} yeni bildirimler",
"longmonthsJanuary": "Ocak",
"longmonthsFebruary": "Şubat",
"longmonthsMars": "Mart",
"longmonthsApril": "Nisan",
"longmonthsMay": "Mayıs",
"longmonthsJune": "Haziran",
"longmonthsJuly": "Temmuz",
"longmonthsAugust": "Ağustos",
"longmonthsSeptember": "Eylül",
"longmonthsOctober": "Ekim",
"longmonthsNovember": "Kasım",
"longmonthsDecember": "Aralık",
"shortmonthsJanuary": "oca",
"shortmonthsFebruary": "şub",
"shortmonthsMars": "mar",
"shortmonthsApril": "nis",
"shortmonthsMay": "may",
"shortmonthsJune": "haz",
"shortmonthsJuly": "tem",
"shortmonthsAugust": "ağu",
"shortmonthsSeptember": "eyl",
"shortmonthsOctober": "eki",
"shortmonthsNovember": "kas",
"shortmonthsDecember": "ara",
"time12am": "{time} öö",
"time12pm": "{time} ös",
"longDateFormat": "{time12} - {day} {month} {year}",
"shortDateFormatSeconds": "{seconds}sn",
"shortDateFormatMinutes": "{minutes}dk",
"shortDateFormatHours": "{hours}sa",
"shortDateFormatDate": "{day} {month}",
"shortDateFormatDateAndY": "{day} {month} {year}",
"now": "şimdi",
"posting": "gönderi",
"viewMoreInConvBefore": "← Daha fazla konuşma görüntüle",
"viewMoreInConvAfter": "Daha fazla konuşma görüntüle →",
"mentions": "Bahsedenler",
"timeline": "Zaman akışı",
"publicTimeline": "Herkese açık akış",
"publicAndExtTimeline": "Tüm Ağlardaki Akışlar",
"searchVerb": "Ara",
"deleteVerb": "Sil",
"cancelVerb": "İptal",
"deleteConfirmation": "İletiyi silmek istediğinize emin misiniz?",
"userExternalFollow": "Uzaktan takip",
"userExternalFollowHelp": "Hesap ID (ör. kullanici@rainbowdash.net).",
"userFollow": "Takip et",
"userFollowing": "Takip edilen",
"userUnfollow": "Takibi bırak",
"joinGroup": "Katıl",
"joinExternalGroup": "Uzaktan katıl",
"isMemberOfGroup": "Üye",
"leaveGroup": "Ayrıl",
"memberCount": "Üyeler",
"adminCount": "Yönetici",
"settings": "Ayarlar",
"saveChanges": "Değişiklikleri kaydet",
"linkColor": "Link rengi",
"backgroundColor": "Arka plan rengi",
"newToQuitter": "{site-title}'da yeni misin?",
"signUp": "Kayıt ol",
"signUpFullName": "Ad ve soyad",
"signUpEmail": "Eposta",
"signUpButtonText": "{site-title}'a kaydol",
"welcomeHeading": "{site-title} a hoşgeldin.",
"welcomeText": "We are a <span id=\"federated-tooltip\"><div id=\"what-is-federation\">\"Federation\" means that you don't need a {site-title} account to be able to follow, be followed by or interact with {site-title} users. You can register on any StatusNet or GNU social server or any service based on the the <a href=\"http://www.w3.org/community/ostatus/wiki/Main_Page\">Ostatus</a> protocol! You don't even have to join a service try installing the lovely <a href=\"http://www.gnu.org/software/social/\">GNU social</a> software on your own server! :)</div>federation</span> of microbloggers who care about ethics and solidarity and want to quit the centralised capitalist services.",
"registerNickname": "Kullanıcı adı",
"registerHomepage": "İnternet Sitesi",
"registerBio": "Kişisel Bilgiler",
"registerLocation": "Konum",
"registerRepeatPassword": "Şifreni tekrar gir",
"moreSettings": "Diğer ayarlar",
"otherServers": "Alternatively you can create an account on another server of the GNU social network. <a href=\"http://federation.skilledtests.com/select_your_server.html\">Comparison</a>",
"editMyProfile": "Profili düzenle",
"notifications": "Bildirimler",
"xFavedYourQueet": "Queet'ini favorilerine ekledi",
"xRepeatedYourQueet": "requuetledi",
"xStartedFollowingYou": "Seni takip etti",
"followsYou": "Seni takip edenler",
"FAQ": "SSS",
"inviteAFriend": "Arkadaşlarını davet et!",
"goToExternalProfile": "Tam profile git",
"cropAndSave": "Kırp ve kaydet",
"showTerms": "Kullanım Şartlarını okuyun",
"ellipsisMore": "Daha fazla",
"blockUser": "Engelle {username}",
"goToOriginalNotice": "Orijinal iletiye git",
"goToTheUsersRemoteProfile": "Kullanıcının uzak profiline git",
"clickToDrag":"Sürüklemek için tıklayın",
"keyboardShortcuts":"Kılavye kısayolları",
"classicInterface":"Klasik {site-title}",
"accessibilityToggleLink":"Daha iyi erişilebilirlik için klasik arayüze geçin.",
"tooltipBookmarkStream":"Akışı yer imlerinize ekleyin",
"tooltipTopMenu":"Menü ve ayarlar",
"tooltipAttachImage":"Görüntü ekle",
"tooltipShortenUrls":"Tüm URL'leri kısaltın",
"tooltipReloadStream":"Akışı yenile",
"tooltipRemoveBookmark":"Yer imlerinden kaldır",
"clearHistory":"Arama geçmişini temizle",
"ERRORsomethingWentWrong":"Bir şeyler yanlış gitti.",
"ERRORmustBeLoggedIn":"Bu akışı görmek için giriş yapmalısınız.",
"ERRORcouldNotFindUserWithNickname":"Sunucuda böyle bir kullanıcı adına sahip \"{nickname}\" kullanıcı yok.",
"ERRORcouldNotFindGroupWithNickname":"Sunucuda böyle bir kulanıcı adına sahip \"{nickname}\" grup yok.",
"ERRORcouldNotFindPage":"Sayfayı bulamadım.",
"ERRORnoticeRemoved": "ileti kaldırıldı.",
"ERRORnoContactWithServer": "Sunucuyla bağlantı kurulamıyor. Sunucu aşırı yüklenmiş veya internet bağlantısıyla ilgili bir sorun olabilir. Lütfen daha sonra tekrar deneyin!",
"ERRORattachmentUploadFailed": "Yükleme başarısız oldu. Biçimi desteklenmiyor veya boyutu çok büyük olabilir.",
"hideRepliesToPeopleIDoNotFollow":"Takip etmediğim kullanıcıların cevaplarını gizle",
"markAllNotificationsAsSeen":"Görüldüğü gibi tüm bildirimleri işaretleyin",
"notifyRepliesAndMentions":"Bahsedenler ve cevaplar",
"notifyFavs":"Favoriler",
"notifyRepeats":"Requeets",
"notifyFollows":"Yeni takipçiler",
"timelineOptions":"Akış ayarları",
"ERRORfailedSavingYourSetting":"Ayarlar kaydedilemedi.",
"ERRORfailedMarkingAllNotificationsAsRead":"Tüm bildirimler görüntülenemedi.",
"newNotification": "{new-notice-count} yeni bildirim",
"newNotifications": "{new-notice-count} yeni bildirimler",
"thisIsANoticeFromABlockedUser":"Uyarı: Bu bildirim engellenen bir kullanıcıdan. Görmek için tıklayınız.",
"nicknamesListWithListName":"{nickname} listesi: {list-name}",
"myListWithListName":"Listem: {list-name}",
"listMembers":"Üyeler",
"listSubscribers":"Aboneler",
"ERRORcouldNotFindList":"Böyle bir liste yok.",
"emailAlreadyInUse":"Kullanımda",
"addEditLanguageLink":"{site-title} çevirisine yardım et",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Konuşmaya başla",
"continueRant":"Konuşmaya devam et",
"hideEmbeddedInTimeline":"Bu akışta gömülü içeriği gizle",
"hideQuotesInTimeline":"Bu akışta alıntıları gizle",
"userBlocks":"Hesabın engellendi",
"buttonBlocked":"Engellenmiş",
"buttonUnblock":"Engeli kaldır",
"failedBlockingUser":"Kullanıcı engellenemedi.",
"failedUnblockingUser":"Kullanıcının engeli kaldırılamadı.",
"unblockUser": "{username} engelini kaldır",
"tooltipBlocksYou":"You are blocked from following {username}."
}