Unread misc

This commit is contained in:
Cutls 2019-09-08 09:39:26 +09:00
parent c86a99df06
commit e04b64a326
12 changed files with 898 additions and 851 deletions

View File

@ -41,6 +41,7 @@ The default sounds of notifications is provided [Creative Commons BY](https://cr
* 日本語(Japanese) * 日本語(Japanese)
* English * English
* de, cs, bg(from Crowdin)
### Translation ### Translation

View File

@ -40,6 +40,7 @@ Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge
* 日本語 * 日本語
* English(英語) * English(英語)
* ドイツ語, チェコ語, ブルガリア語(from Crowdin)
### 翻訳 ### 翻訳
@ -72,7 +73,7 @@ Linuxビルダー
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) * [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
iTunes NowPlayingにアルバムアートワークを付けてくれた人 コーダー
* [kPherox](https://pl.kpherox.dev/kPherox) * [kPherox](https://pl.kpherox.dev/kPherox)

View File

@ -191,6 +191,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var times = []; var times = [];
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function (key) {
var toot = obj[key]; var toot = obj[key];
if (type == "dm") { if (type == "dm") {
var dmid = toot.id; var dmid = toot.id;
toot = toot.last_status; toot = toot.last_status;
@ -425,498 +426,505 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
} }
} }
} }
var id = toot.id; if (toot.content) {
if (mix == "home") { var id = toot.id;
var home = "" if (mix == "home") {
var divider = '<div class="divider"></div>'; var home = ""
} else { var divider = '<div class="divider"></div>';
var home = "";
var divider = '<div class="divider"></div>';
}
if (toot.account.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (!toot.application) {
var via = '';
viashow = "hide";
} else {
var via = escapeHTML(toot.application.name);
if (empCli) {
//強調チェック
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
}
if (muteCli) {
//ミュートチェック
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
}
}
if (mix == "pinned") {
boostback = "emphasized";
}
if (toot.spoiler_text && cw) {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray";
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed cw_btn">' + lang.lang_parse_cwshow + '</a><br>';
} else {
var ct1 = toot.content.split('</p>').length + toot.content.split('<br />').length - 2;
var ct2 = toot.content.split('</p>').length + toot.content.split('<br>').length - 2;
if (ct1 > ct2) { var ct = ct1; } else { var ct = ct2; }
if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) {
var content = '<span class="gray">' + lang.lang_parse_fulltext + '</span><br>' + toot.content
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(
toot.content), 0, 100) +
'</span><span class="gray">' + lang.lang_parse_autofold + '</span>';
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed cw_btn">' + lang.lang_parse_more + '</a><br>';
} else { } else {
var home = "";
var divider = '<div class="divider"></div>';
}
if (toot.account.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (!toot.application) {
var via = '';
viashow = "hide";
} else {
var via = escapeHTML(toot.application.name);
if (empCli) {
//強調チェック
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
}
if (muteCli) {
//ミュートチェック
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
}
}
if (mix == "pinned") {
boostback = "emphasized";
}
if (toot.spoiler_text && cw) {
var content = toot.content; var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text); var spoil = escapeHTML(toot.spoiler_text);
var spoiler = ""; var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = ""; var api_spoil = "gray";
} var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
} '\')" class="nex parsed cw_btn">' + lang.lang_parse_cwshow + '</a><br>';
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
/https?:\/\/([^+_]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
);
urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g)
if (urlsck) {
for (var urlct = 0; urlct < urlsck.length; urlct++) {
var urlindv = urlsck[urlct]
urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/)
if (urlCont) {
urlindv = urlindv.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&")
var encoded = encodeURI(urlCont[4])
var punycoded = "xn--" + punycode.encode(urlCont[2])
var eUrl = urlCont[1] + "://" + punycoded + "." + urlCont[3] + "/" + encoded
var regExp = new RegExp('href="' + urlindv + '"', "g")
content = content.replace(regExp, 'href="' + eUrl + '"')
}
}
}
if (urls) {
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>';
} else {
var analyze = '';
}
var viewer = "";
var hasmedia = "";
var youtube = "";
//Poll
var poll = "";
if (toot.poll) {
var choices = toot.poll.options;
if (toot.poll.voted) {
var myvote = lang.lang_parse_voted;
var result_hide = "";
} else if (toot.poll.expired) {
var myvote = lang.lang_parse_endedvote;
var result_hide = "";
} else { } else {
var myvote = '<a onclick="voteMastodon(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="votebtn">' + lang.lang_parse_vote + '</a><br>'; if (toot.content) {
if (choices[0].votes_count === 0 || choices[0].votes_count > 0) { var ct1 = toot.content.split('</p>').length + toot.content.split('<br />').length - 2;
myvote = myvote + '<a onclick="showResult(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="pointer">' + lang.lang_parse_unvoted + "</a>"; var ct2 = toot.content.split('</p>').length + toot.content.split('<br>').length - 2;
}
var result_hide = "hide";
}
var ended = date(toot.poll.expires_at, datetype);
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc];
if (!toot.poll.voted && !toot.poll.expired) {
var votesel = 'voteSelMastodon(\'' + acct_id + '\',\'' + toot.poll.id + '\',' + keyc + ',' + toot.poll.multiple + ')';
var voteclass = "pointer waves-effect waves-light";
} else { } else {
var votesel = ""; var ct1 = 100;
var voteclass = ""; var ct2 = 100;
} }
poll = poll + '<div class="' + voteclass + ' vote vote_' + acct_id + '_' + toot.poll.id + '_' + keyc + '" onclick="' + votesel + '">' + escapeHTML(choice.title) + '<span class="vote_' + acct_id + '_' + toot.poll.id + '_result ' + result_hide + '">(' + choice.votes_count + ')</span></div>'; if (ct1 > ct2) { var ct = ct1; } else { var ct = ct2; }
}); if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) {
poll = '<div class="vote_' + acct_id + '_' + toot.poll.id + '">' + poll + myvote + '<a onclick="voteMastodonrefresh(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="pointer">' + lang.lang_manager_refresh + '</a><span class="cbadge cbadge-hover" title="' + date(toot.poll.expires_at, 'absolute') + var content = '<span class="gray">' + lang.lang_parse_fulltext + '</span><br>' + toot.content
'"><i class="far fa-calendar-times"></i>' + var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(
ended + '</span></div>'; toot.content), 0, 100) +
} '</span><span class="gray">' + lang.lang_parse_autofold + '</span>';
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed cw_btn">' + lang.lang_parse_more + '</a><br>';
} else {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "";
var spoiler_show = "";
}
}
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
/https?:\/\/([^+_]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
);
urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g)
if (urlsck) {
for (var urlct = 0; urlct < urlsck.length; urlct++) {
var urlindv = urlsck[urlct]
urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/)
if (urlCont) {
urlindv = urlindv.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&")
var encoded = encodeURI(urlCont[4])
var punycoded = "xn--" + punycode.encode(urlCont[2])
var eUrl = urlCont[1] + "://" + punycoded + "." + urlCont[3] + "/" + encoded
var regExp = new RegExp('href="' + urlindv + '"', "g")
content = content.replace(regExp, 'href="' + eUrl + '"')
}
var mediack = toot.media_attachments[0]; }
//メディアがあれば }
var media_ids = "";
if (mediack) { if (urls) {
hasmedia = "hasmedia"; var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
var cwdt = 100 / toot.media_attachments.length; ',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>';
Object.keys(toot.media_attachments).forEach(function (key2) { } else {
var media = toot.media_attachments[key2]; var analyze = '';
var purl = media.preview_url; }
media_ids = media_ids + media.id + ","; var viewer = "";
var url = media.url; var hasmedia = "";
var nsfwmes = "" var youtube = "";
if (toot.sensitive && nsfw) { //Poll
var sense = "sensitive" var poll = "";
var blur = media.blurhash if (toot.poll) {
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>' var choices = toot.poll.options;
if (blur) { if (toot.poll.voted) {
purl = parseBlur(blur) var myvote = lang.lang_parse_voted;
var result_hide = "";
} else if (toot.poll.expired) {
var myvote = lang.lang_parse_endedvote;
var result_hide = "";
} else {
var myvote = '<a onclick="voteMastodon(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="votebtn">' + lang.lang_parse_vote + '</a><br>';
if (choices[0].votes_count === 0 || choices[0].votes_count > 0) {
myvote = myvote + '<a onclick="showResult(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="pointer">' + lang.lang_parse_unvoted + "</a>";
}
var result_hide = "hide";
}
var ended = date(toot.poll.expires_at, datetype);
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc];
if (!toot.poll.voted && !toot.poll.expired) {
var votesel = 'voteSelMastodon(\'' + acct_id + '\',\'' + toot.poll.id + '\',' + keyc + ',' + toot.poll.multiple + ')';
var voteclass = "pointer waves-effect waves-light";
} else {
var votesel = "";
var voteclass = "";
}
poll = poll + '<div class="' + voteclass + ' vote vote_' + acct_id + '_' + toot.poll.id + '_' + keyc + '" onclick="' + votesel + '">' + escapeHTML(choice.title) + '<span class="vote_' + acct_id + '_' + toot.poll.id + '_result ' + result_hide + '">(' + choice.votes_count + ')</span></div>';
});
poll = '<div class="vote_' + acct_id + '_' + toot.poll.id + '">' + poll + myvote + '<a onclick="voteMastodonrefresh(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="pointer">' + lang.lang_manager_refresh + '</a><span class="cbadge cbadge-hover" title="' + date(toot.poll.expires_at, 'absolute') +
'"><i class="far fa-calendar-times"></i>' +
ended + '</span></div>';
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids = "";
if (mediack) {
hasmedia = "hasmedia";
var cwdt = 100 / toot.media_attachments.length;
Object.keys(toot.media_attachments).forEach(function (key2) {
var media = toot.media_attachments[key2];
var purl = media.preview_url;
media_ids = media_ids + media.id + ",";
var url = media.url;
var nsfwmes = ""
if (toot.sensitive && nsfw) {
var sense = "sensitive"
var blur = media.blurhash
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
if (blur) {
purl = parseBlur(blur)
var sense = ""
}
} else {
var sense = "" var sense = ""
var blur = null
} }
} else { if (media.pleroma && media.pleroma.mime_type.indexOf("video") !== -1) {
var sense = "" viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
var blur = null acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
} '" data-type="video" class="img-parsed"><video src="' +
if (media.pleroma && media.pleroma.mime_type.indexOf("video") !== -1) {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%;" loop="true"></a></span>';
} else {
if (media.type == "unknown") {
viewer = viewer + '<a href="' + media.remote_url + '" title="' + media.remote_url + '">[' + lang.lang_parse_unknown + ']</a> '
} else if (media.type == "audio") {
viewer = viewer + '<audio src="' +
url + '" class="pointer" style="width:100%;" controls></span>';
} else {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="' + media.type + '" class="img-parsed img-link" style="width:calc(' + cwdt + '% - 1px); height:' + imh + ';"><img draggable="false" src="' +
purl + '" class="' + sense + purl + '" class="' + sense +
' toot-img pointer" onerror="this.src=\'../../img/loading.svg\'">' + nsfwmes + '</a>'; ' toot-img pointer" style="max-width:100%;" loop="true"></a></span>';
}
}
});
media_ids = media_ids.slice(0, -1);
} else {
viewer = "";
hasmedia = "nomedia";
}
var menck = toot.mentions[0];
var mentions = "";
//メンションであれば
if (menck) {
mentions = "";
var to_mention = [];
Object.keys(toot.mentions).forEach(function (key3) {
var mention = toot.mentions[key3];
mentions = mentions + '<a onclick="udg(\'' + mention.id + '\',' +
acct_id + ')" class="pointer">@' + mention.acct + '</a> ';
//自分は除外
//自インスタンスかどうかを確認し、IDの一致
if (mention.acct == mention.username && mention.id == localStorage.getItem("user-id_" + acct_id)) {
//自分
} else {
//そのトゥの人NG
if (toot.account.acct != mention.acct) {
to_mention.push(mention.acct);
}
}
});
to_mention.push(toot.account.acct);
mentions = '<div style="float:right">' + mentions + '</div>';
} else {
var to_mention = [toot.account.acct];
//メンションじゃなくてもlang_parse_thread
if (toot.in_reply_to_id) {
mentions = '<div style="float:right"><a onclick="details(\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\')" class="pointer waves-effect">' + lang.lang_parse_thread + '</a></div>';
}
}
var tagck = toot.tags[0];
var tags = "";
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function (key4) {
var tag = toot.tags[key4];
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ':<a onclick="tl(\'tag\',\'' + tag.name + '\',' + acct_id +
',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag.name) + '">Toot</a> ' +
'<a onclick="tagPin(\'' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag.name) + '">Pin</a></span> ';
});
tags = '<div style="float:right">' + tags + '</div>';
}
//リプ数
if (toot.replies_count || toot.replies_count === 0) {
var replyct = toot.replies_count;
if (replyct_view == "hidden" && replyct > 1) {
replyct = "1+";
}
} else {
var replyct = "";
}
//公開範囲を取得
var vis = "";
var visen = toot.visibility;
if (visen == "public") {
var vis =
'<i class="text-darken-3 material-icons gray sml vis-data pointer" title="' + lang.lang_parse_public + '(' + lang.lang_parse_clickcopy + ')" data-vis="public" onclick="staCopy(\'' + id + '\')">public</i>';
var can_rt = "";
} else if (visen == "unlisted") {
var vis =
'<i class="text-darken-3 material-icons blue-text vis-data pointer" title="' + lang.lang_parse_unlisted + '(' + lang.lang_parse_clickcopy + ')" data-vis="unlisted" onclick="staCopy(\'' + id + '\')">lock_open</i>';
var can_rt = "";
} else if (visen == "private") {
var vis =
'<i class="text-darken-3 material-icons orange-text vis-data pointer" title="' + lang.lang_parse_private + '(' + lang.lang_parse_clickcopy + ')" data-vis="private" onclick="staCopy(\'' + id + '\')">lock</i>';
var can_rt = "unvisible";
} else if (visen == "direct") {
var vis =
'<i class="text-darken-3 material-icons red-text vis-data pointer" title="' + lang.lang_parse_direct + '(' + lang.lang_parse_clickcopy + ')" data-vis="direct" onclick="staCopy(\'' + id + '\')">mail</i>';
var can_rt = "unvisible";
}
if (toot.account.acct == localStorage.getItem("user_" + acct_id)) {
var if_mine = "";
var mine_via = "type-b";
} else {
var if_mine = "hide";
var mine_via = "";
}
if (toot.favourited) {
var if_fav = " yellow-text";
var fav_app = "faved";
} else {
var if_fav = "";
var fav_app = "";
}
if (toot.reblogged) {
var if_rt = "light-blue-text";
var rt_app = "rted";
} else {
var if_rt = "";
var rt_app = "";
}
if (toot.pinned) {
var if_pin = "blue-text";
var pin_app = "pinnedToot";
} else {
var if_pin = "";
var pin_app = "";
}
//アニメ再生
if (gif == "yes") {
var avatar = toot.account.avatar;
} else {
var avatar = toot.account.avatar_static;
}
//ワードミュート
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
if (worde) {
if (worde.tag) {
var wordList = worde.tag;
} else { } else {
var wordList = worde if (media.type == "unknown") {
viewer = viewer + '<a href="' + media.remote_url + '" title="' + media.remote_url + '">[' + lang.lang_parse_unknown + ']</a> '
} else if (media.type == "audio") {
viewer = viewer + '<audio src="' +
url + '" class="pointer" style="width:100%;" controls></span>';
} else {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="' + media.type + '" class="img-parsed img-link" style="width:calc(' + cwdt + '% - 1px); height:' + imh + ';"><img draggable="false" src="' +
purl + '" class="' + sense +
' toot-img pointer" onerror="this.src=\'../../img/loading.svg\'">' + nsfwmes + '</a>';
}
} }
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
}
}
});
}
//ワード強調
if (wordempList) {
Object.keys(wordempList).forEach(function (key9) {
var wordList = wordempList[key9];
if (wordList) {
var wordList = wordList.tag;
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
content = content.replace(regExp, '<span class="emp">' + wordList + "</span>");
}
});
}
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
poll = poll.replace(regExp, emoji_url);
});
}
//ニコフレ絵文字
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
poll = poll.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (poll) {
poll = twemoji.parse(poll);
}
//日本語じゃない
if (toot.language != lang.language && toot.language) {
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.language + '\',\'' + lang.language + '\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
} else {
var trans = "";
}
//Cards
if (!card && toot.card) {
var cards = toot.card;
if (cards.provider_name == "Twitter") {
if (cards.image) {
var twiImg = '<br><img draggable="false" src="' + cards.image + '">';
} else {
var twiImg = '';
}
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + '</b><br>' + escapeHTML(cards.description) + twiImg + '</blockquote>';
}
if (cards.title) {
analyze = "<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" +
escapeHTML(cards.description) + "</span>";
}
if (cards.html) {
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>';
}
} });
//Ticker media_ids = media_ids.slice(0, -1);
var tickerdom = ""; } else {
if (ticker) { viewer = "";
var tickerdata = localStorage.getItem("ticker") hasmedia = "nomedia";
if (tickerdata) { }
var tickerdata = JSON.parse(tickerdata); var menck = toot.mentions[0];
var mentions = "";
//メンションであれば
if (menck) {
mentions = "";
var to_mention = [];
Object.keys(toot.mentions).forEach(function (key3) {
var mention = toot.mentions[key3];
mentions = mentions + '<a onclick="udg(\'' + mention.id + '\',' +
acct_id + ')" class="pointer">@' + mention.acct + '</a> ';
//自分は除外
//自インスタンスかどうかを確認し、IDの一致
if (mention.acct == mention.username && mention.id == localStorage.getItem("user-id_" + acct_id)) {
//自分
} else {
//そのトゥの人NG
if (toot.account.acct != mention.acct) {
to_mention.push(mention.acct);
}
}
var thisdomain = toot.account.acct.split("@"); });
if (thisdomain.length > 1) { to_mention.push(toot.account.acct);
thisdomain = thisdomain[1]; mentions = '<div style="float:right">' + mentions + '</div>';
} else {
var to_mention = [toot.account.acct];
//メンションじゃなくてもlang_parse_thread
if (toot.in_reply_to_id) {
mentions = '<div style="float:right"><a onclick="details(\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\')" class="pointer waves-effect">' + lang.lang_parse_thread + '</a></div>';
} }
for (var i = 0; i < tickerdata.length; i++) { }
var value = tickerdata[i]; var tagck = toot.tags[0];
if (value.domain == thisdomain) { var tags = "";
var tickerdom = '<div style="user-select:none;cursor:default;background:linear-gradient(90deg, ' + value.bg + ', transparent 96%) !important; color:' + value.text + ';width:100%; height:0.9rem; font-size:0.8rem;"><img draggable="false" src="' + value.image + '" style="height:100%;" onerror="this.src=\'../../img/loading.svg\'"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + '</span></div>'; //タグであれば
break; if (tagck) {
Object.keys(toot.tags).forEach(function (key4) {
var tag = toot.tags[key4];
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ':<a onclick="tl(\'tag\',\'' + tag.name + '\',' + acct_id +
',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag.name) + '">Toot</a> ' +
'<a onclick="tagPin(\'' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag.name) + '">Pin</a></span> ';
});
tags = '<div style="float:right">' + tags + '</div>';
}
//リプ数
if (toot.replies_count || toot.replies_count === 0) {
var replyct = toot.replies_count;
if (replyct_view == "hidden" && replyct > 1) {
replyct = "1+";
}
} else {
var replyct = "";
}
//公開範囲を取得
var vis = "";
var visen = toot.visibility;
if (visen == "public") {
var vis =
'<i class="text-darken-3 material-icons gray sml vis-data pointer" title="' + lang.lang_parse_public + '(' + lang.lang_parse_clickcopy + ')" data-vis="public" onclick="staCopy(\'' + id + '\')">public</i>';
var can_rt = "";
} else if (visen == "unlisted") {
var vis =
'<i class="text-darken-3 material-icons blue-text vis-data pointer" title="' + lang.lang_parse_unlisted + '(' + lang.lang_parse_clickcopy + ')" data-vis="unlisted" onclick="staCopy(\'' + id + '\')">lock_open</i>';
var can_rt = "";
} else if (visen == "private") {
var vis =
'<i class="text-darken-3 material-icons orange-text vis-data pointer" title="' + lang.lang_parse_private + '(' + lang.lang_parse_clickcopy + ')" data-vis="private" onclick="staCopy(\'' + id + '\')">lock</i>';
var can_rt = "unvisible";
} else if (visen == "direct") {
var vis =
'<i class="text-darken-3 material-icons red-text vis-data pointer" title="' + lang.lang_parse_direct + '(' + lang.lang_parse_clickcopy + ')" data-vis="direct" onclick="staCopy(\'' + id + '\')">mail</i>';
var can_rt = "unvisible";
}
if (toot.account.acct == localStorage.getItem("user_" + acct_id)) {
var if_mine = "";
var mine_via = "type-b";
} else {
var if_mine = "hide";
var mine_via = "";
}
if (toot.favourited) {
var if_fav = " yellow-text";
var fav_app = "faved";
} else {
var if_fav = "";
var fav_app = "";
}
if (toot.reblogged) {
var if_rt = "light-blue-text";
var rt_app = "rted";
} else {
var if_rt = "";
var rt_app = "";
}
if (toot.pinned) {
var if_pin = "blue-text";
var pin_app = "pinnedToot";
} else {
var if_pin = "";
var pin_app = "";
}
//アニメ再生
if (gif == "yes") {
var avatar = toot.account.avatar;
} else {
var avatar = toot.account.avatar_static;
}
//ワードミュート
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
if (worde) {
if (worde.tag) {
var wordList = worde.tag;
} else {
var wordList = worde
}
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
}
}
});
}
//ワード強調
if (wordempList) {
Object.keys(wordempList).forEach(function (key9) {
var wordList = wordempList[key9];
if (wordList) {
var wordList = wordList.tag;
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
content = content.replace(regExp, '<span class="emp">' + wordList + "</span>");
}
});
}
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
poll = poll.replace(regExp, emoji_url);
});
}
//ニコフレ絵文字
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
poll = poll.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (poll) {
poll = twemoji.parse(poll);
}
//日本語じゃない
if (toot.language != lang.language && toot.language) {
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.language + '\',\'' + lang.language + '\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
} else {
var trans = "";
}
//Cards
if (!card && toot.card) {
var cards = toot.card;
if (cards.provider_name == "Twitter") {
if (cards.image) {
var twiImg = '<br><img draggable="false" src="' + cards.image + '">';
} else {
var twiImg = '';
}
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + '</b><br>' + escapeHTML(cards.description) + twiImg + '</blockquote>';
}
if (cards.title) {
analyze = "<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" +
escapeHTML(cards.description) + "</span>";
}
if (cards.html) {
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>';
}
}
//Ticker
var tickerdom = "";
if (ticker) {
var tickerdata = localStorage.getItem("ticker")
if (tickerdata) {
var tickerdata = JSON.parse(tickerdata);
var thisdomain = toot.account.acct.split("@");
if (thisdomain.length > 1) {
thisdomain = thisdomain[1];
}
for (var i = 0; i < tickerdata.length; i++) {
var value = tickerdata[i];
if (value.domain == thisdomain) {
var tickerdom = '<div style="user-select:none;cursor:default;background:linear-gradient(90deg, ' + value.bg + ', transparent 96%) !important; color:' + value.text + ';width:100%; height:0.9rem; font-size:0.8rem;"><img draggable="false" src="' + value.image + '" style="height:100%;" onerror="this.src=\'../../img/loading.svg\'"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + '</span></div>';
break;
}
} }
} }
} }
} //Quote
//Quote if (toot.quote) {
if (toot.quote) { var quoteUser = toot.quote.account.display_name
var quoteUser = toot.quote.account.display_name if (!quoteUser) {
if(!quoteUser){ quoteUser = toot.quote.account.acct
quoteUser = toot.quote.account.acct }
poll = poll + '<div class="quote-renote"><div class="renote-icon"><a onclick="udg(\'' + toot.quote.account.id +
'\',' + acct_id + ');" user="' + toot.quote.account.acct + '" class="udg"><img draggable="false" src="' + toot.quote.account.avatar + '"></a>' +
'</div><div class="renote-user">' + escapeHTML(quoteUser) + '</div><div class="renote-text">' + toot.quote.content + '</div><div class="renote-details"><a onclick="details(\'' + toot.quote.id + '\',' + acct_id +
',\'' + tlid + '\',\'normal\')" class="waves-effect waves-dark btn-flat details" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div></div>'
} }
poll = poll + '<div class="quote-renote"><div class="renote-icon"><a onclick="udg(\'' + toot.quote.account.id + templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
'\',' + acct_id + ');" user="' + toot.quote.account.acct + '" class="udg"><img draggable="false" src="' + toot.quote.account.avatar + '"></a>'+ boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
'</div><div class="renote-user">' + escapeHTML(quoteUser) + '</div><div class="renote-text">' + toot.quote.content + '</div><div class="renote-details"><a onclick="details(\'' + toot.quote.id + '\',' + acct_id + ' ' + hasmedia + ' ' + animecss + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[
',\'' + tlid + '\',\'normal\')" class="waves-effect waves-dark btn-flat details" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div></div>' key].created_at, 'unix') + '" ' + if_notf + ' onmouseover="mov(\'' + toot.id + '\',\'' + tlid + '\',\'mv\')" onclick="mov(\'' + toot.id + '\',\'' + tlid + '\',\'cl\')" onmouseout="resetmv(\'mv\')">' +
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
'</span></div>' +
'<div class="area-icon"><a onclick="udg(\'' + toot.account.id +
'\',' + acct_id + ');" user="' + toot.account.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar +
'" width="40" class="prof-img" user="' + toot.account.acct +
'" onerror="this.src=\'../../img/loading.svg\'"></a>' + noticeavatar + '</div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name +
'</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' +
toot.account.acct + locked + '</span></div>' +
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
'(' + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock"></i>' +
date(toot.created_at, datetype) + '</span>' +
'</div></div>' +
'<div class="area-toot">' + tickerdom + '<span class="' +
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
'</span><span class="toot ' + spoiler + '">' + content +
'</span>' + poll +
'' + viewer + '' +
'</div><div class="area-additional"><span class="additional">' + analyze +
'</span>' +
'' + mentions + tags + '</div>' +
'<div class="area-vis">' + vis + '</div>' +
'<div class="area-actions ' + mouseover + '">' +
'<div class="action ' + antinoauth + '"><a onclick="detEx(\'' + toot.url + '\',\'main\')" class="waves-effect waves-dark details" style="padding:0">' + lang.lang_parse_det + '</a></div>' +
'<div class="action ' + antidmHide + '"><a onclick="details(\'' + toot.id + '\',' + acct_id + ',\'' + tlid + '\',\'normal\')" class="waves-effect waves-dark details" style="padding:0">' + lang.lang_parse_thread + '</a></div>' +
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="re(\'' + toot.id +
'\',\'' + to_mention + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat actct rep-btn" data-men="' + to_mention + '" data-visen="' + visen + '" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'</a></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct bt-btn" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas fa-retweet ' +
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct">' + toot.reblogs_count +
'</span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["qt"] + ' ' + noauth + ' ' + qtClass + '"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
',\'' + toot.account.acct + '\',\'' + toot.url +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_quote + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
'<div class="action ' + disp["fav"] + ' ' + noauth + '"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct fav-btn" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas text-darken-3 fa-star' +
if_fav + ' fav_' + toot.id + '"></i><span class="fav_ct">' + toot.favourites_count +
'</a></span></div>' +
'<div class="' + if_mine + ' action ' + disp["del"] + ' ' + noauth + '"><a onclick="del(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
'<div class="' + if_mine + ' action pin ' + disp["pin"] + ' ' + noauth + '"><a onclick="pin(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
+ '<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'</div><div class="area-side ' + mouseover + '"><span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" style="max-width:60px;" onclick="client(\'' + $.strip_tags(via) + '\')" title="via ' + $.strip_tags(via) + '">' +
via +
'</span>' + '<div class="action ' + if_mine + ' ' + noauth + '"><a onclick="toggleAction(\'' + toot.id + '\',\'' + tlid + '\',\'' + acct_id + '\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
'<div class="action ' + noauth + '"><a onclick="details(\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\',\'normal\')" class="waves-effect waves-dark btn-flat details ' + dmHide + '" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div>' +
'</div></div>' +
'</div></div>';
} }
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
' ' + hasmedia + ' ' + animecss + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[
key].created_at, 'unix') + '" ' + if_notf + ' onmouseover="mov(\'' + toot.id + '\',\'' + tlid + '\',\'mv\')" onclick="mov(\'' + toot.id + '\',\'' + tlid + '\',\'cl\')" onmouseout="resetmv(\'mv\')">' +
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
'</span></div>' +
'<div class="area-icon"><a onclick="udg(\'' + toot.account.id +
'\',' + acct_id + ');" user="' + toot.account.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar +
'" width="40" class="prof-img" user="' + toot.account.acct +
'" onerror="this.src=\'../../img/loading.svg\'"></a>' + noticeavatar + '</div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name +
'</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' +
toot.account.acct + locked + '</span></div>' +
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
'(' + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock"></i>' +
date(toot.created_at, datetype) + '</span>' +
'</div></div>' +
'<div class="area-toot">' + tickerdom + '<span class="' +
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
'</span><span class="toot ' + spoiler + '">' + content +
'</span>' + poll +
'' + viewer + '' +
'</div><div class="area-additional"><span class="additional">' + analyze +
'</span>' +
'' + mentions + tags + '</div>' +
'<div class="area-vis">' + vis + '</div>' +
'<div class="area-actions ' + mouseover + '">' +
'<div class="action ' + antinoauth + '"><a onclick="detEx(\'' + toot.url + '\',\'main\')" class="waves-effect waves-dark details" style="padding:0">' + lang.lang_parse_det + '</a></div>' +
'<div class="action ' + antidmHide + '"><a onclick="details(\'' + toot.id + '\',' + acct_id + ',\'' + tlid + '\',\'normal\')" class="waves-effect waves-dark details" style="padding:0">' + lang.lang_parse_thread + '</a></div>' +
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="re(\'' + toot.id +
'\',\'' + to_mention + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat actct rep-btn" data-men="' + to_mention + '" data-visen="' + visen + '" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'</a></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct bt-btn" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas fa-retweet ' +
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct">' + toot.reblogs_count +
'</span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["qt"] + ' ' + noauth + ' ' + qtClass + '"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
',\'' + toot.account.acct + '\',\'' + toot.url +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_quote + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
'<div class="action ' + disp["fav"] + ' ' + noauth + '"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct fav-btn" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas text-darken-3 fa-star' +
if_fav + ' fav_' + toot.id + '"></i><span class="fav_ct">' + toot.favourites_count +
'</a></span></div>' +
'<div class="' + if_mine + ' action ' + disp["del"] + ' ' + noauth + '"><a onclick="del(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
'<div class="' + if_mine + ' action pin ' + disp["pin"] + ' ' + noauth + '"><a onclick="pin(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
+ '<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'</div><div class="area-side ' + mouseover + '"><span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" style="max-width:60px;" onclick="client(\'' + $.strip_tags(via) + '\')" title="via ' + $.strip_tags(via) + '">' +
via +
'</span>' + '<div class="action ' + if_mine + ' ' + noauth + '"><a onclick="toggleAction(\'' + toot.id + '\',\'' + tlid + '\',\'' + acct_id + '\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
'<div class="action ' + noauth + '"><a onclick="details(\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\',\'normal\')" class="waves-effect waves-dark btn-flat details ' + dmHide + '" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div>' +
'</div></div>' +
'</div></div>';
}); });
if (mix == "mix") { if (mix == "mix") {
return [templete, local, times] return [templete, local, times]

View File

@ -919,7 +919,6 @@ function getMarker(tlid, type, acct_id) {
} }
function showUnread(tlid, type, acct_id) { function showUnread(tlid, type, acct_id) {
if ($("#unread_" + tlid + " .material-icons").hasClass("teal-text")) { if ($("#unread_" + tlid + " .material-icons").hasClass("teal-text")) {
$("#unread_" + tlid + " .material-icons").removeClass("teal-text")
goTop(tlid) goTop(tlid)
return return
} }
@ -945,7 +944,7 @@ function showUnread(tlid, type, acct_id) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function (json) {
if (!json) { if (!json || !json.length) {
columnReload(tlid, type) columnReload(tlid, type)
} }
if (localStorage.getItem("filter_" + acct_id) != "undefined") { if (localStorage.getItem("filter_" + acct_id) != "undefined") {
@ -953,11 +952,13 @@ function showUnread(tlid, type, acct_id) {
} else { } else {
var mute = []; var mute = [];
} }
var templete = parse(json, '', acct_id, tlid, "", mute, type); var templete = parse(json, type, acct_id, tlid, "", mute, type);
var len = json.length - 1 var len = json.length - 1
$("#timeline_" + tlid).html(templete); $("#timeline_" + tlid).html(templete);
var to = $("#timeline_" + tlid + " .cvo:eq(" + len + ")").offset().top if ($("#timeline_" + tlid + " .cvo:eq(" + len + ")").length) {
$("#timeline_box_" + tlid + "_box .tl-box").scrollTop(to) var to = $("#timeline_" + tlid + " .cvo:eq(" + len + ")").offset().top
$("#timeline_box_" + tlid + "_box .tl-box").scrollTop(to)
}
additional(acct_id, tlid); additional(acct_id, tlid);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
todc(); todc();
@ -1005,8 +1006,10 @@ function ueload(tlid) {
var templete = parse(json, '', acct_id, tlid, "", mute, type); var templete = parse(json, '', acct_id, tlid, "", mute, type);
var len = json.length - 1 var len = json.length - 1
$("#timeline_" + tlid).prepend(templete); $("#timeline_" + tlid).prepend(templete);
var to = $("#timeline_" + tlid + " .cvo:eq(" + len + ")").offset().top if ($("#timeline_" + tlid + " .cvo:eq(" + len + ")").length) {
$("#timeline_box_" + tlid + "_box .tl-box").scrollTop(to) var to = $("#timeline_" + tlid + " .cvo:eq(" + len + ")").offset().top
$("#timeline_box_" + tlid + "_box .tl-box").scrollTop(to)
}
additional(acct_id, tlid); additional(acct_id, tlid);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
todc(); todc();
@ -1027,15 +1030,15 @@ function asRead() {
for (var i = 0; i < obj.length; i++) { for (var i = 0; i < obj.length; i++) {
var acct_id = obj[i].domain var acct_id = obj[i].domain
var type = obj[i].type var type = obj[i].type
if(type == "home" || type == "notf"){ if (type == "home" || type == "notf") {
if(type == "home"){ if (type == "home") {
var id = $("#timeline_" + i + " .cvo:eq(0)").attr("unique-id") var id = $("#timeline_" + i + " .cvo:eq(0)").attr("unique-id")
var poster = { var poster = {
home: { home: {
last_read_id: id last_read_id: id
} }
} }
}else{ } else {
var id = $("#timeline_" + i + " .cvo:eq(0)").attr("data-notf") var id = $("#timeline_" + i + " .cvo:eq(0)").attr("data-notf")
var poster = { var poster = {
notifications: { notifications: {

View File

@ -212,6 +212,15 @@ function parseColumn(target, dontclose) {
var exclude = ""; var exclude = "";
unread = "" unread = ""
} }
var markers = localStorage.getItem("markers");
if (markers == "no") {
markers = false;
} else {
markers = true
}
if (!markers) {
unread = ""
}
if (!acct.left_fold) { if (!acct.left_fold) {
basekey = key; basekey = key;
if (!numtarget) { if (!numtarget) {

View File

@ -41,6 +41,11 @@ function scrollck() {
function goTop(id) { function goTop(id) {
if ($("#unread_" + id + " .material-icons").hasClass("teal-text")) { if ($("#unread_" + id + " .material-icons").hasClass("teal-text")) {
$("#unread_" + id + " .material-icons").removeClass("teal-text") $("#unread_" + id + " .material-icons").removeClass("teal-text")
var multi = localStorage.getItem("column")
var obj = JSON.parse(multi)
var acct_id = obj[id * 1].domain
var type = obj[id * 1].type
console.log(id, type)
columnReload(id, type) columnReload(id, type)
} }
if ($("#timeline_box_" + id + "_box .tl-box").scrollTop() > 500) { if ($("#timeline_box_" + id + "_box .tl-box").scrollTop() > 500) {

View File

@ -1,186 +1,188 @@
{ {
"setting": "Предпочитания", "setting": "Предпочитания",
"set": "Запази", "set": "Запази",
"yes": "Да", "yes": "Да",
"no": "Не", "no": "Не",
"none": "Няма", "none": "Няма",
"default": "По подразбиране", "default": "По подразбиране",
"change": "Промяна", "change": "Промяна",
"select": "Избери", "select": "Избери",
"env": "Системни предпочитания", "env": "Системни предпочитания",
"setlang": "Езици", "setlang": "Езици",
"backup": "Внос и износ на предпочитания", "backup": "Внос и износ на предпочитания",
"import": "Внос", "import": "Внос",
"export": "Износ", "export": "Износ",
"hardwareAcceleration": "Деактивиране на хардуерното ускорение", "hardwareAcceleration": "Деактивиране на хардуерното ускорение",
"hardwareAccelerationWarn": "Автоматичното рестартиране", "hardwareAccelerationWarn": "Автоматичното рестартиране",
"theme": "Теми", "theme": "Теми",
"popup": "Известие с изскачащ прозорец (за Windows)", "popup": "Известие с изскачащ прозорец (за Windows)",
"popupwarn": "Скрито ако е зададено на „0“", "popupwarn": "Скрито ако е зададено на „0“",
"s": "сек", "s": "сек",
"nativenotf": "Вътрешно уведомяване", "nativenotf": "Вътрешно уведомяване",
"nnwarn": "Това не работи в Windows Portable вер.", "nnwarn": "Това не работи в Windows Portable вер.",
"nntest": "Тест за уведомяване", "nntest": "Тест за уведомяване",
"minwidth": "Минимална ширина на колоните", "minwidth": "Минимална ширина на колоните",
"minwidthwarn": "Лентата за превъртане ще се покаже, когато размерът на прозореца е по-голям от размера на колони.", "minwidthwarn": "Лентата за превъртане ще се покаже, когато размерът на прозореца е по-голям от размера на колони.",
"fixwidth": "Минимална ширина на браузъра TweetDeck", "fixwidth": "Минимална ширина на браузъра TweetDeck",
"fixwidthwarn": "", "fixwidthwarn": "",
"above": "над", "above": "над",
"font": "Шрифт", "font": "Шрифт",
"fontwarn": "Изберете любимия си шрифт с „Избор“ (само за Windows / macOS)", "fontwarn": "Изберете любимия си шрифт с „Избор“ (само за Windows / macOS)",
"fontsize": "Размер на шрифта", "fontsize": "Размер на шрифта",
"savefolder": "Папка за запазване", "savefolder": "Папка за запазване",
"savefolderwarn": "TheDesk ще използва това местоназначение, когато се опитва да запази снимки или да прави екранни снимки.", "savefolderwarn": "TheDesk ще използва това местоназначение, когато се опитва да запази снимки или да прави екранни снимки.",
"absolute": "абсолютна стойност", "absolute": "абсолютна стойност",
"themeSel": "Изберете тема", "themeSel": "Изберете тема",
"customtheme": "Редактирайте и добавете персонализирани теми", "customtheme": "Редактирайте и добавете персонализирани теми",
"customthemeDirection": "Цветова схема", "customthemeDirection": "Цветова схема",
"primary": "Цвят на фона", "primary": "Цвят на фона",
"secondarycolor": "Компоненти на фона", "secondarycolor": "Компоненти на фона",
"text": "Цвят на текста", "text": "Цвят на текста",
"accent": "Фон на подсилването", "accent": "Фон на подсилването",
"add_new": "Добавяне на нов", "add_new": "Добавяне на нов",
"name": "Име", "name": "Име",
"desc": "Относно тази тема", "desc": "Относно тази тема",
"customShare": "Споделете този код с друг TheDesk. Не споделяйте този код с MiAS.", "customShare": "Споделете този код с друг TheDesk. Не споделяйте този код с MiAS.",
"customImport": "Импортиране на персонализирани теми", "customImport": "Импортиране на персонализирани теми",
"delete": "Изтрий", "delete": "Изтрий",
"cImpWarn": "Вземете още теми от <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>", "cImpWarn": "Вземете още теми от <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline": "Предпочитания за времевата линия", "timeline": "Предпочитания за времевата линия",
"timemode": "Времеви формат", "timemode": "Времеви формат",
"relativetime": "Относителен формат: „преди 1 минута“, „преди 3 дни“", "relativetime": "Относителен формат: „преди 1 минута“, „преди 3 дни“",
"absolutetime": "Абсолютен формат:\"23:25:21\",\"2017/12/30 23:59:00\"", "absolutetime": "Абсолютен формат:\"23:25:21\",\"2017/12/30 23:59:00\"",
"mixtime": "Смесен формат: някои от раздумките са с относителен-формат, други са с абсолютен формат.", "mixtime": "Смесен формат: някои от раздумките са с относителен-формат, други са с абсолютен формат.",
"relativesel": "Относителен", "relativesel": "Относителен",
"absolutesel": "Абсолютен", "absolutesel": "Абсолютен",
"doublesel": "Относителен и абсолютен", "doublesel": "Относителен и абсолютен",
"mixsel": "Смесено", "mixsel": "Смесено",
"locale": "Уникално място на Сървърите", "locale": "Уникално място на Сървърите",
"localewarn": "Тази стойност е налична за някои Японски сървъри", "localewarn": "Тази стойност е налична за някои Японски сървъри",
"nswf": "Скриване на NSFW снимки", "nswf": "Скриване на NSFW снимки",
"nsfwwarn": "Силен ефект на размазване", "nsfwwarn": "Силен ефект на размазване",
"cw": "Скриване на CW съдържание", "cw": "Скриване на CW съдържание",
"replyct": "Стил на брояча на отговори", "replyct": "Стил на брояча на отговори",
"replyct_hidden": "Показване на 1+, ако отговорите са повече от 1.", "replyct_hidden": "Показване на 1+, ако отговорите са повече от 1.",
"replyct_full": "Покажи пълния брой (1,2...)", "replyct_full": "Покажи пълния брой (1,2...)",
"gif": "Анимация на анимирани GIF изображения", "gif": "Анимация на анимирани GIF изображения",
"box": "Действие на кутията за публикации", "box": "Действие на кутията за публикации",
"boxyes": "Прибрана", "boxyes": "Прибрана",
"boxabs": "Постоянно отворена", "boxabs": "Постоянно отворена",
"boxno": "Отворена и след публикуване", "boxno": "Отворена и след публикуване",
"tag": "Tag в TL търсене", "tag": "Tag в TL търсене",
"tagfed": "Използване в обединената мрежа", "tagfed": "Използване в обединената мрежа",
"taglocal": "Използване в локалната мрежа", "taglocal": "Използване в локалната мрежа",
"via": "С показване", "via": "С показване",
"mouseover": "Hide action buttons without mouseover", "mouseover": "Hide action buttons without mouseover",
"mouseoverwarn": "You may feel 'mouseover' is unconfortable:(", "mouseoverwarn": "You may feel 'mouseover' is unconfortable:(",
"mv": "Mouseover to show", "mv": "Mouseover to show",
"mvclick": "Click to show", "mvclick": "Click to show",
"notfmarker": "Show Notification marker, red colored bell and counter(if you show a notification column.)", "notfmarker": "Show Notification marker, red colored bell and counter(if you show a notification column.)",
"autofold": "Auto folding", "autofold": "Auto folding",
"autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.", "autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines": "lines", "lines": "lines",
"letters": "букви", "letters": "букви",
"or": "or", "or": "or",
"imgheight": "Height of images", "imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.", "imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable #InstanceTicker", "ticker": "Enable #InstanceTicker",
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.", "tickerwarn": "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation": "Анимация на времевата линия", "animation": "Анимация на времевата линия",
"replySound": "Звук (Отговор)", "markers": "Markers(mark as read) on HTL and notifications",
"favSound": "Звук(Фаворит)", "markerswarn": "Mastodon 3.0~. Shared on WebUI and third-party supported clients.",
"btSound": "Звук(Подсилване)", "replySound": "Звук (Отговор)",
"followSound": "Звук(Харесване)", "favSound": "Звук(Фаворит)",
"customSound": "Персонализиран звук", "btSound": "Звук(Подсилване)",
"post": "Предпочитания за публикуване", "followSound": "Звук(Харесване)",
"autocw": "Предупреждение преди публикуване на дълга раздумка.", "customSound": "Персонализиран звук",
"autocwwarn": "Показване на диалогов прозорец, когато правите твърде дълъг скрит текст.", "post": "Предпочитания за публикуване",
"defaultcw": "Текст за предупреждение по подразбиране", "autocw": "Предупреждение преди публикуване на дълга раздумка.",
"cws": "Винаги да е зададено CW", "autocwwarn": "Показване на диалогов прозорец, когато правите твърде дълъг скрит текст.",
"defaultvis": "Видимост по подразбиране", "defaultcw": "Текст за предупреждение по подразбиране",
"public": "Публично", "cws": "Винаги да е зададено CW",
"unlisted": "Скрито", "defaultvis": "Видимост по подразбиране",
"private": "Частно", "public": "Публично",
"direct": "Директно", "unlisted": "Скрито",
"memory": "Памет(запомнено на всеки сървър)", "private": "Частно",
"useapi": "Видимост по подразбиране (Зададени от предпочитанията в Mastodon сървъра)", "direct": "Директно",
"postimg": "Предпочитания за публикуване на изображения", "memory": "Памет(запомнено на всеки сървър)",
"showurl": "Вмъкване на URL адрес на медия", "useapi": "Видимост по подразбиране (Зададени от предпочитанията в Mastodon сървъра)",
"nourl": "Без вмъкване", "postimg": "Предпочитания за публикуване на изображения",
"disabled": "Disabled", "showurl": "Вмъкване на URL адрес на медия",
"quote": "Quote format", "nourl": "Без вмъкване",
"simple": "Only URL", "disabled": "Disabled",
"mention": "URL and acct(mention to the user)", "quote": "Quote format",
"full": "URL, text and acct(mention to the user)", "simple": "Only URL",
"notqt": "Disabled(Hide buttons on TLs)", "mention": "URL and acct(mention to the user)",
"apiQuote": "API(only some instances)", "full": "URL, text and acct(mention to the user)",
"main": "Default accounts of actions", "notqt": "Disabled(Hide buttons on TLs)",
"mainwarn": "Main account can be set on Account Manager.", "apiQuote": "API(only some instances)",
"lastacct": "Account you used recently", "main": "Default accounts of actions",
"usemainacct": "Main account", "mainwarn": "Main account can be set on Account Manager.",
"secondary": "Secondary Toot Button", "lastacct": "Account you used recently",
"secwarn": "Toot with other visibility setting", "usemainacct": "Main account",
"nothing": "Hidden", "secondary": "Secondary Toot Button",
"localonly": "Local Only", "secwarn": "Toot with other visibility setting",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "nothing": "Hidden",
"keysc": "Keyboard shortcut Preferences", "localonly": "Local Only",
"iks": "Easy inserter", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша", "keysc": "Keyboard shortcut Preferences",
"muteemp": "Mute & Emphasis Preferences", "iks": "Easy inserter",
"climute": "Client Mute", "okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша",
"cliemp": "Client Emphasis", "muteemp": "Mute & Emphasis Preferences",
"cliwarn": "Click client name on toots to toggle mute and emphasis.", "climute": "Client Mute",
"enter": "Enter to set", "cliemp": "Client Emphasis",
"wordmute": "Words Mute", "cliwarn": "Click client name on toots to toggle mute and emphasis.",
"wordemp": "Words Emphasis", "enter": "Enter to set",
"useremp": "Users Emphasis", "wordmute": "Words Mute",
"useerempwarn": "Set on users data modals.", "wordemp": "Words Emphasis",
"empcolorwarn": "Use this color to emphasis", "useremp": "Users Emphasis",
"spotify": "Spotify and NowPlaying Preferences", "useerempwarn": "Set on users data modals.",
"spotifynote1": "Click ", "empcolorwarn": "Use this color to emphasis",
"spotifynote2": "icon to NowPlaying", "spotify": "Spotify and NowPlaying Preferences",
"link": "Account Connection", "spotifynote1": "Click ",
"linkwarn": "TheDesk save your data on thedesk.top server.", "spotifynote2": "icon to NowPlaying",
"connect": "Connect", "link": "Account Connection",
"disconnect": "Disconnect", "linkwarn": "TheDesk save your data on thedesk.top server.",
"templeteedit": "Промяна на шаблон", "connect": "Connect",
"templeteeditwarn": "", "disconnect": "Disconnect",
"templete1": "Spotify:{song}:Име на песен/{album}:Име на албум/{artist}:Име на изпълнителя/{url}:URL адрес в Spotify", "templeteedit": "Промяна на шаблон",
"templete2": "macOS:{song}:Име на песен/{album}:Име на албум/{artist}:ме на изпълнител/композитор:{composer}/честота на излъчване: {hz}/битрейт:{bitRate}/жанр:{genre}", "templeteeditwarn": "",
"templete3": "", "templete1": "Spotify:{song}:Име на песен/{album}:Име на албум/{artist}:Име на изпълнителя/{url}:URL адрес в Spotify",
"postartwork": "Attach an Artwork of Spotify", "templete2": "macOS:{song}:Име на песен/{album}:Име на албум/{artist}:ме на изпълнител/композитор:{composer}/честота на излъчване: {hz}/битрейт:{bitRate}/жанр:{genre}",
"tts": "TTS(text to speech) Preferences", "templete3": "",
"speed": "Speed", "postartwork": "Attach an Artwork of Spotify",
"speedwarn": "1-100(default:10)", "tts": "TTS(text to speech) Preferences",
"pitch": "Pitch", "speed": "Speed",
"pitchwarn": "0-100(default:50)", "speedwarn": "1-100(default:10)",
"vol": "Volume", "pitch": "Pitch",
"volwarn": "0-100(default:100)", "pitchwarn": "0-100(default:50)",
"test": "Test", "vol": "Volume",
"sample": "TheDesk is an open-source Mastodon client for PC.", "volwarn": "0-100(default:100)",
"playstop": "Play/Stop", "test": "Test",
"back": "Back", "sample": "TheDesk is an open-source Mastodon client for PC.",
"keyscs": "Keyboard shortcuts", "playstop": "Play/Stop",
"keyscr": "Jump to n(1-9)th column", "back": "Back",
"keynew": "Open toot box", "keyscs": "Keyboard shortcuts",
"keytoggle": "Toggle toot box", "keyscr": "Jump to n(1-9)th column",
"keypost": "Post", "keynew": "Open toot box",
"keysecpost": "Post(secondary toot)", "keytoggle": "Toggle toot box",
"keyunread": "Make all notifications read", "keypost": "Post",
"keyesc": "Hide toot box", "keysecpost": "Post(secondary toot)",
"keyf5": "Super Reload", "keyunread": "Make all notifications read",
"keyclear": "Clear toot box", "keyesc": "Hide toot box",
"keyacctman": "Account Manager", "keyf5": "Super Reload",
"keyshowprof": "Show profile of selecting", "keyclear": "Clear toot box",
"keyrow": "Show next or previous image", "keyacctman": "Account Manager",
"keyzoom": "Mousewheel:Zoom a image", "keyshowprof": "Show profile of selecting",
"reset": "Reset(Danger)", "keyrow": "Show next or previous image",
"resetconfirm": "Изтриване на всички данни. Не можете да го отмените. Продължaвате?", "keyzoom": "Mousewheel:Zoom a image",
"about": "About TheDesk", "reset": "Reset(Danger)",
"hp": "Website", "resetconfirm": "Изтриване на всички данни. Не можете да го отмените. Продължaвате?",
"support": "Поддръжка", "about": "About TheDesk",
"help": "Help", "hp": "Website",
"sushi": "Give me a sushi!", "support": "Поддръжка",
"checkup": "Check update", "help": "Help",
"ossJP": "" "sushi": "Give me a sushi!",
"checkup": "Check update",
"ossJP": ""
} }

View File

@ -1,186 +1,188 @@
{ {
"setting": "Předvolby", "setting": "Předvolby",
"set": "Uložit", "set": "Uložit",
"yes": "Ano", "yes": "Ano",
"no": "Ne", "no": "Ne",
"none": "None", "none": "None",
"default": "Default", "default": "Default",
"change": "Změnit", "change": "Změnit",
"select": "Vybrat", "select": "Vybrat",
"env": "Systémové předvolby", "env": "Systémové předvolby",
"setlang": "Jazyky", "setlang": "Jazyky",
"backup": "Import a export předvoleb", "backup": "Import a export předvoleb",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"theme": "Motivy", "theme": "Motivy",
"popup": "Popupová oznámení (na Windows)", "popup": "Popupová oznámení (na Windows)",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
"s": "sec", "s": "sec",
"nativenotf": "Native notification", "nativenotf": "Native notification",
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Odskoušet oznámení", "nntest": "Odskoušet oznámení",
"minwidth": "Minimum width of columns", "minwidth": "Minimum width of columns",
"minwidthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "minwidthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"fixwidth": "Minimální šířka TweetDeck prohlížeče", "fixwidth": "Minimální šířka TweetDeck prohlížeče",
"fixwidthwarn": "", "fixwidthwarn": "",
"above": "above", "above": "above",
"font": "Písmo", "font": "Písmo",
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Velikost písma", "fontsize": "Velikost písma",
"savefolder": "Folder to save", "savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"absolute": "absolutní hodnota", "absolute": "absolutní hodnota",
"themeSel": "Vybrat motiv", "themeSel": "Vybrat motiv",
"customtheme": "Edit and add custom themes", "customtheme": "Edit and add custom themes",
"customthemeDirection": "Color scheme", "customthemeDirection": "Color scheme",
"primary": "Background color", "primary": "Background color",
"secondarycolor": "Background of components", "secondarycolor": "Background of components",
"text": "Text color", "text": "Text color",
"accent": "Background of boosts", "accent": "Background of boosts",
"add_new": "Add new", "add_new": "Add new",
"name": "Name", "name": "Name",
"desc": "About this theme", "desc": "About this theme",
"customShare": "Share this code with other TheDesk. Do not share this code with MiAS.", "customShare": "Share this code with other TheDesk. Do not share this code with MiAS.",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
"cImpWarn": "Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>", "cImpWarn": "Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline": "Timeline Preferences", "timeline": "Timeline Preferences",
"timemode": "Časový formát", "timemode": "Časový formát",
"relativetime": "Relativní formát: „před 1 minutou“, „před 3 dny“", "relativetime": "Relativní formát: „před 1 minutou“, „před 3 dny“",
"absolutetime": "Absolutní formát: „23:25:21“, „2017/12/30 23:59:00“", "absolutetime": "Absolutní formát: „23:25:21“, „2017/12/30 23:59:00“",
"mixtime": "Smíšený formát: tooty publikované dnes jsou v relativním formátu, ostatní jsou v absolutním formátu.", "mixtime": "Smíšený formát: tooty publikované dnes jsou v relativním formátu, ostatní jsou v absolutním formátu.",
"relativesel": "Relativní", "relativesel": "Relativní",
"absolutesel": "Absolutní", "absolutesel": "Absolutní",
"doublesel": "Relativní i absolutní", "doublesel": "Relativní i absolutní",
"mixsel": "Smíšený", "mixsel": "Smíšený",
"locale": "Server's unique locale", "locale": "Server's unique locale",
"localewarn": "This value is available on some Japanese servers", "localewarn": "This value is available on some Japanese servers",
"nswf": "Skrývat citlivé obrázky", "nswf": "Skrývat citlivé obrázky",
"nsfwwarn": "Silný efekt rozmazání", "nsfwwarn": "Silný efekt rozmazání",
"cw": "Skrývat obsah za varováními", "cw": "Skrývat obsah za varováními",
"replyct": "Reply counter style", "replyct": "Reply counter style",
"replyct_hidden": "Show 1+ if the replies are more than 1.", "replyct_hidden": "Show 1+ if the replies are more than 1.",
"replyct_full": "Show full count(1,2...)", "replyct_full": "Show full count(1,2...)",
"gif": "Animated GIF images animation", "gif": "Animated GIF images animation",
"box": "Action of posting-box", "box": "Action of posting-box",
"boxyes": "Folding", "boxyes": "Folding",
"boxabs": "Absolutely open", "boxabs": "Absolutely open",
"boxno": "Open after posting", "boxno": "Open after posting",
"tag": "Tag TL Search", "tag": "Tag TL Search",
"tagfed": "Use federated network", "tagfed": "Use federated network",
"taglocal": "Use local network", "taglocal": "Use local network",
"via": "Show via", "via": "Show via",
"mouseover": "Skrýt akční tlačítka bez přejetí myši", "mouseover": "Skrýt akční tlačítka bez přejetí myši",
"mouseoverwarn": "„Přejetí myši“ pro vás může být nepohodlné :(", "mouseoverwarn": "„Přejetí myši“ pro vás může být nepohodlné :(",
"mv": "Zobrazit přejetím myši", "mv": "Zobrazit přejetím myši",
"mvclick": "Zobrazit kliknutím", "mvclick": "Zobrazit kliknutím",
"notfmarker": "Show Notification marker, red colored bell and counter(if you show a notification column.)", "notfmarker": "Show Notification marker, red colored bell and counter(if you show a notification column.)",
"autofold": "Auto folding", "autofold": "Auto folding",
"autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.", "autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines": "lines", "lines": "lines",
"letters": "letters", "letters": "letters",
"or": "or", "or": "or",
"imgheight": "Height of images", "imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.", "imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable #InstanceTicker", "ticker": "Enable #InstanceTicker",
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.", "tickerwarn": "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation": "Animation of timelines", "animation": "Animation of timelines",
"replySound": "Sound(Reply)", "markers": "Markers(mark as read) on HTL and notifications",
"favSound": "Sound(Fav)", "markerswarn": "Mastodon 3.0~. Shared on WebUI and third-party supported clients.",
"btSound": "Sound(Boost)", "replySound": "Sound(Reply)",
"followSound": "Sound(Follow)", "favSound": "Sound(Fav)",
"customSound": "Custom sound", "btSound": "Sound(Boost)",
"post": "Posting Preferences", "followSound": "Sound(Follow)",
"autocw": "Alert before posting a long toot.", "customSound": "Custom sound",
"autocwwarn": "Show dialog whether you make too-long text hidden.", "post": "Posting Preferences",
"defaultcw": "Default warining text", "autocw": "Alert before posting a long toot.",
"cws": "Always CW set", "autocwwarn": "Show dialog whether you make too-long text hidden.",
"defaultvis": "Výchozí viditelnost", "defaultcw": "Default warining text",
"public": "Veřejné", "cws": "Always CW set",
"unlisted": "Neuvedené", "defaultvis": "Výchozí viditelnost",
"private": "Soukromé", "public": "Veřejné",
"direct": "Přímé", "unlisted": "Neuvedené",
"memory": "Memory(memorized as each server)", "private": "Soukromé",
"useapi": "Default of your visibility(Set on preferences of Mastodon server)", "direct": "Přímé",
"postimg": "Posting images preferences", "memory": "Memory(memorized as each server)",
"showurl": "Insert media URL", "useapi": "Default of your visibility(Set on preferences of Mastodon server)",
"nourl": "Insert nothig", "postimg": "Posting images preferences",
"disabled": "Disabled", "showurl": "Insert media URL",
"quote": "Quote format", "nourl": "Insert nothig",
"simple": "Only URL", "disabled": "Disabled",
"mention": "URL and acct(mention to the user)", "quote": "Quote format",
"full": "URL, text and acct(mention to the user)", "simple": "Only URL",
"notqt": "Disabled(Hide buttons on TLs)", "mention": "URL and acct(mention to the user)",
"apiQuote": "API(only some instances)", "full": "URL, text and acct(mention to the user)",
"main": "Default accounts of actions", "notqt": "Disabled(Hide buttons on TLs)",
"mainwarn": "Main account can be set on Account Manager.", "apiQuote": "API(only some instances)",
"lastacct": "Account you used recently", "main": "Default accounts of actions",
"usemainacct": "Main account", "mainwarn": "Main account can be set on Account Manager.",
"secondary": "Secondary Toot Button", "lastacct": "Account you used recently",
"secwarn": "Toot with other visibility setting", "usemainacct": "Main account",
"nothing": "Hidden", "secondary": "Secondary Toot Button",
"localonly": "Local Only", "secwarn": "Toot with other visibility setting",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "nothing": "Hidden",
"keysc": "Keyboard shortcut Preferences", "localonly": "Local Only",
"iks": "Easy inserter", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"okswarn": "You can insert any letters and emojis with only 3 keys", "keysc": "Keyboard shortcut Preferences",
"muteemp": "Mute & Emphasis Preferences", "iks": "Easy inserter",
"climute": "Client Mute", "okswarn": "You can insert any letters and emojis with only 3 keys",
"cliemp": "Client Emphasis", "muteemp": "Mute & Emphasis Preferences",
"cliwarn": "Click client name on toots to toggle mute and emphasis.", "climute": "Client Mute",
"enter": "Enter to set", "cliemp": "Client Emphasis",
"wordmute": "Words Mute", "cliwarn": "Click client name on toots to toggle mute and emphasis.",
"wordemp": "Words Emphasis", "enter": "Enter to set",
"useremp": "Users Emphasis", "wordmute": "Words Mute",
"useerempwarn": "Set on users data modals.", "wordemp": "Words Emphasis",
"empcolorwarn": "Use this color to emphasis", "useremp": "Users Emphasis",
"spotify": "Spotify and NowPlaying Preferences", "useerempwarn": "Set on users data modals.",
"spotifynote1": "Click ", "empcolorwarn": "Use this color to emphasis",
"spotifynote2": "icon to NowPlaying", "spotify": "Spotify and NowPlaying Preferences",
"link": "Account Connection", "spotifynote1": "Click ",
"linkwarn": "TheDesk save your data on thedesk.top server.", "spotifynote2": "icon to NowPlaying",
"connect": "Connect", "link": "Account Connection",
"disconnect": "Disconnect", "linkwarn": "TheDesk save your data on thedesk.top server.",
"templeteedit": "Edit a template", "connect": "Connect",
"templeteeditwarn": "", "disconnect": "Disconnect",
"templete1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify", "templeteedit": "Edit a template",
"templete2": "macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}", "templeteeditwarn": "",
"templete3": "", "templete1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
"postartwork": "Attach an Artwork of Spotify", "templete2": "macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}",
"tts": "TTS(text to speech) Preferences", "templete3": "",
"speed": "Speed", "postartwork": "Attach an Artwork of Spotify",
"speedwarn": "1-100(default:10)", "tts": "TTS(text to speech) Preferences",
"pitch": "Pitch", "speed": "Speed",
"pitchwarn": "0-100(default:50)", "speedwarn": "1-100(default:10)",
"vol": "Volume", "pitch": "Pitch",
"volwarn": "0-100(default:100)", "pitchwarn": "0-100(default:50)",
"test": "Test", "vol": "Volume",
"sample": "TheDesk is an open-source Mastodon client for PC.", "volwarn": "0-100(default:100)",
"playstop": "Play/Stop", "test": "Test",
"back": "Back", "sample": "TheDesk is an open-source Mastodon client for PC.",
"keyscs": "Keyboard shortcuts", "playstop": "Play/Stop",
"keyscr": "Jump to n(1-9)th column", "back": "Back",
"keynew": "Open toot box", "keyscs": "Keyboard shortcuts",
"keytoggle": "Toggle toot box", "keyscr": "Jump to n(1-9)th column",
"keypost": "Post", "keynew": "Open toot box",
"keysecpost": "Post(secondary toot)", "keytoggle": "Toggle toot box",
"keyunread": "Make all notifications read", "keypost": "Post",
"keyesc": "Hide toot box", "keysecpost": "Post(secondary toot)",
"keyf5": "Super Reload", "keyunread": "Make all notifications read",
"keyclear": "Clear toot box", "keyesc": "Hide toot box",
"keyacctman": "Account Manager", "keyf5": "Super Reload",
"keyshowprof": "Show profile of selecting", "keyclear": "Clear toot box",
"keyrow": "Show next or previous image", "keyacctman": "Account Manager",
"keyzoom": "Mousewheel:Zoom a image", "keyshowprof": "Show profile of selecting",
"reset": "Reset(Danger)", "keyrow": "Show next or previous image",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "keyzoom": "Mousewheel:Zoom a image",
"about": "About TheDesk", "reset": "Reset(Danger)",
"hp": "Website", "resetconfirm": "Delete all data. You cannot undo. Continue?",
"support": "Support", "about": "About TheDesk",
"help": "Help", "hp": "Website",
"sushi": "Give me a sushi!", "support": "Support",
"checkup": "Check update", "help": "Help",
"ossJP": "" "sushi": "Give me a sushi!",
"checkup": "Check update",
"ossJP": ""
} }

View File

@ -87,6 +87,8 @@
"ticker": "Aktiviere #InstanceTicker", "ticker": "Aktiviere #InstanceTicker",
"tickerwarn": "Zeigt bunte Sticker über den Server. <a href=\"https://wee.jp/\">Über #InstanceTicker</a> Copyright 2018 weepjp, kyori19.", "tickerwarn": "Zeigt bunte Sticker über den Server. <a href=\"https://wee.jp/\">Über #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation": "Animation der Verläufe", "animation": "Animation der Verläufe",
"markers": "Markers(mark as read) on HTL and notifications",
"markerswarn": "Mastodon 3.0~. Shared on WebUI and third-party supported clients.",
"replySound": "Ton bei Antwort", "replySound": "Ton bei Antwort",
"favSound": "Ton bei Favorit", "favSound": "Ton bei Favorit",
"btSound": "Ton bei Verstärkung", "btSound": "Ton bei Verstärkung",

View File

@ -87,6 +87,8 @@
"ticker": "Enable #InstanceTicker", "ticker": "Enable #InstanceTicker",
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://wee.jp/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.", "tickerwarn": "Show colorful stickers about the server. <a href=\"https://wee.jp/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation": "Animation of timelines", "animation": "Animation of timelines",
"markers": "Markers(mark as read) on HTL and notifications",
"markerswarn": "Mastodon 3.0~. Shared on WebUI and third-party supported clients.",
"replySound": "Sound(Reply)", "replySound": "Sound(Reply)",
"favSound": "Sound(Fav)", "favSound": "Sound(Fav)",
"btSound": "Sound(Boost)", "btSound": "Sound(Boost)",

View File

@ -87,6 +87,8 @@
"ticker": "#InstanceTickerを使う", "ticker": "#InstanceTickerを使う",
"tickerwarn": "トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://https://wee.jp/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.", "tickerwarn": "トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://https://wee.jp/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
"animation": "タイムラインのアニメーション", "animation": "タイムラインのアニメーション",
"markers": "ホームと通知の未読管理",
"markerswarn": "Mastodon 3.0相当以上。WebUIと対応クライアントで共有されます。",
"replySound": "リプライの通知音", "replySound": "リプライの通知音",
"favSound": "お気に入り登録の通知音", "favSound": "お気に入り登録の通知音",
"btSound": "ブーストの通知音", "btSound": "ブーストの通知音",

View File

@ -307,6 +307,16 @@ var tlConstruction = [
desc: "", desc: "",
checkbox: yesno checkbox: yesno
} }
}, {
id: "markers",
storage: "markers",
checkbox: true,
setValue: "yes",
text: {
head: "@@markers@@",
desc: "@@markerswarn@@",
checkbox: yesno
}
}, { }, {
id: "replySound", id: "replySound",
storage: "replySound", storage: "replySound",