Compare commits

..

103 Commits

Author SHA1 Message Date
Cutls
68328a9449 Fix: Fontawesome 2019-08-14 02:49:51 +09:00
Cutls
141f2a3f39 Change: CDN 2019-08-14 02:36:01 +09:00
Cutls
7bbca06033 Add: FOSSA 2019-08-14 02:14:34 +09:00
Cutls
ebb72265b9 package.json update 2019-08-14 01:47:21 +09:00
Cutls
c98f433da6 Delete assets 2019-08-14 01:35:01 +09:00
Cutls
2346ef7089 Remove: NowPlaying on Windows 2019-08-14 01:23:25 +09:00
Cutls
8aac6474da TheDesk Usamin (18.8.0) 2019-08-14 00:53:36 +09:00
Cutls
ffcecf38c8 Add: Change: live column add and remove 2019-08-14 00:40:21 +09:00
Cutls
77342206b1 Add: reload this column 2019-08-14 00:25:58 +09:00
Cutls
b6a44e7a7c Fix: vote display refresh 2019-08-14 00:24:11 +09:00
Cutls
e138d357c7 Remove: /follows 2019-08-14 00:23:34 +09:00
Cutls
66645982e9 Fix: arrow key img selector(reversed) 2019-08-14 00:23:05 +09:00
Cutls
4347f55077 Speed up 2019-08-11 02:52:32 +09:00
Cutls
ab9d45c775 Update: CSS about #InstanceTicker 2019-08-11 00:12:11 +09:00
Cutls
9c0c662f25 Update: icons 2019-08-09 10:58:55 +09:00
Cutls
63abdb2d53 Add: Liberapay 2019-08-08 02:06:13 +09:00
Cutls
47e2693368 Fix: about blue theme 2019-08-08 01:55:47 +09:00
Cutls
b909cbe666 Introduce: TheDesk notice v2 2019-08-07 23:27:00 +09:00
Cutls
95f5ce13ba Add: detecting languages[de/cs/bg] 2019-08-07 23:14:20 +09:00
Cutls
fed1496e68 Update: de and Change: algo of locale 2019-08-07 12:14:07 +09:00
Cutls
da6993730c Add: bg/cs/de locales 2019-08-07 09:24:52 +09:00
Cutls
0a1d462ace Add: trending tags 2019-08-06 23:06:09 +09:00
Cutls
1387482db0 TheDesk Usamin (18.7.1) 2019-08-02 00:02:52 +09:00
Cutls
b7a86324dd Merge pull request #105 from cutls/dependabot/npm_and_yarn/app/readline-sync-1.4.10
Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
2019-08-01 22:56:12 +09:00
Cutls
babc5a6424 Merge pull request #107 from cutls/dependabot/npm_and_yarn/app/electron-tw-6.0.0
Update electron requirement from ^5.0.4 to ^6.0.0 in /app
2019-08-01 22:55:31 +09:00
dependabot-preview[bot]
74a468383c Update electron requirement from ^5.0.4 to ^6.0.0 in /app
Updates the requirements on [electron](https://github.com/electron/electron) to permit the latest version.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v5.0.4...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-31 20:26:05 +00:00
dependabot-preview[bot]
3a48f0ff0d Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
Updates the requirements on [readline-sync](https://github.com/anseki/readline-sync) to permit the latest version.
- [Release notes](https://github.com/anseki/readline-sync/releases)
- [Commits](https://github.com/anseki/readline-sync/compare/1.4.9...1.4.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-29 20:25:25 +00:00
Cutls
e26363adf6 Fix: when open an image modal, disabled toot selector 2019-07-29 01:13:53 +09:00
Cutls
35d97d42c5 Fix: context func is pollted 2019-07-29 01:09:12 +09:00
Cutls
4fa7d07500 Improve: sorting 2019-07-29 00:52:12 +09:00
Cutls
15f428528b Add: video loop(on modal and Pleroma) and autoplay on modal 2019-07-29 00:42:52 +09:00
Cutls
7fa805fe3a Change: sort suggest 2019-07-29 00:42:17 +09:00
Cutls
fd9c97a126 Add: tag suggest with v2 2019-07-29 00:16:49 +09:00
Cutls
f081154804 init 2019-07-28 23:48:44 +09:00
Cutls
866affdf45 Add: mute by emoji(custom/default) 2019-07-28 23:47:50 +09:00
Cutls
30aee556f1 Fix: if account is null #102 2019-07-25 23:55:25 +09:00
Cutls
b12c18aa08 Add: NSFW warning when not blurhashed sensitive toots 2019-07-25 23:52:44 +09:00
Cutls
f17a47d088 Change: NSFW images on not blurhash supported instance 2019-07-25 23:20:38 +09:00
Cutls
d79f096749 Merge pull request #104 from cutls/dependabot/npm_and_yarn/app/electron-builder-tw-21.1.5
Update electron-builder requirement from ^20.44.4 to ^21.1.5 in /app
2019-07-25 23:16:23 +09:00
dependabot-preview[bot]
5b82b91c6a Update electron-builder requirement from ^20.44.4 to ^21.1.5 in /app
Updates the requirements on [electron-builder](https://github.com/electron-userland/electron-builder) to permit the latest version.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.44.4...v21.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-24 20:25:27 +00:00
Cutls
4a6b87ac1c Fix: emoji-including URL 2019-07-15 00:56:19 +09:00
Cutls
1bea06354e TheDesk Usamin (18.7.0) 2019-07-13 00:01:16 +09:00
Cutls
5fbd5aaf10 Fix: layout 2019-07-13 00:01:09 +09:00
Cutls
0290a6d918 shortcut key desc 2019-07-13 00:00:26 +09:00
Cutls
2576c48441 Pleroma URL 2019-07-12 23:16:27 +09:00
Cutls
eb02dd2986 Fix: when failed to upload 2019-07-12 01:01:24 +09:00
Cutls
d92570fa3b Add: keyboard-control 2019-07-12 00:53:55 +09:00
Cutls
38c988d2a2 Fix: desc hidden 2019-07-10 22:48:36 +09:00
Cutls
0927282d41 Change: overflow of column name 2019-07-09 22:48:57 +09:00
Cutls
5ffd59619c TheDesk Usamin (18.6.7) 2019-07-09 00:35:33 +09:00
Cutls
a739926ad4 sub-button color 2019-07-09 00:35:20 +09:00
Cutls
e41c38f41d Change: remove get card API 2019-07-09 00:27:31 +09:00
Cutls
2de05b84aa Misskey streaming leak 2019-07-09 00:27:18 +09:00
Cutls
0e9bdef9ca Add: set main account on showOnTL 2019-07-06 23:16:41 +09:00
Cutls
8e70e005c1 TheDesk Usamin (18.6.6) 2019-07-02 00:37:58 +09:00
Cutls
3817dbc925 Some bugs about Vue 2019-07-02 00:32:28 +09:00
Cutls
63ec669c52 boost-btn 2019-07-02 00:32:06 +09:00
Cutls
afc5702796 boost-btn 2019-07-02 00:31:54 +09:00
Cutls
41ec66b58a Add theme: [渚の花嫁] 新田美波 2019-07-02 00:31:44 +09:00
Cutls
936d3ca7fc Change: flexible color of toot-btn 2019-07-02 00:31:08 +09:00
Cutls
f8b4b7b74d Change: unboostable toot btn(hidden to unvisible) 2019-07-02 00:26:41 +09:00
Cutls
bd865977b0 Remove: best-friends.chat from TheDesk support instance 2019-07-01 23:19:47 +09:00
Cutls
d056db5617 Do not ... on translate results #96 2019-07-01 21:46:00 +09:00
Cutls
7685677ada Merge branch 'master' of https://github.com/cutls/TheDesk 2019-07-01 21:40:46 +09:00
Cutls
eb0aa81492 Remove knzk.me from support instances 2019-07-01 21:40:28 +09:00
Cutls
dc52531f28 Merge pull request #99 from kPherox/update-kpherox-links
Update kPherox's links
2019-06-29 16:22:34 +09:00
kPherox
5a20034b9f Update kPherox's links 2019-06-29 16:11:52 +09:00
Cutls
5cd0ef0d8a Update README 2019-06-27 23:17:07 +09:00
Cutls
4daf47bb5f TheDesk Usamin (18.6.5) 2019-06-27 21:57:16 +09:00
Cutls
3e0dbd8433 Remove: colummn-deleting dialog 2019-06-26 00:52:15 +09:00
Cutls
fc4d3b24f6 Fix: column-deleteing and url-analytics bug 2019-06-26 00:51:49 +09:00
Cutls
3a9eab55a4 Fix: misskey streaming 2019-06-26 00:33:44 +09:00
Cutls
546b34275d Fix: setting bugs on Vue 2019-06-26 00:33:32 +09:00
Cutls
3ee4cf27d5 Good-bye native dialogs 2019-06-26 00:33:20 +09:00
Cutls
87da95b9a4 Fix: TheDesk nano 2019-06-25 23:26:15 +09:00
Cutls
3368e30e15 Fix: streaming bug 2019-06-25 23:26:01 +09:00
Cutls
f1ea5ad8f1 Fix: Notf TL bugs about Misskey 2019-06-25 23:16:36 +09:00
Cutls
fa2d5f8492 OAuth and something 2019-06-25 23:16:12 +09:00
Cutls
0f2c5de161 Use sweetalert 2019-06-25 23:15:52 +09:00
Cutls
b69937d4fd Sweetalert CSS for custom themes 2019-06-25 23:15:25 +09:00
Cutls
e82faacbb2 Change: keyboard shortcut 2019-06-24 23:10:44 +09:00
Cutls
2ab5c67545 For MS Store 2019-06-24 23:10:29 +09:00
Cutls
358d01b12e Change: audio wrap 2019-06-24 00:28:42 +09:00
Cutls
95460fabbb TheDesk Usamin (18.6.4) 2019-06-23 18:38:22 +09:00
Cutls
0fb882b3ad Fix: streaming 2019-06-23 18:24:55 +09:00
Cutls
3d0382d279 TheDesk Usamin (18.6.3) 2019-06-23 10:57:56 +09:00
Cutls
59d5aa4515 Add: audio player(chrome default) 2019-06-23 01:20:17 +09:00
Cutls
2dff9f9b17 TheDesk Usamin (18.6.2) 2019-06-23 01:06:07 +09:00
Cutls
03fded672e Add gitignore 2019-06-23 00:51:21 +09:00
Cutls
a21c1f5329 Internal 2019-06-23 00:51:11 +09:00
Cutls
37815ced63 Merge pull request #91 from cutls/dependabot/npm_and_yarn/app/electron-builder-20.44.4
Bump electron-builder from 20.43.0 to 20.44.4 in /app
2019-06-22 10:08:07 +09:00
Cutls
b7f9b8d668 Merge pull request #92 from cutls/dependabot/npm_and_yarn/app/sweetalert2-8.13.0
Bump sweetalert2 from 8.12.2 to 8.13.0 in /app
2019-06-22 10:07:57 +09:00
Cutls
f68af78099 Merge pull request #93 from cutls/dependabot/npm_and_yarn/app/materialize-css-1.0.0
Bump materialize-css from 1.0.0-rc.2 to 1.0.0 in /app
2019-06-22 10:07:43 +09:00
dependabot-preview[bot]
027abffa01 Bump materialize-css from 1.0.0-rc.2 to 1.0.0 in /app
Bumps [materialize-css](https://github.com/Dogfalo/materialize) from 1.0.0-rc.2 to 1.0.0.
- [Release notes](https://github.com/Dogfalo/materialize/releases)
- [Changelog](https://github.com/Dogfalo/materialize/blob/v1-dev/CHANGELOG.md)
- [Commits](https://github.com/Dogfalo/materialize/compare/1.0.0-rc.2...1.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 20:18:44 +00:00
dependabot-preview[bot]
5dfba4dd5e Bump sweetalert2 from 8.12.2 to 8.13.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 8.12.2 to 8.13.0.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v8.12.2...v8.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 20:18:16 +00:00
dependabot-preview[bot]
d0ae7e9cf9 Bump electron-builder from 20.43.0 to 20.44.4 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.43.0 to 20.44.4.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.43.0...v20.44.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 20:17:44 +00:00
Cutls
5a57e984de Introduce: SweetAlert 2019-06-22 01:06:32 +09:00
Cutls
473f4d7c24 Move: jQuery and Materialize 2019-06-22 00:22:45 +09:00
Cutls
35bfea2dbd Fix: update tool 2019-06-21 23:24:28 +09:00
Cutls
62cb30cb5b Merge branch 'master' of https://github.com/cutls/TheDesk 2019-06-21 23:18:08 +09:00
Cutls
9d2eb6f18b Fix: moreLoading 2019-06-21 23:17:56 +09:00
Cutls
d5cd57c26d Merge pull request #88 from cutls/dependabot/npm_and_yarn/app/electron-5.0.4
Bump electron from 5.0.1 to 5.0.4 in /app
2019-06-17 00:34:27 +09:00
dependabot-preview[bot]
6cdd4cba9e Bump electron from 5.0.1 to 5.0.4 in /app
Bumps [electron](https://github.com/electron/electron) from 5.0.1 to 5.0.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v5.0.1...v5.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-15 16:10:18 +00:00
144 changed files with 12539 additions and 28305 deletions

4
.gitignore vendored
View File

@@ -3,8 +3,7 @@
*.7z
*.exe
TheDesk-*
app/build
build
build/*
app/.DS_Store
.DS_Store
.vs/*
@@ -13,3 +12,4 @@ enq.md
app/.tkn
app/node_modules
app/js/login/tkn.js
app/package-lock.json

View File

@@ -5,8 +5,8 @@
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
@@ -14,6 +14,7 @@ Mastodon/Misskey client for PC(Windows/Linux/macOS)
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160"></a>
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
![Screenshots1](https://thedesk.top/img/scr1.png)
## License
@@ -21,12 +22,13 @@ Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)
[Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
[Press Kit](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG](https://dl.thedesk.top/press/TheDesk.png)
* [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg)
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
@@ -73,7 +75,7 @@ Build for Linux
Fellow coder
* [kPherox](https://www.kr-kp.com/)
* [kPherox](https://pl.kpherox.dev/kPherox)
## Build

View File

@@ -5,8 +5,8 @@
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
@@ -21,12 +21,13 @@ Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
[プレスキット](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
[プレスキット](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG](https://dl.thedesk.top/press/TheDesk.png)
* [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg)
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
@@ -73,7 +74,7 @@ Linuxビルダー
iTunes NowPlayingにアルバムアートワークを付けてくれた人
* [kPherox](https://www.kr-kp.com/)
* [kPherox](https://pl.kpherox.dev/kPherox)
## ビルド

View File

@@ -4,7 +4,7 @@
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="./css/themes.css" type="text/css" rel="stylesheet">
<link href="./css/master.css" type="text/css" rel="stylesheet">
@@ -75,10 +75,10 @@
</head>
<body class="center " style="overflow:hidden">
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<img src="./img/desk.png" style="max-width:62%;">
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" style="max-width:62%;">
<h5>TheDesk</h5>
<div class="container">
<div class="area-name1">Display version</div>
@@ -95,7 +95,7 @@
<div class="cp">Copyright &copy; TheDesk 2018<br>
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br>
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a
href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pawoo.net/@kPherox"
href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pl.kpherox.dev/kPherox"
target="_blank">kPherox</a> and all users
<img draggable="false" style="width:0.8rem;top: 1px;margin-left: 1px;position: relative;" alt="❤️"
title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png">

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

BIN
app/build/thedesk.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -7,12 +7,8 @@ body {
cursor: default;
font-size: 13px;
height: 100vh;
background-color: var(--bg);
color: var(--color);
}
body {
border: thin solid gray;
}
.btn {
margin: 5px;
text-transform: none;
@@ -76,6 +72,9 @@ option {
min-width: 0 !important;
margin-left: 5px !important;
}
.unvisible{
opacity: 0;
}
.bbcode-pulse-loadings,
.bbcode-pulse-loading,
.fa-pulse {
@@ -235,9 +234,6 @@ blockquote:before,
#drag-content {
font-size: 2rem;
}
.radio {
font-family: "Baloo Bhai";
}
#pip {
z-index: 504;
width: 418px;
@@ -304,6 +300,9 @@ blockquote:before,
.tabs {
background-color: var(--subcolor);
}
.collapsible-header:focus {
background-color: var(--subcolor) !important;
}
.modal-footer {
background-color: var(--modalfooter) !important;
}
@@ -397,7 +396,8 @@ blockquote:before,
text-align: center;
width: calc(100% + 10px);
border-radius: 5px;
background-color: var(--bg);
background-color: var(--box);
filter: brightness(80%);
margin-left: -5px;
margin-right: -5px;
margin-top: -5px;
@@ -446,6 +446,12 @@ input, textarea {
font-size: 1rem !important;
font-family: inherit;
}
.swal2-popup{
background-color: var(--notfbox) !important;
}
.swal2-title, .swal2-content{
color: var(--color) !important;
}
/*スクロールバー*/
::-webkit-scrollbar {
@@ -464,3 +470,32 @@ input, textarea {
background: #607d8b;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}
/* Web Fonts */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OUuhp.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
-webkit-font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
}

9067
app/css/materialize.css vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@
padding: 5px;
border-radius: 5px;
}
textarea{
textarea {
min-height: 100px !important;
font-family: inherit;
}
@@ -124,7 +124,9 @@ textarea{
overflow-y: scroll;
top: 90px;
}
#posttgl,#toot-post-btn {
background-color: var(--accentbtn);
}
/*mini*/
.mini-post .mize {
display: none !important;

View File

@@ -14,6 +14,9 @@
--active: #e6ee9c;
--postbox: white;
--modalfooter: #fafafa;
--accentbtn: #009688;
--selected: #c0c0c0;
--selectedWithShare: #b2babd;
}
#imagemodal {
background: url("../img/pixel.white.svg");
@@ -34,6 +37,9 @@
--active: #757575;
--postbox: #424242;
--modalfooter: #212121;
--accentbtn: #3f51b5;
--selected: #3f3f3f;
--selectedWithShare: #003a30;
}
.blacktheme #imagemodal {
background: url("../img/pixel.svg");
@@ -54,6 +60,9 @@
--active: #757575;
--postbox: #1a237e;
--modalfooter: #031833;
--accentbtn: #00acc1;
--selected: #214f8a;
--selectedWithShare: #003a30;
}
.indigotheme #imagemodal {
background: url("../img/pixel.svg");
@@ -74,6 +83,9 @@
--active: #757575;
--postbox: #4e342e;
--modalfooter: #261411;
--accentbtn: #827717;
--selected: #6d352b;
--selectedWithShare: #003a30;
}
.browntheme #imagemodal {
background: url("../img/pixel.svg");
@@ -86,7 +98,7 @@
--modal: #81c784;
--subcolor: #a5d6a7;
--box: #81c784;
--sidebar: #81c784;
--sidebar: #c5e1a5;
--shared: #ffcc80;
--notfbox: #a5d6a7;
--emphasized: #9e9d24;
@@ -94,7 +106,33 @@
--active: #e6ee9c;
--postbox: #a5d6a7;
--modalfooter: #81c784;
--accentbtn: #33691e;
--selected: #78c17a;
--selectedWithShare: #caa266;
}
.greentheme #imagemodal {
background: url("../img/pixel.white.svg");
}
.bluetheme {
--bg: #c9e1ec;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: #b2ebf2;
--subcolor: #90caf9;
--box: #90caf9;
--sidebar: #b6e6f5;
--shared: #e0ffe4;
--notfbox: #90caf9;
--emphasized: #c5e1a5;
--his-data: rgba(255, 255, 255, 0.9);
--active: #b39ddb;
--postbox: #dff1ff;
--modalfooter: #2196f3;
--accentbtn: #2f7bb7;
--selected: #9dcade;
--selectedWithShare: #c1dac4;
}
.bluetheme #imagemodal {
background: url("../img/pixel.white.svg");
}

View File

@@ -96,6 +96,7 @@
}
iframe {
max-width: 100%;
max-height: 300px;
}
@media screen and (max-width: 600px) {
.mobile #timeline-container {
@@ -157,6 +158,7 @@ iframe {
height: 100%;
border: thin solid gray;
overflow: hidden;
border-top: none;
}
.box .pin,
#his-data .pin {
@@ -425,6 +427,9 @@ p:not(:last-child) {
.area-notice_name {
grid-area: notice_name;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.area-notice_acct {
@@ -581,6 +586,7 @@ p:not(:last-child) {
display: block;
margin-right: 1px;
float: left;
overflow: hidden;
}
.nsfw-media {
position: absolute;
@@ -594,6 +600,18 @@ p:not(:last-child) {
width: 100%;
height: 100%;
}
.shared.selectedToot{
background-color: var(--selectedWithShare);
}
.selectedToot{
background-color: var(--selected);
}
audio{
height: 2rem;
}
.translate{
white-space: normal;
}
@keyframes jump {
0% {
transform: translateY(0);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 11 KiB

35
app/img/desk.svg Normal file
View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{fill:#FFFFFF;}
.st2{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
.st3{fill:#F0842E;}
.st4{fill:#364C9F;}
.st5{fill:#FFFFFF;stroke:#040000;stroke-miterlimit:10;}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#040000;}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
</style>
<g id="レイヤー_1" class="st0">
</g>
<g id="レイヤー_2">
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
<rect x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st3" width="450" height="3117.62"/>
<rect x="1915.5" y="1555.41" transform="matrix(0.5 0.866 -0.866 0.5 3762.031 -299.6245)" class="st4" width="450" height="3105.58"/>
<path class="st5" d="M714.5,2953.5"/>
<path id="path1891" class="st6" d="M1592.47,2584h456.47c0-64.89-4.63-77.76-112.1-77.76c17.17-51.5,86.95-176.11,125.73-176.11
c34.31,0,75.24,1.89,75.24,80.17c0,88.87,149.56,232.16,185.82,173.7c54.04-87.12-92.91-60.55-92.91-270.65
c0-287.43,167.74-246.51,167.74-407.99c0-80.79-22.32-91.7-22.32-149.46c0-76.34,67.25-71.91,54.17-135.2
c-9.04-43.72-16.11-78.78-21.38-131.65c-3.74-37.51-4.93-77.5-43.9-75.89c-45.78,1.89-63.15,82.47-134.31,88.25
c-71.02,5.77-131.57-60.46-159.06-51c-27.25,9.38-18.68,83.32-2.52,135.83c25.4,82.54,80.79,189.86-20.2,206.02
c-100.99,16.16-274.69,32.32-399.92,197.94s-120.6,359.99-169.66,420.11C1314.72,2612.08,1146,2529.23,1146,2697.11
c0,75.16,127.35,129.27,147.55,105.03c20.2-24.24-171.62-96.46,43.01-181.78C1519.91,2547.46,1536.28,2532.58,1592.47,2584z"/>
<rect class="st7" width="4096" height="4096"/>
<path class="st1" d="M-58,1122"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,122 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
width="7.11022in" height="7.11022in"
viewBox="0 0 512 512">
<path id="選択範囲 #1"
fill="white" stroke="white" stroke-width="1"
d="M 96.00,16.00
C 99.85,16.01 102.39,15.12 104.00,19.00
104.00,19.00 97.00,19.00 97.00,19.00
97.00,19.00 108.00,22.07 108.00,22.07
108.00,22.07 144.00,43.08 144.00,43.08
144.00,43.08 181.83,64.31 181.83,64.31
181.83,64.31 223.00,88.26 223.00,88.26
223.00,88.26 247.00,102.22 247.00,102.22
247.00,102.22 257.00,107.00 257.00,107.00
260.09,110.36 266.43,114.39 271.00,115.00
271.00,115.00 298.00,133.00 298.00,133.00
298.00,133.00 300.00,132.00 300.00,132.00
300.00,132.00 312.00,141.00 312.00,141.00
312.00,141.00 314.00,140.00 314.00,140.00
318.40,144.39 334.83,152.80 341.00,156.45
341.00,156.45 404.00,192.94 404.00,192.94
404.00,192.94 425.67,205.63 425.67,205.63
428.70,208.64 426.87,211.86 425.12,215.00
425.12,215.00 412.26,237.00 412.26,237.00
410.65,240.07 409.02,245.62 404.90,245.68
401.70,245.72 396.83,242.47 394.00,240.87
394.00,240.87 370.00,226.89 370.00,226.89
370.00,226.89 282.00,176.51 282.00,176.51
282.00,176.51 271.00,169.52 271.00,169.52
271.00,169.52 261.00,164.31 261.00,164.31
257.45,162.08 251.05,157.46 247.00,157.00
247.00,157.00 234.00,148.55 234.00,148.55
234.00,148.55 208.17,133.78 208.17,133.78
208.17,133.78 190.00,124.00 190.00,124.00
190.00,124.00 163.00,107.60 163.00,107.60
163.00,107.60 103.00,73.00 103.00,73.00
103.00,73.00 103.00,453.00 103.00,453.00
103.00,453.00 127.00,439.42 127.00,439.42
127.00,439.42 170.00,414.58 170.00,414.58
170.00,414.58 237.17,376.24 237.17,376.24
237.17,376.24 256.00,364.59 256.00,364.59
256.00,364.59 264.00,360.53 264.00,360.53
264.00,360.53 285.00,348.20 285.00,348.20
285.00,348.20 292.99,344.12 292.99,344.12
292.99,344.12 299.28,339.83 299.28,339.83
299.28,339.83 320.00,328.41 320.00,328.41
320.00,328.41 362.00,304.05 362.00,304.05
362.00,304.05 371.91,297.68 371.91,297.68
371.91,297.68 379.04,294.41 379.04,294.41
379.04,294.41 410.00,276.00 410.00,276.00
410.00,276.00 416.00,285.00 416.00,285.00
416.81,288.83 421.21,296.21 424.00,299.00
424.00,299.00 423.00,301.00 423.00,301.00
427.24,303.72 430.62,312.17 432.00,317.00
432.00,317.00 388.00,342.67 388.00,342.67
388.00,342.67 317.00,383.55 317.00,383.55
317.00,383.55 279.00,405.32 279.00,405.32
279.00,405.32 264.00,415.00 264.00,415.00
264.00,415.00 262.00,414.00 262.00,414.00
262.00,414.00 250.00,423.00 250.00,423.00
250.00,423.00 248.00,422.00 248.00,422.00
248.00,422.00 238.00,428.92 238.00,428.92
238.00,428.92 218.00,440.67 218.00,440.67
218.00,440.67 207.00,448.00 207.00,448.00
207.00,448.00 193.00,455.18 193.00,455.18
193.00,455.18 176.00,465.08 176.00,465.08
176.00,465.08 166.09,470.31 166.09,470.31
166.09,470.31 137.00,487.31 137.00,487.31
137.00,487.31 103.00,506.00 103.00,506.00
103.00,506.00 104.00,509.00 104.00,509.00
104.00,509.00 57.00,509.00 57.00,509.00
57.00,509.00 57.00,16.00 57.00,16.00
57.00,16.00 96.00,16.00 96.00,16.00 Z
M 102.00,72.00
C 102.00,72.00 103.00,73.00 103.00,73.00
103.00,73.00 103.00,72.00 103.00,72.00
103.00,72.00 102.00,72.00 102.00,72.00 Z
M 261.00,190.61
C 270.30,188.63 274.03,177.15 280.77,179.78
284.36,181.18 284.28,187.65 284.72,191.00
285.35,195.85 287.64,207.99 286.57,212.00
285.51,216.00 282.42,218.30 280.78,222.00
277.54,229.29 282.79,236.85 282.99,245.00
283.38,261.24 274.02,264.52 266.36,276.00
261.36,283.50 258.58,297.05 259.09,306.00
259.91,320.41 263.09,322.38 271.02,333.00
273.09,335.77 275.09,339.39 272.11,342.37
269.94,344.63 266.39,343.51 264.00,342.37
258.40,339.52 252.76,332.51 249.91,327.00
246.61,320.60 248.26,314.37 244.57,310.23
240.72,305.90 235.19,306.50 231.18,310.23
225.69,315.34 221.16,325.22 218.00,332.00
226.04,333.96 232.79,331.61 234.00,342.00
234.00,342.00 175.00,342.00 175.00,342.00
166.62,341.85 166.77,339.11 162.00,338.56
158.39,338.15 148.72,341.68 145.00,343.05
138.31,345.53 120.54,352.22 119.64,360.00
119.01,365.49 125.06,367.91 127.00,374.00
115.41,373.03 104.20,364.93 108.88,352.00
111.36,345.12 117.06,343.57 123.00,340.75
132.86,336.05 141.94,332.38 149.58,323.96
151.40,321.95 154.62,318.26 155.92,316.00
155.92,316.00 166.03,283.00 166.03,283.00
169.87,271.08 179.16,256.26 189.00,248.52
199.37,240.36 208.38,237.36 221.00,234.66
226.45,233.50 237.77,232.36 240.99,227.79
244.55,222.75 241.98,216.26 240.34,211.00
237.46,201.77 234.64,193.69 237.00,184.00
244.82,185.47 252.94,192.32 261.00,190.61 Z
M 102.00,453.00
C 102.00,453.00 103.00,454.00 103.00,454.00
103.00,454.00 103.00,453.00 103.00,453.00
103.00,453.00 102.00,453.00 102.00,453.00 Z
M 102.00,505.00
C 102.00,505.00 103.00,506.00 103.00,506.00
103.00,506.00 103.00,505.00 103.00,505.00
103.00,505.00 102.00,505.00 102.00,505.00 Z" />
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{fill:none;}
.st2{fill:#FFFFFF;}
.st3{fill:#FFFFFF;}
.st4{fill:#FFFFFF;}
.st5{fill:#none;}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
</style>
<g id="レイヤー_1" class="st0">
</g>
<g id="レイヤー_2">
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
<rect x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st3" width="450" height="3117.62"/>
<rect x="1915.5" y="1555.41" transform="matrix(0.5 0.866 -0.866 0.5 3762.031 -299.6245)" class="st4" width="450" height="3105.58"/>
<path class="st5" d="M714.5,2953.5"/>
<path id="path1891" class="st6" d="M1592.47,2584h456.47c0-64.89-4.63-77.76-112.1-77.76c17.17-51.5,86.95-176.11,125.73-176.11
c34.31,0,75.24,1.89,75.24,80.17c0,88.87,149.56,232.16,185.82,173.7c54.04-87.12-92.91-60.55-92.91-270.65
c0-287.43,167.74-246.51,167.74-407.99c0-80.79-22.32-91.7-22.32-149.46c0-76.34,67.25-71.91,54.17-135.2
c-9.04-43.72-16.11-78.78-21.38-131.65c-3.74-37.51-4.93-77.5-43.9-75.89c-45.78,1.89-63.15,82.47-134.31,88.25
c-71.02,5.77-131.57-60.46-159.06-51c-27.25,9.38-18.68,83.32-2.52,135.83c25.4,82.54,80.79,189.86-20.2,206.02
c-100.99,16.16-274.69,32.32-399.92,197.94s-120.6,359.99-169.66,420.11C1314.72,2612.08,1146,2529.23,1146,2697.11
c0,75.16,127.35,129.27,147.55,105.03c20.2-24.24-171.62-96.46,43.01-181.78C1519.91,2547.46,1536.28,2532.58,1592.47,2584z"/>
<rect class="st7" width="4096" height="4096"/>
<path class="st1" d="M-58,1122"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

132
app/img/thinking.svg Normal file
View File

@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{fill:#040000;}
.st1{fill:#040000;stroke:#040000;stroke-miterlimit:10;}
.st2{clip-path:url(#SVGID_2_);}
.st3{clip-path:url(#SVGID_4_);}
.st4{fill:none;}
.st5{fill:#FFFFFF;}
.st6{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
.st7{fill:#F0842E;}
.st8{fill:#3D4FA0;}
.st9{fill:#63451F;stroke:#FFFFFF;stroke-width:20;stroke-miterlimit:10;}
.st10{fill:#63451F;}
</style>
<g id="DrawBlack">
<polyline id="BG_1_" class="st0" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect id="Left_1_" x="678.5" y="128.48" class="st1" width="450" height="3821.5"/>
<rect id="Top_1_" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st0" width="450" height="3117.62"/>
<g id="Finger_1_">
<g>
<defs>
<rect id="SVGID_1_" x="-626.54" y="666.18" transform="matrix(0.9063 -0.4226 0.4226 0.9063 -723.8983 1097.2598)" width="5478.6" height="3030.2"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g id="g14_3_" class="st2">
<g id="g44_1_" transform="translate(17.2764,0.8682)">
<path id="path46_1_" class="st0" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
</g>
</g>
</g>
</g>
<g id="Eyes_1_">
<g>
<defs>
<rect id="SVGID_3_" x="95.01" y="544.01" width="3526.99" height="3526.99"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" style="overflow:visible;"/>
</clipPath>
<g id="g14_2_" class="st3">
<g id="g24_1_" transform="translate(15.4063,25.5)">
<path id="path26_1_" class="st0" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"
/>
</g>
<g id="g32_1_" transform="translate(9.6709,29.667)">
<path id="path34_1_" class="st0" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
</g>
<g id="g36_1_" transform="translate(14.7427,16.4277)">
<path id="path38_1_" class="st0" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
</g>
<g id="g40_1_" transform="translate(20.4307,25.917)">
<path id="path42_1_" class="st0" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
</g>
<g id="g28_1_" transform="translate(26,24.5)">
<path id="path30_1_" class="st0" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"
/>
</g>
</g>
</g>
</g>
</g>
<g id="Path">
<path id="CutLine" class="st4" d="M528,128C532-14,669,0,669,0h346l2629,1464c0,0,78,34,28,108s-217,359-217,359s-22,9,9,226
s-204,313-204,313l-545,356c0,0,421.37,492.67,29.68,732.33S1798,4056,1798,4056s28.13,15-290.94,15s-828.56,0-828.56,0
S531,4102,528,3904S528,128,528,128z"/>
</g>
<g id="Draw">
<polyline id="BG" class="st5" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect id="Left" x="678.5" y="128.48" class="st6" width="450" height="3821.5"/>
<rect id="Top" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st7" width="450" height="3117.62"/>
<g id="Finger">
<g id="g44" transform="translate(17.2764,0.8682)">
<path id="path46" class="st8" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
</g>
</g>
<g id="Eyes">
<g id="g24" transform="translate(15.4063,25.5)">
<path id="path26" class="st9" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"/>
</g>
<g id="g32" transform="translate(9.6709,29.667)">
<path id="path34" class="st9" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
</g>
<g id="g36" transform="translate(14.7427,16.4277)">
<path id="path38" class="st9" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
</g>
<g id="g40" transform="translate(20.4307,25.917)">
<path id="path42" class="st9" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
</g>
<g id="g28" transform="translate(26,24.5)">
<path id="path30" class="st10" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,5 @@
selectedColumn = 0
selectedToot = 0
$(function ($) {
//キーボードショートカット
$(window).keydown(function (e) {
@@ -20,7 +22,6 @@ $(function ($) {
return false;
}
}
}
//Ctrl+Enter:投稿
if (event.metaKey || event.ctrlKey && wv) {
@@ -36,14 +37,6 @@ $(function ($) {
return false;
}
}
//Shift+Space:Markdownゼロ幅スペース
if (event.shiftKey) {
if (e.keyCode === 32) {
brInsert("");
return false;
}
}
//Esc:消す
if (e.keyCode === 27 && wv) {
hide();
@@ -54,14 +47,6 @@ $(function ($) {
location.href = "index.html";
return false;
}
//Ctrl+R:ランキング
if ((event.metaKey || event.ctrlKey) && wv) {
if (e.keyCode === 82) {
if (localStorage.getItem("kirishima")) {
window.open("https://astarte.thedesk.top");
}
}
}
//Ctrl+Sift+C:全消し
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
if (e.keyCode === 67) {
@@ -135,7 +120,7 @@ $(function ($) {
}
}
//Ctrl+Sift+P:プロフ
if ((event.ctrlKey) && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) {
profShow()
return false;
@@ -149,30 +134,82 @@ $(function ($) {
return false;
}
}
//矢印:選択
if (e.code == "ArrowLeft") {
//left
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
if (selectedColumn > 0) {
selectedColumn--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowUp") {
//up
if ($("#imagemodal").hasClass("open")) {
return false;
}
if (selectedToot > 0) {
selectedToot--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowRight") {
//right
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
if (selectedColumn < $(".tl-box").length - 1) {
selectedColumn++
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowDown") {
//down
if ($("#imagemodal").hasClass("open")) {
return false;
}
selectedToot++
tootSelector(selectedColumn, selectedToot)
return false;
}
//Ctrl+U:0,0選択
if (event.ctrlKey || event.metaKey) {
if (e.keyCode === 85) {
selectedToot = 0
selectedColumn = 0
tootSelector(0, 0)
return false;
}
}
//選択時
if (e.keyCode == 70) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
fav(id, acct_id, false)
return false;
}
if (e.keyCode == 66) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
rt(id, acct_id, false)
return false;
}
if (e.keyCode == 82) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var ats_cm = $('.selectedToot .rep-btn').attr("data-men")
var mode = $('.selectedToot .rep-btn').attr("data-visen")
re(id, ats_cm, acct_id, mode)
return false;
}
}
//textareaフォーカス時
if (hasFocus2 && wv) {
if (event.metaKey || event.ctrlKey) {
//Ctrl+B:太字
if (e.keyCode === 66) {
tagsel('b');
return false;
}
//Ctrl+I:斜字
if (e.keyCode === 73) {
tagsel('i');
return false;
}
//Ctrl+U:下線
if (e.keyCode === 85) {
tagsel('u');
return false;
}
//Ctrl+S:取り消し線
if (e.keyCode === 83) {
tagsel('s');
return false;
}
//C+S+(No):ワンクリ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) {
@@ -183,22 +220,28 @@ $(function ($) {
}
}
}
//イメージビューワー切り替え
if (e.keyCode === 37 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
}
if (e.keyCode === 39 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
}
});
//クリアボタン
$("#clear").click(function () {
clear();
});
});
});
//選択する
function tootSelector(column, toot) {
$('.cvo').removeClass("selectedToot")
$('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
var elem = $('.selectedToot').offset().top
var top = elem - $('.tl-box').height() + scr
if (top > 0) {
top = top + $('.selectedToot').height()
if (top > scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: top })
}
} else if (elem < 0) {
var to = scr + elem - $('.selectedToot').height()
if (to < scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,18 @@ function verck(ver) {
console.log("%c Welcome😊", "color: red;font-size:200%;")
var date = new Date();
var show = false
if (localStorage.getItem("ver") != ver) {
if (localStorage.getItem("ver") != ver && localStorage.getItem("winstore")) {
//ちょっと削除とリンク解析の都合上アレ(s)
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
if (!localStorage.getItem("usamin_18_6_5_flag")) {
localStorage.setItem("usamin_18_6_5_flag", true)
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
for (var i = 0; i < obj.length; i++) {
localStorage.removeItem("card_" + i);
}
}
//ちょっと削除とリンク解析の都合上アレ(e)
localStorage.setItem("ver", ver);
show = true
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
@@ -22,7 +33,6 @@ function verck(ver) {
} else {
$("#release-en").show();
}
});
}
if (!show) {
@@ -42,54 +52,14 @@ function verck(ver) {
$("#support-btm").animate({
'bottom': '0'
}, {
'duration': 300
});
'duration': 300
});
}
}
var platform = localStorage.getItem("platform");
console.log("Your platform:" + platform)
if (platform == "win32") {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform,
buttons: [lang.lang_no, lang.lang_yesno]
}
if (!localStorage.getItem("winstore")) {
postMessage(["dialogStore", options], "*")
}
} else if (platform == "linux") {
if (localStorage.getItem("winstore") == "unix") {
localStorage.removeItem("winstore")
}
if (!localStorage.getItem("winstore")) {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_linux,
buttons: [lang.lang_no, lang.lang_yesno]
}
if (!localStorage.getItem("winstore")) {
postMessage(["dialogStore", options], "*")
}
}
} else if (platform == "darwin") {
if (localStorage.getItem("winstore") == "unix") {
localStorage.removeItem("winstore")
}
if (!localStorage.getItem("winstore")) {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_mac,
buttons: [lang.lang_no, lang.lang_yesno]
}
if (!localStorage.getItem("winstore")) {
postMessage(["dialogStore", options], "*")
}
}
} else {
localStorage.setItem("winstore", "unix")
if (!localStorage.getItem("winstore")) {
storeDialog(platform, ver)
}
if (localStorage.getItem("winstore") == "brewcask" || localStorage.getItem("winstore") == "snapcraft" || localStorage.getItem("winstore") == "winstore") {
var winstore = true;
@@ -163,6 +133,59 @@ function verck(ver) {
if (obj.ID * 1 <= last) {
break;
} else {
if (obj.type == "textv2") {
if (~obj.languages.indexOf(lang.language)) {
var show = true;
if (obj.toot != "") {
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>';
} else {
var toot = "";
}
if (obj.ver != "") {
if (obj.ver == ver) {
show = true;
} else {
show = false;
}
}
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
}
}
}
}
}
});
}
var infostreaming = false;
function infowebsocket() {
infows = new WebSocket("wss://thedesk.top/ws/");
infows.onopen = function (mess) {
console.log([tlid, ":Connect Streaming Info:", mess]);
infostreaming = true;
}
infows.onmessage = function (mess) {
console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]);
var obj = JSON.parse(mess.data);
if (obj.type != "counter") {
if (obj.type == "textv2") {
if (~obj.languages.indexOf(lang.language)) {
localStorage.setItem("last-notice-id", obj.id)
var show = true;
if (obj.toot != "") {
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>';
@@ -190,54 +213,11 @@ function verck(ver) {
}
}
if (show) {
console.log(obj.text)
console.log(escapeHTML(obj.text))
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
}
}
}
});
}
var infostreaming = false;
function infowebsocket() {
infows = new WebSocket("wss://thedesk.top/ws/");
infows.onopen = function (mess) {
console.log([tlid, ":Connect Streaming Info:", mess]);
infostreaming = true;
}
infows.onmessage = function (mess) {
console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]);
var obj = JSON.parse(mess.data);
if (obj.type != "counter") {
localStorage.setItem("last-notice-id", obj.id)
var show = true;
if (obj.toot != "") {
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>';
} else {
var toot = "";
}
if (obj.ver != "") {
if (obj.ver == ver) {
show = true;
} else {
show = false;
}
}
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
M.toast({ html: escapeHTML(obj.Text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
} else {
$("#persons").text(obj.text);
@@ -284,4 +264,49 @@ function closeSupport() {
$("#support-btm").addClass("hide")
}
});
}
function storeDialog(platform, ver) {
if (platform == "win32") {
var mes = lang.lang_version_platform;
} else if (platform == "linux") {
var mes = lang.lang_version_platform_linux;
} else if (platform == "darwin") {
var mes = lang.lang_version_platform_mac;
}
Swal.fire({
title: "Select your platform",
text: mes,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_no,
cancelButtonText: lang.lang_yesno
}).then((result) => {
//逆にしてる
if (!result.value) {
localStorage.setItem("winstore", "winstore")
} else {
localStorage.setItem("winstore", "localinstall")
}
localStorage.setItem("ver", ver);
show = true
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
$(document).ready(function () {
$('#releasenote').modal('open');
verp = ver.replace('(', '');
verp = verp.replace('.', '-');
verp = verp.replace('.', '-');
verp = verp.replace('[', '-');
verp = verp.replace(']', '');
verp = verp.replace(')', '');
verp = verp.replace(' ', '_');
console.log("%c " + verp, "color: red;font-size:200%;");
if (lang.language == "ja") {
$("#release-" + verp).show();
} else {
$("#release-en").show();
}
});
})
}

228
app/js/lang/lang.bg.js Normal file
View File

@@ -0,0 +1,228 @@
var lang={
"language": "en",
"lang_toot": "Раздумай",
"lang_there": "Да",
"lang_nothing": "Няма",
"lang_yesno": "Да",
"lang_no": "Не",
"lang_progress": "Изчакайте...",
"lang_edit": "Редактиране",
"lang_del": "Изтрий",
"lang_add": "Добави",
"lang_fatalerroroccured": "Възникнаха някои грешки, моля рестартирайте Desk.",
"lang_speech": "Google US English",
"lang_lang": "Език",
"lang_langlocale": "Английски",
"lang_back": "Назад",
"lang_set": "Задай",
"lang_langadd": "Преведете TheDesk на други езици или проверете TheDesk на <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\"> GitHub </a>. TheDesk се нуждае от вашата помощ.",
"lang_version_usever": "Не е намерена актуализация({{ver}})",
"lang_version_skipver": "Актуализацията бе игнорирана.",
"lang_version_platform": "Искате ли автоматични актуализации? (За потребителите инсталирали от Microsoft Store, изберете „Не“)",
"lang_version_platform_linux": "Искате ли автоматични актуализации? (За потребителите инсталирали от Snapcraft, изберете „Не“)",
"lang_version_platform_mac": "Искате ли автоматични актуализации? (За потребителите на Homebrew Cask изберете „Не“)",
"lang_login_noauth": "Показване на TL на нерегистрирани профили",
"lang_manager_info": "За тази инстанция",
"lang_manager_refresh": "Обнови",
"lang_manager_delete": "Излизане",
"lang_manager_color": "Цвят на профила",
"lang_manager_confirm": "е на път да излезе. Продължаване?",
"lang_manager_mainAcct": "Готово: изберете основния профил",
"lang_manager_def": "По подразбиране",
"lang_manager_none": "Няма",
"lang_manager_godev": "Отворете DevCenter на Misskey. Ние показваме официални документи, на които се позоваваме.",
"lang_manager_logout": "Излизане",
"lang_bbmd_misskey": "TheDesk разглежда \"@\" като отговор, но поставя друг параметър. Ако не е включено в Mastodon това означава, че е в Home на Misskey.",
"lang_emoji_get": "Вземи емотикони",
"lang_emoji_custom": "Персонализирани емотикони",
"lang_defaultemojis_text": "Още емотикони {{cat}}",
"lang_postimg_previewdis": "не може да се визуализира",
"lang_postimg_aftupload": "Не можете да променяте профилите след качването.",
"lang_postimg_delete": "Изтрийте това изображение.",
"lang_post_tagTL": "Тази раздумка не съдържа маркер по подразбиране. Тази раздумка няма да се показва в локалния TL. Продължавате?",
"lang_post_tagVis": "Тази раздумка (не е \"публична\") не е показана с този етикет в ТЛ.",
"lang_post_cwtitle": "Авто CW Сигнал",
"lang_post_cwtxt": "На път сте да публикувате по-дълга раздумка, отколкото е зададена.\nТекст на предупреждението:",
"lang_post_btn1": "Отказ (няма да се публикува)",
"lang_post_btn2": "Текстът да се скрива автоматично",
"lang_post_btn3": "Продължете към публикуването",
"lang_status_favWarn": "Ще отнеме минута раздумката отдалечено да стане любима.",
"lang_status_btWarn": "Ще отнеме минута раздумката отдалечено да бъде подсилена.",
"lang_status_follow": "Следване",
"lang_status_unfollow": "Спри следенето",
"lang_status_block": "Блокирай",
"lang_status_unblock": "Отблокирай",
"lang_status_mute": "Без звук",
"lang_status_unmute": "Със звук",
"lang_status_redraftTitle": "Изтрий & върни",
"lang_status_redraft": "Продължете да изтривате & преработвате? Ще изгубите статуса на тази раздумка. В тази функция може да се съдържат някои грешки. Снимките от тази раздумка ще бъдат изтрити на по-стари от Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse": "Not feature on profile",
"lang_status_endorse": "Feature on profile",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.",
"lang_cards_check": " check",
"lang_cards_pip": "PiP mode",
"lang_details_nodata": "No data",
"lang_details_filtered": "Filtered toot",
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
"lang_list_show": "Show",
"lang_list_users": "Users list",
"lang_list_nouser": "No users in this list.",
"lang_list_add": "Add to the list",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Remove from the list",
"lang_notf_new": " new notifications",
"lang_speech_refresh": "Save value about TTS config",
"lang_src_ts": "chronological order",
"lang_src_people": " people toot",
"lang_tags_always": "Always toots with ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Unpin {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Автоматично попълване на {{tag}}, ако раздумката няма {{tag}}",
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
"lang_img_DLDone": "Downloaded:",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[No data]<br>F5/⌘+R to reload",
"lang_layout_dm": "Direct Message",
"lang_layout_webviewmode": "Prefer WebView",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Показване в BT режим (ИЗКЛ./Изключване BT/ Само в BT)",
"lang_layout_leftFold": "Стъпка наляво",
"lang_layout_leftUnfold": "Док отдясно",
"lang_layout_deleteColumn": "Премахване на тази колона",
"lang_layout_deleteColumnDesc": "Премахване на тази колона",
"lang_sort_gothis": "Отидете в тази колона",
"lang_sort_remthis": "Премахване на тази колона",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Готово:шаблон на NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
"lang_parse_btedsimple": " boosted",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Actioned at",
"lang_parse_cwshow": "Show",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "More",
"lang_parse_url": "URL Analyzer",
"lang_parse_tagTL": "Timeline of {{tag}}",
"lang_parse_tagtoot": "Toot with {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Public",
"lang_parse_unlisted": "Unlisted",
"lang_parse_private": "Private",
"lang_parse_direct": "Direct",
"lang_parse_clickcopy": "Click to copy text of this toot",
"lang_parse_clickcopyurl": "Click to copy URL of this toot",
"lang_parse_trans": "Translate to Japanese",
"lang_parse_replyto": "Reply to this toot",
"lang_parse_bt": "Boost this toot",
"lang_parse_fav": "Favourite this toot",
"lang_parse_quote": "Quote this toot",
"lang_parse_del": "Изтрийте тази раздумка",
"lang_parse_pin": "Pin this toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Изтрий & върни",
"lang_parse_followed": "Followed you",
"lang_parse_clientop": "Operation of this client",
"lang_parse_clienttxt": " will be",
"lang_parse_clientno": "done nothing",
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",
"lang_parse_notffilter": "Show this user's notifications",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",
"lang_misskeyparse_tagnostr": "No streaming API on Tag TLs",
"lang_misskeyparse_listnostr": "No streaming API on List TLs",
"lang_misskeyparse_home": "Home",
"lang_misskeyparse_followers": "Follower",
"lang_misskeyparse_specified": "Specified User",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " renoted your following post.",
"lang_misskeyparse_quoted": " quoted your following post.",
"lang_misskeyparse_reacted": " reacted your following post.",
"lang_setting_time": "Time format:{{set}}",
"lang_setting_theme": "Theme:{{set}}",
"lang_setting_nsfw": "NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Reply counter:{{set}}",
"lang_setting_vis": "Default visibility:{{set}}",
"lang_setting_popup": "Popup notification:{{set}}",
"lang_setting_off": "Off",
"lang_setting_s": "s",
"lang_setting_box": "Default toot box action:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Автоматично сгъване:{{set1}} линии по-нагоре,{{set2}} букви по-нагоре",
"lang_setting_autocw": "Автоматично CW:{{set1}} линии по-нагоре, {{set2}} букви по-нагоре",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Fonts:{{set}}",
"lang_setting_default": "default font",
"lang_setting_size": "Font size:{{set}}px",
"lang_setting_imgheight": "Image height:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag TL:{{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Quote format:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "No client is muted.",
"lang_setting_notftest": " Notification test ",
"lang_setting_notftestprof": "Your icon is shown.",
"lang_setting_exportwarn": "Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn": "Всички данни ще бъдат изтрити."
}

228
app/js/lang/lang.cs.js Normal file
View File

@@ -0,0 +1,228 @@
var lang={
"language": "cs",
"lang_toot": "Toot",
"lang_there": "Ano",
"lang_nothing": "Nic",
"lang_yesno": "Ano",
"lang_no": "Ne",
"lang_progress": "Čekejte...",
"lang_edit": "Upravit",
"lang_del": "Smazat",
"lang_add": "Přidat",
"lang_fatalerroroccured": "Vyskytly se nějaké chyby, prosím restartujte TheDesk.",
"lang_speech": "Google Čeština",
"lang_lang": "Jazyk",
"lang_langlocale": "Čeština",
"lang_back": "Zpět",
"lang_set": "Nastavit",
"lang_langadd": "Přeložte TheDesk do jiných jazyků nebo opravte existující překlad na <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHubu</a> nebo <a href=\"https://translate.thedesk.top/\" target=\"_blank\">Crowdinu</a>. TheDesk potřebuje vaši pomoc.",
"lang_version_usever": "Nebyla nalezena žádná aktualizace ({{ver}})",
"lang_version_skipver": "Aktualizace byla ignorována.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')",
"lang_login_noauth": "Zobrazit časové osy nepřihlášených účtů",
"lang_manager_info": "O tomto serveru",
"lang_manager_refresh": "Obnovit",
"lang_manager_delete": "Odhlásit",
"lang_manager_color": "Barva účtu",
"lang_manager_confirm": "se chce odhlásit. Pokračovat?",
"lang_manager_mainAcct": "Hotovo: vyberte hlavní účet",
"lang_manager_def": "Výchozí",
"lang_manager_none": "Žádný",
"lang_manager_godev": "Otevřené vývojářské centrum softwaru Misskey. Zobrazujeme také oficiální dokumentaci.",
"lang_manager_logout": "Logout",
"lang_bbmd_misskey": "TheDesk považuje „@“ za odpověď, ale vkládá ho do jiných parametrů. „Neuvedeno“ na Mastodonu znamená „Domů“ na Misskey.",
"lang_emoji_get": "Získat emoji",
"lang_emoji_custom": "Vlastní emoji",
"lang_defaultemojis_text": "Emojis about {{cat}}",
"lang_postimg_previewdis": "nelze vytvořit náhled",
"lang_postimg_aftupload": "Po nahrání nemůžete změnit účty.",
"lang_postimg_delete": "Delete this image.",
"lang_post_tagTL": "Tento toot neobsahuje výchozí hashtag. Tento toot nebude zobrazen na výchozí časové ose. Pokračovat?",
"lang_post_tagVis": "Tento toot (ne „veřejný“ toot) není zobrazen na časové ose tohoto hashtagu.",
"lang_post_cwtitle": "Automatické varování o obsahu",
"lang_post_cwtxt": "Chcete napsat delší toot, než jste nastavil/a.\nText varování:",
"lang_post_btn1": "Zrušit (příspěvek nebude publikován)",
"lang_post_btn2": "Skrýt text automaticky",
"lang_post_btn3": "Pokračovat k přispívání",
"lang_status_favWarn": "Oblíbení vzdáleného tootu bude chvíli trvat.",
"lang_status_btWarn": "Boostnutí vzdáleného tootu bude chvíli trvat.",
"lang_status_follow": "Sledovat",
"lang_status_unfollow": "Přestat sledovat",
"lang_status_block": "Blokovat",
"lang_status_unblock": "Odblokovat",
"lang_status_mute": "Ignorovat",
"lang_status_unmute": "Přestat ignorovat",
"lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Chcete pokračovat k vymazání a přepsání? Ztratíte odpovědi na tento toot. Tato funkce může obashovat několik chyb. Obrázky v tomto tootu budou na verzi Mastodonu starší než 2.4.1 smazány.",
"lang_status_emphas": ": tooty tohoto uživatele jsou zdůrazněny. Po této akci prosím obnovte stránku.",
"lang_status_unemphas": ": tooty tohoto uživatele nejsou zdůrazněny. Po této akci prosím obnovte stránku.",
"lang_status_unendorse": "Nepředstavit na profilu",
"lang_status_endorse": "Představit na profilu",
"lang_suggest_nodata": "Pro zobrazení návrhu prosím získejte seznam emoji.",
"lang_usetxtbox_reply": "Režim odpovězení. Pro vymazání stiskněte Ctrl+Shift+C.",
"lang_cards_check": " kontrolovat",
"lang_cards_pip": "Režim PiP",
"lang_details_nodata": "Žádná data",
"lang_details_filtered": "Filtrovaný toot",
"lang_details_embed": "HTML pro vložení je zkopírován.",
"lang_details_url": "URL adresa tohoto tootu je zkopírována.",
"lang_details_txt": "Obsah tohoto tootu je zkopírován.",
"lang_filter_nodata": "Žádná data",
"lang_filter_errordegree": "Prosím zkontrolujte kontext",
"lang_list_nodata": "Žádná data",
"lang_list_show": "Zobrazit",
"lang_list_users": "Seznam uživatelů",
"lang_list_nouser": "Žádní uživatelé na tomto seznamu.",
"lang_list_add": "Přidat na seznam",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Odstranit ze seznamu",
"lang_notf_new": " nových oznámení",
"lang_speech_refresh": "Uložit hodnotu nastavení TTS",
"lang_src_ts": "chronologické pořadí",
"lang_src_people": " lidí tootují",
"lang_tags_always": "Vždy tootnout s ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Odepnout {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Auto complete {{tag}}, if toot without {{tag}}",
"lang_tl_media": "Média",
"lang_tl_reconnect": "Reconnect to streaming API",
"lang_img_DLDone": "Downloaded:",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} tohoto účtu",
"lang_layout_delthis": "Odstranit tento sloupec",
"lang_layout_setthis": "Nastavení tohoto sloupce",
"lang_layout_mediafil": "Filtrování médií",
"lang_layout_linkana": "Automatický analyzátor odkazů",
"lang_layout_linkanades": "Automatický analyzátor odkazů",
"lang_layout_tts": "Převod textu na řeč ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[Žádná data]<br>Obnovte stránku klávesami F5/⌘+R",
"lang_layout_dm": "Přímá zpráva",
"lang_layout_webviewmode": "Preferovat WebView",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Stack to the left",
"lang_layout_leftUnfold": "Dock on the right",
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Spojit TheDesk se Spotify",
"lang_spotify_np": "Hotovo: šablona NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_hisdata_frcreq": "Vyžaduje Mastodon 2.4.3 nebo vyšší verzi",
"lang_hisdata_frcwarn": "Budou zobrazeny již nesledované účty.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_movetxt": "Tento účet byl přesunut",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[robot]",
"lang_showontl_followed": "Sledují vás",
"lang_showontl_notf": "Oznámení ",
"lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " vám odpověděl/a",
"lang_parse_faved": " si oblíbil/a váš toot",
"lang_parse_bted": " boostnul/a váš toot",
"lang_parse_btedsimple": " boostnul/a",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Provedeno",
"lang_parse_cwshow": "Zobrazit",
"lang_parse_fulltext": "Celý text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "Více",
"lang_parse_url": "Analyzátor URL",
"lang_parse_tagTL": "Časová osa {{tag}}",
"lang_parse_tagtoot": "Tootnout s hashtagem {{tag}}",
"lang_parse_tagpin": "Připnout {{tag}}",
"lang_parse_public": "Veřejný",
"lang_parse_unlisted": "Neuvedený",
"lang_parse_private": "Soukromý",
"lang_parse_direct": "Přímý",
"lang_parse_clickcopy": "Klikněte pro zkopírování textu tohoto tootu",
"lang_parse_clickcopyurl": "Klikněte pro zkopírování URL adresy tohoto tootu",
"lang_parse_trans": "Přeložit do japonštiny",
"lang_parse_replyto": "Odpovědět na tento toot",
"lang_parse_bt": "Boostnout tento toot",
"lang_parse_fav": "Oblíbit si tento toot",
"lang_parse_quote": "Citovat tento toot",
"lang_parse_del": "Smazat tento toot",
"lang_parse_pin": "Připnout tento toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Vymazat a přepsat",
"lang_parse_followed": "vás nyní sleduje",
"lang_parse_clientop": "Operace tohoto klienta",
"lang_parse_clienttxt": " bude",
"lang_parse_clientno": "nic nedělat",
"lang_parse_clientemp": "zdůrazněna (nebo nezdůrazněna)",
"lang_parse_clientmute": "ztlumena",
"lang_parse_mute": " bude ztlumena. To můžete odstranit v nastavení.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",
"lang_parse_notffilter": "Show this user's notifications",
"lang_misskeyparse_renote": "Znovusdílení",
"lang_misskeyparse_renoteqt": "Renotování",
"lang_misskeyparse_reaction": "Reakce",
"lang_misskeyparse_tagnostr": "Žádné streamovací API na časových osách hashtagů",
"lang_misskeyparse_listnostr": "Žádné streamovací API na časových osách seznamů",
"lang_misskeyparse_home": "Domů",
"lang_misskeyparse_followers": "Sledující",
"lang_misskeyparse_specified": "Určený uživatel",
"lang_misskeyparse_qt": "Režim renotování (citace) Misskey: pro vymazání stiskněte Ctrl+Shift+Enter",
"lang_misskeyparse_renoted": " renotoval/a váš následující příspěvek.",
"lang_misskeyparse_quoted": " citoval/a váš následující příspěvek.",
"lang_misskeyparse_reacted": " reagoval/a na váš následující příspěvek.",
"lang_setting_time": "Časový formát: {{set}}",
"lang_setting_theme": "Motiv: {{set}}",
"lang_setting_nsfw": "Citlivý obsah: {{set}}",
"lang_setting_cw": "Varování: {{set}}",
"lang_setting_cwtext": "Výchozí text varování: {{set}}",
"lang_setting_cws": "Vždy zapnout varování na: {{set}}",
"lang_setting_rp": "Počitadlo odpovědí: {{set}}",
"lang_setting_vis": "Výchozí viditelnost: {{set}}",
"lang_setting_popup": "Popupové oznámení: {{set}}",
"lang_setting_off": "Vyl",
"lang_setting_s": "s",
"lang_setting_box": "Výchozí akce tootového pole: {{set}}",
"lang_setting_gif": "GIF: {{set}}",
"lang_setting_selt": "Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Písma: {{set}}",
"lang_setting_default": "výchozí písmo",
"lang_setting_size": "Velikost písma: {{set}} px",
"lang_setting_imgheight": "Výška obrázků: {{set}} px",
"lang_setting_ticker": "#InstanceTicker: {{set}} px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Časová osa hashtagu: {{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Formát citace: {{set}}",
"lang_setting_via": "Přes: {{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "Žádný klient není ztlumen.",
"lang_setting_notftest": " Test oznámení ",
"lang_setting_notftestprof": "Vaše ikona je zobrazena.",
"lang_setting_exportwarn": "Budou exportována pouze důležitá data. Tato data musíte udržet v bezpečí.",
"lang_setting_importwarn": "Všechna data budou smazána."
}

228
app/js/lang/lang.de.js Normal file
View File

@@ -0,0 +1,228 @@
var lang={
"language": "en",
"lang_toot": "Tröt",
"lang_there": "Ja",
"lang_nothing": "Ohne",
"lang_yesno": "Ja",
"lang_no": "Nein",
"lang_progress": "Warten...",
"lang_edit": "Bearbeiten",
"lang_del": "Löschen",
"lang_add": "Hinzufügen",
"lang_fatalerroroccured": "Ein Fehler ist aufgetreten, bitte starten Sie TheDesk neu.",
"lang_speech": "Google US Englisch",
"lang_lang": "Sprache",
"lang_langlocale": "Englisch",
"lang_back": "Zurück",
"lang_set": "Setzen",
"lang_langadd": "Übersetzen oder korrigieren Sie TheDesk in andere Sprachen auf <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk benötigt Ihre Hilfe.",
"lang_version_usever": "Keine Aktualisierung gefunden({{ver}})",
"lang_version_skipver": "Update wurde ignoriert.",
"lang_version_platform": "Möchten Sie automatische Updates?(Benutzer im Microsoft Store wählen 'Nein')",
"lang_version_platform_linux": "Möchten Sie automatische Updates?(Benutzer auf Snapcraft wählen 'Nein')",
"lang_version_platform_mac": "Möchten Sie automatische Updates?(Homebrew Cask Benutzer wählen 'Nein')",
"lang_login_noauth": "Verläufe von nicht angemeldeten Konten anzeigen",
"lang_manager_info": "Über diese Instanz",
"lang_manager_refresh": "Aktualisieren",
"lang_manager_delete": "Abmelden",
"lang_manager_color": "Kontofarbe",
"lang_manager_confirm": "ist im Begriff, sich auszuloggen. Fortfahren?",
"lang_manager_mainAcct": "Fertig:Hauptkonto wählen",
"lang_manager_def": "Standard",
"lang_manager_none": "Ohne",
"lang_manager_godev": "Öffnen Sie das DevCenter von Misskey. Wir zeigen auch ein offizielles Dokument als Referenz.",
"lang_manager_logout": "Abmelden",
"lang_bbmd_misskey": "TheDesk betrachtet \"@\" als Antwort, setzt aber einen anderen Parameter. Nicht auf Mastodon gelistet bedeutet Home on Misskey.",
"lang_emoji_get": "Hole Emojis",
"lang_emoji_custom": "Eigene Emojis",
"lang_defaultemojis_text": "Emojis über {{cat}}",
"lang_postimg_previewdis": "keine Vorschau",
"lang_postimg_aftupload": "Sie können die Konten nach dem Hochladen nicht mehr ändern.",
"lang_postimg_delete": "Dieses Bild löschen.",
"lang_post_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?",
"lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.",
"lang_post_cwtitle": "Auto CW Alert",
"lang_post_cwtxt": "Du bist dabei, länger zu posten, als du eingestellt hast.\nWarntext:",
"lang_post_btn1": "Abbrechen (wird nicht gesendet)",
"lang_post_btn2": "Text automatisch ausblenden",
"lang_post_btn3": "Weiter mit Senden",
"lang_status_favWarn": "Es braucht einen Moment, um ein entferntes Tröt zu favorisieren.",
"lang_status_btWarn": "Es braucht einen Moment, um ein entferntes Tröt zu verstärken.",
"lang_status_follow": "Folgen",
"lang_status_unfollow": "Nicht mehr folgen",
"lang_status_block": "Blockieren",
"lang_status_unblock": "Freigeben",
"lang_status_mute": "Stummschalten",
"lang_status_unmute": "Stummschalten aufheben",
"lang_status_redraftTitle": "Löschen & Neuentwerfen",
"lang_status_redraft": "Weiter mit löschen & neu entwerfen? Du verlierst den Status dieses Tröts. Diese Aktion kann einige Fehler enthalten. Bilder dieses Tröts werden auf älteren Versionen als Mastodon 2.4.1 gelöscht.",
"lang_status_emphas": "'s Tröts werden hervorgehoben. Bitte laden Sie nach dieser Aktion neu.",
"lang_status_unemphas": "'s Tröts werden nicht hervorgehoben. Bitte laden Sie nach dieser Aktion neu.",
"lang_status_unendorse": "Nicht auf dem Profil zeigen",
"lang_status_endorse": "Auf dem Profil zeigen",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Antwortmodus. Strg+Umschalt+C zum Löschen.",
"lang_cards_check": " überprüfen",
"lang_cards_pip": "PiP mode",
"lang_details_nodata": "Keine Daten",
"lang_details_filtered": "Gefilterter Tröt",
"lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten",
"lang_list_show": "Anzeigen",
"lang_list_users": "Benutzerliste",
"lang_list_nouser": "Keine Benutzer in dieser Liste.",
"lang_list_add": "Zur Liste hinzufügen",
"lang_list_add_misskey": "(vielleicht wurde dieser Benutzer aufgelistet)",
"lang_list_remove": "Aus Liste entfernen",
"lang_notf_new": " neue Benachrichtigungen",
"lang_speech_refresh": "Sichern der Vorlesefunktionseinstellungen",
"lang_src_ts": "chronologische Reihenfolge",
"lang_src_people": " Leute Tröt",
"lang_tags_always": "Immer Tröten mit ",
"lang_tags_realtime": "Tag-Stream Tröt",
"lang_tags_tagunpin": "{{tag}} entsperren",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist",
"lang_tl_media": "Medien",
"lang_tl_reconnect": "Mit Streaming API erneut verbinden",
"lang_img_DLDone": "Heruntergeladen:",
"lang_layout_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.",
"lang_layout_thisacct": "{{notf}} dieses Kontos",
"lang_layout_delthis": "Diese Spalte löschen",
"lang_layout_setthis": "Einstellungen dieser Spalte",
"lang_layout_mediafil": "Medien filtern",
"lang_layout_linkana": "Automatische Link-Analyse",
"lang_layout_linkanades": "Automatische Link-Analyse",
"lang_layout_tts": "Sprachausgabe ",
"lang_layout_reconnect": "Mit Streaming API erneut verbinden",
"lang_layout_headercolor": "Kopfzeilenfarbe dieser Spalte",
"lang_layout_nodata": "[Keine Daten]<br>F5/⌘+R zum Neu laden",
"lang_layout_dm": "Direkte Nachricht",
"lang_layout_webviewmode": "Web-Ansicht bevorzugen",
"lang_excluded": "Ausgeschlossene Benachrichtigungsart",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Nach links Stapeln",
"lang_layout_leftUnfold": "Rechts Anheften",
"lang_layout_deleteColumn": "Diese Spalte löschen",
"lang_layout_deleteColumnDesc": "Diese Spalte löschen",
"lang_sort_gothis": "Gehe zu dieser Spalte",
"lang_sort_remthis": "Diese Spalte löschen",
"lang_spotify_img": "Albumcover anhängen",
"lang_spotify_imgno": "Kein Albumcover anhängen",
"lang_spotify_acct": "TheDesk mit Spotify verbinden",
"lang_spotify_np": "Done:Vorlage für NowPlaying",
"lang_setting_npprovide": "NowPlaying Provider:{{set}}",
"lang_hisdata_frcreq": "Benötigte Mastodon 2.4.3 und höher",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten",
"lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.",
"lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft",
"lang_showontl_movetxt": "Dieses Konto wurde verschoben",
"lang_showontl_movebtn": "Auf dem neuen Konto fortfahren",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Folgt dir",
"lang_showontl_notf": "Benachrichtigung ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " hat dir geantwortet",
"lang_parse_faved": " favorisierte deinen Tröt",
"lang_parse_bted": " hat deinen Tröt verstärkt",
"lang_parse_btedsimple": " verstärkt",
"lang_parse_polled": "'s Umfrage",
"lang_parse_notftime": "Bearbeitet am",
"lang_parse_cwshow": "Anzeigen",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Automatisches Zusammenfalten",
"lang_parse_more": "Mehr",
"lang_parse_url": "URL-Analyse",
"lang_parse_tagTL": "Verlauf von {{tag}}",
"lang_parse_tagtoot": "Tröt mit {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Öffentlich",
"lang_parse_unlisted": "Nicht aufgeführt",
"lang_parse_private": "Privat",
"lang_parse_direct": "Direkt",
"lang_parse_clickcopy": "Klicken, um den Text dieses Tröts zu kopieren",
"lang_parse_clickcopyurl": "Klicken, um die URL dieses Tröts zu kopieren",
"lang_parse_trans": "Übersetzen nach Japanisch",
"lang_parse_replyto": "Auf diesen Tröt antworten",
"lang_parse_bt": "Diesen Tröt verstärken",
"lang_parse_fav": "Diesen Tröt favorisieren",
"lang_parse_quote": "Diesen Tröt zitieren",
"lang_parse_del": "Diesen Tröt löschen",
"lang_parse_pin": "Dieses Tröt fixieren",
"lang_parse_det": "Details über Ihr Hauptkonto.",
"lang_parse_redraft": "Löschen & Neuentwerfen",
"lang_parse_followed": "Folgt dir",
"lang_parse_clientop": "Aktion dieses Clients",
"lang_parse_clienttxt": " wird",
"lang_parse_clientno": "Nichts unternehmen",
"lang_parse_clientemp": "Hervorgehoben(/nicht hervorgehoben)",
"lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt",
"lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen",
"lang_parse_thread": "Konversation anzeigen",
"lang_parse_unknown": "Angehängte Datei",
"lang_parse_nsfw": "NSFW Medien",
"lang_parse_notffilter": "Benachrichtigungen dieses Benutzers anzeigen",
"lang_misskeyparse_renote": "Weiterleiten",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaktion",
"lang_misskeyparse_tagnostr": "Keine Streaming-API für Tag-Verläufe",
"lang_misskeyparse_listnostr": "Keine Streaming-API fpr Listen-Verläufe",
"lang_misskeyparse_home": "Startseite",
"lang_misskeyparse_followers": "Abonnent",
"lang_misskeyparse_specified": "Ausgewählte Benutzer",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " hat deinen folgenden Beitrag zurückgewiesen.",
"lang_misskeyparse_quoted": " zitierte deinen folgenden Beitrag.",
"lang_misskeyparse_reacted": " hat auf Ihren folgenden Beitrag reagiert.",
"lang_setting_time": "Zeitformat:{{set}}",
"lang_setting_theme": "Design:{{set}}",
"lang_setting_nsfw": "NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Antwortzähler:{{set}}",
"lang_setting_vis": "Standardsichtbarkeit:{{set}}",
"lang_setting_popup": "Popup-Benachrichtigung:{{set}}",
"lang_setting_off": "Aus",
"lang_setting_s": "s",
"lang_setting_box": "Standard-Tröt-Box-Aktion:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Auto-Falten:{{set1}} Zeilen und höher, {{set2}} Buchstaben und höher",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimale Breite:{{set}}",
"lang_setting_fixwidth": "TweetDeck feste Breite:{{set}}px",
"lang_setting_img": "Nach dem Posten eines Bildes:{{set}}",
"lang_setting_font": "Schriftart:{{set}}",
"lang_setting_default": "Standard-Schriftart",
"lang_setting_size": "Schriftgröße:{{set}}px",
"lang_setting_imgheight": "Bildhöhe:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag-Verlauf:{{set}}",
"lang_setting_boxConfirm": "Postfach:{{set}}",
"lang_setting_ul": "Muttersprache:{{set}}",
"lang_setting_notf": "System Benachrichtigungen:{{set}}",
"lang_setting_quote": "Zitierformat:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Aktionstasten verstecken:{{set}}",
"lang_setting_setasread": "Benachrichtigungs-Markierungen:{{set}}",
"lang_setting_main": "Standard-Konto:{{set}}",
"lang_setting_sec": "Zweite Tröt-Taste:{{set}}",
"lang_setting_ksref": "Tastaturkürzel werden aktualisiert.",
"lang_setting_nomuting": "Kein Client ist stumm.",
"lang_setting_notftest": " Benachrichtigungen testen ",
"lang_setting_notftestprof": "Ihr Symbol wird angezeigt.",
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht."
}

View File

@@ -21,9 +21,9 @@ var lang = {
//common/version.js
"lang_version_usever": "No update is found({{ver}})",
"lang_version_skipver": "Update was ignored.",
"lang_version_platform": "Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
"lang_version_platform_linux": "Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
"lang_version_platform_mac": "Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')",
//login
//login/login.js
"lang_login_noauth": "Show TL of unlogined accounts",
@@ -37,6 +37,7 @@ var lang = {
"lang_manager_def": "Default",
"lang_manager_none": "None",
"lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_logout": "Logout",
//post/bb-md.js
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
//post/emoji.js
@@ -46,6 +47,7 @@ var lang = {
//post/img.js
"lang_postimg_previewdis": "cannot preview",
"lang_postimg_aftupload": "You cannot change accounts after uploading.",
"lang_postimg_failupload": "Failed",
"lang_postimg_delete": "Delete this image.",
//post/post.js
"lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
@@ -64,6 +66,7 @@ var lang = {
"lang_status_unblock": "Unblock",
"lang_status_mute": "Mute",
"lang_status_unmute": "Unmute",
"lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
@@ -109,6 +112,8 @@ var lang = {
//tl/tl.js
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
//ui/img.js
"lang_img_DLDone": "Downloaded:",
//ui/layout.js
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@@ -118,7 +123,7 @@ var lang = {
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_reconnect": "Reload this column",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[No data]<br>F5/⌘+R to reload",
"lang_layout_dm": "Direct Message",
@@ -127,6 +132,8 @@ var lang = {
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Stack to the left",
"lang_layout_leftUnfold": "Dock on the right",
"lang_layout_deleteColumn":"Delete this column",
"lang_layout_deleteColumnDesc":"Delete this column",
//ui/sort.js
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",

View File

@@ -21,9 +21,9 @@ var lang = {
//common/version.js
"lang_version_usever": "お使いのバージョン{{ver}}は最新です。",
"lang_version_skipver": "アップデートはスキップされました。",
"lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとMicrosoft Storeからアップデートが提供され、アップデートの通知を出しません。",
"lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか?通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとSnapcraftからアップデートが提供され、アップデートの通知を出しません。",
"lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとアップデート通知を出しません。",
//login
//login/login.js
"lang_login_noauth": "認証せずに見る",
@@ -37,6 +37,7 @@ var lang = {
"lang_manager_def": "既定",
"lang_manager_none": "なし",
"lang_manager_godev": "MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
"lang_manager_logout": "ログアウト",
//post/bb-md.js
"lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
//post/emoji.js
@@ -46,6 +47,7 @@ var lang = {
//post/img.js
"lang_postimg_previewdis": "プレビューできません。",
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。",
"lang_postimg_failupload": "アップロードに失敗しました。",
"lang_postimg_delete": "この画像を削除します",
//post/post.js
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
@@ -64,6 +66,7 @@ var lang = {
"lang_status_unblock": "ブロック解除",
"lang_status_mute": "ミュート",
"lang_status_unmute": "ミュート解除",
"lang_status_redraftTitle": "削除して再編集",
"lang_status_redraft": "削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
"lang_status_emphas": "を強調します。リロードしてください。",
"lang_status_unemphas": "を強調解除します。リロードしてください。",
@@ -120,7 +123,7 @@ var lang = {
"lang_layout_linkana": "リンク解析",
"lang_layout_linkanades": "リンクの解析を切り替え",
"lang_layout_tts": "読み上げ",
"lang_layout_reconnect": "ストリーミング再接続",
"lang_layout_reconnect": "カラム再読込",
"lang_layout_headercolor": "TLヘッダーカラー",
"lang_layout_nodata": "[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
"lang_layout_dm": "ダイレクトメッセージ",
@@ -129,6 +132,8 @@ var lang = {
"lang_layout_excludingbt": "BT表示(OFF/BT除外/BTのみ)",
"lang_layout_leftFold": "左へ重ねる",
"lang_layout_leftUnfold": "右へ出す",
"lang_layout_deleteColumn": "カラム削除",
"lang_layout_deleteColumnDesc": "カラムを削除しますか?",
//ui/sort.js
"lang_sort_gothis": "このカラムへ",
"lang_sort_remthis": "このカラムを削除",
@@ -184,8 +189,8 @@ var lang = {
"lang_parse_det": "詳細(メインアカウント経由)",
"lang_parse_redraft": "このトゥートを削除して再編集",
"lang_parse_followed": "フォローされました。",
"lang_parse_clientop": "クライアント処理",
"lang_parse_clienttxt": "に対する処理を選択してください。",
"lang_parse_clientop": "クライアント操作",
"lang_parse_clienttxt": " に対する処理を選択してください。",
"lang_parse_clientno": "何もしない",
"lang_parse_clientemp": "強調表示/解除",
"lang_parse_clientmute": "ミュート",
@@ -197,7 +202,7 @@ var lang = {
"lang_parse_thread": "会話を表示",
"lang_parse_unknown": "添付ファイル",
"lang_parse_nsfw": "閲覧注意",
"lang_parse_notffilter":"このユーザーの通知のみを表示",
"lang_parse_notffilter": "このユーザーの通知のみを表示",
//misskey
"lang_misskeyparse_renote": "再投稿",
"lang_misskeyparse_renoteqt": "引用",

View File

@@ -13,12 +13,6 @@ var idata = {
"minohdon.jp_bbcode": "disabled",
"minohdon.jp_markdown": "disabled",
"minohdon.jp_glitch": "disabled",
"knzk.me": "instance",
"knzk.me_name": "Knzk",
"knzk.me_letters": "5000",
"knzk.me_bbcode": "disabled",
"knzk.me_markdown": "disabled",
"knzk.me_glitch": "disabled",
"mastodos.com": "instance",
"mastodos.com_name": "マストどす",
"mastodos.com_letters": "500",
@@ -90,16 +84,16 @@ var idata = {
"dtp-mstdn.jp_bbcode": "disabled",
"dtp-mstdn.jp_markdown": "disabled",
"dtp-mstdn.jp_glitch": "disabled",
"misskey.xyz": "misskey",
"misskey.xyz_name": "misskey.xyz",
"misskey.xyz_letters": "1000",
"misskey.xyz_bbcode": "disabled",
"misskey.xyz_markdown": "enabled",
"misskey.xyz_public": "Global",
"misskey.xyz_post": "Post",
"misskey.xyz_fav": " reacted your post.",
"misskey.xyz_bt": " reposted your post.",
"misskey.dev": "misskey",
"misskey.io": "misskey",
"misskey.io_name": "misskey.io",
"misskey.io_letters": "1000",
"misskey.io_bbcode": "disabled",
"misskey.io_markdown": "enabled",
"misskey.io_public": "Global",
"misskey.io_post": "Post",
"misskey.io_fav": " reacted your post.",
"misskey.io_bt": " reposted your post.",
"misskey.dev": "misskey.dev",
"misskey.dev_name": "misskey.dev",
"misskey.dev_letters": "1024",
"misskey.dev_bbcode": "disabled",
@@ -114,13 +108,7 @@ var idata = {
"precure.ml_bbcode": "disabled",
"precure.ml_markdown": "disabled",
"precure.ml_post": "キュア!",
"precure.ml_glitch": "disabled",
"best-friends.chat": "instance",
"best-friends.chat_name": "Best Friends",
"best-friends.chat_letters": "500",
"best-friends.chat_bbcode": "disabled",
"best-friends.chat_markdown": "disabled",
"best-friends.chat_glitch": "disabled",
"precure.ml_glitch": "disabled"
};
localStorage.setItem("instance", JSON.stringify(idata));

View File

@@ -40,9 +40,10 @@ function ck() {
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector();
multiSelector(false);
verck(ver);
$("#something-wrong img").attr("src", "../../img/thinkingdesk.png")
$(".stw").show()
$("#something-wrong img").attr("src", "../../img/thinking.svg")
}
}
}
@@ -289,7 +290,7 @@ function refresh(target, loadskip) {
localStorage.setItem("user-id_" + target, json["id"]);
localStorage.setItem("prof_" + target, avatar);
localStorage.setItem("follow_" + target, json["following_count"]);
obj[target] = ref;
console.log(obj)
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
if (!loadskip) {
@@ -403,7 +404,7 @@ function ckdb(acct_id) {
}
//アカウントを選択…を実装
function multiSelector() {
function multiSelector(parseC) {
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [];
@@ -450,7 +451,7 @@ function multiSelector() {
$("#local-button").removeClass("hide")
}
var profimg = acct.prof;
localStorage.setItem("prof_" + key, profimg);
//localStorage.setItem("prof_" + key, profimg);
if (!profimg) {
profimg = "../../img/missing.svg";
}
@@ -490,7 +491,9 @@ function multiSelector() {
$("#add-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option><option value="webview">Twitter</option>');
}
$('select').formSelect();
parseColumn(true);
if(!parseC){
parseColumn(null, true);
}
}
//バージョンエンコ

View File

@@ -146,114 +146,136 @@ function multiDel(target) {
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
//削除確認ダイアログ
if (confirm(obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm)) {
Object.keys(obj).forEach(function (key) {
var nk = key - 1;
//公開範囲(差分のみ)
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
localStorage.setItem("vis-memory-" + nk, oldvis);
Swal.fire({
title: lang.lang_manager_logout,
text: obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
Object.keys(obj).forEach(function (key) {
var nk = key - 1;
//公開範囲(差分のみ)
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
localStorage.setItem("vis-memory-" + nk, oldvis);
}
}
//独自ロケール
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
//アクセストークンとドメイン、プロフ(差分)
if (key > target) {
var olddom = localStorage.getItem("domain_" + key);
localStorage.setItem("domain_" + nk, olddom);
var oldat = localStorage.getItem("acct_" + key + "_at");
localStorage.setItem("acct_" + nk + "_at", oldat);
localStorage.setItem("name_" + nk, localStorage.getItem("name_" + key));
localStorage.setItem("user_" + target, localStorage.getItem("user_" + key));
localStorage.setItem("user-id_" + target, localStorage.getItem("user-id_" + key));
localStorage.setItem("prof_" + target, localStorage.getItem("prof_" + key));
}
}
//独自ロケール
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
//アクセストークンとドメイン、プロフ(差分)
if (key > target) {
var olddom = localStorage.getItem("domain_" + key);
localStorage.setItem("domain_" + nk, olddom);
var oldat = localStorage.getItem("acct_" + key + "_at");
localStorage.setItem("acct_" + nk + "_at", oldat);
localStorage.setItem("name_" + nk, localStorage.getItem("name_" + key));
localStorage.setItem("user_" + target, localStorage.getItem("user_" + key));
localStorage.setItem("user-id_" + target, localStorage.getItem("user-id_" + key));
localStorage.setItem("prof_" + target, localStorage.getItem("prof_" + key));
}
});
//とりあえず消す
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
load();
//カラムデータコンフリクト
var col = localStorage.getItem("column");
var oldcols = JSON.parse(col);
var newcols = [];
Object.keys(oldcols).forEach(function (key) {
var nk = key - 1;
var oldcol = oldcols[key];
if (target < oldcol.domain) {
var newdom = oldcol.domain - 1;
} else {
var newdom = oldcol.domain;
}
var type = oldcol.type;
//消した垢のコラムじゃないときコピー
if (target != oldcol.domain) {
var add = {
domain: newdom,
type: type
};
newcols.push(add);
}
});
var json = JSON.stringify(newcols);
localStorage.setItem("column", json);
});
//とりあえず消す
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
load();
//カラムデータコンフリクト
var col = localStorage.getItem("column");
var oldcols = JSON.parse(col);
var newcols = [];
Object.keys(oldcols).forEach(function (key) {
var nk = key - 1;
var oldcol = oldcols[key];
if (target < oldcol.domain) {
var newdom = oldcol.domain - 1;
} else {
var newdom = oldcol.domain;
}
var type = oldcol.type;
//消した垢のコラムじゃないときコピー
if (target != oldcol.domain) {
var add = {
domain: newdom,
type: type
};
newcols.push(add);
}
});
var json = JSON.stringify(newcols);
localStorage.setItem("column", json);
}
}
})
}
function multiDel2(target) {
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
if (confirm(obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm)) {
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
Object.keys(obj).forEach(function (key) {
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
var nk = key - 1;
localStorage.setItem("vis-memory-" + nk, oldvis);
}
}
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
refresh(key);
});
var col = localStorage.getItem("column");
if (!col) {
var obj = [{
domain: 0,
type: 'local'
}];
localStorage.setItem("card_0", "true");
Swal.fire({
title: lang.lang_manager_logout,
text: obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
} else {
var cobj = JSON.parse(col);
}
Object.keys(cobj).forEach(function (key) {
var column = cobj[key];
if (column.domain > target) {
var nk = key - 1;
column.domain = nk;
cobj[key] = column;
} else if (column.domain == target) {
localStorage.removeItem("card_" + tlid);
cobj.splice(key, 1);
localStorage.setItem("multi", json);
Object.keys(obj).forEach(function (key) {
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
var nk = key - 1;
localStorage.setItem("vis-memory-" + nk, oldvis);
}
}
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
refresh(key);
});
var col = localStorage.getItem("column");
if (!col) {
var obj = [{
domain: 0,
type: 'local'
}];
localStorage.setItem("card_0", "true");
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
} else {
var cobj = JSON.parse(col);
}
});
var json = JSON.stringify(column);
localStorage.setItem("column", json);
load();
}
Object.keys(cobj).forEach(function (key) {
var column = cobj[key];
if (column.domain > target) {
var nk = key - 1;
column.domain = nk;
cobj[key] = column;
} else if (column.domain == target) {
localStorage.removeItem("card_" + tlid);
cobj.splice(key, 1);
}
});
var json = JSON.stringify(column);
localStorage.setItem("column", json);
load();
}
})
}
//サポートインスタンス
@@ -282,7 +304,7 @@ function login(url) {
return;
}
if ($('#linux:checked').val() == "on") {
var red = "https://thedesk.top/hello.html"
var red = "urn:ietf:wg:oauth:2.0:oob"
} else {
var red = 'thedesk://manager';
}
@@ -486,7 +508,7 @@ function code(code) {
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
grant_type: "authorization_code",
redirect_uri: "https://thedesk.top/hello.html",
redirect_uri: "urn:ietf:wg:oauth:2.0:oob",
client_id: id,
client_secret: secret,
code: code

View File

@@ -10,16 +10,20 @@ $(document).on('click', 'a', e => {
if (url) {
urls = url.match(/https?:\/\/(.+)/);
//トゥートのURLぽかったら
toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if(!toot){
//Pleroma対策
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/);
}
//タグのURLぽかったら
var tags = [];
tags = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
/https:\/\/([^+_]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
//メンションっぽかったら
var ats = [];
ats = url.match(
/https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
/https:\/\/([^+_]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
);
if (toot) {
if (toot[1]) {
@@ -120,50 +124,50 @@ function playSound() {
volumeControl.gain.value = 0.8
source.start(0);
}
function nano() {
postMessage(["nano", null], "*")
}
onmessage = function (e) {
if (e.data[0] == "details") {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "udg") {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "media") {
media(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "post") {
post("pass")
} else if (e.data[0] == "toastSaved") {
M.toast({ html: lang.lang_img_DLDone + e.data[1][0] + '<button class="btn-flat toast-action" onclick="openFinder(\'' + e.data[1][1] + '\')">Show</button>', displayLength: 5000 })
} else if (e.data[0] == "toastMute") {
M.toast({ html: escapeHTML(e.data[1]) + lang.lang_parse_mute, displayLength: 2000 })
} else if (e.data[0] == "toastEmp") {
M.toast({ html: escapeHTML(e.data[1]) + lang.lang_status_emphas, displayLength: 2000 })
} else if (e.data[0] == "toastUnEmp") {
M.toast({ html: escapeHTML(e.data[1]) + lang.lang_status_unemphas, displayLength: 2000 })
} else if (e.data[0] == "parseColumn") {
parseColumn()
} else if (e.data[0] == "sortload") {
sortload()
} else if (e.data[0] == "exportSettingsCore") {
exportSettingsCore()
} else if (e.data[0] == "fontList") {
fontList(e.data[1])
} else if (e.data[0] == "customSoundSave") {
customSoundSave(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "ctLoadCore") {
ctLoadCore(e.data[1])
} else if (e.data[0] == "ctLoad") {
ctLoad()
} else if (e.data[0] == "customConnect") {
customConnect(e.data[1])
} else if (e.data[0] == "clearCustomImport") {
clearCustomImport()
} else if (e.data[0] == "npCore") {
npCore(e.data[1]);
} else if (e.data[0] == "renderMem") {
renderMem(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "updateProg") {
updateProg(e.data[1]);
} else if (e.data[0] == "updateMess") {
updateMess(e.data[1]);
} else if (e.data[0] == "renderAbout") {
if (e.data[0] == "details") {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "udg") {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "media") {
media(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "post") {
post("pass")
} else if (e.data[0] == "toastSaved") {
M.toast({ html: lang.lang_img_DLDone + e.data[1][0] + '<button class="btn-flat toast-action" onclick="openFinder(\'' + e.data[1][1] + '\')">Show</button>', displayLength: 5000 })
} else if (e.data[0] == "parseColumn") {
parseColumn(e.data[1])
} else if (e.data[0] == "exportSettingsCore") {
exportSettingsCore()
} else if (e.data[0] == "fontList") {
fontList(e.data[1])
} else if (e.data[0] == "customSoundSave") {
customSoundSave(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "ctLoadCore") {
ctLoadCore(e.data[1])
} else if (e.data[0] == "ctLoad") {
ctLoad()
} else if (e.data[0] == "customConnect") {
customConnect(e.data[1])
} else if (e.data[0] == "clearCustomImport") {
clearCustomImport()
} else if (e.data[0] == "npCore") {
npCore(e.data[1]);
} else if (e.data[0] == "renderMem") {
renderMem(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "updateProg") {
updateProg(e.data[1]);
} else if (e.data[0] == "updateMess") {
updateMess(e.data[1]);
} else if (e.data[0] == "renderAbout") {
renderAbout(e.data[1]);
}
} else if (e.data[0] == "alert") {
Swal.fire({
type: 'info',
title: e.data[1]
})
}
}

View File

@@ -1,3 +1,4 @@
document.title="TheDesk"
$.strip_tags = function (str, allowed) {
if (!str) {
return "";
@@ -170,4 +171,29 @@ $.mb_substr = function (str, begin, end) {
}
return ret;
};
//ソートするやつ
function object_array_sort(data, key, order, fn) {
var num_a = -1;
var num_b = 1;
if (order === 'asc') {
num_a = 1;
num_b = -1;
}
data = data.sort(function (a, b) {
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data);
}
localStorage.removeItem("errors");

View File

@@ -55,6 +55,8 @@ onmessage = function (e) {
ipc.send('theme-css-request', e.data[1]);
} else if (e.data[0] == "downloadButton") {
ipc.send('download-btn', e.data[1]);
} else if (e.data[0] == "nano") {
ipc.send('nano', null);
}
}
//version.js
@@ -64,9 +66,6 @@ ipc.on('platform', function (event, args) {
localStorage.setItem("bit", args[1])
localStorage.setItem("about", JSON.stringify([args[2], args[3], args[4]]))
})
ipc.on('winstore', function (event, arg) {
localStorage.setItem("winstore", arg)
})
ipc.on('reload', function (event, arg) {
location.reload();
@@ -79,9 +78,7 @@ ipc.on('shownotf', function (event, args) {
postMessage(["udg", [user, acct_id]], "*")
}
})
function nano() {
ipc.send('nano', "");
}
//first.js
ipc.on('custom-css-response', function (event, arg) {
if (arg == "") { return false; }
@@ -105,63 +102,6 @@ ipc.on('theme-css-response', function (event, arg) {
ipc.on('bmp-img-comp', function (event, b64) {
postMessage(["media", [b64[0], "image/png", b64[1]]], "*")
});
//post.js
ipc.on('dialogCWRender', function (event, arg) {
if (arg === 1) {
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
postMessage(["post", ""], "*")
} else if (arg === 2) {
postMessage(["post", ""], "*")
}
});
//parse.js
ipc.on('dialogClientRender', function (event, arg) {
if (arg === 1) {
var cli = localStorage.getItem("client_emp");
var obj = JSON.parse(cli);
if (!obj) {
var obj = [];
obj.push(name);
postMessage(["toastEmp", name], "*")
} else {
var can;
Object.keys(obj).forEach(function (key) {
var cliT = obj[key];
if (cliT != name && !can) {
can = false;
} else {
can = true;
obj.splice(key, 1);
postMessage(["toastUnEmp", name], "*")
}
});
if (!can) {
obj.push(name);
postMessage(["toastEmp", name], "*")
} else {
}
}
var json = JSON.stringify(obj);
localStorage.setItem("client_emp", json);
} else if (arg === 2) {
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if (!obj) {
obj = [];
}
obj.push(name);
var json = JSON.stringify(obj);
localStorage.setItem("client_mute", json);
postMessage(["toastMute", name], "*")
} else {
return;
}
parseColumn();
});
//ui,img.js
ipc.on('general-dl-prog', function (event, arg) {
console.log("Progress: " + arg);
@@ -171,31 +111,14 @@ ipc.on('general-dl-message', function (event, arg) {
console.log("saved")
postMessage(["toastSaved", [arg, argC]], "*")
})
//layout.js
ipc.on('column-del-reply', function (event, args) {
if (args[0] === 1) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
localStorage.removeItem("card_" + args[1]);
obj.splice(args[1], 1);
for (var i = 0; i < obj.length; i++) {
localStorage.setItem("card_" + i, "true");
localStorage.removeItem("catch_" + i);
}
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
postMessage(["parseColumn", ""], "*")
postMessage(["sortload", ""], "*")
}
})
//setting.js
ipc.on('langres', function (event, arg) {
location.href = "../" + lang + "/setting.html"
location.href = "../" + arg + "/setting.html"
});
ipc.on('exportSettingsFile', function (event, savedFiles) {
var exp = exportSettingsCore()
ipc.send('export', [savedFiles, JSON.stringify(exp)]);
alert("Done.")
postMessage(["alert", "Done"], "*")
//cards
//lang
});

533
app/js/platform/punycode.js Normal file
View File

@@ -0,0 +1,533 @@
/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */
var freeExports = typeof exports == 'object' && exports &&
!exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
!module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
if (
freeGlobal.global === freeGlobal ||
freeGlobal.window === freeGlobal ||
freeGlobal.self === freeGlobal
) {
root = freeGlobal;
}
/**
* The `punycode` object.
* @name punycode
* @type Object
*/
var punycode,
/** Highest positive signed 32-bit float value */
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
/** Bootstring parameters */
base = 36,
tMin = 1,
tMax = 26,
skew = 38,
damp = 700,
initialBias = 72,
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexPunycode = /^xn--/,
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
/** Convenience shortcuts */
baseMinusTMin = base - tMin,
floor = Math.floor,
stringFromCharCode = String.fromCharCode,
/** Temporary variable */
key;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map(array, fn) {
var length = array.length;
var result = [];
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
var parts = string.split('@');
var result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
var labels = string.split('.');
var encoded = map(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
var output = [],
counter = 0,
length = string.length,
value,
extra;
while (counter < length) {
value = string.charCodeAt(counter++);
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++);
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
/**
* Creates a string based on an array of numeric code points.
* @see `punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @name encode
* @param {Array} codePoints The array of numeric code points.
* @returns {String} The new Unicode string (UCS-2).
*/
function ucs2encode(array) {
return map(array, function(value) {
var output = '';
if (value > 0xFFFF) {
value -= 0x10000;
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
value = 0xDC00 | value & 0x3FF;
}
output += stringFromCharCode(value);
return output;
}).join('');
}
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
function basicToDigit(codePoint) {
if (codePoint - 48 < 10) {
return codePoint - 22;
}
if (codePoint - 65 < 26) {
return codePoint - 65;
}
if (codePoint - 97 < 26) {
return codePoint - 97;
}
return base;
}
/**
* Converts a digit/integer into a basic code point.
* @see `basicToDigit()`
* @private
* @param {Number} digit The numeric value of a basic code point.
* @returns {Number} The basic code point whose value (when used for
* representing integers) is `digit`, which needs to be in the range
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
* used; else, the lowercase form is used. The behavior is undefined
* if `flag` is non-zero and `digit` has no uppercase form.
*/
function digitToBasic(digit, flag) {
// 0..25 map to ASCII a..z or A..Z
// 26..35 map to ASCII 0..9
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
}
/**
* Bias adaptation function as per section 3.4 of RFC 3492.
* https://tools.ietf.org/html/rfc3492#section-3.4
* @private
*/
function adapt(delta, numPoints, firstTime) {
var k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
}
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
function decode(input) {
// Don't use UCS-2
var output = [],
inputLength = input.length,
out,
i = 0,
n = initialN,
bias = initialBias,
basic,
j,
index,
oldi,
w,
k,
digit,
t,
/** Cached calculation results */
baseMinusT;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (j = 0; j < basic; ++j) {
// if it's not a basic code point
if (input.charCodeAt(j) >= 0x80) {
error('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
// `index` is the index of the next character to be consumed.
// Decode a generalized variable-length integer into `delta`,
// which gets added to `i`. The overflow checking is easier
// if we increase `i` as we go, then subtract off its starting
// value at the end to obtain `delta`.
for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
if (index >= inputLength) {
error('invalid-input');
}
digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error('overflow');
}
i += digit * w;
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (digit < t) {
break;
}
baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error('overflow');
}
w *= baseMinusT;
}
out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output
output.splice(i++, 0, n);
}
return ucs2encode(output);
}
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
function encode(input) {
var n,
delta,
handledCPCount,
basicLength,
bias,
j,
m,
q,
k,
t,
currentValue,
output = [],
/** `inputLength` will hold the number of code points in `input`. */
inputLength,
/** Cached calculation results */
handledCPCountPlusOne,
baseMinusT,
qMinusT;
// Convert the input in UCS-2 to Unicode
input = ucs2decode(input);
// Cache the length
inputLength = input.length;
// Initialize the state
n = initialN;
delta = 0;
bias = initialBias;
// Handle the basic code points
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < 0x80) {
output.push(stringFromCharCode(currentValue));
}
}
handledCPCount = basicLength = output.length;
// `handledCPCount` is the number of code points that have been handled;
// `basicLength` is the number of basic code points.
// Finish the basic string - if it is not empty - with a delimiter
if (basicLength) {
output.push(delimiter);
}
// Main encoding loop:
while (handledCPCount < inputLength) {
// All non-basic code points < n have been handled already. Find the next
// larger one:
for (m = maxInt, j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
// but guard against overflow
handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < n && ++delta > maxInt) {
error('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer
for (q = delta, k = base; /* no condition */; k += base) {
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (q < t) {
break;
}
qMinusT = q - t;
baseMinusT = base - t;
output.push(
stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
);
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join('');
}
/**
* Converts a Punycode string representing a domain name or an email address
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
* it doesn't matter if you call it on a string that has already been
* converted to Unicode.
* @memberOf punycode
* @param {String} input The Punycoded domain name or email address to
* convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
function toUnicode(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name or an email address to
* Punycode. Only the non-ASCII parts of the domain name will be converted,
* i.e. it doesn't matter if you call it with a domain that's already in
* ASCII.
* @memberOf punycode
* @param {String} input The domain name or email address to convert, as a
* Unicode string.
* @returns {String} The Punycode representation of the given domain name or
* email address.
*/
function toASCII(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
/*--------------------------------------------------------------------------*/
/** Define the public API */
punycode = {
/**
* A string representing the current Punycode.js version number.
* @memberOf punycode
* @type String
*/
'version': '1.4.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode,
'encode': encode,
'toASCII': toASCII,
'toUnicode': toUnicode
};
/** Expose `punycode` */
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
typeof define == 'function' &&
typeof define.amd == 'object' &&
define.amd
) {
define('punycode', function() {
return punycode;
});
} else if (freeExports && freeModule) {
if (module.exports == freeExports) {
// in Node.js, io.js, or RingoJS v0.8.0+
freeModule.exports = punycode;
} else {
// in Narwhal or RingoJS v0.7.0-
for (key in punycode) {
punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
}
}
} else {
// in Rhino or a web browser
root.punycode = punycode;
}
}(this));

View File

@@ -120,6 +120,16 @@ function media(b64, type, no) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if (!json.id) {
todc();
$("#imgup").text("");
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$('select').formSelect();
$("#imgsel").show();
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false
}
var img = localStorage.getItem("img");
if (json.type.indexOf("image") != -1) {
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="' + json["id"] + '" onclick="deleteImage(\'' + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">';
@@ -205,17 +215,27 @@ element.addEventListener("paste", function (e) {
// 画像以外がペーストされたときのために、元に戻しておく
});
function deleteImage(key) {
if (!confirm(lang.lang_postimg_delete)) {
return false;
}
var media = $("#media").val();
var arr = media.split(",");
for (var i = 0; i < media.length; i++) {
if (arr[i] == key) {
arr.splice(i, 1);
break;
Swal.fire({
title: lang.lang_postimg_delete,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
var media = $("#media").val();
var arr = media.split(",");
for (var i = 0; i < media.length; i++) {
if (arr[i] == key) {
arr.splice(i, 1);
break;
}
}
$("#media").val(arr.join(","));
$('#preview [data-media=' + key + ']').remove();
}
}
$("#media").val(arr.join(","));
$('#preview [data-media=' + key + ']').remove();
})
}

View File

@@ -17,44 +17,43 @@ function post(mode, postvis) {
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id);
if (domain == "theboss.tech") {
if (~str.indexOf("#")) {
if (str.indexOf("#theboss_tech") == "-1") {
if (!confirm(lang.lang_post_tagTL)) {
return false;
}
}
}
}
if (domain == "dtp-mstdn.jp") {
if (~str.indexOf("#")) {
if (str.indexOf("#dtp") == "-1") {
if (!confirm(lang.lang_post_tagTL)) {
return false;
}
}
}
}
if (!localStorage.getItem("cw_sentence")) {
var cw_sent = 500;
} else {
var cw_sent = localStorage.getItem("cw_sentence");
}
if (!localStorage.getItem("cw_letters")) {
var cw_ltres = 500;
var cw_ltres = 7000;
} else {
var cw_ltres = localStorage.getItem("cw_letters");
}
if (domain != "kirishima.cloud") {
if (mode != "pass" && !$("#cw").hasClass("cw-avail") && (str.length > cw_sent || (str.split("\n").length - 1) > cw_ltres)) {
var plus = str.replace(/\n/g, "").slice(0, 10) + "...";
const options = {
type: 'info',
Swal.fire({
title: lang.lang_post_cwtitle,
message: lang.lang_post_cwtxt + plus,
buttons: [lang.lang_post_btn1, lang.lang_post_btn2, lang.lang_post_btn3]
}
postMessage(["dialogCW", options], "*")
text: lang.lang_post_cwtxt + plus,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_post_btn2,
cancelButtonText: lang.lang_post_btn3,
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
if (result.dismiss == "cancel") {
//btn3:sonomama
post("pass")
} else if (result.value) {
//btn2:auto-CW
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass")
}
})
return false;
}
}
@@ -91,22 +90,11 @@ function post(mode, postvis) {
} else {
var vis = $("#vis").text();
}
if (vis != "inherit" && vis != "local") {
toot.visibility = vis;
} else if (vis == "local") {
toot.status = str + "👁️";
}
//ここに非公開・未収載タグについてwarn
if (domain != "kirishima.cloud" && domain != "imastodon.net") {
if (~str.indexOf("#")) {
if (vis == "local" || vis == "unlisted" || vis == "direct" || vis == "private") {
if (!confirm(lang.lang_post_tagVis)) {
return false;
}
}
}
}
if ($("#cw").hasClass("cw-avail")) {
var spo = $("#cw-text").val();
cw();

View File

@@ -84,10 +84,10 @@ function rt(id, acct_id, remote) {
if ($("[toot-id=" + id + "]").hasClass("rted")) {
$("[toot-id=" + id + "]").removeClass("rted");
$(".rt_" + id).removeClass("teal-text");
$(".rt_" + id).removeClass("light-blue-text");
} else {
$("[toot-id=" + id + "]").addClass("rted");
$(".rt_" + id).addClass("teal-text");
$(".rt_" + id).addClass("light-blue-text");
}
} else {
M.toast({ html: lang.lang_status_btWarn, displayLength: 1000 })
@@ -116,15 +116,11 @@ function follow(acct_id, remote) {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var user = $("#his-acct").text();
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/following/" + flagm;
var user = $("#his-acct").text();
var ent = { "i": at, "userId": id }
} else if (remote == "true" && flag == "follow") {
var start = "https://" + domain + "/api/v1/follows";
var user = $("#his-acct").text();
var ent = { "uri": user }
} else {
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var ent = {}
}
@@ -183,7 +179,7 @@ function block(acct_id) {
}
//ミュート
function mute(acct_id) {
function muteDo(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
@@ -253,39 +249,50 @@ function del(id, acct_id) {
}
//redraft
function redraft(id, acct_id) {
if (confirm(lang.lang_status_redraft)) {
show();
del(id, acct_id);
$("#post-acct-sel").prop("disabled", true);
var medias = $("[toot-id=" + id + "]").attr("data-medias");
var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct = medias.split(",").length;
$("[toot-id=" + id + "] img.toot-img").each(function (i, elem) {
if (i < ct) {
var url = $(elem).attr("src");
console.log("Play back image data:" + url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
Swal.fire({
title: lang.lang_status_redraftTitle,
text: lang.lang_status_redraft,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
show();
del(id, acct_id);
$("#post-acct-sel").prop("disabled", true);
var medias = $("[toot-id=" + id + "]").attr("data-medias");
var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct = medias.split(",").length;
$("[toot-id=" + id + "] img.toot-img").each(function (i, elem) {
if (i < ct) {
var url = $(elem).attr("src");
console.log("Play back image data:" + url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
}
});
var html = $("[toot-id=" + id + "] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
localStorage.setItem("nohide", true);
show();
$("#textarea").val(html);
var cwtxt = $("[toot-id=" + id + "] .cw_text").html();
if (cwtxt != "") {
cwtxt = $.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
}
});
var html = $("[toot-id=" + id + "] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
localStorage.setItem("nohide", true);
show();
$("#textarea").val(html);
var cwtxt = $("[toot-id=" + id + "] .cw_text").html();
if (cwtxt != "") {
cwtxt = $.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
}
}
})
}
//ピン留め
function pin(id, acct_id) {

View File

@@ -66,7 +66,7 @@ input.addEventListener("focus", function () {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
suggest = "https://" + domain + "/api/v1/search?q=" + q
suggest = "https://" + domain + "/api/v2/search?q=" + q
if (suggest != oldSuggest) {
console.log("Try to get suggest at " + suggest)
fetch(suggest, {
@@ -81,18 +81,43 @@ input.addEventListener("focus", function () {
todo(error);
console.error(error);
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0] && tag) {
if (tag[1]) {
var tags = "";
var tags = [];
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
if (tag != q) {
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
'\')" class="pointer">#' + tag + '</a><br>';
var his = tag.history;
var uses = his[0].uses * 1 + his[1].uses * 1 + his[2].uses * 1 + his[3].uses * 1 + his[4].uses * 1 + his[5].uses * 1 + his[6].uses * 1;
tagHTML = '<br><a onclick="tagInsert(\'#' + escapeHTML(tag.name) + '\',\'#' + q + '\')" class="pointer">#' +
escapeHTML(tag.name) + '</a>&nbsp;' + uses + 'toot(s)'
var item = {
"uses": uses,
"html": tagHTML
}
tags.push(item)
});
var num_a = -1;
var num_b = 1;
tags = tags.sort(function (a, b) {
var x = a["uses"];
var y = b["uses"];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var ins = ""
var nev = false
Object.keys(tags).forEach(function (key7) {
ins = ins + tags[key7].html
if (key7 <= 0 && !nev) {
ins = ins + '<br>'
nev = true
}
});
$("#suggest").html(ins);
$("#right-side").show()
$("#suggest").html("Tags:<br>" + tags);
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
}

View File

@@ -58,7 +58,7 @@ function qt(id, acct_id, at, url) {
html = $.strip_tags(html);
$("#textarea").val("\n" + "@" + at + " " + html + "\n" + url);
}
$("#textarea").focus();
$("#post-acct-sel").val(acct_id);
$('select').formSelect();
$("#textarea").focus();
}

View File

@@ -155,7 +155,7 @@ function additionalIndv(tlid, acct_id, id) {
});
} else {
var id = $("[toot-id=" + id + "] .toot a").parents('.cvo').attr("toot-id");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
var start = "https://" + domain + "/api/v1/statuses/" + id;
fetch(start, {
method: 'GET',
headers: {
@@ -169,6 +169,7 @@ function additionalIndv(tlid, acct_id, id) {
todo(error);
console.error(error);
}).then(function (json) {
json = json.card;
//このリンク鳥やんけ、ってとき
if (json.provider_name == "Twitter") {
if (json.image) {

View File

@@ -82,7 +82,7 @@ function details(id, acct_id, tlid, mode) {
} else {
$("#tootmodal").attr("data-user", scn);
}
context(id, acct_id);
getContext(id, acct_id);
var dom = null;
if (!local) {
dom = scn.replace(/.+@/g, '');
@@ -99,7 +99,9 @@ function details(id, acct_id, tlid, mode) {
if ($("#toot-this div").hasClass("cvo")) {
$("#toot-this").removeClass("cvo");
} else {
$("#toot-this").addClass("cvo");
if(!$("#toot-this .cvo").hasClass("cvo")){
$("#toot-this").addClass("cvo");
}
}
if (!$("#activator").hasClass("active")) {
$('#det-col').collapsible('open', 4);
@@ -125,14 +127,7 @@ function replyTL(id, acct_id) {
})
}
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id;
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}
return false
}
fetch(start, i).then(function (response) {
return response.json();
@@ -155,27 +150,13 @@ function replyTL(id, acct_id) {
if (json[rep]) {
replyTL(json[rep][0], acct_id);
}
} else {
var templete = parse([json], '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
var rep = "in_reply_to_id";
if (json[rep]) {
replyTL(json[rep], acct_id);
}
}
});
}
//コンテクストってなんですか
function context(id, acct_id) {
function getContext(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
@@ -228,6 +209,14 @@ function context(id, acct_id) {
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .by_filter").removeClass("hide");
var templete = parse(json.ancestors, '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
}
@@ -513,7 +502,7 @@ function trans(tar, to) {
todo(error);
console.error(error);
}).then(function (text) {
$("#toot-this .additional").html('<span class="gray">' + text.text + '</span>');
$("#toot-this .additional").html('<span class="gray translate">' + text.text + '</span>');
});
}
//ブラウザで開く

View File

@@ -77,12 +77,12 @@ function catchToggle(tlid) {
localStorage.removeItem("catch_" + tlid);
$("#sta-del-" + tlid).text("Off");
$("#sta-del-" + tlid).css("color", 'red');
parseColumn();
parseColumn(tlid);
} else {
localStorage.setItem("catch_" + tlid, "true");
$("#sta-del-" + tlid).text("On");
$("#sta-del-" + tlid).css("color", '#009688');
parseColumn();
parseColumn(tlid);
}
}
function catchCheck(tlid) {
@@ -421,7 +421,7 @@ function exclude(key) {
} else {
}
localStorage.setItem("exclude-" + key, excludetxt)
parseColumn();
parseColumn(key);
}
function excludeCk(key, target) {
var exc = localStorage.getItem("exclude-" + key);
@@ -444,7 +444,7 @@ function checkNotfFilter(tlid){
}
function resetNotfFilter(tlid){
localStorage.setItem("exclude-" + tlid, "")
parseColumn();
parseColumn(tlid);
}
function notfFilter(id,tlid,acct_id){
var excludetxt = localStorage.getItem("exclude-" + tlid);
@@ -454,5 +454,5 @@ function notfFilter(id,tlid,acct_id){
excludetxt = "?account_id="+id
}
localStorage.setItem("exclude-" + tlid, excludetxt)
parseColumn();
parseColumn(tlid);
}

View File

@@ -50,14 +50,18 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
native = "yes";
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if (emp) {
var emp = JSON.parse(emp);
var empCli = localStorage.getItem("client_emp");
if (empCli) {
var empCli = JSON.parse(empCli);
} else {
var empCli = [];
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
if (mute) {
var mute = JSON.parse(mute);
var muteCli = localStorage.getItem("client_mute");
if (muteCli) {
var muteCli = JSON.parse(muteCli);
} else {
var muteCli = [];
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
@@ -65,17 +69,19 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
if (wordemp) {
var wordemp = JSON.parse(wordemp);
var wordempList = localStorage.getItem("word_emp");
if (wordempList) {
var wordempList = JSON.parse(wordempList);
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
var wordmuteList = localStorage.getItem("word_mute");
if (wordmuteList) {
var wordmuteList = JSON.parse(wordmuteList);
if (wordmuteList) {
wordmuteList = wordmuteList.concat(mutefilter);
}
} else {
wordmute = mutefilter;
wordmuteList = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
@@ -265,7 +271,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt=[
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.user.name + "(" + toot.user.username + ")" + what + "\n\n" + $.strip_tagstemp(toot.note.text),
toot.user.avatarUrl,
@@ -349,16 +355,16 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
viashow = "via-hide";
}
//強調チェック
Object.keys(emp).forEach(function (key6) {
var cli = emp[key6];
if (cli == via) {
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(mute).forEach(function (key7) {
var cli = mute[key7];
if (cli == via) {
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
@@ -495,6 +501,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%;"></a></span>';
} else if (media.type.indexOf("audio") !== -1) {
viewer = viewer + '<audio src="' +
purl + '" class="' + sense +
' toot-img pointer" style="width:100%;" controls></span>';
} else {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
@@ -571,7 +581,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var rt_app = "";
/*
if (toot.reblogged) {
var if_rt = "teal-text";
var if_rt = "light-blue-text";
var rt_app = "rted";
} else {
var if_rt = "";
@@ -581,16 +591,16 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
//アバター
var avatar = toot.user.avatarUrl;
//ワードミュート
if (wordmute) {
Object.keys(wordmute).forEach(function (key8) {
var worde = wordmute[key8];
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
if (worde) {
if (worde.tag) {
var word = worde.tag;
var wordList = worde.tag;
} else {
var word = worde
var wordList = worde
}
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tagstemp(content).match(regExp)) {
boostback = "hide by_filter";
}
@@ -598,13 +608,13 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
});
}
//ワード強調
if (wordemp) {
Object.keys(wordemp).forEach(function (key9) {
var word = wordemp[key9];
if (word) {
var word = word.tag;
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
content = content.replace(regExp, '<span class="emp">' + word + "</span>");
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>");
}
});
}
@@ -822,10 +832,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="misskeyreply(\'' + toot.id +
'\',\'' + acct_id + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i></a></div>' +
'\')" class="waves-effect waves-dark btn-flat rep-btn" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="renote(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_misskeyparse_renote + '"><i class="text-darken-3 fas fa-retweet ' +
'\')" class="waves-effect waves-dark btn-flat bt-btn" style="padding:0" title="' + lang.lang_misskeyparse_renote + '"><i class="text-darken-3 fas fa-retweet ' +
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct"></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["qt"] + ' ' + noauth + '"><a onclick="renoteqt(\'' + toot.id + '\',' + acct_id +
',\'misskey.xyz\',\'misskey.xyz\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_misskeyparse_renoteqt + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
@@ -910,7 +920,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt=[
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
@@ -969,7 +979,7 @@ function goGoogle(id) {
}
var misskeyws = []
var misskeywsstate = []
function connectMisskey(acct_id) {
function connectMisskey(acct_id, re) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "wss://" + domain +
@@ -988,10 +998,9 @@ function connectMisskey(acct_id) {
console.log([domain + ":Receive Streaming API:", data]);
var data = JSON.parse(mess.data)
var obj = data.body.body
var mute = [];
if (data.body.id.indexOf("notf:") !== -1) {
var obj = JSON.parse(mess.data).body;
console.log(obj);
var popup = localStorage.getItem("popup");
if (!popup) {
popup = 0;
@@ -1053,13 +1062,17 @@ function connectMisskey(acct_id) {
console.error("Error closing " + tlid);
console.error(error);
misskeywsstate[wsid] = false
connectMisskey(acct_id)
if(!re){
connectMisskey(acct_id, true)
}
return false;
};
misskeyws[wsid].onclose = function () {
console.warn("Closing " + tlid);
misskeywsstate[wsid] = false
connectMisskey(acct_id)
if(!re){
connectMisskey(acct_id, true)
}
return false;
};

View File

@@ -43,15 +43,15 @@ function mixtl(acct_id, tlid, type, delc, voice) {
timeline.splice(20);
}
var templete = "";
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix");
} else {
var mute = [];
}
Object.keys(timeline).forEach(function (key) {
var pkey = key * 1 + 1;
if (pkey < timeline.length) {
if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix");
} else {
var mute = [];
}
if (type == "integrated") {
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix");
} else if (type == "plus") {

View File

@@ -52,14 +52,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
native = "yes";
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if (emp) {
var emp = JSON.parse(emp);
var empCli = localStorage.getItem("client_emp");
if (empCli) {
var empCli = JSON.parse(empCli);
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
if (mute) {
var mute = JSON.parse(mute);
var muteCli = localStorage.getItem("client_mute");
if (muteCli) {
var muteCli = JSON.parse(muteCli);
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
@@ -67,17 +67,19 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
if (wordemp) {
var wordemp = JSON.parse(wordemp);
var wordempList = localStorage.getItem("word_emp");
if (wordempList) {
var wordempList = JSON.parse(wordempList);
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
var wordmuteList = localStorage.getItem("word_mute");
if (wordmuteList) {
var wordmuteList = JSON.parse(wordmuteList);
if (wordmuteList) {
wordmuteList = wordmuteList.concat(mutefilter);
}
} else {
wordmute = mutefilter;
wordmuteList = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
@@ -430,20 +432,24 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
viashow = "hide";
} else {
var via = escapeHTML(toot.application.name);
//強調チェック
Object.keys(emp).forEach(function (key6) {
var cli = emp[key6];
if (cli == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(mute).forEach(function (key7) {
var cli = mute[key7];
if (cli == via) {
boostback = "hide";
}
});
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";
@@ -475,8 +481,25 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
}
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
/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>';
@@ -515,64 +538,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
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 + '<span class="cbadge cbadge-hover" title="' + date(toot.poll.expires_at, 'absolute') +
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>';
}
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);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids = "";
@@ -588,8 +558,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (toot.sensitive && nsfw) {
var sense = "sensitive"
var blur = media.blurhash
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
if (blur) {
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
purl = parseBlur(blur)
var sense = ""
}
@@ -602,10 +572,13 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
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%;"></a></span>';
' 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 +
@@ -683,11 +656,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
} 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 + '\')" style="font-size:1rem;">lock</i>';
var can_rt = "hide";
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 + '\')" style="font-size:1rem;">mail</i>';
var can_rt = "hide";
var can_rt = "unvisible";
}
if (toot.account.acct == localStorage.getItem("user_" + acct_id)) {
var if_mine = "";
@@ -704,7 +677,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var fav_app = "";
}
if (toot.reblogged) {
var if_rt = "teal-text";
var if_rt = "light-blue-text";
var rt_app = "rted";
} else {
var if_rt = "";
@@ -724,17 +697,16 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var avatar = toot.account.avatar_static;
}
//ワードミュート
if (wordmute) {
Object.keys(wordmute).forEach(function (key8) {
var worde = wordmute[key8];
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
if (worde) {
if (worde.tag) {
var word = worde.tag;
var wordList = worde.tag;
} else {
var word = worde
var wordList = worde
}
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
console.log(regExp)
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
}
@@ -742,19 +714,73 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
});
}
//ワード強調
if (wordemp) {
Object.keys(wordemp).forEach(function (key9) {
var word = wordemp[key9];
if (word) {
var word = word.tag;
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
content = content.replace(regExp, '<span class="emp">' + word + "</span>");
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" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
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 = "";
}
@@ -792,7 +818,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
for (var i = 0; i < tickerdata.length; i++) {
var value = tickerdata[i];
if (value.domain == thisdomain) {
var tickerdom = '<div style="background:linear-gradient(to left,transparent, ' + value.bg + ' 96%) !important; color:' + value.text + ';width:100%; height:0.9rem; font-size:0.8rem;"><img draggable="false" src="' + value.image + '" style="height:100%;"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + '</span></div>';
var tickerdom = '<div style="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%;"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + '</span></div>';
break;
}
}
@@ -838,11 +864,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="re(\'' + toot.id +
'\',\'' + to_mention + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'\')" 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" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas fa-retweet ' +
'\')" 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 +
@@ -850,22 +876,21 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'\')" 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" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas text-darken-3 fa-star' +
'\')" 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" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
')" 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" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
')" 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" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'<span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" onclick="client(\'' + $.strip_tags(via) + '\')" title="via ' + $.strip_tags(via) + '">via ' +
')" 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><div class="area-side ' + mouseover + '"><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>' +
'</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>' +
@@ -889,119 +914,122 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var datetype = localStorage.getItem("datetype");
Object.keys(obj).forEach(function (key) {
var toot = obj[key];
console.log(["Parsing", toot])
if (!toot.username) {
var raw = toot;
toot = toot.account;
var notf = true;
} else {
var notf = false;
}
if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (auth == "request") {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else {
var authhtml = "";
}
var ftxt = lang.lang_parse_followed;
if (!locale && localStorage.getItem("followlocale_" + acct_id)) {
ftxt = localStorage.getItem("followlocale_" + acct_id);
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>';
} else {
var notftext = "";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
M.toast({ html: escapeHTML(toot.display_name) + ":" + ftxt, displayLength: popup * 1000 })
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
if (toot) {
console.log(["Parsing", toot])
if (!toot.username) {
var raw = toot;
toot = toot.account;
var notf = true;
} else {
var notf = false;
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
};
var domain = localStorage.getItem("domain_" + acct_id);
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (auth == "request") {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else {
var authhtml = "";
}
var ftxt = lang.lang_parse_followed;
if (!locale && localStorage.getItem("followlocale_" + acct_id)) {
ftxt = localStorage.getItem("followlocale_" + acct_id);
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>';
} else {
var notftext = "";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
M.toast({ html: escapeHTML(toot.display_name) + ":" + ftxt, displayLength: popup * 1000 })
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
};
var domain = localStorage.getItem("domain_" + acct_id);
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
}
}
if (toot.display_name) {
var dis_name = escapeHTML(toot.display_name);
} else {
var dis_name = toot.username;
}
//ネイティブ通知
if (toot.display_name) {
var dis_name = escapeHTML(toot.display_name);
} else {
var dis_name = toot.username;
}
//ネイティブ通知
if (toot.emojis) {
var actemojick = toot.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
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");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (toot.avatar) {
var avatar = toot.avatar;
} else {
var avatar = "../../img/missing.svg";
if (toot.emojis) {
var actemojick = toot.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
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");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (toot.avatar) {
var avatar = toot.avatar;
} else {
var avatar = "../../img/missing.svg";
}
templete = templete +
'<div class="cvo" style="padding-top:5px;" user-id="' + toot.id + '"><div class="area-notice">' +
notftext +
'</div><div class="area-icon"><a onclick="udg(\'' + toot.id + '\',' +
acct_id + ');" user="' + toot.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar + '" width="40" class="prof-img" user="' + toot
.acct + '"></a></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;user-select:auto; cursor:text;"> @' +
toot.acct + locked + '</span>' +
'</div>' +
'</div>' +
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
toot.following_count +
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
'</div>' + authhtml +
'</div>' +
'</div>' +
'</div>';
}
templete = templete +
'<div class="cvo" style="padding-top:5px;" user-id="' + toot.id + '"><div class="area-notice">' +
notftext +
'</div><div class="area-icon"><a onclick="udg(\'' + toot.id + '\',' +
acct_id + ');" user="' + toot.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar + '" width="40" class="prof-img" user="' + toot
.acct + '"></a></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;user-select:auto; cursor:text;"> @' +
toot.acct + locked + '</span>' +
'</div>' +
'</div>' +
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
toot.following_count +
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
'</div>' + authhtml +
'</div>' +
'</div>' +
'</div>';
});
return templete;
@@ -1010,13 +1038,61 @@ function userparse(obj, auth, acct_id, tlid, popup) {
function client(name) {
if (name != "Unknown") {
//聞く
const options = {
type: 'info',
Swal.fire({
title: lang.lang_parse_clientop,
message: name + lang.lang_parse_clienttxt,
buttons: [lang.lang_parse_clientno, lang.lang_parse_clientemp, lang.lang_parse_clientmute]
}
postMessage(["dialogClient", options], "*")
text: name + lang.lang_parse_clienttxt,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_parse_clientmute,
cancelButtonText: lang.lang_parse_clientemp,
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
if (result.dismiss == "cancel") {
//Emp
var cli = localStorage.getItem("client_emp");
var obj = JSON.parse(cli);
if (!obj) {
var obj = [];
obj.push(name);
M.toast({ html: escapeHTML(name) + lang.lang_status_emphas, displayLength: 2000 })
} else {
var can;
Object.keys(obj).forEach(function (key) {
var cliT = obj[key];
if (cliT != name && !can) {
can = false;
} else {
can = true;
obj.splice(key, 1);
M.toast({ html: escapeHTML(name) + lang.lang_status_unemphas, displayLength: 2000 })
}
});
if (!can) {
obj.push(name);
M.toast({ html: escapeHTML(name) + lang.lang_status_emphas, displayLength: 2000 })
} else {
}
var json = JSON.stringify(obj);
localStorage.setItem("client_emp", json);
parseColumn()
}
} else if (result.value) {
//Mute
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if (!obj) {
obj = [];
}
obj.push(name);
var json = JSON.stringify(obj);
localStorage.setItem("client_mute", json);
M.toast({ html: escapeHTML(name) + lang.lang_parse_mute, displayLength: 2000 })
parseColumn()
}
})
}
}

View File

@@ -89,8 +89,9 @@ function voteMastodonrefresh(acct_id, id) {
var start = "https://" + domain + "/api/v1/polls/" + id;
httpreqd.open('GET', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.setRequestHeader('Authorization', 'Bearer ' + at);
httpreqd.responseType = 'json';
httpreqd.send(JSON.stringify({ i: at, noteId: id }));
httpreqd.send();
httpreqd.onreadystatechange = function () {
if (httpreqd.readyState == 4) {
var json = httpreqd.response;
@@ -109,7 +110,7 @@ function voteMastodonrefresh(acct_id, id) {
}
poll = poll + '<div class="pointer vote vote_' + acct_id + '_' + json.id + '_' + keyc + '" onclick="' + votesel + '">' + escapeHTML(choice.title) + '<span class="vote_' + acct_id + '_' + json.id + '_result ' + result_hide + '">(' + choice.votes_count + ')</span></div>';
});
poll = poll + myvote + '<span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
poll = poll + myvote + '<a onclick="voteMastodonrefresh(\'' + acct_id + '\',\'' + json.id + '\')" class="pointer">' + lang.lang_manager_refresh + '</a><span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
'"><i class="far fa-calendar-times"></i>' +
date(json.expires_at, datetype) + '</span>';
$('.vote_' + acct_id + '_' + json.id).html(poll)

View File

@@ -56,12 +56,12 @@ function voiceToggle(tlid) {
speechSynthesis.cancel()
$("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color", 'red');
parseColumn();
parseColumn(tlid);
} else {
localStorage.setItem("voice_" + tlid, "true");
$("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color", '#009688');
parseColumn();
parseColumn(tlid);
}
}
function voiceCheck(tlid) {

View File

@@ -1,12 +1,13 @@
//検索
//検索ボックストグル
function searchMenu() {
$("#src-contents").html("");
trend();
$("#left-menu div").removeClass("active");
$("#searchMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#src-box").removeClass("hide");
$('ul.tabs').tabs('select_tab', 'src-sta');
$("#src-contents").html("");
//$('ul.tabs').tabs('select_tab', 'src-sta');
}
//検索取得
@@ -54,7 +55,7 @@ function src(mode) {
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
} else {
tags = tags + graphDraw(tag);
tags = tags + graphDraw(tag, acct_id);
}
});
@@ -63,12 +64,12 @@ function src(mode) {
//トゥート
if (json.statuses[0]) {
var templete = parse(json.statuses, '', acct_id);
$("#src-contents").append("Mentions<br>" + templete);
$("#src-contents").append("<br>Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts, '', acct_id);
$("#src-contents").append("Accounts<br>" + templete);
$("#src-contents").append("<br>Accounts<br>" + templete);
}
jQuery("time.timeago").timeago();
});
@@ -85,7 +86,7 @@ function tsAdd(q) {
obj.push(add);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
parseColumn('add');
}
function tootsearch(tlid, q) {
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
@@ -164,7 +165,7 @@ function moreTs(tlid, q) {
jQuery("time.timeago").timeago();
});
}
function graphDraw(tag) {
function graphDraw(tag, acct_id) {
var tags = "";
var his = tag.history;
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
@@ -177,12 +178,12 @@ function graphDraw(tag) {
var zero = 50 - (his[0].uses / max * 50);
if (max === 0) {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot(s)&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}
@@ -192,4 +193,49 @@ function graphDraw(tag) {
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
*/
function trend(){
console.log("get trend")
$("#src-contents").html("");
var acct_id = $("#src-acct-sel").val();
if(acct_id=="tootsearch"){
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/trends"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
//todo(error);
console.error(error);
}).then(function(json) {
var tags = "";
Object.keys(json).forEach(function(keye) {
var tag = json[keye];
var his=tag.history;
var max=Math.max.apply(null, [his[0].uses,his[1].uses,his[2].uses,his[3].uses,his[4].uses,his[5].uses,his[6].uses]);
var six=50-(his[6].uses/max*50);
var five=50-(his[5].uses/max*50);
var four=50-(his[4].uses/max*50);
var three=50-(his[3].uses/max*50);
var two=50-(his[2].uses/max*50);
var one=50-(his[1].uses/max*50);
var zero=50-(his[0].uses/max*50);
tags = '<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'<g><path d="M0,'+six+' L10,'+five+' 20,'+four+' 30,'+three+' 40,'+two+' 50,'+one+' 60,'+zero+'" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people+"<br><br>";
$("#src-contents").append(tags);
});
});
}

View File

@@ -20,7 +20,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
obj.push(add);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
parseColumn('add');
return;
}
@@ -425,6 +425,11 @@ function moreload(type, tlid) {
todo(error);
console.error(error);
}).then(function (json) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), type);
} else {
var mute = [];
}
if (misskey) {
var templete = misskeyParse(json, '', acct_id, tlid, "", mute);
} else {
@@ -819,4 +824,40 @@ function reconnector(tlid, type, acct_id, data, mode) {
M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 })
}
function columnReload(tlid, type){
$("#notice_icon_" + tlid).addClass("red-text");
if (type == "mix" || type == "integrated" || type == "plus") {
if (localStorage.getItem("voice_" + tlid)) {
var voice = true;
} else {
var voice = false;
}
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), type);
} else {
var mute = [];
}
var wssh = localStorage.getItem("wssH_" + tlid);
websocketHome[wssh].close();
var wssl = localStorage.getItem("wssL_" + tlid);
websocketLocal[wssl].close();
parseColumn(tlid)
} else if (type == "notf") {
notfColumn(acct_id, tlid, "")
} else {
var wss = localStorage.getItem("wss_" + tlid);
websocket[wss].close();
if (localStorage.getItem("voice_" + tlid)) {
var voice = true;
} else {
var voice = false;
}
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), type);
} else {
var mute = [];
}
parseColumn(tlid)
}
}
strAliveInt()

View File

@@ -20,7 +20,11 @@ $('.type').click(function () {
$("#type-sel").val($(this).attr("data-type"))
})
//最初、カラム変更時に発火
function parseColumn(dontclose) {
function parseColumn(target, dontclose) {
if (target === 0) {
//this is kuso
target = "zero"
}
console.log("%c Parse column", "color:red;font-size:125%");
var size = localStorage.getItem("size");
if (size) {
@@ -31,7 +35,7 @@ function parseColumn(dontclose) {
if (localStorage.getItem("menu-done")) {
$("#fukidashi").addClass("hide")
}
if (!dontclose) {
if (!dontclose && !target) {
tlCloser();
}
@@ -55,7 +59,7 @@ function parseColumn(dontclose) {
var domain = localStorage.getItem("domain_" + key);
if (localStorage.getItem("mode_" + domain) == "misskey") {
localStorage.removeItem("misskey_wss_" + key)
connectMisskey(key)
connectMisskey(key, false)
}
});
}
@@ -76,13 +80,36 @@ function parseColumn(dontclose) {
} else {
var obj = JSON.parse(col);
}
if ($("#timeline-container").length) {
$("#timeline-container").html("");
var numtarget = false
if (target == "add") {
var tlidtar = obj.length - 1
obj = [obj[tlidtar]]
} else if (target) {
var tlidtar = target
if (target == "zero") {
target = 0
}
obj = [obj[target]]
numtarget = true
} else {
var tlidtar = null
if ($("#timeline-container").length) {
$("#timeline-container").html("");
}
}
var basekey = 0;
for (var key = 0; key < obj.length; key++) {
var next = key + 1;
//acctって言いながらタイムライン
var acct = obj[key];
if (tlidtar) {
if (tlidtar == "zero") {
key = 0
} else {
key = tlidtar
}
}
if (acct.type == "notf") {
var notf_attr = ' data-notf=' + acct.domain;
var if_notf = "hide";
@@ -183,8 +210,10 @@ function parseColumn(dontclose) {
}
if (!acct.left_fold) {
basekey = key;
var basehtml = '<div style="' + css + '" class="box ' + animecss + '" id="timeline_box_' + basekey + '_parentBox"></div>';
$("#timeline-container").append(basehtml);
if (!numtarget) {
var basehtml = '<div style="' + css + '" class="box ' + animecss + '" id="timeline_box_' + basekey + '_parentBox"></div>';
$("#timeline-container").append(basehtml);
}
var left_hold = '<a onclick="leftFoldSet(' + key + ')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_leftFold + '">view_agenda</i></a>' + lang.lang_layout_leftFold + '</span><br>';
} else {
var left_hold = '<a onclick="leftFoldRemove(' + key + ')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_leftUnfold + '">view_column</i></a>' + lang.lang_layout_leftUnfold + '</span><br>';
@@ -220,10 +249,14 @@ function parseColumn(dontclose) {
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_linkanades + '">link</i><span id="sta-card-' +
key + '">On</span></a>' + lang.lang_layout_linkana + '<br><a onclick="voiceToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_tts + '">hearing</i><span id="sta-voice-' +
key + '">On</span></a>' + lang.lang_layout_tts + 'TL<br><a onclick="reconnector(' + key +
',\'' + acct.type + '\',\'' + acct.domain + '\',\'' + escapeHTML(acct.data) + '\')" class="setting nex ' + if_notf + ' ' + if_misskey_hide + '"><i class="material-icons waves-effect nex ' + if_notf + '" title="' + lang.lang_layout_reconnect + '">low_priority</i></a><span class="' + if_notf + '">' + lang.lang_layout_reconnect + '</span><br>' + lang.lang_layout_headercolor + '<br><div id="picker_' + key + '" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
key + ',\'' + acct.type + '\'">On</span></a>' + lang.lang_layout_tts + 'TL<br><a onclick="columnReload(' + key +
')" class="setting nex ' + if_notf + ' ' + if_misskey_hide + '"><i class="material-icons waves-effect nex ' + if_notf + '" title="' + lang.lang_layout_reconnect + '">refresh</i></a><span class="' + if_notf + '">' + lang.lang_layout_reconnect + '</span><br>' + lang.lang_layout_headercolor + '<br><div id="picker_' + key + '" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
'" class="tl ' + acct.type + '-timeline " tlid="' + key + '" data-type="' + acct.type + '" data-acct="' + acct.domain + '" data-const="' + acct.type + '_' + acct.domain + '"><div id="landing_' + key + '" style="text-align:center">' + lang.lang_layout_nodata + '</div></div></div>'
$('#timeline_box_' + basekey + '_parentBox').append(html);
if (numtarget) {
$('timeline_box_' + key + '_box').html(html)
} else {
$('#timeline_box_' + basekey + '_parentBox').append(html)
}
localStorage.removeItem("pool_" + key);
if (acct.data) {
var data = acct.data;
@@ -257,6 +290,7 @@ function parseColumn(dontclose) {
$("#bottom").removeClass("reverse");
$(".leftside").removeClass("reverse");
}
$("#bottom").removeClass("hide");
if (localStorage.getItem("sec") && localStorage.getItem("sec") != "nothing") {
secvis(localStorage.getItem("sec"));
}
@@ -336,7 +370,7 @@ function addColumn() {
localStorage.setItem("column", json);
}
parseColumn();
parseColumn('add');
}
function addselCk() {
var acct = $("#add-acct-sel").val();
@@ -364,8 +398,28 @@ function addselCk() {
function removeColumn(tlid) {
$("#sort-box").addClass("hide");
$("#sort-box").removeClass("show");
//聞く
postMessage(["columnDel", tlid], "*")
Swal.fire({
title: lang.lang_layout_deleteColumn,
text: lang.lang_layout_deleteColumnDesc,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
obj.splice(tlid, 1);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
sortLoad()
$("#timeline_box_" + tlid + "_parentBox").remove()
}
$("#sort-box").removeClass("hide");
$("#sort-box").addClass("show");
});
}
//設定トグル

View File

@@ -39,6 +39,7 @@ function show() {
$('#post-box').css("left", left + "px")
$('#post-box').css("top", top + "px")
$('#post-box').fadeIn();
$('#textarea').characterCounter();
}
$(function () {
@@ -69,7 +70,6 @@ if (location.search) {
var mode = m[1];
var codex = m[2];
if (mode == "share") {
console.log(codex);
$('textarea').focus();
$("#textarea").val(decodeURI(codex));
show();
@@ -83,15 +83,20 @@ $('#posttgl').click(function (e) {
} else {
hide();
}
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
});
$("#timeline-container,#group").click(function (e) {
if (localStorage.getItem("box") != "absolute") {
if ($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")) {
hide();
}
}
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
localStorage.removeItem("nohide")
});
$('#textarea,#cw-text').focusout(function (e) {
@@ -100,4 +105,7 @@ $('#textarea,#cw-text').focusout(function (e) {
localStorage.removeItem("nohide")
}
//setTimeout(remove, 100);
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
});

View File

@@ -23,13 +23,22 @@ var tlView = new Vue({
data: { config: tlConstruction },
methods: {
complete: function (i, val) {
var ls = tlView.config[i].storage;
if (!val) {
var id = tlView.config[i].id;
var val = $("#" + id).val()
var ls = tlView.config[i];
if (val) {
localStorage.setItem(ls.storage, val)
} else {
if (!ls.data) {
ls = [ls]
} else {
ls = ls.data
}
for (var j = 0; j < ls.length; j++) {
M.toast({ html: 'Complete', displayLength: 3000 })
var id = ls[j].id;
var val = $("#" + id).val()
localStorage.setItem(ls[j].storage, val)
}
}
M.toast({ html: 'Complete', displayLength: 3000 })
localStorage.setItem(ls, val)
return true
}
}
@@ -39,13 +48,22 @@ var postView = new Vue({
data: { config: postConstruction, kirishima: localStorage.getItem('kirishima') },
methods: {
complete: function (i, val) {
var ls = postView.config[i].storage;
M.toast({ html: 'Complete', displayLength: 3000 })
if (!val) {
var id = postView.config[i].id;
var val = $("#" + id).val()
var ls = postView.config[i];
if (val) {
localStorage.setItem(ls.storage, val)
} else {
if (!ls.data) {
ls = [ls]
} else {
ls = ls.data
}
for (var j = 0; j < ls.length; j++) {
M.toast({ html: 'Complete', displayLength: 3000 })
var id = ls[j].id;
var val = $("#" + id).val()
localStorage.setItem(ls[j].storage, val)
}
}
localStorage.setItem(ls, val)
return true
}
}
@@ -96,15 +114,31 @@ function load() {
var max = tlView.config.length;
for (var i = 0; i < max; i++) {
var ls = tlView.config[i].storage;
if (localStorage.getItem(ls)) {
tlView.config[i].setValue = localStorage.getItem(ls)
if (ls) {
if (localStorage.getItem(ls)) {
tlView.config[i].setValue = localStorage.getItem(ls)
}
} else {
ls = tlView.config[i].data
for (var j = 0; j < ls.length; j++) {
if(localStorage.getItem(tlView.config[i].data[j].storage)){
tlView.config[i].data[j].setValue = localStorage.getItem(tlView.config[i].data[j].storage)
}
}
}
}
var max = postView.config.length;
for (var i = 0; i < max; i++) {
var ls = postView.config[i].storage;
if (localStorage.getItem(ls)) {
postView.config[i].setValue = localStorage.getItem(ls)
if (ls) {
if (localStorage.getItem(ls)) {
postView.config[i].setValue = localStorage.getItem(ls)
}
} else {
ls = postView.config[i].data
for (var j = 0; j < ls.length; j++) {
postView.config[i].data[j].setValue = localStorage.getItem(ls[j].storage)
}
}
}
if (localStorage.getItem("imas")) {
@@ -217,10 +251,19 @@ function changelang(lang) {
postMessage(["lang", lang], "*")
}
function exportSettings() {
if (!confirm(lang.lang_setting_exportwarn)) {
return false;
}
postMessage(["exportSettings", ""], "*")
Swal.fire({
title: lang.lang_setting_exportwarn,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
postMessage(["exportSettings", ""], "*")
}
})
}
function exportSettingsCore() {
var exp = {};
@@ -283,10 +326,19 @@ function exportSettingsCore() {
return exp;
}
function importSettings() {
if (!confirm(lang.lang_setting_importwarn)) {
return false;
}
postMessage(["importSettings", ""], "*")
Swal.fire({
title: lang.lang_setting_importwarn,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
postMessage(["importSettings", ""], "*")
}
})
}
function importSettingsCore(arg) {
var obj = JSON.parse(arg);
@@ -375,7 +427,10 @@ function importSettingsCore(arg) {
}
location.href = "index.html";
} else {
alert("Error.")
Swal.fire({
type: 'error',
title: 'Error'
})
}
}
function savefolder() {
@@ -576,7 +631,10 @@ function customImp() {
if (JSON5.parse(json)) {
postMessage(["themeJsonCreate", json], "*")
} else {
alert("Error")
Swal.fire({
type: 'error',
title: 'Error'
})
}
}
function clearCustomImport() {
@@ -601,7 +659,6 @@ window.onload = function () {
checkSpotify();
voiceSettingLoad();
oksload();
npprovider();
ctLoad()
};

View File

@@ -1,953 +0,0 @@
//設定(setting.html)で読む
var envView = new Vue({
el: '#env-view',
data: {config:envConstruction,value:envValue},
method: {
settings: function (index) {
return true
}
}
});
//設定ボタン押した。
function settings() {
var dd = $("[name=time]:checked").val();
var dt = $("[for="+dd+"]").text();
if (dd != localStorage.getItem("datetype")) {
Materialize.toast(lang.lang_setting_time.replace("{{set}}" ,dt), 3000);
}
localStorage.setItem("datetype", dd);
var cd = $("[name=theme]:checked").val();
var ct = $("[for="+cd+"]").html();
if(cd=="custom" && !$("#custom-sel-sel").val()){
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
}else{
if (cd != localStorage.getItem("theme")) {
Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000);
}
//テーマはこの場で設定
themes(cd);
localStorage.setItem("theme", cd);
}
var nd = $("[name=nsfw]:checked").val();
var nt = $("[for=n_"+nd+"]").text();
if (nd != localStorage.getItem("nsfw")) {
Materialize.toast(lang.lang_setting_nsfw.replace("{{set}}" ,nt), 3000);
}
localStorage.setItem("nsfw", nd);
var cwd = $("[name=cw]:checked").val();
var cwt = $("[for=c_"+cwd+"]").text();
if (cwd != localStorage.getItem("cw")) {
Materialize.toast(lang.lang_setting_cw.replace("{{set}}" ,cwt), 3000);
}
localStorage.setItem("cw", cwd);
var cwtd = $("#cw-text").val();
if (cwtd != localStorage.getItem("cw-text")) {
Materialize.toast(lang.lang_setting_cwtext.replace("{{set}}" ,cwtd), 3000);
}
localStorage.setItem("cw-text", cwtd);
var cwsd = $("[name=cws]:checked").val();
var cwst = $("[for=cws_"+cwsd+"]").text();
if (cwsd != localStorage.getItem("always-cw")) {
Materialize.toast(lang.lang_setting_cws.replace("{{set}}" ,cwst), 3000);
}
localStorage.setItem("always-cw", cwsd);
var rpd = $("[name=rp]:checked").val();
var rpt = $("[for=c_"+cwd+"]").text();
if (rpd != localStorage.getItem("replyct")) {
Materialize.toast(lang.lang_setting_rp.replace("{{set}}" ,rpt), 3000);
}
localStorage.setItem("replyct", rpd);
var visd = $("[name=vis]:checked").val();
var vist = $("[for="+visd+"]").text();
if (visd != localStorage.getItem("vis")) {
Materialize.toast(lang.lang_setting_vis.replace("{{set}}" ,vist), 3000);
}
localStorage.setItem("vis", visd);
var popd = $("#popup").val();
if (popd > 0 && popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,popd+lang.lang_setting_s), 3000);
} else if (popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,lang.lang_setting_off), 3000);
}
localStorage.setItem("popup", popd);
var gifd = $("[name=gif]:checked").val();
var gift = $("[for=g_"+gifd+"]").text();
if (gifd != localStorage.getItem("gif")) {
Materialize.toast(lang.lang_setting_gif.replace("{{set}}" ,gift), 3000);
}
localStorage.setItem("gif", gifd);
var sentd = $("#sentence").val();
var ltrd = $("#letters").val();
if (sentd != localStorage.getItem("sentence") || ltrd != localStorage.getItem("letters")) {
Materialize.toast(lang.lang_setting_selt.replace("{{set1}}" ,sentd).replace("{{set2}}" ,ltrd), 3000);
}
localStorage.setItem("sentence", sentd);
localStorage.setItem("letters", ltrd);
var csentd = $("#cw_sentence").val();
var cltrd = $("#cw_letters").val();
if (csentd != localStorage.getItem("cw_sentence") || cltrd != localStorage.getItem("cw_letters")) {
Materialize.toast(lang.lang_setting_autocw.replace("{{set1}}" ,csentd).replace("{{set2}}" ,cltrd), 3000);
}
localStorage.setItem("cw_sentence", csentd);
localStorage.setItem("cw_letters", cltrd);
var widthd = $("#width").val();
if (widthd != localStorage.getItem("width")) {
Materialize.toast(lang.lang_setting_width.replace("{{set}}" ,widthd), 3000);
}
localStorage.setItem("width", widthd);
var fwidthd = $("#fixwidth").val();
if (fwidthd != localStorage.getItem("fixwidth")) {
Materialize.toast(lang.lang_setting_fixwidth.replace("{{set}}" ,fwidthd), 3000);
}
localStorage.setItem("fixwidth", fwidthd);
var imgd = $("[name=img]:checked").val();
var imgt = $("[for=i_"+imgd+"]").text();
if (imgd != localStorage.getItem("img")) {
Materialize.toast(lang.lang_setting_img.replace("{{set}}" ,imgt), 3000);
}
localStorage.setItem("img", imgd);
var fontd = $("#font").val();
if(fontd){
if (fontd != localStorage.getItem("font")) {
Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,fontd), 3000);
}
localStorage.setItem("font", fontd);
themes();
}else{
if(localStorage.getItem("font")){
localStorage.removeItem("font");
Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,lang.lang_setting_default), 3000);
themes();
}
}
var sized = $("#size").val();
if (sized != localStorage.getItem("size")) {
Materialize.toast(lang.lang_setting_size.replace("{{set}}" ,sized), 3000);
}
localStorage.setItem("size", sized);
var heid = $("#img-height").val();
if (heid != localStorage.getItem("img-height")) {
Materialize.toast(lang.lang_setting_imgheight.replace("{{set}}" ,heid), 3000);
}
localStorage.setItem("img-height", heid);
var tckrd = $("[name=ticker]:checked").val();
var tckrt = $("[for=ticker_"+tckrd+"]").text();
if (tckrd != localStorage.getItem("ticker_ok")) {
Materialize.toast(lang.lang_setting_ticker.replace("{{set}}" ,tckrt), 3000);
}
localStorage.setItem("ticker_ok", tckrd);
var animed = $("[name=anime]:checked").val();
var animet = $("[for=anime_"+animed+"]").text();
if (animed != localStorage.getItem("animation")) {
Materialize.toast(lang.lang_setting_animation.replace("{{set}}" ,animet), 3000);
}
localStorage.setItem("animation", animed);
var boxd = $("[name=box]:checked").val();
var boxt = $("[for=bx_"+boxd+"]").text();
if (boxd != localStorage.getItem("box")) {
Materialize.toast(lang.lang_setting_boxConfirm.replace("{{set}}" ,boxt), 3000);
}
localStorage.setItem("box", boxd);
var tagd = $("[name=tag]:checked").val();
var tagt = $("[for=t_"+tagd+"]").text();
if (tagd != localStorage.getItem("tag-range")) {
Materialize.toast(lang.lang_setting_tag.replace("{{set}}" ,tagt), 3000);
}
localStorage.setItem("tag-range", tagd);
var uld = $("[name=ul]:checked").val();
var ult = $("[for=ul_"+uld+"]").text();
if (uld != localStorage.getItem("locale")) {
Materialize.toast(lang.lang_setting_ul.replace("{{set}}" ,ult), 3000);
}
localStorage.setItem("locale", uld);
var ntd = $("[name=notf]:checked").val();
var ntt = $("[for=ntf_"+ntd+"]").text();
if (ntd != localStorage.getItem("nativenotf")) {
Materialize.toast(lang.lang_setting_notf.replace("{{set}}" ,ntt), 3000);
}
localStorage.setItem("nativenotf", ntd);
var qtd = $("[name=quote]:checked").val();
var qtt = $("[for=q_"+qtd+"]").text();
if (qtd != localStorage.getItem("quote")) {
Materialize.toast(lang.lang_setting_quote.replace("{{set}}" ,qtt), 3000);
}
localStorage.setItem("quote", qtd);
var viad = $("[name=via]:checked").val();
var viat = $("[for=via_"+viad+"]").text();
if (viad != localStorage.getItem("viashow")) {
Materialize.toast(lang.lang_setting_via.replace("{{set}}" ,viat), 3000);
}
localStorage.setItem("viashow", viad);
var notfmd = $("[name=notfm]:checked").val();
var notfmt = $("[for=notfm_"+notfmd+"]").text();
if (notfmd != localStorage.getItem("setasread")) {
Materialize.toast(lang.lang_setting_setasread.replace("{{set}}" ,notfmt), 3000);
}
localStorage.setItem("setasread", notfmd);
var movd = $("[name=mov]:checked").val();
var movt = $("[for=mov_"+movd+"]").text();
if (movd != localStorage.getItem("mouseover")) {
Materialize.toast(lang.lang_setting_mov.replace("{{set}}" ,movt), 3000);
}
localStorage.setItem("mouseover", movd);
var maind = $("[name=main]:checked").val();
var maint = $("[for=mn_"+maind+"]").text();
if (maind != localStorage.getItem("mainuse")) {
Materialize.toast(lang.lang_setting_main.replace("{{set}}" ,maint), 3000);
}
localStorage.setItem("mainuse", maind);
var secd = $("[name=sec]:checked").val();
var sect = $("[for=sec-"+secd+"]").text();
if (secd != localStorage.getItem("sec")) {
Materialize.toast(lang.lang_setting_sec.replace("{{set}}" ,sect), 3000);
}
localStorage.setItem("sec", secd);
}
//読み込み時の設定ロード
function load() {
if(localStorage.getItem("imas")){
$(".imas").removeClass("hide");
}
if(localStorage.getItem("kirishima")){
$(".kirishima").removeClass("hide");
}
var prof = localStorage.getItem("prof");
$("#my-prof").attr("src", prof);
var datetype = localStorage.getItem("datetype");
if (!datetype) {
var datetype = "absolute";
}
$("#" + datetype).prop("checked", true);
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
var ha = localStorage.getItem("ha");
if (!ha) {
var ha = "false";
}
$("#ha_" + ha).prop("checked", true);
var nsfw = localStorage.getItem("nsfw");
if (!nsfw) {
var nsfw = "yes";
}
$("#n_" + nsfw).prop("checked", true);
var cw = localStorage.getItem("cw");
if (!cw) {
var cw = "yes";
}
$("#c_" + cw).prop("checked", true);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var popup = localStorage.getItem("popup");
if (!popup) {
var popup = "0";
}
$("#popup").val(popup);
var box = localStorage.getItem("box");
if (!box) {
var box = "no";
}
if(box=="absolute"){
var box = "abs";
}
$("#bx_" + box).prop("checked", true);
var gif = localStorage.getItem("gif");
if (!gif) {
var gif = "yes";
}
$("#g_" + gif).prop("checked", true);
var sent = localStorage.getItem("sentence");
if (!sent) {
var sent = "500";
}
$("#sentence").val(sent);
var ltrs = localStorage.getItem("letters");
if (!ltrs) {
var ltrs = "500";
}
$("#letters").val(ltrs);
var csent = localStorage.getItem("cw_sentence");
if (!csent) {
var csent = "500";
}
$("#cw_sentence").val(csent);
var cltrs = localStorage.getItem("cw_letters");
if (!cltrs) {
var cltrs = "500";
}
$("#cw_letters").val(cltrs);
var width = localStorage.getItem("width");
if (!width) {
var width = "300";
}
$("#width").val(width);
var fwidth = localStorage.getItem("fixwidth");
if (!fwidth) {
var fwidth = "300";
}
$("#fixwidth").val(fwidth);
var cwt = localStorage.getItem("cw-text");
if (!cwt) {
var cwt = "";
}
$("#cw-text").val(cwt);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var rps = localStorage.getItem("replyct");
if (!rps) {
var rps = "hidden";
}
$("#rp_" + rps).prop("checked", true);
var vis = localStorage.getItem("vis");
if (!vis) {
var vis = "public";
}
$("#" + vis).prop("checked", true);
var img = localStorage.getItem("img");
if (!img) {
var img = "no-act";
}
$("#i_" + img).prop("checked", true);
var font = localStorage.getItem("font");
if (!font) {
var font = "";
}
$("#font").val(font);
var size = localStorage.getItem("size");
if (!size) {
var size = "13";
}
$("#size").val(size);
var imh = localStorage.getItem("img-height");
if (!imh) {
var imh = "200";
}
$("#img-height").val(imh);
var ticker = localStorage.getItem("ticker_ok");
if (!ticker) {
var ticker = "no";
}
$("#ticker_" + ticker).prop("checked", true);
var animation = localStorage.getItem("animation");
if (!animation) {
var animation = "yes";
}
$("#anime_" + animation).prop("checked", true);
var tag = localStorage.getItem("tag-range");
if (!tag) {
var tag = "all";
}
$("#t_" + tag).prop("checked", true);
var box = localStorage.getItem("box");
if (!box) {
var box = "yes";
}
$("#bx_" + box).prop("checked", true);
var uld = localStorage.getItem("locale");
if (!uld) {
var uld = "yes";
}
$("#ul_" + uld).prop("checked", true);
var nnd = localStorage.getItem("nativenotf");
if (!nnd) {
var nnd = "yes";
}
$("#ntf_" + nnd).prop("checked", true);
var qt = localStorage.getItem("quote");
if (!qt) {
var qt = "simple";
}
$("#q_" + qt).prop("checked", true);
var viat = localStorage.getItem("viashow");
if (!viat) {
var viat = "hide";
}
$("#via_" + viat).prop("checked", true);
var movt = localStorage.getItem("mouseover");
if (!movt) {
var movt = "no";
}
$("#mov_" + movt).prop("checked", true);
var notfmt = localStorage.getItem("setasread");
if (!notfmt) {
var notfmt = "yes";
}
$("#notfm_" + notfmt).prop("checked", true);
var maint = localStorage.getItem("mainuse");
if (!maint) {
var maint = "remain";
}
$("#mn_" + maint).prop("checked", true);
var sect = localStorage.getItem("sec");
if (!sect) {
var sect = "nothing";
}
$("#sec-" + sect).prop("checked", true);
}
function climute(){
//クライアントミュート
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if(!obj){
$("#mute-cli").html(lang.lang_setting_nomuting);
}else{
if(!obj[0]){
$("#mute-cli").html(lang.lang_setting_nomuting);
return;
}
var templete;
Object.keys(obj).forEach(function(key) {
var cli = obj[key];
var list = key * 1 + 1;
templete = '<div class="acct" id="acct_' + key + '">' + list +
'.' +
cli + '<button class="btn waves-effect red disTar" onclick="cliMuteDel(' +
key + ')">'+lang.lang_del+'</button><br></div>';
$("#mute-cli").append(templete);
});
}
}
function cliMuteDel(key){
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
obj.splice(key, 1);
var json = JSON.stringify(obj);
localStorage.setItem("client_mute", json);
mute();
}
function wordmute(){
var word = localStorage.getItem("word_mute");
var obj = JSON.parse(word);
$('#wordmute').material_chip({
data: obj,
});
}
function wordmuteSave(){
var word=$('#wordmute').material_chip('data');
var json = JSON.stringify(word);
localStorage.setItem("word_mute", json);
}
function wordemp(){
var word = localStorage.getItem("word_emp");
var obj = JSON.parse(word);
$('#wordemp').material_chip({
data: obj,
});
}
function wordempSave(){
var word=$('#wordemp').material_chip('data');
var json = JSON.stringify(word);
localStorage.setItem("word_emp", json);
}
function notftest(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',
icon: localStorage.getItem("prof_0")
};
if(os=="darwin"){
var n = new Notification('TheDesk'+lang.lang_setting_notftest, options);
}else{
ipc.send('native-notf', ['TheDesk'+lang.lang_setting_notftest,lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',localStorage.getItem('prof_0'),"",""]);
}
}
function oks(no){
var txt=$("#oks-"+no).val();
localStorage.setItem("oks-"+no, txt);
Materialize.toast(lang.lang_setting_ksref, 3000);
}
function oksload(){
if(localStorage.getItem("oks-1")){$("#oks-1").val(localStorage.getItem("oks-1"))}
if(localStorage.getItem("oks-2")){$("#oks-2").val(localStorage.getItem("oks-2"))}
if(localStorage.getItem("oks-3")){$("#oks-3").val(localStorage.getItem("oks-3"))}
}
function changelang(lang){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('lang',lang);
ipc.on('langres', function (event, arg) {
location.href="../"+lang+"/setting.html"
});
}
function exportSettings(){
if(!confirm(lang.lang_setting_exportwarn)){
return false;
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showSaveDialog(null, {
title: 'Export',
properties: ['openFile', 'createDirectory'],
defaultPath: "export.thedeskconfig"
}, (savedFiles) => {
console.log(savedFiles);
if(!savedFiles){
return false;
}
var exp={};
//Accounts
var multi = localStorage.getItem("multi");
var acct = JSON.parse(multi);
exp.accts=acct;
//Columns
var multi = localStorage.getItem("column");
var column = JSON.parse(multi);
exp.columns=column;
//Themes
exp.theme=localStorage.getItem("theme");
//Min width
exp.minwidth=localStorage.getItem("width");
//Font
exp.font=localStorage.getItem("font");
exp.size=localStorage.getItem("size");
//Img height
exp.imgheight=localStorage.getItem("img-height");
//Main
exp.mainuse=localStorage.getItem("mainuse");
//CW text
exp.cw=localStorage.getItem("cw-text");
//vis
exp.vis=localStorage.getItem("vis");
//keysc
exp.ksc=[
localStorage.getItem("oks-1"),
localStorage.getItem("oks-2"),
localStorage.getItem("oks-3")
];
//climu
var cli = localStorage.getItem("client_mute");
var climu = JSON.parse(cli);
exp.clientMute=climu;
//wordmu
var wdm = localStorage.getItem("word_mute");
var wordmu = JSON.parse(wdm);
exp.wordMute=wordmu;
//spotify
exp.spotifyArtwork=localStorage.getItem("artwork")
var content=localStorage.getItem("np-temp");
if(content || content=="" || content=="null"){
exp.spotifyTemplete=content;
}else{
exp.spotifyTemplete=null;
}
//tags
var tagarr = localStorage.getItem("tag");
var favtag = JSON.parse(tagarr);
exp.favoriteTags=favtag;
console.log(exp);
ipc.send('export', [savedFiles,JSON.stringify(exp)]);
alert("Done.")
//cards
//lang
});
}
function importSettings(){
if(!confirm(lang.lang_setting_importwarn)){
return false;
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showOpenDialog(null, {
title: 'Import',
properties: ['openFile'],
filters: [
{name: 'TheDesk Config', extensions: ['thedeskconfig']},
]
}, (fileNames) => {
console.log(fileNames);
if(!fileNames){
return false;
}
ipc.send('import', fileNames[0]);
ipc.on('config', function (event, arg) {
var obj = JSON.parse(arg);
if(obj){
localStorage.clear();
localStorage.setItem("multi",JSON.stringify(obj.accts));
for(var key=0;key<obj.accts.length;key++){
var acct=obj.accts[key];
localStorage.setItem("name_" + key, acct.name);
localStorage.setItem("user_" + key, acct.user);
localStorage.setItem("user-id_" + key, acct.id);
localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem("acct_"+ key + "_at", acct.at);
}
localStorage.setItem("column",JSON.stringify(obj.columns));
localStorage.setItem("theme",obj.theme);
if(obj.width){
console.log(obj.width)
localStorage.setItem("width",obj.width);
}
if(obj.font){
localStorage.setItem("font",obj.font);
}
if(obj.size){
localStorage.setItem("size",obj.size);
}
themes(obj.theme);
if(obj.imgheight){
localStorage.setItem("img-height",obj.imgheight);
}
localStorage.setItem("mainuse",obj.mainuse);
if(obj.cw){
localStorage.setItem("cwtext",obj.cw);
}
localStorage.setItem("vis",obj.vis);
if(obj.ksc[0]){
localStorage.setItem("oks-1",obj.ksc[0]);
}
if(obj.ksc[1]){
localStorage.setItem("oks-2",obj.ksc[1]);
}
if(obj.ksc[2]){
localStorage.setItem("oks-3",obj.ksc[2]);
}
if(obj.clientMute){
localStorage.setItem("client_mute",JSON.stringify(obj.clientMute));
}
if(obj.wordMute){
localStorage.setItem("word_mute",JSON.stringify(obj.wordMute));
}
if(obj.favoriteTags){
localStorage.setItem("tag",JSON.stringify(obj.favoriteTags));
}
localStorage.setItem("np-temp",obj.spotifyTemplete);
for(var i=0;i<obj.columns.length;i++){
localStorage.setItem("card_" + i,"true");
localStorage.removeItem("catch_" + i);
}
location.href="language.html";
}else{
alert("Error.")
}
})
//cards
//lang
});
}
function savefolder(){
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
dialog.showOpenDialog(null, {
title: 'Save folder',
properties: ['openDirectory'],
}, (fileNames) => {
localStorage.setItem("savefolder",fileNames[0]);
});
}
function font(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('fonts', []);
ipc.on('font-list', function (event, arg) {
$("#fonts").removeClass("hide");
for( var i=0; i<arg.length; i++) {
var font=arg[i];
$("#fonts").append('<div class="font pointer" style="font-family:'+font.family+'" onclick="insertFont(\''+font.family+'\')">'+font.family+"</div>")
}
});
}
function insertFont(name){
$("#font").val(name);
}
$(".color-picker").each(function(i, elem) {
pickerDefine(i,"fff");
});
function pickerDefine(i,color){
var pickr = new Pickr({
el: '#color-picker'+i,
default: color,
showAlways: true,
appendToBody: true,
closeWithKey: 'Escape',
comparison: false,
components: {
preview: true, // Left side color comparison
opacity: false, // Opacity slider
hue: true, // Hue slider
interaction: {
rgba: false, // rgba option (red green blue and alpha)
input: true, // input / output element
}
},
strings: {
save: 'Save', // Default for save button
clear: 'Clear' // Default for clear button
}
});
pickr.on('change', (...args) => {
var rgb='rgb('+args[0].toRGBA()[0]+','+args[0].toRGBA()[1]+','+args[0].toRGBA()[2]+')';
$("#color-picker"+i+"_value").val(rgb)
});
}
function customComp(){
var nameC=$("#custom_name").val();
if(!nameC){return false;}
var descC=$("#custom_desc").val();
var primaryC=$("#color-picker0_value").val();
if(!primaryC){primaryC="rgb(255,255,255)"}
var secondaryC=$("#color-picker1_value").val();
if(!secondaryC){secondaryC="rgb(255,255,255)"}
var textC=$("#color-picker2_value").val();
if(!textC){textC="rgb(255,255,255)"}
var accentC=$("#color-picker3_value").val();
if(!accentC){accentC="rgb(255,255,255)"}
var multi = localStorage.getItem("multi");
var my=JSON.parse(multi)[0].name;
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
id=makeCID();
}
var json={
"name": nameC,
"author": my,
"desc": descC,
"base": $("[name=direction]:checked").val(),
"vars": {
"primary": primaryC,
"secondary": secondaryC,
"text": textC
},
"props": {
"TheDeskAccent": accentC
},
"id": id
}
$("#custom_json").val(JSON.stringify(json));
themes();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.send('theme-json-create', JSON.stringify(json));
}
function deleteIt(){
var id=$("#custom-sel-sel").val();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.on('theme-json-delete-complete', function (event, args) {
ctLoad()
});
ipc.send('theme-json-delete', id);
}
function ctLoad(){
ipc.send('theme-json-list', "");
ipc.on('theme-json-list-response', function (event, args) {
console.log(args);
var templete="";
Object.keys(args).forEach(function(key) {
var theme = args[key];
var themeid=theme.id
templete = templete+'<option value="'+themeid+'">' + theme.name +'</option>';
});
if(args[0]){
localStorage.setItem("customtheme-id",args[0].id)
}
$("#custom-sel-sel").html(templete);
templete='<option value="add_new">'+$("#edit-selector").attr("data-add")+'</option>'+templete;
$("#custom-edit-sel").html(templete);
$('select').material_select('update');
});
}
function customSel(){
var id=$("#custom-sel-sel").val();
localStorage.setItem("customtheme-id",id)
}
function custom(){
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
$("#delTheme").addClass("disabled")
}else{
$("#delTheme").removeClass("disabled")
ipc.send('theme-json-request', id);
ipc.on('theme-json-response', function (event, args) {
console.log(args);
$("#custom_name").val(args.name);
$("#custom_desc").val(args.desc);
$("#"+args.base).prop("checked", true);
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0,rgbToHex(args.vars.primary))
$("#color-picker0_value").val(args.vars.primary);
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1,rgbToHex(args.vars.secondary))
$("#color-picker1_value").val(args.vars.secondary);
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker2_value").val(args.vars.text);
pickerDefine(2,rgbToHex(args.vars.text))
if(args.props){
if(args.props.TheDeskAccent){
var accent=args.props.TheDeskAccent;
}else{
var accent=args.vars.secondary;
}
}else{
var accent=args.vars.secondary;
}
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
pickerDefine(3,rgbToHex(accent))
$("#custom_json").val(JSON.stringify(args));
});
}
}
function customImp(){
var json=$("#custom_import").val();
if(JSON5.parse(json)){
ipc.send('theme-json-create', json);
}else{
alert("Error")
}
}
function hardwareAcceleration(){
var had = $("[name=ha]:checked").val();
localStorage.setItem("ha", had);
console.log("ha");
ipc.send('ha', had);
}
ipc.on('theme-json-create-complete', function (event, args) {
$("#custom_import").val("");
ctLoad()
});
//最初に読む
load();
climute();
wordmute();
wordemp();
checkSpotify();
voiceSettingLoad();
oksload();
npprovider();
ctLoad()

View File

@@ -1,5 +1,6 @@
//ソートデータ読み込み
function sortload() {
function sortLoad () {
$("#sort").html("");
var col = localStorage.getItem("column");
if (col) {
var obj = JSON.parse(col);
@@ -104,7 +105,7 @@ function sort() {
localStorage.setItem("column", json);
$("#sort").html("");
M.toast({ html: "Sorted", displayLength: 3000 })
sortload();
sortLoad();
parseColumn();
sortMenu()
}
@@ -115,5 +116,5 @@ function sortMenu() {
$(".menu-content").addClass("hide");
$("#sort-box").removeClass("hide");
$("#sort").html("");
sortload();
sortLoad();
}

View File

@@ -108,7 +108,10 @@ function nowplaying(mode) {
$("#textarea").val(content);
});
} else {
alert(lang.lang_spotify_acct);
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct
})
}
} else if (mode == "itunes") {
postMessage(["itunes", ""], "*")
@@ -162,24 +165,6 @@ function spotifySave() {
localStorage.setItem("np-temp", temp);
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 })
}
function npprovider() {
var provd = $("[name=npp]:checked").val();
if (!provd) {
if (localStorage.getItem("np_provider")) {
$("[value=" + localStorage.getItem("np_provider") + "]").prop("checked", true);
} else {
$("[value=AIMP]").prop("checked", true);
localStorage.setItem("np_provider", "AIMP");
}
} else {
if (provd != localStorage.getItem("np_provider")) {
M.toast({ html: lang.lang_setting_npprovide.replace("{{set}}", provd), displayLength: 3000 })
}
localStorage.setItem("np_provider", provd);
postMessage(["itunes", ["set", provd]], "*")
}
}
if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
var mode = m[1];
@@ -192,11 +177,4 @@ if (location.search) {
}
}
$("#npbtn").click(function () {
nowplaying('spotify');
});
$("#npbtn").bind('contextmenu', function () {
nowplaying('itunes');
return false;
});
}

View File

@@ -7,22 +7,26 @@ function themes(theme) {
localStorage.setItem("theme", "black");
}
}
$("html").removeClass("indigotheme");
$("html").removeClass("greentheme");
$("html").removeClass("browntheme");
$("html").removeClass("blacktheme");
$("html").removeClass("customtheme");
$("html").addClass(theme + "theme");
var el = document.getElementsByTagName("html")[0]
el.classList.remove('indigotheme');
el.classList.remove('greentheme');
el.classList.remove('browntheme');
el.classList.remove('blacktheme');
el.classList.remove('bluetheme');
el.classList.remove('customtheme');
el.classList.add(theme + "theme");
var font = localStorage.getItem("font");
if (font) {
$("html").css("font-family", font);
el.style.fontFamily = font;
} else {
$("html").css("font-family", "");
el.style.fontFamily = "";
}
if (theme == "custom") {
if (localStorage.getItem("customtheme-id")) {
postMessage(["themeCSSRequest", localStorage.getItem("customtheme-id")], "*")
}
}
el.style.backgroundColor = "var(--bg)";
}
themes();
themes();

View File

@@ -133,7 +133,10 @@ function spotifytips() {
spotint = setInterval(spotStart, 1000);
});
} else {
alert(lang.lang_spotify_acct);
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct
})
}
}
function spotStart() {

View File

@@ -193,6 +193,9 @@ function udg(user, acct_id) {
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if(localStorage.getItem("main")==acct_id){
$("#his-main-acct").hide();
}
} else {
relations(user, acct_id);
$(".only-my-data").hide();
@@ -293,6 +296,9 @@ function misskeyUdg(user, acct_id) {
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if(localStorage.getItem("main")==acct_id){
$("#his-main-acct").hide();
}
} else {
if (json.isFollowing) {
//自分がフォローしている
@@ -351,7 +357,6 @@ function relations(user, acct_id) {
console.error(error);
}).then(function (json) {
var json = json[0];
console.log(json);
if (json.following) {
//自分がフォローしている
$("#his-data").addClass("following");
@@ -409,6 +414,12 @@ function profbrws() {
var url = $("#his-openin").attr("data-href")
postMessage(["openUrl", url], "*")
}
function setMain() {
var acct_id = $("#his-data").attr("use-acct")
localStorage.setItem("main", acct_id);
multiSelector(true)
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
}
//オールリセット
function hisclose() {
$('#his-data').modal('close');
@@ -464,6 +475,7 @@ function reset() {
$("#his-openin").attr("data-href", "");
$("#his-float-timeline").show();
$("#his-float-blocked").hide();
$("#his-main-acct").show();
$("#his-proof-prof").html("")
}
$('#my-data-nav .tab').on('click', function () {

View File

@@ -18,6 +18,27 @@ const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
// メインウィンドウはGCされないようにグローバル宣言
let mainWindow;
if (process.argv.indexOf("--dev") === -1) {
var packaged = true;
} else {
var packaged = false;
console.log(
"||\\\\\\ \n"+
"|||| \\\\\\\\ \n"+
"|||| \\\\\\\\ \n"+
"|||| Am I a \\\\\\\\ \n"+
"|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n"+
"|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n"+
"|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n"+
"|||| < _ _) ////// | | | | | | __/ |_| | __/\__ \\ < \n"+
"|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n"+
"|||| ///// \n"+
"|||| /////\n"+
"|||| /////\n"+
"||||//////"
)
console.log("Welcome!")
}
var info_path = join(app.getPath("userData"), "window-size.json");
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
var lang_path = join(app.getPath("userData"), "language");
@@ -25,9 +46,9 @@ var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
try {
fs.readFileSync(ha_path, 'utf8');
app.disableHardwareAcceleration()
console.log("disabled: HA");
if(!packaged) console.log("disabled: Hardware Acceleration");
} catch{
console.log("enabled: HA");
if(!packaged) console.log("enabled: Hardware Acceleration");
}
var window_size;
try {
@@ -74,13 +95,18 @@ app.on('activate', function () {
function createWindow() {
if (isFile(lang_path)) {
console.log("exist");
var lang = fs.readFileSync(lang_path, 'utf8');
} else {
var langs = app.getLocale();
console.log(langs);
if (~langs.indexOf("ja")) {
lang = "ja";
} else if (~langs.indexOf("de")) {
lang = "de";
} else if (~langs.indexOf("cs")) {
lang = "cs";
} else if (~langs.indexOf("bg")) {
lang = "bg";
} else {
lang = "en";
}
@@ -88,8 +114,8 @@ function createWindow() {
fs.writeFileSync(lang_path, lang);
});
}
console.log(app.getLocale());
console.log("launch:" + lang);
if(!packaged) console.log("your lang:" + app.getLocale());
if(!packaged) console.log("launch:" + lang);
// メイン画面の表示。ウィンドウの幅、高さを指定できる
var platform = process.platform;
var bit = process.arch;
@@ -101,7 +127,7 @@ function createWindow() {
contextIsolation: true,
preload: join(__dirname, "js", "platform", "preload.js")
},
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, icon: __dirname + '/desk.png'
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, icon: __dirname + '/desk.png', show: false
}
} else if (platform == "win32") {
var arg = {
@@ -111,7 +137,7 @@ function createWindow() {
contextIsolation: true,
preload: join(__dirname, "js", "platform", "preload.js")
},
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true, show: false
}
} else if (platform == "darwin") {
var arg = {
@@ -121,10 +147,16 @@ function createWindow() {
contextIsolation: true,
preload: join(__dirname, "js", "platform", "preload.js")
},
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true, show: false
}
}
mainWindow = new BrowserWindow(arg);
mainWindow.once('page-title-updated', () => {
mainWindow.show()
if (window_size.max) {
mainWindow.maximize();
}
})
electron.session.defaultSession.clearCache(() => { })
if (process.argv) {
if (process.argv[1]) {
@@ -146,9 +178,6 @@ function createWindow() {
if (!window_size.x && !window_size.y) {
mainWindow.center();
}
if (window_size.max) {
mainWindow.maximize();
}
// ウィンドウが閉じられたらアプリも終了
mainWindow.on('closed', function () {
electron.ipcMain.removeAllListeners();
@@ -173,11 +202,6 @@ function createWindow() {
var platform = process.platform;
var bit = process.arch;
if (process.argv.indexOf("--dev") === -1) {
packaged = true;
} else {
packaged = false;
}
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir)));
//CSS
css.css(mainWindow);

View File

@@ -53,9 +53,13 @@ function css(mainWindow) {
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
}
if (json.props) {
if (json.props.TheDeskAccent) {
@@ -75,7 +79,7 @@ function css(mainWindow) {
secondary +
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
primary +
";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
";--accentbtn:" + primary + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}.customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
e.sender.webContents.send('theme-css-response', css);
} catch (e) {
var css = "";

View File

@@ -27,6 +27,7 @@ function dl(mainWindow, lang_path, base, dirname) {
"frame": false, // 枠の無いウィンドウ
"resizable": false
});
//updatewin.openDevTools()
var lang = fs.readFileSync(lang_path, 'utf8');
updatewin.loadURL(base + lang + '/update.html');
@@ -44,7 +45,7 @@ function dl(mainWindow, lang_path, base, dirname) {
directory: dir,
openFolderWhenDone: true,
onProgress: function (event) {
e.sender.webContents.send('prog', e);
e.sender.webContents.send('prog', event);
},
saveAs: false
};
@@ -53,7 +54,6 @@ function dl(mainWindow, lang_path, base, dirname) {
.then(dl => {
e.sender.webContents.send('mess', "ダウンロードが完了しました。");
app.quit();
})
.catch(console.error);
}

View File

@@ -1,5 +1,8 @@
// Create the Application's main menu
function templete(lang, mainWindow, packaged, dir) {
if(lang !="ja" && lang != "en"){
lang = "en"
}
const electron = require("electron");
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
@@ -146,33 +149,5 @@ function templete(lang, mainWindow, packaged, dir) {
];
return menu;
}
function delsel(lang) {
const dict = {
"delete": {
"ja": "カラム削除",
"en": "Delete this column"
},
"mess": {
"ja": "カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)",
"en": "Delete this column(URL analyzes of all windows will be disabled.)"
},
"yes": {
"ja": "はい",
"en": "Yes"
},
"no": {
"ja": "いいえ",
"en": "No"
}
}
const options = {
type: 'info',
title: dict.delete[lang],
message: dict.mess[lang],
buttons: [dict.no[lang], dict.yes[lang]]
}
return options;
}
exports.template = templete;
exports.delsel = delsel;
exports.template = templete;

View File

@@ -8,19 +8,7 @@ function np(mainWindow) {
//Verified on Windows
console.log("Access");
if (args[0] == "set") {
var { NowPlaying, PlayerName } = require("nowplaying-node");
var nppath = join(app.getPath("userData"), "nowplaying");
var npProvider;
try {
npProvider = args[1];
} catch (e) {
npProvider = "AIMP";
}
var myAIMP = new NowPlaying({
fetchCover: true,
player: PlayerName[npProvider],
});
fs.writeFileSync(nppath, npProvider);
} else {
var platform = process.platform;
var bit = process.arch;
@@ -34,35 +22,6 @@ function np(mainWindow) {
console.error(error);
e.sender.webContents.send('itunes-np', error);
}
} else {
var { NowPlaying, PlayerName } = require("nowplaying-node");
var nppath = join(app.getPath("userData"), "nowplaying");
var npProvider;
try {
npProvider = fs.readFileSync(nppath, 'utf8');
} catch (e) {
npProvider = "AIMP";
}
var myAIMP = new NowPlaying({
fetchCover: true,
player: PlayerName[npProvider],
});
myAIMP.update();
var path = myAIMP.getCoverPath();
if (path) {
var bin = fs.readFileSync(path, 'base64');
} else {
var bin = false;
}
var value = {
win: true,
name: myAIMP.getTitle(),
artist: myAIMP.getArtist(),
album: myAIMP.getAlbum(),
path: bin
}
e.sender.webContents.send('itunes-np', value);
}
}

View File

@@ -49,29 +49,7 @@ function system(mainWindow, dir, lang, dirname) {
console.log("set:" + arg);
fs.writeFileSync(lang_path, arg);
e.sender.webContents.send('langres', "");
})
//ストアから入れたかダイアログ
ipc.on('dialogStore', function (e, args) {
dialog.showMessageBox(args, function (arg) {
if (arg == 1) {
e.sender.webContents.send('winstore', "winstore");
} else {
e.sender.webContents.send('winstore', "localinstall");
}
});
})
//CWのダイアログ
ipc.on('dialogCW', function (e, args) {
dialog.showMessageBox(args, function (arg) {
e.sender.webContents.send('dialogCWRender', arg);
});
})
//クライアントのダイアログ
ipc.on('dialogClient', function (e, args) {
dialog.showMessageBox(args, function (arg) {
e.sender.webContents.send('dialogClientRender', arg);
});
e.sender.webContents.send('langres', arg);
})
//エクスポートのダイアログ
ipc.on('exportSettings', function (e, args) {
@@ -158,13 +136,6 @@ function system(mainWindow, dir, lang, dirname) {
window.loadURL(dir + '/about.html?ver=' + ver);
return "true"
}
ipc.on('column-del', (e, tlid) => {
console.log(tlid);
var options = language.delsel(lang)
dialog.showMessageBox(options, function (index) {
e.sender.webContents.send('column-del-reply', [index, tlid]);
})
});
ipc.on('nano', function (e, x, y) {
var nano_info_path = join(app.getPath("userData"),

View File

@@ -99,10 +99,8 @@
</head>
<body>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script>
//jQuery読む
window.jQuery = window.$ = require('./js/common/jquery.js');
var Hammer = require('./js/common/hammer.min.js');
$.strip_tags = function (str, allowed) {
if (!str) {
return "";

3846
app/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "18.6.1",
"version": "18.8.0",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
"main": "main.js",
@@ -43,28 +43,31 @@
},
{
"name": "kPherox",
"url": "https://pawoo.net/@kPherox",
"url": "https://pl.kpherox.dev/kPherox",
"email": "admin@mail.kr-kp.com"
}
],
"license": "GPL-3.0",
"dependencies": {
"electron-dl": "^1.14.0",
"@fortawesome/fontawesome-free": "^5.10.1",
"jimp": "^0.6.4",
"jquery": "^3.4.1",
"json5": "^2.1.0",
"materialize-css": "^1.0.0",
"node-notifier": "^5.4.0",
"sumchecker": "^3.0.0",
"sweetalert2": "^8.13.0",
"vue": "^2.6.10"
},
"optionalDependencies": {
"nowplaying-node": "git+https://github.com/cutls/nowplaying-node",
"itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/4/head",
"itunes-nowplaying-mac": "kPherox/itunes-nowplaying-mac#get-artworks-base64",
"font-manager": "^0.3.0"
},
"devDependencies": {
"electron": "^5.0.1",
"electron-builder": "^20.43.0",
"readline-sync": "1.4.9"
"electron": "^6.0.0",
"electron-builder": "^21.1.5",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
@@ -113,8 +116,8 @@
]
},
"electronDownload": {
"version": "5.0.1"
"version": "6.0.0"
},
"electronVersion": "5.0.1"
"electronVersion": "6.0.0"
}
}

158
app/view/bg/acct.html Normal file
View File

@@ -0,0 +1,158 @@
<!doctype html>
<html lang="bg">
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css">
<link href="../../css/userdata.css" rel="stylesheet" type="text/css">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<style>
.acct {
display: flex;
justify-content: space-around;
}
.card {
width: 400px;
background-color: #9e9e9e;
margin: 10px;
}
body,
html {
overflow-y: scroll;
}
#acct-list {
display: flex;
flex-wrap: wrap;
color: white;
align-items: flex-start
}
.lts {
font-size: 150%
}
.colorsel {
display: flex;
}
.card .colorsel div:not(.exc) {
width: 20px;
height: 20px;
}
.card .colorsel div.exc {
width: 40px;
height: 20px;
}
.first {
display: flex;
justify-content: center;
align-items: center
}
.first .hide-first {
display: none;
}
</style>
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body id="mainView">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.bg.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<div class="hide-first">
<a href="index.html" class="btn waves-effect orange nex"
style="width:100%; max-width:200px;">Назад</a><br>
<h5>Списък на профилите</h5>
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div>
<h5>Добавяне на профил</h5><br>
<div id="add">
<div class="row">
<div class="col s8">
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
Премахнете отметката за да пропуснете влизането с код. (Вход в Mastodon от Windows или macOS) (Препоръчително: pcheck)<br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>Настройка на код</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Влезте като Misskey</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">
<span style="font-family:Open Sans;">Supports</span>
<div id="support" class="collection transparent"></div>
</div>
</div>
</div>
<div id="auth" style="display:none">
Поставете кода и затворете браузъра.<br>
<input type="text" id="code" placeholder="Код">
<button class="btn waves-effect" onclick="code()">Auth</button><br>
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Прочетете <a href=\"https://thedesk.top/how-to-misskey-login.html\">Документацията</a>, за да влезете в Misskey.<br>
<input type="hidden" id="misskey-url">
<input type="text" id="misskey-key" placeholder="Код">
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
</div>
</div>
<div class="hide-first">
<h5>Основен профил</h5>
<div class="input-field" style="width:300px"><span data-trans="your_acct">Изберете профил</span>
<br>
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label>
</div>
Some instance data by <a href="https://instances.social" target="_blank">instances.social API</a><br>
<h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br>
<span id="ins-desc"></span><br>
<img src="../../img/loading.svg" id="ins-prof" width="200"><br>
<br>
Домейн:<span id="ins-name"></span><br>
Федерални сървъри:<span id="ins-connect"></span><br>
Тоот:<span id="ins-toot"></span><br>
Потребители:<span id="ins-user"></span>Потребители<br>
Свързване:<span id="ins-per"></span>%<br>
Mastodon версия:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/common/sha256.js"></script>
<script type="text/javascript" src="../../js/login/tkn.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

1116
app/view/bg/index.html Normal file

File diff suppressed because it is too large Load Diff

476
app/view/bg/setting.html Normal file
View File

@@ -0,0 +1,476 @@
<!doctype html>
<html lang="bg" style="overflow:scroll">
<head>
<title>Settings - TheDesk</title>
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<style>
input {
max-height: 50px !important
}
.pcr-result {
height: 1rem !important;
}
</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.bg.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>Предпочитания</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>Системни предпочитания
</div>
<div class="collapsible-body">
<h5>Езици</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
<a onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a><a onclick="changelang('bg')" class="pointer" style="margin-right:5px;">български</a><a onclick="changelang('cs')" class="pointer" style="margin-right:5px;">Česky</a><a onclick="changelang('de')" class="pointer" style="margin-right:5px;">Deutsch</a>
<h5>Внос и износ на предпочитания</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
style="width:100%; max-width:200px;">Износ</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">Внос</button>
<div id="envView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Тест за уведомяване</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Промяна</button>
</template><br>
</template>
</div>
<h5>Шрифт</h5>
Изберете любимия си шрифт с „Избор“ (само за Windows / macOS)<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Избери</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br>
<input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Запази</button>
<br>
<h5>Папка за запазване</h5>
TheDesk ще използва това местоназначение, когато се опитва да запази снимки или да прави екранни снимки.<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Промяна</button>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">color_lens</i>Теми
</div>
<div class="collapsible-body">
<h4>Изберете тема</h4>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
<h4>Редактирайте и добавете персонализирани теми</h4>
<div style="width:300px" id="edit-selector" data-add="Добавяне на нов">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">Добавяне на нов</option>
</select>
</div>
<h5>Име</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="Име...">
<h5>Относно тази тема</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="Относно тази тема..."></textarea></div>
<h5>Цветова схема</h5>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>Компоненти на фона
<div id="color-picker0-wrap">
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value">
</div>
<div>
<h5>Secondary</h5>Цвят на фона
<div id="color-picker1-wrap">
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value">
</div>
<div>
<h5>Texts</h5>Цвят на текста
<div id="color-picker2-wrap">
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value">
</div>
<div>
<h5>Accent</h5>Фон на подсилването
<div id="color-picker3-wrap">
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value">
</div>
</div>
<button class="btn-large waves-effect" onclick="customComp()">Промяна</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Изтрий</button><br><br>
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
Споделете този код с друг TheDesk. Не споделяйте този код с MiAS.
<h4>Импортиране на персонализирани теми</h4>
Вземете още теми от <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a><br>
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Внос</button><br>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>Предпочитания за времевата линия
</div>
<div class="collapsible-body">
<div id="tlView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Промяна</button>
</template><br>
</template>
</div>
<h5>Персонализиран звук</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span
id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span
id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span
id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span
id="c4-file"></span><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>Предпочитания за публикуване
</div>
<div class="collapsible-body">
<div id="postView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Промяна</button>
</template><br>
</template>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
</div>
<div class="collapsible-body">
<h5>Easy inserter</h5>
Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Запази</button><br><br>
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Запази</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Запази</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
</div>
<div class="collapsible-body">
<h5>Client Mute</h5>
<div id="mute-cli"></div>
<h5>Client Emphasis</h5>
Click client name on toots to toggle mute and emphasis.
<h5>Words Mute</h5>
Enter to set<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Запази</button>
<h5>Words Emphasis</h5>
Enter to set<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Запази</button>
<h5>Users Emphasis</h5>
Set on users data modals.
<span class="emphasized"> Use this color to emphasis </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fab fa-spotify"></i>Spotify and NowPlaying Preferences
</div>
<div class="collapsible-body">
<br><br>
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
<h5>Account Connection</h5>
TheDesk save your data on thedesk.top server.<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Запази</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>Connect</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>Disconnect</a>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Запази</button>
<h5>Attach an Artwork of Spotify</h5>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Да</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>Не</span>
</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
</div>
<div class="collapsible-body">
<h5>Speed</h5>
1-100(default:10)<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
style="width:500px; max-width:100%" /></p>
<h5>Pitch</h5>
0-100(default:50)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
style="width:500px; max-width:100%" /></p>
<h5>Volume</h5>
0-100(default:100)<br>
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
style="width:500px; max-width:100%" /></p>
<h5>Test</h5>
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
id="testplay">Play/Stop</button><br>
<br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Запази</button>
</div>
</li>
</ul>
<br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
class="material-icons left">undo</i>Back</a>
<br>
<br>Keyboard shortcuts
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
<li>N:Open toot box</li>
<li>X:Toggle toot box</li>
<li>Ctrl+Enter:Post</li>
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
<li>Ctrl+Shift+S:Предпочитания</li>
<li>Ctrl+Shift+M:Account Manager</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:Show profile of selecting</li>
<li>←/→:Show next or previous image</li>
<li>Mousewheel:Zoom a image</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Изтриване на всички данни. Не можете да го отмените. Продължaвате?')){ localStorage.clear(); location.href='index.html'; }"><i
class="material-icons left">delete</i>Reset(Danger)</button><br><br>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
class="material-icons left">info</i>About TheDesk</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
class="material-icons left">web</i>Website</a>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Поддръжка(Pixiv FANBOX)</a>
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Поддръжка(Patreon)</a>
<a href="https://liberapay.com/cutls" class="btn waves-effect black-text"
style="width:100%; max-width:500px; background-color: #f6c915"><i class="material-icons left">trending_up</i>Поддръжка(Liberapay)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
class="material-icons left">list</i>Help/Docs</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
style="width:100%; max-width:500px;"><i class="fab fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@cutls.com" class="btn waves-effect blue lighten-2"
style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25"
style="padding-top:5px;">Developer: Cutls@cutls.com</a>
<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
class="pointer">Check update</a><br>
<a href="oss.html">OSS License</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
Policy</a>
<br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>)
<br>
</span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

552
app/view/bg/setting.vue.js Normal file
View File

@@ -0,0 +1,552 @@
var yesno = [
{
text: "Да",
value: "yes"
}, {
text: "Не",
value: "no"
}
];
var sound = [
{
text: "Няма",
value: "none"
}, {
text: "По подразбиране",
value: "default"
}, {
text: "Custom 1",
value: "c1"
}, {
text: "Custom 2",
value: "c2"
}, {
text: "Custom 3",
value: "c3"
}, {
text: "Custom 4",
value: "c4"
}
];
var envConstruction = [
{
id: "popup",
storage: "popup",
checkbox: false,
doubleText: false,
setValue: 0,
width: 50,
text: {
head: "Известие с изскачащ прозорец (за Windows)",
desc: "Скрито ако е зададено на „0“",
after: "сек"
}
}, {
id: "notf",
storage: "nativenotf",
checkbox: true,
setValue: "yes",
text: {
head: "Вътрешно уведомяване",
desc: "Това не работи в Windows Portable вер.",
checkbox: yesno
}
}, {
id: "width",
storage: "width",
checkbox: false,
doubleText: false,
width: 50,
setValue: 300,
text: {
head: "Минимална ширина на колоните",
desc: "Лентата за превъртане ще се покаже, когато размерът на прозореца е по-голям от размера на колони.",
after: "px над"
}
}, {
id: "fixwidth",
storage: "fixwidth",
checkbox: false,
doubleText: false,
setValue: 300,
width: 50,
text: {
head: "Минимална ширина на браузъра TweetDeck",
desc: "",
after: "px над"
}
}, {
id: "size",
storage: "size",
checkbox: false,
doubleText: false,
width: 50,
setValue: 13,
text: {
head: "Размер на шрифта",
desc: "<span style=\"font-size:13px\">13px(абсолютна стойност)</span>",
after: "px"
}
}, {
id: "ha",
storage: "ha",
checkbox: true,
setValue: false,
text: {
head: "Деактивиране на хардуерното ускорение",
desc: "Автоматичното рестартиране",
checkbox: [
{
text: "Да",
value: "true"
}, {
text: "Не",
value: "false"
}
]
}
}
];
var tlConstruction = [
{
id: "time",
storage: "datetype",
checkbox: true,
setValue: "absolute",
text: {
head: "Времеви формат",
desc: "Относителен формат: „преди 1 минута“, „преди 3 дни“<br>Абсолютен формат:\"23:25:21\",\"2017/12/30 23:59:00\"<br>Смесен формат: някои от раздумките са с относителен-формат, други са с абсолютен формат.",
checkbox: [
{
text: "Относителен",
value: "relative"
}, {
text: "Абсолютен",
value: "absolute"
}, {
text: "Относителен и абсолютен",
value: "double"
}, {
text: "Смесено",
value: "medium"
}
]
}
}, {
id: "ul",
storage: "locale",
checkbox: true,
setValue: "yes",
text: {
head: "Уникално място на Сървърите",
desc: "Тази стойност е налична за някои Японски сървъри",
checkbox: yesno
}
}, {
id: "nsfw",
storage: "nsfw",
checkbox: true,
setValue: "yes",
text: {
head: "Скриване на NSFW снимки",
desc: "Силен ефект на размазване",
checkbox: yesno
}
}, {
id: "cw",
storage: "cw",
checkbox: true,
setValue: "yes",
text: {
head: "Скриване на CW съдържание",
desc: "",
checkbox: yesno
}
}, {
id: "rp",
storage: "replyct",
checkbox: true,
setValue: "hidden",
text: {
head: "Стил на брояча на отговори",
desc: "",
checkbox: [
{
text: "Показване на 1+, ако отговорите са повече от 1.",
value: "hidden"
}, {
text: "Показване на 1+, ако отговорите са повече от 1.",
value: "all"
}
]
}
}, {
id: "gif",
storage: "gif",
checkbox: true,
setValue: "yes",
text: {
head: "Анимация на анимирани GIF изображения",
desc: "",
checkbox: yesno
}
}, {
id: "tag",
storage: "tag-range",
checkbox: true,
setValue: "local",
text: {
head: "Tag в TL търсене",
desc: "",
checkbox: [
{
text: "Използване в обединената мрежа",
value: "all"
}, {
text: "Използване в локалната мрежа",
value: "local"
}
]
}
}, {
id: "via",
storage: "viashow",
checkbox: true,
setValue: "no",
text: {
head: "С показване",
desc: "",
checkbox: yesno
}
}, {
id: "mov",
storage: "mouseover",
checkbox: true,
setValue: "no",
text: {
head: "Hide action buttons without mouseover",
desc: "You may feel 'mouseover' is unconfortable:(",
checkbox: [
{
text: "Mouseover to show",
value: "yes"
}, {
text: "Click to show",
value: "click"
}, {
text: "Не",
value: "no"
}
]
}
}, {
id: "notfm",
storage: "setasread",
checkbox: true,
setValue: "yes",
text: {
head: "Show Notification marker, red colored bell and counter(if you show a notification column.)",
desc: "",
checkbox: yesno
}
}, {
checkbox: false,
doubleText: true,
data: [
{
id: "sentence",
storage: "sentence",
width: 50,
setValue: 500,
text: { after: "lines над or" }
}, {
id: "letters",
storage: "letters",
width: 50,
setValue: 7000,
text: { after: "букви над" }
}
],
text: {
head: "Auto folding",
desc: "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.",
}
}, {
id: "img-height",
storage: "img-height",
checkbox: false,
doubleText: false,
width: 80,
setValue: 200,
text: {
head: "Height of images",
desc: "Option:Set \"full\" to uncrop.",
after: "px"
}
}, {
id: "ticker",
storage: "ticker_ok",
checkbox: true,
setValue: "no",
text: {
head: "Enable #InstanceTicker",
desc: "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
checkbox: yesno
}
}, {
id: "anime",
storage: "animation",
checkbox: true,
setValue: "yes",
text: {
head: "Анимация на времевата линия",
desc: "",
checkbox: yesno
}
}, {
id: "replySound",
storage: "replySound",
checkbox: true,
setValue: "none",
text: {
head: "Звук (Отговор)",
desc: "",
checkbox: sound
}
}, {
id: "favSound",
storage: "favSound",
checkbox: true,
setValue: "none",
text: {
head: "Звук(Фаворит)",
desc: "",
checkbox: sound
}
}, {
id: "btSound",
storage: "btSound",
checkbox: true,
setValue: "none",
text: {
head: "Звук(Подсилване)",
desc: "",
checkbox: sound
}
}, {
id: "followSound",
storage: "followSound",
checkbox: true,
setValue: "none",
text: {
head: "Звук(Харесване)",
desc: "",
checkbox: sound
}
}
];
var postConstruction = [
{
id: "cw-text",
storage: "cw-text",
checkbox: false,
doubleText: false,
width: 150,
setValue: "",
text: {
head: "Текст за предупреждение по подразбиране",
desc: "",
after: ""
}
}, {
checkbox: false,
doubleText: true,
data: [
{
id: "cw_sentence",
storage: "cw_sentence",
width: 50,
setValue: 500,
text: { after: "lines над or" }
}, {
id: "cw_letters",
storage: "cw_letters",
width: 50,
setValue: 7000,
text: { after: "букви над" }
}
],
text: {
head: "Предупреждение преди публикуване на дълга раздумка.",
desc: "Показване на диалогов прозорец, когато правите твърде дълъг скрит текст.",
}
}, {
id: "cws",
storage: "always-cw",
checkbox: true,
setValue: "no",
text: {
head: "Винаги да е зададено CW",
desc: "",
checkbox: yesno
}
}, {
id: "vis",
storage: "vis",
checkbox: true,
setValue: "public",
text: {
head: "Видимост по подразбиране",
desc: "",
checkbox: [
{
text: "Публично",
value: "public"
}, {
text: "Скрито",
value: "unlisted"
}, {
text: "Частно",
value: "private"
}, {
text: "Директно",
value: "direct"
}, {
text: "Памет(запомнено на всеки сървър)",
value: "memory"
}, {
text: "Видимост по подразбиране (Зададени от предпочитанията в Mastodon сървъра)",
value: "useapi"
}
]
}
}, {
id: "img",
storage: "img",
checkbox: true,
setValue: "no-act",
text: {
head: "Предпочитания за публикуване на изображения",
desc: "",
checkbox: [
{
text: "Вмъкване на URL адрес на медия",
value: "url"
}, {
text: "Без вмъкване",
value: "no-act"
}
]
}
}, {
id: "box",
storage: "box",
checkbox: true,
setValue: "yes",
text: {
head: "Действие на кутията за публикации",
desc: "",
checkbox: [
{
text: "Прибрана",
value: "yes"
}, {
text: "Отворена и след публикуване",
value: "no"
}, {
text: "Постоянно отворена",
value: "absolute"
}
]
}
}, {
id: "quote",
storage: "quote",
checkbox: true,
setValue: "nothing",
text: {
head: "Quote format",
desc: "",
checkbox: [
{
text: "Only URL",
value: "simple"
}, {
text: "URL and acct(mention to the user)",
value: "mention"
}, {
text: "URL, text and acct(mention to the user)",
value: "full"
}, {
text: "Disabled(Hide buttons on TLs)",
value: "nothing"
}
]
}
}, {
id: "main",
storage: "mainuse",
checkbox: true,
setValue: "remain",
text: {
head: "Default accounts of actions",
desc: "Main account can be set on Account Manager.",
checkbox: [
{
text: "Account you used recently",
value: "remain"
}, {
text: "Main account",
value: "main"
}
]
}
}, {
id: "sec",
storage: "sec",
checkbox: true,
setValue: "public",
text: {
head: "Secondary Toot Button",
desc: "",
checkbox: [
{
text: "Hidden",
value: "nothing"
}, {
text: "Публично",
value: "public"
}, {
text: "Скрито",
value: "unlisted"
}, {
text: "Частно",
value: "private"
}, {
text: "Директно",
value: "direct"
}, {
text: "Local Only",
value: "local",
kirishima: true,
kirishimaText: "非対応インスタンスでは「未収載」になります。"
}
]
}
}, {
id: "zero",
storage: "emoji-zero-width",
checkbox: true,
setValue: "normal",
setValue: "no",
text: {
head: "Zero-width space when inserting emojis",
desc: "",
checkbox: yesno
}
}
]

254
app/view/bg/update.html Normal file
View File

@@ -0,0 +1,254 @@
<!doctype html>
<html lang="bg">
<head>
<title>Update - TheDesk</title>
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body>
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 10px;
text-align: right;
}
#start {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: calc(100vh - 2.5rem);
text-align: center;
}
#checkbox {
text-align: left;
}
a,
button,
input,
label,
i {
-webkit-app-region: no-drag;
}
#updskip {
display: flex;
justify-content: center;
align-items: center;
}
.skipbtn {
display: block;
float: left;
width: 200px;
height: 200px;
border: 1px solid;
margin-left: 5px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid;
overflow: hidden;
}
.skipbtn:hover {
background-color: #b3e5fc;
transition: all 0.3s ease-in-out;
}
#prog {
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
<div id="start">
<div id="box" class="show">
<h2>TheDesk</h2>
<p>Get latest TheDesk</p>
<span id="now"></span><b id="ver"></b><br>
<span id="det"></span><br>
<button class="waves-effect btn windows hide" onclick="update('install')"
style="margin-left:15px;">Installer ver.</button>
<button class="waves-effect btn windows hide" onclick="update('portable')"
style="margin-left:15px;">Portable ver.</button>
<button class="waves-effect btn linux hide" onclick="update('linux')"
style="margin-left:15px;">Start</button>
<button class="waves-effect btn mac hide" onclick="update('mac')"
style="margin-left:15px;">Start</button>
<br>
Some problems?<br>Please download on <a href=\"https://thedesk.top\">Oficial HP</a>.
</div>
<div id="skipper" class="hide">
<h4>You may lose a cool experience!</h4>
Skip this update<br>
<div id="updskip">
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light">
<div>Until next TL loading</div>
</a>
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light">
<div>Until next version</div>
</a>
</div>
<a class="pointer waves-effect" onclick="skipper();" style="margin-top:5px">Continue updating</a>
</div>
<div id="dlnow" class="hide">
<h4>Downloading...</h4>
<h4 id="prog"></h4>
<div class="progress">
<div class="determinate" style="width: 0%"></div>
</div>
</div>
</div>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script>
function skipper() {
$("#dlnow").addClass("hide");
$("#box").toggleClass("show");
if ($("#box").hasClass("hide") && $("#skipper").hasClass("hide")) {
$("#skipper").removeClass("hide");
$("#skipper").addClass("show");
} else {
$("#box").toggleClass("hide");
$("#skipper").toggleClass("hide");
$("#skipper").toggleClass("show");
}
}
verck();
function update(sel) {
$("#box").toggleClass("show");
$("#box").toggleClass("hide");
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (sel == "install") {
if (bit == "x64") {
var url = json["winx64"];
var file = "TheDesk-setup.exe";
} else if (bit == "ia32") {
var url = json["winia32"];
var file = "TheDesk-setup-ia32.exe";
}
} else if (sel == "portable") {
if (bit == "x64") {
var url = json["winx64p"];
var file = "TheDesk.exe";
} else if (bit == "ia32") {
var url = json["winia32p"];
var file = "TheDesk-ia32.exe";
}
} else if (sel == "linux") {
if (bit == "x64") {
var url = json["linuxx64"];
var file = "TheDesk-linux-x64.zip";
} else if (bit == "ia32") {
var url = json["linuxia64"];
var file = "TheDesk-linux-ia32.zip";
}
} else if (sel == "mac") {
var url = json["mac"];
shell.openExternal(url);
return false;
}
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
postMessage(["sendSinmpleIpc", "quit"], "*")
}
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
}
function verck() {
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {
$('.linux').removeClass("hide")
} else if (platform == "darwin") {
$('.mac').removeClass("hide")
}
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
console.log(json);
if (platform == "win32") {
$("#ver").text(json.desk);
localStorage.setItem("next-ver", json.desk);
} else if (platform == "linux") {
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver", json.desk_linux);
} else if (platform == "darwin") {
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver", json.desk_mac);
}
var lang = "bg";
if (lang == "ja") {
$("#det").html(json.detail);
} else {
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver"));
});
}
function nextv() {
localStorage.setItem("new-ver-skip", "true");
window.close();
}
function enc(ver) {
var ver = ver.replace(/\s/g, "");
var ver = ver.replace(/\(/g, "-");
var ver = ver.replace(/\)/g, "");
var ver = ver.replace(/\[/g, "_");
var ver = ver.replace(/\]/g, "");
return ver;
}
</script>

158
app/view/cs/acct.html Normal file
View File

@@ -0,0 +1,158 @@
<!doctype html>
<html lang="cs">
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css">
<link href="../../css/userdata.css" rel="stylesheet" type="text/css">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<style>
.acct {
display: flex;
justify-content: space-around;
}
.card {
width: 400px;
background-color: #9e9e9e;
margin: 10px;
}
body,
html {
overflow-y: scroll;
}
#acct-list {
display: flex;
flex-wrap: wrap;
color: white;
align-items: flex-start
}
.lts {
font-size: 150%
}
.colorsel {
display: flex;
}
.card .colorsel div:not(.exc) {
width: 20px;
height: 20px;
}
.card .colorsel div.exc {
width: 40px;
height: 20px;
}
.first {
display: flex;
justify-content: center;
align-items: center
}
.first .hide-first {
display: none;
}
</style>
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body id="mainView">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.cs.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<div class="hide-first">
<a href="index.html" class="btn waves-effect orange nex"
style="width:100%; max-width:200px;">Zpět</a><br>
<h5>Seznam účtů</h5>
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div>
<h5>Přidat účet</h5><br>
<div id="add">
<div class="row">
<div class="col s8">
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>Nastavení kódu</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Přihlásit jako Misskey</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">
<span style="font-family:Open Sans;">Supports</span>
<div id="support" class="collection transparent"></div>
</div>
</div>
</div>
<div id="auth" style="display:none">
Vložte kód a zavřete prohlížeč.<br>
<input type="text" id="code" placeholder="Kód">
<button class="btn waves-effect" onclick="code()">Auth</button><br>
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Pro přihlášení do Misskey si přečtěte <a href=\"https://thedesk.top/how-to-misskey-login.html\">dokumentaci (ja)</a>.<br>
<input type="hidden" id="misskey-url">
<input type="text" id="misskey-key" placeholder="Kód">
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
</div>
</div>
<div class="hide-first">
<h5>Hlavní účet</h5>
<div class="input-field" style="width:300px"><span data-trans="your_acct">Vyberte si účet</span>
<br>
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label>
</div>
Some instance data by <a href="https://instances.social" target="_blank">instances.social API</a><br>
<h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br>
<span id="ins-desc"></span><br>
<img src="../../img/loading.svg" id="ins-prof" width="200"><br>
<br>
Doména:<span id="ins-name"></span><br>
Federované servery:<span id="ins-connect"></span><br>
Tooty:<span id="ins-toot"></span><br>
Uživatelé:<span id="ins-user"></span>Uživatelé<br>
Spojení:<span id="ins-per"></span>%<br>
Verze Mastodonu:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/common/sha256.js"></script>
<script type="text/javascript" src="../../js/login/tkn.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

1116
app/view/cs/index.html Normal file

File diff suppressed because it is too large Load Diff

476
app/view/cs/setting.html Normal file
View File

@@ -0,0 +1,476 @@
<!doctype html>
<html lang="cs" style="overflow:scroll">
<head>
<title>Settings - TheDesk</title>
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<style>
input {
max-height: 50px !important
}
.pcr-result {
height: 1rem !important;
}
</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.cs.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>Předvolby</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>Systémové předvolby
</div>
<div class="collapsible-body">
<h5>Jazyky</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
<a onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a><a onclick="changelang('bg')" class="pointer" style="margin-right:5px;">български</a><a onclick="changelang('cs')" class="pointer" style="margin-right:5px;">Česky</a><a onclick="changelang('de')" class="pointer" style="margin-right:5px;">Deutsch</a>
<h5>Import a export předvoleb</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
style="width:100%; max-width:200px;">Export</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">Import</button>
<div id="envView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Odskoušet oznámení</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Změnit</button>
</template><br>
</template>
</div>
<h5>Písmo</h5>
Select your favorite font to 'Select'(Windows/ macOS only)<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Vybrat</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br>
<input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Uložit</button>
<br>
<h5>Folder to save</h5>
TheDesk uses this value when it try to save pictures or take screenshots.<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Změnit</button>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">color_lens</i>Motivy
</div>
<div class="collapsible-body">
<h4>Vybrat motiv</h4>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
<h4>Edit and add custom themes</h4>
<div style="width:300px" id="edit-selector" data-add="Add new">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">Add new</option>
</select>
</div>
<h5>Name</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="Name...">
<h5>About this theme</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="About this theme..."></textarea></div>
<h5>Color scheme</h5>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>Background of components
<div id="color-picker0-wrap">
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value">
</div>
<div>
<h5>Secondary</h5>Background color
<div id="color-picker1-wrap">
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value">
</div>
<div>
<h5>Texts</h5>Text color
<div id="color-picker2-wrap">
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value">
</div>
<div>
<h5>Accent</h5>Background of boosts
<div id="color-picker3-wrap">
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value">
</div>
</div>
<button class="btn-large waves-effect" onclick="customComp()">Změnit</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
Share this code with other TheDesk. Do not share this code with MiAS.
<h4>Import of custom themes</h4>
Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a><br>
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>Timeline Preferences
</div>
<div class="collapsible-body">
<div id="tlView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Změnit</button>
</template><br>
</template>
</div>
<h5>Custom sound</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span
id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span
id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span
id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span
id="c4-file"></span><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>Posting Preferences
</div>
<div class="collapsible-body">
<div id="postView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Změnit</button>
</template><br>
</template>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
</div>
<div class="collapsible-body">
<h5>Easy inserter</h5>
You can insert any letters and emojis with only 3 keys<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Uložit</button><br><br>
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Uložit</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Uložit</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
</div>
<div class="collapsible-body">
<h5>Client Mute</h5>
<div id="mute-cli"></div>
<h5>Client Emphasis</h5>
Click client name on toots to toggle mute and emphasis.
<h5>Words Mute</h5>
Enter to set<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Uložit</button>
<h5>Words Emphasis</h5>
Enter to set<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Uložit</button>
<h5>Users Emphasis</h5>
Set on users data modals.
<span class="emphasized"> Use this color to emphasis </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fab fa-spotify"></i>Spotify and NowPlaying Preferences
</div>
<div class="collapsible-body">
<br><br>
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
<h5>Account Connection</h5>
TheDesk save your data on thedesk.top server.<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Uložit</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>Connect</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>Disconnect</a>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Uložit</button>
<h5>Attach an Artwork of Spotify</h5>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Ano</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>Ne</span>
</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
</div>
<div class="collapsible-body">
<h5>Speed</h5>
1-100(default:10)<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
style="width:500px; max-width:100%" /></p>
<h5>Pitch</h5>
0-100(default:50)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
style="width:500px; max-width:100%" /></p>
<h5>Volume</h5>
0-100(default:100)<br>
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
style="width:500px; max-width:100%" /></p>
<h5>Test</h5>
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
id="testplay">Play/Stop</button><br>
<br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Uložit</button>
</div>
</li>
</ul>
<br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
class="material-icons left">undo</i>Back</a>
<br>
<br>Keyboard shortcuts
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
<li>N:Open toot box</li>
<li>X:Toggle toot box</li>
<li>Ctrl+Enter:Post</li>
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
<li>Ctrl+Shift+S:Předvolby</li>
<li>Ctrl+Shift+M:Account Manager</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:Show profile of selecting</li>
<li>←/→:Show next or previous image</li>
<li>Mousewheel:Zoom a image</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i
class="material-icons left">delete</i>Reset(Danger)</button><br><br>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
class="material-icons left">info</i>About TheDesk</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
class="material-icons left">web</i>Website</a>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Pixiv FANBOX)</a>
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Patreon)</a>
<a href="https://liberapay.com/cutls" class="btn waves-effect black-text"
style="width:100%; max-width:500px; background-color: #f6c915"><i class="material-icons left">trending_up</i>Support(Liberapay)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
class="material-icons left">list</i>Help/Docs</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
style="width:100%; max-width:500px;"><i class="fab fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@cutls.com" class="btn waves-effect blue lighten-2"
style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25"
style="padding-top:5px;">Developer: Cutls@cutls.com</a>
<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
class="pointer">Check update</a><br>
<a href="oss.html">OSS License</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
Policy</a>
<br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>)
<br>
</span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

552
app/view/cs/setting.vue.js Normal file
View File

@@ -0,0 +1,552 @@
var yesno = [
{
text: "Ano",
value: "yes"
}, {
text: "Ne",
value: "no"
}
];
var sound = [
{
text: "None",
value: "none"
}, {
text: "Default",
value: "default"
}, {
text: "Custom 1",
value: "c1"
}, {
text: "Custom 2",
value: "c2"
}, {
text: "Custom 3",
value: "c3"
}, {
text: "Custom 4",
value: "c4"
}
];
var envConstruction = [
{
id: "popup",
storage: "popup",
checkbox: false,
doubleText: false,
setValue: 0,
width: 50,
text: {
head: "Popupová oznámení (na Windows)",
desc: "Hide to set \"0\"",
after: "sec"
}
}, {
id: "notf",
storage: "nativenotf",
checkbox: true,
setValue: "yes",
text: {
head: "Native notification",
desc: "This does not work on Windows Portable ver.",
checkbox: yesno
}
}, {
id: "width",
storage: "width",
checkbox: false,
doubleText: false,
width: 50,
setValue: 300,
text: {
head: "Minimum width of columns",
desc: "Scroll bar will be shown when your window size is more than ammounts of columns.",
after: "px above"
}
}, {
id: "fixwidth",
storage: "fixwidth",
checkbox: false,
doubleText: false,
setValue: 300,
width: 50,
text: {
head: "Minimální šířka TweetDeck prohlížeče",
desc: "",
after: "px above"
}
}, {
id: "size",
storage: "size",
checkbox: false,
doubleText: false,
width: 50,
setValue: 13,
text: {
head: "Velikost písma",
desc: "<span style=\"font-size:13px\">13px(absolutní hodnota)</span>",
after: "px"
}
}, {
id: "ha",
storage: "ha",
checkbox: true,
setValue: false,
text: {
head: "Disable hardware acceleration",
desc: "Auto restarted",
checkbox: [
{
text: "Ano",
value: "true"
}, {
text: "Ne",
value: "false"
}
]
}
}
];
var tlConstruction = [
{
id: "time",
storage: "datetype",
checkbox: true,
setValue: "absolute",
text: {
head: "Časový formát",
desc: "Relativní formát: „před 1 minutou“, „před 3 dny“<br>Absolutní formát: „23:25:21“, „2017/12/30 23:59:00“<br>Smíšený formát: tooty publikované dnes jsou v relativním formátu, ostatní jsou v absolutním formátu.",
checkbox: [
{
text: "Relativní",
value: "relative"
}, {
text: "Absolutní",
value: "absolute"
}, {
text: "Relativní i absolutní",
value: "double"
}, {
text: "Smíšený",
value: "medium"
}
]
}
}, {
id: "ul",
storage: "locale",
checkbox: true,
setValue: "yes",
text: {
head: "Server's unique locale",
desc: "This value is available on some Japanese servers",
checkbox: yesno
}
}, {
id: "nsfw",
storage: "nsfw",
checkbox: true,
setValue: "yes",
text: {
head: "Skrývat citlivé obrázky",
desc: "Silný efekt rozmazání",
checkbox: yesno
}
}, {
id: "cw",
storage: "cw",
checkbox: true,
setValue: "yes",
text: {
head: "Skrývat obsah za varováními",
desc: "",
checkbox: yesno
}
}, {
id: "rp",
storage: "replyct",
checkbox: true,
setValue: "hidden",
text: {
head: "Reply counter style",
desc: "",
checkbox: [
{
text: "Show 1+ if the replies are more than 1.",
value: "hidden"
}, {
text: "Show 1+ if the replies are more than 1.",
value: "all"
}
]
}
}, {
id: "gif",
storage: "gif",
checkbox: true,
setValue: "yes",
text: {
head: "Animated GIF images animation",
desc: "",
checkbox: yesno
}
}, {
id: "tag",
storage: "tag-range",
checkbox: true,
setValue: "local",
text: {
head: "Tag TL Search",
desc: "",
checkbox: [
{
text: "Use federated network",
value: "all"
}, {
text: "Use local network",
value: "local"
}
]
}
}, {
id: "via",
storage: "viashow",
checkbox: true,
setValue: "no",
text: {
head: "Show via",
desc: "",
checkbox: yesno
}
}, {
id: "mov",
storage: "mouseover",
checkbox: true,
setValue: "no",
text: {
head: "Skrýt akční tlačítka bez přejetí myši",
desc: "„Přejetí myši“ pro vás může být nepohodlné :(",
checkbox: [
{
text: "Zobrazit přejetím myši",
value: "yes"
}, {
text: "Zobrazit kliknutím",
value: "click"
}, {
text: "Ne",
value: "no"
}
]
}
}, {
id: "notfm",
storage: "setasread",
checkbox: true,
setValue: "yes",
text: {
head: "Show Notification marker, red colored bell and counter(if you show a notification column.)",
desc: "",
checkbox: yesno
}
}, {
checkbox: false,
doubleText: true,
data: [
{
id: "sentence",
storage: "sentence",
width: 50,
setValue: 500,
text: { after: "lines above or" }
}, {
id: "letters",
storage: "letters",
width: 50,
setValue: 7000,
text: { after: "letters above" }
}
],
text: {
head: "Auto folding",
desc: "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.",
}
}, {
id: "img-height",
storage: "img-height",
checkbox: false,
doubleText: false,
width: 80,
setValue: 200,
text: {
head: "Height of images",
desc: "Option:Set \"full\" to uncrop.",
after: "px"
}
}, {
id: "ticker",
storage: "ticker_ok",
checkbox: true,
setValue: "no",
text: {
head: "Enable #InstanceTicker",
desc: "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
checkbox: yesno
}
}, {
id: "anime",
storage: "animation",
checkbox: true,
setValue: "yes",
text: {
head: "Animation of timelines",
desc: "",
checkbox: yesno
}
}, {
id: "replySound",
storage: "replySound",
checkbox: true,
setValue: "none",
text: {
head: "Sound(Reply)",
desc: "",
checkbox: sound
}
}, {
id: "favSound",
storage: "favSound",
checkbox: true,
setValue: "none",
text: {
head: "Sound(Fav)",
desc: "",
checkbox: sound
}
}, {
id: "btSound",
storage: "btSound",
checkbox: true,
setValue: "none",
text: {
head: "Sound(Boost)",
desc: "",
checkbox: sound
}
}, {
id: "followSound",
storage: "followSound",
checkbox: true,
setValue: "none",
text: {
head: "Sound(Follow)",
desc: "",
checkbox: sound
}
}
];
var postConstruction = [
{
id: "cw-text",
storage: "cw-text",
checkbox: false,
doubleText: false,
width: 150,
setValue: "",
text: {
head: "Default warining text",
desc: "",
after: ""
}
}, {
checkbox: false,
doubleText: true,
data: [
{
id: "cw_sentence",
storage: "cw_sentence",
width: 50,
setValue: 500,
text: { after: "lines above or" }
}, {
id: "cw_letters",
storage: "cw_letters",
width: 50,
setValue: 7000,
text: { after: "letters above" }
}
],
text: {
head: "Alert before posting a long toot.",
desc: "Show dialog whether you make too-long text hidden.",
}
}, {
id: "cws",
storage: "always-cw",
checkbox: true,
setValue: "no",
text: {
head: "Always CW set",
desc: "",
checkbox: yesno
}
}, {
id: "vis",
storage: "vis",
checkbox: true,
setValue: "public",
text: {
head: "Výchozí viditelnost",
desc: "",
checkbox: [
{
text: "Veřejné",
value: "public"
}, {
text: "Neuvedené",
value: "unlisted"
}, {
text: "Soukromé",
value: "private"
}, {
text: "Přímé",
value: "direct"
}, {
text: "Memory(memorized as each server)",
value: "memory"
}, {
text: "Default of your visibility(Set on preferences of Mastodon server)",
value: "useapi"
}
]
}
}, {
id: "img",
storage: "img",
checkbox: true,
setValue: "no-act",
text: {
head: "Posting images preferences",
desc: "",
checkbox: [
{
text: "Insert media URL",
value: "url"
}, {
text: "Insert nothig",
value: "no-act"
}
]
}
}, {
id: "box",
storage: "box",
checkbox: true,
setValue: "yes",
text: {
head: "Action of posting-box",
desc: "",
checkbox: [
{
text: "Folding",
value: "yes"
}, {
text: "Open after posting",
value: "no"
}, {
text: "Absolutely open",
value: "absolute"
}
]
}
}, {
id: "quote",
storage: "quote",
checkbox: true,
setValue: "nothing",
text: {
head: "Quote format",
desc: "",
checkbox: [
{
text: "Only URL",
value: "simple"
}, {
text: "URL and acct(mention to the user)",
value: "mention"
}, {
text: "URL, text and acct(mention to the user)",
value: "full"
}, {
text: "Disabled(Hide buttons on TLs)",
value: "nothing"
}
]
}
}, {
id: "main",
storage: "mainuse",
checkbox: true,
setValue: "remain",
text: {
head: "Default accounts of actions",
desc: "Main account can be set on Account Manager.",
checkbox: [
{
text: "Account you used recently",
value: "remain"
}, {
text: "Main account",
value: "main"
}
]
}
}, {
id: "sec",
storage: "sec",
checkbox: true,
setValue: "public",
text: {
head: "Secondary Toot Button",
desc: "",
checkbox: [
{
text: "Hidden",
value: "nothing"
}, {
text: "Veřejné",
value: "public"
}, {
text: "Neuvedené",
value: "unlisted"
}, {
text: "Soukromé",
value: "private"
}, {
text: "Přímé",
value: "direct"
}, {
text: "Local Only",
value: "local",
kirishima: true,
kirishimaText: "非対応インスタンスでは「未収載」になります。"
}
]
}
}, {
id: "zero",
storage: "emoji-zero-width",
checkbox: true,
setValue: "normal",
setValue: "no",
text: {
head: "Zero-width space when inserting emojis",
desc: "",
checkbox: yesno
}
}
]

254
app/view/cs/update.html Normal file
View File

@@ -0,0 +1,254 @@
<!doctype html>
<html lang="cs">
<head>
<title>Update - TheDesk</title>
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body>
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 10px;
text-align: right;
}
#start {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: calc(100vh - 2.5rem);
text-align: center;
}
#checkbox {
text-align: left;
}
a,
button,
input,
label,
i {
-webkit-app-region: no-drag;
}
#updskip {
display: flex;
justify-content: center;
align-items: center;
}
.skipbtn {
display: block;
float: left;
width: 200px;
height: 200px;
border: 1px solid;
margin-left: 5px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid;
overflow: hidden;
}
.skipbtn:hover {
background-color: #b3e5fc;
transition: all 0.3s ease-in-out;
}
#prog {
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
<div id="start">
<div id="box" class="show">
<h2>TheDesk</h2>
<p>Získejte nejnovější TheDesk</p>
<span id="now"></span><b id="ver"></b><br>
<span id="det"></span><br>
<button class="waves-effect btn windows hide" onclick="update('install')"
style="margin-left:15px;">Verze instalátoru</button>
<button class="waves-effect btn windows hide" onclick="update('portable')"
style="margin-left:15px;">Přenosná verze</button>
<button class="waves-effect btn linux hide" onclick="update('linux')"
style="margin-left:15px;">Začít</button>
<button class="waves-effect btn mac hide" onclick="update('mac')"
style="margin-left:15px;">Začít</button>
<br>
Máte problémy?<br>Prosím stáhněte si aktualizaci na <a href=\"https://thedesk.top\">oficiální stránce</a>.
</div>
<div id="skipper" class="hide">
<h4>Můžete ztratit úžasné nové funkce!</h4>
Přeskočit tuto aktualizaci<br>
<div id="updskip">
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light">
<div>Do dalšího načtení časové osy</div>
</a>
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light">
<div>Do příští verze</div>
</a>
</div>
<a class="pointer waves-effect" onclick="skipper();" style="margin-top:5px">Pokračovat v aktualizaci</a>
</div>
<div id="dlnow" class="hide">
<h4>Stahuji...</h4>
<h4 id="prog"></h4>
<div class="progress">
<div class="determinate" style="width: 0%"></div>
</div>
</div>
</div>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script>
function skipper() {
$("#dlnow").addClass("hide");
$("#box").toggleClass("show");
if ($("#box").hasClass("hide") && $("#skipper").hasClass("hide")) {
$("#skipper").removeClass("hide");
$("#skipper").addClass("show");
} else {
$("#box").toggleClass("hide");
$("#skipper").toggleClass("hide");
$("#skipper").toggleClass("show");
}
}
verck();
function update(sel) {
$("#box").toggleClass("show");
$("#box").toggleClass("hide");
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (sel == "install") {
if (bit == "x64") {
var url = json["winx64"];
var file = "TheDesk-setup.exe";
} else if (bit == "ia32") {
var url = json["winia32"];
var file = "TheDesk-setup-ia32.exe";
}
} else if (sel == "portable") {
if (bit == "x64") {
var url = json["winx64p"];
var file = "TheDesk.exe";
} else if (bit == "ia32") {
var url = json["winia32p"];
var file = "TheDesk-ia32.exe";
}
} else if (sel == "linux") {
if (bit == "x64") {
var url = json["linuxx64"];
var file = "TheDesk-linux-x64.zip";
} else if (bit == "ia32") {
var url = json["linuxia64"];
var file = "TheDesk-linux-ia32.zip";
}
} else if (sel == "mac") {
var url = json["mac"];
shell.openExternal(url);
return false;
}
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
postMessage(["sendSinmpleIpc", "quit"], "*")
}
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
}
function verck() {
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {
$('.linux').removeClass("hide")
} else if (platform == "darwin") {
$('.mac').removeClass("hide")
}
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
console.log(json);
if (platform == "win32") {
$("#ver").text(json.desk);
localStorage.setItem("next-ver", json.desk);
} else if (platform == "linux") {
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver", json.desk_linux);
} else if (platform == "darwin") {
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver", json.desk_mac);
}
var lang = "cs";
if (lang == "ja") {
$("#det").html(json.detail);
} else {
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver"));
});
}
function nextv() {
localStorage.setItem("new-ver-skip", "true");
window.close();
}
function enc(ver) {
var ver = ver.replace(/\s/g, "");
var ver = ver.replace(/\(/g, "-");
var ver = ver.replace(/\)/g, "");
var ver = ver.replace(/\[/g, "_");
var ver = ver.replace(/\]/g, "");
return ver;
}
</script>

158
app/view/de/acct.html Normal file
View File

@@ -0,0 +1,158 @@
<!doctype html>
<html lang="de">
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css">
<link href="../../css/userdata.css" rel="stylesheet" type="text/css">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<style>
.acct {
display: flex;
justify-content: space-around;
}
.card {
width: 400px;
background-color: #9e9e9e;
margin: 10px;
}
body,
html {
overflow-y: scroll;
}
#acct-list {
display: flex;
flex-wrap: wrap;
color: white;
align-items: flex-start
}
.lts {
font-size: 150%
}
.colorsel {
display: flex;
}
.card .colorsel div:not(.exc) {
width: 20px;
height: 20px;
}
.card .colorsel div.exc {
width: 40px;
height: 20px;
}
.first {
display: flex;
justify-content: center;
align-items: center
}
.first .hide-first {
display: none;
}
</style>
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body id="mainView">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.de.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<div class="hide-first">
<a href="index.html" class="btn waves-effect orange nex"
style="width:100%; max-width:200px;">Zurück</a><br>
<h5>Konten</h5>
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div>
<h5>Konto hinzufügen</h5><br>
<div id="add">
<div class="row">
<div class="col s8">
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>Code-Setup</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Als Misskey anmelden</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">
<span style="font-family:Open Sans;">Supports</span>
<div id="support" class="collection transparent"></div>
</div>
</div>
</div>
<div id="auth" style="display:none">
Fügen Sie den Code ein und schließen Sie den Browser.<br>
<input type="text" id="code" placeholder="Code">
<button class="btn waves-effect" onclick="code()">Auth</button><br>
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Lies die <a href=\"https://thedesk.top/how-to-misskey-login.html\">Doku (japanisch)</a> um dich bei Misskey einzuloggen.<br>
<input type="hidden" id="misskey-url">
<input type="text" id="misskey-key" placeholder="Code">
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
</div>
</div>
<div class="hide-first">
<h5>Hauptkonto</h5>
<div class="input-field" style="width:300px"><span data-trans="your_acct">Konto auswählen</span>
<br>
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label>
</div>
Some instance data by <a href="https://instances.social" target="_blank">instances.social API</a><br>
<h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br>
<span id="ins-desc"></span><br>
<img src="../../img/loading.svg" id="ins-prof" width="200"><br>
<br>
Domain:<span id="ins-name"></span><br>
Föderierte Server:<span id="ins-connect"></span><br>
Toots:<span id="ins-toot"></span><br>
Nutzer:<span id="ins-user"></span>Nutzer<br>
Verbindung:<span id="ins-per"></span>%<br>
Mastodon Version:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/common/sha256.js"></script>
<script type="text/javascript" src="../../js/login/tkn.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

1116
app/view/de/index.html Normal file

File diff suppressed because it is too large Load Diff

476
app/view/de/setting.html Normal file
View File

@@ -0,0 +1,476 @@
<!doctype html>
<html lang="de" style="overflow:scroll">
<head>
<title>Settings - TheDesk</title>
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<style>
input {
max-height: 50px !important
}
.pcr-result {
height: 1rem !important;
}
</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.de.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>Einstellungen</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>Systemeinstellungen
</div>
<div class="collapsible-body">
<h5>Sprachen</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
<a onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a><a onclick="changelang('bg')" class="pointer" style="margin-right:5px;">български</a><a onclick="changelang('cs')" class="pointer" style="margin-right:5px;">Česky</a><a onclick="changelang('de')" class="pointer" style="margin-right:5px;">Deutsch</a>
<h5>Import und Export von Einstellungen</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
style="width:100%; max-width:200px;">Export</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">Import</button>
<div id="envView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Benachrichtigungen testen</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Ändern</button>
</template><br>
</template>
</div>
<h5>Schriftart</h5>
Wählen Sie Ihre Lieblingsschrift. 'Select'(nur Windows/ macOS)<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Auswahl</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br>
<input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Speichern</button>
<br>
<h5>Ordner zum Speichern</h5>
TheDesk verwendet diesen Ordner, wenn es versucht Bilder zu speichern oder Screenshots zu machen.<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Ändern</button>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">color_lens</i>Designs
</div>
<div class="collapsible-body">
<h4>Design auswählen</h4>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
<h4>Bearbeiten und hinzufügen von eigenen Designs</h4>
<div style="width:300px" id="edit-selector" data-add="Neues hinzufügen">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">Neues hinzufügen</option>
</select>
</div>
<h5>Name</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="Name...">
<h5>Über dieses Design</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="Über dieses Design..."></textarea></div>
<h5>Farbschema</h5>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>Hintergrund der Komponenten
<div id="color-picker0-wrap">
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value">
</div>
<div>
<h5>Secondary</h5>Hintergrundfarbe
<div id="color-picker1-wrap">
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value">
</div>
<div>
<h5>Texts</h5>Textfarbe
<div id="color-picker2-wrap">
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value">
</div>
<div>
<h5>Accent</h5>Hintergrund des Boosts
<div id="color-picker3-wrap">
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value">
</div>
</div>
<button class="btn-large waves-effect" onclick="customComp()">Ändern</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Löschen</button><br><br>
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
Teilen Sie diesen Code mit anderen TheDesk. Teilen Sie diesen Code nicht mit MiAS.
<h4>Import von eigenen Designs</h4>
Mehr Designs auf: <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a><br>
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>Verlaufseinstellungen
</div>
<div class="collapsible-body">
<div id="tlView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Ändern</button>
</template><br>
</template>
</div>
<h5>Eigener Ton</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span
id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span
id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span
id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span
id="c4-file"></span><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>Einstellungen für Tröts Senden
</div>
<div class="collapsible-body">
<div id="postView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Ändern</button>
</template><br>
</template>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">keyboard</i>Tastaturkürzel Einstellungen
</div>
<div class="collapsible-body">
<h5>Schnell Einfügen</h5>
Sie können Buchstaben und Emojis mit 3-Tasten-Kombination einfügen<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Speichern</button><br><br>
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Speichern</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Speichern</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>Einstellungen für Stumm & Hervorheben
</div>
<div class="collapsible-body">
<h5>Client Stumm</h5>
<div id="mute-cli"></div>
<h5>Client Hervorheben</h5>
Klicken Sie auf den Client-Namen des Tröts, um Ausblenden oder Hervorheben umzuschalten.
<h5>Wörter Ausblenden</h5>
\"Enter\" zum setzen<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Speichern</button>
<h5>Wörter Hervorheben</h5>
\"Enter\" zum setzen<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Speichern</button>
<h5>Benutzer Hervorheben</h5>
Set on users data modals.
<span class="emphasized"> Diese Farbe zum Hervorheben verwenden </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fab fa-spotify"></i>Spotify und NowPlaying Einstellungen
</div>
<div class="collapsible-body">
<br><br>
Klick <i class="material-icons" style="font-size:24px;">music_note</i>Symbol für NowPlaying<br>
<h5>Kontoverbindung</h5>
TheDesk speichert Ihre Daten auf dem thedesk.top Server.<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Speichern</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>Verbinden</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>Trennen</a>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Speichern</button>
<h5>Das Artwork von Spotify anhängen</h5>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Ja</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>Nein</span>
</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>Einstellungen Vorlesefunktion
</div>
<div class="collapsible-body">
<h5>Geschwindigkeit</h5>
1-100(Standard:10)<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
style="width:500px; max-width:100%" /></p>
<h5>Stimmlage</h5>
0-100(Standard:50)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
style="width:500px; max-width:100%" /></p>
<h5>Lautstärke</h5>
0-100(Standard:100)<br>
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
style="width:500px; max-width:100%" /></p>
<h5>Test</h5>
<input type="text" style="width:350px" id="voicetxt" value="TheDesk ist ein Open-Source Mastodon Client für PC.">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
id="testplay">Abspielen/Stoppen</button><br>
<br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Speichern</button>
</div>
</li>
</ul>
<br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
class="material-icons left">undo</i>Zurück</a>
<br>
<br>Tastenkombinationen
<li>Ctrl+1-9:Wechsle zu n(1-9)ten Spalte</li>
<li>N:Tröt-Box öffnen</li>
<li>X:Tröt-Box umschalten</li>
<li>Ctrl+Enter:Senden</li>
<li>Ctrl+Enter+Shift:Senden (Zweit-Tröt)</li>
<li>Alt+Enter:Zweite Tröt-Tasten</li>
<li>Ctrl+E:Markiere alle Benachrichtigungen als gelesen.</li>
<li>Ctrl+U:Select the top & left(No.1 column) toot</li>
<li>Esc:Tröt-Box ausblenden</li>
<li>F5:Alles neu laden</li>
<li>Ctrl+Shift+C:Eingabe löschen</li>
<li>Ctrl+Shift+S:Einstellungen</li>
<li>Ctrl+Shift+M:Kontenverwaltung</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:Ausgewähltes Profil anzeigen</li>
<li>←/→:Nächstes oder vorheriges Bild anzeigen</li>
<li>Mousewheel:Zoom a image</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
Wenn ein Tröt ausgewählt ist:
<li>F:Diesen Tröt favorisieren</li>
<li>B:Diesen Tröt verstärken</li>
<li>R:Auf diesen Tröt antworten</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Alle Daten löschen. Kein Rückgängig mehr möglich! Fortfahren?')){ localStorage.clear(); location.href='index.html'; }"><i
class="material-icons left">delete</i>Reset(Gefährlich)</button><br><br>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
class="material-icons left">info</i>Über TheDesk</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
class="material-icons left">web</i>Homepage</a>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Unterstützen(Pixiv FANBOX)</a>
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Unterstützen(Patreon)</a>
<a href="https://liberapay.com/cutls" class="btn waves-effect black-text"
style="width:100%; max-width:500px; background-color: #f6c915"><i class="material-icons left">trending_up</i>Unterstützen(Liberapay)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
class="material-icons left">list</i>Hilfe/Docs</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
style="width:100%; max-width:500px;"><i class="fab fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@cutls.com" class="btn waves-effect blue lighten-2"
style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25"
style="padding-top:5px;">Developer: Cutls@cutls.com</a>
<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
class="pointer">Nach Updates suchen</a><br>
<a href="oss.html">OSS License</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
Policy</a>
<br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>)
<br>
</span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

552
app/view/de/setting.vue.js Normal file
View File

@@ -0,0 +1,552 @@
var yesno = [
{
text: "Ja",
value: "yes"
}, {
text: "Nein",
value: "no"
}
];
var sound = [
{
text: "Ohne",
value: "none"
}, {
text: "Standard",
value: "default"
}, {
text: "Custom 1",
value: "c1"
}, {
text: "Custom 2",
value: "c2"
}, {
text: "Custom 3",
value: "c3"
}, {
text: "Custom 4",
value: "c4"
}
];
var envConstruction = [
{
id: "popup",
storage: "popup",
checkbox: false,
doubleText: false,
setValue: 0,
width: 50,
text: {
head: "Popup-Benachrichtigung(unter Windows)",
desc: "Bei \"0\" Ausgeschaltet.",
after: "Sek"
}
}, {
id: "notf",
storage: "nativenotf",
checkbox: true,
setValue: "yes",
text: {
head: "System Benachrichtigungen",
desc: "Dies funktioniert nicht mit der Portablen Windows Version.",
checkbox: yesno
}
}, {
id: "width",
storage: "width",
checkbox: false,
doubleText: false,
width: 50,
setValue: 300,
text: {
head: "Minimale Breite der Spalten",
desc: "Die Scroll-Leiste wird angezeigt, wenn Spalten breiter als das Fenster sind.",
after: "px über"
}
}, {
id: "fixwidth",
storage: "fixwidth",
checkbox: false,
doubleText: false,
setValue: 300,
width: 50,
text: {
head: "Minimale Breite des TweetDeck-Browsers",
desc: "",
after: "px über"
}
}, {
id: "size",
storage: "size",
checkbox: false,
doubleText: false,
width: 50,
setValue: 13,
text: {
head: "Schriftgröße",
desc: "<span style=\"font-size:13px\">13px(Absoluter Wert)</span>",
after: "px"
}
}, {
id: "ha",
storage: "ha",
checkbox: true,
setValue: false,
text: {
head: "Hardwarebeschleunigung deaktivieren",
desc: "Automatischer Neustart",
checkbox: [
{
text: "Ja",
value: "true"
}, {
text: "Nein",
value: "false"
}
]
}
}
];
var tlConstruction = [
{
id: "time",
storage: "datetype",
checkbox: true,
setValue: "absolute",
text: {
head: "Zeitformat",
desc: "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"<br>Absolutes Format:\"23:25:21\",\"2017/12/30 23:59:00\"<br>Gemischtes Format:Die heute geposteten Zahn sind relativ formatiert, andere sind absolut formatiert.",
checkbox: [
{
text: "Relativ",
value: "relative"
}, {
text: "Absolut",
value: "absolute"
}, {
text: "Sowohl relativ als auch absolut",
value: "double"
}, {
text: "Gemischt",
value: "medium"
}
]
}
}, {
id: "ul",
storage: "locale",
checkbox: true,
setValue: "yes",
text: {
head: "Server's unique locale",
desc: "Dieser Wert ist auf einigen japanischen Servern verfügbar",
checkbox: yesno
}
}, {
id: "nsfw",
storage: "nsfw",
checkbox: true,
setValue: "yes",
text: {
head: "NSFW Bilder ausblenden",
desc: "Starker Unschärfeeffekt",
checkbox: yesno
}
}, {
id: "cw",
storage: "cw",
checkbox: true,
setValue: "yes",
text: {
head: "Hide CW contents",
desc: "",
checkbox: yesno
}
}, {
id: "rp",
storage: "replyct",
checkbox: true,
setValue: "hidden",
text: {
head: "Aussehen der Antwortzähler",
desc: "",
checkbox: [
{
text: "1+ anzeigen, bei mehr als einer Antworten.",
value: "hidden"
}, {
text: "1+ anzeigen, bei mehr als einer Antworten.",
value: "all"
}
]
}
}, {
id: "gif",
storage: "gif",
checkbox: true,
setValue: "yes",
text: {
head: "Animierte GIF-Bilder abspielen",
desc: "",
checkbox: yesno
}
}, {
id: "tag",
storage: "tag-range",
checkbox: true,
setValue: "local",
text: {
head: "Suche im Tag-Verlauf",
desc: "",
checkbox: [
{
text: "Auch in Verbundenen Netzwerken",
value: "all"
}, {
text: "Nur im lokalen Netzwerk",
value: "local"
}
]
}
}, {
id: "via",
storage: "viashow",
checkbox: true,
setValue: "no",
text: {
head: "Show via",
desc: "",
checkbox: yesno
}
}, {
id: "mov",
storage: "mouseover",
checkbox: true,
setValue: "no",
text: {
head: "Aktionsbuttons ausblenden wenn der Mauszeiger weg ist.",
desc: "Du wirst vielleicht das Gefühl haben, dass \"Mouseover\" unangenehm ist :-(",
checkbox: [
{
text: "Maus drüber zum Anzeigen",
value: "yes"
}, {
text: "Klicken um anzuzeigen",
value: "click"
}, {
text: "Nein",
value: "no"
}
]
}
}, {
id: "notfm",
storage: "setasread",
checkbox: true,
setValue: "yes",
text: {
head: "Benachrichtigungs-Markierung, rote Klingel und Zähler anzeigen(wenn Sie eine Benachrichtigungsspalte haben.)",
desc: "",
checkbox: yesno
}
}, {
checkbox: false,
doubleText: true,
data: [
{
id: "sentence",
storage: "sentence",
width: 50,
setValue: 500,
text: { after: "Zeilen über oder" }
}, {
id: "letters",
storage: "letters",
width: 50,
setValue: 7000,
text: { after: "Buchstaben über" }
}
],
text: {
head: "Automatisches Zusammenfalten",
desc: "TheDesk faltet nicht Tröts von 5 Zeichen oder weniger. Zusammengefaltet, werden keine Zeilen angezeigt. TheDesk zählen nur richtige Zeilen. (Zeilenumbrüche nicht.)",
}
}, {
id: "img-height",
storage: "img-height",
checkbox: false,
doubleText: false,
width: 80,
setValue: 200,
text: {
head: "Höhe der Bilder",
desc: "Option:Setze \"full\" für Unbeschnitten.",
after: "px"
}
}, {
id: "ticker",
storage: "ticker_ok",
checkbox: true,
setValue: "no",
text: {
head: "Aktiviere #InstanceTicker",
desc: "Zeigt bunte Sticker über den Server. <a href=\"https://wee.jp/\">Über #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
checkbox: yesno
}
}, {
id: "anime",
storage: "animation",
checkbox: true,
setValue: "yes",
text: {
head: "Animation der Verläufe",
desc: "",
checkbox: yesno
}
}, {
id: "replySound",
storage: "replySound",
checkbox: true,
setValue: "none",
text: {
head: "Ton bei Antwort",
desc: "",
checkbox: sound
}
}, {
id: "favSound",
storage: "favSound",
checkbox: true,
setValue: "none",
text: {
head: "Ton bei Favorit",
desc: "",
checkbox: sound
}
}, {
id: "btSound",
storage: "btSound",
checkbox: true,
setValue: "none",
text: {
head: "Ton bei Verstärkung",
desc: "",
checkbox: sound
}
}, {
id: "followSound",
storage: "followSound",
checkbox: true,
setValue: "none",
text: {
head: "Ton bei Folgen",
desc: "",
checkbox: sound
}
}
];
var postConstruction = [
{
id: "cw-text",
storage: "cw-text",
checkbox: false,
doubleText: false,
width: 150,
setValue: "",
text: {
head: "Standard Warnung",
desc: "",
after: ""
}
}, {
checkbox: false,
doubleText: true,
data: [
{
id: "cw_sentence",
storage: "cw_sentence",
width: 50,
setValue: 500,
text: { after: "Zeilen über oder" }
}, {
id: "cw_letters",
storage: "cw_letters",
width: 50,
setValue: 7000,
text: { after: "Buchstaben über" }
}
],
text: {
head: "Warnung vor dem Versenden eines langen Toots.",
desc: "Dialog anzeigen, ob Sie den zu langen Text verstecken möchten.",
}
}, {
id: "cws",
storage: "always-cw",
checkbox: true,
setValue: "no",
text: {
head: "Always CW set",
desc: "",
checkbox: yesno
}
}, {
id: "vis",
storage: "vis",
checkbox: true,
setValue: "public",
text: {
head: "Standardsichtbarkeit",
desc: "",
checkbox: [
{
text: "Öffentlich",
value: "public"
}, {
text: "Nicht aufgeführt",
value: "unlisted"
}, {
text: "Privat",
value: "private"
}, {
text: "Direkt",
value: "direct"
}, {
text: "Merken (bei jeden Server gespeichert)",
value: "memory"
}, {
text: "Ihrer Standard-Sichtbarkeit (Einstellungen des Mastodon-Servers setzen)",
value: "useapi"
}
]
}
}, {
id: "img",
storage: "img",
checkbox: true,
setValue: "no-act",
text: {
head: "Bilder-Einstellungen fürs Senden",
desc: "",
checkbox: [
{
text: "MedienURL einfügen",
value: "url"
}, {
text: "Nichts einfügen",
value: "no-act"
}
]
}
}, {
id: "box",
storage: "box",
checkbox: true,
setValue: "yes",
text: {
head: "Verhalten der Posting-Box",
desc: "",
checkbox: [
{
text: "Zusammengeklappt",
value: "yes"
}, {
text: "Nach dem Posting offen",
value: "no"
}, {
text: "Alles geöffnet",
value: "absolute"
}
]
}
}, {
id: "quote",
storage: "quote",
checkbox: true,
setValue: "nothing",
text: {
head: "Zitierformat",
desc: "",
checkbox: [
{
text: "Nur URL",
value: "simple"
}, {
text: "URL und Name (Hinweis auf den Benutzer)",
value: "mention"
}, {
text: "URL, Text und Name(Hinweis auf den Benutzer)",
value: "full"
}, {
text: "Deaktiviert (Taste in Verlauf ausgeblendet)",
value: "nothing"
}
]
}
}, {
id: "main",
storage: "mainuse",
checkbox: true,
setValue: "remain",
text: {
head: "Standard-Konto für Aktionen",
desc: "Das Hauptkonto kann in der Kontoverwaltung gestellt werden.",
checkbox: [
{
text: "Konto, das Sie kürzlich verwendet haben",
value: "remain"
}, {
text: "Hauptkonto",
value: "main"
}
]
}
}, {
id: "sec",
storage: "sec",
checkbox: true,
setValue: "public",
text: {
head: "Zweite Tröt-Tasten",
desc: "",
checkbox: [
{
text: "Versteckt",
value: "nothing"
}, {
text: "Öffentlich",
value: "public"
}, {
text: "Nicht aufgeführt",
value: "unlisted"
}, {
text: "Privat",
value: "private"
}, {
text: "Direkt",
value: "direct"
}, {
text: "Nur lokal",
value: "local",
kirishima: true,
kirishimaText: "非対応インスタンスでは「未収載」になります。"
}
]
}
}, {
id: "zero",
storage: "emoji-zero-width",
checkbox: true,
setValue: "normal",
setValue: "no",
text: {
head: "Emojis ohne Abstand Einfügen",
desc: "",
checkbox: yesno
}
}
]

254
app/view/de/update.html Normal file
View File

@@ -0,0 +1,254 @@
<!doctype html>
<html lang="de">
<head>
<title>Update - TheDesk</title>
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body>
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 10px;
text-align: right;
}
#start {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: calc(100vh - 2.5rem);
text-align: center;
}
#checkbox {
text-align: left;
}
a,
button,
input,
label,
i {
-webkit-app-region: no-drag;
}
#updskip {
display: flex;
justify-content: center;
align-items: center;
}
.skipbtn {
display: block;
float: left;
width: 200px;
height: 200px;
border: 1px solid;
margin-left: 5px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid;
overflow: hidden;
}
.skipbtn:hover {
background-color: #b3e5fc;
transition: all 0.3s ease-in-out;
}
#prog {
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
<div id="start">
<div id="box" class="show">
<h2>TheDesk</h2>
<p>Neusten TheDesk holen.</p>
<span id="now"></span><b id="ver"></b><br>
<span id="det"></span><br>
<button class="waves-effect btn windows hide" onclick="update('install')"
style="margin-left:15px;">Installer Version</button>
<button class="waves-effect btn windows hide" onclick="update('portable')"
style="margin-left:15px;">Portable Version</button>
<button class="waves-effect btn linux hide" onclick="update('linux')"
style="margin-left:15px;">Start</button>
<button class="waves-effect btn mac hide" onclick="update('mac')"
style="margin-left:15px;">Start</button>
<br>
Gibt es Probleme?<br>Bitte von <a href=\"https://thedesk.top\">Offizielle Homepage</a> herunterladen.
</div>
<div id="skipper" class="hide">
<h4>Du kannst ein cooles Erlebnis verpassen!</h4>
Update überspringen<br>
<div id="updskip">
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light">
<div>Bis zur nächsten Verlaufsaktualisierung</div>
</a>
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light">
<div>Bis zur nächsten Version</div>
</a>
</div>
<a class="pointer waves-effect" onclick="skipper();" style="margin-top:5px">Aktualisieren fortsetzen</a>
</div>
<div id="dlnow" class="hide">
<h4>Herunterladen...</h4>
<h4 id="prog"></h4>
<div class="progress">
<div class="determinate" style="width: 0%"></div>
</div>
</div>
</div>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script>
function skipper() {
$("#dlnow").addClass("hide");
$("#box").toggleClass("show");
if ($("#box").hasClass("hide") && $("#skipper").hasClass("hide")) {
$("#skipper").removeClass("hide");
$("#skipper").addClass("show");
} else {
$("#box").toggleClass("hide");
$("#skipper").toggleClass("hide");
$("#skipper").toggleClass("show");
}
}
verck();
function update(sel) {
$("#box").toggleClass("show");
$("#box").toggleClass("hide");
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (sel == "install") {
if (bit == "x64") {
var url = json["winx64"];
var file = "TheDesk-setup.exe";
} else if (bit == "ia32") {
var url = json["winia32"];
var file = "TheDesk-setup-ia32.exe";
}
} else if (sel == "portable") {
if (bit == "x64") {
var url = json["winx64p"];
var file = "TheDesk.exe";
} else if (bit == "ia32") {
var url = json["winia32p"];
var file = "TheDesk-ia32.exe";
}
} else if (sel == "linux") {
if (bit == "x64") {
var url = json["linuxx64"];
var file = "TheDesk-linux-x64.zip";
} else if (bit == "ia32") {
var url = json["linuxia64"];
var file = "TheDesk-linux-ia32.zip";
}
} else if (sel == "mac") {
var url = json["mac"];
shell.openExternal(url);
return false;
}
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
postMessage(["sendSinmpleIpc", "quit"], "*")
}
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
}
function verck() {
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {
$('.linux').removeClass("hide")
} else if (platform == "darwin") {
$('.mac').removeClass("hide")
}
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
console.log(json);
if (platform == "win32") {
$("#ver").text(json.desk);
localStorage.setItem("next-ver", json.desk);
} else if (platform == "linux") {
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver", json.desk_linux);
} else if (platform == "darwin") {
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver", json.desk_mac);
}
var lang = "de";
if (lang == "ja") {
$("#det").html(json.detail);
} else {
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver"));
});
}
function nextv() {
localStorage.setItem("new-ver-skip", "true");
window.close();
}
function enc(ver) {
var ver = ver.replace(/\s/g, "");
var ver = ver.replace(/\(/g, "-");
var ver = ver.replace(/\)/g, "");
var ver = ver.replace(/\[/g, "_");
var ver = ver.replace(/\]/g, "");
return ver;
}
</script>

View File

@@ -4,13 +4,12 @@
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href='../../css/tl.css' rel='stylesheet' type='text/css'>
<link href='../../css/userdata.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css">
<link href="../../css/userdata.css" rel="stylesheet" type="text/css">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<style>
.acct {
display: flex;
@@ -74,10 +73,11 @@
</head>
<body id="mainView">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
@@ -123,7 +123,7 @@
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Read <a href="https://thedesk.top/how-to-misskey-login.html">Docs(ja)</a> to login Misskey.<br>
Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.<br>
<input type="hidden" id="misskey-url">
<input type="text" id="misskey-key" placeholder="Code">
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>

View File

@@ -2,18 +2,16 @@
<html lang="en">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css">
<link href="../../css/userdata.css" rel="stylesheet" type="text/css">
<link href="../../css/post.css" rel="stylesheet" type="text/css">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/sort.css" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<!--
<script type="text/javascript">
@@ -25,18 +23,8 @@
</head>
<body>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script>
var ver = "Usamin (18.6.1)";
var ver = "Usamin (18.8.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -161,8 +149,8 @@
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="Mark media as sensitive"
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger"
data-target="dropdown1" id="vis-icon">public</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1"
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="Hide text behind warning">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray"
onclick="fileselect()" title="Attach..">photo_library</i></span></span>
@@ -218,7 +206,7 @@
<a onclick="nowplaying('spotify');">NowPlaying(Spotify)</a>
</li>
<li>
<a onclick="nowplaying('itunes');">NowPlaying</a>
<a onclick="nowplaying('itunes');">NowPlaying(macOS)</a>
</li>
<li>
<a onclick="schedule();">Scheduled toot</a>
@@ -233,9 +221,9 @@
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()"
<button class="btn waves-effect unmize toot-btn-group" onclick="post()"
id="toot-post-btn">Toot</button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()"
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()"
id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon"
title="Secondary Toot">lock_open</i></button>
</div>
@@ -326,7 +314,7 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible"id="det-col">
<ul class="collapsible" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>Local TL after this toot)
@@ -464,7 +452,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">Feature on profile</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">Open in browser</a><br>
onclick="profbrws()">Open in browser</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data"
id="his-main-acct" onclick="setMain()" style="width: calc(100% - 10px)">Set it an main account</a><br>
</div><br>
<div id="his-matching-list">
Get people resembling this user.<br>
@@ -622,7 +612,7 @@
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn"
onclick="follow()">Follow</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">Mute</a>
onclick="muteDo()">Mute</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">Block</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
@@ -663,7 +653,7 @@
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls>
<video src="" id="video" style="max-width:100%; max-height:100%;" controls loop="true" autoplay="true">
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -676,26 +666,24 @@
<a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br>
<div id="release-Usamin_18-6-1" class="release-do" style="display:none; ">
<div id="release-Usamin_18-8-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.6.1)</h5>
リプライができない不具合を修正<br>
ワードフィルター/強調の適用がおかしい不具合<br>
テキストエリアのフォントが設定通りにならない不具合<br>
<h5>Release Note Usamin (18.6.0)</h5>
・アカウント選択のデザイン修正。クリック直後に閉じてしまうバグを修正。<br>
投票済みのアンケートについて修正。<br>
<b>セキュリティの大幅な強化。</b><br>
ご注意<img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">: TweetDeck統合は設定で有効にしないと使えなくなりました。<br>
Adobeフォトエディタの廃止
<br>
<h5>ThinkingDeskラベル</h5>
<img src="../../img/thinkingdesk.png" style="width:100px;" draggable="false"><br>
手作りマットラベル。貼ってはがせる。300円なのでポイントの余りでどうぞ。<br>
<a href="https://item.mercari.com/jp/m822743330" target="_blank">メルカリ</a>へ。
<h5>Release Note Usamin (18.8.0)</h5>
トレンドタグに対応<br>
チェコ語, ブルガリア語, ドイツ語に対応<br>
TheDeskお知らせ機能の仕様更新<br>
・支援手段にLiberapayを追加<br>
・アイコンを描きなおした<br>
#InstanceTicker の仕様変更に対応<br>
起動がだいぶ速くなったと思う<br>
一部master追従インスタンスでAPIが削除されたことに対する対応<br>
アンケートの投票時のバグを修正<br>
・ストリーミング再接続機能をやめてカラムをリロードする機能を追加<br>
・カラムを追加, 削除するときに全体を再読込しないようになった<br>
・Windows向けNowPlayingを削除(実装的, ライセンス的問題です)
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>
@@ -712,6 +700,10 @@
target="_blank">
Support on Patreon
</a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls"
target="_blank" style="background-color: #f6c915">
Liberapay
</a>
<a class="btn-share btn waves-effect waves-light blue"
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
Amazon Wish List
@@ -911,7 +903,7 @@
</label>
<br>
<span class="sml">Filtered toots will disappear irreversibly, even if filter is later removed</span><br>
Expire after<span class="sml">Unset or "0" means "Never"<b>This value may contain some error</b></span><br><br>
Expire after<span class="sml">Unset or \"0\" means \"Never\"<b>This value may contain some error</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">day(s)
<input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">hour(s)
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">minute(s)<br>
@@ -942,17 +934,17 @@
<!--TLのTL-->
<div id="timeline-container">
<div id="something-wrong">
<img src="" style="width:150px;margin:5px;display:none;" draggable="false">
<div>Internal error: please clear all data(at setting page) <b>All data will be deleted.</b></div>
<img src="../../img/desk.svg" style="width:150px;margin:5px;display:none;" draggable="false">
<div class="stw" style="display: none">Internal error: please clear all data(at setting page) <b>All data will be deleted.</b></div>
</div>
</div>
</div>
</div>
<!--bottom-->
<div id="bottom" class="reverse">
<div id="bottom" class="reverse hide">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect indigo"
<button id="posttgl" class="btn waves-effect"
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>Toot
@@ -1037,6 +1029,10 @@
target="_blank">
Support on Patreon
</a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls"
target="_blank" style="background-color: #f6c915">
Liberapay
</a>
</div>
<div id="support-btm-right">
<h5>Once</h5>
@@ -1061,6 +1057,20 @@
<!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio>
<!--JS-->
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
@@ -1086,7 +1096,6 @@
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>

View File

@@ -11,12 +11,11 @@
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<link href="../../node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<meta charset="utf-8">
<style>
input {
@@ -30,13 +29,14 @@
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>Preferences</h4>
<ul class="collapsible" data-collapsible="accordion">
@@ -47,7 +47,7 @@
<div class="collapsible-body">
<h5>Languages</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
<a onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a>
<a onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a><a onclick="changelang('bg')" class="pointer" style="margin-right:5px;">български</a><a onclick="changelang('cs')" class="pointer" style="margin-right:5px;">Česky</a><a onclick="changelang('de')" class="pointer" style="margin-right:5px;">Deutsch</a>
<h5>Import and export of preferences</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
style="width:100%; max-width:200px;">Export</button>
@@ -57,7 +57,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Notification test</a><br></template>
@@ -127,6 +127,10 @@
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
@@ -193,7 +197,7 @@
placeholder="JSON style" readonly><br>
Share this code with other TheDesk. Do not share this code with MiAS.
<h4>Import of custom themes</h4>
Get more themes on <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br>
Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a><br>
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
@@ -207,7 +211,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -254,7 +258,7 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
@@ -298,7 +302,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
</div>
</li>
<li>
@@ -325,40 +328,9 @@
</li>
<li>
<div class="collapsible-header">
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
<i class="fab fa-spotify"></i>Spotify and NowPlaying Preferences
</div>
<div class="collapsible-body">
<h5>NowPlaying Provider(Windows)</h5>
macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a> is required. And MusicBee requires CAD.<br>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<span>AIMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
<span>iTunes</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm"
value="MEDIAMONKEY" />
<span>MediaMonkey</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
<span>Winamp</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<span>WMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<span>WLM</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<span>CAD</span>
</label>
<br><br>
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
<h5>Account Connection</h5>
@@ -371,21 +343,23 @@
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>Disconnect</a>
<h5>Edit a template</h5>
<br>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify<br>
macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}<br>
Windows:{song}:Song name/{album}:Album name/{artist}:Artist name<br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
<h5>Attach an Artwork of Spotify</h5>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Yes</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>No</span>
</label>
@@ -430,6 +404,7 @@
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:Select the top & left(No.1 column) toot</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
@@ -443,13 +418,15 @@
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Space:ゼロ幅スペース</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
When a toot is selected:
<li>F:Favourite this toot</li>
<li>B:Boost this toot</li>
<li>R:Reply to this toot</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i
@@ -462,10 +439,12 @@
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Pixiv FANBOX)</a>
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Patreon)</a>
<a href="https://liberapay.com/cutls" class="btn waves-effect black-text"
style="width:100%; max-width:500px; background-color: #f6c915"><i class="material-icons left">trending_up</i>Support(Liberapay)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
class="material-icons left">list</i>Help/Docs(Constructing)</a>
class="material-icons left">list</i>Help/Docs</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
style="width:100%; max-width:500px;"><i class="fab fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@cutls.com" class="btn waves-effect blue lighten-2"
style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25"
style="padding-top:5px;">Developer: Cutls@cutls.com</a>

Some files were not shown because too many files have changed in this diff Show More