Compare commits
105 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9cca85db3 | ||
|
|
07b203b719 | ||
|
|
a636c745e4 | ||
|
|
e9024312a7 | ||
|
|
edbe3c164f | ||
|
|
8991cb5a96 | ||
|
|
873a8fd229 | ||
|
|
d0ddc58160 | ||
|
|
6eebfed609 | ||
|
|
c93326d218 | ||
|
|
a03c5c0ecf | ||
|
|
0380251294 | ||
|
|
d8f857e05d | ||
|
|
7a06a2b192 | ||
|
|
771db8c3ad | ||
|
|
9a800639e6 | ||
|
|
550c7b1805 | ||
|
|
ad7c7ffa66 | ||
|
|
57978bd152 | ||
|
|
5cd72a538c | ||
|
|
d439169c63 | ||
|
|
da39e0ded6 | ||
|
|
823fae5eac | ||
|
|
4f3a7c47e3 | ||
|
|
bd8d480e07 | ||
|
|
a09c031dbe | ||
|
|
1fee94846d | ||
|
|
4fb37525d5 | ||
|
|
8f25557f20 | ||
|
|
cb47eabed9 | ||
|
|
f8823a4c5a | ||
|
|
7fdd5964cc | ||
|
|
3aadcaef0f | ||
|
|
f58d4f349b | ||
|
|
9bb8ec0b66 | ||
|
|
ec9a14d63b | ||
|
|
82a00f4d1e | ||
|
|
af97f88d0a | ||
|
|
4c375e2d0a | ||
|
|
53cd49d4e8 | ||
|
|
d20777ed18 | ||
|
|
202e389c20 | ||
|
|
707a5b2033 | ||
|
|
d0322c7bda | ||
|
|
494a4e90d6 | ||
|
|
d1968a2e69 | ||
|
|
51e6909f77 | ||
|
|
cec46faf19 | ||
|
|
53f880ab97 | ||
|
|
cc20b0a7c0 | ||
|
|
efac88db4c | ||
|
|
2e1c076b5f | ||
|
|
5a03df6ee9 | ||
|
|
ade5893183 | ||
|
|
8a17e737f9 | ||
|
|
94c1ff3731 | ||
|
|
4e5fe2fc91 | ||
|
|
f88ed31e38 | ||
|
|
7df51c161b | ||
|
|
b5d1686c12 | ||
|
|
a1048b3243 | ||
|
|
7965e7c742 | ||
|
|
932e6731c9 | ||
|
|
253f742332 | ||
|
|
972ea9f5ed | ||
|
|
0c1191e362 | ||
|
|
426e48325c | ||
|
|
6c86825732 | ||
|
|
09d3643b19 | ||
|
|
ed93d5b4f2 | ||
|
|
f0d7d84f8e | ||
|
|
05fab4c45c | ||
|
|
892872869b | ||
|
|
0db7ed4a33 | ||
|
|
54e12db08b | ||
|
|
5f3257a83b | ||
|
|
f333595817 | ||
|
|
cc1018c65d | ||
|
|
1c16a5f4a0 | ||
|
|
0ad7bf9036 | ||
|
|
1670c0bc08 | ||
|
|
f1c4276d06 | ||
|
|
50bfbbd755 | ||
|
|
f5afafe26a | ||
|
|
c524777505 | ||
|
|
8155baa07d | ||
|
|
32c56dcf6a | ||
|
|
6f25ece72d | ||
|
|
0df8baa7bf | ||
|
|
14c647ca46 | ||
|
|
f2ff82c810 | ||
|
|
2ce9f55f28 | ||
|
|
4c3c1ac56e | ||
|
|
4aa14a14a2 | ||
|
|
a398fae023 | ||
|
|
100bd648a9 | ||
|
|
7556e5560d | ||
|
|
931afc3dd2 | ||
|
|
b25244aa9a | ||
|
|
abe3a2ccb6 | ||
|
|
f7a80da21b | ||
|
|
e11f0293fe | ||
|
|
5ec617a778 | ||
|
|
eb86966d33 | ||
|
|
e44014a1a9 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,8 +5,6 @@
|
|||||||
TheDesk-*
|
TheDesk-*
|
||||||
app/build
|
app/build
|
||||||
build
|
build
|
||||||
make.js
|
|
||||||
make_js.js
|
|
||||||
app/.DS_Store
|
app/.DS_Store
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.vs/*
|
.vs/*
|
||||||
|
|||||||
25
.travis.yml
25
.travis.yml
@@ -1,31 +1,26 @@
|
|||||||
os: windows
|
os: osx
|
||||||
language: node_js
|
language: node_js
|
||||||
node_js:
|
node_js:
|
||||||
- '10.15.2'
|
- '10.15.2'
|
||||||
script: node -v
|
script: node -v
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- cd app
|
|
||||||
- npm install electron-builder -g
|
- npm install electron-builder -g
|
||||||
|
- cd app
|
||||||
- npm install
|
- npm install
|
||||||
- electron-builder --win --ia32
|
- electron-builder --mac --x64 -p never
|
||||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
|
- mv ../build/TheDesk*.dmg ../TheDesk.dmg
|
||||||
- mv ../build/TheDesk*.exe ../TheDesk-ia32.exe
|
- mv ../build/TheDesk*.zip ../TheDesk-darwin-x64.zip
|
||||||
- electron-builder --win --x64
|
|
||||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup.exe
|
|
||||||
- mv ../build/TheDesk*.exe ../TheDesk.exe
|
|
||||||
- cd ../
|
- cd ../
|
||||||
- ls
|
|
||||||
after_deploy: ls
|
|
||||||
deploy:
|
deploy:
|
||||||
skip_cleanup: true
|
|
||||||
provider: releases
|
provider: releases
|
||||||
|
# GitHub にリリースするための API KEY を暗号化した値
|
||||||
api_key:
|
api_key:
|
||||||
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
||||||
|
# Releases ページにアップロードするファイル
|
||||||
file:
|
file:
|
||||||
- TheDesk.exe
|
- TheDesk.dmg
|
||||||
- TheDesk-setup.exe
|
- TheDesk-darwin-x64.zip
|
||||||
- TheDesk-ia32.exe
|
skip_cleanup: true
|
||||||
- TheDesk-setup-ia32.exe
|
|
||||||
on:
|
on:
|
||||||
repo: cutls/TheDesk
|
repo: cutls/TheDesk
|
||||||
branches:
|
branches:
|
||||||
|
|||||||
46
README.md
46
README.md
@@ -1,5 +1,7 @@
|
|||||||
# TheDesk
|
# TheDesk
|
||||||
|
|
||||||
|
TheDesk Minami (19)はVueで書き直します(rewrite-vueブランチ参照)。18までのバージョンはTheDesk Kawaii (20)以降で継続します。
|
||||||
|
|
||||||
[](https://travis-ci.org/cutls/TheDesk)
|
[](https://travis-ci.org/cutls/TheDesk)
|
||||||
[](https://translate.thedesk.top/project/thedesk)
|
[](https://translate.thedesk.top/project/thedesk)
|
||||||
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||||
@@ -27,6 +29,8 @@ The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.o
|
|||||||
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
|
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
|
||||||
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
|
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
|
||||||
|
|
||||||
|
The default sound of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
## Terms of Use/利用規約
|
## Terms of Use/利用規約
|
||||||
|
|
||||||
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
|
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
|
||||||
@@ -74,10 +78,37 @@ iTunes NowPlayingにアルバムアートワークを付けてくれた人
|
|||||||
|
|
||||||
Misskey(misskey.xyz) application token is not in cutls/TheDesk
|
Misskey(misskey.xyz) application token is not in cutls/TheDesk
|
||||||
Misskey(misskey.xyz)のトークンは含まれておりません。
|
Misskey(misskey.xyz)のトークンは含まれておりません。
|
||||||
`git clone https://github.com/cutls/TheDesk`
|
|
||||||
`npm install electron -g`
|
```sh
|
||||||
`cd TheDesk/app`
|
git clone https://github.com/cutls/TheDesk
|
||||||
`npm install`
|
cd TheDesk/app
|
||||||
|
npm install
|
||||||
|
npm install --only=dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### electron-builder(推奨)
|
||||||
|
Use npm scripts.
|
||||||
|
npm scriptsを利用します
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Build for current platform
|
||||||
|
# 実行している環境向けにビルド
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Select build target
|
||||||
|
# ターゲットを指定してビルド
|
||||||
|
## Windows
|
||||||
|
npm run build:win
|
||||||
|
|
||||||
|
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
|
||||||
|
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
|
||||||
|
npm run build:all
|
||||||
|
```
|
||||||
|
|
||||||
|
Config is all on package.json
|
||||||
|
ビルド設定はすべてpackage.jsonに記載しています。
|
||||||
|
|
||||||
|
### electron-packager(非推奨)
|
||||||
`npm install --save-dev electron-rebuild`
|
`npm install --save-dev electron-rebuild`
|
||||||
|
|
||||||
Linux/macOS
|
Linux/macOS
|
||||||
@@ -91,8 +122,6 @@ WindowsでPython 2.xやVisualC++を一発でインストールできるツール
|
|||||||
|
|
||||||
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
|
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
|
||||||
|
|
||||||
### electron-packager
|
|
||||||
|
|
||||||
Windows
|
Windows
|
||||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
|
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
|
||||||
Linux
|
Linux
|
||||||
@@ -100,11 +129,6 @@ Linux
|
|||||||
macOS
|
macOS
|
||||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
||||||
|
|
||||||
### electron-builder
|
|
||||||
|
|
||||||
Config is all on package.json
|
|
||||||
ビルド設定はすべてpackage.jsonに記載しています。
|
|
||||||
|
|
||||||
## Pleroma support
|
## Pleroma support
|
||||||
|
|
||||||
Did you find a bug with Pleroma accounts?
|
Did you find a bug with Pleroma accounts?
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ a,button{
|
|||||||
<img src="./img/desk.png" style="max-width:70%;">
|
<img src="./img/desk.png" style="max-width:70%;">
|
||||||
<h5>TheDesk</h5>
|
<h5>TheDesk</h5>
|
||||||
<div class='container'>
|
<div class='container'>
|
||||||
<div class='area-name1'>バージョン</div>
|
<div class='area-name1'>Display version</div>
|
||||||
<div class='area-data1' id="now"></div>
|
<div class='area-data1' id="now"></div>
|
||||||
<div class='area-name2'>Internal version</div>
|
<div class='area-name2'>Internal version</div>
|
||||||
<div class='area-data2' id="ver"></div>
|
<div class='area-data2' id="ver"></div>
|
||||||
@@ -87,13 +87,18 @@ a,button{
|
|||||||
<div class='area-name5'>Node.js</div>
|
<div class='area-name5'>Node.js</div>
|
||||||
<div class='area-data5' id="node"></div>
|
<div class='area-data5' id="node"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="cp">Copyright © TheDesk 2018 All rights reserved.<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
|
<div class="cp">Copyright © 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" 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">
|
||||||
|
<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
|
||||||
<button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
|
<button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
|
||||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||||
<script>
|
<script>
|
||||||
$("#now").text(localStorage.getItem("ver"));
|
$("#now").text(localStorage.getItem("ver"));
|
||||||
var electron = require("electron");
|
var electron = require("electron");
|
||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
|
const shell=electron.shell;
|
||||||
//JSON.parse(fs.readFileSync(info_path, 'utf8'));
|
//JSON.parse(fs.readFileSync(info_path, 'utf8'));
|
||||||
console.log(process.versions);
|
console.log(process.versions);
|
||||||
$("#node").text(process.version);
|
$("#node").text(process.version);
|
||||||
@@ -104,6 +109,9 @@ a,button{
|
|||||||
var ver=m[1];
|
var ver=m[1];
|
||||||
$("#ver").text(ver);
|
$("#ver").text(ver);
|
||||||
}
|
}
|
||||||
|
$(document).on('click', 'a', e => {
|
||||||
|
var url = $(e.target).attr('href');
|
||||||
|
shell.openExternal(url);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
|
||||||
@@ -30,6 +30,8 @@ option {
|
|||||||
}
|
}
|
||||||
#mainView {
|
#mainView {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
overflow:scroll;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
#message {
|
#message {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -389,6 +391,9 @@ blockquote:before, .quote:before {
|
|||||||
font-size:16px;
|
font-size:16px;
|
||||||
padding:4px;
|
padding:4px;
|
||||||
}
|
}
|
||||||
|
#something-wrong{
|
||||||
|
width:100%; height:100%; position:absolute; display:flex; justify-content: center; align-items:center
|
||||||
|
}
|
||||||
|
|
||||||
/*スクロールバー*/
|
/*スクロールバー*/
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
|
|||||||
@@ -112,6 +112,13 @@ iframe {
|
|||||||
border-top:none;
|
border-top:none;
|
||||||
display:flex;
|
display:flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
margin-bottom: -10px;
|
||||||
|
}
|
||||||
|
.img_FTL{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.bbcode_FTL{
|
||||||
|
display:none;
|
||||||
}
|
}
|
||||||
.boxIn{
|
.boxIn{
|
||||||
height:100%;
|
height:100%;
|
||||||
@@ -131,7 +138,7 @@ iframe {
|
|||||||
.area-toot .emoji,.area-toot .emoji-img{
|
.area-toot .emoji,.area-toot .emoji-img{
|
||||||
width: 20px;
|
width: 20px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin: -3px 0 0;
|
margin:-1px 0;
|
||||||
}
|
}
|
||||||
.faicon_FTL{
|
.faicon_FTL{
|
||||||
display:none;
|
display:none;
|
||||||
@@ -217,7 +224,10 @@ grid-area: toot;
|
|||||||
cursor:text;
|
cursor:text;
|
||||||
user-select: auto;
|
user-select: auto;
|
||||||
grid-area: additional;
|
grid-area: additional;
|
||||||
}
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
.area-actions {
|
.area-actions {
|
||||||
padding:0;
|
padding:0;
|
||||||
@@ -239,6 +249,29 @@ grid-area: toot;
|
|||||||
margin:2px;
|
margin:2px;
|
||||||
grid-area: side;
|
grid-area: side;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.quote-renote{
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 43px 2fr 1fr;
|
||||||
|
grid-template-areas: 'ricon ruser' 'ricon rtext';
|
||||||
|
border: 1px solid;
|
||||||
|
margin-top: 3px;
|
||||||
|
padding: 1px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.renote-icon{
|
||||||
|
grid-area: ricon;
|
||||||
|
}
|
||||||
|
.renote-icon img{
|
||||||
|
width:43px;
|
||||||
|
}
|
||||||
|
.renote-user{
|
||||||
|
grid-area: ruser;
|
||||||
|
}
|
||||||
|
.renote-text{
|
||||||
|
grid-area: rtext;
|
||||||
|
}
|
||||||
|
|
||||||
.btn-flat{
|
.btn-flat{
|
||||||
color:var(--color);
|
color:var(--color);
|
||||||
}
|
}
|
||||||
@@ -310,6 +343,7 @@ grid-area: toot;
|
|||||||
p {
|
p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
|
line-height:20px;
|
||||||
}
|
}
|
||||||
p:not(:last-child){
|
p:not(:last-child){
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
@@ -326,6 +360,7 @@ p:not(:last-child){
|
|||||||
.notice-box {
|
.notice-box {
|
||||||
top: 0;
|
top: 0;
|
||||||
background-color:var(--notfbox);
|
background-color:var(--notfbox);
|
||||||
|
filter: brightness(110%);
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
width:100%;
|
width:100%;
|
||||||
@@ -493,7 +528,44 @@ p:not(:last-child){
|
|||||||
.votebtn:hover{
|
.votebtn:hover{
|
||||||
background-color:var(--color);
|
background-color:var(--color);
|
||||||
}
|
}
|
||||||
|
.jump{
|
||||||
|
display: inline-block; animation: jump 0.75s linear infinite;
|
||||||
|
}
|
||||||
|
.img-link{
|
||||||
|
position:relative;
|
||||||
|
display:block;
|
||||||
|
margin-right:1px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.nsfw-media{
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
right:0;
|
||||||
|
background-color: black;
|
||||||
|
color:white;
|
||||||
|
}
|
||||||
|
.img-link img{
|
||||||
|
display:block;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
}
|
||||||
|
@keyframes jump {
|
||||||
|
0% {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
25% {
|
||||||
|
transform: translateY(-16px);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
75% {
|
||||||
|
transform: translateY(-8px);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@keyframes fadeInDown {
|
@keyframes fadeInDown {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
height:1.5rem; padding:0; background-color:#757575; text-align:center;
|
height:1.5rem; padding:0; background-color:#757575; text-align:center;
|
||||||
padding:5px;
|
padding:5px;
|
||||||
margin-bottom:1px;
|
margin-bottom:1px;
|
||||||
|
width:30%;
|
||||||
}
|
}
|
||||||
.his-field-content{
|
.his-field-content{
|
||||||
height:1.5rem; padding:0; padding-left:5px;
|
height:1.5rem; padding:0; padding-left:5px;
|
||||||
@@ -90,3 +91,10 @@
|
|||||||
color: #039be5;
|
color: #039be5;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
#his-float-blocked{
|
||||||
|
display:flex; justify-content: center; align-items:center;
|
||||||
|
font-size:2rem;
|
||||||
|
width: 90%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="refresh" content="0;URL='language.html?mode=redirect'" />
|
|
||||||
</head>
|
|
||||||
119
app/js/common/blurhash.js
Normal file
119
app/js/common/blurhash.js
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
var digitCharacters = [
|
||||||
|
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
||||||
|
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
|
||||||
|
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
|
||||||
|
"U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d",
|
||||||
|
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
|
||||||
|
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
|
||||||
|
"y", "z", "#", "$", "%", "*", "+", ",", "-", ".",
|
||||||
|
":", ";", "=", "?", "@", "[", "]", "^", "_", "{",
|
||||||
|
"|", "}", "~",
|
||||||
|
];
|
||||||
|
function decode83(str) {
|
||||||
|
var value = 0;
|
||||||
|
for (var i = 0; i < str.length; i++) {
|
||||||
|
var c = str[i];
|
||||||
|
var digit = digitCharacters.indexOf(c);
|
||||||
|
value = value * 83 + digit;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
function linearTosRGB(value) {
|
||||||
|
var v = Math.max(0, Math.min(1, value));
|
||||||
|
if (v <= 0.0031308) {
|
||||||
|
return Math.round(v * 12.92 * 255 + 0.5);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Math.round((1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255 + 0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function sRGBToLinear(value) {
|
||||||
|
var v = value / 255;
|
||||||
|
if (v <= 0.04045) {
|
||||||
|
return v / 12.92;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Math.pow((v + 0.055) / 1.055, 2.4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function decodeDC(value) {
|
||||||
|
var intR = value >> 16;
|
||||||
|
var intG = (value >> 8) & 255;
|
||||||
|
var intB = value & 255;
|
||||||
|
return [sRGBToLinear(intR), sRGBToLinear(intG), sRGBToLinear(intB)];
|
||||||
|
};
|
||||||
|
function sign(n) { return (n < 0 ? -1 : 1); }
|
||||||
|
function signPow(val, exp) { return sign(val) * Math.pow(Math.abs(val), exp); }
|
||||||
|
function decodeDC2(value, maximumValue) {
|
||||||
|
var quantR = Math.floor(value / (19 * 19));
|
||||||
|
var quantG = Math.floor(value / 19) % 19;
|
||||||
|
var quantB = value % 19;
|
||||||
|
var rgb = [
|
||||||
|
signPow((quantR - 9) / 9, 2.0) * maximumValue,
|
||||||
|
signPow((quantG - 9) / 9, 2.0) * maximumValue,
|
||||||
|
signPow((quantB - 9) / 9, 2.0) * maximumValue,
|
||||||
|
];
|
||||||
|
return rgb;
|
||||||
|
};
|
||||||
|
function decodeblur(blurhash, width, height, punch) {
|
||||||
|
punch = punch | 1;
|
||||||
|
if (blurhash.length < 6) {
|
||||||
|
console.error('too short blurhash');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var sizeFlag = decode83(blurhash[0]);
|
||||||
|
var numY = Math.floor(sizeFlag / 9) + 1;
|
||||||
|
var numX = (sizeFlag % 9) + 1;
|
||||||
|
var quantisedMaximumValue = decode83(blurhash[1]);
|
||||||
|
var maximumValue = (quantisedMaximumValue + 1) / 166;
|
||||||
|
if (blurhash.length !== 4 + 2 * numX * numY) {
|
||||||
|
console.error('blurhash length mismatch', blurhash.length, 4 + 2 * numX * numY);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
var colors = new Array(numX * numY);
|
||||||
|
for (var i = 0; i < colors.length; i++) {
|
||||||
|
if (i === 0) {
|
||||||
|
var value = decode83(blurhash.substring(2, 6));
|
||||||
|
colors[i] = decodeDC(value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var value = decode83(blurhash.substring(4 + i * 2, 6 + i * 2));
|
||||||
|
colors[i] = decodeDC2(value, maximumValue * punch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var bytesPerRow = width * 4;
|
||||||
|
var pixels = new Uint8ClampedArray(bytesPerRow * height);
|
||||||
|
for (var y = 0; y < height; y++) {
|
||||||
|
for (var x = 0; x < width; x++) {
|
||||||
|
var r = 0;
|
||||||
|
var g = 0;
|
||||||
|
var b = 0;
|
||||||
|
for (var j = 0; j < numY; j++) {
|
||||||
|
for (var i = 0; i < numX; i++) {
|
||||||
|
var basis = Math.cos(Math.PI * x * i / width) * Math.cos(Math.PI * y * j / height);
|
||||||
|
var color = colors[i + j * numX];
|
||||||
|
r += color[0] * basis;
|
||||||
|
g += color[1] * basis;
|
||||||
|
b += color[2] * basis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var intR = linearTosRGB(r);
|
||||||
|
var intG = linearTosRGB(g);
|
||||||
|
var intB = linearTosRGB(b);
|
||||||
|
pixels[4 * x + 0 + y * bytesPerRow] = intR;
|
||||||
|
pixels[4 * x + 1 + y * bytesPerRow] = intG;
|
||||||
|
pixels[4 * x + 2 + y * bytesPerRow] = intB;
|
||||||
|
pixels[4 * x + 3 + y * bytesPerRow] = 255; // alpha
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pixels;
|
||||||
|
}
|
||||||
|
function parseBlur(blur) {
|
||||||
|
var canvas = document.getElementById('canvas');
|
||||||
|
var ctx = canvas.getContext('2d');
|
||||||
|
var pixels = decodeblur(blur, 32, 32)
|
||||||
|
const imageData = new ImageData(pixels, 32, 32);
|
||||||
|
|
||||||
|
ctx.putImageData(imageData, 0, 0);
|
||||||
|
return canvas.toDataURL()
|
||||||
|
}
|
||||||
@@ -92,6 +92,7 @@ $(function($) {
|
|||||||
if (e.keyCode === 88) {
|
if (e.keyCode === 88) {
|
||||||
if (!$("#post-box").hasClass("appear")) {
|
if (!$("#post-box").hasClass("appear")) {
|
||||||
show();
|
show();
|
||||||
|
$('textarea').focus();
|
||||||
} else {
|
} else {
|
||||||
hide();
|
hide();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,10 +62,29 @@ function verck(ver) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}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]
|
||||||
|
}
|
||||||
|
dialog.showMessageBox(options, function(arg) {
|
||||||
|
if(arg==1){
|
||||||
|
localStorage.setItem("winstore","brewcask")
|
||||||
|
}else{
|
||||||
|
localStorage.setItem("winstore","localinstall")
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
localStorage.setItem("winstore","unix")
|
localStorage.setItem("winstore","unix")
|
||||||
}
|
}
|
||||||
if(localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
|
if(localStorage.getItem("winstore")=="brewcask" || localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
|
||||||
var winstore=true;
|
var winstore=true;
|
||||||
}else{
|
}else{
|
||||||
var winstore=false;
|
var winstore=false;
|
||||||
@@ -171,26 +190,27 @@ function verck(ver) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(show){
|
if(show){
|
||||||
Materialize.toast(obj.Text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
Materialize.toast(escapeHTML(obj.Text)+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
var infostreaming=false;
|
||||||
|
function infowebsocket(){
|
||||||
infows = new WebSocket("wss://thedesk.top/ws/");
|
infows = new WebSocket("wss://thedesk.top/ws/");
|
||||||
infows.onopen = function(mess) {
|
infows.onopen = function(mess) {
|
||||||
console.log(tlid + ":Connect Streaming Info:");
|
console.log(tlid + ":Connect Streaming Info:");
|
||||||
console.log(mess);
|
console.log(mess);
|
||||||
|
infostreaming=true;
|
||||||
}
|
}
|
||||||
infows.onmessage = function(mess) {
|
infows.onmessage = function(mess) {
|
||||||
console.log(":Receive Streaming:");
|
console.log(":Receive Streaming:");
|
||||||
console.log(JSON.parse(mess.data));
|
console.log(JSON.parse(mess.data));
|
||||||
var obj=JSON.parse(mess.data);
|
var obj=JSON.parse(mess.data);
|
||||||
if(obj.type!="counter"){
|
if(obj.type!="counter"){
|
||||||
if(obj.id*1<=localStorage.getItem("last-notice-id")){
|
|
||||||
|
|
||||||
}else{
|
|
||||||
localStorage.setItem("last-notice-id",obj.id)
|
localStorage.setItem("last-notice-id",obj.id)
|
||||||
var show=true;
|
var show=true;
|
||||||
if(obj.toot!=""){
|
if(obj.toot!=""){
|
||||||
@@ -219,19 +239,26 @@ function verck(ver) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(show){
|
if(show){
|
||||||
Materialize.toast(obj.text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
Materialize.toast(escapeHTML(obj.text)+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
$("#persons").text(obj.text);
|
$("#persons").text(obj.text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
infows.onerror = function(error) {
|
infows.onerror = function(error) {
|
||||||
|
infostreaming=false;
|
||||||
console.error("Error closing:info");
|
console.error("Error closing:info");
|
||||||
console.error(error);
|
console.error(error);
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
infows.onclose = function() {
|
infows.onclose = function() {
|
||||||
|
infostreaming=false;
|
||||||
console.error("Closing:info");
|
console.error("Closing:info");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
setInterval(function(){
|
||||||
|
if(!infostreaming){
|
||||||
|
console.log("try to connect")
|
||||||
|
infowebsocket();
|
||||||
|
}
|
||||||
|
}, 10000);
|
||||||
@@ -54,7 +54,13 @@ function defEmoji(target){
|
|||||||
var emojiraw = newpack.filter(function(item, index){
|
var emojiraw = newpack.filter(function(item, index){
|
||||||
if (item.short_name == target) return true;
|
if (item.short_name == target) return true;
|
||||||
});
|
});
|
||||||
emoji=twemoji.convert.fromCodePoint(emojiraw[0].unified);
|
var hex=emojiraw[0].unified.split("-");
|
||||||
|
if(hex.length===2){
|
||||||
|
emoji=twemoji.convert.fromCodePoint(hex[0])+twemoji.convert.fromCodePoint(hex[1]);
|
||||||
|
}else{
|
||||||
|
emoji=twemoji.convert.fromCodePoint(hex[0]);
|
||||||
|
}
|
||||||
|
console.log(emoji)
|
||||||
var now = $("#textarea").val();
|
var now = $("#textarea").val();
|
||||||
var selin = localStorage.getItem("cursor");
|
var selin = localStorage.getItem("cursor");
|
||||||
var now = $("#textarea").val();
|
var now = $("#textarea").val();
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ var lang={
|
|||||||
"lang_version_skipver":"Update was ignored.",
|
"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":"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_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.",
|
||||||
//login
|
//login
|
||||||
//login/login.js
|
//login/login.js
|
||||||
"lang_login_noauth":"Show TL of unlogined accounts",
|
"lang_login_noauth":"Show TL of unlogined accounts",
|
||||||
@@ -90,6 +91,7 @@ var lang={
|
|||||||
"lang_list_users":"Users list",
|
"lang_list_users":"Users list",
|
||||||
"lang_list_nouser":"No users in this list.",
|
"lang_list_nouser":"No users in this list.",
|
||||||
"lang_list_add":"Add to the 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_list_remove":"Remove from the list",
|
||||||
//tl/notification.js
|
//tl/notification.js
|
||||||
"lang_notf_new":" new notifications",
|
"lang_notf_new":" new notifications",
|
||||||
@@ -139,6 +141,7 @@ var lang={
|
|||||||
"lang_hisdata_frcwarn":"Unfollow accounts will be shown.",
|
"lang_hisdata_frcwarn":"Unfollow accounts will be shown.",
|
||||||
"lang_hisdata_taketime":"It will take 30s ~ several minutes",
|
"lang_hisdata_taketime":"It will take 30s ~ several minutes",
|
||||||
"lang_hisdata_notonmisskey":"Misskey is unable to request.",
|
"lang_hisdata_notonmisskey":"Misskey is unable to request.",
|
||||||
|
"lang_hisdata_key":"This user is proofed by {{set}}",
|
||||||
//userdata/showOnTL.js
|
//userdata/showOnTL.js
|
||||||
"lang_showontl_movetxt":"This account was moved",
|
"lang_showontl_movetxt":"This account was moved",
|
||||||
"lang_showontl_movebtn":"Continue on the new account",
|
"lang_showontl_movebtn":"Continue on the new account",
|
||||||
@@ -147,11 +150,13 @@ var lang={
|
|||||||
"lang_showontl_notf":"Notification ",
|
"lang_showontl_notf":"Notification ",
|
||||||
"lang_showontl_domain":"Domain ",
|
"lang_showontl_domain":"Domain ",
|
||||||
"lang_showontl_listwarn":"Follow to add this user to lists.",
|
"lang_showontl_listwarn":"Follow to add this user to lists.",
|
||||||
|
"lang_showontl_verified":"This website is verified by owner at ",
|
||||||
//parse
|
//parse
|
||||||
"lang_parse_mentioned":" replied to you",
|
"lang_parse_mentioned":" replied to you",
|
||||||
"lang_parse_faved":" favourited your toot",
|
"lang_parse_faved":" favourited your toot",
|
||||||
"lang_parse_bted":" boosted your toot",
|
"lang_parse_bted":" boosted your toot",
|
||||||
"lang_parse_btedsimple":" boosted",
|
"lang_parse_btedsimple":" boosted",
|
||||||
|
"lang_parse_polled":"'s poll",
|
||||||
"lang_parse_notftime":"Actioned at",
|
"lang_parse_notftime":"Actioned at",
|
||||||
"lang_parse_cwshow":"Show",
|
"lang_parse_cwshow":"Show",
|
||||||
"lang_parse_fulltext":"Full size text:",
|
"lang_parse_fulltext":"Full size text:",
|
||||||
@@ -184,7 +189,7 @@ var lang={
|
|||||||
"lang_parse_clientmute":"muted",
|
"lang_parse_clientmute":"muted",
|
||||||
"lang_parse_mute":" will be muted. You can remove on preferences.",
|
"lang_parse_mute":" will be muted. You can remove on preferences.",
|
||||||
"lang_parse_voted":"Voted",
|
"lang_parse_voted":"Voted",
|
||||||
"lang_parse_vote":"Voted",
|
"lang_parse_vote":"Vote",
|
||||||
"lang_parse_unvoted":"Show the result without voting",
|
"lang_parse_unvoted":"Show the result without voting",
|
||||||
"lang_parse_endedvote":"Expired",
|
"lang_parse_endedvote":"Expired",
|
||||||
"lang_parse_thread":"Show thread",
|
"lang_parse_thread":"Show thread",
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ var lang={
|
|||||||
"lang_version_skipver":"アップデートはスキップされました。",
|
"lang_version_skipver":"アップデートはスキップされました。",
|
||||||
"lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
"lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||||
"lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
"lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||||
|
"lang_version_platform_mac":"このソフトウェアはHomebrew Caskからインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||||
//login
|
//login
|
||||||
//login/login.js
|
//login/login.js
|
||||||
"lang_login_noauth":"認証せずに見る",
|
"lang_login_noauth":"認証せずに見る",
|
||||||
@@ -90,6 +91,7 @@ var lang={
|
|||||||
"lang_list_users":"ユーザー一覧",
|
"lang_list_users":"ユーザー一覧",
|
||||||
"lang_list_nouser":"ユーザーはいません",
|
"lang_list_nouser":"ユーザーはいません",
|
||||||
"lang_list_add":"リストに追加",
|
"lang_list_add":"リストに追加",
|
||||||
|
"lang_list_add_misskey":"(重複追加の可能性があります)",
|
||||||
"lang_list_remove":"リストから削除",
|
"lang_list_remove":"リストから削除",
|
||||||
//tl/notification.js
|
//tl/notification.js
|
||||||
"lang_notf_new":"件の新しい通知",
|
"lang_notf_new":"件の新しい通知",
|
||||||
@@ -107,6 +109,8 @@ var lang={
|
|||||||
//tl/tl.js
|
//tl/tl.js
|
||||||
"lang_tl_media":"メディア",
|
"lang_tl_media":"メディア",
|
||||||
"lang_tl_reconnect":"Streamingに再接続しました",
|
"lang_tl_reconnect":"Streamingに再接続しました",
|
||||||
|
//ui/img.js
|
||||||
|
"lang_img_DLDone":"ダウンロード先:",
|
||||||
//ui/layout.js
|
//ui/layout.js
|
||||||
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
|
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
|
||||||
"lang_layout_thisacct":"このアカウントの{{notf}}",
|
"lang_layout_thisacct":"このアカウントの{{notf}}",
|
||||||
@@ -139,6 +143,7 @@ var lang={
|
|||||||
"lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。",
|
"lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。",
|
||||||
"lang_hisdata_taketime":"30秒から数分かかります",
|
"lang_hisdata_taketime":"30秒から数分かかります",
|
||||||
"lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。",
|
"lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。",
|
||||||
|
"lang_hisdata_key":"このユーザーの信頼性は{{set}}によって示されています",
|
||||||
//userdata/showOnTL.js
|
//userdata/showOnTL.js
|
||||||
"lang_showontl_movetxt":"このアカウントは移行しています",
|
"lang_showontl_movetxt":"このアカウントは移行しています",
|
||||||
"lang_showontl_movebtn":"移行先を見る",
|
"lang_showontl_movebtn":"移行先を見る",
|
||||||
@@ -147,11 +152,13 @@ var lang={
|
|||||||
"lang_showontl_notf":"通知",
|
"lang_showontl_notf":"通知",
|
||||||
"lang_showontl_domain":"ドメイン",
|
"lang_showontl_domain":"ドメイン",
|
||||||
"lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
|
"lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
|
||||||
|
"lang_showontl_verified":"このユーザーの所持するWebサイトであると証明されています。",
|
||||||
//parse
|
//parse
|
||||||
"lang_parse_mentioned":"が返信しました",
|
"lang_parse_mentioned":"が返信しました",
|
||||||
"lang_parse_faved":"がお気に入り登録しました",
|
"lang_parse_faved":"がお気に入り登録しました",
|
||||||
"lang_parse_bted":"がブーストしました",
|
"lang_parse_bted":"がブーストしました",
|
||||||
"lang_parse_btedsimple":"がブースト",
|
"lang_parse_btedsimple":"がブースト",
|
||||||
|
"lang_parse_polled":"のアンケート",
|
||||||
"lang_parse_notftime":"通知された時間",
|
"lang_parse_notftime":"通知された時間",
|
||||||
"lang_parse_cwshow":"見る",
|
"lang_parse_cwshow":"見る",
|
||||||
"lang_parse_fulltext":"以下全文",
|
"lang_parse_fulltext":"以下全文",
|
||||||
|
|||||||
@@ -8,17 +8,17 @@ var idata={
|
|||||||
"kirishima.cloud_glitch":"enabled",
|
"kirishima.cloud_glitch":"enabled",
|
||||||
"kirishima.cloud_public":"パブリックタイムライン",
|
"kirishima.cloud_public":"パブリックタイムライン",
|
||||||
"minohdon.jp":"instance",
|
"minohdon.jp":"instance",
|
||||||
"minohdon.jp_name":"箕面丼",
|
"minohdon.jp_name":"箕面どん",
|
||||||
"minohdon.jp_letters":"500",
|
"minohdon.jp_letters":"500",
|
||||||
"minohdon.jp_bbcode":"disabled",
|
"minohdon.jp_bbcode":"disabled",
|
||||||
"minohdon.jp_markdown":"disabled",
|
"minohdon.jp_markdown":"disabled",
|
||||||
"minohdon.jp_glitch":"disabled",
|
"minohdon.jp_glitch":"disabled",
|
||||||
"knzk.me":"instance",
|
"knzk.me":"instance",
|
||||||
"knzk.me_name":"神崎丼",
|
"knzk.me_name":"Knzk",
|
||||||
"knzk.me_letters":"5000",
|
"knzk.me_letters":"5000",
|
||||||
"knzk.me_bbcode":"disabled",
|
"knzk.me_bbcode":"disabled",
|
||||||
"knzk.me_markdown":"disabled",
|
"knzk.me_markdown":"disabled",
|
||||||
"knzk.me_glitch":"enabled",
|
"knzk.me_glitch":"disabled",
|
||||||
"mastodos.com":"instance",
|
"mastodos.com":"instance",
|
||||||
"mastodos.com_name":"マストどす",
|
"mastodos.com_name":"マストどす",
|
||||||
"mastodos.com_letters":"500",
|
"mastodos.com_letters":"500",
|
||||||
@@ -32,7 +32,7 @@ var idata={
|
|||||||
"dev.kirishima.cloud_markdown":"enabled",
|
"dev.kirishima.cloud_markdown":"enabled",
|
||||||
"dev.kirishima.cloud_glitch":"enabled",
|
"dev.kirishima.cloud_glitch":"enabled",
|
||||||
"mstdn.y-zu.org":"instance",
|
"mstdn.y-zu.org":"instance",
|
||||||
"mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
|
"mstdn.y-zu.org_name":"Yづドン(Y-zuDon)",
|
||||||
"mstdn.y-zu.org_letters":"500",
|
"mstdn.y-zu.org_letters":"500",
|
||||||
"mstdn.y-zu.org_bbcode":"disabled",
|
"mstdn.y-zu.org_bbcode":"disabled",
|
||||||
"mstdn.y-zu.org_markdown":"enabled",
|
"mstdn.y-zu.org_markdown":"enabled",
|
||||||
@@ -84,20 +84,14 @@ var idata={
|
|||||||
"itabashi.0j0.jp_bbcode":"disabled",
|
"itabashi.0j0.jp_bbcode":"disabled",
|
||||||
"itabashi.0j0.jp_markdown":"disabled",
|
"itabashi.0j0.jp_markdown":"disabled",
|
||||||
"itabashi.0j0.jp_glitch":"disabled",
|
"itabashi.0j0.jp_glitch":"disabled",
|
||||||
"theboss.tech":"instance",
|
|
||||||
"theboss.tech_name":"theboss.tech",
|
|
||||||
"theboss.tech_letters":"1000",
|
|
||||||
"theboss.tech_bbcode":"disabled",
|
|
||||||
"theboss.tech_markdown":"disabled",
|
|
||||||
"theboss.tech_glitch":"disabled",
|
|
||||||
"dtp-mstdn.jp":"instance",
|
"dtp-mstdn.jp":"instance",
|
||||||
"dtp-mstdn.jp_name":"DTP鯖",
|
"dtp-mstdn.jp_name":"DTP鯖",
|
||||||
"dtp-mstdn.jp_letters":"500",
|
"dtp-mstdn.jp_letters":"500",
|
||||||
"dtp-mstdn.jp_bbcode":"disabled",
|
"dtp-mstdn.jp_bbcode":"disabled",
|
||||||
"dtp-mstdn.jp_markdown":"disabled",
|
"dtp-mstdn.jp_markdown":"disabled",
|
||||||
"dtp-mstdn.jp_glitch":"disabled",
|
"dtp-mstdn.jp_glitch":"disabled",
|
||||||
"misskey.xyz":"instance",
|
"misskey.xyz":"misskey",
|
||||||
"misskey.xyz_name":"Misskey",
|
"misskey.xyz_name":"misskey.xyz",
|
||||||
"misskey.xyz_letters":"1000",
|
"misskey.xyz_letters":"1000",
|
||||||
"misskey.xyz_bbcode":"disabled",
|
"misskey.xyz_bbcode":"disabled",
|
||||||
"misskey.xyz_markdown":"enabled",
|
"misskey.xyz_markdown":"enabled",
|
||||||
@@ -105,6 +99,28 @@ var idata={
|
|||||||
"misskey.xyz_post":"Post",
|
"misskey.xyz_post":"Post",
|
||||||
"misskey.xyz_fav":" reacted your post.",
|
"misskey.xyz_fav":" reacted your post.",
|
||||||
"misskey.xyz_bt":" reposted your post.",
|
"misskey.xyz_bt":" reposted your post.",
|
||||||
|
"misskey.dev":"misskey",
|
||||||
|
"misskey.dev_name":"misskey.dev",
|
||||||
|
"misskey.dev_letters":"1024",
|
||||||
|
"misskey.dev_bbcode":"disabled",
|
||||||
|
"misskey.dev_markdown":"enabled",
|
||||||
|
"misskey.dev_public":"Global",
|
||||||
|
"misskey.dev_post":"Post",
|
||||||
|
"misskey.dev_fav":" reacted your post.",
|
||||||
|
"misskey.dev_bt":" reposted your post.",
|
||||||
|
"precure.ml":"instance",
|
||||||
|
"precure.ml_name":"キュアスタ!",
|
||||||
|
"precure.ml_letters":"1024",
|
||||||
|
"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",
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("instance", JSON.stringify(idata));
|
localStorage.setItem("instance", JSON.stringify(idata));
|
||||||
|
|||||||
@@ -14,23 +14,6 @@ function ck() {
|
|||||||
}
|
}
|
||||||
var domainz = localStorage.getItem("domain_0");
|
var domainz = localStorage.getItem("domain_0");
|
||||||
var at = localStorage.getItem("acct_0_at");
|
var at = localStorage.getItem("acct_0_at");
|
||||||
var oldat = localStorage.getItem(domainz + "_at");
|
|
||||||
if(oldat){
|
|
||||||
console.log("Move to New Account Management System")
|
|
||||||
var multi = localStorage.getItem("multi");
|
|
||||||
if (!multi) {
|
|
||||||
var acctlen=1;
|
|
||||||
} else {
|
|
||||||
var obj = JSON.parse(multi);
|
|
||||||
var acctlen=obj.length;
|
|
||||||
}
|
|
||||||
for(i=0;acctlen>i;i++){
|
|
||||||
var domain = localStorage.getItem("domain_"+i);
|
|
||||||
var oldat = localStorage.getItem(domain + "_at");
|
|
||||||
var newat = localStorage.setItem("acct_"+ i + "_at",oldat);
|
|
||||||
localStorage.removeItem(domain + "_at");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//コード受信
|
//コード受信
|
||||||
if(location.search){
|
if(location.search){
|
||||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||||
@@ -42,30 +25,27 @@ function ck() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
var multi = localStorage.getItem("multi");
|
var multi = localStorage.getItem("multi");
|
||||||
if (!multi) {
|
if(!multi || multi=="[]"){
|
||||||
var obj = [];
|
location.href="acct.html?mode=first&code=true"
|
||||||
var json = JSON.stringify(obj);
|
}else{
|
||||||
localStorage.setItem("multi", json);
|
|
||||||
} else {
|
|
||||||
var obj = JSON.parse(multi);
|
var obj = JSON.parse(multi);
|
||||||
}
|
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function(key) {
|
||||||
var acct=obj[key];
|
var acct=obj[key];
|
||||||
if(acct.domain){
|
if(acct.domain){
|
||||||
refresh(key,true)
|
refresh(key,true)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
console.log(obj);
|
if (obj[0].domain) {
|
||||||
if (obj[0].domain) {
|
|
||||||
$("#tl").show();
|
$("#tl").show();
|
||||||
ticker();
|
ticker();
|
||||||
multiSelector();
|
multiSelector();
|
||||||
} else {
|
verck(ver);
|
||||||
$("#tl").show();
|
|
||||||
$("#post-box").hide();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ck();
|
}
|
||||||
|
ck();
|
||||||
|
|
||||||
|
|
||||||
//ログインポップアップ
|
//ログインポップアップ
|
||||||
function login(url) {
|
function login(url) {
|
||||||
if($('#linux:checked').val()=="on"){
|
if($('#linux:checked').val()=="on"){
|
||||||
@@ -522,7 +502,7 @@ function multiSelector() {
|
|||||||
$("#add-acct-sel").append('<option value="noauth">'+lang.lang_login_noauth+'</option><option value="webview">Twitter</option>');
|
$("#add-acct-sel").append('<option value="noauth">'+lang.lang_login_noauth+'</option><option value="webview">Twitter</option>');
|
||||||
}
|
}
|
||||||
$('select').material_select('update');
|
$('select').material_select('update');
|
||||||
parseColumn();
|
parseColumn(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//バージョンエンコ
|
//バージョンエンコ
|
||||||
|
|||||||
@@ -2,6 +2,15 @@
|
|||||||
//最初に読むやつ
|
//最初に読むやつ
|
||||||
function load() {
|
function load() {
|
||||||
$("#acct-list").html("");
|
$("#acct-list").html("");
|
||||||
|
if(location.search){
|
||||||
|
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||||
|
var mode=m[1];
|
||||||
|
var codex=m[2];
|
||||||
|
if(mode=="first" && codex=="true"){
|
||||||
|
$("body").addClass("first")
|
||||||
|
}else{
|
||||||
|
}
|
||||||
|
}
|
||||||
var prof = localStorage.getItem("prof");
|
var prof = localStorage.getItem("prof");
|
||||||
$(".my-prof").attr("src", prof);
|
$(".my-prof").attr("src", prof);
|
||||||
var name = localStorage.getItem("name");
|
var name = localStorage.getItem("name");
|
||||||
@@ -57,14 +66,8 @@ function load() {
|
|||||||
localStorage.setItem("acct", 0);
|
localStorage.setItem("acct", 0);
|
||||||
var acctN = 0;
|
var acctN = 0;
|
||||||
}
|
}
|
||||||
var electron = require("electron");
|
//全部チェックアリでいいと思うの
|
||||||
var remote=electron.remote;
|
$("#linux").prop("checked", true);
|
||||||
var platform=remote.process.platform;
|
|
||||||
if(localStorage.getItem("winstore")!="localinstall"){
|
|
||||||
$("#linux").prop("checked", false);
|
|
||||||
}else{
|
|
||||||
$("#linux").prop("checked", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//最初に読む
|
//最初に読む
|
||||||
@@ -262,6 +265,10 @@ function support() {
|
|||||||
templete = '<a onclick="login(\'' + key +
|
templete = '<a onclick="login(\'' + key +
|
||||||
'\')" class="collection-item pointer transparent">' + idata[key + "_name"] + '(' + key + ')</a>';
|
'\')" class="collection-item pointer transparent">' + idata[key + "_name"] + '(' + key + ')</a>';
|
||||||
$("#support").append(templete);
|
$("#support").append(templete);
|
||||||
|
}else if (instance == "misskey") {
|
||||||
|
templete = '<a onclick="misskeyLogin(\'' + key +
|
||||||
|
'\')" class="collection-item pointer transparent">' + idata[key + "_name"] + '(' + key + ')</a>';
|
||||||
|
$("#support").append(templete);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -270,7 +277,7 @@ function support() {
|
|||||||
function login(url) {
|
function login(url) {
|
||||||
var multi = localStorage.getItem("multi");
|
var multi = localStorage.getItem("multi");
|
||||||
var obj = JSON.parse(multi);
|
var obj = JSON.parse(multi);
|
||||||
if($('#misskey:checked').val()=="on" || url=="misskey.xyz"){
|
if($('#misskey:checked').val()=="on"){
|
||||||
$("#misskey").prop("checked", true);
|
$("#misskey").prop("checked", true);
|
||||||
misskeyLogin(url);
|
misskeyLogin(url);
|
||||||
return;
|
return;
|
||||||
@@ -356,7 +363,27 @@ function misskeyLogin(url) {
|
|||||||
"reaction-read",
|
"reaction-read",
|
||||||
"reaction-write",
|
"reaction-write",
|
||||||
"vote-read",
|
"vote-read",
|
||||||
"vote-write"
|
"vote-write",
|
||||||
|
"read:account",
|
||||||
|
"write:account",
|
||||||
|
"read:drive",
|
||||||
|
"write:drive",
|
||||||
|
"read:blocks",
|
||||||
|
"write:blocks",
|
||||||
|
"read:favorites",
|
||||||
|
"write:favorites",
|
||||||
|
"read:following",
|
||||||
|
"write:following",
|
||||||
|
"read:messaging",
|
||||||
|
"write:messaging",
|
||||||
|
"read:mutes",
|
||||||
|
"write:mutes",
|
||||||
|
"write:notes",
|
||||||
|
"read:notifications",
|
||||||
|
"write:notifications",
|
||||||
|
"read:reactions",
|
||||||
|
"write:reactions",
|
||||||
|
"write:votes"
|
||||||
]
|
]
|
||||||
}));
|
}));
|
||||||
httpreq.onreadystatechange = function() {
|
httpreq.onreadystatechange = function() {
|
||||||
@@ -458,7 +485,9 @@ function code(code) {
|
|||||||
console.log(obj);
|
console.log(obj);
|
||||||
var json = JSON.stringify(obj);
|
var json = JSON.stringify(obj);
|
||||||
localStorage.setItem("multi", json);
|
localStorage.setItem("multi", json);
|
||||||
|
if($("body").hasClass("first")){
|
||||||
|
location.href="index.html"
|
||||||
|
}
|
||||||
load();
|
load();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -511,7 +540,7 @@ function getdata(domain, at) {
|
|||||||
console.log(json);
|
console.log(json);
|
||||||
if (json.error) {
|
if (json.error) {
|
||||||
console.error("Error:" + json.error);
|
console.error("Error:" + json.error);
|
||||||
Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
|
Materialize.toast(lang.lang_fatalerroroccured+"Error:" + escapeHTML(json.error),
|
||||||
5000);
|
5000);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -546,6 +575,9 @@ function getdata(domain, at) {
|
|||||||
console.log(obj);
|
console.log(obj);
|
||||||
var json = JSON.stringify(obj);
|
var json = JSON.stringify(obj);
|
||||||
localStorage.setItem("multi", json);
|
localStorage.setItem("multi", json);
|
||||||
|
if($("body").hasClass("first")){
|
||||||
|
location.href="index.html"
|
||||||
|
}
|
||||||
load();
|
load();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -783,7 +815,7 @@ input.addEventListener("focus", function() {
|
|||||||
Object.keys(json.instances).forEach(function(key) {
|
Object.keys(json.instances).forEach(function(key) {
|
||||||
var url = json.instances[key];
|
var url = json.instances[key];
|
||||||
urls = urls + ' <a onclick="login(\'' + url.name +
|
urls = urls + ' <a onclick="login(\'' + url.name +
|
||||||
'\')" class="pointer">' + url.name + '</a> ';
|
'\')" class="pointer">' +escapeHTML(url.name) + '</a> ';
|
||||||
});
|
});
|
||||||
$("#ins-suggest").html(urls);
|
$("#ins-suggest").html(urls);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
//メンションっぽかったら
|
//メンションっぽかったら
|
||||||
var ats=[];
|
var ats=[];
|
||||||
ats = url.match(
|
ats = url.match(
|
||||||
/https:\/\/([-a-zA-Z0-9@.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
|
/https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
|
||||||
);
|
);
|
||||||
console.log(toot);
|
console.log(toot);
|
||||||
if(toot){
|
if(toot){
|
||||||
@@ -35,13 +35,17 @@
|
|||||||
|
|
||||||
}else if(tags){
|
}else if(tags){
|
||||||
if(tags[2]){
|
if(tags[2]){
|
||||||
tagShow(tags[2]);
|
var acct_id=$a.parent().attr("data-acct");
|
||||||
Materialize.toast('<a class="btn-flat toast-action" href="detEx(\''+url+'\')">Open in browser</a>', 86400);
|
if(!acct_id){
|
||||||
|
acct_id=0;
|
||||||
|
}
|
||||||
|
tl('tag',decodeURI(tags[2]),acct_id,'add')
|
||||||
}
|
}
|
||||||
}else if(ats){
|
}else if(ats){
|
||||||
console.log(ats);
|
console.log(ats);
|
||||||
if(ats[2]){
|
if(ats[2]){
|
||||||
if(ats[1]!="quesdon.rinsuki.net"){
|
//Quesdon判定
|
||||||
|
if(!~ats[2].indexOf("@")){
|
||||||
udgEx(ats[2]+"@"+ats[1],"main");
|
udgEx(ats[2]+"@"+ats[1],"main");
|
||||||
return false
|
return false
|
||||||
}else{
|
}else{
|
||||||
@@ -178,3 +182,20 @@ const {
|
|||||||
webviewDom.addEventListener('new-window', function(e) {
|
webviewDom.addEventListener('new-window', function(e) {
|
||||||
shell.openExternal(e.url);
|
shell.openExternal(e.url);
|
||||||
});
|
});
|
||||||
|
function playSound() {
|
||||||
|
window.AudioContext = window.AudioContext || window.webkitAudioContext;
|
||||||
|
context = new AudioContext();
|
||||||
|
context.createBufferSource().start(0);
|
||||||
|
context.decodeAudioData(request.response, function (buf) {
|
||||||
|
console.log(source)
|
||||||
|
source.buffer = buf;
|
||||||
|
source.loop = false;
|
||||||
|
});
|
||||||
|
source = context.createBufferSource();
|
||||||
|
volumeControl = context.createGain();
|
||||||
|
source.connect(volumeControl);
|
||||||
|
volumeControl.connect(context.destination);
|
||||||
|
volumeControl.gain.value=0.8
|
||||||
|
console.log(volumeControl)
|
||||||
|
source.start(0);
|
||||||
|
}
|
||||||
@@ -32,6 +32,13 @@ function nl2br(str) {
|
|||||||
str = str.replace(/(\n|\r)/g, "<br />");
|
str = str.replace(/(\n|\r)/g, "<br />");
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
function br2nl(str) {
|
||||||
|
if(!str){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
str = str.replace(/<br \/>/g, "\r\n");
|
||||||
|
return str;
|
||||||
|
}
|
||||||
function formattime(date){
|
function formattime(date){
|
||||||
var str=date.getFullYear()+"-";
|
var str=date.getFullYear()+"-";
|
||||||
if(date.getMonth()+1<10){
|
if(date.getMonth()+1<10){
|
||||||
@@ -55,7 +62,7 @@ function formattime(date){
|
|||||||
}else{
|
}else{
|
||||||
str=str+date.getMinutes()
|
str=str+date.getMinutes()
|
||||||
}
|
}
|
||||||
return str;
|
return escapeHTML(str);
|
||||||
}
|
}
|
||||||
function formattimeutc(date){
|
function formattimeutc(date){
|
||||||
var str=date.getUTCFullYear()+"-";
|
var str=date.getUTCFullYear()+"-";
|
||||||
@@ -80,7 +87,7 @@ function formattimeutc(date){
|
|||||||
}else{
|
}else{
|
||||||
str=str+date.getUTCMinutes()
|
str=str+date.getUTCMinutes()
|
||||||
}
|
}
|
||||||
return str;
|
return escapeHTML(str);
|
||||||
}
|
}
|
||||||
var electron = require("electron");
|
var electron = require("electron");
|
||||||
var ipc = electron.ipcRenderer;
|
var ipc = electron.ipcRenderer;
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ $("#emoji-before").addClass("disabled");
|
|||||||
$("#emoji-next").addClass("disabled");
|
$("#emoji-next").addClass("disabled");
|
||||||
|
|
||||||
//絵文字ボタンのトグル
|
//絵文字ボタンのトグル
|
||||||
function emojiToggle() {
|
function emojiToggle(reaction) {
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var acct_id = $("#post-acct-sel").val();
|
||||||
var selin = $("#textarea").prop('selectionStart');
|
var selin = $("#textarea").prop('selectionStart');
|
||||||
if(!selin){
|
if (!selin) {
|
||||||
selin=0;
|
selin = 0;
|
||||||
}
|
}
|
||||||
localStorage.setItem("cursor", selin);
|
localStorage.setItem("cursor", selin);
|
||||||
|
|
||||||
@@ -18,10 +18,10 @@ function emojiToggle() {
|
|||||||
$("#suggest").html("");
|
$("#suggest").html("");
|
||||||
if (!localStorage.getItem("emoji_" + acct_id)) {
|
if (!localStorage.getItem("emoji_" + acct_id)) {
|
||||||
var html =
|
var html =
|
||||||
'<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet(\'true\');">'+lang.lang_emoji_get+'</button>';
|
'<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet(\'true\');">' + lang.lang_emoji_get + '</button>';
|
||||||
$("#emoji-list").html(html);
|
$("#emoji-list").html(html);
|
||||||
} else {
|
} else {
|
||||||
emojiList('home');
|
emojiList('home', reaction);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$("#poll").addClass("hide")
|
$("#poll").addClass("hide")
|
||||||
@@ -34,43 +34,97 @@ function emojiToggle() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//絵文字リスト挿入
|
//絵文字リスト挿入
|
||||||
function emojiGet(parse) {
|
function emojiGet(parse, started) {
|
||||||
$('#emoji-list').html('Loading...');
|
$('#emoji-list').text('Loading...');
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var acct_id = $("#post-acct-sel").val();
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var start = "https://" + domain + "/api/v1/custom_emojis";
|
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
||||||
fetch(start, {
|
var start = "https://" + domain + "/api/v1/custom_emojis";
|
||||||
method: 'GET',
|
fetch(start, {
|
||||||
headers: {
|
method: 'GET',
|
||||||
'content-type': 'application/json'
|
headers: {
|
||||||
},
|
'content-type': 'application/json'
|
||||||
}).then(function(response) {
|
},
|
||||||
return response.json();
|
}).then(function (response) {
|
||||||
}).catch(function(error) {
|
return response.json();
|
||||||
todo(error);
|
}).catch(function (error) {
|
||||||
console.error(error);
|
todo(error);
|
||||||
}).then(function(json) {
|
console.error(error);
|
||||||
if (parse == "true") {
|
}).then(function (json) {
|
||||||
$('#emoji-list').html('Parsing...');
|
if (parse == "true") {
|
||||||
//絵文字をマストドン公式と同順にソート
|
$('#emoji-list').text('Parsing...');
|
||||||
json.sort(function(a, b) {
|
//絵文字をマストドン公式と同順にソート
|
||||||
if (a.shortcode < b.shortcode) return -1;
|
json.sort(function (a, b) {
|
||||||
if (a.shortcode > b.shortcode) return 1;
|
if (a.shortcode < b.shortcode) return -1;
|
||||||
return 0;
|
if (a.shortcode > b.shortcode) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||||
|
} else {
|
||||||
|
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||||
|
}
|
||||||
|
localStorage.setItem("emojiseek", 0);
|
||||||
|
if (!started) {
|
||||||
|
emojiList('home')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
var start = "https://" + domain + "/api/meta";
|
||||||
|
fetch(start, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json'
|
||||||
|
},
|
||||||
|
}).then(function (response) {
|
||||||
|
return response.json();
|
||||||
|
}).catch(function (error) {
|
||||||
|
todo(error);
|
||||||
|
console.error(error);
|
||||||
|
}).then(function (json) {
|
||||||
|
if (json.enableEmojiReaction) {
|
||||||
|
localStorage.setItem("emojiReaction_" + acct_id, "true");
|
||||||
|
} else {
|
||||||
|
localStorage.setItem("emojiReaction_" + acct_id, "disabled");
|
||||||
|
}
|
||||||
|
var emojis = json.emojis;
|
||||||
|
var md = [];
|
||||||
|
Object.keys(emojis).forEach(function (key) {
|
||||||
|
var emoji = emojis[key];
|
||||||
|
md.push({
|
||||||
|
"shortcode": emoji.name,
|
||||||
|
"url": emoji.url
|
||||||
|
})
|
||||||
});
|
});
|
||||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
if (parse == "true") {
|
||||||
} else {
|
$('#emoji-list').text('Parsing...');
|
||||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
//絵文字をマストドン公式と同順にソート
|
||||||
}
|
md.sort(function (a, b) {
|
||||||
localStorage.setItem("emojiseek", 0);
|
if (a.shortcode < b.shortcode) return -1;
|
||||||
emojiList('home')
|
if (a.shortcode > b.shortcode) return 1;
|
||||||
});
|
return 0;
|
||||||
|
});
|
||||||
|
localStorage.setItem("emoji_" + acct_id, JSON.stringify(md));
|
||||||
|
} else {
|
||||||
|
localStorage.setItem("emoji_" + acct_id, JSON.stringify(md));
|
||||||
|
}
|
||||||
|
localStorage.setItem("emojiseek", 0);
|
||||||
|
if (!started) {
|
||||||
|
emojiList('home')
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//リストの描画
|
//リストの描画
|
||||||
function emojiList(target) {
|
function emojiList(target, reaction) {
|
||||||
$("#now-emoji").text(lang.lang_emoji_custom);
|
$("#now-emoji").text(lang.lang_emoji_custom);
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var acct_id = $("#post-acct-sel").val();
|
||||||
|
if (reaction && localStorage.getItem("emojiReaction_" + acct_id) != "true") {
|
||||||
|
console.error("Disabled")
|
||||||
|
clear()
|
||||||
|
hide();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
var start = localStorage.getItem("emojiseek");
|
var start = localStorage.getItem("emojiseek");
|
||||||
if (target == "next") {
|
if (target == "next") {
|
||||||
var start = start * 1 + 127;
|
var start = start * 1 + 127;
|
||||||
@@ -103,8 +157,14 @@ function emojiList(target) {
|
|||||||
for (i = start; i < start + 126; i++) {
|
for (i = start; i < start + 126; i++) {
|
||||||
var emoji = obj[i];
|
var emoji = obj[i];
|
||||||
if (emoji) {
|
if (emoji) {
|
||||||
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
|
if (reaction) {
|
||||||
': \')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
html = html + '<a onclick="emojiReaction(\':' + emoji.shortcode +
|
||||||
|
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||||
|
} else {
|
||||||
|
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
|
||||||
|
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$("#emoji-list").html(html);
|
$("#emoji-list").html(html);
|
||||||
@@ -114,14 +174,19 @@ function emojiList(target) {
|
|||||||
function emojiInsert(code, del) {
|
function emojiInsert(code, del) {
|
||||||
var now = $("#textarea").val();
|
var now = $("#textarea").val();
|
||||||
var selin = localStorage.getItem("cursor");
|
var selin = localStorage.getItem("cursor");
|
||||||
|
if (localStorage.getItem("emoji-zero-width") == "yes") {
|
||||||
|
var brank = "";
|
||||||
|
} else {
|
||||||
|
var brank = " ";
|
||||||
|
}
|
||||||
console.log(selin);
|
console.log(selin);
|
||||||
var now = $("#textarea").val();
|
var now = $("#textarea").val();
|
||||||
if(selin>0){
|
if (selin > 0) {
|
||||||
var before = now.substr(0, selin);
|
var before = now.substr(0, selin);
|
||||||
var after = now.substr(selin, now.length);
|
var after = now.substr(selin, now.length);
|
||||||
newt = before + " "+ code+" " + after;
|
newt = before + brank + code + brank + after;
|
||||||
}else{
|
} else {
|
||||||
newt = code+" ";
|
newt = code + brank;
|
||||||
}
|
}
|
||||||
if (!del) {
|
if (!del) {
|
||||||
$("#textarea").val(newt);
|
$("#textarea").val(newt);
|
||||||
@@ -129,20 +194,20 @@ function emojiInsert(code, del) {
|
|||||||
} else {
|
} else {
|
||||||
var regExp = new RegExp(del, "g");
|
var regExp = new RegExp(del, "g");
|
||||||
var now = now.replace(regExp, "");
|
var now = now.replace(regExp, "");
|
||||||
$("#textarea").val(now + " " + code);
|
$("#textarea").val(now + brank + code);
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#textarea").focus();
|
$("#textarea").focus();
|
||||||
var selin = $("#textarea").prop('selectionStart');
|
var selin = $("#textarea").prop('selectionStart');
|
||||||
if(!selin){
|
if (!selin) {
|
||||||
selin=0;
|
selin = 0;
|
||||||
}
|
}
|
||||||
localStorage.setItem("cursor", selin);
|
localStorage.setItem("cursor", selin);
|
||||||
}
|
}
|
||||||
//改行挿入
|
//改行挿入
|
||||||
function brInsert(code) {
|
function brInsert(code) {
|
||||||
if(!$('#post-box').hasClass("appear")){
|
if (!$('#post-box').hasClass("appear")) {
|
||||||
localStorage.setItem("nohide",true);
|
localStorage.setItem("nohide", true);
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
var now = $("#textarea").val();
|
var now = $("#textarea").val();
|
||||||
|
|||||||
@@ -156,7 +156,6 @@ function media(b64, type, no) {
|
|||||||
Materialize.toast(lang.lang_postimg_aftupload, 1000);
|
Materialize.toast(lang.lang_postimg_aftupload, 1000);
|
||||||
$("#imgup").text("");
|
$("#imgup").text("");
|
||||||
$("#imgsel").show();
|
$("#imgsel").show();
|
||||||
uploadnow=false;
|
|
||||||
localStorage.removeItem("image");
|
localStorage.removeItem("image");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,22 +183,20 @@ function toBlob(base64, type) {
|
|||||||
var element = document.querySelector("#textarea");
|
var element = document.querySelector("#textarea");
|
||||||
element.addEventListener("paste", function(e){
|
element.addEventListener("paste", function(e){
|
||||||
console.log(e)
|
console.log(e)
|
||||||
// 画像の場合
|
if (!e.clipboardData || !e.clipboardData.items) {
|
||||||
// e.clipboardData.types.length == 0
|
return true;
|
||||||
// かつ
|
}
|
||||||
// e.clipboardData.types[0] == "Files"
|
// DataTransferItemList に画像が含まれいない場合は終了する
|
||||||
// となっているので、それ以外を弾く
|
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
|
||||||
if (!e.clipboardData
|
if (imageItems.length == 0) {
|
||||||
|| !e.clipboardData.types
|
console.log("not image")
|
||||||
|| (e.clipboardData.types.length != 1)
|
return true;
|
||||||
|| (e.clipboardData.types[0] != "Files")) {
|
|
||||||
console.log("not image")
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ファイルとして得る
|
// ファイルとして得る
|
||||||
// (なぜかgetAsStringでは上手くいかなかった)
|
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
|
||||||
var imageFile = e.clipboardData.items[0].getAsFile();
|
var imageFile = imageItems[0].getAsFile();
|
||||||
|
var imageType = imageItems[0].type;
|
||||||
|
|
||||||
// FileReaderで読み込む
|
// FileReaderで読み込む
|
||||||
var fr = new FileReader();
|
var fr = new FileReader();
|
||||||
@@ -210,7 +207,8 @@ element.addEventListener("paste", function(e){
|
|||||||
if(mediav){
|
if(mediav){
|
||||||
var i=mediav.split(",").length;
|
var i=mediav.split(",").length;
|
||||||
}
|
}
|
||||||
media(base64, "image/png", i)
|
// DataTransferItem の type に mime tipes があるのでそれを使う
|
||||||
|
media(base64, imageType, i)
|
||||||
};
|
};
|
||||||
fr.readAsDataURL(imageFile);
|
fr.readAsDataURL(imageFile);
|
||||||
|
|
||||||
|
|||||||
@@ -64,11 +64,11 @@ function reactiontoggle(id,acct_id,tlid){
|
|||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response;
|
||||||
console.log(json);
|
console.log(json);
|
||||||
if(json.reactionCounts){
|
if(json.reactions){
|
||||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","rip"];
|
||||||
for(var i=0;i<reactions.length;i++){
|
for(var i=0;i<reactions.length;i++){
|
||||||
if(json.reactionCounts[reactions[i]]){
|
if(json.reactions[reactions[i]]){
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactions[reactions[i]])
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||||
}else{
|
}else{
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
||||||
@@ -77,7 +77,7 @@ function reactiontoggle(id,acct_id,tlid){
|
|||||||
}else{
|
}else{
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||||
}
|
}
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactions[reactions[i]])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$("#pub_" + id +" .reactions").removeClass("hide");
|
$("#pub_" + id +" .reactions").removeClass("hide");
|
||||||
@@ -93,7 +93,21 @@ function reactiontoggle(id,acct_id,tlid){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$("#pub_" + id +" .freeReact").toggleClass("hide");
|
||||||
|
}
|
||||||
|
//reactioncustom
|
||||||
|
function reactioncustom(acct_id,id){
|
||||||
|
$("#reply").val(id);
|
||||||
|
$("#unreact").hide();
|
||||||
|
$("#addreact").removeClass("hide");
|
||||||
|
$("#post-acct-sel").val(acct_id);
|
||||||
|
$('select').material_select();
|
||||||
|
localStorage.setItem("nohide",true);
|
||||||
|
show()
|
||||||
|
emojiToggle(true)
|
||||||
|
$("#left-side").hide();
|
||||||
|
$("#default-emoji").hide();
|
||||||
}
|
}
|
||||||
function reactRefresh(acct_id,id){
|
function reactRefresh(acct_id,id){
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
@@ -119,30 +133,42 @@ function reactRefresh(acct_id,id){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var poll="";
|
var poll="";
|
||||||
console.log(json);
|
if(json.error){
|
||||||
reactRefreshCore(json)
|
$("[toot-id=" + id + "]").hide();
|
||||||
|
$("[toot-id=" + id + "]").remove();
|
||||||
|
}else{
|
||||||
|
reactRefreshCore(json)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function reactRefreshCore(json){
|
function reactRefreshCore(json){
|
||||||
var id=json.id;
|
var id=json.id;
|
||||||
if(json.reactionCounts){
|
if(json.reactions){
|
||||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
|
||||||
$("#pub_" + id +" .reactions").removeClass("hide")
|
$("#pub_" + id +" .reactions").removeClass("hide")
|
||||||
for(var i=0;i<reactions.length;i++){
|
var regExp = new RegExp( ":", "g" ) ;
|
||||||
if(json.reactionCounts[reactions[i]]){
|
Object.keys(json.reactions).forEach(function(keye) {
|
||||||
console.log(json.reactionCounts[reactions[i]])
|
keyeClass=keye.replace(regExp,'');
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
if(json.reactions[keye]){
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
console.log(json.reactions[keye])
|
||||||
|
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactions[keye])
|
||||||
|
$("#pub_" + id +" .re-"+keyeClass).removeClass("hide")
|
||||||
}else{
|
}else{
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
$("#pub_" + id +" .re-"+keyeClass+"ct").text(0)
|
||||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
|
$("#pub_" + id +" .re-"+keyeClass).addClass("hide")
|
||||||
}
|
}
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactions[keye])
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function emojiReaction(emoji){
|
||||||
|
var acct_id = $("#post-acct-sel").val();
|
||||||
|
var id = $("#reply").val();
|
||||||
|
reaction(emoji,id,acct_id,null)
|
||||||
|
clear();
|
||||||
|
hide();
|
||||||
|
}
|
||||||
function reaction(mode,id,acct_id,tlid){
|
function reaction(mode,id,acct_id,tlid){
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
@@ -208,7 +234,7 @@ function voterefresh(acct_id,id){
|
|||||||
}else{
|
}else{
|
||||||
var myvote="";
|
var myvote="";
|
||||||
}
|
}
|
||||||
poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+choice.text+'('+choice.votes+''+myvote+')</div>';
|
poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+escapeHTML(choice.text)+'('+choice.votes+''+myvote+')</div>';
|
||||||
});
|
});
|
||||||
$(".vote_"+json.id).html(poll)
|
$(".vote_"+json.id).html(poll)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ function clear() {
|
|||||||
$("#post-acct-sel").prop("disabled", false);
|
$("#post-acct-sel").prop("disabled", false);
|
||||||
$("#days_poll").val(0);
|
$("#days_poll").val(0);
|
||||||
$("#hours_poll").val(0);
|
$("#hours_poll").val(0);
|
||||||
$("#mins_poll").val(0);
|
$("#mins_poll").val(6);
|
||||||
$(".mastodon-choice").map(function() {
|
$(".mastodon-choice").map(function() {
|
||||||
$(this).val("");
|
$(this).val("");
|
||||||
});
|
});
|
||||||
@@ -307,4 +307,8 @@ function clear() {
|
|||||||
$("#post-acct-sel").val(localStorage.getItem("main"));
|
$("#post-acct-sel").val(localStorage.getItem("main"));
|
||||||
}
|
}
|
||||||
$('select').material_select();
|
$('select').material_select();
|
||||||
|
$("#left-side").show();
|
||||||
|
$("#default-emoji").show();
|
||||||
|
$("#unreact").show();
|
||||||
|
$("#addreact").addClass("hide");
|
||||||
}
|
}
|
||||||
@@ -236,6 +236,8 @@ function del(id, acct_id) {
|
|||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||||
httpreq.responseType = "json";
|
httpreq.responseType = "json";
|
||||||
httpreq.send(JSON.stringify({i:at,noteId:id}));
|
httpreq.send(JSON.stringify({i:at,noteId:id}));
|
||||||
|
$("[toot-id=" + id+ "]").hide();
|
||||||
|
$("[toot-id=" + id + "]").remove();
|
||||||
}else{
|
}else{
|
||||||
var start = "https://" + domain + "/api/v1/statuses/" + id;
|
var start = "https://" + domain + "/api/v1/statuses/" + id;
|
||||||
var httpreq = new XMLHttpRequest();
|
var httpreq = new XMLHttpRequest();
|
||||||
|
|||||||
@@ -53,16 +53,7 @@ input.addEventListener("focus", function() {
|
|||||||
|
|
||||||
var tag = new_val.match(/#(\S{3,})/);
|
var tag = new_val.match(/#(\S{3,})/);
|
||||||
var acct = new_val.match(/@(\S{3,})/);
|
var acct = new_val.match(/@(\S{3,})/);
|
||||||
if(localStorage.getItem("imas")){
|
if (tag && tag[1]) {
|
||||||
//セルフNP
|
|
||||||
var cpnp = new_val.match(/^(?!.*http)\/\/(\S{1,})/);
|
|
||||||
}else{
|
|
||||||
var cpnp=[];
|
|
||||||
}
|
|
||||||
if (cpnp && cpnp[1]) {
|
|
||||||
var q = cpnp[1];
|
|
||||||
cgNPs(q);
|
|
||||||
} else if (tag && tag[1]) {
|
|
||||||
var q = tag[1];
|
var q = tag[1];
|
||||||
} else if (acct && acct[1]) {
|
} else if (acct && acct[1]) {
|
||||||
var q = acct[1];
|
var q = acct[1];
|
||||||
@@ -178,7 +169,7 @@ function cgNPs(q){
|
|||||||
var tags = "";
|
var tags = "";
|
||||||
Object.keys(json).forEach(function(key4) {
|
Object.keys(json).forEach(function(key4) {
|
||||||
var tag = json[key4];
|
var tag = json[key4];
|
||||||
tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + json[key4] + '</a> ';
|
tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + escapeHTML(json[key4]) + '</a> ';
|
||||||
});
|
});
|
||||||
$("#suggest").html("Cinderella NowPlaying:" + tags);
|
$("#suggest").html("Cinderella NowPlaying:" + tags);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ function additional(acct_id, tlid) {
|
|||||||
//メンション系
|
//メンション系
|
||||||
//$(".mention").attr("href", "");
|
//$(".mention").attr("href", "");
|
||||||
|
|
||||||
$(".mention").addClass("parsed");
|
$("#timeline-container .mention").addClass("parsed");
|
||||||
|
|
||||||
$(".hashtag").each(function(i, elem) {
|
$("#timeline-container .hashtag").each(function(i, elem) {
|
||||||
var tags = $(this).attr("href").match(
|
var tags = $(this).attr("href").match(
|
||||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
/https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||||
);
|
);
|
||||||
@@ -17,8 +17,6 @@ function additional(acct_id, tlid) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
//トゥートサムネ
|
//トゥートサムネ
|
||||||
@@ -34,6 +32,7 @@ function additional(acct_id, tlid) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
text=""
|
||||||
var urls =[]
|
var urls =[]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,8 +63,8 @@ function additional(acct_id, tlid) {
|
|||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
if (json.title) {
|
if (json.title) {
|
||||||
$("[toot-id=" + id + "] .additional").html(
|
$("[toot-id=" + id + "] .additional").html(
|
||||||
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
|
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
|
||||||
json.description + "</span>");
|
escapeHTML(json.description) + "</span>");
|
||||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
||||||
$("[toot-id=" + id + "]").addClass("parsed");
|
$("[toot-id=" + id + "]").addClass("parsed");
|
||||||
}
|
}
|
||||||
@@ -149,8 +148,8 @@ function additionalIndv(tlid, acct_id, id) {
|
|||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
if (json.title) {
|
if (json.title) {
|
||||||
$("[toot-id=" + id + "] .additional").html(
|
$("[toot-id=" + id + "] .additional").html(
|
||||||
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
|
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
|
||||||
json.description + "</span>");
|
escapeHTML(json.description) + "</span>");
|
||||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
||||||
$("[toot-id=" + id + "]").addClass("parsed");
|
$("[toot-id=" + id + "]").addClass("parsed");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,6 +91,9 @@ function details(id, acct_id, tlid, mode) {
|
|||||||
}
|
}
|
||||||
beforeToot(id, acct_id, dom);
|
beforeToot(id, acct_id, dom);
|
||||||
userToot(id, acct_id, uid);
|
userToot(id, acct_id, uid);
|
||||||
|
afterToot(id, acct_id, dom);
|
||||||
|
afterUserToot(id, acct_id, uid);
|
||||||
|
afterFTLToot(id, acct_id, dom);
|
||||||
faved(id, acct_id);
|
faved(id, acct_id);
|
||||||
rted(id, acct_id);
|
rted(id, acct_id);
|
||||||
if($("#toot-this div").hasClass("cvo")){
|
if($("#toot-this div").hasClass("cvo")){
|
||||||
@@ -99,7 +102,7 @@ function details(id, acct_id, tlid, mode) {
|
|||||||
$("#toot-this").addClass("cvo");
|
$("#toot-this").addClass("cvo");
|
||||||
}
|
}
|
||||||
if(!$("#activator").hasClass("active")){
|
if(!$("#activator").hasClass("active")){
|
||||||
$('#det-col').collapsible('open', 1);
|
$('#det-col').collapsible('open', 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -332,6 +335,81 @@ function userToot(id, acct_id, user) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//後のLTL
|
||||||
|
function afterToot(id, acct_id, domain) {
|
||||||
|
//var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
|
var start = "https://" + domain +
|
||||||
|
"/api/v1/timelines/public?local=true&min_id=" + id;
|
||||||
|
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) {
|
||||||
|
var templete = parse(json, 'noauth', acct_id);
|
||||||
|
if(templete!=""){
|
||||||
|
$("#ltl-after .no-data").hide();
|
||||||
|
}
|
||||||
|
$("#ltl-after").html(templete);
|
||||||
|
jQuery("time.timeago").timeago();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//後のUTL
|
||||||
|
function afterUserToot(id, acct_id, user) {
|
||||||
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
|
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?min_id=" + id;
|
||||||
|
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 templete = parse(json, '', acct_id);
|
||||||
|
if(templete!=""){
|
||||||
|
$("#user-after .no-data").hide();
|
||||||
|
}
|
||||||
|
$("#user-after").html(templete);
|
||||||
|
jQuery("time.timeago").timeago();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//後のFTL
|
||||||
|
function afterFTLToot(id, acct_id, domain) {
|
||||||
|
//var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
|
var start = "https://" + domain +
|
||||||
|
"/api/v1/timelines/public?min_id=" + id;
|
||||||
|
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) {
|
||||||
|
var templete = parse(json, 'noauth', acct_id);
|
||||||
|
if(templete!=""){
|
||||||
|
$("#ftl-after .no-data").hide();
|
||||||
|
}
|
||||||
|
$("#ftl-after").html(templete);
|
||||||
|
jQuery("time.timeago").timeago();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//ふぁぼ一覧
|
//ふぁぼ一覧
|
||||||
function faved(id, acct_id) {
|
function faved(id, acct_id) {
|
||||||
@@ -412,62 +490,6 @@ function staCopy(id){
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//魚拓
|
|
||||||
function shot(){
|
|
||||||
var title=$("#tootmodal").attr("data-id");
|
|
||||||
var off = $('#toot-this').offset();
|
|
||||||
var w=$("#toot-this").width()+50;
|
|
||||||
var h=$("#toot-this").height()+50;
|
|
||||||
var electron = require("electron");
|
|
||||||
const fs = require("fs");
|
|
||||||
const os = require('os')
|
|
||||||
const shell = electron.shell;
|
|
||||||
const path = require('path')
|
|
||||||
var ipc = electron.ipcRenderer;
|
|
||||||
let options = {
|
|
||||||
types: ['screen'],
|
|
||||||
thumbnailSize: {
|
|
||||||
width: window.parent.screen.width,
|
|
||||||
height: window.parent.screen.height
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const desktopCapturer = electron.desktopCapturer;
|
|
||||||
desktopCapturer.getSources(options, function(error, sources) {
|
|
||||||
if (error) return console.log(error)
|
|
||||||
|
|
||||||
sources.forEach(function(source) {
|
|
||||||
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
|
|
||||||
var durl=source.thumbnail.toDataURL();
|
|
||||||
var b64 = durl.match(
|
|
||||||
/data:image\/png;base64,(.+)/
|
|
||||||
);
|
|
||||||
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
|
|
||||||
const savePath = path.join(os.tmpdir(), 'screenshot.png');
|
|
||||||
var ipc = electron.ipcRenderer;
|
|
||||||
if(localStorage.getItem("savefolder")){
|
|
||||||
var save=localStorage.getItem("savefolder");
|
|
||||||
}else{
|
|
||||||
var save="";
|
|
||||||
}
|
|
||||||
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title,off.top+50,off.left,save]);
|
|
||||||
if($("#toot-this .img-parsed").length>0){
|
|
||||||
for(i=0;i<$("#toot-this .img-parsed").length;i++){
|
|
||||||
var url=$("#toot-this .img-parsed").eq(i).attr("data-url");
|
|
||||||
if(localStorage.getItem("savefolder")){
|
|
||||||
var save=localStorage.getItem("savefolder");
|
|
||||||
}else{
|
|
||||||
var save="";
|
|
||||||
}
|
|
||||||
ipc.send('shot-img-dl', [url,title+"_img"+i+".png",save]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
const message = `Saved screenshot to: ${screenshotPath}`
|
|
||||||
//screenshotMsg.textContent = message
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
//翻訳
|
//翻訳
|
||||||
function trans(tar,to){
|
function trans(tar,to){
|
||||||
var html=$("#toot-this .toot").html();
|
var html=$("#toot-this .toot").html();
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
var id = toot.id;
|
var id = toot.id;
|
||||||
var home = "";
|
var home = "";
|
||||||
if (toot.account.locked) {
|
if (toot.account.locked) {
|
||||||
var locked = ' <i class="fa fa-lock red-text"></i>';
|
var locked = ' <i class="fas fa-lock red-text"></i>';
|
||||||
} else {
|
} else {
|
||||||
var locked = "";
|
var locked = "";
|
||||||
}
|
}
|
||||||
@@ -251,7 +251,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
var via = '';
|
var via = '';
|
||||||
viashow="hide";
|
viashow="hide";
|
||||||
} else {
|
} else {
|
||||||
var via = toot.application.name;
|
var via = escapeHTML(toot.application.name);
|
||||||
//強調チェック
|
//強調チェック
|
||||||
Object.keys(emp).forEach(function(key6) {
|
Object.keys(emp).forEach(function(key6) {
|
||||||
var cli = emp[key6];
|
var cli = emp[key6];
|
||||||
@@ -432,7 +432,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
if(word){
|
if(word){
|
||||||
var word=word.tag;
|
var word=word.tag;
|
||||||
var regExp = new RegExp( word, "g" ) ;
|
var regExp = new RegExp( word, "g" ) ;
|
||||||
content=content.replace(regExp,'<span class="emp">'+word+"</span>");
|
content=content.replace(regExp,'<span class="emp">'+escapeHTML(word)+"</span>");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -483,7 +483,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
for( var i=0; i<tickerdata.length; i++) {
|
for( var i=0; i<tickerdata.length; i++) {
|
||||||
var value=tickerdata[i];
|
var value=tickerdata[i];
|
||||||
if(value.domain==thisdomain){
|
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 src="'+value.image+'" style="height:100%;"><span style="position:relative; top:-0.2rem;"> '+value.name+'</span></div>';
|
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 src="'+value.image+'" style="height:100%;"><span style="position:relative; top:-0.2rem;"> '+escapeHTML(value.name)+'</span></div>';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -506,7 +506,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
toot.account.acct + locked + '</span></div>' +
|
toot.account.acct + locked + '</span></div>' +
|
||||||
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
|
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
|
||||||
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
|
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
|
||||||
'('+lang.lang_parse_clickcopyurl+')"><i class="fa fa-clock-o"></i>' +
|
'('+lang.lang_parse_clickcopyurl+')"><i class="far fa-clock-o"></i>' +
|
||||||
date(toot.created_at, datetype) + '</span>' +
|
date(toot.created_at, datetype) + '</span>' +
|
||||||
'</div></div>' +
|
'</div></div>' +
|
||||||
'<div class="area-toot">'+tickerdom+'<span class="' +
|
'<div class="area-toot">'+tickerdom+'<span class="' +
|
||||||
|
|||||||
@@ -146,6 +146,11 @@ function filter(){
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function filterTime(day,hour,min){
|
||||||
|
$("#days_filter").val(day)
|
||||||
|
$("#hours_filter").val(hour)
|
||||||
|
$("#mins_filter").val(min)
|
||||||
|
}
|
||||||
function makeNewFilter(){
|
function makeNewFilter(){
|
||||||
var acct_id = $("#filter-acct-sel").val();
|
var acct_id = $("#filter-acct-sel").val();
|
||||||
var phr=$("#filter-add-word").val();
|
var phr=$("#filter-add-word").val();
|
||||||
@@ -421,6 +426,16 @@ function exclude(key){
|
|||||||
}else{
|
}else{
|
||||||
excludetxt="?exclude_types[]=follow"
|
excludetxt="?exclude_types[]=follow"
|
||||||
}
|
}
|
||||||
|
var follow=true;
|
||||||
|
}else{
|
||||||
|
var follow=false;
|
||||||
|
}
|
||||||
|
if($('#exc-poll-'+key+':checked').val()){
|
||||||
|
if(reply || bt || fav || follow){
|
||||||
|
excludetxt=excludetxt+"&exclude_types[]=poll"
|
||||||
|
}else{
|
||||||
|
excludetxt="?exclude_types[]=poll"
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
}
|
}
|
||||||
localStorage.setItem("exclude-"+key,excludetxt)
|
localStorage.setItem("exclude-"+key,excludetxt)
|
||||||
|
|||||||
@@ -12,40 +12,68 @@ function list(){
|
|||||||
$("#lists-user").html("");
|
$("#lists-user").html("");
|
||||||
var acct_id = $("#list-acct-sel").val();
|
var acct_id = $("#list-acct-sel").val();
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
var start = "https://" + domain + "/api/v1/lists"
|
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||||
console.log(start)
|
var start = "https://" + domain + "/api/users/lists/list"
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
method: 'GET',
|
method: 'POST',
|
||||||
headers: {
|
body: JSON.stringify({
|
||||||
'content-type': 'application/json',
|
i:at
|
||||||
'Authorization': 'Bearer ' + at
|
}),
|
||||||
},
|
}).then(function(response) {
|
||||||
}).then(function(response) {
|
return response.json();
|
||||||
return response.json();
|
}).catch(function(error) {
|
||||||
}).catch(function(error) {
|
todo(error);
|
||||||
todo(error);
|
console.error(error);
|
||||||
console.error(error);
|
}).then(function(json) {
|
||||||
}).then(function(json) {
|
if (json) {
|
||||||
if (json) {
|
var lists = "";
|
||||||
var lists = "";
|
Object.keys(json).forEach(function(key) {
|
||||||
Object.keys(json).forEach(function(key) {
|
var list = json[key];
|
||||||
var list = json[key];
|
lists = lists + escapeHTML(list.title)+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
|
||||||
lists = lists + list.title+':<a onclick="listShow(' + list.id + ',\'' + list.title + '\',\'' + acct_id +
|
'\')" class="pointer">'+lang.lang_list_show+'</a><br>';
|
||||||
'\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listUser(' + list.id + ',' + acct_id +
|
});
|
||||||
')" class="pointer">'+lang.lang_list_users+'</a><br> ';
|
$("#lists").html(lists);
|
||||||
});
|
}else{
|
||||||
$("#lists").html(lists);
|
$("#lists").html(lang.lang_list_nodata);
|
||||||
}else{
|
}
|
||||||
$("#lists").html(lang.lang_list_nodata);
|
});
|
||||||
}
|
}else{
|
||||||
});
|
var start = "https://" + domain + "/api/v1/lists"
|
||||||
|
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) {
|
||||||
|
if (json) {
|
||||||
|
var lists = "";
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var list = json[key];
|
||||||
|
lists = lists + escapeHTML(list.title)+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
|
||||||
|
'\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listUser(\'' + list.id + '\',' + acct_id +
|
||||||
|
')" class="pointer">'+lang.lang_list_users+'</a><br>';
|
||||||
|
});
|
||||||
|
$("#lists").html(lists);
|
||||||
|
}else{
|
||||||
|
$("#lists").html(lang.lang_list_nodata);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function makeNewList(){
|
function makeNewList(){
|
||||||
var acct_id = $("#list-acct-sel").val();
|
var acct_id = $("#list-acct-sel").val();
|
||||||
var text=$("#list-add").val();
|
var text=$("#list-add").val();
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
|
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||||
var start = "https://" + domain + "/api/v1/lists"
|
var start = "https://" + domain + "/api/v1/lists"
|
||||||
console.log(start)
|
console.log(start)
|
||||||
var httpreq = new XMLHttpRequest();
|
var httpreq = new XMLHttpRequest();
|
||||||
@@ -63,6 +91,25 @@ function makeNewList(){
|
|||||||
$("#list-add").val("")
|
$("#list-add").val("")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
var start = "https://" + domain + "/api/users/lists/create"
|
||||||
|
console.log(start)
|
||||||
|
var httpreq = new XMLHttpRequest();
|
||||||
|
httpreq.open('POST', start, true);
|
||||||
|
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||||
|
httpreq.responseType = "json";
|
||||||
|
httpreq.send(JSON.stringify({
|
||||||
|
i:at,
|
||||||
|
title: text
|
||||||
|
}));
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
|
if (httpreq.readyState === 4) {
|
||||||
|
var json = httpreq.response;
|
||||||
|
list();
|
||||||
|
$("#list-add").val("")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function listShow(id,title,acct_id){
|
function listShow(id,title,acct_id){
|
||||||
localStorage.setItem("list_"+id+"_"+acct_id,title);
|
localStorage.setItem("list_"+id+"_"+acct_id,title);
|
||||||
@@ -70,8 +117,8 @@ function listShow(id,title,acct_id){
|
|||||||
}
|
}
|
||||||
function listUser(id,acct_id){
|
function listUser(id,acct_id){
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||||
console.log(start)
|
console.log(start)
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
@@ -99,7 +146,8 @@ function listUser(id,acct_id){
|
|||||||
}
|
}
|
||||||
function hisList(user,acct_id){
|
function hisList(user,acct_id){
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
|
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||||
var start = "https://" + domain + "/api/v1/lists"
|
var start = "https://" + domain + "/api/v1/lists"
|
||||||
console.log(start)
|
console.log(start)
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
@@ -118,7 +166,7 @@ function hisList(user,acct_id){
|
|||||||
var lists = lang.lang_list_add+"<br>";
|
var lists = lang.lang_list_add+"<br>";
|
||||||
Object.keys(json).forEach(function(key) {
|
Object.keys(json).forEach(function(key) {
|
||||||
var list = json[key];
|
var list = json[key];
|
||||||
lists = lists + '<a onclick="listAdd(' + list.id + ',\'' + user + '\',\'' + acct_id +
|
lists = lists + '<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
|
||||||
'\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
|
'\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
|
||||||
});
|
});
|
||||||
$("#his-lists-a").html(lists);
|
$("#his-lists-a").html(lists);
|
||||||
@@ -144,28 +192,66 @@ function hisList(user,acct_id){
|
|||||||
var lists = lang.lang_list_remove+"<br>";
|
var lists = lang.lang_list_remove+"<br>";
|
||||||
Object.keys(json).forEach(function(key) {
|
Object.keys(json).forEach(function(key) {
|
||||||
var list = json[key];
|
var list = json[key];
|
||||||
lists = lists + '<a onclick="listRemove(' + list.id + ',\'' + user + '\',\'' + acct_id +
|
lists = lists + '<a onclick="listRemove(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
|
||||||
'\')" class="pointer">'+list.title+'</a><br> ';
|
'\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
|
||||||
});
|
});
|
||||||
$("#his-lists-b").html(lists);
|
$("#his-lists-b").html(lists);
|
||||||
}else{
|
}else{
|
||||||
$("#his-lists-b").html(lang.lang_list_nodata);
|
$("#his-lists-b").html(lang.lang_list_nodata);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}else{
|
||||||
|
var start = "https://" + domain + "/api/users/lists/list"
|
||||||
|
fetch(start, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify({
|
||||||
|
i:at
|
||||||
|
}),
|
||||||
|
}).then(function(response) {
|
||||||
|
return response.json();
|
||||||
|
}).catch(function(error) {
|
||||||
|
todo(error);
|
||||||
|
console.error(error);
|
||||||
|
}).then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
var lists = "";
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var list = json[key];
|
||||||
|
lists = lists + list.title+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
|
||||||
|
'\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
|
||||||
|
'\')" class="pointer">'+lang.lang_list_add+lang.lang_list_add_misskey+'</a><br>';
|
||||||
|
});
|
||||||
|
$("#his-lists-a").html(lists);
|
||||||
|
}else{
|
||||||
|
$("#his-lists-a").html(lang.lang_list_nodata);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#his-lists-b").html("");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function listAdd(id,user,acct_id){
|
function listAdd(id,user,acct_id){
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||||
|
var start = "https://" + domain + "/api/users/lists/push"
|
||||||
|
var i={
|
||||||
|
i:at,
|
||||||
|
listId:id,
|
||||||
|
userId:user
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||||
|
var i={
|
||||||
|
account_ids: [user]
|
||||||
|
}
|
||||||
|
}
|
||||||
console.log(start)
|
console.log(start)
|
||||||
var httpreq = new XMLHttpRequest();
|
var httpreq = new XMLHttpRequest();
|
||||||
httpreq.open('POST', start, true);
|
httpreq.open('POST', start, true);
|
||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||||
httpreq.responseType = "json";
|
httpreq.responseType = "json";
|
||||||
httpreq.send(JSON.stringify({
|
httpreq.send(JSON.stringify(i));
|
||||||
account_ids: [user]
|
|
||||||
}));
|
|
||||||
httpreq.onreadystatechange = function() {
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response;
|
||||||
@@ -176,16 +262,28 @@ function listAdd(id,user,acct_id){
|
|||||||
function listRemove(id,user,acct_id){
|
function listRemove(id,user,acct_id){
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||||
|
var start = "https://" + domain + "/api/users/lists/push"
|
||||||
|
var method='POST'
|
||||||
|
var i={
|
||||||
|
i:at,
|
||||||
|
listId:id,
|
||||||
|
userId:user
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||||
|
var method='DELETE'
|
||||||
|
var i={
|
||||||
|
account_ids: [user]
|
||||||
|
}
|
||||||
|
}
|
||||||
console.log(start)
|
console.log(start)
|
||||||
var httpreq = new XMLHttpRequest();
|
var httpreq = new XMLHttpRequest();
|
||||||
httpreq.open('DELETE', start, true);
|
httpreq.open(method, start, true);
|
||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||||
httpreq.responseType = "json";
|
httpreq.responseType = "json";
|
||||||
httpreq.send(JSON.stringify({
|
httpreq.send(JSON.stringify(i));
|
||||||
account_ids: [user]
|
|
||||||
}));
|
|
||||||
httpreq.onreadystatechange = function() {
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -94,12 +94,14 @@ function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
|
|||||||
websocketLocal[wslid] = new WebSocket(startLocal);
|
websocketLocal[wslid] = new WebSocket(startLocal);
|
||||||
websocketHome[wshid].onopen = function(mess) {
|
websocketHome[wshid].onopen = function(mess) {
|
||||||
localStorage.setItem("wssH_" + tlid, wshid);
|
localStorage.setItem("wssH_" + tlid, wshid);
|
||||||
console.log("Connect Streaming API(Integrated:Home)");
|
console.log(tlid + ":Connect Streaming API(Integrated:Home)");
|
||||||
|
console.log(mess);
|
||||||
$("#notice_icon_" + tlid).removeClass("red-text");
|
$("#notice_icon_" + tlid).removeClass("red-text");
|
||||||
}
|
}
|
||||||
websocketLocal[wslid].onopen = function(mess) {
|
websocketLocal[wslid].onopen = function(mess) {
|
||||||
localStorage.setItem("wssL_" + tlid, wslid);
|
localStorage.setItem("wssL_" + tlid, wslid);
|
||||||
console.log("Connect Streaming API(Integrated:Local)");
|
console.log(tlid + ":Connect Streaming API(Integrated:Local)");
|
||||||
|
console.log(mess);
|
||||||
$("#notice_icon_" + tlid).removeClass("red-text");
|
$("#notice_icon_" + tlid).removeClass("red-text");
|
||||||
}
|
}
|
||||||
websocketLocal[wslid].onmessage = function(mess) {
|
websocketLocal[wslid].onmessage = function(mess) {
|
||||||
@@ -195,39 +197,57 @@ function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
websocketLocal[wslid].onerror = function(error) {
|
websocketLocal[wslid].onerror = function(error) {
|
||||||
console.error('WebSocket Error ' + error);
|
console.error('WebSocketLocal Error')
|
||||||
|
console.error(error);
|
||||||
if(mode=="error"){
|
if(mode=="error"){
|
||||||
$("#notice_icon_" + tlid).addClass("red-text");
|
$("#notice_icon_" + tlid).addClass("red-text");
|
||||||
todo('WebSocket Error ' + error);
|
todo('WebSocket Error ' + error);
|
||||||
}else{
|
}else{
|
||||||
reconnector(tlid,TLtype,acct_id,"","error");
|
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
|
||||||
|
localStorage.setItem("wserror_" + tlid,errorct);
|
||||||
|
if(errorct<3){
|
||||||
|
reconnector(tlid,TLtype,acct_id,"","error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
websocketLocal[wslid].onclose = function() {
|
websocketLocal[wslid].onclose = function() {
|
||||||
console.error('WebSocketLocal Closing by error:' + tlid);
|
console.log('WebSocketLocal Closing:' + tlid);
|
||||||
if(mode=="error"){
|
if(mode=="error"){
|
||||||
$("#notice_icon_" + tlid).addClass("red-text");
|
$("#notice_icon_" + tlid).addClass("red-text");
|
||||||
todo('WebSocket Closed');
|
todo('WebSocket Closed');
|
||||||
}else{
|
}else{
|
||||||
reconnector(tlid,TLtype,acct_id,"","error");
|
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
|
||||||
|
localStorage.setItem("wserror_" + tlid,errorct);
|
||||||
|
if(errorct<3){
|
||||||
|
reconnector(tlid,TLtype,acct_id,"","error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
websocketHome[wshid].onerror = function(error) {
|
websocketHome[wshid].onerror = function(error) {
|
||||||
console.error('WebSocket Error ' + error);
|
console.error('WebSocketHome Error')
|
||||||
|
console.error(error);
|
||||||
if(mode=="error"){
|
if(mode=="error"){
|
||||||
$("#notice_icon_" + tlid).addClass("red-text");
|
$("#notice_icon_" + tlid).addClass("red-text");
|
||||||
todo('WebSocket Error ' + error);
|
todo('WebSocket Error ' + error);
|
||||||
}else{
|
}else{
|
||||||
reconnector(tlid,TLtype,acct_id,"","error");
|
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
|
||||||
|
localStorage.setItem("wserror_" + tlid,errorct);
|
||||||
|
if(errorct<3){
|
||||||
|
reconnector(tlid,TLtype,acct_id,"","error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
websocketHome[wshid].onclose = function() {
|
websocketHome[wshid].onclose = function() {
|
||||||
console.error('WebSocketHome Closing by error:' + tlid);
|
console.log('WebSocketHome Closing:' + tlid);
|
||||||
if(mode=="error"){
|
if(mode=="error"){
|
||||||
$("#notice_icon_" + tlid).addClass("red-text");
|
$("#notice_icon_" + tlid).addClass("red-text");
|
||||||
todo('WebSocket Closed');
|
todo('WebSocket Closed');
|
||||||
}else{
|
}else{
|
||||||
reconnector(tlid,TLtype,acct_id,"","error");
|
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
|
||||||
|
localStorage.setItem("wserror_" + tlid,errorct);
|
||||||
|
if(errorct<3){
|
||||||
|
reconnector(tlid,TLtype,acct_id,"","error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -239,6 +259,7 @@ function mixmore(tlid,type) {
|
|||||||
var multi = localStorage.getItem("column");
|
var multi = localStorage.getItem("column");
|
||||||
var obj = JSON.parse(multi);
|
var obj = JSON.parse(multi);
|
||||||
var acct_id = obj[tlid].domain;
|
var acct_id = obj[tlid].domain;
|
||||||
|
moreloading=true;
|
||||||
todo("Integrated TL MoreLoading...(Local)");
|
todo("Integrated TL MoreLoading...(Local)");
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
@@ -302,9 +323,9 @@ function mixmore(tlid,type) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$("#timeline_" + tlid).append(templete);
|
$("#timeline_" + tlid).append(templete);
|
||||||
mixre(acct_id, tlid);
|
|
||||||
additional(acct_id, tlid);
|
additional(acct_id, tlid);
|
||||||
jQuery("time.timeago").timeago();
|
jQuery("time.timeago").timeago();
|
||||||
|
moreloading=false;
|
||||||
todc();
|
todc();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,12 +15,11 @@ function notfColumn(acct_id, tlid, sys){
|
|||||||
native="yes";
|
native="yes";
|
||||||
}
|
}
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
console.log(start)
|
|
||||||
var httpreq = new XMLHttpRequest();
|
var httpreq = new XMLHttpRequest();
|
||||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||||
var misskey=true;
|
var misskey=true;
|
||||||
var start = "https://" + domain + "/api/i/notifications";
|
var start = "https://" + domain + "/api/i/notifications";
|
||||||
httpreq.open(POST, start, true);
|
httpreq.open("POST", start, true);
|
||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||||
var body=JSON.stringify({
|
var body=JSON.stringify({
|
||||||
i:at
|
i:at
|
||||||
@@ -44,7 +43,10 @@ function notfColumn(acct_id, tlid, sys){
|
|||||||
httpreq.onreadystatechange = function() {
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response;
|
||||||
var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
|
var max_id = httpreq.getResponseHeader("link");
|
||||||
|
if(max_id){
|
||||||
|
max_id=max_id.match(/[?&]{1}max_id=([0-9]+)/)[1]
|
||||||
|
}
|
||||||
if(json[0]){
|
if(json[0]){
|
||||||
var templete="";
|
var templete="";
|
||||||
var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
|
var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
|
||||||
@@ -60,13 +62,13 @@ function notfColumn(acct_id, tlid, sys){
|
|||||||
var ipc = electron.ipcRenderer;
|
var ipc = electron.ipcRenderer;
|
||||||
var os = electron.remote.process.platform;
|
var os = electron.remote.process.platform;
|
||||||
var options = {
|
var options = {
|
||||||
body: ct+lang_notf_new[lang],
|
body: ct+lang.lang_notf_new,
|
||||||
icon: localStorage.getItem("prof_"+acct_id)
|
icon: localStorage.getItem("prof_"+acct_id)
|
||||||
};
|
};
|
||||||
if(os=="darwin"){
|
if(os=="darwin"){
|
||||||
var n = new Notification('TheDesk:'+domain, options);
|
var n = new Notification('TheDesk:'+domain, options);
|
||||||
}else{
|
}else{
|
||||||
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
|
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -112,73 +114,6 @@ function notfColumn(acct_id, tlid, sys){
|
|||||||
at;
|
at;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(start);
|
|
||||||
var wsid = websocketNotf.length;
|
|
||||||
websocketNotf[acct_id] = new WebSocket(start);
|
|
||||||
console.log(websocketNotf);
|
|
||||||
websocketNotf[acct_id].onopen = function(mess) {
|
|
||||||
console.log("Connect Streaming API(Notf):");
|
|
||||||
console.log(mess);
|
|
||||||
$("i[data-notf=" + acct_id +"]").removeClass("red-text");
|
|
||||||
|
|
||||||
}
|
|
||||||
websocketNotf[acct_id].onmessage = function(mess) {
|
|
||||||
console.log("Receive Streaming API(Notf):"+acct_id);
|
|
||||||
var popup = localStorage.getItem("popup");
|
|
||||||
if (!popup) {
|
|
||||||
popup = 0;
|
|
||||||
}
|
|
||||||
console.log(domain)
|
|
||||||
if(misskey){
|
|
||||||
console.log("misskey")
|
|
||||||
console.log(JSON.parse(mess.data));
|
|
||||||
if (JSON.parse(mess.data).type == "notification") {
|
|
||||||
var obj = JSON.parse(mess.data).body;
|
|
||||||
console.log(obj);
|
|
||||||
if(obj.type!="follow"){
|
|
||||||
|
|
||||||
templete = misskeyParse([obj], 'notf', acct_id, 'notf', popup);
|
|
||||||
}else{
|
|
||||||
templete = misskeyUserparse([obj], 'notf', acct_id, 'notf', popup);
|
|
||||||
}
|
|
||||||
if(obj.type=="reaction"){
|
|
||||||
console.log("refresh")
|
|
||||||
reactRefresh(acct_id,obj.note.id)
|
|
||||||
}
|
|
||||||
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
|
|
||||||
$("div[data-notf=" + acct_id +"]").prepend(templete);
|
|
||||||
}
|
|
||||||
jQuery("time.timeago").timeago();
|
|
||||||
}else if(JSON.parse(mess.data).type == "note-updated"){
|
|
||||||
var obj = JSON.parse(mess.data).body.note;
|
|
||||||
reactRefreshCore(obj)
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
var obj = JSON.parse(JSON.parse(mess.data).payload);
|
|
||||||
console.log(obj);
|
|
||||||
var type = JSON.parse(mess.data).event;
|
|
||||||
if (type == "notification") {
|
|
||||||
var templete="";
|
|
||||||
localStorage.setItem("lastnotf_" + acct_id,obj.id);
|
|
||||||
if(obj.type!="follow"){
|
|
||||||
templete = parse([obj], 'notf', acct_id, 'notf', popup);
|
|
||||||
}else{
|
|
||||||
templete = userparse([obj], 'notf', acct_id, 'notf', popup);
|
|
||||||
}
|
|
||||||
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
|
|
||||||
$(".tl[data-notf=" + acct_id +"]").prepend(templete);
|
|
||||||
}
|
|
||||||
$(".notf-timeline[data-acct=" + acct_id +"]").prepend(templete);
|
|
||||||
jQuery("time.timeago").timeago();
|
|
||||||
} else if (type == "delete") {
|
|
||||||
$("[toot-id=" + obj + "]").hide();
|
|
||||||
$("[toot-id=" + obj + "]").remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
websocketNotf[acct_id].onerror = function(error) {
|
|
||||||
console.error('WebSocket Error ' + error);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
function notfCommon(acct_id, tlid, sys) {
|
function notfCommon(acct_id, tlid, sys) {
|
||||||
todo("Notifications Loading...");
|
todo("Notifications Loading...");
|
||||||
@@ -233,13 +168,13 @@ function notfCommon(acct_id, tlid, sys) {
|
|||||||
var ipc = electron.ipcRenderer;
|
var ipc = electron.ipcRenderer;
|
||||||
var os = electron.remote.process.platform;
|
var os = electron.remote.process.platform;
|
||||||
var options = {
|
var options = {
|
||||||
body: ct+lang_notf_new[lang],
|
body: ct+lang.lang_notf_new,
|
||||||
icon: localStorage.getItem("prof_"+acct_id)
|
icon: localStorage.getItem("prof_"+acct_id)
|
||||||
};
|
};
|
||||||
if(os=="darwin"){
|
if(os=="darwin"){
|
||||||
var n = new Notification('TheDesk:'+domain, options);
|
var n = new Notification('TheDesk:'+domain, options);
|
||||||
}else{
|
}else{
|
||||||
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
|
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -269,7 +204,11 @@ function notfCommon(acct_id, tlid, sys) {
|
|||||||
}
|
}
|
||||||
$("#notf-box").addClass("fetched");
|
$("#notf-box").addClass("fetched");
|
||||||
todc();
|
todc();
|
||||||
|
notfWS(misskey,acct_id,tlid,domain,at)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
function notfWS(misskey,acct_id,tlid,domain,at){
|
||||||
if(!misskey){
|
if(!misskey){
|
||||||
if(localStorage.getItem("streaming_" + acct_id)){
|
if(localStorage.getItem("streaming_" + acct_id)){
|
||||||
var wss=localStorage.getItem("streaming_" + acct_id)
|
var wss=localStorage.getItem("streaming_" + acct_id)
|
||||||
@@ -278,10 +217,6 @@ function notfCommon(acct_id, tlid, sys) {
|
|||||||
}
|
}
|
||||||
var start = wss + "/api/v1/streaming/?stream=user&access_token=" +
|
var start = wss + "/api/v1/streaming/?stream=user&access_token=" +
|
||||||
at;
|
at;
|
||||||
}else{
|
|
||||||
var start = "wss://" + domain + "/?i=" +
|
|
||||||
at;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(start);
|
console.log(start);
|
||||||
var wsid = websocketNotf.length;
|
var wsid = websocketNotf.length;
|
||||||
@@ -300,31 +235,6 @@ function notfCommon(acct_id, tlid, sys) {
|
|||||||
popup = 0;
|
popup = 0;
|
||||||
}
|
}
|
||||||
console.log(domain)
|
console.log(domain)
|
||||||
if(misskey){
|
|
||||||
console.log("misskey")
|
|
||||||
console.log(JSON.parse(mess.data));
|
|
||||||
if (JSON.parse(mess.data).type == "notification") {
|
|
||||||
var obj = JSON.parse(mess.data).body;
|
|
||||||
console.log(obj);
|
|
||||||
if(obj.type!="follow"){
|
|
||||||
|
|
||||||
templete = misskeyParse([obj], 'notf', acct_id, 'notf', popup);
|
|
||||||
}else{
|
|
||||||
templete = misskeyUserparse([obj], 'notf', acct_id, 'notf', popup);
|
|
||||||
}
|
|
||||||
if(obj.type=="reaction"){
|
|
||||||
console.log("refresh")
|
|
||||||
reactRefresh(acct_id,obj.note.id)
|
|
||||||
}
|
|
||||||
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
|
|
||||||
$("div[data-notf=" + acct_id +"]").prepend(templete);
|
|
||||||
}
|
|
||||||
jQuery("time.timeago").timeago();
|
|
||||||
}else if(JSON.parse(mess.data).type == "note-updated"){
|
|
||||||
var obj = JSON.parse(mess.data).body.note;
|
|
||||||
reactRefreshCore(obj)
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
var obj = JSON.parse(JSON.parse(mess.data).payload);
|
var obj = JSON.parse(JSON.parse(mess.data).payload);
|
||||||
console.log(obj);
|
console.log(obj);
|
||||||
var type = JSON.parse(mess.data).event;
|
var type = JSON.parse(mess.data).event;
|
||||||
@@ -338,18 +248,20 @@ function notfCommon(acct_id, tlid, sys) {
|
|||||||
}
|
}
|
||||||
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
|
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
|
||||||
$("div[data-notf=" + acct_id +"]").prepend(templete);
|
$("div[data-notf=" + acct_id +"]").prepend(templete);
|
||||||
|
$("div[data-const=notf_"+acct_id+"]").prepend(templete);
|
||||||
}
|
}
|
||||||
jQuery("time.timeago").timeago();
|
jQuery("time.timeago").timeago();
|
||||||
} else if (type == "delete") {
|
} else if (type == "delete") {
|
||||||
$("[toot-id=" + obj + "]").hide();
|
$("[toot-id=" + obj + "]").hide();
|
||||||
$("[toot-id=" + obj + "]").remove();
|
$("[toot-id=" + obj + "]").remove();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
websocketNotf[acct_id].onerror = function(error) {
|
websocketNotf[acct_id].onerror = function(error) {
|
||||||
console.error('WebSocket Error ' + error);
|
console.error('WebSocket Error ' + error);
|
||||||
|
notfWS(misskey,acct_id,tlid,domain,at)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//一定のスクロールで発火
|
//一定のスクロールで発火
|
||||||
function notfmore(tlid) {
|
function notfmore(tlid) {
|
||||||
console.log(moreloading);
|
console.log(moreloading);
|
||||||
@@ -482,23 +394,12 @@ function notfCanceler(acct){
|
|||||||
function allNotfRead(){
|
function allNotfRead(){
|
||||||
console.log(localStorage.getItem("notf-fav_2"));
|
console.log(localStorage.getItem("notf-fav_2"));
|
||||||
var multi = localStorage.getItem("multi");
|
var multi = localStorage.getItem("multi");
|
||||||
if (!multi) {
|
if (multi) {
|
||||||
var obj = [{
|
|
||||||
at: localStorage.getItem("acct_0_at"),
|
|
||||||
name: localStorage.getItem("name_0"),
|
|
||||||
domain: localStorage.getItem("domain_0"),
|
|
||||||
user: localStorage.getItem("user_0"),
|
|
||||||
prof: localStorage.getItem("prof_0"),
|
|
||||||
id: localStorage.getItem("user-id_0")
|
|
||||||
}];
|
|
||||||
var json = JSON.stringify(obj);
|
|
||||||
localStorage.setItem("multi", json);
|
|
||||||
} else {
|
|
||||||
var obj = JSON.parse(multi);
|
var obj = JSON.parse(multi);
|
||||||
}
|
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function(key) {
|
||||||
console.log(key);
|
console.log(key);
|
||||||
notfCanceler(key)
|
notfCanceler(key)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
allNotfRead()
|
allNotfRead()
|
||||||
@@ -33,6 +33,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var ltr = localStorage.getItem("letters");
|
var ltr = localStorage.getItem("letters");
|
||||||
var gif = localStorage.getItem("gif");
|
var gif = localStorage.getItem("gif");
|
||||||
var imh = localStorage.getItem("img-height");
|
var imh = localStorage.getItem("img-height");
|
||||||
|
if(!imh){
|
||||||
|
imh=200;
|
||||||
|
}
|
||||||
|
if(imh=="full"){
|
||||||
|
imh="auto";
|
||||||
|
}else{
|
||||||
|
imh=imh+"px";
|
||||||
|
}
|
||||||
//独自ロケール
|
//独自ロケール
|
||||||
var locale = localStorage.getItem("locale");
|
var locale = localStorage.getItem("locale");
|
||||||
if(locale=="yes"){
|
if(locale=="yes"){
|
||||||
@@ -223,11 +231,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
if(!locale && localStorage.getItem("fav_" + acct_id)){
|
if(!locale && localStorage.getItem("fav_" + acct_id)){
|
||||||
what = localStorage.getItem("fav_" + acct_id);
|
what = localStorage.getItem("fav_" + acct_id);
|
||||||
}
|
}
|
||||||
|
} else if (toot.type == "poll") {
|
||||||
|
var what = lang.lang_parse_polled;
|
||||||
|
var icon = "fa-tasks purple-text";
|
||||||
}
|
}
|
||||||
var noticetext = '<span class="cbadge cbadge-hover"title="' + date(toot.created_at,
|
var noticetext = '<span class="cbadge cbadge-hover"title="' + date(toot.created_at,
|
||||||
'absolute') + '('+lang.lang_parse_notftime+')"><i class="fa fa-clock-o"></i>' + date(toot.created_at,
|
'absolute') + '('+lang.lang_parse_notftime+')"><i class="far fa-clock"></i>' + date(toot.created_at,
|
||||||
datetype) +
|
datetype) +
|
||||||
'</span><i class="big-text fa '+icon+'"></i><a onclick="udg(\'' + toot.account.id +
|
'</span><i class="big-text fas '+icon+'"></i><a onclick="udg(\'' + toot.account.id +
|
||||||
'\',\'' + acct_id + '\')" class="pointer grey-text">' + dis_name +
|
'\',\'' + acct_id + '\')" class="pointer grey-text">' + dis_name +
|
||||||
"(@" + toot.account.acct +
|
"(@" + toot.account.acct +
|
||||||
")</a>";
|
")</a>";
|
||||||
@@ -240,16 +251,28 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
$(".notf-reply_" + acct_id).text(replyct*1-(-1));
|
$(".notf-reply_" + acct_id).text(replyct*1-(-1));
|
||||||
localStorage.setItem("notf-reply_" + acct_id,replyct*1-(-1))
|
localStorage.setItem("notf-reply_" + acct_id,replyct*1-(-1))
|
||||||
$(".notf-reply_" + acct_id).removeClass("hide")
|
$(".notf-reply_" + acct_id).removeClass("hide")
|
||||||
|
var sound=localStorage.getItem("replySound");
|
||||||
|
if(sound=="default"){
|
||||||
|
var file="../../source/notif3.wav"
|
||||||
|
}
|
||||||
}else if (toot.type == "reblog") {
|
}else if (toot.type == "reblog") {
|
||||||
var btct=localStorage.getItem("notf-bt_" + acct_id)
|
var btct=localStorage.getItem("notf-bt_" + acct_id)
|
||||||
$(".notf-bt_" + acct_id).text(btct*1-(-1));
|
$(".notf-bt_" + acct_id).text(btct*1-(-1));
|
||||||
localStorage.setItem("notf-bt_" + acct_id,btct*1-(-1))
|
localStorage.setItem("notf-bt_" + acct_id,btct*1-(-1))
|
||||||
$(".notf-bt_" + acct_id).removeClass("hide")
|
$(".notf-bt_" + acct_id).removeClass("hide")
|
||||||
|
var sound=localStorage.getItem("btSound");
|
||||||
|
if(sound=="default"){
|
||||||
|
var file="../../source/notif2.wav"
|
||||||
|
}
|
||||||
}else if (toot.type == "favourite") {
|
}else if (toot.type == "favourite") {
|
||||||
var favct=localStorage.getItem("notf-fav_" + acct_id)
|
var favct=localStorage.getItem("notf-fav_" + acct_id)
|
||||||
$(".notf-fav_" + acct_id).text(favct*1-(-1));
|
$(".notf-fav_" + acct_id).text(favct*1-(-1));
|
||||||
localStorage.setItem("notf-fav_" + acct_id,favct*1-(-1))
|
localStorage.setItem("notf-fav_" + acct_id,favct*1-(-1))
|
||||||
$(".notf-fav_" + acct_id).removeClass("hide")
|
$(".notf-fav_" + acct_id).removeClass("hide")
|
||||||
|
var sound=localStorage.getItem("favSound");
|
||||||
|
if(sound=="default"){
|
||||||
|
var file="../../source/notif.wav"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,6 +280,23 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
if(popup>0){
|
if(popup>0){
|
||||||
Materialize.toast("["+domain+"]"+escapeHTML(toot.account.display_name)+what, popup * 1000);
|
Materialize.toast("["+domain+"]"+escapeHTML(toot.account.display_name)+what, popup * 1000);
|
||||||
}
|
}
|
||||||
|
//通知音
|
||||||
|
if(sound=="c1"){
|
||||||
|
var file=localStorage.getItem("custom1");
|
||||||
|
}else if(sound=="c2"){
|
||||||
|
var file=localStorage.getItem("custom2");
|
||||||
|
}else if(sound=="c3"){
|
||||||
|
var file=localStorage.getItem("custom3");
|
||||||
|
}else if(sound=="c4"){
|
||||||
|
var file=localStorage.getItem("custom4");
|
||||||
|
}
|
||||||
|
if(file){
|
||||||
|
request = new XMLHttpRequest();
|
||||||
|
request.open("GET", file, true);
|
||||||
|
request.responseType = "arraybuffer";
|
||||||
|
request.onload = playSound;
|
||||||
|
request.send();
|
||||||
|
}
|
||||||
if(native=="yes"){
|
if(native=="yes"){
|
||||||
var electron = require("electron");
|
var electron = require("electron");
|
||||||
var ipc = electron.ipcRenderer;
|
var ipc = electron.ipcRenderer;
|
||||||
@@ -323,7 +363,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
}else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){
|
}else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){
|
||||||
rebtxt = "がしばいた";
|
rebtxt = "がしばいた";
|
||||||
}
|
}
|
||||||
var notice = '<i class="big-text fa '+rticon+'"></i>'+ dis_name + "(@" + toot.account.acct +
|
var notice = '<i class="big-text fas '+rticon+'"></i>'+ dis_name + "(@" + toot.account.acct +
|
||||||
")<br>";
|
")<br>";
|
||||||
var boostback = "shared";
|
var boostback = "shared";
|
||||||
var uniqueid=toot.id;
|
var uniqueid=toot.id;
|
||||||
@@ -376,7 +416,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var divider = '<div class="divider"></div>';
|
var divider = '<div class="divider"></div>';
|
||||||
}
|
}
|
||||||
if (toot.account.locked) {
|
if (toot.account.locked) {
|
||||||
var locked = ' <i class="fa fa-lock red-text"></i>';
|
var locked = ' <i class="fas fa-lock red-text"></i>';
|
||||||
} else {
|
} else {
|
||||||
var locked = "";
|
var locked = "";
|
||||||
}
|
}
|
||||||
@@ -384,7 +424,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var via = '';
|
var via = '';
|
||||||
viashow="hide";
|
viashow="hide";
|
||||||
} else {
|
} else {
|
||||||
var via = toot.application.name;
|
var via = escapeHTML(toot.application.name);
|
||||||
//強調チェック
|
//強調チェック
|
||||||
Object.keys(emp).forEach(function(key6) {
|
Object.keys(emp).forEach(function(key6) {
|
||||||
var cli = emp[key6];
|
var cli = emp[key6];
|
||||||
@@ -441,6 +481,40 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var viewer = "";
|
var viewer = "";
|
||||||
var hasmedia = "";
|
var hasmedia = "";
|
||||||
var youtube = "";
|
var youtube = "";
|
||||||
|
//Poll
|
||||||
|
var poll="";
|
||||||
|
if(toot.poll){
|
||||||
|
var choices=toot.poll.options;
|
||||||
|
if(toot.poll.voted){
|
||||||
|
var myvote=lang.lang_parse_voted;
|
||||||
|
var result_hide="";
|
||||||
|
}else{
|
||||||
|
var myvote='<a onclick="voteMastodon(\''+acct_id+'\',\''+toot.poll.id+'\')" class="votebtn">'+lang.lang_parse_vote+'</a><br>';
|
||||||
|
if(choices[0].votes_count===0 || choices[0].votes_count>0){
|
||||||
|
myvote=myvote+'<a onclick="showResult(\''+acct_id+'\',\''+toot.poll.id+'\')" class="pointer">'+lang.lang_parse_unvoted+"</a>";
|
||||||
|
}
|
||||||
|
var result_hide="hide";
|
||||||
|
}
|
||||||
|
if(toot.poll.expired){
|
||||||
|
var ended=lang.lang_parse_endedvote;
|
||||||
|
}else{
|
||||||
|
var ended=date(toot.poll.expires_at, datetype);
|
||||||
|
}
|
||||||
|
Object.keys(choices).forEach(function(keyc) {
|
||||||
|
var choice = choices[keyc];
|
||||||
|
if(!toot.poll.voted && !toot.poll.expired){
|
||||||
|
var votesel='voteSelMastodon(\''+acct_id+'\',\''+toot.poll.id+'\','+keyc+','+toot.poll.multiple+')';
|
||||||
|
var voteclass="pointer waves-effect waves-light";
|
||||||
|
}else{
|
||||||
|
var votesel="";
|
||||||
|
var voteclass="";
|
||||||
|
}
|
||||||
|
poll=poll+'<div class="'+voteclass+' vote vote_'+acct_id+'_'+toot.poll.id+'_'+keyc+'" onclick="'+votesel+'">'+escapeHTML(choice.title)+'<span class="vote_'+acct_id+'_'+toot.poll.id+'_result '+result_hide+'">('+choice.votes_count+')</span></div>';
|
||||||
|
});
|
||||||
|
poll='<div class="vote_'+acct_id+'_'+toot.poll.id+'">'+poll+myvote+'<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){
|
if(toot.emojis){
|
||||||
var emojick = toot.emojis[0];
|
var emojick = toot.emojis[0];
|
||||||
}else{
|
}else{
|
||||||
@@ -456,6 +530,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||||
content = content.replace(regExp, emoji_url);
|
content = content.replace(regExp, emoji_url);
|
||||||
spoil = spoil.replace(regExp, emoji_url);
|
spoil = spoil.replace(regExp, emoji_url);
|
||||||
|
poll = poll.replace(regExp, emoji_url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//ニコフレ絵文字
|
//ニコフレ絵文字
|
||||||
@@ -464,7 +539,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
}else{
|
}else{
|
||||||
var nicoemojick=false;
|
var nicoemojick=false;
|
||||||
}
|
}
|
||||||
//絵文字があれば
|
//絵文字があれば(nico)
|
||||||
if (nicoemojick) {
|
if (nicoemojick) {
|
||||||
Object.keys(toot.profile_emojis).forEach(function(keynico) {
|
Object.keys(toot.profile_emojis).forEach(function(keynico) {
|
||||||
var emoji = toot.profile_emojis[keynico];
|
var emoji = toot.profile_emojis[keynico];
|
||||||
@@ -474,6 +549,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||||
content = content.replace(regExp, emoji_url);
|
content = content.replace(regExp, emoji_url);
|
||||||
spoil = spoil.replace(regExp, emoji_url);
|
spoil = spoil.replace(regExp, emoji_url);
|
||||||
|
poll = poll.replace(regExp, emoji_url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//デフォ絵文字
|
//デフォ絵文字
|
||||||
@@ -490,6 +566,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
if(notice){
|
if(notice){
|
||||||
notice=twemoji.parse(notice);
|
notice=twemoji.parse(notice);
|
||||||
}
|
}
|
||||||
|
if(poll){
|
||||||
|
poll=twemoji.parse(poll);
|
||||||
|
}
|
||||||
var mediack = toot.media_attachments[0];
|
var mediack = toot.media_attachments[0];
|
||||||
//メディアがあれば
|
//メディアがあれば
|
||||||
var media_ids="";
|
var media_ids="";
|
||||||
@@ -501,16 +580,25 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
var purl = media.preview_url;
|
var purl = media.preview_url;
|
||||||
media_ids=media_ids+media.id+",";
|
media_ids=media_ids+media.id+",";
|
||||||
var url = media.url;
|
var url = media.url;
|
||||||
|
var nsfwmes=""
|
||||||
if (toot.sensitive && nsfw) {
|
if (toot.sensitive && nsfw) {
|
||||||
var sense = "sensitive"
|
var sense = "sensitive"
|
||||||
|
var blur=media.blurhash
|
||||||
|
if(blur){
|
||||||
|
nsfwmes='<div class="nsfw-media">NSFW media</div>'
|
||||||
|
purl=parseBlur(blur)
|
||||||
|
var sense=""
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
var sense = ""
|
var sense = ""
|
||||||
|
var blur=null
|
||||||
}
|
}
|
||||||
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
|
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
|
||||||
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
|
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
|
||||||
'" data-type="' + media.type + '" class="img-parsed"><img draggable="false" src="' +
|
'" data-type="' + media.type + '" class="img-parsed img-link" style="width:calc(' + cwdt + '% - 1px); height:'+imh+';"><img draggable="false" src="' +
|
||||||
purl + '" class="' + sense +
|
purl + '" class="' + sense +
|
||||||
' toot-img pointer" style="width:' + cwdt + '%; height:'+imh+'px;"></a></span>';
|
' toot-img pointer">'+nsfwmes+'</a>';
|
||||||
|
|
||||||
});
|
});
|
||||||
media_ids = media_ids.slice(0, -1) ;
|
media_ids = media_ids.slice(0, -1) ;
|
||||||
} else {
|
} else {
|
||||||
@@ -687,45 +775,15 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
for( var i=0; i<tickerdata.length; i++) {
|
for( var i=0; i<tickerdata.length; i++) {
|
||||||
var value=tickerdata[i];
|
var value=tickerdata[i];
|
||||||
if(value.domain==thisdomain){
|
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;"> '+value.name+'</span></div>';
|
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>';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Poll
|
//Quote
|
||||||
var poll="";
|
if(toot.quote){
|
||||||
if(toot.poll){
|
poll=poll+'<div class="quote-renote"><div class="renote-icon"><img src="'+toot.quote.account.avatar+'"></div><div class="renote-user">'+escapeHTML(toot.quote.account.display_name)+'</div><div class="renote-text">'+toot.quote.content+'</div></div>'
|
||||||
var choices=toot.poll.options;
|
|
||||||
if(toot.poll.voted){
|
|
||||||
var myvote=lang.lang_parse_voted;
|
|
||||||
var result_hide="";
|
|
||||||
}else{
|
|
||||||
myvote='<a onclick="voteMastodon(\''+acct_id+'\',\''+toot.poll.id+'\')" class="votebtn">'+lang.lang_parse_vote+'</a><br>';
|
|
||||||
if(choices[0].votes_count===0 || choices[0].votes_count>0){
|
|
||||||
myvote=myvote+'<a onclick="showResult(\''+acct_id+'\',\''+toot.poll.id+'\')" class="pointer">'+lang.lang_parse_unvoted+"</a>";
|
|
||||||
}
|
|
||||||
var result_hide="hide";
|
|
||||||
}
|
|
||||||
if(toot.poll.expired){
|
|
||||||
var ended=lang.lang_parse_endedvote;
|
|
||||||
}else{
|
|
||||||
var ended=date(toot.poll.expires_at, datetype);
|
|
||||||
}
|
|
||||||
Object.keys(choices).forEach(function(keyc) {
|
|
||||||
var choice = choices[keyc];
|
|
||||||
if(!toot.poll.voted && !toot.poll.expired){
|
|
||||||
var votesel='voteSelMastodon(\''+acct_id+'\',\''+toot.poll.id+'\','+keyc+','+toot.poll.multiple+')';
|
|
||||||
var voteclass="pointer waves-effect waves-light";
|
|
||||||
}else{
|
|
||||||
var votesel="";
|
|
||||||
var voteclass="";
|
|
||||||
}
|
|
||||||
poll=poll+'<div class="'+voteclass+' vote vote_'+acct_id+'_'+toot.poll.id+'_'+keyc+'" onclick="'+votesel+'">'+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') +
|
|
||||||
'"><i class="fa fa-calendar-times-o"></i>' +
|
|
||||||
ended+ '</span></div>';
|
|
||||||
}
|
}
|
||||||
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
||||||
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
|
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
|
||||||
@@ -744,17 +802,17 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
toot.account.acct + locked + '</span></div>' +
|
toot.account.acct + locked + '</span></div>' +
|
||||||
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
|
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
|
||||||
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
|
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
|
||||||
'('+lang.lang_parse_clickcopyurl+')"><i class="fa fa-clock-o"></i>' +
|
'('+lang.lang_parse_clickcopyurl+')"><i class="far fa-clock"></i>' +
|
||||||
date(toot.created_at, datetype) + '</span>' +
|
date(toot.created_at, datetype) + '</span>' +
|
||||||
'</div></div>' +
|
'</div></div>' +
|
||||||
'<div class="area-toot">'+tickerdom+'<span class="' +
|
'<div class="area-toot">'+tickerdom+'<span class="' +
|
||||||
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
|
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
|
||||||
'</span><span class="toot ' + spoiler + '">' + content +
|
'</span><span class="toot ' + spoiler + '">' + content +
|
||||||
'</span>' +
|
'</span>' + poll +
|
||||||
'' + viewer + '' +
|
'' + viewer + '' +
|
||||||
'</div><div class="area-additional"><span class="additional">' + analyze +
|
'</div><div class="area-additional"><span class="additional">' + analyze +
|
||||||
'</span>' +
|
'</span>' +
|
||||||
'' +poll+ mentions + tags + '</div>' +
|
'' + mentions + tags + '</div>' +
|
||||||
'<div class="area-vis"></div>'+
|
'<div class="area-vis"></div>'+
|
||||||
'<div class="area-actions '+mouseover+'">' +
|
'<div class="area-actions '+mouseover+'">' +
|
||||||
'<div class="action">'+vis+'</div>'+
|
'<div class="action">'+vis+'</div>'+
|
||||||
@@ -763,27 +821,27 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
|||||||
'<div class="action '+disp["re"]+' '+noauth+'"><a onclick="re(\'' + toot.id +
|
'<div class="action '+disp["re"]+' '+noauth+'"><a onclick="re(\'' + toot.id +
|
||||||
'\',\'' + to_mention + '\',' +
|
'\',\'' + to_mention + '\',' +
|
||||||
acct_id + ',\''+visen+
|
acct_id + ',\''+visen+
|
||||||
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="'+lang.lang_parse_replyto+'"><i class="fa fa-share"></i><span class="rep_ct">' + replyct +
|
'\')" 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 +
|
||||||
'</a></span></a></div>' +
|
'</a></span></a></div>' +
|
||||||
'<div class="action '+can_rt+' '+disp["rt"]+' '+noauth+'"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
|
'<div class="action '+can_rt+' '+disp["rt"]+' '+noauth+'"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
|
||||||
',\'' + tlid +
|
',\'' + tlid +
|
||||||
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="'+lang.lang_parse_bt+'"><i class="fa fa-retweet ' +
|
'\')" class="waves-effect waves-dark btn-flat actct" 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 +
|
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct">' + toot.reblogs_count +
|
||||||
'</span></a></div>' +
|
'</span></a></div>' +
|
||||||
'<div class="action '+can_rt+' '+disp["qt"]+' '+noauth+' '+qtClass+'"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
|
'<div class="action '+can_rt+' '+disp["qt"]+' '+noauth+' '+qtClass+'"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
|
||||||
',\'' + toot.account.acct +'\',\''+toot.url+
|
',\'' + toot.account.acct +'\',\''+toot.url+
|
||||||
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="'+lang.lang_parse_quote+'"><i class="text-darken-3 fa fa-quote-right"></i></a></div>' +
|
'\')" 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 +
|
'<div class="action '+disp["fav"]+' '+noauth+'"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
|
||||||
',\'' + tlid +
|
',\'' + tlid +
|
||||||
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="'+lang.lang_parse_fav+'"><i class="fa text-darken-3 fa-star' +
|
'\')" class="waves-effect waves-dark btn-flat actct" 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 +
|
if_fav + ' fav_' + toot.id + '"></i><span class="fav_ct">' + toot.favourites_count +
|
||||||
'</a></span></div>' +
|
'</a></span></div>' +
|
||||||
'<div class="' + if_mine + ' action '+disp["del"]+' '+noauth+'"><a onclick="del(\'' + toot.id + '\',' +
|
'<div class="' + if_mine + ' action '+disp["del"]+' '+noauth+'"><a onclick="del(\'' + toot.id + '\',' +
|
||||||
acct_id +
|
acct_id +
|
||||||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang.lang_parse_del+'"><i class="fa fa-trash-o"></i></a></div>' +
|
')" class="waves-effect waves-dark btn-flat" 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 + '\',' +
|
'<div class="' + if_mine + ' action pin '+disp["pin"]+' '+noauth+'"><a onclick="pin(\'' + toot.id + '\',' +
|
||||||
acct_id +
|
acct_id +
|
||||||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang.lang_parse_pin+'"><i class="fa fa-map-pin pin_' + toot.id + ' '+if_pin+'"></i></a></div>'
|
')" 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>'
|
||||||
+'<div class="' + if_mine + ' action '+disp["red"]+' '+noauth+'"><a onclick="redraft(\'' + toot.id + '\',' +
|
+'<div class="' + if_mine + ' action '+disp["red"]+' '+noauth+'"><a onclick="redraft(\'' + toot.id + '\',' +
|
||||||
acct_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+
|
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang.lang_parse_redraft+'"><i class="material-icons">redo</i></a></div>'+trans+
|
||||||
@@ -814,6 +872,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
|||||||
var datetype = localStorage.getItem("datetype");
|
var datetype = localStorage.getItem("datetype");
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function(key) {
|
||||||
var toot = obj[key];
|
var toot = obj[key];
|
||||||
|
console.log(toot)
|
||||||
if(!toot.username){
|
if(!toot.username){
|
||||||
var raw=toot;
|
var raw=toot;
|
||||||
toot=toot.account;
|
toot=toot.account;
|
||||||
@@ -822,15 +881,16 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
|||||||
var notf=false;
|
var notf=false;
|
||||||
}
|
}
|
||||||
if (toot.locked) {
|
if (toot.locked) {
|
||||||
var locked = ' <i class="fa fa-lock red-text"></i>';
|
var locked = ' <i class="fas fa-lock red-text"></i>';
|
||||||
} else {
|
} else {
|
||||||
var locked = "";
|
var locked = "";
|
||||||
}
|
}
|
||||||
if (auth) {
|
if (auth) {
|
||||||
var auth = '<i class="material-icons gray pointer" onclick="request(\'' +
|
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
|
||||||
toot.id + '\',\'authorize\',' + acct_id + ')">person_add</i>';
|
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 {
|
} else {
|
||||||
var auth = "";
|
var authhtml = "";
|
||||||
}
|
}
|
||||||
var ftxt=lang.lang_parse_followed;
|
var ftxt=lang.lang_parse_followed;
|
||||||
if(!locale && localStorage.getItem("followlocale_" + acct_id)){
|
if(!locale && localStorage.getItem("followlocale_" + acct_id)){
|
||||||
@@ -916,13 +976,13 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
|||||||
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
|
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
|
||||||
dis_name + '</span>' +
|
dis_name + '</span>' +
|
||||||
'<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
|
'<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
|
||||||
toot.acct + locked + auth +'</span>' +
|
toot.acct + locked +'</span>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
|
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
|
||||||
toot.following_count +
|
toot.following_count +
|
||||||
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
|
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
|
||||||
'</div>' +
|
'</div>' + authhtml+
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>';
|
'</div>';
|
||||||
@@ -934,7 +994,6 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
|||||||
function client(name) {
|
function client(name) {
|
||||||
if(name!="Unknown"){
|
if(name!="Unknown"){
|
||||||
//聞く
|
//聞く
|
||||||
localStorage.removeItem("client_mute");
|
|
||||||
var electron = require("electron");
|
var electron = require("electron");
|
||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
var dialog=remote.dialog;
|
var dialog=remote.dialog;
|
||||||
@@ -951,7 +1010,7 @@ function client(name) {
|
|||||||
if(!obj){
|
if(!obj){
|
||||||
var obj=[];
|
var obj=[];
|
||||||
obj.push(name);
|
obj.push(name);
|
||||||
Materialize.toast(name+lang.lang_status_emphas, 2000);
|
Materialize.toast(escapeHTML(name)+lang.lang_status_emphas, 2000);
|
||||||
}else{
|
}else{
|
||||||
var can;
|
var can;
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function(key) {
|
||||||
@@ -961,12 +1020,12 @@ function client(name) {
|
|||||||
}else{
|
}else{
|
||||||
can=true;
|
can=true;
|
||||||
obj.splice(key, 1);
|
obj.splice(key, 1);
|
||||||
Materialize.toast(name+lang.lang_status_unemphas, 2000);
|
Materialize.toast(escapeHTML(name)+lang.lang_status_unemphas, 2000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(!can){
|
if(!can){
|
||||||
obj.push(name);
|
obj.push(name);
|
||||||
Materialize.toast(name+lang.lang_status_emphas, 2000);
|
Materialize.toast(escapeHTML(name)+lang.lang_status_emphas, 2000);
|
||||||
}else{
|
}else{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -977,12 +1036,12 @@ function client(name) {
|
|||||||
var cli = localStorage.getItem("client_mute");
|
var cli = localStorage.getItem("client_mute");
|
||||||
var obj = JSON.parse(cli);
|
var obj = JSON.parse(cli);
|
||||||
if(!obj){
|
if(!obj){
|
||||||
var obj=[];
|
obj=[];
|
||||||
}
|
}
|
||||||
obj.push(name);
|
obj.push(name);
|
||||||
var json = JSON.stringify(obj);
|
var json = JSON.stringify(obj);
|
||||||
localStorage.setItem("client_mute", json);
|
localStorage.setItem("client_mute", json);
|
||||||
Materialize.toast(name+lang.lang_parse_mute, 2000);
|
Materialize.toast(escapeHTML(name)+lang.lang_parse_mute, 2000);
|
||||||
}else{
|
}else{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,10 +108,10 @@ function voteMastodonrefresh(acct_id,id){
|
|||||||
if(!json.voted){
|
if(!json.voted){
|
||||||
votesel='voteSelMastodon(\''+acct_id+'\',\''+json.id+'\','+keyc+','+json.multiple+')';
|
votesel='voteSelMastodon(\''+acct_id+'\',\''+json.id+'\','+keyc+','+json.multiple+')';
|
||||||
}
|
}
|
||||||
poll=poll+'<div class="pointer vote vote_'+acct_id+'_'+json.id+'_'+keyc+'" onclick="'+votesel+'">'+choice.title+'<span class="vote_'+acct_id+'_'+json.id+'_result '+result_hide+'">('+choice.votes_count+')</span></div>';
|
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+'<span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
|
||||||
'"><i class="fa fa-calendar-times-o"></i>' +
|
'"><i class="far fa-calendar-times"></i>' +
|
||||||
date(json.expires_at, datetype) + '</span>';
|
date(json.expires_at, datetype) + '</span>';
|
||||||
$('.vote_'+acct_id+'_'+json.id).html(poll)
|
$('.vote_'+acct_id+'_'+json.id).html(poll)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ function src(mode) {
|
|||||||
var q = $("#src").val();
|
var q = $("#src").val();
|
||||||
var acct_id = $("#src-acct-sel").val();
|
var acct_id = $("#src-acct-sel").val();
|
||||||
if(acct_id=="tootsearch"){
|
if(acct_id=="tootsearch"){
|
||||||
tootsearch(q);
|
tsAdd(q)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
localStorage.setItem("last-use", acct_id);
|
localStorage.setItem("last-use", acct_id);
|
||||||
@@ -52,7 +52,7 @@ function src(mode) {
|
|||||||
var tag = json.hashtags[key4];
|
var tag = json.hashtags[key4];
|
||||||
if(mode){
|
if(mode){
|
||||||
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
|
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
|
||||||
'\',\'add\')" class="pointer">#' + tag + '</a><br> ';
|
'\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
|
||||||
}else{
|
}else{
|
||||||
tags=tags+graphDraw(tag);
|
tags=tags+graphDraw(tag);
|
||||||
}
|
}
|
||||||
@@ -73,9 +73,26 @@ function src(mode) {
|
|||||||
jQuery("time.timeago").timeago();
|
jQuery("time.timeago").timeago();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function tootsearch(q){
|
function tsAdd(q){
|
||||||
|
var add = {
|
||||||
|
domain: acct_id,
|
||||||
|
type: "tootsearch",
|
||||||
|
data: q
|
||||||
|
};
|
||||||
|
var multi = localStorage.getItem("column");
|
||||||
|
var obj = JSON.parse(multi);
|
||||||
|
localStorage.setItem("card_" + obj.length,"true");
|
||||||
|
obj.push(add);
|
||||||
|
console.log(obj);
|
||||||
|
var json = JSON.stringify(obj);
|
||||||
|
localStorage.setItem("column", json);
|
||||||
|
parseColumn();
|
||||||
|
}
|
||||||
|
function tootsearch(tlid,q){
|
||||||
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
|
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
|
||||||
console.log(start)
|
console.log(start)
|
||||||
|
$("#notice_" + tlid).text("tootsearch("+q+")");
|
||||||
|
$("#notice_icon_" + tlid).text("search");
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -90,17 +107,68 @@ function tootsearch(q){
|
|||||||
var templete="";
|
var templete="";
|
||||||
var json=raw.hits.hits;
|
var json=raw.hits.hits;
|
||||||
console.log(json);
|
console.log(json);
|
||||||
Object.keys(json).forEach(function(key5) {
|
var max_id = raw["hits"].length;
|
||||||
var toot = json[key5]["_source"];
|
for(var i=0;i<json.length;i++){
|
||||||
console.log(toot);
|
var toot = json[i]["_source"];
|
||||||
if(toot && toot.account){
|
console.log(lastid)
|
||||||
templete = templete+parse([toot],'noauth');
|
if(lastid!=toot.uri){
|
||||||
|
console.log(toot);
|
||||||
|
if(toot && toot.account){
|
||||||
|
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
var lastid=toot.uri;
|
||||||
|
}
|
||||||
if(!templete){
|
if(!templete){
|
||||||
templete=lang.lang_details_nodata;
|
templete=lang.lang_details_nodata;
|
||||||
|
}else{
|
||||||
|
templete=templete+'<div class="hide ts-marker" data-maxid="'+max_id+'"></div>';
|
||||||
}
|
}
|
||||||
$("#src-contents").html("Tootsearch("+lang.lang_src_ts+")<br>" + templete);
|
$("#timeline_" + tlid).html(templete);
|
||||||
|
|
||||||
|
jQuery("time.timeago").timeago();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function moreTs(tlid,q){
|
||||||
|
var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid");
|
||||||
|
moreloading=true;
|
||||||
|
var start = "https://tootsearch.chotto.moe/api/v1/search?from="+sid+"&sort=created_at%3Adesc&q=" + q
|
||||||
|
console.log(start)
|
||||||
|
$("#notice_" + tlid).text("tootsearch("+q+")");
|
||||||
|
$("#notice_icon_" + tlid).text("search");
|
||||||
|
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(raw) {
|
||||||
|
var templete="";
|
||||||
|
var json=raw.hits.hits;
|
||||||
|
console.log(json);
|
||||||
|
var max_id = raw["hits"].length;
|
||||||
|
for(var i=0;i<json.length;i++){
|
||||||
|
var toot = json[i]["_source"];
|
||||||
|
console.log(lastid)
|
||||||
|
if(lastid!=toot.uri){
|
||||||
|
console.log(toot);
|
||||||
|
if(toot && toot.account){
|
||||||
|
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var lastid=toot.uri;
|
||||||
|
}
|
||||||
|
if(!templete){
|
||||||
|
templete=lang.lang_details_nodata;
|
||||||
|
}else{
|
||||||
|
templete=templete+'<div class="hide ts-marker" data-maxid="'+max_id+'"></div>';
|
||||||
|
}
|
||||||
|
$("#timeline_" + tlid).append(templete);
|
||||||
|
|
||||||
jQuery("time.timeago").timeago();
|
jQuery("time.timeago").timeago();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -118,13 +186,13 @@ function graphDraw(tag){
|
|||||||
var zero=50-(his[0].uses/max*50);
|
var zero=50-(his[0].uses/max*50);
|
||||||
if(max===0){
|
if(max===0){
|
||||||
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
|
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 <a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
|
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots <a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
|
||||||
'\',\'add\')" class="pointer">#' + tag.name + '</a> '+his[0].accounts+lang.lang_src_people;
|
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a> '+his[0].accounts+lang.lang_src_people;
|
||||||
}else{
|
}else{
|
||||||
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
|
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>'+
|
'<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 <a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
|
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots <a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
|
||||||
'\',\'add\')" class="pointer">#' + tag.name + '</a> '+his[0].accounts+lang.lang_src_people;
|
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a> '+his[0].accounts+lang.lang_src_people;
|
||||||
}
|
}
|
||||||
|
|
||||||
return tags;
|
return tags;
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ function favTag(){
|
|||||||
var ptt=lang.lang_tags_unrealtime;
|
var ptt=lang.lang_tags_unrealtime;
|
||||||
var nowon="("+lang.lang_tags_realtime+")";
|
var nowon="("+lang.lang_tags_realtime+")";
|
||||||
}
|
}
|
||||||
|
tag=escapeHTML(tag);
|
||||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a>'+nowon+'<span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="' +lang.lang_parse_tagTL.replace("{{tag}}" ,'#'+tag)+ '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">Toot</a> '+
|
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a>'+nowon+'<span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="' +lang.lang_parse_tagTL.replace("{{tag}}" ,'#'+tag)+ '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">Toot</a> '+
|
||||||
'<a onclick="autoToot(\'' + tag + '\');" class="pointer" title="'+lang.lang_tags_always + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">'+ptt+'</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' +lang.lang_tags_tagunpin.replace("{{tag}}" ,'#'+tag)+ '">'+lang.lang_del+'</a></span> ';
|
'<a onclick="autoToot(\'' + tag + '\');" class="pointer" title="'+lang.lang_tags_always + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">'+ptt+'</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' +lang.lang_tags_tagunpin.replace("{{tag}}" ,'#'+tag)+ '">'+lang.lang_del+'</a></span> ';
|
||||||
});
|
});
|
||||||
@@ -96,6 +97,7 @@ function trendTag(){
|
|||||||
var tags="";
|
var tags="";
|
||||||
json=json.score;
|
json=json.score;
|
||||||
Object.keys(json).forEach(function(tag) {
|
Object.keys(json).forEach(function(tag) {
|
||||||
|
tag=escapeHTML(tag);
|
||||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
||||||
});
|
});
|
||||||
$("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
|
$("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
|
||||||
@@ -115,6 +117,7 @@ function tagTL(a,b,c,d){
|
|||||||
tl(a,b,acct_id,d);
|
tl(a,b,acct_id,d);
|
||||||
}
|
}
|
||||||
function autoToot(tag){
|
function autoToot(tag){
|
||||||
|
tag=escapeHTML(tag)
|
||||||
var nowPT=localStorage.getItem("stable")
|
var nowPT=localStorage.getItem("stable")
|
||||||
if(nowPT==tag){
|
if(nowPT==tag){
|
||||||
localStorage.removeItem("stable");
|
localStorage.removeItem("stable");
|
||||||
|
|||||||
886
app/js/tl/tl.js
886
app/js/tl/tl.js
File diff suppressed because it is too large
Load Diff
@@ -287,6 +287,10 @@ function dlImg(){
|
|||||||
console.log(arg);
|
console.log(arg);
|
||||||
})
|
})
|
||||||
ipc.on('general-dl-message', function (event, arg) {
|
ipc.on('general-dl-message', function (event, arg) {
|
||||||
console.log(arg);
|
var argC=arg.replace(/\\/g,"\\\\")+"\\\\.";
|
||||||
|
Materialize.toast(lang.lang_img_DLDone+arg+'<button class="btn-flat toast-action" onclick="openFinder(\''+argC+'\')">Show</button>', 5000);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
function openFinder(dir){
|
||||||
|
ipc.send('open-finder', dir);
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@ $('.type').click(function() {
|
|||||||
$("#type-sel").val($(this).attr("data-type"))
|
$("#type-sel").val($(this).attr("data-type"))
|
||||||
})
|
})
|
||||||
//最初、カラム変更時に発火
|
//最初、カラム変更時に発火
|
||||||
function parseColumn() {
|
function parseColumn(dontclose) {
|
||||||
console.log("parse");
|
console.log("parse");
|
||||||
var size = localStorage.getItem("size");
|
var size = localStorage.getItem("size");
|
||||||
if (size) {
|
if (size) {
|
||||||
@@ -28,13 +28,15 @@ function parseColumn() {
|
|||||||
$(".toot-reset").css("font-size", size + "px");
|
$(".toot-reset").css("font-size", size + "px");
|
||||||
$(".cont-series").css("font-size", size + "px");
|
$(".cont-series").css("font-size", size + "px");
|
||||||
}
|
}
|
||||||
tlCloser();
|
if(localStorage.getItem("menu-done")){
|
||||||
|
$("#fukidashi").addClass("hide")
|
||||||
|
}
|
||||||
|
if(!dontclose){
|
||||||
|
tlCloser();
|
||||||
|
}
|
||||||
|
|
||||||
var multi = localStorage.getItem("multi");
|
var multi = localStorage.getItem("multi");
|
||||||
if (!multi) {
|
if (multi) {
|
||||||
var obj = [];
|
|
||||||
var json = JSON.stringify(obj);
|
|
||||||
localStorage.setItem("multi", json);
|
|
||||||
} else {
|
|
||||||
var obj = JSON.parse(multi);
|
var obj = JSON.parse(multi);
|
||||||
|
|
||||||
var templete;
|
var templete;
|
||||||
@@ -50,6 +52,11 @@ function parseColumn() {
|
|||||||
ckdb(key);
|
ckdb(key);
|
||||||
//フィルターデータ読もう
|
//フィルターデータ読もう
|
||||||
getFilter(key);
|
getFilter(key);
|
||||||
|
var domain = localStorage.getItem("domain_" + key);
|
||||||
|
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||||
|
localStorage.removeItem("misskey_wss_" + key)
|
||||||
|
connectMisskey(key)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var acctlist=obj;
|
var acctlist=obj;
|
||||||
@@ -130,6 +137,21 @@ function parseColumn() {
|
|||||||
}
|
}
|
||||||
var html =webviewParse("https://tweetdeck.twitter.com",key,insert,icnsert,css);
|
var html =webviewParse("https://tweetdeck.twitter.com",key,insert,icnsert,css);
|
||||||
$("#timeline-container").append(html);
|
$("#timeline-container").append(html);
|
||||||
|
}else if(acct.type=="tootsearch"){
|
||||||
|
if(!acct.left_fold){
|
||||||
|
basekey=key;
|
||||||
|
}
|
||||||
|
var width = localStorage.getItem("width");
|
||||||
|
if (width) {
|
||||||
|
var css=" min-width:"+width+"px;"
|
||||||
|
}
|
||||||
|
var anime = localStorage.getItem("animation");
|
||||||
|
if (anime=="yes" || !anime) {
|
||||||
|
var animecss="box-anime";
|
||||||
|
}else{
|
||||||
|
var animecss="";
|
||||||
|
}
|
||||||
|
unstreamingTL(acct.type,key,basekey,insert,icnsert,acct.left_fold,css,animecss,acct.data);
|
||||||
}else{
|
}else{
|
||||||
var width = localStorage.getItem("width");
|
var width = localStorage.getItem("width");
|
||||||
if (width) {
|
if (width) {
|
||||||
@@ -142,14 +164,15 @@ function parseColumn() {
|
|||||||
var animecss="";
|
var animecss="";
|
||||||
}
|
}
|
||||||
if(acct.type=="notf"){
|
if(acct.type=="notf"){
|
||||||
var exclude=lang.lang_excluded+':<br><input type="checkbox" class="filled-in" id="exc-reply-'+key+'" '+excludeCk(key,"mention")+' /><label for="exc-reply-'+key+'" class="exc-chb"><i class="fa fa-share exc-icons"></i></label> '+
|
var exclude=lang.lang_excluded+':<br><input type="checkbox" class="filled-in" id="exc-reply-'+key+'" '+excludeCk(key,"mention")+' /><label for="exc-reply-'+key+'" class="exc-chb"><i class="fas fa-share exc-icons"></i></label> '+
|
||||||
'<input type="checkbox" class="filled-in" id="exc-fav-'+key+'" '+excludeCk(key,"favourite")+' /><label for="exc-fav-'+key+'" class="exc-chb"><i class="fa fa-star exc-icons"></i></label> '+
|
'<input type="checkbox" class="filled-in" id="exc-fav-'+key+'" '+excludeCk(key,"favourite")+' /><label for="exc-fav-'+key+'" class="exc-chb"><i class="fas fa-star exc-icons"></i></label> '+
|
||||||
'<input type="checkbox" class="filled-in" id="exc-bt-'+key+'" '+excludeCk(key,"reblog")+' /><label for="exc-bt-'+key+'" class="exc-chb" ><i class="fa fa-retweet exc-icons"></i></label> '+
|
'<input type="checkbox" class="filled-in" id="exc-bt-'+key+'" '+excludeCk(key,"reblog")+' /><label for="exc-bt-'+key+'" class="exc-chb" ><i class="fas fa-retweet exc-icons"></i></label> '+
|
||||||
'<input type="checkbox" class="filled-in" id="exc-follow-'+key+'" '+excludeCk(key,"follow")+' /><label for="exc-follow-'+key+'" class="exc-chb" ><i class="fa fa-users exc-icons"></i></label> '+
|
'<input type="checkbox" class="filled-in" id="exc-follow-'+key+'" '+excludeCk(key,"follow")+' /><label for="exc-follow-'+key+'" class="exc-chb" ><i class="fas fa-users exc-icons"></i></label> '+
|
||||||
|
'<input type="checkbox" class="filled-in" id="exc-poll-'+key+'" '+excludeCk(key,"poll")+' /><label for="exc-poll-'+key+'" class="exc-chb" ><i class="fas fa-tasks exc-icons"></i></label> '+
|
||||||
'<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('+key+')">Filter</button><br>';
|
'<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('+key+')">Filter</button><br>';
|
||||||
}else if(acct.type=="home"){
|
}else if(acct.type=="home"){
|
||||||
var exclude='<a onclick="ebtToggle(' + key +
|
var exclude='<a onclick="ebtToggle(' + key +
|
||||||
')" class="setting nex"><i class="fa fa-retweet waves-effect nex" title="'+lang.lang_layout_excludingbt +'" style="font-size:24px"></i><span id="sta-bt-' +
|
')" class="setting nex"><i class="fas fa-retweet waves-effect nex" title="'+lang.lang_layout_excludingbt +'" style="font-size:24px"></i><span id="sta-bt-' +
|
||||||
key + '">Off</span></a>'+lang.lang_layout_excludingbt+'<br>';
|
key + '">Off</span></a>'+lang.lang_layout_excludingbt+'<br>';
|
||||||
}else{
|
}else{
|
||||||
var exclude="";
|
var exclude="";
|
||||||
@@ -165,9 +188,17 @@ function parseColumn() {
|
|||||||
if(key===0){
|
if(key===0){
|
||||||
left_hold='';
|
left_hold='';
|
||||||
}
|
}
|
||||||
|
if(localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct.domain))=="misskey"){
|
||||||
|
var isMisRed=""
|
||||||
|
exclude=""
|
||||||
|
var if_misskey_hide="hide"
|
||||||
|
}else{
|
||||||
|
var isMisRed="red-text"
|
||||||
|
var if_misskey_hide=""
|
||||||
|
}
|
||||||
var html='<div class="boxIn" id="timeline_box_' + key + '_box" tlid="' + key +
|
var html='<div class="boxIn" id="timeline_box_' + key + '_box" tlid="' + key +
|
||||||
'" data-acct="'+acct.domain+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+' ">'+
|
'" data-acct="'+acct.domain+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+' ">'+
|
||||||
'<div class="area-notice"><i class="material-icons waves-effect red-text" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="goTop(' + key + ')" title="'+lang.lang_layout_gotop +'"></i></div>'+
|
'<div class="area-notice"><i class="material-icons waves-effect '+isMisRed+'" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="checkStr(\''+acct.type+'\', \''+data+'\', \''+acct.domain+'\', \''+key+'\', \''+delc+'\',\''+voice+'\',null)" title="'+lang.lang_layout_gotop +'"></i></div>'+
|
||||||
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
|
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
|
||||||
'<div class="area-a1"><a onclick="notfToggle(' + acct.domain + ',' + key +
|
'<div class="area-a1"><a onclick="notfToggle(' + acct.domain + ',' + key +
|
||||||
')" class="setting nex '+if_notf+'" title="'+unique_notf+'"'+icnsert+'><i class="material-icons waves-effect nex notf-icon_' +
|
')" class="setting nex '+if_notf+'" title="'+unique_notf+'"'+icnsert+'><i class="material-icons waves-effect nex notf-icon_' +
|
||||||
@@ -178,7 +209,7 @@ function parseColumn() {
|
|||||||
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
||||||
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
||||||
'"><div id="notifications_' + key +
|
'"><div id="notifications_' + key +
|
||||||
'" data-notf="' + acct.domain + '" data-type="notf"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
'" data-notf="' + acct.domain + '" data-type="notf" class="notf-timeline"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||||
'" style="padding:5px;">'+exclude+left_hold+'<a onclick="mediaToggle(' + key +
|
'" style="padding:5px;">'+exclude+left_hold+'<a onclick="mediaToggle(' + key +
|
||||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_mediafil +'">perm_media</i><span id="sta-media-' +
|
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_mediafil +'">perm_media</i><span id="sta-media-' +
|
||||||
key + '">On</span></a>'+lang.lang_layout_mediafil +'<br><a onclick="cardToggle(' + key +
|
key + '">On</span></a>'+lang.lang_layout_mediafil +'<br><a onclick="cardToggle(' + key +
|
||||||
@@ -186,8 +217,8 @@ function parseColumn() {
|
|||||||
key + '">On</span></a>'+lang.lang_layout_linkana +'<br><a onclick="voiceToggle(' + key +
|
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-' +
|
')" 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 +
|
key + '">On</span></a>'+lang.lang_layout_tts +'TL<br><a onclick="reconnector(' + key +
|
||||||
',\''+acct.type+'\',\''+acct.domain+'\',\''+acct.data+'\')" class="setting nex '+if_notf+'"><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 +
|
',\''+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 +
|
||||||
'" class="tl '+acct.type+'-timeline " tlid="' + key + '" data-type="' + acct.type + '" data-acct="'+acct.domain+'"><div id="landing_'+key+'" style="text-align:center">'+lang.lang_layout_nodata +'</div></div></div>'
|
'" 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);
|
$('#timeline_box_' + basekey + '_parentBox').append(html);
|
||||||
localStorage.removeItem("pool_" + key);
|
localStorage.removeItem("pool_" + key);
|
||||||
if (acct.data) {
|
if (acct.data) {
|
||||||
@@ -239,6 +270,15 @@ function parseColumn() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function checkStr(type, data, acct_id, key, delc,voice){
|
||||||
|
if($('#notice_icon_' + key).hasClass("red-text") && type!="notf" && type!="mix"){
|
||||||
|
console.log("sabun-get")
|
||||||
|
goTop(key);
|
||||||
|
tlDiff(type, data, acct_id, key, delc,voice,"");
|
||||||
|
}else{
|
||||||
|
goTop(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
//セカンダリートゥートボタン
|
//セカンダリートゥートボタン
|
||||||
function secvis(set){
|
function secvis(set){
|
||||||
if(set=="public"){
|
if(set=="public"){
|
||||||
@@ -424,7 +464,7 @@ function coloradd(key,bg,txt){
|
|||||||
function webviewParse(url,key,insert,icnsert,css){
|
function webviewParse(url,key,insert,icnsert,css){
|
||||||
var html = '<div class="box" id="timeline_box_' + key + '_box" tlid="' + key +
|
var html = '<div class="box" id="timeline_box_' + key + '_box" tlid="' + key +
|
||||||
'" style="'+css+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+'">'+
|
'" style="'+css+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+'">'+
|
||||||
'<div class="area-notice"><i class="fa fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>'+
|
'<div class="area-notice"><i class="fab fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>'+
|
||||||
'<div class="area-notice_name tl-title">WebView('+url+')</div>'+
|
'<div class="area-notice_name tl-title">WebView('+url+')</div>'+
|
||||||
'<div class="area-sta"><input type="checkbox" id="webviewsel" value="true" class="filled-in"><label for="webviewsel">'+lang.lang_layout_webviewmode +'</label></div>'+
|
'<div class="area-sta"><input type="checkbox" id="webviewsel" value="true" class="filled-in"><label for="webviewsel">'+lang.lang_layout_webviewmode +'</label></div>'+
|
||||||
'<div class="area-a2"><a onclick="removeColumn(' + key +
|
'<div class="area-a2"><a onclick="removeColumn(' + key +
|
||||||
@@ -433,11 +473,42 @@ function webviewParse(url,key,insert,icnsert,css){
|
|||||||
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
||||||
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
||||||
'"></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
'"></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||||
'" style="padding:5px;">'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:calc(100% - 110px);"><div id="timeline_' + key +
|
'" style="padding:5px;">'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:100%;"><div id="timeline_' + key +
|
||||||
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="'+url+'" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
|
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="'+url+'" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
function unstreamingTL(type,key,basekey,insert,icnsert,left_fold,css,animecss,q){
|
||||||
|
if(!left_fold){
|
||||||
|
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>';
|
||||||
|
}
|
||||||
|
var html='<div class="boxIn" id="timeline_box_' + key + '_box" tlid="' + key +
|
||||||
|
'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+' ">'+
|
||||||
|
'<div class="area-notice"><i class="material-icons waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;" onclick="tootsearch('+key+',\''+q+'\');" title="'+lang.lang_layout_gotop +'"></i></div>'+
|
||||||
|
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
|
||||||
|
'<div class="area-a1"></div><div class="area-sta"></div>'+
|
||||||
|
'<div class="area-a2"><a onclick="removeColumn(' + key +
|
||||||
|
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_delthis +'"'+icnsert+'>cancel</i></a></div>'+
|
||||||
|
'<div class="area-a3"><a onclick="setToggle(' + key +
|
||||||
|
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
||||||
|
'<div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||||
|
'" style="padding:5px;">'+left_hold+'<a onclick="mediaToggle(' + key +
|
||||||
|
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_layout_mediafil +'">perm_media</i><span id="sta-media-' +
|
||||||
|
key + '">On</span></a>'+lang.lang_layout_mediafil +'<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 '+type+'-timeline " tlid="' + key + '" data-type="' + type + '" data-acct="nostr"><div id="landing_'+key+'" style="text-align:center">'+lang.lang_layout_nodata +'</div></div></div>'
|
||||||
|
$('#timeline_box_' + basekey + '_parentBox').append(html);
|
||||||
|
tootsearch(key,q);
|
||||||
|
cardCheck(key);
|
||||||
|
ebtCheck(key);
|
||||||
|
mediaCheck(key);
|
||||||
|
catchCheck(key);
|
||||||
|
voiceCheck(key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
function leftFoldSet(key){
|
function leftFoldSet(key){
|
||||||
var multi = localStorage.getItem("column");
|
var multi = localStorage.getItem("column");
|
||||||
var obj = JSON.parse(multi);
|
var obj = JSON.parse(multi);
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
function menu(){
|
function menu(){
|
||||||
|
localStorage.setItem("menu-done",true);
|
||||||
|
$("#fukidashi").addClass("hide")
|
||||||
if(!$("#menu").hasClass("appear")){
|
if(!$("#menu").hasClass("appear")){
|
||||||
$("#menu").addClass("appear")
|
$("#menu").addClass("appear")
|
||||||
var left=localStorage.getItem("menu-left");
|
var left=localStorage.getItem("menu-left");
|
||||||
@@ -19,6 +21,8 @@ function menu(){
|
|||||||
$("#menu-bar").html("TheDesk "+localStorage.getItem("ver"));
|
$("#menu-bar").html("TheDesk "+localStorage.getItem("ver"));
|
||||||
$(".menu-content").addClass("hide");
|
$(".menu-content").addClass("hide");
|
||||||
$("#add-box").removeClass("hide");
|
$("#add-box").removeClass("hide");
|
||||||
|
$("#left-menu div").removeClass("active");
|
||||||
|
$("#addColumnMenu").addClass("active");
|
||||||
}else{
|
}else{
|
||||||
$('#menu').fadeOut()
|
$('#menu').fadeOut()
|
||||||
$("#menu").removeClass("appear")
|
$("#menu").removeClass("appear")
|
||||||
|
|||||||
@@ -5,6 +5,10 @@ function hide() {
|
|||||||
$('#post-box').fadeOut()
|
$('#post-box').fadeOut()
|
||||||
$("#post-box").removeClass("appear")
|
$("#post-box").removeClass("appear")
|
||||||
$("#emoji").addClass("hide")
|
$("#emoji").addClass("hide")
|
||||||
|
$("#left-side").show();
|
||||||
|
$("#default-emoji").show();
|
||||||
|
$("#unreact").show();
|
||||||
|
$("#addreact").addClass("hide");
|
||||||
}
|
}
|
||||||
//最小化
|
//最小化
|
||||||
function mini() {
|
function mini() {
|
||||||
|
|||||||
@@ -123,6 +123,10 @@ function load() {
|
|||||||
var font = "";
|
var font = "";
|
||||||
}
|
}
|
||||||
$("#font").val(font);
|
$("#font").val(font);
|
||||||
|
$("#c1-file").text(localStorage.getItem("custom1"))
|
||||||
|
$("#c2-file").text(localStorage.getItem("custom2"));
|
||||||
|
$("#c3-file").text(localStorage.getItem("custom3"));
|
||||||
|
$("#c4-file").text(localStorage.getItem("custom4"));
|
||||||
}
|
}
|
||||||
|
|
||||||
function climute(){
|
function climute(){
|
||||||
@@ -137,12 +141,13 @@ function climute(){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var templete;
|
var templete;
|
||||||
|
console.log(obj)
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function(key) {
|
||||||
var cli = obj[key];
|
var cli = obj[key];
|
||||||
var list = key * 1 + 1;
|
var list = key * 1 + 1;
|
||||||
templete = '<div class="acct" id="acct_' + key + '">' + list +
|
templete = '<div class="acct" id="acct_' + key + '">' + list +
|
||||||
'.' +
|
'.' +
|
||||||
cli + '<button class="btn waves-effect red disTar" onclick="cliMuteDel(' +
|
escapeHTML(cli) + '<button class="btn waves-effect red disTar" onclick="cliMuteDel(' +
|
||||||
key + ')">'+lang.lang_del+'</button><br></div>';
|
key + ')">'+lang.lang_del+'</button><br></div>';
|
||||||
$("#mute-cli").append(templete);
|
$("#mute-cli").append(templete);
|
||||||
});
|
});
|
||||||
@@ -154,7 +159,7 @@ function cliMuteDel(key){
|
|||||||
obj.splice(key, 1);
|
obj.splice(key, 1);
|
||||||
var json = JSON.stringify(obj);
|
var json = JSON.stringify(obj);
|
||||||
localStorage.setItem("client_mute", json);
|
localStorage.setItem("client_mute", json);
|
||||||
mute();
|
climute();
|
||||||
}
|
}
|
||||||
|
|
||||||
function wordmute(){
|
function wordmute(){
|
||||||
@@ -636,6 +641,22 @@ ipc.on('theme-json-create-complete', function (event, args) {
|
|||||||
$("#custom_import").val("");
|
$("#custom_import").val("");
|
||||||
ctLoad()
|
ctLoad()
|
||||||
});
|
});
|
||||||
|
function customSound(key){
|
||||||
|
var electron = require("electron");
|
||||||
|
var remote=electron.remote;
|
||||||
|
var dialog=remote.dialog;
|
||||||
|
dialog.showOpenDialog(null, {
|
||||||
|
title: 'Custom sound',
|
||||||
|
properties: ['openFile'],
|
||||||
|
filters: [
|
||||||
|
{name: 'Audio', extensions: ['mp3','aac','wav','flac','m4a']},
|
||||||
|
{name: 'All', extensions: ['*']},
|
||||||
|
]
|
||||||
|
}, (fileNames) => {
|
||||||
|
localStorage.setItem("custom"+key,fileNames[0]);
|
||||||
|
$("#c1-file").text(fileNames[0])
|
||||||
|
});
|
||||||
|
}
|
||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
//最初に読む
|
//最初に読む
|
||||||
load();
|
load();
|
||||||
@@ -648,3 +669,4 @@ oksload();
|
|||||||
npprovider();
|
npprovider();
|
||||||
ctLoad()
|
ctLoad()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function sortload(){
|
|||||||
var acctdata=user+"@"+domain;
|
var acctdata=user+"@"+domain;
|
||||||
}
|
}
|
||||||
|
|
||||||
var html='<li class="drag-content" data-id="'+key+'" data-flag="'+flag+'"'+insert+'><div class="sorticon"><i class="material-icons">'+icon(acct.type)+'</i></div><div class="sorttitle">'+cap(acct.type, acct.data,acct.domain)+'</div><div class="sortaction"><a onclick="goColumn(' + key +
|
var html='<li class="drag-content" data-id="'+key+'" data-flag="'+flag+'"'+insert+'><div class="sorticon"><i class="material-icons">'+icon(acct.type)+'</i></div><div class="sorttitle">'+cap(acct.type, escapeHTML(acct.data),acct.domain)+'</div><div class="sortaction"><a onclick="goColumn(' + key +
|
||||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_sort_gothis+'">forward</i></a> <a onclick="removeColumn(' + key +
|
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang.lang_sort_gothis+'">forward</i></a> <a onclick="removeColumn(' + key +
|
||||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">'+acctdata+'</div></li>';
|
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">'+acctdata+'</div></li>';
|
||||||
$("#sort").append(html);
|
$("#sort").append(html);
|
||||||
@@ -58,6 +58,8 @@ function Scap(type, data) {
|
|||||||
return "Integrated"
|
return "Integrated"
|
||||||
}else if (type == "webview") {
|
}else if (type == "webview") {
|
||||||
return "Twitter"
|
return "Twitter"
|
||||||
|
}else if (type == "tootsearch") {
|
||||||
|
return "tootsearch(" + data + ")"
|
||||||
}else{
|
}else{
|
||||||
console.log(type);
|
console.log(type);
|
||||||
}
|
}
|
||||||
@@ -101,7 +103,7 @@ function sort(){
|
|||||||
var json = JSON.stringify(newobj);
|
var json = JSON.stringify(newobj);
|
||||||
localStorage.setItem("column", json);
|
localStorage.setItem("column", json);
|
||||||
$("#sort").html("");
|
$("#sort").html("");
|
||||||
Materialize.toast("並べ替え完了。", 3000);
|
Materialize.toast("Sorted", 3000);
|
||||||
sortload();
|
sortload();
|
||||||
parseColumn();
|
parseColumn();
|
||||||
sortMenu()
|
sortMenu()
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ function spotifyFlagSave(){
|
|||||||
Materialize.toast(lang.lang_spotify_imgno, 3000);
|
Materialize.toast(lang.lang_spotify_imgno, 3000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var uploadnow=false;
|
|
||||||
function nowplaying(mode){
|
function nowplaying(mode){
|
||||||
if(mode=="spotify"){
|
if(mode=="spotify"){
|
||||||
var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh");
|
var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh");
|
||||||
@@ -124,8 +123,16 @@ function nowplaying(mode){
|
|||||||
}else if(mode=="itunes"){
|
}else if(mode=="itunes"){
|
||||||
var electron = require("electron");
|
var electron = require("electron");
|
||||||
var ipc = electron.ipcRenderer;
|
var ipc = electron.ipcRenderer;
|
||||||
|
if (ipc.listenerCount('itunes-np') > 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
ipc.send('itunes', "");
|
ipc.send('itunes', "");
|
||||||
ipc.once('itunes-np', function (event, arg) {
|
ipc.once('itunes-np', function (event, arg) {
|
||||||
|
if (arg.cmd) {
|
||||||
|
console.error(arg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
console.log(arg);
|
console.log(arg);
|
||||||
var content=localStorage.getItem("np-temp");
|
var content=localStorage.getItem("np-temp");
|
||||||
if(!content || content=="" || content=="null"){
|
if(!content || content=="" || content=="null"){
|
||||||
@@ -135,14 +142,12 @@ function nowplaying(mode){
|
|||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
var platform=remote.process.platform;
|
var platform=remote.process.platform;
|
||||||
if(platform=="win32"){
|
if(platform=="win32"){
|
||||||
if(!uploadnow && flag && arg.path){
|
if(flag && arg.path){
|
||||||
uploadnow=true;
|
|
||||||
media(arg.path,"image/png","new");
|
media(arg.path,"image/png","new");
|
||||||
}
|
}
|
||||||
}else if(platform=="darwin"){
|
}else if(platform=="darwin"){
|
||||||
if(!uploadnow && flag && arg.artworks[0]){
|
if(flag && arg.existsArtwork){
|
||||||
uploadnow=true;
|
media(arg.artworks[0].data,"image/png","new");
|
||||||
ipc.send('bmp-image', [arg.artworks[0].path,0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var regExp = new RegExp("{song}", "g");
|
var regExp = new RegExp("{song}", "g");
|
||||||
@@ -214,49 +219,3 @@ $("#npbtn").bind('contextmenu', function() {
|
|||||||
nowplaying('itunes');
|
nowplaying('itunes');
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
/*cinderella NP*/
|
|
||||||
function cgNP(q){
|
|
||||||
suggest = "https://cg.toot.app/api/v1/?song=" + q
|
|
||||||
console.log(suggest)
|
|
||||||
fetch(suggest, {
|
|
||||||
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);
|
|
||||||
var electron = require("electron");
|
|
||||||
var ipc = electron.ipcRenderer;
|
|
||||||
var flag=localStorage.getItem("artwork");
|
|
||||||
if(flag){
|
|
||||||
var img=json.album.artwork;
|
|
||||||
ipc.send('bmp-image', [img,0]);
|
|
||||||
}
|
|
||||||
var content=localStorage.getItem("np-temp");
|
|
||||||
if(!content || content==""){
|
|
||||||
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
|
|
||||||
}
|
|
||||||
var regExp = new RegExp("{song}", "g");
|
|
||||||
content = content.replace(regExp, json.name);
|
|
||||||
var regExp = new RegExp("{album}", "g");
|
|
||||||
content = content.replace(regExp, json.album.name);
|
|
||||||
var regExp = new RegExp("{artist}", "g");
|
|
||||||
content = content.replace(regExp, json.artist.text);
|
|
||||||
var regExp = new RegExp("{composer}", "g");
|
|
||||||
content = content.replace(regExp, json.composer);
|
|
||||||
var regExp = new RegExp("{lyricist}", "g");
|
|
||||||
content = content.replace(regExp, json.lyricist);
|
|
||||||
var regExp = new RegExp("{bpm}", "g");
|
|
||||||
content = content.replace(regExp, json.bpm);
|
|
||||||
var regExp = new RegExp("{genre}", "g");
|
|
||||||
content = content.replace(regExp, "");
|
|
||||||
var regExp = new RegExp("{url}", "g");
|
|
||||||
content = content.replace(regExp, "");
|
|
||||||
$("#textarea").val(content);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -57,7 +57,7 @@ function startmem(){
|
|||||||
var use=arg[0];
|
var use=arg[0];
|
||||||
var cpu=arg[1];
|
var cpu=arg[1];
|
||||||
var total=arg[2]
|
var total=arg[2]
|
||||||
$("#tips-text").html(cpu+"<br>Memory:"+Math.floor(use/1024/1024/102.4)/10+"/"+Math.floor(total/1024/1024/102.4)/10+"GB("+Math.floor(use/total*100)+"%)")
|
$("#tips-text").html(escapeHTML(cpu)+"<br>Memory:"+Math.floor(use/1024/1024/102.4)/10+"/"+Math.floor(total/1024/1024/102.4)/10+"GB("+Math.floor(use/total*100)+"%)")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//トレンドタグ
|
//トレンドタグ
|
||||||
@@ -83,7 +83,7 @@ function trendTagonTip(){
|
|||||||
var tags="";
|
var tags="";
|
||||||
json=json.score;
|
json=json.score;
|
||||||
Object.keys(json).forEach(function(tag) {
|
Object.keys(json).forEach(function(tag) {
|
||||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
|
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + escapeHTML(tag) + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
|
||||||
});
|
});
|
||||||
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags+'</div>');
|
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags+'</div>');
|
||||||
trendTagonTipInterval()
|
trendTagonTipInterval()
|
||||||
|
|||||||
@@ -438,10 +438,11 @@ function showReq(more, acct_id) {
|
|||||||
todo(error);
|
todo(error);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
|
||||||
var templete = userparse(json, 'true',acct_id);
|
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||||
|
var templete = userparse(json, true,acct_id);
|
||||||
}else{
|
}else{
|
||||||
var templete = misskeyUserparse(json, 'true',acct_id);
|
var templete = misskeyUserparse(json, true,acct_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!json[0]){
|
if(!json[0]){
|
||||||
@@ -553,6 +554,51 @@ function showFrl(more, acct_id) {
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//Keybase
|
||||||
|
function udAdd(start) {
|
||||||
|
fetch(start, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json'
|
||||||
|
},
|
||||||
|
//body: JSON.stringify({})
|
||||||
|
}).then(function(response) {
|
||||||
|
return response.json();
|
||||||
|
}).catch(function(error) {
|
||||||
|
todo(error);
|
||||||
|
console.error(error);
|
||||||
|
}).then(function(json) {
|
||||||
|
var fields=json.attachment;
|
||||||
|
for(var i=0;i<fields.length;i++){
|
||||||
|
if(fields[i].type=="IdentityProof"){
|
||||||
|
if(fields[i].signatureAlgorithm=="keybase"){
|
||||||
|
var html='<a href="https://keybase.io/'+fields[i].name+'" target="_blank" class="cbadge teal waves-effect" style="max-width:200px;" title="'+lang.lang_hisdata_key.replace("{{set}}",escapeHTML(fields[i].signatureAlgorithm))+'"><i class="fas fa-key" aria-hidden="true"></i>'+escapeHTML(fields[i].signatureAlgorithm)+':'+escapeHTML(fields[i].name)+'</a>';
|
||||||
|
}else{
|
||||||
|
var html='<span class="cbadge teal" style="max-width:200px;" title="'+lang.lang_hisdata_key.replace("{{set}}",escapeHTML(fields[i].signatureAlgorithm))+'"><i class="fas fa-key" aria-hidden="true"></i>'+escapeHTML(fields[i].signatureAlgorithm)+':'+escapeHTML(fields[i].name)+'</span>';
|
||||||
|
}
|
||||||
|
$("#his-proof-prof").append(html)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
fetch("https://notestock.osa-p.net/api/v1/isstock.json?id="+start.replace("@","users/"), {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json'
|
||||||
|
},
|
||||||
|
}).then(function(response) {
|
||||||
|
return response.json();
|
||||||
|
}).catch(function(error) {
|
||||||
|
todo(error);
|
||||||
|
console.error(error);
|
||||||
|
}).then(function(json) {
|
||||||
|
if(json.user.public_view){
|
||||||
|
var html='<a href="'+json.user.url+'" target="_blank" class="cbadge purple waves-effect" style="max-width:200px;" title="Notestock">Notestock</a>';
|
||||||
|
$("#his-proof-prof").append(html)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//ユーザーマッチングリスト
|
//ユーザーマッチングリスト
|
||||||
function showMat() {
|
function showMat() {
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ function udg(user, acct_id) {
|
|||||||
fer(json.id, '', acct_id);
|
fer(json.id, '', acct_id);
|
||||||
var dis_name=escapeHTML(json.display_name);
|
var dis_name=escapeHTML(json.display_name);
|
||||||
dis_name=twemoji.parse(dis_name);
|
dis_name=twemoji.parse(dis_name);
|
||||||
|
|
||||||
var note=json.note;
|
var note=json.note;
|
||||||
if(json.emojis){
|
if(json.emojis){
|
||||||
var actemojick = json.emojis[0];
|
var actemojick = json.emojis[0];
|
||||||
@@ -117,12 +118,18 @@ function udg(user, acct_id) {
|
|||||||
var emoji = json.emojis[key5];
|
var emoji = json.emojis[key5];
|
||||||
var shortcode = emoji.shortcode;
|
var shortcode = emoji.shortcode;
|
||||||
var emoji_url = '<img src="' + emoji.url +
|
var emoji_url = '<img src="' + emoji.url +
|
||||||
'" class="emoji-img" data-emoji="'+shortcode+'">';
|
'" class="emoji-img" data-emoji="'+shortcode+'" draggable="false">';
|
||||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||||
dis_name = dis_name.replace(regExp, emoji_url);
|
dis_name = dis_name.replace(regExp, emoji_url);
|
||||||
note = note.replace(regExp, emoji_url);
|
note = note.replace(regExp, emoji_url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
//noteの解析
|
||||||
|
//var tags = '<a onclick="tl(\'tag\',\'$1\',' + acct_id +',\'add\')" class="pointer parsed">#$1</a>';
|
||||||
|
//var mens = '<a onclick="udgEx(\'$1\',' + acct_id +')" class="pointer parsed">@$1</a>';
|
||||||
|
//note=note.replace(/#(\S+)/gi, tags)
|
||||||
|
console.log(note)
|
||||||
|
//note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens)
|
||||||
$("#his-name").html(dis_name);
|
$("#his-name").html(dis_name);
|
||||||
$("#his-acct").text(json.acct);
|
$("#his-acct").text(json.acct);
|
||||||
$("#his-acct").attr("fullname",fullname);
|
$("#his-acct").attr("fullname",fullname);
|
||||||
@@ -143,8 +150,14 @@ function udg(user, acct_id) {
|
|||||||
for(var i=0;i<json.fields.length;i++){
|
for(var i=0;i<json.fields.length;i++){
|
||||||
var fname=json.fields[i].name;
|
var fname=json.fields[i].name;
|
||||||
var fval=json.fields[i].value;
|
var fval=json.fields[i].value;
|
||||||
fval=twemoji.parse(fval);
|
if(json.fields[i].verified_at){
|
||||||
note=note+'<tr><td class="his-field-title">'+fname+'</td><td class="his-field-content">'+fval+'</td></tr>';
|
var when=lang.lang_showontl_verified+":"+crat(json.fields[i].verified_at);
|
||||||
|
var color="rgba(121,189,154,.25);"
|
||||||
|
}else{
|
||||||
|
var when="";
|
||||||
|
var color="inherit"
|
||||||
|
}
|
||||||
|
note=note+'<tr><td class="his-field-title">'+twemoji.parse(escapeHTML(fname))+'</td><td class="his-field-content" title="'+when+'" style="background-color:'+color+'">'+twemoji.parse(fval)+'</td></tr>';
|
||||||
}
|
}
|
||||||
note=note+'</table>'
|
note=note+'</table>'
|
||||||
$("#his-des").html(twemoji.parse(note));
|
$("#his-des").html(twemoji.parse(note));
|
||||||
@@ -157,6 +170,7 @@ function udg(user, acct_id) {
|
|||||||
if(json.bot){
|
if(json.bot){
|
||||||
$("#his-bot").html(lang.lang_showontl_botacct);
|
$("#his-bot").html(lang.lang_showontl_botacct);
|
||||||
}
|
}
|
||||||
|
$("#his-des").attr("data-acct",acct_id);
|
||||||
$('#his-data').css('background-size', 'cover');
|
$('#his-data').css('background-size', 'cover');
|
||||||
$("#his-data .tab-content").css("height",$("#his-float-timeline").height()-70+"px")
|
$("#his-data .tab-content").css("height",$("#his-float-timeline").height()-70+"px")
|
||||||
localStorage.setItem("history" , user);
|
localStorage.setItem("history" , user);
|
||||||
@@ -170,10 +184,10 @@ function udg(user, acct_id) {
|
|||||||
showFrl('', acct_id);
|
showFrl('', acct_id);
|
||||||
$("#his-name-val").val(json.display_name);
|
$("#his-name-val").val(json.display_name);
|
||||||
if(json.fields.length>0){
|
if(json.fields.length>0){
|
||||||
$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));
|
if(json.fields[0]){$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));}
|
||||||
$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));
|
if(json.fields[1]){$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));}
|
||||||
$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));
|
if(json.fields[2]){$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));}
|
||||||
$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));
|
if(json.fields[3]){$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));}
|
||||||
}
|
}
|
||||||
var des = json.note;
|
var des = json.note;
|
||||||
des = des.replace(/<br \/>/g, "\n")
|
des = des.replace(/<br \/>/g, "\n")
|
||||||
@@ -193,6 +207,8 @@ function udg(user, acct_id) {
|
|||||||
$(".only-his-data").show();
|
$(".only-his-data").show();
|
||||||
}
|
}
|
||||||
todc();
|
todc();
|
||||||
|
//外部データ取得(死かもしれないので)
|
||||||
|
udAdd(json.url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function misskeyUdg(user, acct_id) {
|
function misskeyUdg(user, acct_id) {
|
||||||
@@ -262,7 +278,7 @@ function misskeyUdg(user, acct_id) {
|
|||||||
$("#his-follow").text(json.followingCount);
|
$("#his-follow").text(json.followingCount);
|
||||||
$("#his-follower").text(json.followersCount);
|
$("#his-follower").text(json.followersCount);
|
||||||
$("#his-since").text(crat(json.createdAt));
|
$("#his-since").text(crat(json.createdAt));
|
||||||
var note=json.description;
|
var note=escapeHTML(json.description);
|
||||||
$("#his-des").html(twemoji.parse(note));
|
$("#his-des").html(twemoji.parse(note));
|
||||||
if(json.isCat){
|
if(json.isCat){
|
||||||
$("#his-bot").html("Cat"+twemoji.parse("😺"));
|
$("#his-bot").html("Cat"+twemoji.parse("😺"));
|
||||||
@@ -392,6 +408,12 @@ function relations(user, acct_id) {
|
|||||||
$("#his-end-btn").removeClass("endorsed");
|
$("#his-end-btn").removeClass("endorsed");
|
||||||
$("#his-end-btn").text(lang.lang_status_endorse)
|
$("#his-end-btn").text(lang.lang_status_endorse)
|
||||||
}
|
}
|
||||||
|
//Blocked
|
||||||
|
if(json.blocked_by){
|
||||||
|
$("#his-float-timeline").hide();
|
||||||
|
$("#his-float-blocked").show();
|
||||||
|
$("#his-follow-btn").hide()
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -453,6 +475,9 @@ function reset(){
|
|||||||
$("#his-f4-name").val(""); $("#his-f4-val").val("");
|
$("#his-f4-name").val(""); $("#his-f4-val").val("");
|
||||||
$("#his-endorse").html("");
|
$("#his-endorse").html("");
|
||||||
$("#his-openin").attr("data-href", "");
|
$("#his-openin").attr("data-href", "");
|
||||||
|
$("#his-float-timeline").show();
|
||||||
|
$("#his-float-blocked").hide();
|
||||||
|
$("#his-proof-prof").html("")
|
||||||
}
|
}
|
||||||
$('#my-data-nav .custom-tab').on('click',function(){
|
$('#my-data-nav .custom-tab').on('click',function(){
|
||||||
var target=$(this).find("a").attr("go");
|
var target=$(this).find("a").attr("go");
|
||||||
|
|||||||
@@ -1,75 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="ja">
|
|
||||||
<head>
|
|
||||||
<title>Languages - 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="./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="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans" rel="stylesheet">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
</head>
|
|
||||||
<body style="max-width:100vw; width:500px; padding:10px;">
|
|
||||||
<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.js"></script>
|
|
||||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
|
||||||
<h3 id="language"></h3>
|
|
||||||
<select id="language-sel" style="color:black" onchange="btn();"></select>
|
|
||||||
<button class="btn waves-effect indigo nex" style="width:100%; max-width:200px;" onclick="sel()" id="sel"></button>
|
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;" id="back"></a><br>
|
|
||||||
<br>
|
|
||||||
<span id="notice"></span>
|
|
||||||
<script>
|
|
||||||
//コード受信
|
|
||||||
if(location.search){
|
|
||||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)/);
|
|
||||||
var mode=m[1];
|
|
||||||
if(mode=="redirect"){
|
|
||||||
if(localStorage.getItem("lang")){
|
|
||||||
changelang(localStorage.getItem("lang"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var fstlang="";
|
|
||||||
var langtxt="";
|
|
||||||
var addit="";
|
|
||||||
Object.keys(lang_lang).forEach(function(i) {
|
|
||||||
if(langtxt==""){
|
|
||||||
langtxt=lang_lang[i];
|
|
||||||
$("#sel").text(lang_set[i]);
|
|
||||||
$("#back").text(lang_back[i]);
|
|
||||||
}else{
|
|
||||||
langtxt=langtxt+"/"+lang_lang[i];
|
|
||||||
}
|
|
||||||
addit=addit+"<br>"+lang_langadd[i];
|
|
||||||
var loc=lang_langlocale[i];
|
|
||||||
$("#language-sel").append('<option value="'+i+'">'+loc+'</option>');
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#language").text(langtxt)
|
|
||||||
$("#notice").html(addit)
|
|
||||||
$('select').material_select('update');
|
|
||||||
function sel(){
|
|
||||||
var val=$("#language-sel").val();
|
|
||||||
changelang(val);
|
|
||||||
}
|
|
||||||
function changelang(val){
|
|
||||||
var electron = require("electron");
|
|
||||||
var ipc = electron.ipcRenderer;
|
|
||||||
localStorage.setItem("lang",val);
|
|
||||||
ipc.send('lang', val);
|
|
||||||
ipc.on('langres', function (event, arg) {
|
|
||||||
location.href="index.html";
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
function btn(){
|
|
||||||
var val=$("#language-sel").val();
|
|
||||||
$("#sel").text(lang_set[val]);
|
|
||||||
$("#back").text(lang_back[val]);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
|
||||||
594
app/main.js
594
app/main.js
@@ -1,33 +1,26 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
|
var dir='file://' + __dirname;
|
||||||
|
var base=dir + '/view/';
|
||||||
// Electronのモジュール
|
// Electronのモジュール
|
||||||
const electron = require("electron");
|
const electron = require("electron");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const dialog = require('electron').dialog;
|
const language = require('./main/language.js');
|
||||||
var Jimp = require("jimp");
|
const css = require('./main/css.js');
|
||||||
const shell = electron.shell;
|
const dl = require('./main/dl.js');
|
||||||
const os = require('os')
|
const img = require('./main/img.js');
|
||||||
const path = require('path')
|
const np = require('./main/np.js');
|
||||||
const fm = require('font-manager');
|
const systemFunc = require('./main/system.js');
|
||||||
const language = require('./language.js');
|
|
||||||
const Menu=electron.Menu
|
const Menu=electron.Menu
|
||||||
var updatewin=null;
|
|
||||||
const join = require('path').join;
|
const join = require('path').join;
|
||||||
var JSON5 = require('json5');
|
|
||||||
// アプリケーションをコントロールするモジュール
|
// アプリケーションをコントロールするモジュール
|
||||||
const app = electron.app;
|
const app = electron.app;
|
||||||
// ウィンドウを作成するモジュール
|
// ウィンドウを作成するモジュール
|
||||||
const BrowserWindow = electron.BrowserWindow;
|
const BrowserWindow = electron.BrowserWindow;
|
||||||
const {
|
|
||||||
download
|
|
||||||
} = require('electron-dl');
|
|
||||||
// メインウィンドウはGCされないようにグローバル宣言
|
// メインウィンドウはGCされないようにグローバル宣言
|
||||||
let mainWindow;
|
let mainWindow;
|
||||||
var info_path = join(app.getPath("userData"), "window-size.json");
|
var info_path = join(app.getPath("userData"), "window-size.json");
|
||||||
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
|
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
|
||||||
var lang_path=join(app.getPath("userData"), "language");
|
var lang_path=join(app.getPath("userData"), "language");
|
||||||
var customcss=join(app.getPath("userData"), "custom.css");
|
|
||||||
var tmp_img = join(app.getPath("userData"), "tmp.png");
|
|
||||||
var ha_path=join(app.getPath("userData"), "hardwareAcceleration");
|
var ha_path=join(app.getPath("userData"), "hardwareAcceleration");
|
||||||
try{
|
try{
|
||||||
fs.readFileSync(ha_path, 'utf8');
|
fs.readFileSync(ha_path, 'utf8');
|
||||||
@@ -57,19 +50,14 @@ try {
|
|||||||
|
|
||||||
}; // デフォルトバリュー
|
}; // デフォルトバリュー
|
||||||
}
|
}
|
||||||
try {
|
function isFile(file){
|
||||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
try {
|
||||||
} catch (e) {
|
fs.statSync(file);
|
||||||
var langs=app.getLocale();
|
return true
|
||||||
if(~langs.indexOf("ja")){
|
} catch (err) {
|
||||||
lang="ja";
|
if (err.code === 'ENOENT') return false
|
||||||
}else{
|
|
||||||
lang="en";
|
|
||||||
}
|
}
|
||||||
fs.writeFileSync(lang_path,lang);
|
|
||||||
}
|
}
|
||||||
console.log(app.getLocale());
|
|
||||||
console.log("launch:"+lang);
|
|
||||||
// 全てのウィンドウが閉じたら終了
|
// 全てのウィンドウが閉じたら終了
|
||||||
app.on('window-all-closed', function() {
|
app.on('window-all-closed', function() {
|
||||||
if (process.platform != 'darwin') {
|
if (process.platform != 'darwin') {
|
||||||
@@ -77,8 +65,31 @@ app.on('window-all-closed', function() {
|
|||||||
app.quit();
|
app.quit();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// macOSでウィンドウを閉じた後に再度開けるようにする
|
||||||
|
app.on('activate', function() {
|
||||||
|
if (mainWindow == null) {
|
||||||
|
createWindow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function createWindow() {
|
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{
|
||||||
|
lang="en";
|
||||||
|
}
|
||||||
|
fs.mkdir(app.getPath("userData"), function (err) {
|
||||||
|
fs.writeFileSync(lang_path,lang);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
console.log(app.getLocale());
|
||||||
|
console.log("launch:"+lang);
|
||||||
// メイン画面の表示。ウィンドウの幅、高さを指定できる
|
// メイン画面の表示。ウィンドウの幅、高さを指定できる
|
||||||
var platform=process.platform;
|
var platform=process.platform;
|
||||||
var bit=process.arch;
|
var bit=process.arch;
|
||||||
@@ -107,7 +118,7 @@ function createWindow() {
|
|||||||
}else{
|
}else{
|
||||||
var plus="";
|
var plus="";
|
||||||
}
|
}
|
||||||
mainWindow.loadURL('file://' + __dirname + '/view/'+lang+'/index.html'+plus);
|
mainWindow.loadURL(base+lang+'/index.html'+plus);
|
||||||
if(!window_size.x && !window_size.y){
|
if(!window_size.x && !window_size.y){
|
||||||
mainWindow.center();
|
mainWindow.center();
|
||||||
}
|
}
|
||||||
@@ -116,6 +127,7 @@ function createWindow() {
|
|||||||
}
|
}
|
||||||
// ウィンドウが閉じられたらアプリも終了
|
// ウィンドウが閉じられたらアプリも終了
|
||||||
mainWindow.on('closed', function() {
|
mainWindow.on('closed', function() {
|
||||||
|
electron.ipcMain.removeAllListeners();
|
||||||
mainWindow = null;
|
mainWindow = null;
|
||||||
});
|
});
|
||||||
mainWindow.on('close', function() {
|
mainWindow.on('close', function() {
|
||||||
@@ -138,529 +150,23 @@ function createWindow() {
|
|||||||
var platform=process.platform;
|
var platform=process.platform;
|
||||||
var bit=process.arch;
|
var bit=process.arch;
|
||||||
if(platform=="darwin"){
|
if(platform=="darwin"){
|
||||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow)));
|
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false,dir)));
|
||||||
}
|
}
|
||||||
|
//CSS
|
||||||
|
css.css(mainWindow);
|
||||||
|
//アップデータとダウンロード
|
||||||
|
dl.dl(mainWindow,lang_path,base);
|
||||||
|
//画像選択と画像処理
|
||||||
|
img.img(mainWindow,dir);
|
||||||
|
//NowPlaying
|
||||||
|
np.TheDeskNowPlaying(mainWindow);
|
||||||
|
//その他system
|
||||||
|
systemFunc.system(mainWindow,dir,lang);
|
||||||
}
|
}
|
||||||
// Electronの初期化完了後に実行
|
// Electronの初期化完了後に実行
|
||||||
app.on('ready', createWindow);
|
app.on('ready', createWindow);
|
||||||
var onError = function(err,response){
|
var onError = function(err,response){
|
||||||
console.error(err,response);
|
console.error(err,response);
|
||||||
};
|
};
|
||||||
var ipc = electron.ipcMain;
|
|
||||||
ipc.on('minimize', function(e, args) {
|
|
||||||
mainWindow.minimize();
|
|
||||||
});
|
|
||||||
ipc.on('maximize', function(e, args) {
|
|
||||||
mainWindow.isMaximized() ? mainWindow.unmaximize() : mainWindow.maximize();
|
|
||||||
});
|
|
||||||
ipc.on('native-notf', function(e, args) {
|
|
||||||
var platform=process.platform;
|
|
||||||
var bit=process.arch;
|
|
||||||
if(platform=="win32"){
|
|
||||||
const notifier = require('node-notifier')
|
|
||||||
var tmp_imge=tmp_img;
|
|
||||||
Jimp.read(args[2], function (err, lenna) {
|
|
||||||
if(!err && lenna){
|
|
||||||
lenna.write(tmp_img);
|
|
||||||
var tmp_imge=tmp_img;
|
|
||||||
}else{
|
|
||||||
var tmp_imge="";
|
|
||||||
}
|
|
||||||
notifier.notify({
|
|
||||||
appID: "top.thedesk",
|
|
||||||
message: args[1],
|
|
||||||
title: args[0],
|
|
||||||
icon : tmp_imge,
|
|
||||||
sound: false,
|
|
||||||
wait: true,
|
|
||||||
},
|
|
||||||
function(err, response) {
|
|
||||||
console.log(err, response)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//言語
|
|
||||||
ipc.on('lang', function(e, arg) {
|
|
||||||
console.log("set:"+arg);
|
|
||||||
fs.writeFileSync(lang_path,arg);
|
|
||||||
mainWindow.webContents.send('langres', "");
|
|
||||||
})
|
|
||||||
//CSS
|
|
||||||
ipc.on('custom-css-create', function(e, arg) {
|
|
||||||
fs.writeFileSync(customcss,arg);
|
|
||||||
mainWindow.webContents.send('custom-css-create-complete', "");
|
|
||||||
})
|
|
||||||
ipc.on('custom-css-request', function(e, arg) {
|
|
||||||
try {
|
|
||||||
var css = fs.readFileSync(customcss, 'utf8');
|
|
||||||
} catch (e) {
|
|
||||||
var css="";
|
|
||||||
}
|
|
||||||
mainWindow.webContents.send('custom-css-response', css);
|
|
||||||
})
|
|
||||||
ipc.on('theme-json-create', function(e, arg) {
|
|
||||||
var themecss=join(app.getPath("userData"), JSON5.parse(arg)["id"]+".thedesktheme");
|
|
||||||
fs.writeFileSync(themecss,JSON.stringify(JSON5.parse(arg)));
|
|
||||||
if(JSON5.parse(arg)["id"]){
|
|
||||||
mainWindow.webContents.send('theme-json-create-complete', "");
|
|
||||||
}else{
|
|
||||||
mainWindow.webContents.send('theme-json-create-complete', "error");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
ipc.on('theme-json-delete', function(e, arg) {
|
|
||||||
var themecss=join(app.getPath("userData"), arg+".thedesktheme");
|
|
||||||
console.log(themecss);
|
|
||||||
fs.unlink(themecss, function (err) {
|
|
||||||
mainWindow.webContents.send('theme-json-delete-complete', "");
|
|
||||||
});
|
|
||||||
})
|
|
||||||
ipc.on('theme-json-request', function(e, arg) {
|
|
||||||
var themecss=join(app.getPath("userData"), arg+".thedesktheme");
|
|
||||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
|
||||||
mainWindow.webContents.send('theme-json-response', json);
|
|
||||||
})
|
|
||||||
ipc.on('theme-css-request', function(e, arg) {
|
|
||||||
var themecss=join(app.getPath("userData"), arg+".thedesktheme");
|
|
||||||
try {
|
|
||||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
|
||||||
|
|
||||||
var primary=json.vars.primary;
|
|
||||||
var secondary=json.vars.secondary;
|
|
||||||
var text=json.vars.text;
|
|
||||||
if(json.base=="light"){
|
|
||||||
var drag="rgba(255, 255, 255, 0.8)";
|
|
||||||
var beforehover="#757575";
|
|
||||||
}else{
|
|
||||||
var drag="rgba(0, 0, 0, 0.8)";
|
|
||||||
var beforehover="#9e9e9e";
|
|
||||||
}
|
|
||||||
if(json.props){
|
|
||||||
if(json.props.TheDeskAccent){
|
|
||||||
var emphasized=json.props.TheDeskAccent
|
|
||||||
}else{
|
|
||||||
var emphasized=secondary;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
var emphasized=primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
var css=".customtheme {--bg:"+secondary+";--drag:"+drag+";"+
|
|
||||||
"--color:"+text+";--beforehover:"+beforehover+";--modal:"+secondary+";--subcolor:"+primary+";--box:"+primary+";--sidebar:"+primary+";--shared:"+emphasized+";"+
|
|
||||||
"--notfbox:"+secondary+";--emphasized:"+primary+";--his-data:"+secondary+
|
|
||||||
"--active:"+primary+";--postbox:"+primary+";--modalfooter:"+primary+";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
|
||||||
mainWindow.webContents.send('theme-css-response', css);
|
|
||||||
} catch (e) {
|
|
||||||
var css="";
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
ipc.on('theme-json-list', function(e, arg) {
|
|
||||||
fs.readdir(app.getPath("userData"), function(err, files){
|
|
||||||
if (err) throw err;
|
|
||||||
var fileList = files.filter(function(file){
|
|
||||||
var tfile=join(app.getPath("userData"), file);
|
|
||||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み
|
|
||||||
})
|
|
||||||
var themes=[];
|
|
||||||
for(var i=0;i<fileList.length;i++){
|
|
||||||
var themecss=join(app.getPath("userData"), fileList[i]);
|
|
||||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
|
||||||
themes.push({
|
|
||||||
name:json.name,
|
|
||||||
id:json.id
|
|
||||||
})
|
|
||||||
}
|
|
||||||
mainWindow.webContents.send('theme-json-list-response', themes);
|
|
||||||
});
|
|
||||||
})
|
|
||||||
//ハードウェアアクセラレーションの無効化
|
|
||||||
ipc.on('ha', function(e, arg) {
|
|
||||||
if(arg=="true"){
|
|
||||||
fs.writeFileSync(ha_path,arg);
|
|
||||||
}else{
|
|
||||||
fs.unlink(ha_path, function (err) {});
|
|
||||||
}
|
|
||||||
app.relaunch()
|
|
||||||
app.exit()
|
|
||||||
})
|
|
||||||
|
|
||||||
ipc.on('update', function(e, x, y) {
|
|
||||||
var platform=process.platform;
|
|
||||||
var bit=process.arch;
|
|
||||||
if(platform!="others"){
|
|
||||||
updatewin = new BrowserWindow({
|
|
||||||
width: 600,
|
|
||||||
height: 400,
|
|
||||||
"transparent": false, // ウィンドウの背景を透過
|
|
||||||
"frame": false, // 枠の無いウィンドウ
|
|
||||||
"resizable": false,
|
|
||||||
"modal":true
|
|
||||||
});
|
|
||||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
|
||||||
updatewin.loadURL('file://' + __dirname + '/view/'+lang+'/update.html');
|
|
||||||
|
|
||||||
return "true"
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
//Web魚拓
|
|
||||||
ipc.on('shot', function(e, args) {
|
|
||||||
console.log("link:"+args[0]+" width:"+args[1]+" height:"+args[2]+" title:"+args[4]+" top:"+args[5]+" left:"+args[6]);
|
|
||||||
var platform=process.platform;
|
|
||||||
var bit=process.arch;
|
|
||||||
if(args[7]==""){
|
|
||||||
if(platform=="win32"){
|
|
||||||
var dir=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\"+args[4]+"-toot.png";
|
|
||||||
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
|
|
||||||
}else if(platform=="linux" || platform=="darwin" ){
|
|
||||||
var dir=app.getPath('home')+"/Pictures/TheDesk/Screenshots/"+args[4]+"-toot.png";
|
|
||||||
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
var folder=args[7];
|
|
||||||
var dir=folder+args[4]+"-toot.png";
|
|
||||||
}
|
|
||||||
|
|
||||||
Jimp.read(Buffer.from( args[3],'base64'), function (err, lenna) {
|
|
||||||
if (err) throw err;
|
|
||||||
lenna.crop( args[6], args[5], args[1], args[2] ).write(dir);
|
|
||||||
});
|
|
||||||
shell.showItemInFolder(folder);
|
|
||||||
})
|
|
||||||
ipc.on('shot-img-dl', (e, args) => {
|
|
||||||
Jimp.read(args[0], function (err, lenna) {
|
|
||||||
if (err) throw err;
|
|
||||||
if(args[1]==""){
|
|
||||||
if(process.platform=="win32"){
|
|
||||||
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
|
|
||||||
}else if(process.platform=="linux" || process.platform=="darwin" ){
|
|
||||||
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
var folder=args[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
lenna.write(folder+args[1]);
|
|
||||||
});
|
|
||||||
})
|
|
||||||
//アプデDL
|
|
||||||
ipc.on('download-btn', (e, args) => {
|
|
||||||
//console.log(args[1]);
|
|
||||||
var platform=process.platform;
|
|
||||||
var bit=process.arch;
|
|
||||||
dialog.showSaveDialog(null, {
|
|
||||||
title: 'Save',
|
|
||||||
defaultPath: app.getPath('home')+"/"+args[1]
|
|
||||||
}, (savedFiles) => {
|
|
||||||
console.log(savedFiles);
|
|
||||||
if(!savedFiles){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(platform=="win32"){
|
|
||||||
var m = savedFiles.match(/(.+)\\(.+)$/);
|
|
||||||
}else{
|
|
||||||
var m = savedFiles.match(/(.+)\/(.+)$/);
|
|
||||||
}
|
|
||||||
//console.log(m);
|
|
||||||
if(isExistFile(savedFiles)){
|
|
||||||
fs.unlinkSync(savedFiles);
|
|
||||||
}
|
|
||||||
dl(args[0],args[1],m[1]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
function isExistFile(file) {
|
|
||||||
try {
|
|
||||||
fs.statSync(file);
|
|
||||||
return true
|
|
||||||
} catch(err) {
|
|
||||||
if(err.code === 'ENOENT') return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function dl(url,file,dir){
|
|
||||||
updatewin.webContents.send('mess', "ダウンロードを開始します。");
|
|
||||||
const opts = {
|
|
||||||
directory:dir,
|
|
||||||
openFolderWhenDone: true,
|
|
||||||
onProgress: function(e) {
|
|
||||||
updatewin.webContents.send('prog', e);
|
|
||||||
},
|
|
||||||
saveAs: false
|
|
||||||
};
|
|
||||||
download(BrowserWindow.getFocusedWindow(),
|
|
||||||
url, opts)
|
|
||||||
.then(dl => {
|
|
||||||
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
|
|
||||||
app.quit();
|
|
||||||
|
|
||||||
})
|
|
||||||
.catch(console.error);
|
|
||||||
}
|
|
||||||
ipc.on('general-dl', (e, args) => {
|
|
||||||
var name="";
|
|
||||||
var platform=process.platform;
|
|
||||||
var bit=process.arch;
|
|
||||||
if(args[1]==""){
|
|
||||||
if(platform=="win32"){
|
|
||||||
var dir=app.getPath('home')+"\\Pictures\\TheDesk";
|
|
||||||
}else if(platform=="linux" || platform=="darwin" ){
|
|
||||||
var dir=app.getPath('home')+"/Pictures/TheDesk";
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
var dir=args[1];
|
|
||||||
}
|
|
||||||
mainWindow.webContents.send('general-dl-message', "ダウンロードを開始します。");
|
|
||||||
const opts = {
|
|
||||||
directory: dir,
|
|
||||||
filename:name,
|
|
||||||
openFolderWhenDone: true,
|
|
||||||
onProgress: function(e) {
|
|
||||||
mainWindow.webContents.send('general-dl-prog', e);
|
|
||||||
},
|
|
||||||
saveAs: false
|
|
||||||
};
|
|
||||||
download(BrowserWindow.getFocusedWindow(),
|
|
||||||
args[0], opts)
|
|
||||||
.then(dl => {
|
|
||||||
mainWindow.webContents.send('general-dl-message', "ダウンロードが完了しました。");
|
|
||||||
})
|
|
||||||
.catch(console.error);
|
|
||||||
});
|
|
||||||
ipc.on('quit', (e, args) => {
|
|
||||||
app.quit();
|
|
||||||
});
|
|
||||||
ipc.on('about', (e, args) => {
|
|
||||||
about();
|
|
||||||
});
|
|
||||||
function about(){
|
|
||||||
var ver=app.getVersion()
|
|
||||||
var window = new BrowserWindow({width: 300, height: 460,
|
|
||||||
"transparent": false, // ウィンドウの背景を透過
|
|
||||||
"frame": false, // 枠の無いウィンドウ
|
|
||||||
"resizable": false });
|
|
||||||
window.loadURL('file://' + __dirname + '/about.html?ver='+ver);
|
|
||||||
return "true"
|
|
||||||
}
|
|
||||||
|
|
||||||
ipc.on('itunes', (e, args) => {
|
|
||||||
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;
|
|
||||||
if(platform=="darwin"){
|
|
||||||
const nowplaying = require("itunes-nowplaying-mac")
|
|
||||||
nowplaying.getRawData().then(function (value) {
|
|
||||||
mainWindow.webContents.send('itunes-np', value);
|
|
||||||
}).catch(function (error) {
|
|
||||||
// 非同期処理失敗。呼ばれない
|
|
||||||
console.log(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
|
|
||||||
}
|
|
||||||
mainWindow.webContents.send('itunes-np', value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
ipc.on('file-select', (e, args) => {
|
|
||||||
dialog.showOpenDialog(null, {
|
|
||||||
properties: ['openFile', 'multiSelections'],
|
|
||||||
title: '添付ファイルを選択',
|
|
||||||
defaultPath: '.',
|
|
||||||
filters: [
|
|
||||||
{name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']},
|
|
||||||
{name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']},
|
|
||||||
{name: '動画', extensions: ['mp4','webm']},
|
|
||||||
{name: '全てのファイル', extensions: ['*']}
|
|
||||||
]
|
|
||||||
}, (fileNames) => {
|
|
||||||
if(!fileNames){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
for(var i=0;i<fileNames.length;i++){
|
|
||||||
var path=fileNames[i];
|
|
||||||
var bin = fs.readFileSync(path, 'base64');
|
|
||||||
mainWindow.webContents.send('bmp-img-comp', [bin,'new']);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
ipc.on('column-del', (e, args) => {
|
|
||||||
console.log(lang);
|
|
||||||
var options=language.delsel(lang)
|
|
||||||
dialog.showMessageBox(options, function(index) {
|
|
||||||
mainWindow.webContents.send('column-del-reply', index);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
ipc.on('bmp-image', (e, args) => {
|
|
||||||
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
|
|
||||||
Jimp.read(args[0], function (err, lenna) {
|
|
||||||
if (err) throw err;
|
|
||||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
|
||||||
mainWindow.webContents.send('bmp-img-comp', [src,args[1]]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
ipc.on('nano', function (e, x, y) {
|
|
||||||
var nano_info_path = join(app.getPath("userData"), "nano-window-position.json");
|
|
||||||
var window_pos;
|
|
||||||
try {
|
|
||||||
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'));
|
|
||||||
} catch (e) {
|
|
||||||
window_pos = [0,0]; // デフォルトバリュー
|
|
||||||
}
|
|
||||||
var nanowindow = new BrowserWindow({width: 350, height: 200,
|
|
||||||
"transparent": false, // ウィンドウの背景を透過
|
|
||||||
"frame": false, // 枠の無いウィンドウ
|
|
||||||
"resizable": false });
|
|
||||||
nanowindow.loadURL('file://' + __dirname + '/nano.html');
|
|
||||||
nanowindow.setAlwaysOnTop(true);
|
|
||||||
|
|
||||||
nanowindow.setPosition(window_pos[0], window_pos[1]);
|
|
||||||
nanowindow.on('close', function() {
|
|
||||||
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
})
|
|
||||||
ipc.on('adobe', (e, arg) => {
|
|
||||||
if(!arg){
|
|
||||||
const options = {
|
|
||||||
type: 'info',
|
|
||||||
title: 'Adobeフォトエディタ',
|
|
||||||
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
|
|
||||||
buttons: ['拒否', '許可','永続的に許可']
|
|
||||||
}
|
|
||||||
dialog.showMessageBox(options, function(index) {
|
|
||||||
if(index===2){
|
|
||||||
mainWindow.webContents.send('adobeagree', "true");
|
|
||||||
}
|
|
||||||
if(index>0){
|
|
||||||
adobeWindow();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}else{
|
|
||||||
adobeWindow();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
function adobeWindow(){
|
|
||||||
var window = new BrowserWindow({
|
|
||||||
width: 1000,
|
|
||||||
height: 750
|
|
||||||
});
|
|
||||||
window.loadURL('file://' + __dirname + '/adobe.html');
|
|
||||||
}
|
|
||||||
var cbTimer1;
|
|
||||||
ipc.on('startmem', (e, arg) => {
|
|
||||||
cbTimer1 = setInterval(mems, 1000);
|
|
||||||
});
|
|
||||||
ipc.on('endmem', (e, arg) => {
|
|
||||||
if(cbTimer1){
|
|
||||||
clearInterval(cbTimer1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
function mems(){
|
|
||||||
var mem=os.totalmem()-os.freemem();
|
|
||||||
if(mainWindow){
|
|
||||||
mainWindow.webContents.send('memory', [mem,os.cpus()[0].model,os.totalmem()]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ipc.on('mkc', (e, arg) => {
|
|
||||||
var platform=process.platform;
|
|
||||||
if(platform=="linux" || platform=="win32" ){
|
|
||||||
var mkc = fs.readFileSync(__dirname + '/.tkn', 'utf8');
|
|
||||||
|
|
||||||
}else{
|
|
||||||
var mkc = "";
|
|
||||||
}
|
|
||||||
mainWindow.webContents.send('mkcr', mkc);
|
|
||||||
});
|
|
||||||
ipc.on('export', (e, args) => {
|
|
||||||
fs.writeFileSync(args[0], args[1]);
|
|
||||||
});
|
|
||||||
ipc.on('import', (e, arg) => {
|
|
||||||
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
|
|
||||||
});
|
|
||||||
//フォント
|
|
||||||
function object_array_sort(data,key,order,fn){
|
|
||||||
//デフォは降順(DESC)
|
|
||||||
var num_a = -1;
|
|
||||||
var num_b = 1;
|
|
||||||
|
|
||||||
if(order === 'asc'){//指定があれば昇順(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); // ソート後の配列を返す
|
|
||||||
}
|
|
||||||
ipc.on('fonts', (e, arg) => {
|
|
||||||
var fonts = fm.getAvailableFontsSync();
|
|
||||||
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted){
|
|
||||||
mainWindow.webContents.send('font-list', fonts_sorted);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.setAsDefaultProtocolClient('thedesk')
|
app.setAsDefaultProtocolClient('thedesk')
|
||||||
|
|||||||
105
app/main/css.js
Normal file
105
app/main/css.js
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
function css(mainWindow) {
|
||||||
|
const electron = require("electron");
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require('path')
|
||||||
|
var ipc = electron.ipcMain;
|
||||||
|
var JSON5 = require('json5');
|
||||||
|
const app = electron.app;
|
||||||
|
const join = require('path').join;
|
||||||
|
var customcss = join(app.getPath("userData"), "custom.css");
|
||||||
|
|
||||||
|
ipc.on('custom-css-create', function(e, arg) {
|
||||||
|
fs.writeFileSync(customcss, arg);
|
||||||
|
mainWindow.webContents.send('custom-css-create-complete', "");
|
||||||
|
})
|
||||||
|
ipc.on('custom-css-request', function(e, arg) {
|
||||||
|
try {
|
||||||
|
var css = fs.readFileSync(customcss, 'utf8');
|
||||||
|
} catch (e) {
|
||||||
|
var css = "";
|
||||||
|
}
|
||||||
|
mainWindow.webContents.send('custom-css-response', css);
|
||||||
|
})
|
||||||
|
ipc.on('theme-json-create', function(e, arg) {
|
||||||
|
var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] +
|
||||||
|
".thedesktheme");
|
||||||
|
fs.writeFileSync(themecss, JSON.stringify(JSON5.parse(arg)));
|
||||||
|
if (JSON5.parse(arg)["id"]) {
|
||||||
|
mainWindow.webContents.send('theme-json-create-complete', "");
|
||||||
|
} else {
|
||||||
|
mainWindow.webContents.send('theme-json-create-complete', "error");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
ipc.on('theme-json-delete', function(e, arg) {
|
||||||
|
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||||
|
console.log(themecss);
|
||||||
|
fs.unlink(themecss, function(err) {
|
||||||
|
mainWindow.webContents.send('theme-json-delete-complete', "");
|
||||||
|
});
|
||||||
|
})
|
||||||
|
ipc.on('theme-json-request', function(e, arg) {
|
||||||
|
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||||
|
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||||
|
mainWindow.webContents.send('theme-json-response', json);
|
||||||
|
})
|
||||||
|
ipc.on('theme-css-request', function(e, arg) {
|
||||||
|
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||||
|
try {
|
||||||
|
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||||
|
|
||||||
|
var primary = json.vars.primary;
|
||||||
|
var secondary = json.vars.secondary;
|
||||||
|
var text = json.vars.text;
|
||||||
|
if (json.base == "light") {
|
||||||
|
var drag = "rgba(255, 255, 255, 0.8)";
|
||||||
|
var beforehover = "#757575";
|
||||||
|
} else {
|
||||||
|
var drag = "rgba(0, 0, 0, 0.8)";
|
||||||
|
var beforehover = "#9e9e9e";
|
||||||
|
}
|
||||||
|
if (json.props) {
|
||||||
|
if (json.props.TheDeskAccent) {
|
||||||
|
var emphasized = json.props.TheDeskAccent
|
||||||
|
} else {
|
||||||
|
var emphasized = secondary;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var emphasized = primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
|
||||||
|
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
|
||||||
|
secondary + ";--subcolor:" + primary + ";--box:" + primary +
|
||||||
|
";--sidebar:" + primary + ";--shared:" + emphasized + ";" +
|
||||||
|
"--notfbox:" + secondary + ";--emphasized:" + primary + ";--his-data:" +
|
||||||
|
secondary +
|
||||||
|
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
|
||||||
|
primary +
|
||||||
|
";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||||
|
mainWindow.webContents.send('theme-css-response', css);
|
||||||
|
} catch (e) {
|
||||||
|
var css = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
ipc.on('theme-json-list', function(e, arg) {
|
||||||
|
fs.readdir(app.getPath("userData"), function(err, files) {
|
||||||
|
if (err) throw err;
|
||||||
|
var fileList = files.filter(function(file) {
|
||||||
|
var tfile = join(app.getPath("userData"), file);
|
||||||
|
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み
|
||||||
|
})
|
||||||
|
var themes = [];
|
||||||
|
for (var i = 0; i < fileList.length; i++) {
|
||||||
|
var themecss = join(app.getPath("userData"), fileList[i]);
|
||||||
|
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||||
|
themes.push({
|
||||||
|
name: json.name,
|
||||||
|
id: json.id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
mainWindow.webContents.send('theme-json-list-response', themes);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
exports.css = css;
|
||||||
123
app/main/dl.js
Normal file
123
app/main/dl.js
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
function dl(mainWindow,lang_path,base) {
|
||||||
|
const electron = require("electron");
|
||||||
|
const shell=electron.shell;
|
||||||
|
const fs = require("fs");
|
||||||
|
const {download} = require('electron-dl');
|
||||||
|
const BrowserWindow = electron.BrowserWindow;
|
||||||
|
const dialog = electron.dialog;
|
||||||
|
var updatewin = null;
|
||||||
|
var ipc = electron.ipcMain;
|
||||||
|
const app = electron.app;
|
||||||
|
const join = require('path').join;
|
||||||
|
ipc.on('update', function(e, x, y) {
|
||||||
|
|
||||||
|
var platform = process.platform;
|
||||||
|
var bit = process.arch;
|
||||||
|
if (platform != "others") {
|
||||||
|
updatewin = new BrowserWindow({
|
||||||
|
width: 600,
|
||||||
|
height: 400,
|
||||||
|
"transparent": false, // ウィンドウの背景を透過
|
||||||
|
"frame": false, // 枠の無いウィンドウ
|
||||||
|
"resizable": false,
|
||||||
|
"modal": true
|
||||||
|
});
|
||||||
|
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||||
|
updatewin.loadURL(base + lang + '/update.html');
|
||||||
|
|
||||||
|
return "true"
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
//アプデDL
|
||||||
|
ipc.on('download-btn', (e, args) => {
|
||||||
|
|
||||||
|
var platform = process.platform;
|
||||||
|
var bit = process.arch;
|
||||||
|
dialog.showSaveDialog(null, {
|
||||||
|
title: 'Save',
|
||||||
|
defaultPath: app.getPath('home') + "/" + args[1]
|
||||||
|
}, (savedFiles) => {
|
||||||
|
console.log(savedFiles);
|
||||||
|
if (!savedFiles) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (platform == "win32") {
|
||||||
|
var m = savedFiles.match(/(.+)\\(.+)$/);
|
||||||
|
} else {
|
||||||
|
var m = savedFiles.match(/(.+)\/(.+)$/);
|
||||||
|
}
|
||||||
|
//console.log(m);
|
||||||
|
if (isExistFile(savedFiles)) {
|
||||||
|
fs.unlinkSync(savedFiles);
|
||||||
|
}
|
||||||
|
dl(args[0], args[1], m[1]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function isExistFile(file) {
|
||||||
|
try {
|
||||||
|
fs.statSync(file);
|
||||||
|
return true
|
||||||
|
} catch (err) {
|
||||||
|
if (err.code === 'ENOENT') return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function dl(url, file, dir) {
|
||||||
|
|
||||||
|
updatewin.webContents.send('mess', "ダウンロードを開始します。");
|
||||||
|
const opts = {
|
||||||
|
directory: dir,
|
||||||
|
openFolderWhenDone: true,
|
||||||
|
onProgress: function(e) {
|
||||||
|
updatewin.webContents.send('prog', e);
|
||||||
|
},
|
||||||
|
saveAs: false
|
||||||
|
};
|
||||||
|
download(BrowserWindow.getFocusedWindow(),
|
||||||
|
url, opts)
|
||||||
|
.then(dl => {
|
||||||
|
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
|
||||||
|
app.quit();
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(console.error);
|
||||||
|
}
|
||||||
|
ipc.on('general-dl', (e, args) => {
|
||||||
|
|
||||||
|
var name = "";
|
||||||
|
var platform = process.platform;
|
||||||
|
var bit = process.arch;
|
||||||
|
if (args[1] == "") {
|
||||||
|
if (platform == "win32") {
|
||||||
|
var dir = app.getPath('home') + "\\Pictures\\TheDesk";
|
||||||
|
} else if (platform == "linux" || platform == "darwin") {
|
||||||
|
var dir = app.getPath('home') + "/Pictures/TheDesk";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var dir = args[1];
|
||||||
|
}
|
||||||
|
const opts = {
|
||||||
|
directory: dir,
|
||||||
|
filename: name,
|
||||||
|
openFolderWhenDone: false,
|
||||||
|
onProgress: function(e) {
|
||||||
|
mainWindow.webContents.send('general-dl-prog', e);
|
||||||
|
},
|
||||||
|
saveAs: false
|
||||||
|
};
|
||||||
|
download(BrowserWindow.getFocusedWindow(),
|
||||||
|
args[0], opts)
|
||||||
|
.then(dl => {
|
||||||
|
mainWindow.webContents.send('general-dl-message', dir);
|
||||||
|
})
|
||||||
|
.catch(console.error);
|
||||||
|
});
|
||||||
|
ipc.on('open-finder', (e, folder) => {
|
||||||
|
|
||||||
|
shell.showItemInFolder(folder)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.dl = dl;
|
||||||
71
app/main/img.js
Normal file
71
app/main/img.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
function img(mainWindow,dir){
|
||||||
|
const electron = require("electron");
|
||||||
|
const dialog = electron.dialog;
|
||||||
|
const fs = require("fs");
|
||||||
|
var Jimp = require("jimp");
|
||||||
|
var ipc = electron.ipcMain;
|
||||||
|
const BrowserWindow = electron.BrowserWindow;
|
||||||
|
ipc.on('file-select', (e, args) => {
|
||||||
|
|
||||||
|
dialog.showOpenDialog(null, {
|
||||||
|
properties: ['openFile', 'multiSelections'],
|
||||||
|
title: '添付ファイルを選択',
|
||||||
|
defaultPath: '.',
|
||||||
|
filters: [
|
||||||
|
{name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']},
|
||||||
|
{name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']},
|
||||||
|
{name: '動画', extensions: ['mp4','webm']},
|
||||||
|
{name: '全てのファイル', extensions: ['*']}
|
||||||
|
]
|
||||||
|
}, (fileNames) => {
|
||||||
|
if(!fileNames){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for(var i=0;i<fileNames.length;i++){
|
||||||
|
var path=fileNames[i];
|
||||||
|
var bin = fs.readFileSync(path, 'base64');
|
||||||
|
mainWindow.webContents.send('bmp-img-comp', [bin,'new']);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
ipc.on('adobe', (e, arg) => {
|
||||||
|
|
||||||
|
if(!arg){
|
||||||
|
const options = {
|
||||||
|
type: 'info',
|
||||||
|
title: 'Adobeフォトエディタ',
|
||||||
|
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
|
||||||
|
buttons: ['拒否', '許可','永続的に許可']
|
||||||
|
}
|
||||||
|
dialog.showMessageBox(options, function(index) {
|
||||||
|
if(index===2){
|
||||||
|
mainWindow.webContents.send('adobeagree', "true");
|
||||||
|
}
|
||||||
|
if(index>0){
|
||||||
|
adobeWindow();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
adobeWindow();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
function adobeWindow(){
|
||||||
|
var window = new BrowserWindow({
|
||||||
|
width: 1000,
|
||||||
|
height: 750
|
||||||
|
});
|
||||||
|
window.loadURL(dir + '/adobe.html');
|
||||||
|
}
|
||||||
|
ipc.on('bmp-image', (e, args) => {
|
||||||
|
|
||||||
|
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
|
||||||
|
Jimp.read(args[0], function (err, lenna) {
|
||||||
|
if (err) throw err;
|
||||||
|
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||||
|
mainWindow.webContents.send('bmp-img-comp', [src,args[1]]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.img = img;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
// Create the Application's main menu
|
// Create the Application's main menu
|
||||||
function templete(lang,mainWindow){
|
function templete(lang,mainWindow,packaged,dir){
|
||||||
const electron = require("electron");
|
const electron = require("electron");
|
||||||
const app = electron.app;
|
const app = electron.app;
|
||||||
const BrowserWindow = electron.BrowserWindow;
|
const BrowserWindow = electron.BrowserWindow;
|
||||||
@@ -74,7 +74,7 @@ function templete(lang,mainWindow){
|
|||||||
"transparent": false, // ウィンドウの背景を透過
|
"transparent": false, // ウィンドウの背景を透過
|
||||||
"frame": false, // 枠の無いウィンドウ
|
"frame": false, // 枠の無いウィンドウ
|
||||||
"resizable": false });
|
"resizable": false });
|
||||||
window.loadURL('file://' + __dirname + '/about.html?ver='+ver);
|
window.loadURL(dir + '/about.html?ver='+ver);
|
||||||
} },
|
} },
|
||||||
{ type: "separator" },
|
{ type: "separator" },
|
||||||
{ label: dict.quit[lang], accelerator: "Command+Q", click: function() { app.quit(); }}
|
{ label: dict.quit[lang], accelerator: "Command+Q", click: function() { app.quit(); }}
|
||||||
@@ -95,7 +95,7 @@ function templete(lang,mainWindow){
|
|||||||
{
|
{
|
||||||
label: 'Toggle Developer Tools',
|
label: 'Toggle Developer Tools',
|
||||||
accelerator: 'Alt+Command+I',
|
accelerator: 'Alt+Command+I',
|
||||||
click: function() { mainWindow.toggleDevTools(); }
|
click: function() { if(!packaged){mainWindow.toggleDevTools();} }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: dict.reload[lang],
|
label: dict.reload[lang],
|
||||||
71
app/main/np.js
Normal file
71
app/main/np.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
function np(mainWindow){
|
||||||
|
const electron = require("electron");
|
||||||
|
const join = require('path').join;
|
||||||
|
const app = electron.app;
|
||||||
|
const fs = require("fs");
|
||||||
|
var ipc = electron.ipcMain;
|
||||||
|
ipc.on('itunes', async (e, args) => {
|
||||||
|
//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;
|
||||||
|
if(platform=="darwin"){
|
||||||
|
try {
|
||||||
|
const nowplaying = require("itunes-nowplaying-mac");
|
||||||
|
const value = await nowplaying.getRawData();
|
||||||
|
mainWindow.webContents.send('itunes-np', value);
|
||||||
|
} catch (error) {
|
||||||
|
// エラーを返す
|
||||||
|
console.error(error);
|
||||||
|
mainWindow.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
|
||||||
|
}
|
||||||
|
mainWindow.webContents.send('itunes-np', value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.TheDeskNowPlaying = np;
|
||||||
181
app/main/system.js
Normal file
181
app/main/system.js
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
function system(mainWindow, dir, lang) {
|
||||||
|
const electron = require("electron");
|
||||||
|
const app = electron.app;
|
||||||
|
const join = require('path').join;
|
||||||
|
var Jimp = require("jimp");
|
||||||
|
const fs = require("fs");
|
||||||
|
var ipc = electron.ipcMain;
|
||||||
|
var tmp_img = join(app.getPath("userData"), "tmp.png");
|
||||||
|
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
|
||||||
|
var lang_path = join(app.getPath("userData"), "language");
|
||||||
|
const BrowserWindow = electron.BrowserWindow;
|
||||||
|
const dialog = electron.dialog;
|
||||||
|
const os = require('os')
|
||||||
|
const language=require("../main/language.js");
|
||||||
|
ipc.on('native-notf', function(e, args) {
|
||||||
|
|
||||||
|
var platform = process.platform;
|
||||||
|
var bit = process.arch;
|
||||||
|
if (platform == "win32") {
|
||||||
|
const notifier = require('node-notifier')
|
||||||
|
var tmp_imge = tmp_img;
|
||||||
|
Jimp.read(args[2], function(err, lenna) {
|
||||||
|
if (!err && lenna) {
|
||||||
|
lenna.write(tmp_img);
|
||||||
|
var tmp_imge = tmp_img;
|
||||||
|
} else {
|
||||||
|
var tmp_imge = "";
|
||||||
|
}
|
||||||
|
notifier.notify({
|
||||||
|
appID: "top.thedesk",
|
||||||
|
message: args[1],
|
||||||
|
title: args[0],
|
||||||
|
icon: tmp_imge,
|
||||||
|
sound: false,
|
||||||
|
wait: true,
|
||||||
|
},
|
||||||
|
function(err, response) {
|
||||||
|
console.log(err, response)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//言語
|
||||||
|
ipc.on('lang', function(e, arg) {
|
||||||
|
|
||||||
|
console.log("set:" + arg);
|
||||||
|
fs.writeFileSync(lang_path, arg);
|
||||||
|
mainWindow.webContents.send('langres', "");
|
||||||
|
})
|
||||||
|
//ハードウェアアクセラレーションの無効化
|
||||||
|
ipc.on('ha', function(e, arg) {
|
||||||
|
|
||||||
|
if (arg == "true") {
|
||||||
|
fs.writeFileSync(ha_path, arg);
|
||||||
|
} else {
|
||||||
|
fs.unlink(ha_path, function(err) {});
|
||||||
|
}
|
||||||
|
app.relaunch()
|
||||||
|
app.exit()
|
||||||
|
})
|
||||||
|
|
||||||
|
ipc.on('quit', (e, args) => {
|
||||||
|
|
||||||
|
app.quit();
|
||||||
|
});
|
||||||
|
ipc.on('about', (e, args) => {
|
||||||
|
|
||||||
|
about();
|
||||||
|
});
|
||||||
|
|
||||||
|
function about() {
|
||||||
|
|
||||||
|
var ver = app.getVersion()
|
||||||
|
var window = new BrowserWindow({
|
||||||
|
width: 300,
|
||||||
|
height: 480,
|
||||||
|
"transparent": false, // ウィンドウの背景を透過
|
||||||
|
"frame": false, // 枠の無いウィンドウ
|
||||||
|
"resizable": false
|
||||||
|
});
|
||||||
|
window.loadURL(dir + '/about.html?ver=' + ver);
|
||||||
|
return "true"
|
||||||
|
}
|
||||||
|
ipc.on('column-del', (e, args) => {
|
||||||
|
|
||||||
|
console.log(lang);
|
||||||
|
var options = language.delsel(lang)
|
||||||
|
dialog.showMessageBox(options, function(index) {
|
||||||
|
mainWindow.webContents.send('column-del-reply', index);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
ipc.on('nano', function(e, x, y) {
|
||||||
|
|
||||||
|
var nano_info_path = join(app.getPath("userData"),
|
||||||
|
"nano-window-position.json");
|
||||||
|
var window_pos;
|
||||||
|
try {
|
||||||
|
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'));
|
||||||
|
} catch (e) {
|
||||||
|
window_pos = [0, 0]; // デフォルトバリュー
|
||||||
|
}
|
||||||
|
var nanowindow = new BrowserWindow({
|
||||||
|
width: 350,
|
||||||
|
height: 200,
|
||||||
|
"transparent": false, // ウィンドウの背景を透過
|
||||||
|
"frame": false, // 枠の無いウィンドウ
|
||||||
|
"resizable": false
|
||||||
|
});
|
||||||
|
nanowindow.loadURL(dir + '/nano.html');
|
||||||
|
nanowindow.setAlwaysOnTop(true);
|
||||||
|
|
||||||
|
nanowindow.setPosition(window_pos[0], window_pos[1]);
|
||||||
|
nanowindow.on('close', function() {
|
||||||
|
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
|
||||||
|
var cbTimer1;
|
||||||
|
ipc.on('startmem', (e, arg) => {
|
||||||
|
cbTimer1 = setInterval(mems, 1000);
|
||||||
|
});
|
||||||
|
ipc.on('endmem', (e, arg) => {
|
||||||
|
if (cbTimer1) {
|
||||||
|
clearInterval(cbTimer1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function mems() {
|
||||||
|
var mem = os.totalmem() - os.freemem();
|
||||||
|
if (mainWindow) {
|
||||||
|
mainWindow.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ipc.on('export', (e, args) => {
|
||||||
|
fs.writeFileSync(args[0], args[1]);
|
||||||
|
});
|
||||||
|
ipc.on('import', (e, arg) => {
|
||||||
|
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
|
||||||
|
});
|
||||||
|
//フォント
|
||||||
|
function object_array_sort(data, key, order, fn) {
|
||||||
|
//デフォは降順(DESC)
|
||||||
|
var num_a = -1;
|
||||||
|
var num_b = 1;
|
||||||
|
|
||||||
|
if (order === 'asc') { //指定があれば昇順(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); // ソート後の配列を返す
|
||||||
|
}
|
||||||
|
ipc.on('fonts', (e, arg) => {
|
||||||
|
const fm = require('font-manager');
|
||||||
|
var fonts = fm.getAvailableFontsSync();
|
||||||
|
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted) {
|
||||||
|
mainWindow.webContents.send('font-list', fonts_sorted);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
exports.system = system;
|
||||||
2430
app/package-lock.json
generated
2430
app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,23 +1,25 @@
|
|||||||
{
|
{
|
||||||
"name": "thedesk",
|
"name": "thedesk",
|
||||||
"version": "18.1.0",
|
"version": "18.4.0",
|
||||||
"description": "TheDesk is a Mastodon client for PC.",
|
"description": "TheDesk is a Mastodon client for PC.",
|
||||||
|
"repository": "https://github.com/cutls/TheDesk",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"dist": "build --linux snap",
|
"dist": "build --linux snap",
|
||||||
|
"build": "electron-builder",
|
||||||
"build:all": "electron-builder --win --linux",
|
"build:all": "electron-builder --win --linux",
|
||||||
"build:win": "electron-builder --win"
|
"build:win": "electron-builder --win"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": ["mastodon","client","electron","thedesk"],
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/cutls/TheDesk/issues",
|
"url": "https://github.com/cutls/TheDesk/issues",
|
||||||
"email": "mstdn@thedesk.top"
|
"email": "web-pro@cutls.com"
|
||||||
},
|
},
|
||||||
"homepage": "https://thedesk.top",
|
"homepage": "https://thedesk.top",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Cutls",
|
"name": "Cutls",
|
||||||
"url": "https://kirishima.clooud/@Cutls",
|
"url": "https://cutls.com/@Cutls",
|
||||||
"email": "web-pro@cutls.com"
|
"email": "web-pro@cutls.com"
|
||||||
},
|
},
|
||||||
"contributor": [
|
"contributor": [
|
||||||
@@ -33,14 +35,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "kPherox",
|
"name": "kPherox",
|
||||||
"url": "https://www.kr-kp.com/",
|
"url": "https://pawoo.net/@kPherox",
|
||||||
"email": "admin@mail.kr-kp.com"
|
"email": "admin@mail.kr-kp.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"electron-dl": "^1.11.0",
|
"electron-dl": "^1.11.0",
|
||||||
"font-manager": "^0.3.0",
|
|
||||||
"jimp": "^0.2.28",
|
"jimp": "^0.2.28",
|
||||||
"json5": "^2.1.0",
|
"json5": "^2.1.0",
|
||||||
"node-notifier": "^5.2.1",
|
"node-notifier": "^5.2.1",
|
||||||
@@ -48,12 +49,16 @@
|
|||||||
"vue": "^2.6.9"
|
"vue": "^2.6.9"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"nowplaying-node": "^0.1.3",
|
"nowplaying-node": "git+https://github.com/cutls/nowplaying-node",
|
||||||
"itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/1/head"
|
"itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/4/head",
|
||||||
|
"font-manager": "^0.3.0"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"productName": "TheDesk",
|
"productName": "TheDesk",
|
||||||
"appId": "top.thedesk",
|
"appId": "top.thedesk",
|
||||||
|
"asarUnpack": [
|
||||||
|
"node_modules/itunes-nowplaying-mac"
|
||||||
|
],
|
||||||
"directories": {
|
"directories": {
|
||||||
"output": "../build"
|
"output": "../build"
|
||||||
},
|
},
|
||||||
@@ -83,22 +88,23 @@
|
|||||||
"linux": {
|
"linux": {
|
||||||
"icon": "build/icons",
|
"icon": "build/icons",
|
||||||
"target": [
|
"target": [
|
||||||
"snap"
|
"zip"
|
||||||
],
|
],
|
||||||
"category": "Network"
|
"category": "Network"
|
||||||
},
|
},
|
||||||
"mac": {
|
"mac": {
|
||||||
"target": "dmg"
|
"target": [
|
||||||
|
"dmg",
|
||||||
|
"zip"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"electronDownload": {
|
"electronDownload": {
|
||||||
"version": "4.0.6"
|
"version": "4.2.0"
|
||||||
},
|
},
|
||||||
"electronVersion": "4.0.6"
|
"electronVersion": "4.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^4.0.6",
|
"electron": "^4.2.0",
|
||||||
"electron-packager": "^13.0.1",
|
"electron-builder": "^20.39.0"
|
||||||
"electron-prebuilt": "^1.4.13",
|
|
||||||
"electron-rebuild": "^1.8.4"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
app/source/notif.wav
Normal file
BIN
app/source/notif.wav
Normal file
Binary file not shown.
BIN
app/source/notif2.wav
Normal file
BIN
app/source/notif2.wav
Normal file
Binary file not shown.
BIN
app/source/notif3.wav
Normal file
BIN
app/source/notif3.wav
Normal file
Binary file not shown.
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
|||||||
.colorsel{ display:flex; }
|
.colorsel{ display:flex; }
|
||||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||||
.card .colorsel div.exc{width:40px;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>
|
</style>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<!--
|
<!--
|
||||||
@@ -39,24 +47,27 @@ body,html{overflow-y: scroll;}
|
|||||||
<script type="text/javascript" src="../../js/ui/tips.js"></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/time.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br>
|
<div class="hide-first">
|
||||||
<h5>List of accounts</h5>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br>
|
||||||
<div id="acct-list"></div>
|
<h5>List of accounts</h5>
|
||||||
<div class="divider"></div>
|
<div id="acct-list"></div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<h5>Add an account</h5><br>
|
<h5>Add an account</h5><br>
|
||||||
<div id="add">
|
<div id="add">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s6">
|
<div class="col s8">
|
||||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||||
<div id="ins-suggest"></div>
|
<div id="ins-suggest"></div>
|
||||||
Check if TheDesk is not working on Windows, you want to login Pleroma servers, you cannot login when it checked.<br>
|
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br>
|
||||||
<input type="checkbox" class="filled-in" id="linux" />
|
<input type="checkbox" class="filled-in" id="linux" />
|
||||||
<label for="linux">Code setup</label><br>
|
<label for="linux">Code setup</label><br>
|
||||||
<input type="checkbox" class="filled-in" id="misskey" />
|
<input type="checkbox" class="filled-in" id="misskey" />
|
||||||
<label for="misskey">Login as Misskey</label><br>
|
<label for="misskey">Login as Misskey</label><br>
|
||||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s6">
|
<div class="col s4">
|
||||||
<span style="font-family:Open Sans;">Supports</span>
|
<span style="font-family:Open Sans;">Supports</span>
|
||||||
<div id="support" class="collection transparent"></div>
|
<div id="support" class="collection transparent"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
|||||||
<input type="text" id="misskey-key" placeholder="Code">
|
<input type="text" id="misskey-key" placeholder="Code">
|
||||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="hide-first">
|
||||||
<h5>Main an account</h5>
|
<h5>Main an account</h5>
|
||||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">Select an account</span>
|
<div class="input-field" style="width:300px"><span data-trans="your_acct">Select an account</span>
|
||||||
<br>
|
<br>
|
||||||
@@ -91,6 +104,7 @@ Toots:<span id="ins-toot"></span><br>
|
|||||||
Users:<span id="ins-user"></span>Users<br>
|
Users:<span id="ins-user"></span>Users<br>
|
||||||
Connection:<span id="ins-per"></span>%<br>
|
Connection:<span id="ins-per"></span>%<br>
|
||||||
Mastodon version:<span id="ins-ver"></span>@<span id="ins-upd"></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/ui/theme.js"></script>
|
||||||
<script type="text/javascript" src="../../js/platform/end.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/common/sha256.js"></script>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,7 @@
|
|||||||
<script type="text/javascript" src="../../js/platform/first.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/common/materialize.js"></script>
|
||||||
<a href="setting.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>Back</a>
|
<a href="setting.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>Back</a>
|
||||||
LICENSE of TheDesk:<a href="https://github.com/cutls/TheDesk/blob/master/LICENSE.md">TheDesk LICENSE (Latest Ver.)</a><br>
|
LICENSE of TheDesk:<a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">TheDesk LICENSE (Latest Ver.)</a><br>
|
||||||
<article style="width:500px; max-width:100%; margin:15px; font-family:Arial,Helvetica">
|
<article style="width:500px; max-width:100%; margin:15px; font-family:Arial,Helvetica">
|
||||||
<h5>TheDesk</h5>
|
<h5>TheDesk</h5>
|
||||||
<i class="fa fa-github"></i><a href="https://github.com/cutls/TheDesk" target="_blank">cutls/TheDesk</a><br>
|
<i class="fa fa-github"></i><a href="https://github.com/cutls/TheDesk" target="_blank">cutls/TheDesk</a><br>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en" style="overflow:scroll">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Settings - TheDesk</title>
|
<title>Settings - TheDesk</title>
|
||||||
<!--
|
<!--
|
||||||
@@ -17,362 +18,426 @@
|
|||||||
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
|
<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="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
<style>
|
||||||
|
input {
|
||||||
|
max-height: 50px !important
|
||||||
|
}
|
||||||
|
.pcr-result {
|
||||||
|
height: 1rem !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="mainView" style="overflow-y:scroll">
|
<body id="mainView" style="overflow-y:scroll">
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/materialize.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/lang/lang.en.js"></script>
|
||||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.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 src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||||
<script type="text/javascript" src="setting.vue.js"></script>
|
<script type="text/javascript" src="setting.vue.js"></script>
|
||||||
|
|
||||||
<h4>Preferences</h4>
|
<h4>Preferences</h4>
|
||||||
<ul class="collapsible" data-collapsible="accordion">
|
<ul class="collapsible" data-collapsible="accordion">
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">desktop_windows</i>System Preferences
|
<i class="material-icons">desktop_windows</i>System Preferences
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>Languages</h5>
|
<h5>Languages</h5>
|
||||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||||
<a href="../ja/setting.html" onclick="changelang('ja')">日本語(Japanese)</a>/<a href="../en/setting.html" onclick="changelang('en')">English</a>/<a href="../ps/setting.html" onclick="changelang('ps')">Crowdin web translate</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>
|
||||||
<h5>Import and export of preferences</h5>
|
<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>
|
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">Import</button>
|
style="width:100%; max-width:200px;">Export</button>
|
||||||
<div id="envView">
|
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||||
<template v-for="(item, i) in config">
|
style="width:100%; max-width:200px;">Import</button>
|
||||||
<h5>{{item.text.head}}</h5>
|
<div id="envView">
|
||||||
<templete v-html=item.text.desc></templete><br>
|
<template v-for="(item, i) in config">
|
||||||
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">Notification test</a><br></template>
|
<h5>{{item.text.head}}</h5>
|
||||||
<template v-if="item.checkbox">
|
<template v-if="item.text.desc">
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
<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" />
|
</template>
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||||
</template>
|
class="pointer">Notification test</a><br></template>
|
||||||
</template>
|
<template v-if="item.checkbox">
|
||||||
<template v-else>
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
<template v-if="item.doubleText">
|
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||||
<template v-for="(textbox, j) in item.data">
|
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||||
<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)">Change</button>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<h5>Font</h5>
|
|
||||||
Select your favorite font to 'Select'<br>
|
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</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()">Save</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()">Change</button>
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="collapsible-header">
|
|
||||||
<i class="material-icons">color_lens</i>Themes
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<h4>Select theme</h4>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
|
||||||
<label for="black">Black</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
|
||||||
<label for="white">White</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
|
||||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
|
||||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
|
||||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
|
||||||
<label for="custom">Custom</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>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
|
||||||
<label for="dark">Dark</label>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
|
||||||
<label for="light">Light</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()">Change</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
|
|
||||||
<input type="text" style="width:300px" 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" 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>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</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)">Change</button>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
</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>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
<template v-else>
|
||||||
<template v-else>
|
<template v-if="item.doubleText">
|
||||||
<template v-if="item.doubleText">
|
<template v-for="(textbox, j) in item.data">
|
||||||
<template v-for="(textbox, j) in item.data">
|
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||||
</template>
|
</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)">Change</button>
|
||||||
|
</template><br>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
</div>
|
||||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
<h5>Font</h5>
|
||||||
|
Select your favorite font to 'Select'(Windows/ macOS only)<br>
|
||||||
|
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</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()">Save</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()">Change</button>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
|
<i class="material-icons">color_lens</i>Themes
|
||||||
|
</div>
|
||||||
|
<div class="collapsible-body">
|
||||||
|
<h4>Select theme</h4>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||||
|
<label for="black">Black</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||||
|
<label for="white">White</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||||
|
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||||
|
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||||
|
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||||
|
<label for="custom">Custom</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>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
|
||||||
|
<label for="dark">Dark</label>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
|
||||||
|
<label for="light">Light</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()">Change</button> <button
|
||||||
|
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
|
||||||
|
<input type="text" style="width:300px" 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" 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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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)">Change</button>
|
||||||
|
</template><br>
|
||||||
</template>
|
</template>
|
||||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
|
</div>
|
||||||
</template>
|
<h5>Custom sound</h5>
|
||||||
</template>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
|
||||||
</li>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
</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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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)">Change</button>
|
||||||
|
</template><br>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
|
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>Easy inserter</h5>
|
<h5>Easy inserter</h5>
|
||||||
You can insert any letters and emojis with only 3 keys<br>
|
You can insert any letters and emojis with only 3 keys<br>
|
||||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
<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">
|
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>
|
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
|
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>Client Mute</h5>
|
<h5>Client Mute</h5>
|
||||||
<div id="mute-cli"></div>
|
<div id="mute-cli"></div>
|
||||||
<h5>Client Emphasis</h5>
|
<h5>Client Emphasis</h5>
|
||||||
Click client name on toots to toggle mute and emphasis.
|
Click client name on toots to toggle mute and emphasis.
|
||||||
<h5>Words Mute</h5>
|
<h5>Words Mute</h5>
|
||||||
Enter to set<br>
|
Enter to set<br>
|
||||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||||
<h5>Words Emphasis</h5>
|
<h5>Words Emphasis</h5>
|
||||||
Enter to set<br>
|
Enter to set<br>
|
||||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||||
<h5>Users Emphasis</h5>
|
<h5>Users Emphasis</h5>
|
||||||
Set on users data modals.
|
Set on users data modals.
|
||||||
<span class="emphasized"> Use this color to emphasis </span>
|
<span class="emphasized"> Use this color to emphasis </span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
|
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>NowPlaying Provider(Windows)</h5>
|
<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>
|
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>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||||
<label for="aimp">AIMP</label>
|
<label for="aimp">AIMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||||
<label for="itunes">iTunes</label>
|
<label for="itunes">iTunes</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||||
<label for="npmm">MediaMonkey</label>
|
<label for="npmm">MediaMonkey</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||||
<label for="winamp">Winamp</label>
|
<label for="winamp">Winamp</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||||
<label for="wmp">WMP</label>
|
<label for="wmp">WMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||||
<label for="wlm">WLM</label>
|
<label for="wlm">WLM</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||||
<label for="cad">CAD</label><br><br>
|
<label for="cad">CAD</label><br><br>
|
||||||
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
|
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
|
||||||
<h5>Account Connection</h5>
|
<h5>Account Connection</h5>
|
||||||
TheDesk save your data on thedesk.top server.<br>
|
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;">Save</button></div>
|
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||||
<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>
|
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Save</button></div>
|
||||||
<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>
|
<a onclick="spotifyConnect()" class="btn waves-effect nex"
|
||||||
<h5>Edit a template</h5>
|
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
|
||||||
<br>
|
class="fa fa-spotify left"></i>Connect</a>
|
||||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
<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>
|
||||||
|
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||||
{url}</textarea><br>
|
{url}</textarea><br>
|
||||||
Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify<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>
|
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>
|
Windows:{song}:Song name/{album}:Album name/{artist}:Artist name<br>
|
||||||
<span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br>
|
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||||
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
|
<h5>Attach an Artwork of Spotify</h5>
|
||||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
|
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||||
<h5>Attach an Artwork of Spotify</h5>
|
<label for="awk_yes">Yes</label>
|
||||||
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
|
<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_yes" value="yes" />
|
<label for="awk_no">No</label>
|
||||||
<label for="awk_yes">Yes</label>
|
<br>
|
||||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
</div>
|
||||||
<label for="awk_no">No</label>
|
</li>
|
||||||
<br>
|
<li>
|
||||||
</div>
|
<div class="collapsible-header">
|
||||||
</li>
|
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-body">
|
||||||
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
|
<h5>Speed</h5>
|
||||||
</div>
|
1-100(default:10)<br>
|
||||||
<div class="collapsible-body">
|
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||||
<h5>Speed</h5>
|
style="width:500px; max-width:100%" /></p>
|
||||||
1-100(default:10)<br>
|
<h5>Pitch</h5>
|
||||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
0-100(default:50)<br>
|
||||||
<h5>Pitch</h5>
|
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||||
0-100(default:50)<br>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<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>
|
||||||
<h5>Volume</h5>
|
0-100(default:100)<br>
|
||||||
0-100(default:100)<br>
|
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<h5>Test</h5>
|
<h5>Test</h5>
|
||||||
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
|
<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>
|
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||||
<br>
|
id="testplay">Play/Stop</button><br>
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button>
|
<br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button>
|
||||||
</li>
|
</div>
|
||||||
</ul>
|
</li>
|
||||||
<br>
|
</ul>
|
||||||
<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>Esc:Hide toot box</li>
|
|
||||||
<li>F5:Super Reload</li>
|
|
||||||
<li>Ctrl+Shift+C:Clear toot box</li>
|
|
||||||
<li>Ctrl+Shift+S:Preferences</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>
|
|
||||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
|
||||||
<li>Shift+Space:ゼロ幅スペース</li>
|
|
||||||
以下アスタルテにログインしている場合のみ
|
|
||||||
<br>
|
|
||||||
<li>Ctrl+R:
|
|
||||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
|
||||||
</li><br>
|
|
||||||
</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://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Enty)</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>
|
|
||||||
<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>
|
|
||||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" 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@kirishima.cloud</a>
|
|
||||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">Give me a sushi!</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 © TheDesk 2018 All Rights Reserved.
|
|
||||||
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@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
|
||||||
<br>
|
<br>
|
||||||
</span><br>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
class="material-icons left">undo</i>Back</a>
|
||||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
<br>
|
||||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
<br>Keyboard shortcuts
|
||||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
|
||||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
<li>N:Open toot box</li>
|
||||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
<li>X:Toggle toot box</li>
|
||||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
<li>Ctrl+Enter:Post</li>
|
||||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
|
||||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
<li>Alt+Enter:Secondary Toot Button</li>
|
||||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
<li>Ctrl+E:Make all notifications read</li>
|
||||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
<li>Esc:Hide toot box</li>
|
||||||
|
<li>F5:Super Reload</li>
|
||||||
|
<li>Ctrl+Shift+C:Clear toot box</li>
|
||||||
|
<li>Ctrl+Shift+S:Preferences</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>
|
||||||
|
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||||
|
<li>Shift+Space:ゼロ幅スペース</li>
|
||||||
|
以下アスタルテにログインしている場合のみ
|
||||||
|
<br>
|
||||||
|
<li>Ctrl+R:
|
||||||
|
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||||
|
</li><br>
|
||||||
|
</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://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>
|
||||||
|
<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>
|
||||||
|
<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 © 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/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>
|
||||||
@@ -7,6 +7,27 @@ var yesno=[
|
|||||||
value:"no"
|
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=[
|
var envConstruction=[
|
||||||
{
|
{
|
||||||
id:"popup",
|
id:"popup",
|
||||||
@@ -263,7 +284,7 @@ var tlConstruction=[
|
|||||||
setValue:200,
|
setValue:200,
|
||||||
text:{
|
text:{
|
||||||
head:"Height of images",
|
head:"Height of images",
|
||||||
desc:"",
|
desc:'Option:Set "full" to uncrop.',
|
||||||
after:"px"
|
after:"px"
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
@@ -286,6 +307,46 @@ var tlConstruction=[
|
|||||||
desc:"",
|
desc:"",
|
||||||
checkbox:yesno
|
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=[
|
var postConstruction=[
|
||||||
@@ -476,5 +537,16 @@ var postConstruction=[
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
id:"zero",
|
||||||
|
storage:"emoji-zero-width",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"normal",
|
||||||
|
setValue:"no",
|
||||||
|
text:{
|
||||||
|
head:"Zero-width space when inserting emojis",
|
||||||
|
desc:"",
|
||||||
|
checkbox:yesno
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
|||||||
#prog{
|
#prog{
|
||||||
font-size:200%;
|
font-size:200%;
|
||||||
}
|
}
|
||||||
.linux, .mac{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
|||||||
<p>Get latest TheDesk</p>
|
<p>Get latest TheDesk</p>
|
||||||
<span id="now"></span>→<b id="ver"></b><br>
|
<span id="now"></span>→<b id="ver"></b><br>
|
||||||
<span id="det"></span><br>
|
<span id="det"></span><br>
|
||||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">Installer ver.</button>
|
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">Installer ver.</button>
|
||||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
|
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
|
||||||
<span class="linux">Snap ver may be on Snapcraft<br></span>
|
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">Start</button>
|
||||||
<button class="waves-effect btn linux" 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>
|
||||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">Start</button>
|
|
||||||
<br>
|
<br>
|
||||||
Some problems?<br>Please download on <a href="https://thedesk.top">Oficial HP</a>.
|
Some problems?<br>Please download on <a href="https://thedesk.top">Oficial HP</a>.
|
||||||
</div>
|
</div>
|
||||||
@@ -184,12 +180,12 @@ function verck(){
|
|||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
var platform=remote.process.platform;
|
var platform=remote.process.platform;
|
||||||
var bit=process.arch;
|
var bit=process.arch;
|
||||||
if(platform=="linux"){
|
if(platform=="win32"){
|
||||||
$('.windows').hide()
|
$('.windows').removeClass("hide")
|
||||||
$('.linux').show()
|
}else if(platform=="linux"){
|
||||||
}else if(platform=="mac"){
|
$('.linux').removeClass("hide")
|
||||||
$('.windows').hide()
|
}else if(platform=="darwin"){
|
||||||
$('.mac').show()
|
$('.mac').removeClass("hide")
|
||||||
}
|
}
|
||||||
var start="https://thedesk.top/ver.json";
|
var start="https://thedesk.top/ver.json";
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
@@ -201,10 +197,24 @@ function verck(){
|
|||||||
todo(error);
|
todo(error);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
console.log(json);
|
console.log(json);
|
||||||
$("#ver").text(json.desk);
|
if(platform=="win32"){
|
||||||
localStorage.setItem("next-ver",json.desk);
|
$("#ver").text(json.desk);
|
||||||
$("#det").html(json.detail);
|
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="en";
|
||||||
|
if(lang=="ja"){
|
||||||
|
$("#det").html(json.detail);
|
||||||
|
}else{
|
||||||
|
$("#det").html(json.detail_en);
|
||||||
|
}
|
||||||
|
|
||||||
$("#now").text(localStorage.getItem("ver"));
|
$("#now").text(localStorage.getItem("ver"));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
|||||||
.colorsel{ display:flex; }
|
.colorsel{ display:flex; }
|
||||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||||
.card .colorsel div.exc{width:40px;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>
|
</style>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<!--
|
<!--
|
||||||
@@ -39,24 +47,27 @@ body,html{overflow-y: scroll;}
|
|||||||
<script type="text/javascript" src="../../js/ui/tips.js"></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/time.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br>
|
<div class="hide-first">
|
||||||
<h5>アカウント一覧</h5>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br>
|
||||||
<div id="acct-list"></div>
|
<h5>アカウント一覧</h5>
|
||||||
<div class="divider"></div>
|
<div id="acct-list"></div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<h5>アカウントを追加</h5><br>
|
<h5>アカウントを追加</h5><br>
|
||||||
<div id="add">
|
<div id="add">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s6">
|
<div class="col s8">
|
||||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||||
<div id="ins-suggest"></div>
|
<div id="ins-suggest"></div>
|
||||||
Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。ログインできない場合、チェックを外してください。<br>
|
チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。<br>
|
||||||
<input type="checkbox" class="filled-in" id="linux" />
|
<input type="checkbox" class="filled-in" id="linux" />
|
||||||
<label for="linux">コードセットアップ</label><br>
|
<label for="linux">コードセットアップ</label><br>
|
||||||
<input type="checkbox" class="filled-in" id="misskey" />
|
<input type="checkbox" class="filled-in" id="misskey" />
|
||||||
<label for="misskey">Misskeyとしてログイン</label><br>
|
<label for="misskey">Misskeyとしてログイン</label><br>
|
||||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s6">
|
<div class="col s4">
|
||||||
<span style="font-family:Open Sans;">Supports</span>
|
<span style="font-family:Open Sans;">Supports</span>
|
||||||
<div id="support" class="collection transparent"></div>
|
<div id="support" class="collection transparent"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
|||||||
<input type="text" id="misskey-key" placeholder="コードを入力">
|
<input type="text" id="misskey-key" placeholder="コードを入力">
|
||||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="hide-first">
|
||||||
<h5>メインアカウント</h5>
|
<h5>メインアカウント</h5>
|
||||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">アカウントを選択</span>
|
<div class="input-field" style="width:300px"><span data-trans="your_acct">アカウントを選択</span>
|
||||||
<br>
|
<br>
|
||||||
@@ -91,6 +104,7 @@ Administered by:<a id="ins-admin"></a><br>
|
|||||||
ユーザー数:<span id="ins-user"></span>ユーザー数<br>
|
ユーザー数:<span id="ins-user"></span>ユーザー数<br>
|
||||||
コネクション:<span id="ins-per"></span>%<br>
|
コネクション:<span id="ins-per"></span>%<br>
|
||||||
Mastodonバージョン:<span id="ins-ver"></span>@<span id="ins-upd"></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/ui/theme.js"></script>
|
||||||
<script type="text/javascript" src="../../js/platform/end.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/common/sha256.js"></script>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="ja">
|
<html lang="ja" style="overflow:scroll">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Settings - TheDesk</title>
|
<title>Settings - TheDesk</title>
|
||||||
<!--
|
<!--
|
||||||
@@ -17,362 +18,426 @@
|
|||||||
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
|
<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="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
<style>
|
||||||
|
input {
|
||||||
|
max-height: 50px !important
|
||||||
|
}
|
||||||
|
.pcr-result {
|
||||||
|
height: 1rem !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="mainView" style="overflow-y:scroll">
|
<body id="mainView" style="overflow-y:scroll">
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
||||||
<script type="text/javascript" src="../../js/lang/lang.ja.js"></script>
|
<script type="text/javascript" src="../../js/lang/lang.ja.js"></script>
|
||||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.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 src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||||
<script type="text/javascript" src="setting.vue.js"></script>
|
<script type="text/javascript" src="setting.vue.js"></script>
|
||||||
|
|
||||||
<h4>設定</h4>
|
<h4>設定</h4>
|
||||||
<ul class="collapsible" data-collapsible="accordion">
|
<ul class="collapsible" data-collapsible="accordion">
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">desktop_windows</i>環境設定
|
<i class="material-icons">desktop_windows</i>環境設定
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>言語</h5>
|
<h5>言語</h5>
|
||||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||||
<a href="../ja/setting.html" onclick="changelang('ja')">日本語(Japanese)</a>/<a href="../en/setting.html" onclick="changelang('en')">English</a>/<a href="../ps/setting.html" onclick="changelang('ps')">Crowdin web translate</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>
|
||||||
<h5>設定のインポートとエクスポート</h5>
|
<h5>設定のインポートとエクスポート</h5>
|
||||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">エクスポート</button>
|
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">インポート</button>
|
style="width:100%; max-width:200px;">エクスポート</button>
|
||||||
<div id="envView">
|
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||||
<template v-for="(item, i) in config">
|
style="width:100%; max-width:200px;">インポート</button>
|
||||||
<h5>{{item.text.head}}</h5>
|
<div id="envView">
|
||||||
<templete v-html=item.text.desc></templete><br>
|
<template v-for="(item, i) in config">
|
||||||
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">通知テスト</a><br></template>
|
<h5>{{item.text.head}}</h5>
|
||||||
<template v-if="item.checkbox">
|
<template v-if="item.text.desc">
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
<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" />
|
</template>
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||||
</template>
|
class="pointer">通知テスト</a><br></template>
|
||||||
</template>
|
<template v-if="item.checkbox">
|
||||||
<template v-else>
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
<template v-if="item.doubleText">
|
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||||
<template v-for="(textbox, j) in item.data">
|
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||||
<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>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<h5>フォント</h5>
|
|
||||||
「選択」を押してフォントを選んでください。<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>
|
|
||||||
画像ダウンロードやスクリーンショットに影響します。<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>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
|
||||||
<label for="black">Black</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
|
||||||
<label for="white">White</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
|
||||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
|
||||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
|
||||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
|
||||||
<label for="custom">Custom</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>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
|
||||||
<label for="dark">Dark</label>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
|
||||||
<label for="light">Light</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> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">削除</button><br><br>
|
|
||||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
|
||||||
このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href="https://thedesk.top/mias.html" target="_blank">テーマ互換性</a>
|
|
||||||
<h4>カスタムテーマのインポート</h4>
|
|
||||||
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br>
|
|
||||||
<input type="text" style="width:300px" 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>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</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>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
</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>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
<template v-else>
|
||||||
<template v-else>
|
<template v-if="item.doubleText">
|
||||||
<template v-if="item.doubleText">
|
<template v-for="(textbox, j) in item.data">
|
||||||
<template v-for="(textbox, j) in item.data">
|
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||||
</template>
|
</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>
|
</template>
|
||||||
<template v-else>
|
</div>
|
||||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
<h5>フォント</h5>
|
||||||
|
「選択」を押してフォントを選んでください。(Linuxでは動きません)<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>
|
||||||
|
画像ダウンロードやスクリーンショットに影響します。<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>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||||
|
<label for="black">Black</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||||
|
<label for="white">White</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||||
|
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||||
|
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||||
|
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||||
|
<label for="custom">Custom</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>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
|
||||||
|
<label for="dark">Dark</label>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
|
||||||
|
<label for="light">Light</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> <button
|
||||||
|
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">削除</button><br><br>
|
||||||
|
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||||
|
placeholder="JSON style" readonly><br>
|
||||||
|
このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href="https://thedesk.top/mias.html" target="_blank">テーマ互換性</a>
|
||||||
|
<h4>カスタムテーマのインポート</h4>
|
||||||
|
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br>
|
||||||
|
<input type="text" style="width:300px" 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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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>
|
</template>
|
||||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
|
</div>
|
||||||
</template>
|
<h5>カスタム通知音</h5>
|
||||||
</template>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
|
||||||
</li>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
</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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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>キーボードショートカットの設定
|
<i class="material-icons">keyboard</i>キーボードショートカットの設定
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>簡単文字入力</h5>
|
<h5>簡単文字入力</h5>
|
||||||
絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。<br>
|
絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。<br>
|
||||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
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>
|
<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">
|
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>
|
<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">
|
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>
|
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">bookmark</i>ミュート・強調の設定
|
<i class="material-icons">bookmark</i>ミュート・強調の設定
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>クライアントミュート</h5>
|
<h5>クライアントミュート</h5>
|
||||||
<div id="mute-cli"></div>
|
<div id="mute-cli"></div>
|
||||||
<h5>クライアント強調</h5>
|
<h5>クライアント強調</h5>
|
||||||
各トゥートのクライアントをクリックすると設定できます。
|
各トゥートのクライアントをクリックすると設定できます。
|
||||||
<h5>ワードミュート</h5>
|
<h5>ワードミュート</h5>
|
||||||
Enterで確定<br>
|
Enterで確定<br>
|
||||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||||
<h5>ワード強調</h5>
|
<h5>ワード強調</h5>
|
||||||
Enterで確定<br>
|
Enterで確定<br>
|
||||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||||
<h5>ユーザー強調</h5>
|
<h5>ユーザー強調</h5>
|
||||||
各ユーザーのデータ表示画面で設定できます。
|
各ユーザーのデータ表示画面で設定できます。
|
||||||
<span class="emphasized"> 強調色(テーマによって異なります。) </span>
|
<span class="emphasized"> 強調色(テーマによって異なります。) </span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="fa fa-spotify"></i>SpotifyとNowPlayingの設定
|
<i class="fa fa-spotify"></i>SpotifyとNowPlayingの設定
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>NowPlayingのソース(Windows)</h5>
|
<h5>NowPlayingのソース(Windows)</h5>
|
||||||
macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。<br>
|
macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。<br>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||||
<label for="aimp">AIMP</label>
|
<label for="aimp">AIMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||||
<label for="itunes">iTunes</label>
|
<label for="itunes">iTunes</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||||
<label for="npmm">MediaMonkey</label>
|
<label for="npmm">MediaMonkey</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||||
<label for="winamp">Winamp</label>
|
<label for="winamp">Winamp</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||||
<label for="wmp">WMP</label>
|
<label for="wmp">WMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||||
<label for="wlm">WLM</label>
|
<label for="wlm">WLM</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||||
<label for="cad">CAD</label><br><br>
|
<label for="cad">CAD</label><br><br>
|
||||||
<i class="material-icons" style="font-size:24px;">music_note</i>ボタンから簡単にNowPlayingができます。<br>
|
<i class="material-icons" style="font-size:24px;">music_note</i>ボタンから簡単にNowPlayingができます。<br>
|
||||||
<h5>アカウントの連携</h5>
|
<h5>アカウントの連携</h5>
|
||||||
APIの性質上,thedesk.topへアクセスします。<br>
|
APIの性質上,thedesk.topへアクセスします。<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>
|
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||||
<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>接続</a>
|
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">設定</button></div>
|
||||||
<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>切断</a>
|
<a onclick="spotifyConnect()" class="btn waves-effect nex"
|
||||||
<h5>テンプレートの編集</h5>
|
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
|
||||||
以下を編集してテンプレートを変更できます。<br>
|
class="fa fa-spotify left"></i>接続</a>
|
||||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
<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>切断</a>
|
||||||
|
<h5>テンプレートの編集</h5>
|
||||||
|
以下を編集してテンプレートを変更できます。<br>
|
||||||
|
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||||
{url}</textarea><br>
|
{url}</textarea><br>
|
||||||
Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL<br>
|
Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL<br>
|
||||||
macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}<br>
|
macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}<br>
|
||||||
Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名<br>
|
Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名<br>
|
||||||
<span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br>
|
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||||
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
|
<h5>アルバムアートワークを添付する(Spotify/Windows)</h5>
|
||||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button>
|
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||||
<h5>アルバムアートワークを添付する(Spotify/Windows)</h5>
|
<label for="awk_yes">はい</label>
|
||||||
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
|
<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_yes" value="yes" />
|
<label for="awk_no">いいえ</label>
|
||||||
<label for="awk_yes">はい</label>
|
<br>
|
||||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
</div>
|
||||||
<label for="awk_no">いいえ</label>
|
</li>
|
||||||
<br>
|
<li>
|
||||||
</div>
|
<div class="collapsible-header">
|
||||||
</li>
|
<i class="material-icons">hearing</i>読み上げの設定
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-body">
|
||||||
<i class="material-icons">hearing</i>読み上げの設定
|
<h5>読み上げの速さ</h5>
|
||||||
</div>
|
1-100まで、デフォルトは10。<br>
|
||||||
<div class="collapsible-body">
|
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||||
<h5>読み上げの速さ</h5>
|
style="width:500px; max-width:100%" /></p>
|
||||||
1-100まで、デフォルトは10。<br>
|
<h5>読み上げの高さ</h5>
|
||||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
0-100まで、デフォルトは50。(大きくなるほど高い)<br>
|
||||||
<h5>読み上げの高さ</h5>
|
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||||
0-100まで、デフォルトは50。(大きくなるほど高い)<br>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
<h5>読み上げの音量</h5>
|
||||||
<h5>読み上げの音量</h5>
|
0-100まで、デフォルトは100。<br>
|
||||||
0-100まで、デフォルトは100。<br>
|
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<h5>テスト</h5>
|
<h5>テスト</h5>
|
||||||
<input type="text" style="width:350px" id="voicetxt" value="これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。">
|
<input type="text" style="width:350px" id="voicetxt" value="これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。">
|
||||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">再生/停止</button><br>
|
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||||
<br>
|
id="testplay">再生/停止</button><br>
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button>
|
<br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button>
|
||||||
</li>
|
</div>
|
||||||
</ul>
|
</li>
|
||||||
<br>
|
</ul>
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a>
|
|
||||||
<br>
|
|
||||||
<br>キーボードショートカット一覧
|
|
||||||
<li>Ctrl+1-9:1番目~9番目のTLにスクロール</li>
|
|
||||||
<li>N:投稿パネルを開く</li>
|
|
||||||
<li>X:投稿パネルを開閉</li>
|
|
||||||
<li>Ctrl+Enter:投稿</li>
|
|
||||||
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
|
|
||||||
<li>Alt+Enter:セカンダリートゥートボタン</li>
|
|
||||||
<li>Ctrl+E:全ての通知を既読にする</li>
|
|
||||||
<li>Esc:投稿パネルを消す</li>
|
|
||||||
<li>F5:スーパーリロード</li>
|
|
||||||
<li>Ctrl+Shift+C:入力内容を消す</li>
|
|
||||||
<li>Ctrl+Shift+S:設定</li>
|
|
||||||
<li>Ctrl+Shift+M:アカウントマネージャ</li>
|
|
||||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
|
||||||
<li>Ctrl+Shift+P:現在選択中のプロフィール</li>
|
|
||||||
<li>←/→:イメージビューワー起動時に画像切り替え</li>
|
|
||||||
<li>マウスホイール:イメージビューワー時に拡大縮小</li>
|
|
||||||
<div class="hide kirishima">
|
|
||||||
以下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>
|
|
||||||
</div>
|
|
||||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>初期化</button><br><br>
|
|
||||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>このソフトについて</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>公式HP</a>
|
|
||||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Enty)</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>ヘルプ/Docs(Constructing)</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>
|
|
||||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" 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@kirishima.cloud</a>
|
|
||||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">寿司を投げる</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">アップデートを確認</a><br>
|
|
||||||
<a href="oss.html">OSS License(オープンソースライセンス)</a><br>
|
|
||||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
|
||||||
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@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
|
||||||
<br>
|
<br>
|
||||||
</span><br>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
class="material-icons left">undo</i>戻る</a>
|
||||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
<br>
|
||||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
<br>キーボードショートカット一覧
|
||||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
<li>Ctrl+1-9:1番目~9番目のTLにスクロール</li>
|
||||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
<li>N:投稿パネルを開く</li>
|
||||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
<li>X:投稿パネルを開閉</li>
|
||||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
<li>Ctrl+Enter:投稿</li>
|
||||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
|
||||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
<li>Alt+Enter:セカンダリートゥートボタン</li>
|
||||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
<li>Ctrl+E:全ての通知を既読にする</li>
|
||||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
<li>Esc:投稿パネルを消す</li>
|
||||||
|
<li>F5:スーパーリロード</li>
|
||||||
|
<li>Ctrl+Shift+C:入力内容を消す</li>
|
||||||
|
<li>Ctrl+Shift+S:設定</li>
|
||||||
|
<li>Ctrl+Shift+M:アカウントマネージャ</li>
|
||||||
|
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||||
|
<li>Ctrl+Shift+P:現在選択中のプロフィール</li>
|
||||||
|
<li>←/→:イメージビューワー起動時に画像切り替え</li>
|
||||||
|
<li>マウスホイール:イメージビューワー時に拡大縮小</li>
|
||||||
|
<div class="hide kirishima">
|
||||||
|
以下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>
|
||||||
|
</div>
|
||||||
|
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||||
|
onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||||
|
class="material-icons left">delete</i>初期化</button><br><br>
|
||||||
|
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||||
|
class="material-icons left">info</i>このソフトについて</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>公式HP</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://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
|
||||||
|
class="material-icons left">list</i>ヘルプ/Docs(Constructing)</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>
|
||||||
|
<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">アップデートを確認</a><br>
|
||||||
|
<a href="oss.html">OSS License(オープンソースライセンス)</a><br>
|
||||||
|
<span style="font-family:Open Sans;">Copyright © 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/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>
|
||||||
@@ -7,6 +7,27 @@ var yesno=[
|
|||||||
value:"no"
|
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=[
|
var envConstruction=[
|
||||||
{
|
{
|
||||||
id:"popup",
|
id:"popup",
|
||||||
@@ -263,7 +284,7 @@ var tlConstruction=[
|
|||||||
setValue:200,
|
setValue:200,
|
||||||
text:{
|
text:{
|
||||||
head:"画像の高さ",
|
head:"画像の高さ",
|
||||||
desc:"",
|
desc:'オプション:「full」と指定すると全ての画像をクロップしません。',
|
||||||
after:"px"
|
after:"px"
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
@@ -286,6 +307,46 @@ var tlConstruction=[
|
|||||||
desc:"",
|
desc:"",
|
||||||
checkbox:yesno
|
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=[
|
var postConstruction=[
|
||||||
@@ -476,5 +537,16 @@ var postConstruction=[
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
id:"zero",
|
||||||
|
storage:"emoji-zero-width",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"normal",
|
||||||
|
setValue:"no",
|
||||||
|
text:{
|
||||||
|
head:"絵文字にゼロ幅スペースを使う",
|
||||||
|
desc:"",
|
||||||
|
checkbox:yesno
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="ja">
|
||||||
<head>
|
<head>
|
||||||
<title>Update - TheDesk</title>
|
<title>Update - TheDesk</title>
|
||||||
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
|
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
|
||||||
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
|||||||
#prog{
|
#prog{
|
||||||
font-size:200%;
|
font-size:200%;
|
||||||
}
|
}
|
||||||
.linux, .mac{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
|||||||
<p>アップデートがあります</p>
|
<p>アップデートがあります</p>
|
||||||
<span id="now"></span>→<b id="ver"></b><br>
|
<span id="now"></span>→<b id="ver"></b><br>
|
||||||
<span id="det"></span><br>
|
<span id="det"></span><br>
|
||||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button>
|
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button>
|
||||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button>
|
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button>
|
||||||
<span class="linux">snap版はSnapcraft等よりDLしてください。<br></span>
|
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">開始</button>
|
||||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">開始</button>
|
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">開始</button>
|
||||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">開始</button>
|
|
||||||
<br>
|
<br>
|
||||||
問題が発生しますか?<br><a href="https://thedesk.top">公式HP</a>からダウンロードをお試しください。
|
問題が発生しますか?<br><a href="https://thedesk.top">公式HP</a>からダウンロードをお試しください。
|
||||||
</div>
|
</div>
|
||||||
@@ -184,12 +180,12 @@ function verck(){
|
|||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
var platform=remote.process.platform;
|
var platform=remote.process.platform;
|
||||||
var bit=process.arch;
|
var bit=process.arch;
|
||||||
if(platform=="linux"){
|
if(platform=="win32"){
|
||||||
$('.windows').hide()
|
$('.windows').removeClass("hide")
|
||||||
$('.linux').show()
|
}else if(platform=="linux"){
|
||||||
}else if(platform=="mac"){
|
$('.linux').removeClass("hide")
|
||||||
$('.windows').hide()
|
}else if(platform=="darwin"){
|
||||||
$('.mac').show()
|
$('.mac').removeClass("hide")
|
||||||
}
|
}
|
||||||
var start="https://thedesk.top/ver.json";
|
var start="https://thedesk.top/ver.json";
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
@@ -201,10 +197,24 @@ function verck(){
|
|||||||
todo(error);
|
todo(error);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
console.log(json);
|
console.log(json);
|
||||||
$("#ver").text(json.desk);
|
if(platform=="win32"){
|
||||||
localStorage.setItem("next-ver",json.desk);
|
$("#ver").text(json.desk);
|
||||||
$("#det").html(json.detail);
|
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="ja";
|
||||||
|
if(lang=="ja"){
|
||||||
|
$("#det").html(json.detail);
|
||||||
|
}else{
|
||||||
|
$("#det").html(json.detail_en);
|
||||||
|
}
|
||||||
|
|
||||||
$("#now").text(localStorage.getItem("ver"));
|
$("#now").text(localStorage.getItem("ver"));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="{{lang}}">
|
<html lang="@@lang@@">
|
||||||
<head>
|
<head>
|
||||||
<title>Account Manager - TheDesk</title>
|
<title>Account Manager - TheDesk</title>
|
||||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||||
@@ -18,63 +18,76 @@ body,html{overflow-y: scroll;}
|
|||||||
.colorsel{ display:flex; }
|
.colorsel{ display:flex; }
|
||||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||||
.card .colorsel div.exc{width:40px;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>
|
</style>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
{{comment-start}}
|
@@comment-start@@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var _jipt = [];
|
var _jipt = [];
|
||||||
_jipt.push(['project', 'thedesk']);
|
_jipt.push(['project', 'thedesk']);
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
|
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
|
||||||
{{comment-end}}
|
@@comment-end@@
|
||||||
</head>
|
</head>
|
||||||
<body id="mainView">
|
<body id="mainView">
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
||||||
<script type="text/javascript" src="../../js/lang/lang.{{lang}}.js"></script>
|
<script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var misskeytoken=false;
|
var misskeytoken=false;
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="../../js/ui/tips.js"></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/time.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">{{back}}</a><br>
|
<div class="hide-first">
|
||||||
<h5>{{list}}</h5>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">@@back@@</a><br>
|
||||||
<div id="acct-list"></div>
|
<h5>@@list@@</h5>
|
||||||
<div class="divider"></div>
|
<div id="acct-list"></div>
|
||||||
<h5>{{add}}</h5><br>
|
<div class="divider"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h5>@@add@@</h5><br>
|
||||||
<div id="add">
|
<div id="add">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s6">
|
<div class="col s8">
|
||||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||||
<div id="ins-suggest"></div>
|
<div id="ins-suggest"></div>
|
||||||
{{codesetupwarn}}<br>
|
@@codesetupwarn@@<br>
|
||||||
<input type="checkbox" class="filled-in" id="linux" />
|
<input type="checkbox" class="filled-in" id="linux" />
|
||||||
<label for="linux">{{codesetup}}</label><br>
|
<label for="linux">@@codesetup@@</label><br>
|
||||||
<input type="checkbox" class="filled-in" id="misskey" />
|
<input type="checkbox" class="filled-in" id="misskey" />
|
||||||
<label for="misskey">{{thisismisskey}}</label><br>
|
<label for="misskey">@@thisismisskey@@</label><br>
|
||||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s6">
|
<div class="col s4">
|
||||||
<span style="font-family:Open Sans;">Supports</span>
|
<span style="font-family:Open Sans;">Supports</span>
|
||||||
<div id="support" class="collection transparent"></div>
|
<div id="support" class="collection transparent"></div>
|
||||||
</div>
|
</div>
|
||||||
</div></div>
|
</div></div>
|
||||||
<div id="auth" style="display:none">
|
<div id="auth" style="display:none">
|
||||||
{{codepastewarn}}<br>
|
@@codepastewarn@@<br>
|
||||||
<input type="text" id="code" placeholder="{{codepaste}}">
|
<input type="text" id="code" placeholder="@@codepaste@@">
|
||||||
<button class="btn waves-effect" onclick="code()">Auth</button><br>
|
<button class="btn waves-effect" onclick="code()">Auth</button><br>
|
||||||
</div>
|
</div>
|
||||||
<div id="misskeylogin" style="display:none">
|
<div id="misskeylogin" style="display:none">
|
||||||
<h5>AppSecret</h5>
|
<h5>AppSecret</h5>
|
||||||
{{misskeylogin}}<br>
|
@@misskeylogin@@<br>
|
||||||
<input type="hidden" id="misskey-url">
|
<input type="hidden" id="misskey-url">
|
||||||
<input type="text" id="misskey-key" placeholder="{{codepaste}}">
|
<input type="text" id="misskey-key" placeholder="@@codepaste@@">
|
||||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||||
</div>
|
</div>
|
||||||
<h5>{{mainacct}}</h5>
|
</div>
|
||||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">{{selacct}}</span>
|
<div class="hide-first">
|
||||||
|
<h5>@@mainacct@@</h5>
|
||||||
|
<div class="input-field" style="width:300px"><span data-trans="your_acct">@@selacct@@</span>
|
||||||
<br>
|
<br>
|
||||||
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
|
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
|
||||||
<label></label>
|
<label></label>
|
||||||
@@ -85,12 +98,13 @@ Administered by:<a id="ins-admin"></a><br>
|
|||||||
<span id="ins-desc"></span><br>
|
<span id="ins-desc"></span><br>
|
||||||
<img src="../../img/loading.svg" id="ins-prof" width="200"><br>
|
<img src="../../img/loading.svg" id="ins-prof" width="200"><br>
|
||||||
<br>
|
<br>
|
||||||
{{domain}}:<span id="ins-name"></span><br>
|
@@domain@@:<span id="ins-name"></span><br>
|
||||||
{{connect}}:<span id="ins-connect"></span>{{ko}}<br>
|
@@connect@@:<span id="ins-connect"></span>@@ko@@<br>
|
||||||
{{toots}}:<span id="ins-toot"></span>{{ko}}<br>
|
@@toots@@:<span id="ins-toot"></span>@@ko@@<br>
|
||||||
{{users}}:<span id="ins-user"></span>{{users}}<br>
|
@@users@@:<span id="ins-user"></span>@@users@@<br>
|
||||||
{{safety}}:<span id="ins-per"></span>%<br>
|
@@safety@@:<span id="ins-per"></span>%<br>
|
||||||
{{ver}}:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
|
@@ver@@:<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/ui/theme.js"></script>
|
||||||
<script type="text/javascript" src="../../js/platform/end.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/common/sha256.js"></script>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
|||||||
"list":"List of accounts",
|
"list":"List of accounts",
|
||||||
"back":"Back",
|
"back":"Back",
|
||||||
"add":"Add an account",
|
"add":"Add an account",
|
||||||
"codesetupwarn":"Check if TheDesk is not working on Windows, you want to login Pleroma servers, you cannot login when it checked.",
|
"codesetupwarn":"Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)",
|
||||||
"codesetup":"Code setup",
|
"codesetup":"Code setup",
|
||||||
"mainacct":"Main an account",
|
"mainacct":"Main an account",
|
||||||
"selacct":"Select an account",
|
"selacct":"Select an account",
|
||||||
@@ -17,5 +17,6 @@
|
|||||||
"ver":"Mastodon version",
|
"ver":"Mastodon version",
|
||||||
"ko":"",
|
"ko":"",
|
||||||
"thisismisskey":"Login as Misskey",
|
"thisismisskey":"Login as Misskey",
|
||||||
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey."
|
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||||
|
"nodata":"No data"
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"list":"アカウント一覧",
|
"list":"アカウント一覧",
|
||||||
"back":"戻る",
|
"back":"戻る",
|
||||||
"add":"アカウントを追加",
|
"add":"アカウントを追加",
|
||||||
"codesetupwarn":"Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。ログインできない場合、チェックを外してください。",
|
"codesetupwarn":"チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。",
|
||||||
"codesetup":"コードセットアップ",
|
"codesetup":"コードセットアップ",
|
||||||
"mainacct":"メインアカウント",
|
"mainacct":"メインアカウント",
|
||||||
"selacct":"アカウントを選択",
|
"selacct":"アカウントを選択",
|
||||||
@@ -17,5 +17,6 @@
|
|||||||
"ver":"Mastodonバージョン",
|
"ver":"Mastodonバージョン",
|
||||||
"ko":"個",
|
"ko":"個",
|
||||||
"thisismisskey":"Misskeyとしてログイン",
|
"thisismisskey":"Misskeyとしてログイン",
|
||||||
"misskeylogin":"<a href=\"https://thedesk.top/how-to-misskey-login.html\">ドキュメント</a>を参照して正しいコードを入れてください。"
|
"misskeylogin":"<a href=\"https://thedesk.top/how-to-misskey-login.html\">ドキュメント</a>を参照して正しいコードを入れてください。",
|
||||||
|
"nodata":"アカウントがありません"
|
||||||
}
|
}
|
||||||
@@ -56,6 +56,9 @@
|
|||||||
"contextAfter":"Context after this toot",
|
"contextAfter":"Context after this toot",
|
||||||
"beforeLTL":"Local TL before this toot",
|
"beforeLTL":"Local TL before this toot",
|
||||||
"beforeUTL":"User TL before this toot",
|
"beforeUTL":"User TL before this toot",
|
||||||
|
"afterLTL":"Local TL after this toot)",
|
||||||
|
"afterUTL":"User TL before this toot",
|
||||||
|
"afterFTL":"Federated TL after this toot",
|
||||||
"favedPeople":"People who favourited it",
|
"favedPeople":"People who favourited it",
|
||||||
"btedPeople":"People who boosted it",
|
"btedPeople":"People who boosted it",
|
||||||
"useOtherAcct1":"Use other account",
|
"useOtherAcct1":"Use other account",
|
||||||
@@ -98,6 +101,7 @@
|
|||||||
"note":"Note",
|
"note":"Note",
|
||||||
"editProfImg":"Change avataor",
|
"editProfImg":"Change avataor",
|
||||||
"editHeader":"Change header image",
|
"editHeader":"Change header image",
|
||||||
|
"blocked":"You are blocked. Why?",
|
||||||
"likeUserDes":"Get people resembling this user.",
|
"likeUserDes":"Get people resembling this user.",
|
||||||
"get":"Get",
|
"get":"Get",
|
||||||
"historyBack":"Back",
|
"historyBack":"Back",
|
||||||
@@ -105,6 +109,7 @@
|
|||||||
"supportme":"Support TheDesk!",
|
"supportme":"Support TheDesk!",
|
||||||
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
|
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
|
||||||
"EntySupport":"Support on Enty",
|
"EntySupport":"Support on Enty",
|
||||||
|
"PixivSupport":"Support on Pixiv FANBOX",
|
||||||
"AWLSupport":"Amazon Wish List",
|
"AWLSupport":"Amazon Wish List",
|
||||||
"SendAmazonGift1":"Give me Amazon Gift Card:",
|
"SendAmazonGift1":"Give me Amazon Gift Card:",
|
||||||
"SendAmazonGift2":"",
|
"SendAmazonGift2":"",
|
||||||
@@ -136,12 +141,13 @@
|
|||||||
"avalableBefore":"Expire after",
|
"avalableBefore":"Expire after",
|
||||||
"warnAvBefore":"Unset or \"0\" means \"Never\"",
|
"warnAvBefore":"Unset or \"0\" means \"Never\"",
|
||||||
"warnAvBefore2":"This value may contain some error",
|
"warnAvBefore2":"This value may contain some error",
|
||||||
"days":"days",
|
"unlimited":"Never",
|
||||||
"hours":"hours",
|
"days":"day(s)",
|
||||||
"mins":"minutes",
|
"hours":"hour(s)",
|
||||||
"secs":"seconds",
|
"mins":"minute(s)",
|
||||||
|
"secs":"second(s)",
|
||||||
"warnOnIntegratedTL":"Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
|
"warnOnIntegratedTL":"Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
|
||||||
"helloTheDesk":"<h3>Welcome to TheDesk</h3><br><a href=\"acct.html\">Add an account</a> or click <i class=\"material-icons\">apps</i> to add a column.",
|
"helloTheDesk":"Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
|
||||||
"addColumn":"Add a column",
|
"addColumn":"Add a column",
|
||||||
"sortColumns":"Sort",
|
"sortColumns":"Sort",
|
||||||
"acctMan":"Account Manager",
|
"acctMan":"Account Manager",
|
||||||
@@ -155,5 +161,6 @@
|
|||||||
"ramTips":"RAM status",
|
"ramTips":"RAM status",
|
||||||
"changeTips":"Change Tips",
|
"changeTips":"Change Tips",
|
||||||
"help":"Help",
|
"help":"Help",
|
||||||
"about":"About TheDesk"
|
"about":"About TheDesk",
|
||||||
|
"hereAddColumns":"<- Add TL"
|
||||||
}
|
}
|
||||||
@@ -56,6 +56,9 @@
|
|||||||
"contextAfter":"これより後の会話",
|
"contextAfter":"これより後の会話",
|
||||||
"beforeLTL":"これより前のLocal TL(エアリプソース確認)",
|
"beforeLTL":"これより前のLocal TL(エアリプソース確認)",
|
||||||
"beforeUTL":"これより前のユーザーTL(BTソース確認)",
|
"beforeUTL":"これより前のユーザーTL(BTソース確認)",
|
||||||
|
"afterLTL":"これより後のLocal TL(言及確認)",
|
||||||
|
"afterUTL":"これより後のユーザーTL(言及確認)",
|
||||||
|
"afterFTL":"これより後の連合TL(言及確認)",
|
||||||
"favedPeople":"このトゥートをお気に入りに登録した人",
|
"favedPeople":"このトゥートをお気に入りに登録した人",
|
||||||
"btedPeople":"このトゥートをブーストした人",
|
"btedPeople":"このトゥートをブーストした人",
|
||||||
"useOtherAcct1":"他のアカウントを使用",
|
"useOtherAcct1":"他のアカウントを使用",
|
||||||
@@ -98,6 +101,7 @@
|
|||||||
"note":"自己紹介",
|
"note":"自己紹介",
|
||||||
"editProfImg":"アバターを変更",
|
"editProfImg":"アバターを変更",
|
||||||
"editHeader":"ヘッダーを変更",
|
"editHeader":"ヘッダーを変更",
|
||||||
|
"blocked":"ブロックされています。なぜでしょう?",
|
||||||
"likeUserDes":"似ているユーザーを取得できます。",
|
"likeUserDes":"似ているユーザーを取得できます。",
|
||||||
"get":"取得",
|
"get":"取得",
|
||||||
"historyBack":"一つ前のユーザーデータ",
|
"historyBack":"一つ前のユーザーデータ",
|
||||||
@@ -105,6 +109,7 @@
|
|||||||
"supportme":"ご支援ください。",
|
"supportme":"ご支援ください。",
|
||||||
"TheDeskDes":"TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。",
|
"TheDeskDes":"TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。",
|
||||||
"EntySupport":"Entyで支援",
|
"EntySupport":"Entyで支援",
|
||||||
|
"PixivSupport":"Pixiv FANBOXで支援",
|
||||||
"AWLSupport":"Amazonほしいものリスト",
|
"AWLSupport":"Amazonほしいものリスト",
|
||||||
"SendAmazonGift1":"",
|
"SendAmazonGift1":"",
|
||||||
"SendAmazonGift2":"にAmazonギフトカードを送る",
|
"SendAmazonGift2":"にAmazonギフトカードを送る",
|
||||||
@@ -134,14 +139,15 @@
|
|||||||
"except":"除外",
|
"except":"除外",
|
||||||
"exceptWorn":"「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。",
|
"exceptWorn":"「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。",
|
||||||
"avalableBefore":"有効期限(あと)",
|
"avalableBefore":"有効期限(あと)",
|
||||||
"warnAvBefore":"未指定(または0分)で「無制限」になります。",
|
"warnAvBefore":"未指定(または0分)で「無期限」になります。",
|
||||||
"warnAvBefore2":"仕様上数値の正確性を保証できません。",
|
"warnAvBefore2":"仕様上数値の正確性を保証できません。",
|
||||||
|
"unlimited":"無期限",
|
||||||
"days":"日",
|
"days":"日",
|
||||||
"hours":"時間",
|
"hours":"時間",
|
||||||
"mins":"分",
|
"mins":"分",
|
||||||
"secs":"秒",
|
"secs":"秒",
|
||||||
"warnOnIntegratedTL":"Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。",
|
"warnOnIntegratedTL":"Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。",
|
||||||
"helloTheDesk":"<h3>Welcome to TheDesk</h3><br><a href=\"acct.html\">アカウントを追加</a>するか下の<i class=\"material-icons\">apps</i>ボタンよりカラムを追加してください。",
|
"helloTheDesk":"内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)",
|
||||||
"addColumn":"カラム追加",
|
"addColumn":"カラム追加",
|
||||||
"sortColumns":"カラム一覧/並べ替え",
|
"sortColumns":"カラム一覧/並べ替え",
|
||||||
"acctMan":"アカウントマネージャー",
|
"acctMan":"アカウントマネージャー",
|
||||||
@@ -155,5 +161,6 @@
|
|||||||
"ramTips":"システムメモリ容量",
|
"ramTips":"システムメモリ容量",
|
||||||
"changeTips":"Tips変更",
|
"changeTips":"Tips変更",
|
||||||
"help":"ヘルプ",
|
"help":"ヘルプ",
|
||||||
"about":"このソフトについて"
|
"about":"このソフトについて",
|
||||||
|
"hereAddColumns":"←ここからTL追加"
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
"set":"Save",
|
"set":"Save",
|
||||||
"yes":"Yes",
|
"yes":"Yes",
|
||||||
"no":"No",
|
"no":"No",
|
||||||
|
"none":"None",
|
||||||
|
"default":"Default",
|
||||||
"change":"Change",
|
"change":"Change",
|
||||||
"select":"Select",
|
"select":"Select",
|
||||||
"env":"System Preferences",
|
"env":"System Preferences",
|
||||||
@@ -25,7 +27,7 @@
|
|||||||
"fixwidthwarn":"",
|
"fixwidthwarn":"",
|
||||||
"above":"above",
|
"above":"above",
|
||||||
"font":"Font",
|
"font":"Font",
|
||||||
"fontwarn":"Select your favorite font to 'Select'",
|
"fontwarn":"Select your favorite font to 'Select'(Windows/ macOS only)",
|
||||||
"fontsize":"Font size",
|
"fontsize":"Font size",
|
||||||
"savefolder":"Folder to save",
|
"savefolder":"Folder to save",
|
||||||
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
|
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
|
||||||
@@ -81,9 +83,15 @@
|
|||||||
"letters":"letters",
|
"letters":"letters",
|
||||||
"or":"or",
|
"or":"or",
|
||||||
"imgheight":"Height of images",
|
"imgheight":"Height of images",
|
||||||
|
"imgheightwarn":"Option:Set \"full\" to uncrop.",
|
||||||
"ticker":"Enable #InstanceTicker",
|
"ticker":"Enable #InstanceTicker",
|
||||||
"tickerwarn":"Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
|
"tickerwarn":"Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
|
||||||
"animation":"Animation of timelines",
|
"animation":"Animation of timelines",
|
||||||
|
"replySound":"Sound(Reply)",
|
||||||
|
"favSound":"Sound(Fav)",
|
||||||
|
"btSound":"Sound(Boost)",
|
||||||
|
"followSound":"Sound(Follow)",
|
||||||
|
"customSound":"Custom sound",
|
||||||
"post":"Posting Preferences",
|
"post":"Posting Preferences",
|
||||||
"autocw":"Alert before posting a long toot.",
|
"autocw":"Alert before posting a long toot.",
|
||||||
"autocwwarn":"Show dialog whether you make too-long text hidden.",
|
"autocwwarn":"Show dialog whether you make too-long text hidden.",
|
||||||
@@ -113,6 +121,7 @@
|
|||||||
"secwarn":"Toot with other visibility setting",
|
"secwarn":"Toot with other visibility setting",
|
||||||
"nothing":"Hidden",
|
"nothing":"Hidden",
|
||||||
"localonly":"Local Only",
|
"localonly":"Local Only",
|
||||||
|
"zeroWidthEmoji":"Zero-width space when inserting emojis",
|
||||||
"keysc":"Keyboard shortcut Preferences",
|
"keysc":"Keyboard shortcut Preferences",
|
||||||
"iks":"Easy inserter",
|
"iks":"Easy inserter",
|
||||||
"okswarn":"You can insert any letters and emojis with only 3 keys",
|
"okswarn":"You can insert any letters and emojis with only 3 keys",
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
"set":"設定",
|
"set":"設定",
|
||||||
"yes":"はい",
|
"yes":"はい",
|
||||||
"no":"いいえ",
|
"no":"いいえ",
|
||||||
|
"none":"なし",
|
||||||
|
"default":"既定",
|
||||||
"change":"変更",
|
"change":"変更",
|
||||||
"select":"選択",
|
"select":"選択",
|
||||||
"env":"環境設定",
|
"env":"環境設定",
|
||||||
@@ -25,7 +27,7 @@
|
|||||||
"fixwidthwarn":"",
|
"fixwidthwarn":"",
|
||||||
"above":"以上",
|
"above":"以上",
|
||||||
"font":"フォント",
|
"font":"フォント",
|
||||||
"fontwarn":"「選択」を押してフォントを選んでください。",
|
"fontwarn":"「選択」を押してフォントを選んでください。(Linuxでは動きません)",
|
||||||
"fontsize":"フォントサイズ",
|
"fontsize":"フォントサイズ",
|
||||||
"savefolder":"デフォルトの保存先",
|
"savefolder":"デフォルトの保存先",
|
||||||
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
|
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
|
||||||
@@ -81,9 +83,15 @@
|
|||||||
"letters":"文字",
|
"letters":"文字",
|
||||||
"or":"または",
|
"or":"または",
|
||||||
"imgheight":"画像の高さ",
|
"imgheight":"画像の高さ",
|
||||||
|
"imgheightwarn":"オプション:「full」と指定すると全ての画像をクロップしません。",
|
||||||
"ticker":"#InstanceTickerを使う",
|
"ticker":"#InstanceTickerを使う",
|
||||||
"tickerwarn":"トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
|
"tickerwarn":"トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
|
||||||
"animation":"タイムラインのアニメーション",
|
"animation":"タイムラインのアニメーション",
|
||||||
|
"replySound":"リプライの通知音",
|
||||||
|
"favSound":"お気に入り登録の通知音",
|
||||||
|
"btSound":"ブーストの通知音",
|
||||||
|
"followSound":"フォローの通知音",
|
||||||
|
"customSound":"カスタム通知音",
|
||||||
"post":"投稿設定",
|
"post":"投稿設定",
|
||||||
"autocw":"長文投稿時に警告",
|
"autocw":"長文投稿時に警告",
|
||||||
"autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
|
"autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
|
||||||
@@ -113,6 +121,7 @@
|
|||||||
"secwarn":"公開範囲の変更とトゥートを一発でできます。",
|
"secwarn":"公開範囲の変更とトゥートを一発でできます。",
|
||||||
"nothing":"表示しない",
|
"nothing":"表示しない",
|
||||||
"localonly":"ローカル限定",
|
"localonly":"ローカル限定",
|
||||||
|
"zeroWidthEmoji":"絵文字にゼロ幅スペースを使う",
|
||||||
"keysc":"キーボードショートカットの設定",
|
"keysc":"キーボードショートカットの設定",
|
||||||
"iks":"簡単文字入力",
|
"iks":"簡単文字入力",
|
||||||
"okswarn":"絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。",
|
"okswarn":"絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。",
|
||||||
|
|||||||
37
app/view/make/make.js
Normal file
37
app/view/make/make.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
const fs = require("fs")
|
||||||
|
const ver="Usamin (18.4.0)"
|
||||||
|
const langs=["ja","en","ps"]
|
||||||
|
const langsh=["日本語","English","Crowdin translate system(beta)"]
|
||||||
|
const simples=["acct","index","setting","update","setting"]
|
||||||
|
const samples=["acct.sample.html","index.sample.html","setting.sample.html","update.sample.html","setting.sample.js"]
|
||||||
|
const pages=["acct.html","index.html","setting.html","update.html","setting.vue.js"]
|
||||||
|
let langstr=""
|
||||||
|
for(let n=0; n<langs.length; n++){
|
||||||
|
let lang=langs[n]
|
||||||
|
langstr=langstr+'<a onclick="changelang(\''+lang+'\')" class="pointer" style="margin-right:5px;">'+langsh[n]+'</a>'
|
||||||
|
}
|
||||||
|
for(let i=0; i<samples.length; i++){
|
||||||
|
let sample=samples[i]
|
||||||
|
let sourceParent = fs.readFileSync(sample, 'utf8')
|
||||||
|
for(let j=0; j<langs.length; j++){
|
||||||
|
let source=sourceParent
|
||||||
|
let lang=langs[j]
|
||||||
|
let target = JSON.parse(fs.readFileSync("language/"+simples[i]+"."+lang+".json", 'utf8'))
|
||||||
|
Object.keys(target).forEach(function(key) {
|
||||||
|
let str = target[key]
|
||||||
|
var regExp = new RegExp("@@" + key + "@@", "g")
|
||||||
|
source = source.replace(regExp, str)
|
||||||
|
})
|
||||||
|
if(lang=="ps"){
|
||||||
|
source = source.replace(/@@comment-start@@/g, "")
|
||||||
|
source = source.replace(/@@comment-end@@/g, "")
|
||||||
|
}else{
|
||||||
|
source = source.replace(/@@comment-start@@/g, "<!--")
|
||||||
|
source = source.replace(/@@comment-end@@/g, "-->")
|
||||||
|
}
|
||||||
|
source = source.replace(/@@versionLetter@@/g, ver)
|
||||||
|
source = source.replace(/@@lang@@/g, lang)
|
||||||
|
source = source.replace(/@@langlist@@/g, langstr)
|
||||||
|
fs.writeFileSync("../"+lang+"/"+pages[i], source)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="@@lang@@">
|
<html lang="@@lang@@" style="overflow:scroll">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Settings - TheDesk</title>
|
<title>Settings - TheDesk</title>
|
||||||
@@comment-start@@
|
@@comment-start@@
|
||||||
@@ -17,362 +18,426 @@
|
|||||||
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
|
<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="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
<style>
|
||||||
|
input {
|
||||||
|
max-height: 50px !important
|
||||||
|
}
|
||||||
|
.pcr-result {
|
||||||
|
height: 1rem !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="mainView" style="overflow-y:scroll">
|
<body id="mainView" style="overflow-y:scroll">
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
||||||
<script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
|
<script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
|
||||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.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 src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||||
<script type="text/javascript" src="setting.vue.js"></script>
|
<script type="text/javascript" src="setting.vue.js"></script>
|
||||||
|
|
||||||
<h4>@@setting@@</h4>
|
<h4>@@setting@@</h4>
|
||||||
<ul class="collapsible" data-collapsible="accordion">
|
<ul class="collapsible" data-collapsible="accordion">
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">desktop_windows</i>@@env@@
|
<i class="material-icons">desktop_windows</i>@@env@@
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>@@setlang@@</h5>
|
<h5>@@setlang@@</h5>
|
||||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||||
@@langlist@@
|
@@langlist@@
|
||||||
<h5>@@backup@@</h5>
|
<h5>@@backup@@</h5>
|
||||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">@@export@@</button>
|
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">@@import@@</button>
|
style="width:100%; max-width:200px;">@@export@@</button>
|
||||||
<div id="envView">
|
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||||
<template v-for="(item, i) in config">
|
style="width:100%; max-width:200px;">@@import@@</button>
|
||||||
<h5>{{item.text.head}}</h5>
|
<div id="envView">
|
||||||
<templete v-html=item.text.desc></templete><br>
|
<template v-for="(item, i) in config">
|
||||||
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">@@nntest@@</a><br></template>
|
<h5>{{item.text.head}}</h5>
|
||||||
<template v-if="item.checkbox">
|
<template v-if="item.text.desc">
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
<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" />
|
</template>
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||||
</template>
|
class="pointer">@@nntest@@</a><br></template>
|
||||||
</template>
|
<template v-if="item.checkbox">
|
||||||
<template v-else>
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
<template v-if="item.doubleText">
|
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||||
<template v-for="(textbox, j) in item.data">
|
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||||
<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)">@@change@@</button>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<h5>@@font@@</h5>
|
|
||||||
@@fontwarn@@<br>
|
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">@@select@@</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()">@@set@@</button>
|
|
||||||
<br>
|
|
||||||
<h5>@@savefolder@@</h5>
|
|
||||||
@@savefolderwarn@@<br>
|
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">@@change@@</button>
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="collapsible-header">
|
|
||||||
<i class="material-icons">color_lens</i>@@theme@@
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<h4>@@themeSel@@</h4>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
|
||||||
<label for="black">Black</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
|
||||||
<label for="white">White</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
|
||||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
|
||||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
|
||||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
|
||||||
<label for="custom">Custom</label>
|
|
||||||
<div style="width:300px" id="sel-selector">
|
|
||||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
|
||||||
</div>
|
|
||||||
<h4>@@customtheme@@</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>@@desc@@</h5>
|
|
||||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="@@desc@@..."></textarea></div>
|
|
||||||
<h5>@@customthemeDirection@@</h5>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
|
||||||
<label for="dark">Dark</label>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
|
||||||
<label for="light">Light</label>
|
|
||||||
<div id="pickers">
|
|
||||||
<div>
|
|
||||||
<h5>Primary</h5>@@secondarycolor@@
|
|
||||||
<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>@@primary@@
|
|
||||||
<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@@
|
|
||||||
<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>@@accent@@
|
|
||||||
<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()">@@change@@</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
|
||||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
|
||||||
@@customShare@@
|
|
||||||
<h4>@@customImport@@</h4>
|
|
||||||
@@cImpWarn@@<br>
|
|
||||||
<input type="text" style="width:300px" 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@@
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<div id="tlView">
|
|
||||||
<template v-for="(item, i) in config">
|
|
||||||
<h5>{{item.text.head}}</h5>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</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)">@@change@@</button>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="collapsible-header">
|
|
||||||
<i class="material-icons">send</i>@@post@@
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<div id="postView">
|
|
||||||
<template v-for="(item, i) in config">
|
|
||||||
<h5>{{item.text.head}}</h5>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
<template v-else>
|
||||||
<template v-else>
|
<template v-if="item.doubleText">
|
||||||
<template v-if="item.doubleText">
|
<template v-for="(textbox, j) in item.data">
|
||||||
<template v-for="(textbox, j) in item.data">
|
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||||
</template>
|
</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)">@@change@@</button>
|
||||||
|
</template><br>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
</div>
|
||||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
<h5>@@font@@</h5>
|
||||||
|
@@fontwarn@@<br>
|
||||||
|
<button class="btn waves-effect" style="width:100px;" onclick="font()">@@select@@</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()">@@set@@</button>
|
||||||
|
<br>
|
||||||
|
<h5>@@savefolder@@</h5>
|
||||||
|
@@savefolderwarn@@<br>
|
||||||
|
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">@@change@@</button>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
|
<i class="material-icons">color_lens</i>@@theme@@
|
||||||
|
</div>
|
||||||
|
<div class="collapsible-body">
|
||||||
|
<h4>@@themeSel@@</h4>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||||
|
<label for="black">Black</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||||
|
<label for="white">White</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||||
|
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||||
|
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||||
|
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||||
|
<label for="custom">Custom</label>
|
||||||
|
<div style="width:300px" id="sel-selector">
|
||||||
|
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||||
|
</div>
|
||||||
|
<h4>@@customtheme@@</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>@@desc@@</h5>
|
||||||
|
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||||
|
placeholder="@@desc@@..."></textarea></div>
|
||||||
|
<h5>@@customthemeDirection@@</h5>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
|
||||||
|
<label for="dark">Dark</label>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
|
||||||
|
<label for="light">Light</label>
|
||||||
|
<div id="pickers">
|
||||||
|
<div>
|
||||||
|
<h5>Primary</h5>@@secondarycolor@@
|
||||||
|
<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>@@primary@@
|
||||||
|
<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@@
|
||||||
|
<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>@@accent@@
|
||||||
|
<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()">@@change@@</button> <button
|
||||||
|
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||||
|
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||||
|
placeholder="JSON style" readonly><br>
|
||||||
|
@@customShare@@
|
||||||
|
<h4>@@customImport@@</h4>
|
||||||
|
@@cImpWarn@@<br>
|
||||||
|
<input type="text" style="width:300px" 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@@
|
||||||
|
</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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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)">@@change@@</button>
|
||||||
|
</template><br>
|
||||||
</template>
|
</template>
|
||||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
|
</div>
|
||||||
</template>
|
<h5>@@customSound@@</h5>
|
||||||
</template>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
|
||||||
</li>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
|
<i class="material-icons">send</i>@@post@@
|
||||||
|
</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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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)">@@change@@</button>
|
||||||
|
</template><br>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">keyboard</i>@@keysc@@
|
<i class="material-icons">keyboard</i>@@keysc@@
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>@@iks@@</h5>
|
<h5>@@iks@@</h5>
|
||||||
@@okswarn@@<br>
|
@@okswarn@@<br>
|
||||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">bookmark</i>@@muteemp@@
|
<i class="material-icons">bookmark</i>@@muteemp@@
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>@@climute@@</h5>
|
<h5>@@climute@@</h5>
|
||||||
<div id="mute-cli"></div>
|
<div id="mute-cli"></div>
|
||||||
<h5>@@cliemp@@</h5>
|
<h5>@@cliemp@@</h5>
|
||||||
@@cliwarn@@
|
@@cliwarn@@
|
||||||
<h5>@@wordmute@@</h5>
|
<h5>@@wordmute@@</h5>
|
||||||
@@enter@@<br>
|
@@enter@@<br>
|
||||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||||
<h5>@@wordemp@@</h5>
|
<h5>@@wordemp@@</h5>
|
||||||
@@enter@@<br>
|
@@enter@@<br>
|
||||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||||
<h5>@@useremp@@</h5>
|
<h5>@@useremp@@</h5>
|
||||||
@@useerempwarn@@
|
@@useerempwarn@@
|
||||||
<span class="emphasized"> @@empcolorwarn@@ </span>
|
<span class="emphasized"> @@empcolorwarn@@ </span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="fa fa-spotify"></i>@@spotify@@
|
<i class="fa fa-spotify"></i>@@spotify@@
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>@@npProvider@@</h5>
|
<h5>@@npProvider@@</h5>
|
||||||
@@npPeoviderWarn@@<br>
|
@@npPeoviderWarn@@<br>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||||
<label for="aimp">AIMP</label>
|
<label for="aimp">AIMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||||
<label for="itunes">iTunes</label>
|
<label for="itunes">iTunes</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||||
<label for="npmm">MediaMonkey</label>
|
<label for="npmm">MediaMonkey</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||||
<label for="winamp">Winamp</label>
|
<label for="winamp">Winamp</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||||
<label for="wmp">WMP</label>
|
<label for="wmp">WMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||||
<label for="wlm">WLM</label>
|
<label for="wlm">WLM</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||||
<label for="cad">CAD</label><br><br>
|
<label for="cad">CAD</label><br><br>
|
||||||
@@spotifynote1@@<i class="material-icons" style="font-size:24px;">music_note</i>@@spotifynote2@@<br>
|
@@spotifynote1@@<i class="material-icons" style="font-size:24px;">music_note</i>@@spotifynote2@@<br>
|
||||||
<h5>@@link@@</h5>
|
<h5>@@link@@</h5>
|
||||||
@@linkwarn@@<br>
|
@@linkwarn@@<br>
|
||||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</button></div>
|
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||||
<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>
|
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</button></div>
|
||||||
<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>
|
<a onclick="spotifyConnect()" class="btn waves-effect nex"
|
||||||
<h5>@@templeteedit@@</h5>
|
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
|
||||||
@@templeteeditwarn@@<br>
|
class="fa fa-spotify left"></i>@@connect@@</a>
|
||||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
<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>@@templeteedit@@</h5>
|
||||||
|
@@templeteeditwarn@@<br>
|
||||||
|
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||||
{url}</textarea><br>
|
{url}</textarea><br>
|
||||||
@@templete1@@<br>
|
@@templete1@@<br>
|
||||||
@@templete2@@<br>
|
@@templete2@@<br>
|
||||||
@@templete3@@<br>
|
@@templete3@@<br>
|
||||||
<span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br>
|
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||||
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
|
<h5>@@postartwork@@</h5>
|
||||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||||
<h5>@@postartwork@@</h5>
|
<label for="awk_yes">@@yes@@</label>
|
||||||
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
|
<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_yes" value="yes" />
|
<label for="awk_no">@@no@@</label>
|
||||||
<label for="awk_yes">@@yes@@</label>
|
<br>
|
||||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
</div>
|
||||||
<label for="awk_no">@@no@@</label>
|
</li>
|
||||||
<br>
|
<li>
|
||||||
</div>
|
<div class="collapsible-header">
|
||||||
</li>
|
<i class="material-icons">hearing</i>@@tts@@
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-body">
|
||||||
<i class="material-icons">hearing</i>@@tts@@
|
<h5>@@speed@@</h5>
|
||||||
</div>
|
@@speedwarn@@<br>
|
||||||
<div class="collapsible-body">
|
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||||
<h5>@@speed@@</h5>
|
style="width:500px; max-width:100%" /></p>
|
||||||
@@speedwarn@@<br>
|
<h5>@@pitch@@</h5>
|
||||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
@@pitchwarn@@<br>
|
||||||
<h5>@@pitch@@</h5>
|
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||||
@@pitchwarn@@<br>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
<h5>@@vol@@</h5>
|
||||||
<h5>@@vol@@</h5>
|
@@volwarn@@<br>
|
||||||
@@volwarn@@<br>
|
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<h5>@@test@@</h5>
|
<h5>@@test@@</h5>
|
||||||
<input type="text" style="width:350px" id="voicetxt" value="@@sample@@">
|
<input type="text" style="width:350px" id="voicetxt" value="@@sample@@">
|
||||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">@@playstop@@</button><br>
|
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||||
<br>
|
id="testplay">@@playstop@@</button><br>
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
|
<br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
|
||||||
</li>
|
</div>
|
||||||
</ul>
|
</li>
|
||||||
<br>
|
</ul>
|
||||||
<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>@@keyscs@@
|
|
||||||
<li>Ctrl+1-9:@@keyscr@@</li>
|
|
||||||
<li>N:@@keynew@@</li>
|
|
||||||
<li>X:@@keytoggle@@</li>
|
|
||||||
<li>Ctrl+Enter:@@keypost@@</li>
|
|
||||||
<li>Ctrl+Enter+Shift:@@keysecpost@@</li>
|
|
||||||
<li>Alt+Enter:@@secondary@@</li>
|
|
||||||
<li>Ctrl+E:@@keyunread@@</li>
|
|
||||||
<li>Esc:@@keyesc@@</li>
|
|
||||||
<li>F5:@@keyf5@@</li>
|
|
||||||
<li>Ctrl+Shift+C:@@keyclear@@</li>
|
|
||||||
<li>Ctrl+Shift+S:@@setting@@</li>
|
|
||||||
<li>Ctrl+Shift+M:@@keyacctman@@</li>
|
|
||||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
|
||||||
<li>Ctrl+Shift+P:@@keyshowprof@@</li>
|
|
||||||
<li>←/→:@@keyrow@@</li>
|
|
||||||
<li>@@keyzoom@@</li>
|
|
||||||
<div class="hide kirishima">
|
|
||||||
以下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>
|
|
||||||
</div>
|
|
||||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>@@reset@@</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@@</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>@@hp@@</a>
|
|
||||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Enty)</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>
|
|
||||||
<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>
|
|
||||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" 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@kirishima.cloud</a>
|
|
||||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">@@sushi@@</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">@@checkup@@</a><br>
|
|
||||||
<a href="oss.html">OSS License@@ossJP@@</a><br>
|
|
||||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
|
||||||
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@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
|
||||||
<br>
|
<br>
|
||||||
</span><br>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
class="material-icons left">undo</i>@@back@@</a>
|
||||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
<br>
|
||||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
<br>@@keyscs@@
|
||||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
<li>Ctrl+1-9:@@keyscr@@</li>
|
||||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
<li>N:@@keynew@@</li>
|
||||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
<li>X:@@keytoggle@@</li>
|
||||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
<li>Ctrl+Enter:@@keypost@@</li>
|
||||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
<li>Ctrl+Enter+Shift:@@keysecpost@@</li>
|
||||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
<li>Alt+Enter:@@secondary@@</li>
|
||||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
<li>Ctrl+E:@@keyunread@@</li>
|
||||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
<li>Esc:@@keyesc@@</li>
|
||||||
|
<li>F5:@@keyf5@@</li>
|
||||||
|
<li>Ctrl+Shift+C:@@keyclear@@</li>
|
||||||
|
<li>Ctrl+Shift+S:@@setting@@</li>
|
||||||
|
<li>Ctrl+Shift+M:@@keyacctman@@</li>
|
||||||
|
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||||
|
<li>Ctrl+Shift+P:@@keyshowprof@@</li>
|
||||||
|
<li>←/→:@@keyrow@@</li>
|
||||||
|
<li>@@keyzoom@@</li>
|
||||||
|
<div class="hide kirishima">
|
||||||
|
以下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>
|
||||||
|
</div>
|
||||||
|
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||||
|
onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||||
|
class="material-icons left">delete</i>@@reset@@</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@@</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>@@hp@@</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://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>
|
||||||
|
<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>
|
||||||
|
<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">@@checkup@@</a><br>
|
||||||
|
<a href="oss.html">OSS License@@ossJP@@</a><br>
|
||||||
|
<span style="font-family:Open Sans;">Copyright © 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/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>
|
||||||
@@ -7,6 +7,27 @@ var yesno=[
|
|||||||
value:"no"
|
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=[
|
var envConstruction=[
|
||||||
{
|
{
|
||||||
id:"popup",
|
id:"popup",
|
||||||
@@ -263,7 +284,7 @@ var tlConstruction=[
|
|||||||
setValue:200,
|
setValue:200,
|
||||||
text:{
|
text:{
|
||||||
head:"@@imgheight@@",
|
head:"@@imgheight@@",
|
||||||
desc:"",
|
desc:'@@imgheightwarn@@',
|
||||||
after:"px"
|
after:"px"
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
@@ -286,6 +307,46 @@ var tlConstruction=[
|
|||||||
desc:"",
|
desc:"",
|
||||||
checkbox:yesno
|
checkbox:yesno
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
id:"replySound",
|
||||||
|
storage:"replySound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@replySound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
id:"favSound",
|
||||||
|
storage:"favSound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@favSound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
id:"btSound",
|
||||||
|
storage:"btSound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@btSound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
id:"followSound",
|
||||||
|
storage:"followSound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@followSound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
var postConstruction=[
|
var postConstruction=[
|
||||||
@@ -476,5 +537,16 @@ var postConstruction=[
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
id:"zero",
|
||||||
|
storage:"emoji-zero-width",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"normal",
|
||||||
|
setValue:"no",
|
||||||
|
text:{
|
||||||
|
head:"@@zeroWidthEmoji@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:yesno
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="@@lang@@">
|
||||||
<head>
|
<head>
|
||||||
<title>Update - TheDesk</title>
|
<title>Update - TheDesk</title>
|
||||||
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
|
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
|
||||||
<link href="../../css/master.css" type="text/css" rel="stylesheet">
|
<link href="../../css/master.css" type="text/css" rel="stylesheet">
|
||||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
{{comment-start}}
|
@@comment-start@@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var _jipt = [];
|
var _jipt = [];
|
||||||
_jipt.push(['project', 'thedesk']);
|
_jipt.push(['project', 'thedesk']);
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
|
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
|
||||||
{{comment-end}}
|
@@comment-end@@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<style>
|
<style>
|
||||||
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
|||||||
#prog{
|
#prog{
|
||||||
font-size:200%;
|
font-size:200%;
|
||||||
}
|
}
|
||||||
.linux, .mac{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
@@ -75,28 +72,27 @@ a,button,input,label,i{
|
|||||||
<div id="start">
|
<div id="start">
|
||||||
<div id="box" class="show">
|
<div id="box" class="show">
|
||||||
<h2>TheDesk</h2>
|
<h2>TheDesk</h2>
|
||||||
<p>{{updatehere}}</p>
|
<p>@@updatehere@@</p>
|
||||||
<span id="now"></span>→<b id="ver"></b><br>
|
<span id="now"></span>→<b id="ver"></b><br>
|
||||||
<span id="det"></span><br>
|
<span id="det"></span><br>
|
||||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">{{installer}}</button>
|
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">@@installer@@</button>
|
||||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">{{portable}}</button>
|
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">@@portable@@</button>
|
||||||
<span class="linux">{{snap}}<br></span>
|
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">@@download@@</button>
|
||||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">{{download}}</button>
|
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">@@download@@</button>
|
||||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">{{download}}</button>
|
|
||||||
<br>
|
<br>
|
||||||
{{problem1}}<br>{{problem2}}
|
@@problem1@@<br>@@problem2@@
|
||||||
</div>
|
</div>
|
||||||
<div id="skipper" class="hide">
|
<div id="skipper" class="hide">
|
||||||
<h4>{{sureupd}}</h4>
|
<h4>@@sureupd@@</h4>
|
||||||
{{skipupd}}<br>
|
@@skipupd@@<br>
|
||||||
<div id="updskip">
|
<div id="updskip">
|
||||||
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light"><div>{{nexttl}}</div></a>
|
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light"><div>@@nexttl@@</div></a>
|
||||||
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light"><div>{{nextver}}</div></a>
|
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light"><div>@@nextver@@</div></a>
|
||||||
</div>
|
</div>
|
||||||
<a class="pointer waves-effect" onclick="skipper();" style="margin-top:5px">{{continue}}</a>
|
<a class="pointer waves-effect" onclick="skipper();" style="margin-top:5px">@@continue@@</a>
|
||||||
</div>
|
</div>
|
||||||
<div id="dlnow" class="hide">
|
<div id="dlnow" class="hide">
|
||||||
<h4>{{dlnow}}</h4>
|
<h4>@@dlnow@@</h4>
|
||||||
<h4 id="prog"></h4>
|
<h4 id="prog"></h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -184,12 +180,12 @@ function verck(){
|
|||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
var platform=remote.process.platform;
|
var platform=remote.process.platform;
|
||||||
var bit=process.arch;
|
var bit=process.arch;
|
||||||
if(platform=="linux"){
|
if(platform=="win32"){
|
||||||
$('.windows').hide()
|
$('.windows').removeClass("hide")
|
||||||
$('.linux').show()
|
}else if(platform=="linux"){
|
||||||
}else if(platform=="mac"){
|
$('.linux').removeClass("hide")
|
||||||
$('.windows').hide()
|
}else if(platform=="darwin"){
|
||||||
$('.mac').show()
|
$('.mac').removeClass("hide")
|
||||||
}
|
}
|
||||||
var start="https://thedesk.top/ver.json";
|
var start="https://thedesk.top/ver.json";
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
@@ -201,10 +197,24 @@ function verck(){
|
|||||||
todo(error);
|
todo(error);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
console.log(json);
|
console.log(json);
|
||||||
$("#ver").text(json.desk);
|
if(platform=="win32"){
|
||||||
localStorage.setItem("next-ver",json.desk);
|
$("#ver").text(json.desk);
|
||||||
$("#det").html(json.detail);
|
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="@@lang@@";
|
||||||
|
if(lang=="ja"){
|
||||||
|
$("#det").html(json.detail);
|
||||||
|
}else{
|
||||||
|
$("#det").html(json.detail_en);
|
||||||
|
}
|
||||||
|
|
||||||
$("#now").text(localStorage.getItem("ver"));
|
$("#now").text(localStorage.getItem("ver"));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
|||||||
.colorsel{ display:flex; }
|
.colorsel{ display:flex; }
|
||||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||||
.card .colorsel div.exc{width:40px;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>
|
</style>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
|
||||||
@@ -39,14 +47,17 @@ body,html{overflow-y: scroll;}
|
|||||||
<script type="text/javascript" src="../../js/ui/tips.js"></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/time.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">crwdns366:0crwdne366:0</a><br>
|
<div class="hide-first">
|
||||||
<h5>crwdns365:0crwdne365:0</h5>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">crwdns366:0crwdne366:0</a><br>
|
||||||
<div id="acct-list"></div>
|
<h5>crwdns365:0crwdne365:0</h5>
|
||||||
<div class="divider"></div>
|
<div id="acct-list"></div>
|
||||||
|
<div class="divider"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<h5>crwdns367:0crwdne367:0</h5><br>
|
<h5>crwdns367:0crwdne367:0</h5><br>
|
||||||
<div id="add">
|
<div id="add">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s6">
|
<div class="col s8">
|
||||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||||
<div id="ins-suggest"></div>
|
<div id="ins-suggest"></div>
|
||||||
crwdns368:0crwdne368:0<br>
|
crwdns368:0crwdne368:0<br>
|
||||||
@@ -56,7 +67,7 @@ body,html{overflow-y: scroll;}
|
|||||||
<label for="misskey">crwdns382:0crwdne382:0</label><br>
|
<label for="misskey">crwdns382:0crwdne382:0</label><br>
|
||||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s6">
|
<div class="col s4">
|
||||||
<span style="font-family:Open Sans;">Supports</span>
|
<span style="font-family:Open Sans;">Supports</span>
|
||||||
<div id="support" class="collection transparent"></div>
|
<div id="support" class="collection transparent"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
|||||||
<input type="text" id="misskey-key" placeholder="crwdns373:0crwdne373:0">
|
<input type="text" id="misskey-key" placeholder="crwdns373:0crwdne373:0">
|
||||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="hide-first">
|
||||||
<h5>crwdns370:0crwdne370:0</h5>
|
<h5>crwdns370:0crwdne370:0</h5>
|
||||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">crwdns371:0crwdne371:0</span>
|
<div class="input-field" style="width:300px"><span data-trans="your_acct">crwdns371:0crwdne371:0</span>
|
||||||
<br>
|
<br>
|
||||||
@@ -91,6 +104,7 @@ crwdns376:0crwdne376:0:<span id="ins-toot"></span>crwdns381:0crwdne381:0<br>
|
|||||||
crwdns377:0crwdne377:0:<span id="ins-user"></span>crwdns377:0crwdne377:0<br>
|
crwdns377:0crwdne377:0:<span id="ins-user"></span>crwdns377:0crwdne377:0<br>
|
||||||
crwdns379:0crwdne379:0:<span id="ins-per"></span>%<br>
|
crwdns379:0crwdne379:0:<span id="ins-per"></span>%<br>
|
||||||
crwdns380:0crwdne380:0:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
|
crwdns380:0crwdne380:0:<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/ui/theme.js"></script>
|
||||||
<script type="text/javascript" src="../../js/platform/end.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/common/sha256.js"></script>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="ps">
|
<html lang="ps" style="overflow:scroll">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>Settings - TheDesk</title>
|
<title>Settings - TheDesk</title>
|
||||||
|
|
||||||
@@ -17,362 +18,426 @@
|
|||||||
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
|
<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="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
<style>
|
||||||
|
input {
|
||||||
|
max-height: 50px !important
|
||||||
|
}
|
||||||
|
.pcr-result {
|
||||||
|
height: 1rem !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="mainView" style="overflow-y:scroll">
|
<body id="mainView" style="overflow-y:scroll">
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
||||||
<script type="text/javascript" src="../../js/lang/lang.ps.js"></script>
|
<script type="text/javascript" src="../../js/lang/lang.ps.js"></script>
|
||||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.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 src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||||
<script type="text/javascript" src="setting.vue.js"></script>
|
<script type="text/javascript" src="setting.vue.js"></script>
|
||||||
|
|
||||||
<h4>crwdns524:0crwdne524:0</h4>
|
<h4>crwdns524:0crwdne524:0</h4>
|
||||||
<ul class="collapsible" data-collapsible="accordion">
|
<ul class="collapsible" data-collapsible="accordion">
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">desktop_windows</i>crwdns529:0crwdne529:0
|
<i class="material-icons">desktop_windows</i>crwdns529:0crwdne529:0
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>crwdns530:0crwdne530:0</h5>
|
<h5>crwdns530:0crwdne530:0</h5>
|
||||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||||
<a href="../ja/setting.html" onclick="changelang('ja')">日本語(Japanese)</a>/<a href="../en/setting.html" onclick="changelang('en')">English</a>/<a href="../ps/setting.html" onclick="changelang('ps')">Crowdin web translate</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>
|
||||||
<h5>crwdns531:0crwdne531:0</h5>
|
<h5>crwdns531:0crwdne531:0</h5>
|
||||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button>
|
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
|
style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button>
|
||||||
<div id="envView">
|
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||||
<template v-for="(item, i) in config">
|
style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
|
||||||
<h5>{{item.text.head}}</h5>
|
<div id="envView">
|
||||||
<templete v-html=item.text.desc></templete><br>
|
<template v-for="(item, i) in config">
|
||||||
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">crwdns540:0crwdne540:0</a><br></template>
|
<h5>{{item.text.head}}</h5>
|
||||||
<template v-if="item.checkbox">
|
<template v-if="item.text.desc">
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
<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" />
|
</template>
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||||
</template>
|
class="pointer">crwdns540:0crwdne540:0</a><br></template>
|
||||||
</template>
|
<template v-if="item.checkbox">
|
||||||
<template v-else>
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
<template v-if="item.doubleText">
|
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||||
<template v-for="(textbox, j) in item.data">
|
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||||
<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)">crwdns528:0crwdne528:0</button>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<h5>crwdns544:0crwdne544:0</h5>
|
|
||||||
crwdns1900:0crwdne1900:0<br>
|
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">crwdns1896:0crwdne1896:0</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()">crwdns525:0crwdne525:0</button>
|
|
||||||
<br>
|
|
||||||
<h5>crwdns547:0crwdne547:0</h5>
|
|
||||||
crwdns548:0crwdne548:0<br>
|
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">crwdns528:0crwdne528:0</button>
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="collapsible-header">
|
|
||||||
<i class="material-icons">color_lens</i>crwdns534:0crwdne534:0
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<h4>crwdns2422:0crwdne2422:0</h4>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
|
||||||
<label for="black">Black</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
|
||||||
<label for="white">White</label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
|
||||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
|
||||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
|
||||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
|
||||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
|
||||||
<label for="custom">Custom</label>
|
|
||||||
<div style="width:300px" id="sel-selector">
|
|
||||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
|
||||||
</div>
|
|
||||||
<h4>crwdns2424:0crwdne2424:0</h4>
|
|
||||||
<div style="width:300px" id="edit-selector" data-add="crwdns2436:0crwdne2436:0">
|
|
||||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
|
||||||
<option value="add_new">crwdns2436:0crwdne2436:0</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<h5>crwdns2438:0crwdne2438:0</h5>
|
|
||||||
<input type="text" style="width:300px" id="custom_name" placeholder="crwdns2438:0crwdne2438:0...">
|
|
||||||
<h5>crwdns2440:0crwdne2440:0</h5>
|
|
||||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
|
|
||||||
<h5>crwdns2426:0crwdne2426:0</h5>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
|
||||||
<label for="dark">Dark</label>
|
|
||||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
|
||||||
<label for="light">Light</label>
|
|
||||||
<div id="pickers">
|
|
||||||
<div>
|
|
||||||
<h5>Primary</h5>crwdns2430:0crwdne2430:0
|
|
||||||
<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>crwdns2428:0crwdne2428:0
|
|
||||||
<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>crwdns2432:0crwdne2432:0
|
|
||||||
<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>crwdns2434:0crwdne2434:0
|
|
||||||
<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()">crwdns528:0crwdne528:0</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
|
||||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
|
||||||
crwdns2442:0crwdne2442:0
|
|
||||||
<h4>crwdns2444:0crwdne2444:0</h4>
|
|
||||||
@@cImpWarn@@<br>
|
|
||||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
|
|
||||||
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="collapsible-header">
|
|
||||||
<i class="material-icons">reorder</i>crwdns550:0crwdne550:0
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<div id="tlView">
|
|
||||||
<template v-for="(item, i) in config">
|
|
||||||
<h5>{{item.text.head}}</h5>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</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)">crwdns528:0crwdne528:0</button>
|
|
||||||
</template>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<div class="collapsible-header">
|
|
||||||
<i class="material-icons">send</i>crwdns587:0crwdne587:0
|
|
||||||
</div>
|
|
||||||
<div class="collapsible-body">
|
|
||||||
<div id="postView">
|
|
||||||
<template v-for="(item, i) in config">
|
|
||||||
<h5>{{item.text.head}}</h5>
|
|
||||||
{{item.text.desc}}<br>
|
|
||||||
<template v-if="item.checkbox">
|
|
||||||
<template v-for="(check, j) in item.text.checkbox">
|
|
||||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
|
||||||
<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" />
|
|
||||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
<template v-else>
|
||||||
<template v-else>
|
<template v-if="item.doubleText">
|
||||||
<template v-if="item.doubleText">
|
<template v-for="(textbox, j) in item.data">
|
||||||
<template v-for="(textbox, j) in item.data">
|
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||||
</template>
|
</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)">crwdns528:0crwdne528:0</button>
|
||||||
|
</template><br>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
</div>
|
||||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
<h5>crwdns544:0crwdne544:0</h5>
|
||||||
|
crwdns1900:0crwdne1900:0<br>
|
||||||
|
<button class="btn waves-effect" style="width:100px;" onclick="font()">crwdns1896:0crwdne1896:0</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()">crwdns525:0crwdne525:0</button>
|
||||||
|
<br>
|
||||||
|
<h5>crwdns547:0crwdne547:0</h5>
|
||||||
|
crwdns548:0crwdne548:0<br>
|
||||||
|
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">crwdns528:0crwdne528:0</button>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
|
<i class="material-icons">color_lens</i>crwdns534:0crwdne534:0
|
||||||
|
</div>
|
||||||
|
<div class="collapsible-body">
|
||||||
|
<h4>crwdns2422:0crwdne2422:0</h4>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||||
|
<label for="black">Black</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||||
|
<label for="white">White</label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||||
|
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||||
|
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||||
|
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||||
|
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||||
|
<label for="custom">Custom</label>
|
||||||
|
<div style="width:300px" id="sel-selector">
|
||||||
|
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||||
|
</div>
|
||||||
|
<h4>crwdns2424:0crwdne2424:0</h4>
|
||||||
|
<div style="width:300px" id="edit-selector" data-add="crwdns2436:0crwdne2436:0">
|
||||||
|
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||||
|
<option value="add_new">crwdns2436:0crwdne2436:0</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<h5>crwdns2438:0crwdne2438:0</h5>
|
||||||
|
<input type="text" style="width:300px" id="custom_name" placeholder="crwdns2438:0crwdne2438:0...">
|
||||||
|
<h5>crwdns2440:0crwdne2440:0</h5>
|
||||||
|
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||||
|
placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
|
||||||
|
<h5>crwdns2426:0crwdne2426:0</h5>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
|
||||||
|
<label for="dark">Dark</label>
|
||||||
|
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
|
||||||
|
<label for="light">Light</label>
|
||||||
|
<div id="pickers">
|
||||||
|
<div>
|
||||||
|
<h5>Primary</h5>crwdns2430:0crwdne2430:0
|
||||||
|
<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>crwdns2428:0crwdne2428:0
|
||||||
|
<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>crwdns2432:0crwdne2432:0
|
||||||
|
<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>crwdns2434:0crwdne2434:0
|
||||||
|
<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()">crwdns528:0crwdne528:0</button> <button
|
||||||
|
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||||
|
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||||
|
placeholder="JSON style" readonly><br>
|
||||||
|
crwdns2442:0crwdne2442:0
|
||||||
|
<h4>crwdns2444:0crwdne2444:0</h4>
|
||||||
|
@@cImpWarn@@<br>
|
||||||
|
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
|
||||||
|
placeholder="JSON/JSON5 style">
|
||||||
|
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
|
<i class="material-icons">reorder</i>crwdns550:0crwdne550:0
|
||||||
|
</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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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)">crwdns528:0crwdne528:0</button>
|
||||||
|
</template><br>
|
||||||
</template>
|
</template>
|
||||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
</div>
|
||||||
</template>
|
<h5>@@customSound@@</h5>
|
||||||
</template>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
|
||||||
</li>
|
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
|
<i class="material-icons">send</i>crwdns587:0crwdne587:0
|
||||||
|
</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">
|
||||||
|
<templete v-html="item.text.desc"></templete><br>
|
||||||
|
</template>
|
||||||
|
<template v-if="item.checkbox">
|
||||||
|
<template v-for="(check, j) in item.text.checkbox">
|
||||||
|
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||||
|
<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" />
|
||||||
|
<label v-bind:for="item.id+check.value">{{check.text}}</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)">crwdns528:0crwdne528:0</button>
|
||||||
|
</template><br>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">keyboard</i>crwdns611:0crwdne611:0
|
<i class="material-icons">keyboard</i>crwdns611:0crwdne611:0
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>crwdns612:0crwdne612:0</h5>
|
<h5>crwdns612:0crwdne612:0</h5>
|
||||||
crwdns613:0crwdne613:0<br>
|
crwdns613:0crwdne613:0<br>
|
||||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="material-icons">bookmark</i>crwdns614:0crwdne614:0
|
<i class="material-icons">bookmark</i>crwdns614:0crwdne614:0
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>crwdns615:0crwdne615:0</h5>
|
<h5>crwdns615:0crwdne615:0</h5>
|
||||||
<div id="mute-cli"></div>
|
<div id="mute-cli"></div>
|
||||||
<h5>crwdns616:0crwdne616:0</h5>
|
<h5>crwdns616:0crwdne616:0</h5>
|
||||||
crwdns617:0crwdne617:0
|
crwdns617:0crwdne617:0
|
||||||
<h5>crwdns619:0crwdne619:0</h5>
|
<h5>crwdns619:0crwdne619:0</h5>
|
||||||
crwdns618:0crwdne618:0<br>
|
crwdns618:0crwdne618:0<br>
|
||||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||||
<h5>crwdns620:0crwdne620:0</h5>
|
<h5>crwdns620:0crwdne620:0</h5>
|
||||||
crwdns618:0crwdne618:0<br>
|
crwdns618:0crwdne618:0<br>
|
||||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||||
<h5>crwdns621:0crwdne621:0</h5>
|
<h5>crwdns621:0crwdne621:0</h5>
|
||||||
crwdns622:0crwdne622:0
|
crwdns622:0crwdne622:0
|
||||||
<span class="emphasized"> crwdns623:0crwdne623:0 </span>
|
<span class="emphasized"> crwdns623:0crwdne623:0 </span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-header">
|
||||||
<i class="fa fa-spotify"></i>crwdns624:0crwdne624:0
|
<i class="fa fa-spotify"></i>crwdns624:0crwdne624:0
|
||||||
</div>
|
</div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<h5>crwdns2354:0crwdne2354:0</h5>
|
<h5>crwdns2354:0crwdne2354:0</h5>
|
||||||
crwdns2356:0crwdne2356:0<br>
|
crwdns2356:0crwdne2356:0<br>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||||
<label for="aimp">AIMP</label>
|
<label for="aimp">AIMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||||
<label for="itunes">iTunes</label>
|
<label for="itunes">iTunes</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||||
<label for="npmm">MediaMonkey</label>
|
<label for="npmm">MediaMonkey</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||||
<label for="winamp">Winamp</label>
|
<label for="winamp">Winamp</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||||
<label for="wmp">WMP</label>
|
<label for="wmp">WMP</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||||
<label for="wlm">WLM</label>
|
<label for="wlm">WLM</label>
|
||||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||||
<label for="cad">CAD</label><br><br>
|
<label for="cad">CAD</label><br><br>
|
||||||
crwdns625:0crwdne625:0<i class="material-icons" style="font-size:24px;">music_note</i>crwdns626:0crwdne626:0<br>
|
crwdns625:0crwdne625:0<i class="material-icons" style="font-size:24px;">music_note</i>crwdns626:0crwdne626:0<br>
|
||||||
<h5>crwdns627:0crwdne627:0</h5>
|
<h5>crwdns627:0crwdne627:0</h5>
|
||||||
crwdns628:0crwdne628:0<br>
|
crwdns628:0crwdne628:0<br>
|
||||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button></div>
|
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||||
<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>crwdns629:0crwdne629:0</a>
|
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button></div>
|
||||||
<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>crwdns630:0crwdne630:0</a>
|
<a onclick="spotifyConnect()" class="btn waves-effect nex"
|
||||||
<h5>crwdns631:0crwdne631:0</h5>
|
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
|
||||||
crwdns632:0crwdne632:0<br>
|
class="fa fa-spotify left"></i>crwdns629:0crwdne629:0</a>
|
||||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
<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>crwdns630:0crwdne630:0</a>
|
||||||
|
<h5>crwdns631:0crwdne631:0</h5>
|
||||||
|
crwdns632:0crwdne632:0<br>
|
||||||
|
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||||
{url}</textarea><br>
|
{url}</textarea><br>
|
||||||
crwdns2358:0{song}crwdnd2358:0{album}crwdnd2358:0{artist}crwdnd2358:0{url}crwdne2358:0<br>
|
crwdns2358:0{song}crwdnd2358:0{album}crwdnd2358:0{artist}crwdnd2358:0{url}crwdne2358:0<br>
|
||||||
crwdns2360:0{song}crwdnd2360:0{album}crwdnd2360:0{artist}crwdnd2360:0{composer}crwdnd2360:0{hz}crwdnd2360:0{bitRate}crwdnd2360:0{genre}crwdne2360:0<br>
|
crwdns2360:0{song}crwdnd2360:0{album}crwdnd2360:0{artist}crwdnd2360:0{composer}crwdnd2360:0{hz}crwdnd2360:0{bitRate}crwdnd2360:0{genre}crwdne2360:0<br>
|
||||||
crwdns2362:0{song}crwdnd2362:0{album}crwdnd2362:0{artist}crwdne2362:0<br>
|
crwdns2362:0{song}crwdnd2362:0{album}crwdnd2362:0{artist}crwdne2362:0<br>
|
||||||
<span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br>
|
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||||
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
|
<h5>crwdns635:0crwdne635:0</h5>
|
||||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||||
<h5>crwdns635:0crwdne635:0</h5>
|
<label for="awk_yes">crwdns526:0crwdne526:0</label>
|
||||||
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
|
<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_yes" value="yes" />
|
<label for="awk_no">crwdns527:0crwdne527:0</label>
|
||||||
<label for="awk_yes">crwdns526:0crwdne526:0</label>
|
<br>
|
||||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
</div>
|
||||||
<label for="awk_no">crwdns527:0crwdne527:0</label>
|
</li>
|
||||||
<br>
|
<li>
|
||||||
</div>
|
<div class="collapsible-header">
|
||||||
</li>
|
<i class="material-icons">hearing</i>crwdns636:0crwdne636:0
|
||||||
<li>
|
</div>
|
||||||
<div class="collapsible-header">
|
<div class="collapsible-body">
|
||||||
<i class="material-icons">hearing</i>crwdns636:0crwdne636:0
|
<h5>crwdns637:0crwdne637:0</h5>
|
||||||
</div>
|
crwdns638:0crwdne638:0<br>
|
||||||
<div class="collapsible-body">
|
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||||
<h5>crwdns637:0crwdne637:0</h5>
|
style="width:500px; max-width:100%" /></p>
|
||||||
crwdns638:0crwdne638:0<br>
|
<h5>crwdns639:0crwdne639:0</h5>
|
||||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
crwdns640:0crwdne640:0<br>
|
||||||
<h5>crwdns639:0crwdne639:0</h5>
|
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||||
crwdns640:0crwdne640:0<br>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
<h5>crwdns641:0crwdne641:0</h5>
|
||||||
<h5>crwdns641:0crwdne641:0</h5>
|
crwdns642:0crwdne642:0<br>
|
||||||
crwdns642:0crwdne642:0<br>
|
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
style="width:500px; max-width:100%" /></p>
|
||||||
<h5>crwdns643:0crwdne643:0</h5>
|
<h5>crwdns643:0crwdne643:0</h5>
|
||||||
<input type="text" style="width:350px" id="voicetxt" value="crwdns644:0crwdne644:0">
|
<input type="text" style="width:350px" id="voicetxt" value="crwdns644:0crwdne644:0">
|
||||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">crwdns645:0crwdne645:0</button><br>
|
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||||
<br>
|
id="testplay">crwdns645:0crwdne645:0</button><br>
|
||||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">crwdns525:0crwdne525:0</button>
|
<br>
|
||||||
</div>
|
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">crwdns525:0crwdne525:0</button>
|
||||||
</li>
|
</div>
|
||||||
</ul>
|
</li>
|
||||||
<br>
|
</ul>
|
||||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>crwdns646:0crwdne646:0</a>
|
|
||||||
<br>
|
|
||||||
<br>crwdns647:0crwdne647:0
|
|
||||||
<li>Ctrl+1-9:crwdns648:0crwdne648:0</li>
|
|
||||||
<li>N:crwdns649:0crwdne649:0</li>
|
|
||||||
<li>X:crwdns650:0crwdne650:0</li>
|
|
||||||
<li>Ctrl+Enter:crwdns651:0crwdne651:0</li>
|
|
||||||
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
|
|
||||||
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
|
|
||||||
<li>Ctrl+E:crwdns652:0crwdne652:0</li>
|
|
||||||
<li>Esc:crwdns653:0crwdne653:0</li>
|
|
||||||
<li>F5:crwdns654:0crwdne654:0</li>
|
|
||||||
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
|
|
||||||
<li>Ctrl+Shift+S:crwdns524:0crwdne524:0</li>
|
|
||||||
<li>Ctrl+Shift+M:crwdns656:0crwdne656:0</li>
|
|
||||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
|
||||||
<li>Ctrl+Shift+P:crwdns657:0crwdne657:0</li>
|
|
||||||
<li>←/→:crwdns658:0crwdne658:0</li>
|
|
||||||
<li>crwdns659:0crwdne659:0</li>
|
|
||||||
<div class="hide kirishima">
|
|
||||||
以下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>
|
|
||||||
</div>
|
|
||||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>crwdns660:0crwdne660:0</button><br><br>
|
|
||||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>crwdns662:0crwdne662:0</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>crwdns663:0crwdne663:0</a>
|
|
||||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Enty)</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>crwdns665:0crwdne665:0/Docs(Constructing)</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>
|
|
||||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" 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@kirishima.cloud</a>
|
|
||||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">crwdns666:0crwdne666:0</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">crwdns667:0crwdne667:0</a><br>
|
|
||||||
<a href="oss.html">OSS Licensecrwdns668:0crwdne668:0</a><br>
|
|
||||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
|
||||||
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@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
|
||||||
<br>
|
<br>
|
||||||
</span><br>
|
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
class="material-icons left">undo</i>crwdns646:0crwdne646:0</a>
|
||||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
<br>
|
||||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
<br>crwdns647:0crwdne647:0
|
||||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
<li>Ctrl+1-9:crwdns648:0crwdne648:0</li>
|
||||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
<li>N:crwdns649:0crwdne649:0</li>
|
||||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
<li>X:crwdns650:0crwdne650:0</li>
|
||||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
<li>Ctrl+Enter:crwdns651:0crwdne651:0</li>
|
||||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
|
||||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
|
||||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
<li>Ctrl+E:crwdns652:0crwdne652:0</li>
|
||||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
<li>Esc:crwdns653:0crwdne653:0</li>
|
||||||
|
<li>F5:crwdns654:0crwdne654:0</li>
|
||||||
|
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
|
||||||
|
<li>Ctrl+Shift+S:crwdns524:0crwdne524:0</li>
|
||||||
|
<li>Ctrl+Shift+M:crwdns656:0crwdne656:0</li>
|
||||||
|
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||||
|
<li>Ctrl+Shift+P:crwdns657:0crwdne657:0</li>
|
||||||
|
<li>←/→:crwdns658:0crwdne658:0</li>
|
||||||
|
<li>crwdns659:0crwdne659:0</li>
|
||||||
|
<div class="hide kirishima">
|
||||||
|
以下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>
|
||||||
|
</div>
|
||||||
|
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||||
|
onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||||
|
class="material-icons left">delete</i>crwdns660:0crwdne660:0</button><br><br>
|
||||||
|
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||||
|
class="material-icons left">info</i>crwdns662:0crwdne662:0</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>crwdns663:0crwdne663:0</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>crwdns664:0crwdne664:0(Pixiv FANBOX)</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>crwdns665:0crwdne665:0/Docs(Constructing)</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>
|
||||||
|
<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">crwdns667:0crwdne667:0</a><br>
|
||||||
|
<a href="oss.html">OSS Licensecrwdns668:0crwdne668:0</a><br>
|
||||||
|
<span style="font-family:Open Sans;">Copyright © 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/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>
|
||||||
@@ -7,6 +7,27 @@ var yesno=[
|
|||||||
value:"no"
|
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=[
|
var envConstruction=[
|
||||||
{
|
{
|
||||||
id:"popup",
|
id:"popup",
|
||||||
@@ -263,7 +284,7 @@ var tlConstruction=[
|
|||||||
setValue:200,
|
setValue:200,
|
||||||
text:{
|
text:{
|
||||||
head:"crwdns586:0crwdne586:0",
|
head:"crwdns586:0crwdne586:0",
|
||||||
desc:"",
|
desc:'@@imgheightwarn@@',
|
||||||
after:"px"
|
after:"px"
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
@@ -286,6 +307,46 @@ var tlConstruction=[
|
|||||||
desc:"",
|
desc:"",
|
||||||
checkbox:yesno
|
checkbox:yesno
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
id:"replySound",
|
||||||
|
storage:"replySound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@replySound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
id:"favSound",
|
||||||
|
storage:"favSound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@favSound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
id:"btSound",
|
||||||
|
storage:"btSound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@btSound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
id:"followSound",
|
||||||
|
storage:"followSound",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"none",
|
||||||
|
text:{
|
||||||
|
head:"@@followSound@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:sound
|
||||||
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
var postConstruction=[
|
var postConstruction=[
|
||||||
@@ -476,5 +537,16 @@ var postConstruction=[
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
id:"zero",
|
||||||
|
storage:"emoji-zero-width",
|
||||||
|
checkbox:true,
|
||||||
|
setValue:"normal",
|
||||||
|
setValue:"no",
|
||||||
|
text:{
|
||||||
|
head:"@@zeroWidthEmoji@@",
|
||||||
|
desc:"",
|
||||||
|
checkbox:yesno
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="ps">
|
||||||
<head>
|
<head>
|
||||||
<title>Update - TheDesk</title>
|
<title>Update - TheDesk</title>
|
||||||
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
|
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
|
||||||
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
|||||||
#prog{
|
#prog{
|
||||||
font-size:200%;
|
font-size:200%;
|
||||||
}
|
}
|
||||||
.linux, .mac{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
<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/platform/first.js"></script>
|
||||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
|||||||
<p>crwdns669:0crwdne669:0</p>
|
<p>crwdns669:0crwdne669:0</p>
|
||||||
<span id="now"></span>→<b id="ver"></b><br>
|
<span id="now"></span>→<b id="ver"></b><br>
|
||||||
<span id="det"></span><br>
|
<span id="det"></span><br>
|
||||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">crwdns2382:0crwdne2382:0</button>
|
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">crwdns2382:0crwdne2382:0</button>
|
||||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button>
|
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button>
|
||||||
<span class="linux">crwdns2384:0crwdne2384:0<br></span>
|
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
|
||||||
<br>
|
<br>
|
||||||
crwdns678:0crwdne678:0<br>crwdns679:0crwdne679:0
|
crwdns678:0crwdne678:0<br>crwdns679:0crwdne679:0
|
||||||
</div>
|
</div>
|
||||||
@@ -184,12 +180,12 @@ function verck(){
|
|||||||
var remote=electron.remote;
|
var remote=electron.remote;
|
||||||
var platform=remote.process.platform;
|
var platform=remote.process.platform;
|
||||||
var bit=process.arch;
|
var bit=process.arch;
|
||||||
if(platform=="linux"){
|
if(platform=="win32"){
|
||||||
$('.windows').hide()
|
$('.windows').removeClass("hide")
|
||||||
$('.linux').show()
|
}else if(platform=="linux"){
|
||||||
}else if(platform=="mac"){
|
$('.linux').removeClass("hide")
|
||||||
$('.windows').hide()
|
}else if(platform=="darwin"){
|
||||||
$('.mac').show()
|
$('.mac').removeClass("hide")
|
||||||
}
|
}
|
||||||
var start="https://thedesk.top/ver.json";
|
var start="https://thedesk.top/ver.json";
|
||||||
fetch(start, {
|
fetch(start, {
|
||||||
@@ -201,10 +197,24 @@ function verck(){
|
|||||||
todo(error);
|
todo(error);
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}).then(function(json) {
|
}).then(function(json) {
|
||||||
console.log(json);
|
console.log(json);
|
||||||
$("#ver").text(json.desk);
|
if(platform=="win32"){
|
||||||
localStorage.setItem("next-ver",json.desk);
|
$("#ver").text(json.desk);
|
||||||
$("#det").html(json.detail);
|
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="ps";
|
||||||
|
if(lang=="ja"){
|
||||||
|
$("#det").html(json.detail);
|
||||||
|
}else{
|
||||||
|
$("#det").html(json.detail_en);
|
||||||
|
}
|
||||||
|
|
||||||
$("#now").text(localStorage.getItem("ver"));
|
$("#now").text(localStorage.getItem("ver"));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,27 +1,11 @@
|
|||||||
language: objective-c
|
os: windows
|
||||||
cache:
|
language: node_js
|
||||||
directories:
|
node_js:
|
||||||
- node_modules
|
- '10.15.2'
|
||||||
env:
|
script: node -v
|
||||||
- NODE_VERSION="9.9.0"
|
|
||||||
before_install:
|
|
||||||
# nvm をインストールする。Travis の OS X 環境には nvm はデフォルトで入っていない
|
|
||||||
- git clone https://github.com/creationix/nvm.git /tmp/.nvm
|
|
||||||
- source /tmp/.nvm/nvm.sh
|
|
||||||
# 指定バージョンの Node をインストールする
|
|
||||||
- nvm install $NODE_VERSION
|
|
||||||
# 指定バージョンの Node を有効にする
|
|
||||||
- nvm use --delete-prefix $NODE_VERSION
|
|
||||||
- node --version
|
|
||||||
script:
|
|
||||||
- node --version
|
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- brew update
|
|
||||||
- brew install wine
|
|
||||||
- wine --version
|
|
||||||
- brew install makensis
|
|
||||||
- npm install electron-builder -g
|
|
||||||
- cd app
|
- cd app
|
||||||
|
- npm install electron-builder -g
|
||||||
- npm install
|
- npm install
|
||||||
- electron-builder --win --ia32
|
- electron-builder --win --ia32
|
||||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
|
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
|
||||||
@@ -29,24 +13,22 @@ before_deploy:
|
|||||||
- electron-builder --win --x64
|
- electron-builder --win --x64
|
||||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup.exe
|
- mv ../build/TheDesk-setup.exe ../TheDesk-setup.exe
|
||||||
- mv ../build/TheDesk*.exe ../TheDesk.exe
|
- mv ../build/TheDesk*.exe ../TheDesk.exe
|
||||||
- electron-builder --linux --x64
|
|
||||||
- mv ../build/thedesk*.snap ../TheDesk.snap
|
|
||||||
- electron-builder --mac --x64
|
|
||||||
- mv ../build/TheDesk*.dmg ../TheDesk.dmg
|
|
||||||
- cd ../
|
- cd ../
|
||||||
|
- ls
|
||||||
|
after_deploy: ls
|
||||||
deploy:
|
deploy:
|
||||||
|
skip_cleanup: true
|
||||||
provider: releases
|
provider: releases
|
||||||
# GitHub にリリースするための API KEY を暗号化した値
|
|
||||||
api_key:
|
api_key:
|
||||||
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
||||||
# Releases ページにアップロードするファイル
|
|
||||||
file:
|
file:
|
||||||
- TheDesk.exe
|
- TheDesk.exe
|
||||||
- TheDesk-setup.exe
|
- TheDesk-setup.exe
|
||||||
- TheDesk-ia32.exe
|
- TheDesk-ia32.exe
|
||||||
- TheDesk-setup-ia32.exe
|
- TheDesk-setup-ia32.exe
|
||||||
- TheDesk.snap
|
|
||||||
- TheDesk.dmg
|
|
||||||
skip_cleanup: true
|
|
||||||
on:
|
on:
|
||||||
repo: cutls/TheDesk
|
repo: cutls/TheDesk
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user