Compare commits

..

8 Commits

Author SHA1 Message Date
Cutls
c38cc6fd5a Merge pull request #37 from cutls/WIP-(before-CI)
package to travis
2019-03-21 14:59:54 +09:00
Cutls
abba6fcaa9 Merge pull request #36 from cutls/WIP-(before-CI)
TheDesk Usamin (18.1.0)
2019-03-21 14:24:49 +09:00
Cutls
7037f63b44 Merge pull request #33 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.3)
2019-03-19 00:26:46 +09:00
Cutls
f0c89a291e Merge pull request #32 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.3)
2019-03-18 23:29:51 +09:00
Cutls
b2e10feba8 Merge pull request #31 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.2)
2019-03-16 14:05:46 +09:00
Cutls
8c27c43c13 Merge pull request #30 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.1)
2019-03-16 02:19:22 +09:00
Cutls
487a8e7a1b Merge pull request #29 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.1)
2019-03-16 02:00:06 +09:00
Cutls
ccb652dcf0 Merge pull request #28 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.0)
2019-03-16 00:45:16 +09:00
90 changed files with 8012 additions and 10471 deletions

2
.gitignore vendored
View File

@@ -5,6 +5,8 @@
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/*

View File

@@ -1,26 +1,31 @@
os: osx os: windows
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:
- npm install electron-builder -g
- cd app - cd app
- npm install electron-builder -g
- npm install - npm install
- electron-builder --mac --x64 -p never - electron-builder --win --ia32
- mv ../build/TheDesk*.dmg ../TheDesk.dmg - mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
- mv ../build/TheDesk*.zip ../TheDesk-darwin-x64.zip - mv ../build/TheDesk*.exe ../TheDesk-ia32.exe
- 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.dmg - TheDesk.exe
- TheDesk-darwin-x64.zip - TheDesk-setup.exe
skip_cleanup: true - TheDesk-ia32.exe
- TheDesk-setup-ia32.exe
on: on:
repo: cutls/TheDesk repo: cutls/TheDesk
branches: branches:

View File

@@ -1,7 +1,5 @@
# TheDesk # TheDesk
TheDesk Minami (19)はVueで書き直します(rewrite-vueブランチ参照)。18までのバージョンはTheDesk Kawaii (20)以降で継続します。
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk) [![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS) Mastodon/Misskey client for PC(Windows/Linux/macOS)
@@ -29,8 +27,6 @@ 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)
@@ -78,37 +74,10 @@ 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`
```sh `npm install electron -g`
git clone https://github.com/cutls/TheDesk `cd TheDesk/app`
cd TheDesk/app `npm install`
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
@@ -122,6 +91,8 @@ 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
@@ -129,6 +100,11 @@ 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?

View File

@@ -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'>Display version</div> <div class='area-name1'>バージョン</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,18 +87,13 @@ 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 &copy; TheDesk 2018<br> <div class="cp">Copyright &copy; TheDesk 2018 All rights reserved.<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
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);
@@ -109,9 +104,6 @@ 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>

View File

@@ -30,8 +30,6 @@ option {
} }
#mainView { #mainView {
padding: 10px; padding: 10px;
overflow:scroll;
height: auto;
} }
#message { #message {
display: none; display: none;
@@ -391,9 +389,6 @@ 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 {

View File

@@ -112,13 +112,6 @@ 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%;
@@ -138,7 +131,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:-1px 0; margin: -3px 0 0;
} }
.faicon_FTL{ .faicon_FTL{
display:none; display:none;
@@ -224,10 +217,7 @@ 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;
@@ -249,29 +239,6 @@ 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);
} }
@@ -343,7 +310,6 @@ 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;
@@ -360,7 +326,6 @@ 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%;
@@ -528,44 +493,7 @@ 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;

View File

@@ -45,7 +45,6 @@
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;
@@ -91,10 +90,3 @@
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;
}

5
app/index.start.html Normal file
View File

@@ -0,0 +1,5 @@
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL='language.html?mode=redirect'" />
</head>

View File

@@ -1,119 +0,0 @@
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()
}

View File

@@ -92,7 +92,6 @@ $(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();
} }

View File

@@ -62,29 +62,10 @@ 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")=="brewcask" || localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){ if(localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
var winstore=true; var winstore=true;
}else{ }else{
var winstore=false; var winstore=false;
@@ -190,27 +171,26 @@ function verck(ver) {
} }
} }
if(show){ if(show){
Materialize.toast(escapeHTML(obj.Text)+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400); Materialize.toast(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!=""){
@@ -239,26 +219,19 @@ function infowebsocket(){
} }
} }
if(show){ if(show){
Materialize.toast(escapeHTML(obj.text)+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400); Materialize.toast(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);

View File

@@ -54,13 +54,7 @@ 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;
}); });
var hex=emojiraw[0].unified.split("-"); emoji=twemoji.convert.fromCodePoint(emojiraw[0].unified);
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();

View File

@@ -23,7 +23,6 @@ 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",
@@ -91,7 +90,6 @@ 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",
@@ -141,7 +139,6 @@ 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",
@@ -150,13 +147,11 @@ 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:",
@@ -189,7 +184,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":"Vote", "lang_parse_vote":"Voted",
"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",

View File

@@ -23,7 +23,6 @@ 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":"認証せずに見る",
@@ -91,7 +90,6 @@ 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":"件の新しい通知",
@@ -109,8 +107,6 @@ 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}}",
@@ -143,7 +139,6 @@ 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":"移行先を見る",
@@ -152,13 +147,11 @@ 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":"以下全文",

View File

@@ -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", "knzk.me_name":"神崎丼",
"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":"disabled", "knzk.me_glitch":"enabled",
"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づドン(Y-zuDon)", "mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
"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,14 +84,20 @@ 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":"misskey", "misskey.xyz":"instance",
"misskey.xyz_name":"misskey.xyz", "misskey.xyz_name":"Misskey",
"misskey.xyz_letters":"1000", "misskey.xyz_letters":"1000",
"misskey.xyz_bbcode":"disabled", "misskey.xyz_bbcode":"disabled",
"misskey.xyz_markdown":"enabled", "misskey.xyz_markdown":"enabled",
@@ -99,28 +105,6 @@ 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));

View File

@@ -14,6 +14,23 @@ 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=(.+)/);
@@ -25,27 +42,30 @@ function ck() {
} }
} }
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
if(!multi || multi=="[]"){ if (!multi) {
location.href="acct.html?mode=first&code=true" var obj = [];
}else{ 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) {
var acct=obj[key]; var acct=obj[key];
if(acct.domain){ if(acct.domain){
refresh(key,true) refresh(key,true)
} }
}); });
if (obj[0].domain) { console.log(obj);
if (obj[0].domain) {
$("#tl").show(); $("#tl").show();
ticker(); ticker();
multiSelector(); multiSelector();
verck(ver); } else {
$("#tl").show();
$("#post-box").hide();
} }
} }
} ck();
ck();
//ログインポップアップ //ログインポップアップ
function login(url) { function login(url) {
if($('#linux:checked').val()=="on"){ if($('#linux:checked').val()=="on"){
@@ -502,7 +522,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(true); parseColumn();
} }
//バージョンエンコ //バージョンエンコ

View File

@@ -2,15 +2,6 @@
//最初に読むやつ //最初に読むやつ
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");
@@ -66,8 +57,14 @@ function load() {
localStorage.setItem("acct", 0); localStorage.setItem("acct", 0);
var acctN = 0; var acctN = 0;
} }
//全部チェックアリでいいと思うの var electron = require("electron");
var remote=electron.remote;
var platform=remote.process.platform;
if(localStorage.getItem("winstore")!="localinstall"){
$("#linux").prop("checked", false);
}else{
$("#linux").prop("checked", true); $("#linux").prop("checked", true);
}
} }
//最初に読む //最初に読む
@@ -265,10 +262,6 @@ 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);
} }
}); });
} }
@@ -277,7 +270,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"){ if($('#misskey:checked').val()=="on" || url=="misskey.xyz"){
$("#misskey").prop("checked", true); $("#misskey").prop("checked", true);
misskeyLogin(url); misskeyLogin(url);
return; return;
@@ -363,27 +356,7 @@ 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() {
@@ -485,9 +458,7 @@ 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;
} }
@@ -540,7 +511,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:" + escapeHTML(json.error), Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000); 5000);
return; return;
} }
@@ -575,9 +546,6 @@ 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();
}); });
} }
@@ -815,7 +783,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">' +escapeHTML(url.name) + '</a> '; '\')" class="pointer">' + url.name + '</a> ';
}); });
$("#ins-suggest").html(urls); $("#ins-suggest").html(urls);
} }

View File

@@ -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,17 +35,13 @@
}else if(tags){ }else if(tags){
if(tags[2]){ if(tags[2]){
var acct_id=$a.parent().attr("data-acct"); tagShow(tags[2]);
if(!acct_id){ Materialize.toast('<a class="btn-flat toast-action" href="detEx(\''+url+'\')">Open in browser</a>', 86400);
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]){
//Quesdon判定 if(ats[1]!="quesdon.rinsuki.net"){
if(!~ats[2].indexOf("@")){
udgEx(ats[2]+"@"+ats[1],"main"); udgEx(ats[2]+"@"+ats[1],"main");
return false return false
}else{ }else{
@@ -182,20 +178,3 @@ 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);
}

View File

@@ -32,13 +32,6 @@ 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){
@@ -62,7 +55,7 @@ function formattime(date){
}else{ }else{
str=str+date.getMinutes() str=str+date.getMinutes()
} }
return escapeHTML(str); return str;
} }
function formattimeutc(date){ function formattimeutc(date){
var str=date.getUTCFullYear()+"-"; var str=date.getUTCFullYear()+"-";
@@ -87,7 +80,7 @@ function formattimeutc(date){
}else{ }else{
str=str+date.getUTCMinutes() str=str+date.getUTCMinutes()
} }
return escapeHTML(str); return str;
} }
var electron = require("electron"); var electron = require("electron");
var ipc = electron.ipcRenderer; var ipc = electron.ipcRenderer;

View File

@@ -4,11 +4,11 @@ $("#emoji-before").addClass("disabled");
$("#emoji-next").addClass("disabled"); $("#emoji-next").addClass("disabled");
//絵文字ボタンのトグル //絵文字ボタンのトグル
function emojiToggle(reaction) { function emojiToggle() {
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(reaction) {
$("#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', reaction); emojiList('home');
} }
} else { } else {
$("#poll").addClass("hide") $("#poll").addClass("hide")
@@ -34,27 +34,26 @@ function emojiToggle(reaction) {
} }
//絵文字リスト挿入 //絵文字リスト挿入
function emojiGet(parse, started) { function emojiGet(parse) {
$('#emoji-list').text('Loading...'); $('#emoji-list').html('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);
if (localStorage.getItem("mode_" + domain) != "misskey") {
var start = "https://" + domain + "/api/v1/custom_emojis"; var start = "https://" + domain + "/api/v1/custom_emojis";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json'
}, },
}).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 (parse == "true") { if (parse == "true") {
$('#emoji-list').text('Parsing...'); $('#emoji-list').html('Parsing...');
//絵文字をマストドン公式と同順にソート //絵文字をマストドン公式と同順にソート
json.sort(function (a, b) { json.sort(function(a, b) {
if (a.shortcode < b.shortcode) return -1; if (a.shortcode < b.shortcode) return -1;
if (a.shortcode > b.shortcode) return 1; if (a.shortcode > b.shortcode) return 1;
return 0; return 0;
@@ -64,67 +63,14 @@ function emojiGet(parse, started) {
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json)); localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
} }
localStorage.setItem("emojiseek", 0); localStorage.setItem("emojiseek", 0);
if (!started) {
emojiList('home') 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
})
});
if (parse == "true") {
$('#emoji-list').text('Parsing...');
//絵文字をマストドン公式と同順にソート
md.sort(function (a, b) {
if (a.shortcode < b.shortcode) return -1;
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, reaction) { function emojiList(target) {
$("#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;
@@ -157,14 +103,8 @@ function emojiList(target, reaction) {
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) {
if (reaction) {
html = html + '<a onclick="emojiReaction(\':' + emoji.shortcode +
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
} else {
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode + html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>'; ': \')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
}
} }
} }
$("#emoji-list").html(html); $("#emoji-list").html(html);
@@ -174,19 +114,14 @@ function emojiList(target, reaction) {
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 + brank + code + brank + after; newt = before + " "+ code+" " + after;
} else { }else{
newt = code + brank; newt = code+" ";
} }
if (!del) { if (!del) {
$("#textarea").val(newt); $("#textarea").val(newt);
@@ -194,20 +129,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 + brank + code); $("#textarea").val(now + " " + 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();

View File

@@ -156,6 +156,7 @@ 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");
} }
} }
@@ -183,20 +184,22 @@ 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) { // 画像の場合
return true; // e.clipboardData.types.length == 0
} // かつ
// DataTransferItemList に画像が含まれいない場合は終了する // e.clipboardData.types[0] == "Files"
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image')); // となっているので、それ以外を弾く
if (imageItems.length == 0) { if (!e.clipboardData
|| !e.clipboardData.types
|| (e.clipboardData.types.length != 1)
|| (e.clipboardData.types[0] != "Files")) {
console.log("not image") console.log("not image")
return true; return true;
} }
// ファイルとして得る // ファイルとして得る
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ // (なぜかgetAsStringでは上手くいかなかった)
var imageFile = imageItems[0].getAsFile(); var imageFile = e.clipboardData.items[0].getAsFile();
var imageType = imageItems[0].type;
// FileReaderで読み込む // FileReaderで読み込む
var fr = new FileReader(); var fr = new FileReader();
@@ -207,8 +210,7 @@ element.addEventListener("paste", function(e){
if(mediav){ if(mediav){
var i=mediav.split(",").length; var i=mediav.split(",").length;
} }
// DataTransferItem の type に mime tipes があるのでそれを使う media(base64, "image/png", i)
media(base64, imageType, i)
}; };
fr.readAsDataURL(imageFile); fr.readAsDataURL(imageFile);

View File

@@ -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.reactions){ if(json.reactionCounts){
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","rip"]; var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
for(var i=0;i<reactions.length;i++){ for(var i=0;i<reactions.length;i++){
if(json.reactions[reactions[i]]){ if(json.reactionCounts[reactions[i]]){
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactions[reactions[i]]) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[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.reactions[reactions[i]]) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
} }
} }
$("#pub_" + id +" .reactions").removeClass("hide"); $("#pub_" + id +" .reactions").removeClass("hide");
@@ -94,20 +94,6 @@ 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);
@@ -133,41 +119,29 @@ function reactRefresh(acct_id,id){
return false; return false;
} }
var poll=""; var poll="";
if(json.error){ console.log(json);
$("[toot-id=" + id + "]").hide();
$("[toot-id=" + id + "]").remove();
}else{
reactRefreshCore(json) reactRefreshCore(json)
}
}); });
} }
function reactRefreshCore(json){ function reactRefreshCore(json){
var id=json.id; var id=json.id;
if(json.reactions){ if(json.reactionCounts){
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
$("#pub_" + id +" .reactions").removeClass("hide") $("#pub_" + id +" .reactions").removeClass("hide")
var regExp = new RegExp( ":", "g" ) ; for(var i=0;i<reactions.length;i++){
Object.keys(json.reactions).forEach(function(keye) { if(json.reactionCounts[reactions[i]]){
keyeClass=keye.replace(regExp,''); console.log(json.reactionCounts[reactions[i]])
if(json.reactions[keye]){ $("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
console.log(json.reactions[keye]) $("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactions[keye])
$("#pub_" + id +" .re-"+keyeClass).removeClass("hide")
}else{ }else{
$("#pub_" + id +" .re-"+keyeClass+"ct").text(0) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
if($("#pub_" + id +" .reactions").hasClass("fullreact")){ if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id +" .re-"+keyeClass).addClass("hide") $("#pub_" + id +" .re-"+reactions[i]).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);
@@ -234,7 +208,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+')">'+escapeHTML(choice.text)+'('+choice.votes+''+myvote+')</div>'; poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+choice.text+'('+choice.votes+''+myvote+')</div>';
}); });
$(".vote_"+json.id).html(poll) $(".vote_"+json.id).html(poll)
} }

View File

@@ -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(6); $("#mins_poll").val(0);
$(".mastodon-choice").map(function() { $(".mastodon-choice").map(function() {
$(this).val(""); $(this).val("");
}); });
@@ -307,8 +307,4 @@ 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");
} }

View File

@@ -236,8 +236,6 @@ 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();

View File

@@ -53,7 +53,16 @@ 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 (tag && tag[1]) { if(localStorage.getItem("imas")){
//セルフ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];
@@ -169,7 +178,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">' + escapeHTML(json[key4]) + '</a> '; tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + json[key4] + '</a> ';
}); });
$("#suggest").html("Cinderella NowPlaying:" + tags); $("#suggest").html("Cinderella NowPlaying:" + tags);
}else{ }else{

View File

@@ -4,9 +4,9 @@ function additional(acct_id, tlid) {
//メンション系 //メンション系
//$(".mention").attr("href", ""); //$(".mention").attr("href", "");
$("#timeline-container .mention").addClass("parsed"); $(".mention").addClass("parsed");
$("#timeline-container .hashtag").each(function(i, elem) { $(".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,6 +17,8 @@ function additional(acct_id, tlid) {
} }
} }
}); });
//トゥートサムネ //トゥートサムネ
@@ -32,7 +34,6 @@ function additional(acct_id, tlid) {
); );
} }
}else{ }else{
text=""
var urls =[] var urls =[]
} }
@@ -63,8 +64,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:" + escapeHTML(json.title) + "<br>" + "<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
escapeHTML(json.description) + "</span>"); 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");
} }
@@ -148,8 +149,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:" + escapeHTML(json.title) + "<br>" + "<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
escapeHTML(json.description) + "</span>"); 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");
} }

View File

@@ -91,9 +91,6 @@ 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")){
@@ -102,7 +99,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', 4); $('#det-col').collapsible('open', 1);
} }
}); });
@@ -335,81 +332,6 @@ 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) {
@@ -490,6 +412,62 @@ 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();

View File

@@ -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="fas fa-lock red-text"></i>'; var locked = ' <i class="fa 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 = escapeHTML(toot.application.name); var via = 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">'+escapeHTML(word)+"</span>"); content=content.replace(regExp,'<span class="emp">'+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;"> '+escapeHTML(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;"> '+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="far fa-clock-o"></i>' + '('+lang.lang_parse_clickcopyurl+')"><i class="fa 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="' +

View File

@@ -146,11 +146,6 @@ 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();
@@ -426,16 +421,6 @@ 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)

View File

@@ -13,32 +13,6 @@ function list(){
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");
if(localStorage.getItem("mode_" + domain)=="misskey"){
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 + escapeHTML(list.title)+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">'+lang.lang_list_show+'</a><br>';
});
$("#lists").html(lists);
}else{
$("#lists").html(lang.lang_list_nodata);
}
});
}else{
var start = "https://" + domain + "/api/v1/lists" var start = "https://" + domain + "/api/v1/lists"
console.log(start) console.log(start)
fetch(start, { fetch(start, {
@@ -57,23 +31,21 @@ function list(){
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>/<a onclick="listUser(\'' + list.id + '\',' + acct_id + '\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listUser(' + list.id + ',' + acct_id +
')" class="pointer">'+lang.lang_list_users+'</a><br>'; ')" class="pointer">'+lang.lang_list_users+'</a><br> ';
}); });
$("#lists").html(lists); $("#lists").html(lists);
}else{ }else{
$("#lists").html(lang.lang_list_nodata); $("#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();
@@ -91,25 +63,6 @@ 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);
@@ -147,7 +100,6 @@ 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, {
@@ -166,7 +118,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);
@@ -192,66 +144,28 @@ 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">'+escapeHTML(list.title)+'</a><br> '; '\')" class="pointer">'+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");
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 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(i)); httpreq.send(JSON.stringify({
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;
@@ -262,28 +176,16 @@ 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");
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 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(method, start, true); httpreq.open('DELETE', 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(i)); httpreq.send(JSON.stringify({
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

View File

@@ -94,14 +94,12 @@ 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(tlid + ":Connect Streaming API(Integrated:Home)"); console.log("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(tlid + ":Connect Streaming API(Integrated:Local)"); console.log("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) {
@@ -197,58 +195,40 @@ function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
} }
} }
websocketLocal[wslid].onerror = function(error) { websocketLocal[wslid].onerror = function(error) {
console.error('WebSocketLocal Error') console.error('WebSocket Error ' + 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{
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid,errorct);
if(errorct<3){
reconnector(tlid,TLtype,acct_id,"","error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
}
}; };
websocketLocal[wslid].onclose = function() { websocketLocal[wslid].onclose = function() {
console.log('WebSocketLocal Closing:' + tlid); console.error('WebSocketLocal Closing by error:' + 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{
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid,errorct);
if(errorct<3){
reconnector(tlid,TLtype,acct_id,"","error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
}
}; };
websocketHome[wshid].onerror = function(error) { websocketHome[wshid].onerror = function(error) {
console.error('WebSocketHome Error') console.error('WebSocket Error ' + 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{
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid,errorct);
if(errorct<3){
reconnector(tlid,TLtype,acct_id,"","error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
}
}; };
websocketHome[wshid].onclose = function() { websocketHome[wshid].onclose = function() {
console.log('WebSocketHome Closing:' + tlid); console.error('WebSocketHome Closing by error:' + 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{
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid,errorct);
if(errorct<3){
reconnector(tlid,TLtype,acct_id,"","error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
}
}; };
@@ -259,7 +239,6 @@ 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");
@@ -323,9 +302,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();
}); });
}); });

View File

@@ -15,11 +15,12 @@ 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
@@ -43,10 +44,7 @@ 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"); var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
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);
@@ -62,13 +60,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.lang_notf_new, body: ct+lang_notf_new[lang],
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.lang_notf_new,localStorage.getItem("prof_"+acct_id)]); ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
} }
} }
@@ -114,6 +112,73 @@ 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...");
@@ -168,13 +233,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.lang_notf_new, body: ct+lang_notf_new[lang],
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.lang_notf_new,localStorage.getItem("prof_"+acct_id)]); ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
} }
} }
@@ -204,11 +269,7 @@ 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)
@@ -217,6 +278,10 @@ function notfWS(misskey,acct_id,tlid,domain,at){
} }
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;
@@ -235,6 +300,31 @@ function notfWS(misskey,acct_id,tlid,domain,at){
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;
@@ -248,7 +338,6 @@ function notfWS(misskey,acct_id,tlid,domain,at){
} }
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") {
@@ -256,12 +345,11 @@ function notfWS(misskey,acct_id,tlid,domain,at){
$("[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);
@@ -394,12 +482,23 @@ 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()

View File

@@ -33,14 +33,6 @@ 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"){
@@ -231,14 +223,11 @@ 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="far fa-clock"></i>' + date(toot.created_at, 'absolute') + '('+lang.lang_parse_notftime+')"><i class="fa fa-clock-o"></i>' + date(toot.created_at,
datetype) + datetype) +
'</span><i class="big-text fas '+icon+'"></i><a onclick="udg(\'' + toot.account.id + '</span><i class="big-text fa '+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>";
@@ -251,28 +240,16 @@ 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"
}
} }
} }
@@ -280,23 +257,6 @@ 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;
@@ -363,7 +323,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 fas '+rticon+'"></i>'+ dis_name + "(@" + toot.account.acct + var notice = '<i class="big-text fa '+rticon+'"></i>'+ dis_name + "(@" + toot.account.acct +
")<br>"; ")<br>";
var boostback = "shared"; var boostback = "shared";
var uniqueid=toot.id; var uniqueid=toot.id;
@@ -416,7 +376,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="fas fa-lock red-text"></i>'; var locked = ' <i class="fa fa-lock red-text"></i>';
} else { } else {
var locked = ""; var locked = "";
} }
@@ -424,7 +384,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var via = ''; var via = '';
viashow="hide"; viashow="hide";
} else { } else {
var via = escapeHTML(toot.application.name); var via = toot.application.name;
//強調チェック //強調チェック
Object.keys(emp).forEach(function(key6) { Object.keys(emp).forEach(function(key6) {
var cli = emp[key6]; var cli = emp[key6];
@@ -481,40 +441,6 @@ 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{
@@ -530,7 +456,6 @@ 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);
}); });
} }
//ニコフレ絵文字 //ニコフレ絵文字
@@ -539,7 +464,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];
@@ -549,7 +474,6 @@ 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);
}); });
} }
//デフォ絵文字 //デフォ絵文字
@@ -566,9 +490,6 @@ 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="";
@@ -580,25 +501,16 @@ 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-link" style="width:calc(' + cwdt + '% - 1px); height:'+imh+';"><img draggable="false" src="' + '" data-type="' + media.type + '" class="img-parsed"><img draggable="false" src="' +
purl + '" class="' + sense + purl + '" class="' + sense +
' toot-img pointer">'+nsfwmes+'</a>'; ' toot-img pointer" style="width:' + cwdt + '%; height:'+imh+'px;"></a></span>';
}); });
media_ids = media_ids.slice(0, -1) ; media_ids = media_ids.slice(0, -1) ;
} else { } else {
@@ -775,15 +687,45 @@ 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;"> '+escapeHTML(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;"> '+value.name+'</span></div>';
break; break;
} }
} }
} }
} }
//Quote //Poll
if(toot.quote){ var 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>' if(toot.poll){
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 +
@@ -802,17 +744,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="far fa-clock"></i>' + '('+lang.lang_parse_clickcopyurl+')"><i class="fa 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="' +
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>' + poll + '</span>' +
'' + viewer + '' + '' + viewer + '' +
'</div><div class="area-additional"><span class="additional">' + analyze + '</div><div class="area-additional"><span class="additional">' + analyze +
'</span>' + '</span>' +
'' + mentions + tags + '</div>' + '' +poll+ 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>'+
@@ -821,27 +763,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="fas 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="fa 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="fas fa-retweet ' + '\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="'+lang.lang_parse_bt+'"><i class="fa 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 fas 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 fa 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="fas text-darken-3 fa-star' + '\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="'+lang.lang_parse_fav+'"><i class="fa 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="fas fa-trash"></i></a></div>' + ')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang.lang_parse_del+'"><i class="fa fa-trash-o"></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="fas 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="fa 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+
@@ -872,7 +814,6 @@ 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;
@@ -881,16 +822,15 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var notf=false; var notf=false;
} }
if (toot.locked) { if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>'; var locked = ' <i class="fa fa-lock red-text"></i>';
} else { } else {
var locked = ""; var locked = "";
} }
if (auth) { if (auth) {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' + var auth = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' + toot.id + '\',\'authorize\',' + acct_id + ')">person_add</i>';
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else { } else {
var authhtml = ""; var auth = "";
} }
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)){
@@ -976,13 +916,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 +'</span>' + toot.acct + locked + auth +'</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>' + authhtml+ '</div>' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'</div>'; '</div>';
@@ -994,6 +934,7 @@ 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;
@@ -1010,7 +951,7 @@ function client(name) {
if(!obj){ if(!obj){
var obj=[]; var obj=[];
obj.push(name); obj.push(name);
Materialize.toast(escapeHTML(name)+lang.lang_status_emphas, 2000); Materialize.toast(name+lang.lang_status_emphas, 2000);
}else{ }else{
var can; var can;
Object.keys(obj).forEach(function(key) { Object.keys(obj).forEach(function(key) {
@@ -1020,12 +961,12 @@ function client(name) {
}else{ }else{
can=true; can=true;
obj.splice(key, 1); obj.splice(key, 1);
Materialize.toast(escapeHTML(name)+lang.lang_status_unemphas, 2000); Materialize.toast(name+lang.lang_status_unemphas, 2000);
} }
}); });
if(!can){ if(!can){
obj.push(name); obj.push(name);
Materialize.toast(escapeHTML(name)+lang.lang_status_emphas, 2000); Materialize.toast(name+lang.lang_status_emphas, 2000);
}else{ }else{
} }
@@ -1036,12 +977,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){
obj=[]; var 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(escapeHTML(name)+lang.lang_parse_mute, 2000); Materialize.toast(name+lang.lang_parse_mute, 2000);
}else{ }else{
return; return;
} }

View File

@@ -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+'">'+escapeHTML(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+'">'+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="far fa-calendar-times"></i>' + '"><i class="fa fa-calendar-times-o"></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)
} }

View File

@@ -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"){
tsAdd(q) tootsearch(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">#' + escapeHTML(tag) + '</a><br> '; '\',\'add\')" class="pointer">#' + tag + '</a><br> ';
}else{ }else{
tags=tags+graphDraw(tag); tags=tags+graphDraw(tag);
} }
@@ -73,26 +73,9 @@ function src(mode) {
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
}); });
} }
function tsAdd(q){ function tootsearch(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: {
@@ -107,68 +90,17 @@ function tootsearch(tlid,q){
var templete=""; var templete="";
var json=raw.hits.hits; var json=raw.hits.hits;
console.log(json); console.log(json);
var max_id = raw["hits"].length; Object.keys(json).forEach(function(key5) {
for(var i=0;i<json.length;i++){ var toot = json[key5]["_source"];
var toot = json[i]["_source"];
console.log(lastid)
if(lastid!=toot.uri){
console.log(toot); console.log(toot);
if(toot && toot.account){ if(toot && toot.account){
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch") templete = templete+parse([toot],'noauth');
} }
}
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).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){ 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>';
} }
$("#timeline_" + tlid).append(templete); $("#src-contents").html("Tootsearch("+lang.lang_src_ts+")<br>" + templete);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
}); });
} }
@@ -186,13 +118,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&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id + '</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people; '\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+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&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id + '</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people; '\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people;
} }
return tags; return tags;

View File

@@ -65,7 +65,6 @@ 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> ';
}); });
@@ -97,7 +96,6 @@ 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>');
@@ -117,7 +115,6 @@ 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");

File diff suppressed because it is too large Load Diff

View File

@@ -287,10 +287,6 @@ function dlImg(){
console.log(arg); console.log(arg);
}) })
ipc.on('general-dl-message', function (event, arg) { ipc.on('general-dl-message', function (event, arg) {
var argC=arg.replace(/\\/g,"\\\\")+"\\\\."; console.log(arg);
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);
}

View File

@@ -20,7 +20,7 @@ $('.type').click(function() {
$("#type-sel").val($(this).attr("data-type")) $("#type-sel").val($(this).attr("data-type"))
}) })
//最初、カラム変更時に発火 //最初、カラム変更時に発火
function parseColumn(dontclose) { function parseColumn() {
console.log("parse"); console.log("parse");
var size = localStorage.getItem("size"); var size = localStorage.getItem("size");
if (size) { if (size) {
@@ -28,15 +28,13 @@ function parseColumn(dontclose) {
$(".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");
} }
if(localStorage.getItem("menu-done")){
$("#fukidashi").addClass("hide")
}
if(!dontclose){
tlCloser(); 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;
@@ -52,11 +50,6 @@ function parseColumn(dontclose) {
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;
@@ -137,21 +130,6 @@ function parseColumn(dontclose) {
} }
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) {
@@ -164,15 +142,14 @@ function parseColumn(dontclose) {
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="fas 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="fa 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="fas 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="fa 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="fas 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="fa 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="fas 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="fa 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="fas fa-retweet waves-effect nex" title="'+lang.lang_layout_excludingbt +'" style="font-size:24px"></i><span id="sta-bt-' + ')" 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-' +
key + '">Off</span></a>'+lang.lang_layout_excludingbt+'<br>'; key + '">Off</span></a>'+lang.lang_layout_excludingbt+'<br>';
}else{ }else{
var exclude=""; var exclude="";
@@ -188,17 +165,9 @@ function parseColumn(dontclose) {
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 '+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"><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_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_' +
@@ -209,7 +178,7 @@ function parseColumn(dontclose) {
')" 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" class="notf-timeline"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key + '" data-notf="' + acct.domain + '" data-type="notf"></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 +
@@ -217,8 +186,8 @@ function parseColumn(dontclose) {
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+'\',\''+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 + ',\''+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 +
'" 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>' '" 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>'
$('#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) {
@@ -270,15 +239,6 @@ function parseColumn(dontclose) {
} }
} }
} }
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"){
@@ -464,7 +424,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="fab fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>'+ '<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_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 +
@@ -473,42 +433,11 @@ 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:100%;"><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:calc(100% - 110px);"><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);

View File

@@ -1,6 +1,4 @@
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");
@@ -21,8 +19,6 @@ 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")

View File

@@ -5,10 +5,6 @@ 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() {

View File

@@ -123,10 +123,6 @@ 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(){
@@ -141,13 +137,12 @@ 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 +
'.' + '.' +
escapeHTML(cli) + '<button class="btn waves-effect red disTar" onclick="cliMuteDel(' + 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);
}); });
@@ -159,7 +154,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);
climute(); mute();
} }
function wordmute(){ function wordmute(){
@@ -641,22 +636,6 @@ 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();
@@ -669,4 +648,3 @@ oksload();
npprovider(); npprovider();
ctLoad() ctLoad()
}; };

View File

@@ -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, escapeHTML(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, 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,8 +58,6 @@ 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);
} }
@@ -103,7 +101,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("Sorted", 3000); Materialize.toast("並べ替え完了。", 3000);
sortload(); sortload();
parseColumn(); parseColumn();
sortMenu() sortMenu()

View File

@@ -63,6 +63,7 @@ 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");
@@ -123,16 +124,8 @@ 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"){
@@ -142,12 +135,14 @@ 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(flag && arg.path){ if(!uploadnow && 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(flag && arg.existsArtwork){ if(!uploadnow && flag && arg.artworks[0]){
media(arg.artworks[0].data,"image/png","new"); uploadnow=true;
ipc.send('bmp-image', [arg.artworks[0].path,0]);
} }
} }
var regExp = new RegExp("{song}", "g"); var regExp = new RegExp("{song}", "g");
@@ -219,3 +214,49 @@ $("#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);
});
}

View File

@@ -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(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)+"%)") $("#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)+"%)")
}) })
} }
//トレンドタグ //トレンドタグ
@@ -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">#' + 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>'; 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>';
}); });
$("#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()

View File

@@ -438,11 +438,10 @@ 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"){
if(localStorage.getItem("mode_" + domain)!="misskey"){ var templete = userparse(json, 'true',acct_id);
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]){
@@ -554,51 +553,6 @@ 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() {

View File

@@ -105,7 +105,6 @@ 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];
@@ -118,18 +117,12 @@ 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+'" draggable="false">'; '" class="emoji-img" data-emoji="'+shortcode+'">';
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);
@@ -150,14 +143,8 @@ 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;
if(json.fields[i].verified_at){ fval=twemoji.parse(fval);
var when=lang.lang_showontl_verified+":"+crat(json.fields[i].verified_at); note=note+'<tr><td class="his-field-title">'+fname+'</td><td class="his-field-content">'+fval+'</td></tr>';
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));
@@ -170,7 +157,6 @@ 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);
@@ -184,10 +170,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){
if(json.fields[0]){$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));} $("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));
if(json.fields[1]){$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));} $("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));
if(json.fields[2]){$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));} $("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));
if(json.fields[3]){$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));} $("#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")
@@ -207,8 +193,6 @@ 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) {
@@ -278,7 +262,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=escapeHTML(json.description); var note=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("😺"));
@@ -408,12 +392,6 @@ 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()
}
}); });
} }
@@ -475,9 +453,6 @@ 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");

75
app/language.html Normal file
View File

@@ -0,0 +1,75 @@
<!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>

View File

@@ -1,5 +1,5 @@
// Create the Application's main menu // Create the Application's main menu
function templete(lang,mainWindow,packaged,dir){ function templete(lang,mainWindow){
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,packaged,dir){
"transparent": false, // ウィンドウの背景を透過 "transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ "frame": false, // 枠の無いウィンドウ
"resizable": false }); "resizable": false });
window.loadURL(dir + '/about.html?ver='+ver); window.loadURL('file://' + __dirname + '/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,packaged,dir){
{ {
label: 'Toggle Developer Tools', label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I', accelerator: 'Alt+Command+I',
click: function() { if(!packaged){mainWindow.toggleDevTools();} } click: function() { mainWindow.toggleDevTools(); }
}, },
{ {
label: dict.reload[lang], label: dict.reload[lang],

View File

@@ -1,26 +1,33 @@
'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 language = require('./main/language.js'); const dialog = require('electron').dialog;
const css = require('./main/css.js'); var Jimp = require("jimp");
const dl = require('./main/dl.js'); const shell = electron.shell;
const img = require('./main/img.js'); const os = require('os')
const np = require('./main/np.js'); const path = require('path')
const systemFunc = require('./main/system.js'); const fm = require('font-manager');
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');
@@ -50,14 +57,19 @@ try {
}; // デフォルトバリュー }; // デフォルトバリュー
} }
function isFile(file){ try {
try { var lang = fs.readFileSync(lang_path, 'utf8');
fs.statSync(file); } catch (e) {
return true var langs=app.getLocale();
} catch (err) { if(~langs.indexOf("ja")){
if (err.code === 'ENOENT') return false lang="ja";
}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') {
@@ -65,31 +77,8 @@ 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;
@@ -118,7 +107,7 @@ function createWindow() {
}else{ }else{
var plus=""; var plus="";
} }
mainWindow.loadURL(base+lang+'/index.html'+plus); mainWindow.loadURL('file://' + __dirname + '/view/'+lang+'/index.html'+plus);
if(!window_size.x && !window_size.y){ if(!window_size.x && !window_size.y){
mainWindow.center(); mainWindow.center();
} }
@@ -127,7 +116,6 @@ 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() {
@@ -150,23 +138,529 @@ 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,false,dir))); Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow)));
} }
//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')

View File

@@ -1,105 +0,0 @@
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;

View File

@@ -1,123 +0,0 @@
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;

View File

@@ -1,71 +0,0 @@
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;

View File

@@ -1,71 +0,0 @@
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;

View File

@@ -1,181 +0,0 @@
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;

2404
app/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,25 +1,23 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "18.4.0", "version": "18.1.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": ["mastodon","client","electron","thedesk"], "keywords": [],
"bugs": { "bugs": {
"url": "https://github.com/cutls/TheDesk/issues", "url": "https://github.com/cutls/TheDesk/issues",
"email": "web-pro@cutls.com" "email": "mstdn@thedesk.top"
}, },
"homepage": "https://thedesk.top", "homepage": "https://thedesk.top",
"author": { "author": {
"name": "Cutls", "name": "Cutls",
"url": "https://cutls.com/@Cutls", "url": "https://kirishima.clooud/@Cutls",
"email": "web-pro@cutls.com" "email": "web-pro@cutls.com"
}, },
"contributor": [ "contributor": [
@@ -35,13 +33,14 @@
}, },
{ {
"name": "kPherox", "name": "kPherox",
"url": "https://pawoo.net/@kPherox", "url": "https://www.kr-kp.com/",
"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",
@@ -49,16 +48,12 @@
"vue": "^2.6.9" "vue": "^2.6.9"
}, },
"optionalDependencies": { "optionalDependencies": {
"nowplaying-node": "git+https://github.com/cutls/nowplaying-node", "nowplaying-node": "^0.1.3",
"itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/4/head", "itunes-nowplaying-mac": "git+https://github.com/rinsuki/itunes-nowplaying-mac#pull/1/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"
}, },
@@ -88,23 +83,22 @@
"linux": { "linux": {
"icon": "build/icons", "icon": "build/icons",
"target": [ "target": [
"zip" "snap"
], ],
"category": "Network" "category": "Network"
}, },
"mac": { "mac": {
"target": [ "target": "dmg"
"dmg",
"zip"
]
}, },
"electronDownload": { "electronDownload": {
"version": "4.2.0" "version": "4.0.6"
}, },
"electronVersion": "4.2.0" "electronVersion": "4.0.6"
}, },
"devDependencies": { "devDependencies": {
"electron": "^4.2.0", "electron": "^4.0.6",
"electron-builder": "^20.39.0" "electron-packager": "^13.0.1",
"electron-prebuilt": "^1.4.13",
"electron-rebuild": "^1.8.4"
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -18,14 +18,6 @@ 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">
<!-- <!--
@@ -47,27 +39,24 @@ 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>
<div class="hide-first"> <a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br> <h5>List of accounts</h5>
<h5>List of accounts</h5> <div id="acct-list"></div>
<div id="acct-list"></div> <div class="divider"></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 s8"> <div class="col s6">
<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>
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br> Check if TheDesk is not working on Windows, you want to login Pleroma servers, you cannot login when it checked.<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 s4"> <div class="col s6">
<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>
@@ -84,8 +73,6 @@ 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>
@@ -104,7 +91,6 @@ 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>

View File

@@ -1,18 +1,16 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<title>TheDesk</title> <title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport"> <meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet"> <link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" <link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet"> <link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css"> <link href='../../css/tl.css' rel='stylesheet' type='text/css'>
<link href="../../css/userdata.css" rel="stylesheet" type="text/css"> <link href='../../css/userdata.css' rel='stylesheet' type='text/css'>
<link href="../../css/post.css" rel="stylesheet" type="text/css"> <link href='../../css/post.css' rel='stylesheet' type='text/css'>
<link href="../../css/master.css" type="text/css" rel="stylesheet"> <link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/sort.css" rel="stylesheet" type="text/css"> <link href='../../css/sort.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<meta charset="utf-8"> <meta charset="utf-8">
<!-- <!--
@@ -23,187 +21,158 @@
<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>
--> -->
</head> </head>
<body> <body>
<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 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/blurhash.js"></script> <script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script> <script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script> <script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script> <script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script> <script>
<script> var ver="Usamin (18.1.0)";
var ver = "Usamin (18.4.0)"; //betaを入れるとバージョンチェックしない
//betaを入れるとバージョンチェックしない //GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html) //var ver="beta";
//var ver="beta"; //WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除 var acct_id=0;
var acct_id = 0; var tlid=0;
var tlid = 0; verck(ver);
</script> </script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea> <textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<canvas id="canvas" style="top:-100px; position:fixed;width:32px;height:32px" width="32" height="32"></canvas> <div id="tl">
<div id="tl"> <!--TL-->
<!--TL--> <!--ドラッグハンドラ-->
<!--ドラッグハンドラ--> <div id="drag">
<div id="drag"> <div id="drag-content" data-trans="drag_here">Drag here to upload
<div id="drag-content" data-trans="drag_here">Drag here to upload <br>
<br> <button class="btn waves-effect" onclick="closedrop()" data-trans="close">Close</button>
<button class="btn waves-effect" onclick="closedrop()" data-trans="close">Close</button> </div>
</div> </div>
</div> </div>
</div> <div id="post-box" class="z-depth-5">
<div id="post-box" class="z-depth-5"> <div id="post-bar" class="drag-bar">Post new</div>
<div id="post-bar" class="drag-bar"><span id="unreact">Post new</span><span id="addreact" <!--トゥートボックス-->
class="hide">Reaction</span></div> <div id="left-side">
<!--トゥートボックス--> <div class="row" style="margin-bottom:0;">
<div id="left-side"> </span>
<div class="row" style="margin-bottom:0;"> <div class="" style="float:left;">
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize">
<img src="../../img/missing.svg" id="acct-sel-prof" title="Show profile of the selecting account(Ctrl+Shift+P)" data-trans-title="post_box_prof" width="24px">
</a>
</div>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="Close this box(X)" data-trans-title="post_box_close">cancel</i>
</span> </span>
<div class="" style="float:left;"> <!--Markdown-->
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize"> <div class="row" style="margin-bottom:0">
<img src="../../img/missing.svg" id="acct-sel-prof" title="Show profile of the selecting account(Ctrl+Shift+P)" <div class="markdown mize hide">
data-trans-title="post_box_prof" width="24px"> <div class="col s12">
</a> <i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
</div> <i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select> <i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
</div> <i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<span class="cancel"> <i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons waves-effect" onclick="hide()" title="Close this box(X)" <i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
data-trans-title="post_box_close">cancel</i> <i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
</span> <i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<!--Markdown--> <i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<div class="row" style="margin-bottom:0"> <i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<div class="markdown mize hide"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<div class="col s12"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i> <i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" <span class="sml gray pointer waves-effect">
title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i> <a onclick="mdToggle()">Markdownエディタを隠す</a>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" </span>
title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i> <br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i> <input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
title="引用">format_quote</i> <input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" <br>
title="見出し">short_text</i> <i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" <input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i> <input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" <br>
title="箇条書きリスト">format_list_bulleted</i> <i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" <input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
title="番号付きリスト">format_list_numbered</i> <input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
<i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" </div>
title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i> </div>
<i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" <div class="input-field col s12" id="preview-field" style="margin-top: 0;">
title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i> <div id="md-preview">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" </div>
title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i> <span class="sml gray pointer">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" <a onclick="previewEdit()">Edit</a>
title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i> </span>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" </div>
title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i> <div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')"
title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')"
title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')"
title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
<input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()"
title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
<input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0;">
<div id="md-preview">
</div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" <textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" data-length="500"></textarea>
data-length="500"></textarea> <label for="textarea" data-trans="toot">Toot</label>
<label for="textarea" data-trans="toot">Toot</label> <br>
<br> <span class="sml gray pointer markdown mize" id="preview-btn">
<span class="sml gray pointer markdown mize" id="preview-btn"> <a onclick="preview()">Preview</a>
<a onclick="preview()">Preview</a> </span>
</span> <span class="sml gray pointer anti-markdown mize">
<span class="sml gray pointer anti-markdown mize"> <a onclick="mdToggle()">Markdownエディタを表示</a>
<a onclick="mdToggle()">Markdownエディタを表示</a> </span>
</span> </div>
</div> <div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between"> <i class="waves-effect gray material-icons" id="nsfw" title="Mark media as sensitive" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons" id="nsfw" title="Mark media as sensitive" <i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1' id="vis-icon">public</i>
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1'
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="Hide text behind warning">CW</a> <a class="waves-effect gray" id="cw" onclick="cw()" title="Hide text behind warning">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" <span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" onclick="fileselect()" title="Attach..">photo_library</i></span></span>
onclick="fileselect()" title="Attach..">photo_library</i></span></span> <i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="Emojis">tag_faces</i>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="Emojis">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button" data-activates='dropdown2'>more_vert</i> <i class="waves-effect gray material-icons dropdown-button" data-activates='dropdown2'>more_vert</i>
<i class="material-icons nex gray waves-effect" title="Clear toot box(Ctrl+Shit+C)" <i class="material-icons nex gray waves-effect" title="Clear toot box(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
data-trans-title="post_box_clear" id="clear">clear</i> </div>
</div> <div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div id="taglist"></div> <div id="taglist"></div>
<div id="preview" class="mize"></div> <div id="preview" class="mize"></div>
<span class=" sml mize"><span data-trans="reply">Reply</span>: <span class=" sml mize"><span data-trans="reply">Reply</span>:
<span id="rec">No</span>/<span data-trans="file">Attaching files</span>: <span id="rec">No</span>/<span data-trans="file">Attaching files</span>:
<span id="mec">None</span>/<span data-trans="vis">Adjust status privacy</span>: <span id="mec">None</span>/<span data-trans="vis">Adjust status privacy</span>:
<span id="vis">public</span> <span id="vis">public</span>
</span> </span>
<br> <br>
<input type="text" id="cw-text" placeholder="Warning text" class="mize" style="margin:0"> <input type="text" id="cw-text" placeholder="Warning text" class="mize" style="margin:0">
<div id="sch-box">Post at<br><span class="sml">2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)</span><br> <div id="sch-box">Post at<br><span class="sml">2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)</span><br>
<input type="datetime-local" id="sch-date" placeholder="Scheduled toot" class="datepicker" style="margin:0"> <input type="datetime-local" id="sch-date" placeholder="Scheduled toot" class="datepicker" style="margin:0">
</div> </div>
</div> </div>
</div> </div>
<!-- 公開範囲 Dropdown Structure --> <!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'> <ul id='dropdown1' class='dropdown-content'>
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">Adjust status privacy</li> <li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">Adjust status privacy</li>
<li> <li>
<a onclick="vis('public')">(Public)</a> <a onclick="vis('public')">(Public)</a>
</li> </li>
<li> <li>
<a onclick="vis('unlisted')">(Unlisted)</a> <a onclick="vis('unlisted')">(Unlisted)</a>
</li> </li>
<li> <li>
<a onclick="vis('private')" id="private-button">(Private)</a> <a onclick="vis('private')" id="private-button">(Private)</a>
</li> </li>
<li id="limited-button" class="hide"> <li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a> <a onclick="vis('limited')">限定公開(Limited)</a>
</li> </li>
<li id="local-button" class="hide"> <li id="local-button" class="hide">
<a onclick="vis('local')">Local only(Local)</a> <a onclick="vis('local')">Local only(Local)</a>
</li> </li>
<li> <li>
<a onclick="vis('direct')" class="disabled direct">(Direct)</a> <a onclick="vis('direct')" class="disabled direct">(Direct)</a>
</li> </li>
</ul> </ul>
<!-- その他 Dropdown Structure --> <!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'> <ul id='dropdown2' class='dropdown-content'>
<li> <li>
<a onclick="adobe()">Adobe Photo Editor</a> <a onclick="adobe()">Adobe Photo Editor</a>
</li> </li>
@@ -220,37 +189,34 @@
<a onclick="pollToggle();">Poll</a> <a onclick="pollToggle();">Poll</a>
</li> </li>
</ul> </ul>
<!--hidden area--> <!--hidden area-->
<input type="hidden" id="reply"> <input type="hidden" id="reply">
<input type="hidden" id="media"> <input type="hidden" id="media">
<!--END hidden area--> <!--END hidden area-->
</div> </div>
<div id="toot-btn-field"> <div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()" <button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()" id="toot-post-btn">Toot</button>
id="toot-post-btn">Toot</button> <button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon" title="Secondary Toot">lock_open</i></button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn"><i </div>
class="material-icons" id="toot-sec-icon" title="Secondary Toot">lock_open</i></button> </div>
</div> <div id="right-side">
</div> <div id="suggest"></div>
<div id="right-side"> <!--絵文字ピッカー-->
<div id="suggest"></div> <div id="emoji" class="hide">
<!--絵文字ピッカー-->
<div id="emoji" class="hide">
<span class="gray sml"> <span class="gray sml">
<a onclick="emojiGet('true')" class="pointer">Refresh emojis list</a> <a onclick="emojiGet('true')" class="pointer">Refresh emojis list</a>
<i class="material-icons waves-effect" onclick="emojiToggle()" title="Close this box" data-trans-title="post_box_close">cancel</i>
<br> <br>
</span> </span>
<div id="emoji-list" class="" style=""> <div id="emoji-list" class="" style="">
</div> </div>
<div class="emoji-control center"> <div class="emoji-control center">
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" <button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" id="emoji-before">
id="emoji-before">
<i class="material-icons">navigate_before</i> <i class="material-icons">navigate_before</i>
</button> </button>
<span id="emoji-count"></span>/ <span id="emoji-count"></span>/
<span id="emoji-sum"></span> <span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" <button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" id="emoji-next">
id="emoji-next">
<i class="material-icons">navigate_next</i> <i class="material-icons">navigate_next</i>
</button> </button>
</div> </div>
@@ -285,7 +251,7 @@
<i class="material-icons">flag</i> <i class="material-icons">flag</i>
</a> </a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn"> <a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fab fa-fort-awesome"></i> <i class="fa fa-fort-awesome"></i>
</a> </a>
</div> </div>
</div> </div>
@@ -293,8 +259,12 @@
<div id="poll" class="hide"> <div id="poll" class="hide">
<select id="poll-sel" onchange="pollProviderCk()"> <select id="poll-sel" onchange="pollProviderCk()">
<option value="nothing">Polls: Disabled</option> <option value="nothing">Polls: Disabled</option>
<option value="votedon">votedon.</option>
<option value="mastodon-poll">Mastodon(2.8~)</option> <option value="mastodon-poll">Mastodon(2.8~)</option>
</select> </select>
<div id="votedon" class="poll-provider hide">
WIP
</div>
<div id="mastodon-poll" class="poll-provider hide"> <div id="mastodon-poll" class="poll-provider hide">
<input type="text" class="mastodon-choice" placeholder="Choice1"> <input type="text" class="mastodon-choice" placeholder="Choice1">
<input type="text" class="mastodon-choice" placeholder="Choice2"> <input type="text" class="mastodon-choice" placeholder="Choice2">
@@ -304,38 +274,17 @@
<label for="poll-multiple">Multiple select</label><br> <label for="poll-multiple">Multiple select</label><br>
<input type="checkbox" class="filled-in" id="poll-until" value="1" /> <input type="checkbox" class="filled-in" id="poll-until" value="1" />
<label for="poll-until">Hide 'votes' count until people vote it.</label><br> <label for="poll-until">Hide 'votes' count until people vote it.</label><br>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">day(s) <input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">days
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">hour(s) <input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">hours
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6">minute(s) <input type="number" style="width:50px" id="mins_poll" placeholder="m" value="0">minutes
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Modal Structure Tootdata--> <!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer"> <div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content"> <div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col"> <ul class="collapsible" data-collapsible="accordion" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>Local TL after this toot)
</div>
<div class="collapsible-body toot-reset" id="ltl-after">
</div>
</li>
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">person_outline</i>User TL before this toot
</div>
<div class="collapsible-body toot-reset" id="user-after">
</div>
</li>
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">language</i>Federated TL after this toot
</div>
<div class="collapsible-body toot-reset" id="ftl-after">
</div>
</li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">arrow_upward</i>Context before this toot <i class="material-icons">arrow_upward</i>Context before this toot
@@ -347,7 +296,7 @@
<div class="collapsible-header" id="activator"> <div class="collapsible-header" id="activator">
<i class="material-icons">more_horiz</i>This toot <i class="material-icons">more_horiz</i>This toot
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body" >
<div class="toot-reset" id="toot-this"></div> <div class="toot-reset" id="toot-this"></div>
</div> </div>
</li> </li>
@@ -381,29 +330,26 @@
</li> </li>
<li class="dm-hide"> <li class="dm-hide">
<div class="collapsible-header"> <div class="collapsible-header">
<i class="text-darken-3 false fas fa-retweet"></i>People who boosted it <i class="text-darken-3 fa fa-retweet"></i>People who boosted it
</div> </div>
<div class="collapsible-body toot-reset" id="toot-rt"> <div class="collapsible-body toot-reset" id="toot-rt">
</div> </div>
</li> </li>
</ul> </ul>
<div class="dm-hide"> <div class="dm-hide">
Use other account(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>:unfav and unBT are disabled.)<br> Use other account(<i class="fa fa-retweet"></i>/<i class="fa fa-star"></i>:unfav and unBT are disabled.)<br>
<div class="row"> <div class="row">
<div class="col s6"> <div class="col s6">
<select id="status-acct-sel" class="acct-sel"></select> <select id="status-acct-sel" class="acct-sel"></select>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i <button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i class="fa fa-share"></i>/button>
class="fas fa-share"></i></button>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i <button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i class="fa fa-retweet"></i></button>
class="fas fa-retweet"></i></button>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i <button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i class="fa fa-star"></i></button>
class="fas fa-star"></i></button>
</div> </div>
</div> </div>
<div id="toot-tools"> <div id="toot-tools">
@@ -411,9 +357,10 @@
<div id="toot-after"> <div id="toot-after">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">Open in browser</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">Open in browser</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="shot()">Take a screenshot</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">Copy URL of this toot</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">Copy URL of this toot</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">Embed</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">Embed</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a> <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -425,7 +372,7 @@
<div id="his-data-show"> <div id="his-data-show">
<div class="his-float" id="his-float-data"> <div class="his-float" id="his-float-data">
<div id="his-basic-prof"> <div id="his-basic-prof">
<img src="../../img/loading.svg" id="his-prof" draggable="false"> <img src="../../img/loading.svg" id="his-prof">
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span> <span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
<br>@ <br>@
<span id="his-acct"></span><br> <span id="his-acct"></span><br>
@@ -443,16 +390,12 @@
<span class="cbadge" style="max-width:150px; width:150px; ">Since: <span class="cbadge" style="max-width:150px; width:150px; ">Since:
<span id="his-since"></span> <span id="his-since"></span>
</span> </span>
<div id="his-proof-prof"></div>
</div> </div>
<div id="his-des" data-acct=""></div><br> <div id="his-des"></div><br>
<div id="his-plus-action"> <div id="his-plus-action">
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-emp-btn" <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-emp-btn" onclick="empUser()">Emphasize this user</a>
onclick="empUser()">Emphasize this user</a> <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data" id="his-end-btn" onclick="pinUser()">Feature on profile</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data" id="his-end-btn" <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin" onclick="profbrws()">Open in browser</a><br>
onclick="pinUser()">Feature on profile</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">Open in browser</a><br>
</div><br> </div><br>
<div id="his-matching-list"> <div id="his-matching-list">
Get people resembling this user.<br> Get people resembling this user.<br>
@@ -489,8 +432,7 @@
<a go="#his-blocking-list" title="Blocks"><i class="material-icons">voice_over_off</i></a> <a go="#his-blocking-list" title="Blocks"><i class="material-icons">voice_over_off</i></a>
</li> </li>
<li class="custom-tab col my-data-width only-my-data"> <li class="custom-tab col my-data-width only-my-data">
<a go="#his-domain-list" title="Domain block"><i class="material-icons">language</i><i <a go="#his-domain-list" title="Domain block"><i class="material-icons">language</i><i class="material-icons">block</i></a>
class="material-icons">block</i></a>
</li> </li>
<li class="custom-tab col my-data-width only-my-data"> <li class="custom-tab col my-data-width only-my-data">
<a go="#his-prof-list" title="Edit profile"><i class="material-icons">create</i></a> <a go="#his-prof-list" title="Edit profile"><i class="material-icons">create</i></a>
@@ -506,20 +448,17 @@
<div id="his-tl" class="tab-content"> <div id="his-tl" class="tab-content">
<div id="his-tl-contents" class="cont-series"> <div id="his-tl-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="utl('--now','more')">More</button>
onclick="utl('--now','more')">More</button>
</div> </div>
<div id="his-follow-list" class="tab-content"> <div id="his-follow-list" class="tab-content">
<div id="his-follow-list-contents" class="cont-series"> <div id="his-follow-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="flw('--now','more')">More</button>
onclick="flw('--now','more')">More</button>
</div> </div>
<div id="his-follower-list" class="tab-content"> <div id="his-follower-list" class="tab-content">
<div id="his-follower-list-contents" class="cont-series"> <div id="his-follower-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="fer('--now','more')">More</button>
onclick="fer('--now','more')">More</button>
</div> </div>
<div id="his-action" class="tab-content"> <div id="his-action" class="tab-content">
Use other account to Follow((Unable to unfollow))<br> Use other account to Follow((Unable to unfollow))<br>
@@ -539,7 +478,7 @@
<button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">More</button> <button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">More</button>
</div> </div>
<div id="his-blocking-list" class="tab-content"> <div id="his-blocking-list" class="tab-content">
<div id="his-blocking-list-contents" class="cont-series"> <div id="his-blocking-list-contents"class="cont-series" >
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">More</button> <button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">More</button>
</div> </div>
@@ -551,8 +490,7 @@
<div id="his-domain-list" class="tab-content"> <div id="his-domain-list" class="tab-content">
<div id="his-domain-list-contents" class="cont-series"> <div id="his-domain-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="showDom('more')">More</button>Add blocking domain
onclick="showDom('more')">More</button>Add blocking domain
<br> <br>
<input type="text" placeholder="example.com" id="domainblock"> <input type="text" placeholder="example.com" id="domainblock">
<button class="btn waves-effect" onclick="addDomainblock()">Add</button> <button class="btn waves-effect" onclick="addDomainblock()">Add</button>
@@ -587,20 +525,13 @@
</div> </div>
</div> </div>
</div> </div>
<div class="his-float" id="his-float-blocked">
<div>You are blocked. Why?</div>
</div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" <button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">Back</button>
onclick="historyShow()">Back</button> <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" onclick="follow()">Follow</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn" onclick="mute()">Mute</a>
onclick="follow()">Follow</a> <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn" onclick="block()">Block</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">Mute</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">Block</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a> <a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
</div> </div>
</div> </div>
@@ -639,7 +570,7 @@
<!-- Modal Structure Video--> <!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer"> <div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content"> <div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls> <video src="" id="video" style="max-width:100%; max-height:100%;" controls >
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a> <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -652,37 +583,36 @@
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Usamin_18-4-0" class="release-do" style="display:none; "> <div id="release-Usamin_18-1-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.4.0)</h5> <h5>Release Note Usamin (18.1.0)</h5>
・ソフトウェア(通知音などのアセットを含むTheDeskオリジナル制作物)のコピーライトをTheDeskに統一。Cutls PをMain Developer(author)に。<br> ・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
・Misskey v11のストリーミングに対応(初期取得の投稿のリアクションは自動取得できません。)<br> ・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
・その他Misskeyのさまざまな挙動を修正、追加しました。<br> ・画像を個別に削除する(画像をクリックして)<br>
・NSFWメディアが複数あったときに「NSFW Media」の文字が邪魔で複数段になる不具合を修正<br> ・何個もアルバムアートワークが投稿されるバグを修正<br>
・フォローリクエストの許可/拒否ができるように。<br> ・Misskeyでログインしたまま何もできないバグを修正(権限回り)
・起動時に通知のストリーミングにつながらない不具合を修正<br>
<br>
</div> </div>
<div id="release-en" style="display:none"> <div id="release-en">
<h5>Let's make it native!</h5> <h5>Let's make it native!</h5>
<a href="https://translate.thedesk.top">Crowdin translation project</a> <a href="https://translate.thedesk.top">Crowdin translation project</a>
</div> </div>
<br><br> <br><br>
<h3>Support TheDesk!</h3> <h3>Support TheDesk!</h3>
TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!<br> TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!<br>
<a class="btn-share btn waves-effect waves-light red lighten-2" <a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> Support on Enty
Support on Pixiv FANBOX
</a> </a>
<a class="btn-share btn waves-effect waves-light blue" <a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> Osushi.love: give me sushi
</a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
Amazon Wish List Amazon Wish List
</a> </a>
<br> <br>
Give me Amazon Gift Card:<a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a><br> Give me Amazon Gift Card:<a href="mailto:mstdn@thedesk.top" target="_blank">mstdn@thedesk.top</a><br>
Kyash<br> Kyash<br>
<img src="../../img/kyash.png" width="100"><br> <img src="../../img/kyash.png" width="100"><br>
</div> </div>
@@ -698,31 +628,25 @@
<div id="pip-content"> <div id="pip-content">
</div> </div>
</div> </div>
<!--menu--> <!--menu-->
<div id="menu" class="z-depth-5" style="display:none"> <div id="menu" class="z-depth-5" style="display:none">
<div id="menu-bar" class="drag-bar"></div> <div id="menu-bar" class="drag-bar"></div>
<span class="cancel"> <span class="cancel">
<i class="material-icons waves-effect" onclick="menu()" title="Close this box(X)">cancel</i> <i class="material-icons waves-effect" onclick="menu()" title="Close this box(X)">cancel</i>
</span> </span>
<div id="menu-wrapper"> <div id="menu-wrapper">
<div id="left-menu"> <div id="left-menu">
<div class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"><i <div class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"><i class="material-icons">add</i><span>Add a column</span></div>
class="material-icons">add</i><span>Add a column</span></div> <div class="waves-effect" onclick="sortMenu()" id="sortMenu"><i class="material-icons">sort</i><span>Sort</span></div>
<div class="waves-effect" onclick="sortMenu()" id="sortMenu"><i <div class="waves-effect" onclick="searchMenu()" id="searchMenu"><i class="material-icons">search</i><span>Search</span></div>
class="material-icons">sort</i><span>Sort</span></div> <div class="waves-effect" onclick="listMenu()" id="listMenu"><i class="material-icons">view_headline</i><span>List</span></div>
<div class="waves-effect" onclick="searchMenu()" id="searchMenu"><i <div class="waves-effect" onclick="filterMenu()" id="filterMenu"><i class="material-icons">filter_list</i><span>Filter</span></div>
class="material-icons">search</i><span>Search</span></div>
<div class="waves-effect" onclick="listMenu()" id="listMenu"><i
class="material-icons">view_headline</i><span>List</span></div>
<div class="waves-effect" onclick="filterMenu()" id="filterMenu"><i
class="material-icons">filter_list</i><span>Filter</span></div>
<div class="waves-effect" onclick="help()"><i class="material-icons">help_outline</i><span>Help</span></div> <div class="waves-effect" onclick="help()"><i class="material-icons">help_outline</i><span>Help</span></div>
<div class="waves-effect" onclick="location.href='index.html'"><i <div class="waves-effect" onclick="location.href='index.html'"><i class="material-icons">refresh</i><span>Reload TL</span></div>
class="material-icons">refresh</i><span>Reload TL</span></div>
</div> </div>
<div id="right-menu"> <div id="right-menu">
<!--カラム追加--> <!--カラム追加-->
<div id="add-box" class="hide menu-content"> <div id="add-box" class="hide menu-content">
<div class="input-field"><span data-trans="your_acct">Account(Scroll to show all)</span> <div class="input-field"><span data-trans="your_acct">Account(Scroll to show all)</span>
<br> <br>
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select> <select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
@@ -733,47 +657,24 @@
<input type="hidden" value="local" id="type-sel"> <input type="hidden" value="local" id="type-sel">
Show this TL: Show this TL:
<div id="tltype"> <div id="tltype">
<div class="type waves-effect active" data-type="local"> <div class="type waves-effect active" data-type="local"><div><i class="material-icons">people_outline</i></div><span>Local</span></div>
<div><i class="material-icons">people_outline</i></div><span>Local</span> <div class="type waves-effect" data-type="local-media"><div><i class="material-icons">people_outline</i><i class="material-icons sub-icon">perm_media</i></div><span>Local(Media)</span></div>
</div> <div class="type waves-effect" data-type="home"><div><i class="material-icons">home</i></div><span>Home</span></div>
<div class="type waves-effect" data-type="local-media"> <div class="type waves-effect" data-type="pub"><div><i class="material-icons">language</i></div><span>Federated</span></div>
<div><i class="material-icons">people_outline</i><i class="material-icons sub-icon">perm_media</i> <div class="type waves-effect" data-type="pub-media"><div><i class="material-icons">language</i><i class="material-icons sub-icon">perm_media</i></div><span>Federated(Media)</span></div>
</div><span>Local(Media)</span> <div class="type waves-effect" data-type="dm"><div><i class="material-icons">mail_outline</i></div><span>Direct Message</span></div>
</div> <div class="type waves-effect" data-type="mix"><div><i class="material-icons">merge_type</i></div><span>Integrated(Local/Home)</span></div>
<div class="type waves-effect" data-type="home"> <div class="type waves-effect" data-type="plus"><div><i class="material-icons">merge_type</i><i class="material-icons sub-icon">reply</i></div><span>LTL+Reply+BT</span></div>
<div><i class="material-icons">home</i></div><span>Home</span> <div class="type waves-effect" data-type="notf"><div><i class="material-icons">notifications</i></div><span>Notifications</span></div>
</div>
<div class="type waves-effect" data-type="pub">
<div><i class="material-icons">language</i></div><span>Federated</span>
</div>
<div class="type waves-effect" data-type="pub-media">
<div><i class="material-icons">language</i><i class="material-icons sub-icon">perm_media</i></div>
<span>Federated(Media)</span>
</div>
<div class="type waves-effect" data-type="dm">
<div><i class="material-icons">mail_outline</i></div><span>Direct Message</span>
</div>
<div class="type waves-effect" data-type="mix">
<div><i class="material-icons">merge_type</i></div><span>Integrated(Local/Home)</span>
</div>
<div class="type waves-effect" data-type="plus">
<div><i class="material-icons">merge_type</i><i class="material-icons sub-icon">reply</i></div>
<span>LTL+Reply+BT</span>
</div>
<div class="type waves-effect" data-type="notf">
<div><i class="material-icons">notifications</i></div><span>Notifications</span>
</div>
</div> </div>
</div> </div>
<div id="noauth" class="hide">Show this TL: <div id="noauth" class="hide">Show this TL:
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" <input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
placeholder="e.g:mstdn.jp">
</div> </div>
<div id="webview-add" class="hide">TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>). Keyboard shortcuts will irritate you. When you feel so, you check 'Prefer WebView' on top of the column. <div id="webview-add" class="hide">TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>). Keyboard shortcuts will irritate you. When you feel so, you check 'Prefer WebView' on top of the column.
</div> </div>
</div> </div>
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" <button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
data-trans-i="add">
<i class="material-icons left">add</i>Add <i class="material-icons left">add</i>Add
</button> </button>
<br> <br>
@@ -783,13 +684,12 @@
<div id="src-box" class="hide menu-content"> <div id="src-box" class="hide menu-content">
<div class="input-field"> <div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select> <select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div> </div><div class="input-field">
<div class="input-field"> <i class="material-icons prefix">search</i>
<input id="src" type="text" class="validate" style="width:60%"> <input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
<label for="src" data-trans="src">Search</label> <label for="src" data-trans="src">Search</label>
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" <button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
data-trans-i="src"> <i class="material-icons left">search</i>Search
<i class="material-icons left" style="margin:0">search</i>Search
</button> </button>
<br> <br>
<br> <br>
@@ -803,7 +703,7 @@
<div id="sort-box" class="hide menu-content"> <div id="sort-box" class="hide menu-content">
<ul id="sort"></ul> <ul id="sort"></ul>
<div> <div>
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort"> <button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
<i class="material-icons left">sort</i>Sort <i class="material-icons left">sort</i>Sort
</button> </button>
</div> </div>
@@ -856,21 +756,13 @@
<label for="except_filter">Drop instead of hide</label><br> <label for="except_filter">Drop instead of hide</label><br>
<span class="sml">Filtered toots will disappear irreversibly, even if filter is later removed</span><br> <span class="sml">Filtered toots will disappear irreversibly, even if filter is later removed</span><br>
Expire after<span class="sml">Unset or "0" means "Never"<b>This value may contain some error</b></span><br><br> Expire after<span class="sml">Unset or "0" means "Never"<b>This value may contain some error</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">day(s) <input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">days
<input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">hour(s) <input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">hours
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">minute(s)<br> <input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">minutes
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30minute(s)</a>/ <button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">Add</button><br>
<a onclick="filterTime(0,1,0)" class="pointer">1hour(s)</a>/
<a onclick="filterTime(0,6,0)" class="pointer">6hour(s)</a>/
<a onclick="filterTime(0,12,0)" class="pointer">12hour(s)</a>/
<a onclick="filterTime(1,0,0)" class="pointer">1day(s)</a>/
<a onclick="filterTime(7,0,0)" class="pointer">7day(s)</a>/
<a onclick="filterTime(0,0,0)" class="pointer">Never</a><br>
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()"
id="add-filter-btn">Add</button><br>
<span class="sml">Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.</span> <span class="sml">Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.</span>
</div> </div>
</div> </div>
</div> </div>
<a onclick="about()" class="nex waves-effect"> <a onclick="about()" class="nex waves-effect">
<i class="material-icons" style="font-size: 1rem;">info</i>About TheDesk <i class="material-icons" style="font-size: 1rem;">info</i>About TheDesk
@@ -878,24 +770,20 @@
<a onclick="bottomReverse()" class="nex waves-effect"> <a onclick="bottomReverse()" class="nex waves-effect">
<i class="material-icons" style="font-size: 1rem;">swap_horiz</i>Toot button layout reverse <i class="material-icons" style="font-size: 1rem;">swap_horiz</i>Toot button layout reverse
</a> </a>
</div> </div>
<div id="main"> <div id="main">
<!--TLのTL--> <!--TLのTL-->
<div id="timeline-container"> <div id="timeline-container">
<div id="something-wrong"> <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.
<div>Internal error: please clear all data(at setting page) <b>All data will be deleted.</b></div> </div>
</div> </div>
</div> </div>
</div> <!--bottom-->
</div> <div id="bottom" class="reverse">
<!--bottom-->
<div id="bottom" class="reverse">
<div class="leftside reverse"> <div class="leftside reverse">
<div id="dambox"> <div id="dambox">
<button id="posttgl" class="btn waves-effect indigo" <button id="posttgl" class="btn waves-effect indigo" style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;"> <i class="material-icons" style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>Toot
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>Toot
</button> </button>
</div> </div>
<div class="leftside reverse" id="group"> <div class="leftside reverse" id="group">
@@ -912,10 +800,8 @@
<a onclick="menu()" class="nex waves-effect" id="list-tgl"> <a onclick="menu()" class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="List">apps</i> <i class="material-icons" title="List">apps</i>
</a> </a>
<span id="fukidashi"><- Add TL</span>
</div>
</div>
</div> </div>
</div></div>
<div> <div>
<div id="tips-menu"> <div id="tips-menu">
<div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span> <div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span>
@@ -932,7 +818,7 @@
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i> <i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a> </a>
<a onclick="tips('spotify')" class="nex waves-effect"> <a onclick="tips('spotify')" class="nex waves-effect">
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i> <i class="fa fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a> </a>
</div> </div>
</div> </div>
@@ -943,54 +829,54 @@
<div id="tips-text" style="float:left; width:300px;"></div> <div id="tips-text" style="float:left; width:300px;"></div>
</div> </div>
</div> </div>
</div> </div>
<!--左下メッセージ--> <!--左下メッセージ-->
<div id="message"> <div id="message">
</div> </div>
<!--Radio Happy(Yui) Taku Inoue--> <!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio> <audio src="" id="radio"></audio>
<!--JS--> <!--JS-->
<script type="text/javascript" src="../../js/ui/tips.js"></script> <script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script> <script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/tl/parse.js"></script> <script type="text/javascript" src="../../js/tl/parse.js"></script>
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script> <script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="../../js/tl/dm.js"></script> <script type="text/javascript" src="../../js/tl/dm.js"></script>
<script type="text/javascript" src="../../js/ui/scroll.js"></script> <script type="text/javascript" src="../../js/ui/scroll.js"></script>
<script type="text/javascript" src="../../js/tl/tl.js"></script> <script type="text/javascript" src="../../js/tl/tl.js"></script>
<script type="text/javascript" src="../../js/tl/card.js"></script> <script type="text/javascript" src="../../js/tl/card.js"></script>
<script type="text/javascript" src="../../js/tl/poll.js"></script> <script type="text/javascript" src="../../js/tl/poll.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>
<script type="text/javascript" src="../../js/tl/notification.js"></script> <script type="text/javascript" src="../../js/tl/notification.js"></script>
<script type="text/javascript" src="../../js/tl/datails.js"></script> <script type="text/javascript" src="../../js/tl/datails.js"></script>
<script type="text/javascript" src="../../js/tl/mix.js"></script> <script type="text/javascript" src="../../js/tl/mix.js"></script>
<script type="text/javascript" src="../../js/tl/src.js"></script> <script type="text/javascript" src="../../js/tl/src.js"></script>
<script type="text/javascript" src="../../js/tl/filter.js"></script> <script type="text/javascript" src="../../js/tl/filter.js"></script>
<script type="text/javascript" src="../../js/tl/tag.js"></script> <script type="text/javascript" src="../../js/tl/tag.js"></script>
<script type="text/javascript" src="../../js/tl/list.js"></script> <script type="text/javascript" src="../../js/tl/list.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/ui/post-box.js"></script> <script type="text/javascript" src="../../js/ui/post-box.js"></script>
<script type="text/javascript" src="../../js/ui/layout.js"></script> <script type="text/javascript" src="../../js/ui/layout.js"></script>
<script type="text/javascript" src="../../js/post/emoji.js"></script> <script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script> <script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script> <script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script> <script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script> <script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script> <script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/post/post.js"></script>
<script type="text/javascript" src="../../js/post/post.js"></script> <script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script> <script type="text/javascript" src="../../js/post/secure.js"></script>
<script type="text/javascript" src="../../js/post/secure.js"></script> <script type="text/javascript" src="../../js/post/img.js"></script>
<script type="text/javascript" src="../../js/post/img.js"></script> <script type="text/javascript" src="../../js/post/status.js"></script>
<script type="text/javascript" src="../../js/post/status.js"></script> <script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script> <script type="text/javascript" src="../../js/post/emoji.js"></script>
<script type="text/javascript" src="../../js/post/suggest.js"></script> <script type="text/javascript" src="../../js/post/suggest.js"></script>
<script type="text/javascript" src="../../js/post/bb-md.js"></script> <script type="text/javascript" src="../../js/post/bb-md.js"></script>
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script> <script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="../../js/userdata/his-data.js"></script> <script type="text/javascript" src="../../js/userdata/his-data.js"></script>
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script> <script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script> <script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script> <script type="text/javascript" src="../../js/emoji/default-emoji.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/ui/menu.js"></script> <script type="text/javascript" src="../../js/ui/menu.js"></script>

View File

@@ -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">TheDesk LICENSE (Latest Ver.)</a><br> LICENSE of TheDesk:<a href="https://github.com/cutls/TheDesk/blob/master/LICENSE.md">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>

View File

@@ -1,6 +1,5 @@
<!doctype html> <!doctype html>
<html lang="en" style="overflow:scroll"> <html lang="en">
<head> <head>
<title>Settings - TheDesk</title> <title>Settings - TheDesk</title>
<!-- <!--
@@ -18,27 +17,19 @@
<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> <style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</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
@@ -46,45 +37,36 @@
<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 onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a> <a 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>/
<h5>Import and export of preferences</h5> <h5>Import and export of preferences</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" <button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">Export</button>
style="width:100%; max-width:200px;">Export</button> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">Import</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">Import</button>
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> <templete v-html=item.text.desc></templete><br>
<templete v-html="item.text.desc"></templete><br> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">Notification test</a><br></template>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Notification test</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Change</button>
</template><br>
</template> </template>
</div> </div>
<h5>Font</h5> <h5>Font</h5>
Select your favorite font to 'Select'(Windows/ macOS only)<br> Select your favorite font to 'Select'<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</button><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> <div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br> <br>
@@ -127,52 +109,40 @@
<h5>Name</h5> <h5>Name</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="Name..."> <input type="text" style="width:300px" id="custom_name" placeholder="Name...">
<h5>About this theme</h5> <h5>About this theme</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" <div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="About this theme..."></textarea></div>
placeholder="About this theme..."></textarea></div>
<h5>Color scheme</h5> <h5>Color scheme</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" /> <input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label> <label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" /> <input class="with-gap" name="derection" type="radio" id="light" value="light" />
<label for="light">Light</label> <label for="light">Light</label>
<div id="pickers"> <div id="pickers">
<div> <div>
<h5>Primary</h5>Background of components <h5>Primary</h5>Background of components
<div id="color-picker0-wrap"> <div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value"> <input type="hidden" id="color-picker0_value">
</div> </div>
<div> <div>
<h5>Secondary</h5>Background color <h5>Secondary</h5>Background color
<div id="color-picker1-wrap"> <div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value"> <input type="hidden" id="color-picker1_value">
</div> </div>
<div> <div>
<h5>Texts</h5>Text color <h5>Texts</h5>Text color
<div id="color-picker2-wrap"> <div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value"> <input type="hidden" id="color-picker2_value">
</div> </div>
<div> <div>
<h5>Accent</h5>Background of boosts <h5>Accent</h5>Background of boosts
<div id="color-picker3-wrap"> <div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value"> <input type="hidden" id="color-picker3_value">
</div> </div>
</div> </div>
<button class="btn-large waves-effect" onclick="customComp()">Change</button>&nbsp;<button <button class="btn-large waves-effect" onclick="customComp()">Change</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
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>
<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. Share this code with other TheDesk. Do not share this code with MiAS.
<h4>Import of custom themes</h4> <h4>Import of custom themes</h4>
Get more themes on <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br> Get more themes on <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" <input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Import</button><br> <button class="btn waves-effect" onclick="customImp()">Import</button><br>
</li> </li>
<li> <li>
@@ -183,37 +153,26 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Change</button>
</template><br>
</template> </template>
</div> </div>
<h5>Custom sound</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
</div> </div>
</li> </li>
<li> <li>
@@ -224,14 +183,11 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" <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" />
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> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template> </template>
@@ -240,17 +196,14 @@
<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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Change</button>
</template><br>
</template> </template>
</div> </div>
</div> </div>
@@ -317,14 +270,9 @@
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 <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>
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Save</button></div> <a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>Connect</a>
<a onclick="spotifyConnect()" class="btn waves-effect nex" <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>
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>Connect</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>Disconnect</a>
<h5>Edit a template</h5> <h5>Edit a template</h5>
<br> <br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist} <textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
@@ -332,8 +280,11 @@
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>
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button> <button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
<h5>Attach an Artwork of Spotify</h5> <h5>Attach an Artwork of Spotify</h5>
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">Yes</label> <label for="awk_yes">Yes</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
@@ -348,96 +299,80 @@
<div class="collapsible-body"> <div class="collapsible-body">
<h5>Speed</h5> <h5>Speed</h5>
1-100(default:10)<br> 1-100(default:10)<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" <p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
style="width:500px; max-width:100%" /></p>
<h5>Pitch</h5> <h5>Pitch</h5>
0-100(default:50)<br> 0-100(default:50)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" <p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
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()" <button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">Play/Stop</button><br>
id="testplay">Play/Stop</button><br>
<br> <br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button> <button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button>
</div> </div>
</li> </li>
</ul> </ul>
<br> <br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i <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>
class="material-icons left">undo</i>Back</a> <br>
<br> <br>Keyboard shortcuts
<br>Keyboard shortcuts <li>Ctrl+1-9:Jump to n(1-9)th column</li>
<li>Ctrl+1-9:Jump to n(1-9)th column</li> <li>N:Open toot box</li>
<li>N:Open toot box</li> <li>X:Toggle toot box</li>
<li>X:Toggle toot box</li> <li>Ctrl+Enter:Post</li>
<li>Ctrl+Enter:Post</li> <li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Ctrl+Enter+Shift:Post(secondary toot)</li> <li>Alt+Enter:Secondary Toot Button</li>
<li>Alt+Enter:Secondary Toot Button</li> <li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+E:Make all notifications read</li> <li>Esc:Hide toot box</li>
<li>Esc:Hide toot box</li> <li>F5:Super Reload</li>
<li>F5:Super Reload</li> <li>Ctrl+Shift+C:Clear toot box</li>
<li>Ctrl+Shift+C:Clear toot box</li> <li>Ctrl+Shift+S:Preferences</li>
<li>Ctrl+Shift+S:Preferences</li> <li>Ctrl+Shift+M:Account Manager</li>
<li>Ctrl+Shift+M:Account Manager</li> <li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li> <li>Ctrl+Shift+P:Show profile of selecting</li>
<li>Ctrl+Shift+P:Show profile of selecting</li> <li>←/→:Show next or previous image</li>
<li>←/→:Show next or previous image</li> <li>Mousewheel:Zoom a image</li>
<li>Mousewheel:Zoom a image</li> <div class="hide kirishima">
<div class="hide kirishima"> 以下Markdownに対応したインスタンスのみ。
以下Markdownに対応したインスタンスのみ。 <br>
<br> <li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li> <li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Enter:全角スペースを入れて改行</li> <li>Shift+Space:ゼロ幅スペース</li>
<li>Shift+Space:ゼロ幅スペース</li> 以下アスタルテにログインしている場合のみ
以下アスタルテにログインしている場合のみ <br>
<br> <li>Ctrl+R:
<li>Ctrl+R: <a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く </li><br>
</li><br> </div>
</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 red" style="width:100%; max-width:500px;" <button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>About TheDesk</button>
onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i <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>
class="material-icons left">delete</i>Reset(Danger)</button><br><br> <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>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i <a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>Help/Docs(Constructing)</a>
class="material-icons left">info</i>About TheDesk</button> <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="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i <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>
class="material-icons left">web</i>Website</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>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" <br>
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Pixiv FANBOX)</a> Kyash<br>
<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> <img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" <a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">Check update</a><br>
class="pointer">Check update</a><br> <a href="oss.html">OSS License</a><br>
<a href="oss.html">OSS License</a><br> <span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
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( <br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>) <a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
<br> <br>
</span><br> </span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br> TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</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/common/about.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/login/logout.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/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.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/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.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/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>

View File

@@ -7,27 +7,6 @@ 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",
@@ -284,7 +263,7 @@ var tlConstruction=[
setValue:200, setValue:200,
text:{ text:{
head:"Height of images", head:"Height of images",
desc:'Option:Set "full" to uncrop.', desc:"",
after:"px" after:"px"
} }
},{ },{
@@ -307,46 +286,6 @@ 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=[
@@ -537,16 +476,5 @@ 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
}
} }
] ]

View File

@@ -62,6 +62,9 @@ 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,10 +78,11 @@ 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 hide" onclick="update('install')" style="margin-left:15px;">Installer ver.</button> <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('portable')" style="margin-left:15px;">Portable ver.</button> <button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">Start</button> <span class="linux">Snap ver may be on Snapcraft<br></span>
<button class="waves-effect btn mac hide" onclick="update('mac')" 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" 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>
@@ -180,12 +184,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=="win32"){ if(platform=="linux"){
$('.windows').removeClass("hide") $('.windows').hide()
}else if(platform=="linux"){ $('.linux').show()
$('.linux').removeClass("hide") }else if(platform=="mac"){
}else if(platform=="darwin"){ $('.windows').hide()
$('.mac').removeClass("hide") $('.mac').show()
} }
var start="https://thedesk.top/ver.json"; var start="https://thedesk.top/ver.json";
fetch(start, { fetch(start, {
@@ -198,23 +202,9 @@ function verck(){
console.error(error); console.error(error);
}).then(function(json) { }).then(function(json) {
console.log(json); console.log(json);
if(platform=="win32"){
$("#ver").text(json.desk); $("#ver").text(json.desk);
localStorage.setItem("next-ver",json.desk); localStorage.setItem("next-ver",json.desk);
}else if(platform=="linux"){
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver",json.desk_linux);
}else if(platform=="darwin"){
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver",json.desk_mac);
}
var lang="en";
if(lang=="ja"){
$("#det").html(json.detail); $("#det").html(json.detail);
}else{
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver")); $("#now").text(localStorage.getItem("ver"));
}); });

View File

@@ -18,14 +18,6 @@ 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">
<!-- <!--
@@ -47,27 +39,24 @@ 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>
<div class="hide-first"> <a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br> <h5>アカウント一覧</h5>
<h5>アカウント一覧</h5> <div id="acct-list"></div>
<div id="acct-list"></div> <div class="divider"></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 s8"> <div class="col s6">
<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>
チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。<br> Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。ログインできない場合、チェックを外してください。<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 s4"> <div class="col s6">
<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>
@@ -84,8 +73,6 @@ 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>
@@ -104,7 +91,6 @@ 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>

View File

@@ -1,18 +1,16 @@
<!doctype html> <!doctype html>
<html lang="ja"> <html lang="ja">
<head> <head>
<title>TheDesk</title> <title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport"> <meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet"> <link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" <link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet"> <link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css"> <link href='../../css/tl.css' rel='stylesheet' type='text/css'>
<link href="../../css/userdata.css" rel="stylesheet" type="text/css"> <link href='../../css/userdata.css' rel='stylesheet' type='text/css'>
<link href="../../css/post.css" rel="stylesheet" type="text/css"> <link href='../../css/post.css' rel='stylesheet' type='text/css'>
<link href="../../css/master.css" type="text/css" rel="stylesheet"> <link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/sort.css" rel="stylesheet" type="text/css"> <link href='../../css/sort.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<meta charset="utf-8"> <meta charset="utf-8">
<!-- <!--
@@ -23,187 +21,158 @@
<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>
--> -->
</head> </head>
<body> <body>
<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 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/blurhash.js"></script> <script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script> <script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script> <script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script> <script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script> <script>
<script> var ver="Usamin (18.1.0)";
var ver = "Usamin (18.4.0)"; //betaを入れるとバージョンチェックしない
//betaを入れるとバージョンチェックしない //GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html) //var ver="beta";
//var ver="beta"; //WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除 var acct_id=0;
var acct_id = 0; var tlid=0;
var tlid = 0; verck(ver);
</script> </script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea> <textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<canvas id="canvas" style="top:-100px; position:fixed;width:32px;height:32px" width="32" height="32"></canvas> <div id="tl">
<div id="tl"> <!--TL-->
<!--TL--> <!--ドラッグハンドラ-->
<!--ドラッグハンドラ--> <div id="drag">
<div id="drag"> <div id="drag-content" data-trans="drag_here">ここにドラッグして添付(ドラッグと同時にアップロードされます)
<div id="drag-content" data-trans="drag_here">ここにドラッグして添付(ドラッグと同時にアップロードされます) <br>
<br> <button class="btn waves-effect" onclick="closedrop()" data-trans="close">Close</button>
<button class="btn waves-effect" onclick="closedrop()" data-trans="close">Close</button> </div>
</div> </div>
</div> </div>
</div> <div id="post-box" class="z-depth-5">
<div id="post-box" class="z-depth-5"> <div id="post-bar" class="drag-bar">投稿</div>
<div id="post-bar" class="drag-bar"><span id="unreact">投稿</span><span id="addreact" <!--トゥートボックス-->
class="hide">Reaction</span></div> <div id="left-side">
<!--トゥートボックス--> <div class="row" style="margin-bottom:0;">
<div id="left-side"> </span>
<div class="row" style="margin-bottom:0;"> <div class="" style="float:left;">
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize">
<img src="../../img/missing.svg" id="acct-sel-prof" title="選択したアカウントのプロフィールを表示(Ctrl+Shift+P)" data-trans-title="post_box_prof" width="24px">
</a>
</div>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="このボックスを閉じる(X)" data-trans-title="post_box_close">cancel</i>
</span> </span>
<div class="" style="float:left;"> <!--Markdown-->
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize"> <div class="row" style="margin-bottom:0">
<img src="../../img/missing.svg" id="acct-sel-prof" title="選択したアカウントのプロフィールを表示(Ctrl+Shift+P)" <div class="markdown mize hide">
data-trans-title="post_box_prof" width="24px"> <div class="col s12">
</a> <i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
</div> <i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select> <i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
</div> <i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<span class="cancel"> <i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons waves-effect" onclick="hide()" title="このボックスを閉じる(X)" <i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
data-trans-title="post_box_close">cancel</i> <i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
</span> <i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<!--Markdown--> <i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<div class="row" style="margin-bottom:0"> <i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<div class="markdown mize hide"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<div class="col s12"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i> <i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" <span class="sml gray pointer waves-effect">
title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i> <a onclick="mdToggle()">Markdownエディタを隠す</a>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" </span>
title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i> <br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i> <input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
title="引用">format_quote</i> <input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" <br>
title="見出し">short_text</i> <i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" <input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i> <input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" <br>
title="箇条書きリスト">format_list_bulleted</i> <i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" <input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
title="番号付きリスト">format_list_numbered</i> <input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
<i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" </div>
title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i> </div>
<i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" <div class="input-field col s12" id="preview-field" style="margin-top: 0;">
title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i> <div id="md-preview">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" </div>
title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i> <span class="sml gray pointer">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" <a onclick="previewEdit()">Edit</a>
title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i> </span>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" </div>
title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i> <div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')"
title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')"
title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')"
title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
<input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()"
title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
<input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0;">
<div id="md-preview">
</div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" <textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" data-length="500"></textarea>
data-length="500"></textarea> <label for="textarea" data-trans="toot">トゥート</label>
<label for="textarea" data-trans="toot">トゥート</label> <br>
<br> <span class="sml gray pointer markdown mize" id="preview-btn">
<span class="sml gray pointer markdown mize" id="preview-btn"> <a onclick="preview()">Preview</a>
<a onclick="preview()">Preview</a> </span>
</span> <span class="sml gray pointer anti-markdown mize">
<span class="sml gray pointer anti-markdown mize"> <a onclick="mdToggle()">Markdownエディタを表示</a>
<a onclick="mdToggle()">Markdownエディタを表示</a> </span>
</span> </div>
</div> <div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between"> <i class="waves-effect gray material-icons" id="nsfw" title="画像に制限を付与" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons" id="nsfw" title="画像に制限を付与" <i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1' id="vis-icon">public</i>
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1'
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="コンテンツワーニング(トゥートを表示する前にメッセージで隠す)">CW</a> <a class="waves-effect gray" id="cw" onclick="cw()" title="コンテンツワーニング(トゥートを表示する前にメッセージで隠す)">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" <span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" onclick="fileselect()" title="ファイルを選択">photo_library</i></span></span>
onclick="fileselect()" title="ファイルを選択">photo_library</i></span></span> <i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="絵文字を挿入">tag_faces</i>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="絵文字を挿入">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button" data-activates='dropdown2'>more_vert</i> <i class="waves-effect gray material-icons dropdown-button" data-activates='dropdown2'>more_vert</i>
<i class="material-icons nex gray waves-effect" title="トゥートボックスのクリア(Ctrl+Shit+C)" <i class="material-icons nex gray waves-effect" title="トゥートボックスのクリア(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
data-trans-title="post_box_clear" id="clear">clear</i> </div>
</div> <div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div id="taglist"></div> <div id="taglist"></div>
<div id="preview" class="mize"></div> <div id="preview" class="mize"></div>
<span class=" sml mize"><span data-trans="reply">返信モード</span>: <span class=" sml mize"><span data-trans="reply">返信モード</span>:
<span id="rec">いいえ</span>/<span data-trans="file">添付ファイル</span>: <span id="rec">いいえ</span>/<span data-trans="file">添付ファイル</span>:
<span id="mec">なし</span>/<span data-trans="vis">公開範囲</span>: <span id="mec">なし</span>/<span data-trans="vis">公開範囲</span>:
<span id="vis">public</span> <span id="vis">public</span>
</span> </span>
<br> <br>
<input type="text" id="cw-text" placeholder="警告文" class="mize" style="margin:0"> <input type="text" id="cw-text" placeholder="警告文" class="mize" style="margin:0">
<div id="sch-box">時間指定投稿<br><span class="sml">2.7.0~ 5分以内には投稿できません。サーバーの時計が正確とは限りません。</span><br> <div id="sch-box">時間指定投稿<br><span class="sml">2.7.0~ 5分以内には投稿できません。サーバーの時計が正確とは限りません。</span><br>
<input type="datetime-local" id="sch-date" placeholder="時間指定投稿" class="datepicker" style="margin:0"> <input type="datetime-local" id="sch-date" placeholder="時間指定投稿" class="datepicker" style="margin:0">
</div> </div>
</div> </div>
</div> </div>
<!-- 公開範囲 Dropdown Structure --> <!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'> <ul id='dropdown1' class='dropdown-content'>
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">公開範囲指定</li> <li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">公開範囲指定</li>
<li> <li>
<a onclick="vis('public')">公開(Public)</a> <a onclick="vis('public')">公開(Public)</a>
</li> </li>
<li> <li>
<a onclick="vis('unlisted')">未収載(Unlisted)</a> <a onclick="vis('unlisted')">未収載(Unlisted)</a>
</li> </li>
<li> <li>
<a onclick="vis('private')" id="private-button">非公開(Private)</a> <a onclick="vis('private')" id="private-button">非公開(Private)</a>
</li> </li>
<li id="limited-button" class="hide"> <li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a> <a onclick="vis('limited')">限定公開(Limited)</a>
</li> </li>
<li id="local-button" class="hide"> <li id="local-button" class="hide">
<a onclick="vis('local')">ローカル限定(Local)</a> <a onclick="vis('local')">ローカル限定(Local)</a>
</li> </li>
<li> <li>
<a onclick="vis('direct')" class="disabled direct">ダイレクト(Direct)</a> <a onclick="vis('direct')" class="disabled direct">ダイレクト(Direct)</a>
</li> </li>
</ul> </ul>
<!-- その他 Dropdown Structure --> <!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'> <ul id='dropdown2' class='dropdown-content'>
<li> <li>
<a onclick="adobe()">Adobeフォトエディタ</a> <a onclick="adobe()">Adobeフォトエディタ</a>
</li> </li>
@@ -220,37 +189,34 @@
<a onclick="pollToggle();">アンケート</a> <a onclick="pollToggle();">アンケート</a>
</li> </li>
</ul> </ul>
<!--hidden area--> <!--hidden area-->
<input type="hidden" id="reply"> <input type="hidden" id="reply">
<input type="hidden" id="media"> <input type="hidden" id="media">
<!--END hidden area--> <!--END hidden area-->
</div> </div>
<div id="toot-btn-field"> <div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()" <button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()" id="toot-post-btn">トゥート</button>
id="toot-post-btn">トゥート</button> <button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon" title="セカンダリートゥート">lock_open</i></button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn"><i </div>
class="material-icons" id="toot-sec-icon" title="セカンダリートゥート">lock_open</i></button> </div>
</div> <div id="right-side">
</div> <div id="suggest"></div>
<div id="right-side"> <!--絵文字ピッカー-->
<div id="suggest"></div> <div id="emoji" class="hide">
<!--絵文字ピッカー-->
<div id="emoji" class="hide">
<span class="gray sml">サーバーによって実装が異なります。 <span class="gray sml">サーバーによって実装が異なります。
<a onclick="emojiGet('true')" class="pointer">絵文字更新</a> <a onclick="emojiGet('true')" class="pointer">絵文字更新</a>
<i class="material-icons waves-effect" onclick="emojiToggle()" title="このボックスを閉じる" data-trans-title="post_box_close">cancel</i>
<br> <br>
</span> </span>
<div id="emoji-list" class="" style=""> <div id="emoji-list" class="" style="">
</div> </div>
<div class="emoji-control center"> <div class="emoji-control center">
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" <button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" id="emoji-before">
id="emoji-before">
<i class="material-icons">navigate_before</i> <i class="material-icons">navigate_before</i>
</button> </button>
<span id="emoji-count"></span>/ <span id="emoji-count"></span>/
<span id="emoji-sum"></span> <span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" <button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" id="emoji-next">
id="emoji-next">
<i class="material-icons">navigate_next</i> <i class="material-icons">navigate_next</i>
</button> </button>
</div> </div>
@@ -285,7 +251,7 @@
<i class="material-icons">flag</i> <i class="material-icons">flag</i>
</a> </a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn"> <a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fab fa-fort-awesome"></i> <i class="fa fa-fort-awesome"></i>
</a> </a>
</div> </div>
</div> </div>
@@ -293,8 +259,12 @@
<div id="poll" class="hide"> <div id="poll" class="hide">
<select id="poll-sel" onchange="pollProviderCk()"> <select id="poll-sel" onchange="pollProviderCk()">
<option value="nothing">アンケートを使用しない</option> <option value="nothing">アンケートを使用しない</option>
<option value="votedon">votedon.</option>
<option value="mastodon-poll">Mastodon(2.8~)</option> <option value="mastodon-poll">Mastodon(2.8~)</option>
</select> </select>
<div id="votedon" class="poll-provider hide">
WIP
</div>
<div id="mastodon-poll" class="poll-provider hide"> <div id="mastodon-poll" class="poll-provider hide">
<input type="text" class="mastodon-choice" placeholder="選択肢1"> <input type="text" class="mastodon-choice" placeholder="選択肢1">
<input type="text" class="mastodon-choice" placeholder="選択肢2"> <input type="text" class="mastodon-choice" placeholder="選択肢2">
@@ -306,36 +276,15 @@
<label for="poll-until">投票するまで票数を隠す</label><br> <label for="poll-until">投票するまで票数を隠す</label><br>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0"> <input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">時間 <input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">時間
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6"> <input type="number" style="width:50px" id="mins_poll" placeholder="m" value="0">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Modal Structure Tootdata--> <!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer"> <div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content"> <div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col"> <ul class="collapsible" data-collapsible="accordion" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>これより後のLocal TL(言及確認)
</div>
<div class="collapsible-body toot-reset" id="ltl-after">
</div>
</li>
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">person_outline</i>これより後のユーザーTL(言及確認)
</div>
<div class="collapsible-body toot-reset" id="user-after">
</div>
</li>
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">language</i>これより後の連合TL(言及確認)
</div>
<div class="collapsible-body toot-reset" id="ftl-after">
</div>
</li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">arrow_upward</i>これより前の会話 <i class="material-icons">arrow_upward</i>これより前の会話
@@ -347,7 +296,7 @@
<div class="collapsible-header" id="activator"> <div class="collapsible-header" id="activator">
<i class="material-icons">more_horiz</i>対象のトゥート <i class="material-icons">more_horiz</i>対象のトゥート
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body" >
<div class="toot-reset" id="toot-this"></div> <div class="toot-reset" id="toot-this"></div>
</div> </div>
</li> </li>
@@ -381,29 +330,26 @@
</li> </li>
<li class="dm-hide"> <li class="dm-hide">
<div class="collapsible-header"> <div class="collapsible-header">
<i class="text-darken-3 false fas fa-retweet"></i>このトゥートをブーストした人 <i class="text-darken-3 fa fa-retweet"></i>このトゥートをブーストした人
</div> </div>
<div class="collapsible-body toot-reset" id="toot-rt"> <div class="collapsible-body toot-reset" id="toot-rt">
</div> </div>
</li> </li>
</ul> </ul>
<div class="dm-hide"> <div class="dm-hide">
他のアカウントを使用(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>の解除はできません)<br> 他のアカウントを使用(<i class="fa fa-retweet"></i>/<i class="fa fa-star"></i>の解除はできません)<br>
<div class="row"> <div class="row">
<div class="col s6"> <div class="col s6">
<select id="status-acct-sel" class="acct-sel"></select> <select id="status-acct-sel" class="acct-sel"></select>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i <button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i class="fa fa-share"></i>/button>
class="fas fa-share"></i></button>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i <button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i class="fa fa-retweet"></i></button>
class="fas fa-retweet"></i></button>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i <button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i class="fa fa-star"></i></button>
class="fas fa-star"></i></button>
</div> </div>
</div> </div>
<div id="toot-tools"> <div id="toot-tools">
@@ -411,9 +357,10 @@
<div id="toot-after"> <div id="toot-after">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">ブラウザで開く</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">ブラウザで開く</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="shot()">スクリーンショット</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">URLをコピー</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">URLをコピー</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">埋め込む</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">埋め込む</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a> <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -425,7 +372,7 @@
<div id="his-data-show"> <div id="his-data-show">
<div class="his-float" id="his-float-data"> <div class="his-float" id="his-float-data">
<div id="his-basic-prof"> <div id="his-basic-prof">
<img src="../../img/loading.svg" id="his-prof" draggable="false"> <img src="../../img/loading.svg" id="his-prof">
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span> <span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
<br>@ <br>@
<span id="his-acct"></span><br> <span id="his-acct"></span><br>
@@ -443,16 +390,12 @@
<span class="cbadge" style="max-width:150px; width:150px; ">Since: <span class="cbadge" style="max-width:150px; width:150px; ">Since:
<span id="his-since"></span> <span id="his-since"></span>
</span> </span>
<div id="his-proof-prof"></div>
</div> </div>
<div id="his-des" data-acct=""></div><br> <div id="his-des"></div><br>
<div id="his-plus-action"> <div id="his-plus-action">
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-emp-btn" <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-emp-btn" onclick="empUser()">ユーザー強調</a>
onclick="empUser()">ユーザー強調</a> <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data" id="his-end-btn" onclick="pinUser()">紹介する</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data" id="his-end-btn" <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin" onclick="profbrws()">ブラウザで開く</a><br>
onclick="pinUser()">紹介する</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">ブラウザで開く</a><br>
</div><br> </div><br>
<div id="his-matching-list"> <div id="his-matching-list">
似ているユーザーを取得できます。<br> 似ているユーザーを取得できます。<br>
@@ -489,8 +432,7 @@
<a go="#his-blocking-list" title="ブロック"><i class="material-icons">voice_over_off</i></a> <a go="#his-blocking-list" title="ブロック"><i class="material-icons">voice_over_off</i></a>
</li> </li>
<li class="custom-tab col my-data-width only-my-data"> <li class="custom-tab col my-data-width only-my-data">
<a go="#his-domain-list" title="ドメインブロック"><i class="material-icons">language</i><i <a go="#his-domain-list" title="ドメインブロック"><i class="material-icons">language</i><i class="material-icons">block</i></a>
class="material-icons">block</i></a>
</li> </li>
<li class="custom-tab col my-data-width only-my-data"> <li class="custom-tab col my-data-width only-my-data">
<a go="#his-prof-list" title="プロフィール編集"><i class="material-icons">create</i></a> <a go="#his-prof-list" title="プロフィール編集"><i class="material-icons">create</i></a>
@@ -506,20 +448,17 @@
<div id="his-tl" class="tab-content"> <div id="his-tl" class="tab-content">
<div id="his-tl-contents" class="cont-series"> <div id="his-tl-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="utl('--now','more')">もっと</button>
onclick="utl('--now','more')">もっと</button>
</div> </div>
<div id="his-follow-list" class="tab-content"> <div id="his-follow-list" class="tab-content">
<div id="his-follow-list-contents" class="cont-series"> <div id="his-follow-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="flw('--now','more')">もっと</button>
onclick="flw('--now','more')">もっと</button>
</div> </div>
<div id="his-follower-list" class="tab-content"> <div id="his-follower-list" class="tab-content">
<div id="his-follower-list-contents" class="cont-series"> <div id="his-follower-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="fer('--now','more')">もっと</button>
onclick="fer('--now','more')">もっと</button>
</div> </div>
<div id="his-action" class="tab-content"> <div id="his-action" class="tab-content">
他のアカウントを使用するフォロー((解除はできません。))<br> 他のアカウントを使用するフォロー((解除はできません。))<br>
@@ -539,7 +478,7 @@
<button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">もっと</button> <button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">もっと</button>
</div> </div>
<div id="his-blocking-list" class="tab-content"> <div id="his-blocking-list" class="tab-content">
<div id="his-blocking-list-contents" class="cont-series"> <div id="his-blocking-list-contents"class="cont-series" >
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">もっと</button> <button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">もっと</button>
</div> </div>
@@ -551,8 +490,7 @@
<div id="his-domain-list" class="tab-content"> <div id="his-domain-list" class="tab-content">
<div id="his-domain-list-contents" class="cont-series"> <div id="his-domain-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="showDom('more')">もっと</button>ブロックするドメイン
onclick="showDom('more')">もっと</button>ブロックするドメイン
<br> <br>
<input type="text" placeholder="example.com" id="domainblock"> <input type="text" placeholder="example.com" id="domainblock">
<button class="btn waves-effect" onclick="addDomainblock()">追加</button> <button class="btn waves-effect" onclick="addDomainblock()">追加</button>
@@ -587,20 +525,13 @@
</div> </div>
</div> </div>
</div> </div>
<div class="his-float" id="his-float-blocked">
<div>ブロックされています。なぜでしょう?</div>
</div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" <button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">一つ前のユーザーデータ</button>
onclick="historyShow()">一つ前のユーザーデータ</button> <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" onclick="follow()">フォロー</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn" onclick="mute()">ミュート</a>
onclick="follow()">フォロー</a> <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn" onclick="block()">ブロック</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">ミュート</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">ブロック</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a> <a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
</div> </div>
</div> </div>
@@ -639,7 +570,7 @@
<!-- Modal Structure Video--> <!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer"> <div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content"> <div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls> <video src="" id="video" style="max-width:100%; max-height:100%;" controls >
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a> <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -652,37 +583,36 @@
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Usamin_18-4-0" class="release-do" style="display:none; "> <div id="release-Usamin_18-1-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.4.0)</h5> <h5>Release Note Usamin (18.1.0)</h5>
・ソフトウェア(通知音などのアセットを含むTheDeskオリジナル制作物)のコピーライトをTheDeskに統一。Cutls PをMain Developer(author)に。<br> ・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
・Misskey v11のストリーミングに対応(初期取得の投稿のリアクションは自動取得できません。)<br> ・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
・その他Misskeyのさまざまな挙動を修正、追加しました。<br> ・画像を個別に削除する(画像をクリックして)<br>
・NSFWメディアが複数あったときに「NSFW Media」の文字が邪魔で複数段になる不具合を修正<br> ・何個もアルバムアートワークが投稿されるバグを修正<br>
・フォローリクエストの許可/拒否ができるように。<br> ・Misskeyでログインしたまま何もできないバグを修正(権限回り)
・起動時に通知のストリーミングにつながらない不具合を修正<br>
<br>
</div> </div>
<div id="release-en" style="display:none"> <div id="release-en">
<h5>Let's make it native!</h5> <h5>Let's make it native!</h5>
<a href="https://translate.thedesk.top">Crowdin translation project</a> <a href="https://translate.thedesk.top">Crowdin translation project</a>
</div> </div>
<br><br> <br><br>
<h3>ご支援ください。</h3> <h3>ご支援ください。</h3>
TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。<br> TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。<br>
<a class="btn-share btn waves-effect waves-light red lighten-2" <a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> Entyで支援
Pixiv FANBOXで支援
</a> </a>
<a class="btn-share btn waves-effect waves-light blue" <a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> Osushi.loveで寿司を贈る
</a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
Amazonほしいものリスト Amazonほしいものリスト
</a> </a>
<br> <br>
<a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>にAmazonギフトカードを送る<br> <a href="mailto:mstdn@thedesk.top" target="_blank">mstdn@thedesk.top</a>にAmazonギフトカードを送る<br>
Kyash<br> Kyash<br>
<img src="../../img/kyash.png" width="100"><br> <img src="../../img/kyash.png" width="100"><br>
</div> </div>
@@ -698,31 +628,25 @@
<div id="pip-content"> <div id="pip-content">
</div> </div>
</div> </div>
<!--menu--> <!--menu-->
<div id="menu" class="z-depth-5" style="display:none"> <div id="menu" class="z-depth-5" style="display:none">
<div id="menu-bar" class="drag-bar"></div> <div id="menu-bar" class="drag-bar"></div>
<span class="cancel"> <span class="cancel">
<i class="material-icons waves-effect" onclick="menu()" title="このボックスを閉じる(X)">cancel</i> <i class="material-icons waves-effect" onclick="menu()" title="このボックスを閉じる(X)">cancel</i>
</span> </span>
<div id="menu-wrapper"> <div id="menu-wrapper">
<div id="left-menu"> <div id="left-menu">
<div class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"><i <div class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"><i class="material-icons">add</i><span>カラム追加</span></div>
class="material-icons">add</i><span>カラム追加</span></div> <div class="waves-effect" onclick="sortMenu()" id="sortMenu"><i class="material-icons">sort</i><span>カラム一覧/並べ替え</span></div>
<div class="waves-effect" onclick="sortMenu()" id="sortMenu"><i <div class="waves-effect" onclick="searchMenu()" id="searchMenu"><i class="material-icons">search</i><span>検索</span></div>
class="material-icons">sort</i><span>カラム一覧/並べ替え</span></div> <div class="waves-effect" onclick="listMenu()" id="listMenu"><i class="material-icons">view_headline</i><span>リスト</span></div>
<div class="waves-effect" onclick="searchMenu()" id="searchMenu"><i <div class="waves-effect" onclick="filterMenu()" id="filterMenu"><i class="material-icons">filter_list</i><span>フィルター</span></div>
class="material-icons">search</i><span>検索</span></div>
<div class="waves-effect" onclick="listMenu()" id="listMenu"><i
class="material-icons">view_headline</i><span>リスト</span></div>
<div class="waves-effect" onclick="filterMenu()" id="filterMenu"><i
class="material-icons">filter_list</i><span>フィルター</span></div>
<div class="waves-effect" onclick="help()"><i class="material-icons">help_outline</i><span>ヘルプ</span></div> <div class="waves-effect" onclick="help()"><i class="material-icons">help_outline</i><span>ヘルプ</span></div>
<div class="waves-effect" onclick="location.href='index.html'"><i <div class="waves-effect" onclick="location.href='index.html'"><i class="material-icons">refresh</i><span>TL再読込</span></div>
class="material-icons">refresh</i><span>TL再読込</span></div>
</div> </div>
<div id="right-menu"> <div id="right-menu">
<!--カラム追加--> <!--カラム追加-->
<div id="add-box" class="hide menu-content"> <div id="add-box" class="hide menu-content">
<div class="input-field"><span data-trans="your_acct">選択(スクロールで全選択肢表示)</span> <div class="input-field"><span data-trans="your_acct">選択(スクロールで全選択肢表示)</span>
<br> <br>
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select> <select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
@@ -733,47 +657,24 @@
<input type="hidden" value="local" id="type-sel"> <input type="hidden" value="local" id="type-sel">
表示するタイムライン 表示するタイムライン
<div id="tltype"> <div id="tltype">
<div class="type waves-effect active" data-type="local"> <div class="type waves-effect active" data-type="local"><div><i class="material-icons">people_outline</i></div><span>ローカル</span></div>
<div><i class="material-icons">people_outline</i></div><span>ローカル</span> <div class="type waves-effect" data-type="local-media"><div><i class="material-icons">people_outline</i><i class="material-icons sub-icon">perm_media</i></div><span>ローカル(メディア)</span></div>
</div> <div class="type waves-effect" data-type="home"><div><i class="material-icons">home</i></div><span>ホーム</span></div>
<div class="type waves-effect" data-type="local-media"> <div class="type waves-effect" data-type="pub"><div><i class="material-icons">language</i></div><span>連合</span></div>
<div><i class="material-icons">people_outline</i><i class="material-icons sub-icon">perm_media</i> <div class="type waves-effect" data-type="pub-media"><div><i class="material-icons">language</i><i class="material-icons sub-icon">perm_media</i></div><span>連合(メディア)</span></div>
</div><span>ローカル(メディア)</span> <div class="type waves-effect" data-type="dm"><div><i class="material-icons">mail_outline</i></div><span>ダイレクトメッセージ</span></div>
</div> <div class="type waves-effect" data-type="mix"><div><i class="material-icons">merge_type</i></div><span>統合(ローカルとホーム)</span></div>
<div class="type waves-effect" data-type="home"> <div class="type waves-effect" data-type="plus"><div><i class="material-icons">merge_type</i><i class="material-icons sub-icon">reply</i></div><span>統合(LTL+BT+返信)</span></div>
<div><i class="material-icons">home</i></div><span>ホーム</span> <div class="type waves-effect" data-type="notf"><div><i class="material-icons">notifications</i></div><span>通知</span></div>
</div>
<div class="type waves-effect" data-type="pub">
<div><i class="material-icons">language</i></div><span>連合</span>
</div>
<div class="type waves-effect" data-type="pub-media">
<div><i class="material-icons">language</i><i class="material-icons sub-icon">perm_media</i></div>
<span>連合(メディア)</span>
</div>
<div class="type waves-effect" data-type="dm">
<div><i class="material-icons">mail_outline</i></div><span>ダイレクトメッセージ</span>
</div>
<div class="type waves-effect" data-type="mix">
<div><i class="material-icons">merge_type</i></div><span>統合(ローカルとホーム)</span>
</div>
<div class="type waves-effect" data-type="plus">
<div><i class="material-icons">merge_type</i><i class="material-icons sub-icon">reply</i></div>
<span>統合(LTL+BT+返信)</span>
</div>
<div class="type waves-effect" data-type="notf">
<div><i class="material-icons">notifications</i></div><span>通知</span>
</div>
</div> </div>
</div> </div>
<div id="noauth" class="hide">表示するタイムライン <div id="noauth" class="hide">表示するタイムライン
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" <input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
placeholder="e.g:mstdn.jp">
</div> </div>
<div id="webview-add" class="hide">TweetDeckを表示します。TJDeckをカスタムしたものが読み込まれます(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>)。キーボードショートカットが邪魔をするので、文字入力時はカラムの「WebView優先」にチェックを入れてください。 <div id="webview-add" class="hide">TweetDeckを表示します。TJDeckをカスタムしたものが読み込まれます(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>)。キーボードショートカットが邪魔をするので、文字入力時はカラムの「WebView優先」にチェックを入れてください。
</div> </div>
</div> </div>
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" <button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
data-trans-i="add">
<i class="material-icons left">add</i>追加 <i class="material-icons left">add</i>追加
</button> </button>
<br> <br>
@@ -783,13 +684,12 @@
<div id="src-box" class="hide menu-content"> <div id="src-box" class="hide menu-content">
<div class="input-field"> <div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select> <select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div> </div><div class="input-field">
<div class="input-field"> <i class="material-icons prefix">search</i>
<input id="src" type="text" class="validate" style="width:60%"> <input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
<label for="src" data-trans="src">検索</label> <label for="src" data-trans="src">検索</label>
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" <button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
data-trans-i="src"> <i class="material-icons left">search</i>検索
<i class="material-icons left" style="margin:0">search</i>検索
</button> </button>
<br> <br>
<br> <br>
@@ -803,7 +703,7 @@
<div id="sort-box" class="hide menu-content"> <div id="sort-box" class="hide menu-content">
<ul id="sort"></ul> <ul id="sort"></ul>
<div> <div>
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort"> <button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
<i class="material-icons left">sort</i>並べ替え設定 <i class="material-icons left">sort</i>並べ替え設定
</button> </button>
</div> </div>
@@ -855,22 +755,14 @@
<input type="checkbox" class="filled-in" id="except_filter" value="1" /> <input type="checkbox" class="filled-in" id="except_filter" value="1" />
<label for="except_filter">除外</label><br> <label for="except_filter">除外</label><br>
<span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br> <span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br>
有効期限(あと)<span class="sml">未指定(または0分)で「無限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br> 有効期限(あと)<span class="sml">未指定(または0分)で「無限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0"> <input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">
<input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">時間 <input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">時間
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0"><br> <input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30分</a>/ <button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">追加</button><br>
<a onclick="filterTime(0,1,0)" class="pointer">1時間</a>/
<a onclick="filterTime(0,6,0)" class="pointer">6時間</a>/
<a onclick="filterTime(0,12,0)" class="pointer">12時間</a>/
<a onclick="filterTime(1,0,0)" class="pointer">1日</a>/
<a onclick="filterTime(7,0,0)" class="pointer">7日</a>/
<a onclick="filterTime(0,0,0)" class="pointer">無期限</a><br>
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()"
id="add-filter-btn">追加</button><br>
<span class="sml">Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。</span> <span class="sml">Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。</span>
</div> </div>
</div> </div>
</div> </div>
<a onclick="about()" class="nex waves-effect"> <a onclick="about()" class="nex waves-effect">
<i class="material-icons" style="font-size: 1rem;">info</i>このソフトについて <i class="material-icons" style="font-size: 1rem;">info</i>このソフトについて
@@ -878,24 +770,20 @@
<a onclick="bottomReverse()" class="nex waves-effect"> <a onclick="bottomReverse()" class="nex waves-effect">
<i class="material-icons" style="font-size: 1rem;">swap_horiz</i>トゥートボタンの左右入れ替え <i class="material-icons" style="font-size: 1rem;">swap_horiz</i>トゥートボタンの左右入れ替え
</a> </a>
</div> </div>
<div id="main"> <div id="main">
<!--TLのTL--> <!--TLのTL-->
<div id="timeline-container"> <div id="timeline-container">
<div id="something-wrong"> <h3>Welcome to TheDesk</h3><br><a href="acct.html">アカウントを追加</a>するか下の<i class="material-icons">apps</i>ボタンよりカラムを追加してください。
<div>内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)</div> </div>
</div> </div>
</div> </div>
</div> <!--bottom-->
</div> <div id="bottom" class="reverse">
<!--bottom-->
<div id="bottom" class="reverse">
<div class="leftside reverse"> <div class="leftside reverse">
<div id="dambox"> <div id="dambox">
<button id="posttgl" class="btn waves-effect indigo" <button id="posttgl" class="btn waves-effect indigo" style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;"> <i class="material-icons" style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>トゥート
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>トゥート
</button> </button>
</div> </div>
<div class="leftside reverse" id="group"> <div class="leftside reverse" id="group">
@@ -912,10 +800,8 @@
<a onclick="menu()" class="nex waves-effect" id="list-tgl"> <a onclick="menu()" class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="リスト">apps</i> <i class="material-icons" title="リスト">apps</i>
</a> </a>
<span id="fukidashi">←ここからTL追加</span>
</div>
</div>
</div> </div>
</div></div>
<div> <div>
<div id="tips-menu"> <div id="tips-menu">
<div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span> <div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span>
@@ -932,7 +818,7 @@
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i> <i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a> </a>
<a onclick="tips('spotify')" class="nex waves-effect"> <a onclick="tips('spotify')" class="nex waves-effect">
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i> <i class="fa fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a> </a>
</div> </div>
</div> </div>
@@ -943,54 +829,54 @@
<div id="tips-text" style="float:left; width:300px;"></div> <div id="tips-text" style="float:left; width:300px;"></div>
</div> </div>
</div> </div>
</div> </div>
<!--左下メッセージ--> <!--左下メッセージ-->
<div id="message"> <div id="message">
</div> </div>
<!--Radio Happy(Yui) Taku Inoue--> <!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio> <audio src="" id="radio"></audio>
<!--JS--> <!--JS-->
<script type="text/javascript" src="../../js/ui/tips.js"></script> <script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script> <script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/tl/parse.js"></script> <script type="text/javascript" src="../../js/tl/parse.js"></script>
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script> <script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="../../js/tl/dm.js"></script> <script type="text/javascript" src="../../js/tl/dm.js"></script>
<script type="text/javascript" src="../../js/ui/scroll.js"></script> <script type="text/javascript" src="../../js/ui/scroll.js"></script>
<script type="text/javascript" src="../../js/tl/tl.js"></script> <script type="text/javascript" src="../../js/tl/tl.js"></script>
<script type="text/javascript" src="../../js/tl/card.js"></script> <script type="text/javascript" src="../../js/tl/card.js"></script>
<script type="text/javascript" src="../../js/tl/poll.js"></script> <script type="text/javascript" src="../../js/tl/poll.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>
<script type="text/javascript" src="../../js/tl/notification.js"></script> <script type="text/javascript" src="../../js/tl/notification.js"></script>
<script type="text/javascript" src="../../js/tl/datails.js"></script> <script type="text/javascript" src="../../js/tl/datails.js"></script>
<script type="text/javascript" src="../../js/tl/mix.js"></script> <script type="text/javascript" src="../../js/tl/mix.js"></script>
<script type="text/javascript" src="../../js/tl/src.js"></script> <script type="text/javascript" src="../../js/tl/src.js"></script>
<script type="text/javascript" src="../../js/tl/filter.js"></script> <script type="text/javascript" src="../../js/tl/filter.js"></script>
<script type="text/javascript" src="../../js/tl/tag.js"></script> <script type="text/javascript" src="../../js/tl/tag.js"></script>
<script type="text/javascript" src="../../js/tl/list.js"></script> <script type="text/javascript" src="../../js/tl/list.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/ui/post-box.js"></script> <script type="text/javascript" src="../../js/ui/post-box.js"></script>
<script type="text/javascript" src="../../js/ui/layout.js"></script> <script type="text/javascript" src="../../js/ui/layout.js"></script>
<script type="text/javascript" src="../../js/post/emoji.js"></script> <script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script> <script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script> <script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script> <script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script> <script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script> <script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/post/post.js"></script>
<script type="text/javascript" src="../../js/post/post.js"></script> <script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script> <script type="text/javascript" src="../../js/post/secure.js"></script>
<script type="text/javascript" src="../../js/post/secure.js"></script> <script type="text/javascript" src="../../js/post/img.js"></script>
<script type="text/javascript" src="../../js/post/img.js"></script> <script type="text/javascript" src="../../js/post/status.js"></script>
<script type="text/javascript" src="../../js/post/status.js"></script> <script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script> <script type="text/javascript" src="../../js/post/emoji.js"></script>
<script type="text/javascript" src="../../js/post/suggest.js"></script> <script type="text/javascript" src="../../js/post/suggest.js"></script>
<script type="text/javascript" src="../../js/post/bb-md.js"></script> <script type="text/javascript" src="../../js/post/bb-md.js"></script>
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script> <script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="../../js/userdata/his-data.js"></script> <script type="text/javascript" src="../../js/userdata/his-data.js"></script>
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script> <script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script> <script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script> <script type="text/javascript" src="../../js/emoji/default-emoji.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/ui/menu.js"></script> <script type="text/javascript" src="../../js/ui/menu.js"></script>

View File

@@ -1,6 +1,5 @@
<!doctype html> <!doctype html>
<html lang="ja" style="overflow:scroll"> <html lang="ja">
<head> <head>
<title>Settings - TheDesk</title> <title>Settings - TheDesk</title>
<!-- <!--
@@ -18,27 +17,19 @@
<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> <style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</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>環境設定
@@ -46,45 +37,36 @@
<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 onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a> <a 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>/
<h5>設定のインポートとエクスポート</h5> <h5>設定のインポートとエクスポート</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" <button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">エクスポート</button>
style="width:100%; max-width:200px;">エクスポート</button> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">インポート</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">インポート</button>
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> <templete v-html=item.text.desc></templete><br>
<templete v-html="item.text.desc"></templete><br> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">通知テスト</a><br></template>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">通知テスト</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">変更</button>
</template><br>
</template> </template>
</div> </div>
<h5>フォント</h5> <h5>フォント</h5>
「選択」を押してフォントを選んでください。(Linuxでは動きません)<br> 「選択」を押してフォントを選んでください。<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">選択</button><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> <div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br> <br>
@@ -127,52 +109,40 @@
<h5>名前</h5> <h5>名前</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="名前..."> <input type="text" style="width:300px" id="custom_name" placeholder="名前...">
<h5>説明</h5> <h5>説明</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" <div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="説明..."></textarea></div>
placeholder="説明..."></textarea></div>
<h5>色の系統</h5> <h5>色の系統</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" /> <input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label> <label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" /> <input class="with-gap" name="derection" type="radio" id="light" value="light" />
<label for="light">Light</label> <label for="light">Light</label>
<div id="pickers"> <div id="pickers">
<div> <div>
<h5>Primary</h5>補助要素に使われる背景色 <h5>Primary</h5>補助要素に使われる背景色
<div id="color-picker0-wrap"> <div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value"> <input type="hidden" id="color-picker0_value">
</div> </div>
<div> <div>
<h5>Secondary</h5>全体の背景色など <h5>Secondary</h5>全体の背景色など
<div id="color-picker1-wrap"> <div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value"> <input type="hidden" id="color-picker1_value">
</div> </div>
<div> <div>
<h5>Texts</h5>テキストの色 <h5>Texts</h5>テキストの色
<div id="color-picker2-wrap"> <div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value"> <input type="hidden" id="color-picker2_value">
</div> </div>
<div> <div>
<h5>Accent</h5>ブーストの背景色など <h5>Accent</h5>ブーストの背景色など
<div id="color-picker3-wrap"> <div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value"> <input type="hidden" id="color-picker3_value">
</div> </div>
</div> </div>
<button class="btn-large waves-effect" onclick="customComp()">変更</button>&nbsp;<button <button class="btn-large waves-effect" onclick="customComp()">変更</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">削除</button><br><br>
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>
<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> このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href="https://thedesk.top/mias.html" target="_blank">テーマ互換性</a>
<h4>カスタムテーマのインポート</h4> <h4>カスタムテーマのインポート</h4>
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br> <a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" <input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">インポート</button><br> <button class="btn waves-effect" onclick="customImp()">インポート</button><br>
</li> </li>
<li> <li>
@@ -183,37 +153,26 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">変更</button>
</template><br>
</template> </template>
</div> </div>
<h5>カスタム通知音</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
</div> </div>
</li> </li>
<li> <li>
@@ -224,14 +183,11 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" <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" />
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> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template> </template>
@@ -240,17 +196,14 @@
<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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">変更</button>
</template><br>
</template> </template>
</div> </div>
</div> </div>
@@ -317,14 +270,9 @@
<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 <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>
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">設定</button></div> <a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>接続</a>
<a onclick="spotifyConnect()" class="btn waves-effect nex" <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>
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>接続</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>切断</a>
<h5>テンプレートの編集</h5> <h5>テンプレートの編集</h5>
以下を編集してテンプレートを変更できます。<br> 以下を編集してテンプレートを変更できます。<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist} <textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
@@ -332,8 +280,11 @@
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>
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button> <button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button>
<h5>アルバムアートワークを添付する(Spotify/Windows)</h5> <h5>アルバムアートワークを添付する(Spotify/Windows)</h5>
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">はい</label> <label for="awk_yes">はい</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
@@ -348,96 +299,80 @@
<div class="collapsible-body"> <div class="collapsible-body">
<h5>読み上げの速さ</h5> <h5>読み上げの速さ</h5>
1-100まで、デフォルトは10。<br> 1-100まで、デフォルトは10。<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" <p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
style="width:500px; max-width:100%" /></p>
<h5>読み上げの高さ</h5> <h5>読み上げの高さ</h5>
0-100まで、デフォルトは50。(大きくなるほど高い)<br> 0-100まで、デフォルトは50。(大きくなるほど高い)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" <p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
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()" <button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">再生/停止</button><br>
id="testplay">再生/停止</button><br>
<br> <br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button> <button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button>
</div> </div>
</li> </li>
</ul> </ul>
<br> <br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i <a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a>
class="material-icons left">undo</i>戻る</a> <br>
<br> <br>キーボードショートカット一覧
<br>キーボードショートカット一覧 <li>Ctrl+1-9:1番目9番目のTLにスクロール</li>
<li>Ctrl+1-9:1番目9番目のTLにスクロール</li> <li>N:投稿パネルを開く</li>
<li>N:投稿パネルを開</li> <li>X:投稿パネルを開</li>
<li>X:投稿パネルを開閉</li> <li>Ctrl+Enter:投稿</li>
<li>Ctrl+Enter:投稿</li> <li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li> <li>Alt+Enter:セカンダリートゥートボタン</li>
<li>Alt+Enter:セカンダリートゥートボタン</li> <li>Ctrl+E:全ての通知を既読にする</li>
<li>Ctrl+E:全ての通知を既読にする</li> <li>Esc:投稿パネルを消す</li>
<li>Esc:投稿パネルを消す</li> <li>F5:スーパーリロード</li>
<li>F5:スーパーリロード</li> <li>Ctrl+Shift+C:入力内容を消す</li>
<li>Ctrl+Shift+C:入力内容を消す</li> <li>Ctrl+Shift+S:設定</li>
<li>Ctrl+Shift+S:設定</li> <li>Ctrl+Shift+M:アカウントマネージャ</li>
<li>Ctrl+Shift+M:アカウントマネージャ</li> <li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li> <li>Ctrl+Shift+P:現在選択中のプロフィール</li>
<li>Ctrl+Shift+P:現在選択中のプロフィール</li> <li>←/→:イメージビューワー起動時に画像切り替え</li>
<li>←/→:イメージビューワー起動時に画像切り替え</li> <li>マウスホイール:イメージビューワー時に拡大縮小</li>
<li>マウスホイール:イメージビューワー時に拡大縮小</li> <div class="hide kirishima">
<div class="hide kirishima"> 以下Markdownに対応したインスタンスのみ。
以下Markdownに対応したインスタンスのみ。 <br>
<br> <li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li> <li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Enter:全角スペースを入れて改行</li> <li>Shift+Space:ゼロ幅スペース</li>
<li>Shift+Space:ゼロ幅スペース</li> 以下アスタルテにログインしている場合のみ
以下アスタルテにログインしている場合のみ <br>
<br> <li>Ctrl+R:
<li>Ctrl+R: <a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く </li><br>
</li><br> </div>
</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 red" style="width:100%; max-width:500px;" <button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>このソフトについて</button>
onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i <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>
class="material-icons left">delete</i>初期化</button><br><br> <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>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i <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>
class="material-icons left">info</i>このソフトについて</button> <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="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i <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>
class="material-icons left">web</i>公式HP</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>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" <br>
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Pixiv FANBOX)</a> Kyash<br>
<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> <img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" <a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">アップデートを確認</a><br>
class="pointer">アップデートを確認</a><br> <a href="oss.html">OSS License(オープンソースライセンス)</a><br>
<a href="oss.html">OSS License(オープンソースライセンス)</a><br> <span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
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( <br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>) <a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
<br> <br>
</span><br> </span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br> TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</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/common/about.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/login/logout.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/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.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/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.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/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>

View File

@@ -7,27 +7,6 @@ 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",
@@ -284,7 +263,7 @@ var tlConstruction=[
setValue:200, setValue:200,
text:{ text:{
head:"画像の高さ", head:"画像の高さ",
desc:'オプション:「full」と指定すると全ての画像をクロップしません。', desc:"",
after:"px" after:"px"
} }
},{ },{
@@ -307,46 +286,6 @@ 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=[
@@ -537,16 +476,5 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"絵文字にゼロ幅スペースを使う",
desc:"",
checkbox:yesno
}
} }
] ]

View File

@@ -1,5 +1,5 @@
<!doctype html> <!doctype html>
<html lang="ja"> <html lang="en">
<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,6 +62,9 @@ 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,10 +78,11 @@ 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 hide" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button> <button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button>
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button> <button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button>
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">開始</button> <span class="linux">snap版はSnapcraft等よりDLしてください。<br></span>
<button class="waves-effect btn mac hide" onclick="update('mac')" 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" 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>
@@ -180,12 +184,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=="win32"){ if(platform=="linux"){
$('.windows').removeClass("hide") $('.windows').hide()
}else if(platform=="linux"){ $('.linux').show()
$('.linux').removeClass("hide") }else if(platform=="mac"){
}else if(platform=="darwin"){ $('.windows').hide()
$('.mac').removeClass("hide") $('.mac').show()
} }
var start="https://thedesk.top/ver.json"; var start="https://thedesk.top/ver.json";
fetch(start, { fetch(start, {
@@ -198,23 +202,9 @@ function verck(){
console.error(error); console.error(error);
}).then(function(json) { }).then(function(json) {
console.log(json); console.log(json);
if(platform=="win32"){
$("#ver").text(json.desk); $("#ver").text(json.desk);
localStorage.setItem("next-ver",json.desk); localStorage.setItem("next-ver",json.desk);
}else if(platform=="linux"){
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver",json.desk_linux);
}else if(platform=="darwin"){
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver",json.desk_mac);
}
var lang="ja";
if(lang=="ja"){
$("#det").html(json.detail); $("#det").html(json.detail);
}else{
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver")); $("#now").text(localStorage.getItem("ver"));
}); });

View File

@@ -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,76 +18,63 @@ 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>
<div class="hide-first"> <a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">{{back}}</a><br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">@@back@@</a><br> <h5>{{list}}</h5>
<h5>@@list@@</h5> <div id="acct-list"></div>
<div id="acct-list"></div> <div class="divider"></div>
<div class="divider"></div> <h5>{{add}}</h5><br>
</div>
<div>
<h5>@@add@@</h5><br>
<div id="add"> <div id="add">
<div class="row"> <div class="row">
<div class="col s8"> <div class="col s6">
<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 s4"> <div class="col s6">
<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>
</div> <h5>{{mainacct}}</h5>
<div class="hide-first"> <div class="input-field" style="width:300px"><span data-trans="your_acct">{{selacct}}</span>
<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>
@@ -98,13 +85,12 @@ 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

View File

@@ -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":"Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)", "codesetupwarn":"Check if TheDesk is not working on Windows, you want to login Pleroma servers, you cannot login when it checked.",
"codesetup":"Code setup", "codesetup":"Code setup",
"mainacct":"Main an account", "mainacct":"Main an account",
"selacct":"Select an account", "selacct":"Select an account",
@@ -17,6 +17,5 @@
"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"
} }

View File

@@ -2,7 +2,7 @@
"list":"アカウント一覧", "list":"アカウント一覧",
"back":"戻る", "back":"戻る",
"add":"アカウントを追加", "add":"アカウントを追加",
"codesetupwarn":"チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。", "codesetupwarn":"Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。ログインできない場合、チェックを外してください。",
"codesetup":"コードセットアップ", "codesetup":"コードセットアップ",
"mainacct":"メインアカウント", "mainacct":"メインアカウント",
"selacct":"アカウントを選択", "selacct":"アカウントを選択",
@@ -17,6 +17,5 @@
"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":"アカウントがありません"
} }

View File

@@ -56,9 +56,6 @@
"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",
@@ -101,7 +98,6 @@
"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",
@@ -109,7 +105,6 @@
"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":"",
@@ -141,13 +136,12 @@
"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",
"unlimited":"Never", "days":"days",
"days":"day(s)", "hours":"hours",
"hours":"hour(s)", "mins":"minutes",
"mins":"minute(s)", "secs":"seconds",
"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":"Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>", "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.",
"addColumn":"Add a column", "addColumn":"Add a column",
"sortColumns":"Sort", "sortColumns":"Sort",
"acctMan":"Account Manager", "acctMan":"Account Manager",
@@ -161,6 +155,5 @@
"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"
} }

View File

@@ -56,9 +56,6 @@
"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":"他のアカウントを使用",
@@ -101,7 +98,6 @@
"note":"自己紹介", "note":"自己紹介",
"editProfImg":"アバターを変更", "editProfImg":"アバターを変更",
"editHeader":"ヘッダーを変更", "editHeader":"ヘッダーを変更",
"blocked":"ブロックされています。なぜでしょう?",
"likeUserDes":"似ているユーザーを取得できます。", "likeUserDes":"似ているユーザーを取得できます。",
"get":"取得", "get":"取得",
"historyBack":"一つ前のユーザーデータ", "historyBack":"一つ前のユーザーデータ",
@@ -109,7 +105,6 @@
"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ギフトカードを送る",
@@ -139,15 +134,14 @@
"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":"内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)", "helloTheDesk":"<h3>Welcome to TheDesk</h3><br><a href=\"acct.html\">アカウントを追加</a>するか下の<i class=\"material-icons\">apps</i>ボタンよりカラムを追加してください。",
"addColumn":"カラム追加", "addColumn":"カラム追加",
"sortColumns":"カラム一覧/並べ替え", "sortColumns":"カラム一覧/並べ替え",
"acctMan":"アカウントマネージャー", "acctMan":"アカウントマネージャー",
@@ -161,6 +155,5 @@
"ramTips":"システムメモリ容量", "ramTips":"システムメモリ容量",
"changeTips":"Tips変更", "changeTips":"Tips変更",
"help":"ヘルプ", "help":"ヘルプ",
"about":"このソフトについて", "about":"このソフトについて"
"hereAddColumns":"←ここからTL追加"
} }

View File

@@ -3,8 +3,6 @@
"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",
@@ -27,7 +25,7 @@
"fixwidthwarn":"", "fixwidthwarn":"",
"above":"above", "above":"above",
"font":"Font", "font":"Font",
"fontwarn":"Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn":"Select your favorite font to 'Select'",
"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.",
@@ -83,15 +81,9 @@
"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.",
@@ -121,7 +113,6 @@
"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",

View File

@@ -3,8 +3,6 @@
"set":"設定", "set":"設定",
"yes":"はい", "yes":"はい",
"no":"いいえ", "no":"いいえ",
"none":"なし",
"default":"既定",
"change":"変更", "change":"変更",
"select":"選択", "select":"選択",
"env":"環境設定", "env":"環境設定",
@@ -27,7 +25,7 @@
"fixwidthwarn":"", "fixwidthwarn":"",
"above":"以上", "above":"以上",
"font":"フォント", "font":"フォント",
"fontwarn":"「選択」を押してフォントを選んでください。(Linuxでは動きません)", "fontwarn":"「選択」を押してフォントを選んでください。",
"fontsize":"フォントサイズ", "fontsize":"フォントサイズ",
"savefolder":"デフォルトの保存先", "savefolder":"デフォルトの保存先",
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。", "savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
@@ -83,15 +81,9 @@
"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するかのダイアログを表示します。",
@@ -121,7 +113,6 @@
"secwarn":"公開範囲の変更とトゥートを一発でできます。", "secwarn":"公開範囲の変更とトゥートを一発でできます。",
"nothing":"表示しない", "nothing":"表示しない",
"localonly":"ローカル限定", "localonly":"ローカル限定",
"zeroWidthEmoji":"絵文字にゼロ幅スペースを使う",
"keysc":"キーボードショートカットの設定", "keysc":"キーボードショートカットの設定",
"iks":"簡単文字入力", "iks":"簡単文字入力",
"okswarn":"絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。", "okswarn":"絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。",

View File

@@ -1,37 +0,0 @@
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)
}
}

View File

@@ -1,6 +1,5 @@
<!doctype html> <!doctype html>
<html lang="@@lang@@" style="overflow:scroll"> <html lang="@@lang@@">
<head> <head>
<title>Settings - TheDesk</title> <title>Settings - TheDesk</title>
@@comment-start@@ @@comment-start@@
@@ -18,27 +17,19 @@
<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> <style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</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@@
@@ -48,39 +39,30 @@
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" <button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">@@export@@</button>
style="width:100%; max-width:200px;">@@export@@</button> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">@@import@@</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">@@import@@</button>
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> <templete v-html=item.text.desc></templete><br>
<templete v-html="item.text.desc"></templete><br> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">@@nntest@@</a><br></template>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">@@nntest@@</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">@@change@@</button>
</template><br>
</template> </template>
</div> </div>
<h5>@@font@@</h5> <h5>@@font@@</h5>
@@ -127,52 +109,40 @@
<h5>@@name@@</h5> <h5>@@name@@</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="@@name@@..."> <input type="text" style="width:300px" id="custom_name" placeholder="@@name@@...">
<h5>@@desc@@</h5> <h5>@@desc@@</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" <div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="@@desc@@..."></textarea></div>
placeholder="@@desc@@..."></textarea></div>
<h5>@@customthemeDirection@@</h5> <h5>@@customthemeDirection@@</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" /> <input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label> <label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" /> <input class="with-gap" name="derection" type="radio" id="light" value="light" />
<label for="light">Light</label> <label for="light">Light</label>
<div id="pickers"> <div id="pickers">
<div> <div>
<h5>Primary</h5>@@secondarycolor@@ <h5>Primary</h5>@@secondarycolor@@
<div id="color-picker0-wrap"> <div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value"> <input type="hidden" id="color-picker0_value">
</div> </div>
<div> <div>
<h5>Secondary</h5>@@primary@@ <h5>Secondary</h5>@@primary@@
<div id="color-picker1-wrap"> <div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value"> <input type="hidden" id="color-picker1_value">
</div> </div>
<div> <div>
<h5>Texts</h5>@@text@@ <h5>Texts</h5>@@text@@
<div id="color-picker2-wrap"> <div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value"> <input type="hidden" id="color-picker2_value">
</div> </div>
<div> <div>
<h5>Accent</h5>@@accent@@ <h5>Accent</h5>@@accent@@
<div id="color-picker3-wrap"> <div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value"> <input type="hidden" id="color-picker3_value">
</div> </div>
</div> </div>
<button class="btn-large waves-effect" onclick="customComp()">@@change@@</button>&nbsp;<button <button class="btn-large waves-effect" onclick="customComp()">@@change@@</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
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>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
@@customShare@@ @@customShare@@
<h4>@@customImport@@</h4> <h4>@@customImport@@</h4>
@@cImpWarn@@<br> @@cImpWarn@@<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" <input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">@@import@@</button><br> <button class="btn waves-effect" onclick="customImp()">@@import@@</button><br>
</li> </li>
<li> <li>
@@ -183,37 +153,26 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">@@change@@</button>
</template><br>
</template> </template>
</div> </div>
<h5>@@customSound@@</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
</div> </div>
</li> </li>
<li> <li>
@@ -224,14 +183,11 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" <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" />
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> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template> </template>
@@ -240,17 +196,14 @@
<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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">@@change@@</button>
</template><br>
</template> </template>
</div> </div>
</div> </div>
@@ -317,14 +270,9 @@
@@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 <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>
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</button></div> <a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>@@connect@@</a>
<a onclick="spotifyConnect()" class="btn waves-effect nex" <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>
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>@@connect@@</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>@@disconnect@@</a>
<h5>@@templeteedit@@</h5> <h5>@@templeteedit@@</h5>
@@templeteeditwarn@@<br> @@templeteeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist} <textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
@@ -332,8 +280,11 @@
@@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>
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button> <button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
<h5>@@postartwork@@</h5> <h5>@@postartwork@@</h5>
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">@@yes@@</label> <label for="awk_yes">@@yes@@</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
@@ -348,96 +299,80 @@
<div class="collapsible-body"> <div class="collapsible-body">
<h5>@@speed@@</h5> <h5>@@speed@@</h5>
@@speedwarn@@<br> @@speedwarn@@<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" <p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
style="width:500px; max-width:100%" /></p>
<h5>@@pitch@@</h5> <h5>@@pitch@@</h5>
@@pitchwarn@@<br> @@pitchwarn@@<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" <p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
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()" <button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">@@playstop@@</button><br>
id="testplay">@@playstop@@</button><br>
<br> <br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button> <button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
</div> </div>
</li> </li>
</ul> </ul>
<br> <br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i <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>
class="material-icons left">undo</i>@@back@@</a> <br>
<br> <br>@@keyscs@@
<br>@@keyscs@@ <li>Ctrl+1-9:@@keyscr@@</li>
<li>Ctrl+1-9:@@keyscr@@</li> <li>N:@@keynew@@</li>
<li>N:@@keynew@@</li> <li>X:@@keytoggle@@</li>
<li>X:@@keytoggle@@</li> <li>Ctrl+Enter:@@keypost@@</li>
<li>Ctrl+Enter:@@keypost@@</li> <li>Ctrl+Enter+Shift:@@keysecpost@@</li>
<li>Ctrl+Enter+Shift:@@keysecpost@@</li> <li>Alt+Enter:@@secondary@@</li>
<li>Alt+Enter:@@secondary@@</li> <li>Ctrl+E:@@keyunread@@</li>
<li>Ctrl+E:@@keyunread@@</li> <li>Esc:@@keyesc@@</li>
<li>Esc:@@keyesc@@</li> <li>F5:@@keyf5@@</li>
<li>F5:@@keyf5@@</li> <li>Ctrl+Shift+C:@@keyclear@@</li>
<li>Ctrl+Shift+C:@@keyclear@@</li> <li>Ctrl+Shift+S:@@setting@@</li>
<li>Ctrl+Shift+S:@@setting@@</li> <li>Ctrl+Shift+M:@@keyacctman@@</li>
<li>Ctrl+Shift+M:@@keyacctman@@</li> <li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li> <li>Ctrl+Shift+P:@@keyshowprof@@</li>
<li>Ctrl+Shift+P:@@keyshowprof@@</li> <li>←/→:@@keyrow@@</li>
<li>←/→:@@keyrow@@</li> <li>@@keyzoom@@</li>
<li>@@keyzoom@@</li> <div class="hide kirishima">
<div class="hide kirishima"> 以下Markdownに対応したインスタンスのみ。
以下Markdownに対応したインスタンスのみ。 <br>
<br> <li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li> <li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Enter:全角スペースを入れて改行</li> <li>Shift+Space:ゼロ幅スペース</li>
<li>Shift+Space:ゼロ幅スペース</li> 以下アスタルテにログインしている場合のみ
以下アスタルテにログインしている場合のみ <br>
<br> <li>Ctrl+R:
<li>Ctrl+R: <a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く </li><br>
</li><br> </div>
</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 red" style="width:100%; max-width:500px;" <button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>@@about@@</button>
onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i <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>
class="material-icons left">delete</i>@@reset@@</button><br><br> <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>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i <a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>@@help@@/Docs(Constructing)</a>
class="material-icons left">info</i>@@about@@</button> <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="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i <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>
class="material-icons left">web</i>@@hp@@</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>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" <br>
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Pixiv FANBOX)</a> Kyash<br>
<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> <img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" <a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">@@checkup@@</a><br>
class="pointer">@@checkup@@</a><br> <a href="oss.html">OSS License@@ossJP@@</a><br>
<a href="oss.html">OSS License@@ossJP@@</a><br> <span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
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( <br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>) <a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
<br> <br>
</span><br> </span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br> TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</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/common/about.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/login/logout.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/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.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/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.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/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>

View File

@@ -7,27 +7,6 @@ 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",
@@ -284,7 +263,7 @@ var tlConstruction=[
setValue:200, setValue:200,
text:{ text:{
head:"@@imgheight@@", head:"@@imgheight@@",
desc:'@@imgheightwarn@@', desc:"",
after:"px" after:"px"
} }
},{ },{
@@ -307,46 +286,6 @@ 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=[
@@ -537,16 +476,5 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"@@zeroWidthEmoji@@",
desc:"",
checkbox:yesno
}
} }
] ]

View File

@@ -1,18 +1,18 @@
<!doctype html> <!doctype html>
<html lang="@@lang@@"> <html lang="en">
<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,6 +62,9 @@ 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>
@@ -72,27 +75,28 @@ 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 hide" onclick="update('install')" style="margin-left:15px;">@@installer@@</button> <button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">{{installer}}</button>
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">@@portable@@</button> <button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">{{portable}}</button>
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">@@download@@</button> <span class="linux">{{snap}}<br></span>
<button class="waves-effect btn mac hide" onclick="update('mac')" 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" 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>
@@ -180,12 +184,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=="win32"){ if(platform=="linux"){
$('.windows').removeClass("hide") $('.windows').hide()
}else if(platform=="linux"){ $('.linux').show()
$('.linux').removeClass("hide") }else if(platform=="mac"){
}else if(platform=="darwin"){ $('.windows').hide()
$('.mac').removeClass("hide") $('.mac').show()
} }
var start="https://thedesk.top/ver.json"; var start="https://thedesk.top/ver.json";
fetch(start, { fetch(start, {
@@ -198,23 +202,9 @@ function verck(){
console.error(error); console.error(error);
}).then(function(json) { }).then(function(json) {
console.log(json); console.log(json);
if(platform=="win32"){
$("#ver").text(json.desk); $("#ver").text(json.desk);
localStorage.setItem("next-ver",json.desk); localStorage.setItem("next-ver",json.desk);
}else if(platform=="linux"){
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver",json.desk_linux);
}else if(platform=="darwin"){
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver",json.desk_mac);
}
var lang="@@lang@@";
if(lang=="ja"){
$("#det").html(json.detail); $("#det").html(json.detail);
}else{
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver")); $("#now").text(localStorage.getItem("ver"));
}); });

View File

@@ -18,14 +18,6 @@ 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">
@@ -47,17 +39,14 @@ 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>
<div class="hide-first"> <a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">crwdns366:0crwdne366:0</a><br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">crwdns366:0crwdne366:0</a><br> <h5>crwdns365:0crwdne365:0</h5>
<h5>crwdns365:0crwdne365:0</h5> <div id="acct-list"></div>
<div id="acct-list"></div> <div class="divider"></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 s8"> <div class="col s6">
<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>
@@ -67,7 +56,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 s4"> <div class="col s6">
<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>
@@ -84,8 +73,6 @@ 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>
@@ -104,7 +91,6 @@ 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>

View File

@@ -1,18 +1,16 @@
<!doctype html> <!doctype html>
<html lang="ps"> <html lang="ps">
<head> <head>
<title>TheDesk</title> <title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport"> <meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet"> <link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" <link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet"> <link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/tl.css" rel="stylesheet" type="text/css"> <link href='../../css/tl.css' rel='stylesheet' type='text/css'>
<link href="../../css/userdata.css" rel="stylesheet" type="text/css"> <link href='../../css/userdata.css' rel='stylesheet' type='text/css'>
<link href="../../css/post.css" rel="stylesheet" type="text/css"> <link href='../../css/post.css' rel='stylesheet' type='text/css'>
<link href="../../css/master.css" type="text/css" rel="stylesheet"> <link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="../../css/sort.css" rel="stylesheet" type="text/css"> <link href='../../css/sort.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<meta charset="utf-8"> <meta charset="utf-8">
@@ -23,187 +21,158 @@
<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>
</head> </head>
<body> <body>
<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 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/blurhash.js"></script> <script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script> <script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script> <script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script> <script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script> <script>
<script> var ver="Usamin (18.1.0)";
var ver = "Usamin (18.4.0)"; //betaを入れるとバージョンチェックしない
//betaを入れるとバージョンチェックしない //GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html) //var ver="beta";
//var ver="beta"; //WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除 var acct_id=0;
var acct_id = 0; var tlid=0;
var tlid = 0; verck(ver);
</script> </script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea> <textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<canvas id="canvas" style="top:-100px; position:fixed;width:32px;height:32px" width="32" height="32"></canvas> <div id="tl">
<div id="tl"> <!--TL-->
<!--TL--> <!--ドラッグハンドラ-->
<!--ドラッグハンドラ--> <div id="drag">
<div id="drag"> <div id="drag-content" data-trans="drag_here">crwdns384:0crwdne384:0
<div id="drag-content" data-trans="drag_here">crwdns384:0crwdne384:0 <br>
<br> <button class="btn waves-effect" onclick="closedrop()" data-trans="close">crwdns385:0crwdne385:0</button>
<button class="btn waves-effect" onclick="closedrop()" data-trans="close">crwdns385:0crwdne385:0</button> </div>
</div> </div>
</div> </div>
</div> <div id="post-box" class="z-depth-5">
<div id="post-box" class="z-depth-5"> <div id="post-bar" class="drag-bar">crwdns2402:0crwdne2402:0</div>
<div id="post-bar" class="drag-bar"><span id="unreact">crwdns2402:0crwdne2402:0</span><span id="addreact" <!--トゥートボックス-->
class="hide">Reaction</span></div> <div id="left-side">
<!--トゥートボックス--> <div class="row" style="margin-bottom:0;">
<div id="left-side"> </span>
<div class="row" style="margin-bottom:0;"> <div class="" style="float:left;">
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize">
<img src="../../img/missing.svg" id="acct-sel-prof" title="crwdns386:0crwdne386:0(Ctrl+Shift+P)" data-trans-title="post_box_prof" width="24px">
</a>
</div>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="crwdns412:0crwdne412:0(X)" data-trans-title="post_box_close">cancel</i>
</span> </span>
<div class="" style="float:left;"> <!--Markdown-->
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize"> <div class="row" style="margin-bottom:0">
<img src="../../img/missing.svg" id="acct-sel-prof" title="crwdns386:0crwdne386:0(Ctrl+Shift+P)" <div class="markdown mize hide">
data-trans-title="post_box_prof" width="24px"> <div class="col s12">
</a> <i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
</div> <i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select> <i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
</div> <i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<span class="cancel"> <i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons waves-effect" onclick="hide()" title="crwdns412:0crwdne412:0(X)" <i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
data-trans-title="post_box_close">cancel</i> <i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
</span> <i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<!--Markdown--> <i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<div class="row" style="margin-bottom:0"> <i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<div class="markdown mize hide"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<div class="col s12"> <i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i> <i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" <span class="sml gray pointer waves-effect">
title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i> <a onclick="mdToggle()">Markdownエディタを隠す</a>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" </span>
title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i> <br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i> <input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" <i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
title="引用">format_quote</i> <input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" <br>
title="見出し">short_text</i> <i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" <input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i> <input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" <br>
title="箇条書きリスト">format_list_bulleted</i> <i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" <input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
title="番号付きリスト">format_list_numbered</i> <input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
<i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" </div>
title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i> </div>
<i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" <div class="input-field col s12" id="preview-field" style="margin-top: 0;">
title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i> <div id="md-preview">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" </div>
title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i> <span class="sml gray pointer">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" <a onclick="previewEdit()">Edit</a>
title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i> </span>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" </div>
title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i> <div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')"
title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')"
title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')"
title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
<input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()"
title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
<input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0;">
<div id="md-preview">
</div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" <textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" data-length="500"></textarea>
data-length="500"></textarea> <label for="textarea" data-trans="toot">crwdns388:0crwdne388:0</label>
<label for="textarea" data-trans="toot">crwdns388:0crwdne388:0</label> <br>
<br> <span class="sml gray pointer markdown mize" id="preview-btn">
<span class="sml gray pointer markdown mize" id="preview-btn"> <a onclick="preview()">Preview</a>
<a onclick="preview()">Preview</a> </span>
</span> <span class="sml gray pointer anti-markdown mize">
<span class="sml gray pointer anti-markdown mize"> <a onclick="mdToggle()">Markdownエディタを表示</a>
<a onclick="mdToggle()">Markdownエディタを表示</a> </span>
</span> </div>
</div> <div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between"> <i class="waves-effect gray material-icons" id="nsfw" title="crwdns389:0crwdne389:0" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons" id="nsfw" title="crwdns389:0crwdne389:0" <i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1' id="vis-icon">public</i>
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1'
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="crwdns390:0crwdne390:0">CW</a> <a class="waves-effect gray" id="cw" onclick="cw()" title="crwdns390:0crwdne390:0">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" <span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" onclick="fileselect()" title="crwdns391:0crwdne391:0">photo_library</i></span></span>
onclick="fileselect()" title="crwdns391:0crwdne391:0">photo_library</i></span></span> <i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="crwdns393:0crwdne393:0">tag_faces</i>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="crwdns393:0crwdne393:0">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button" data-activates='dropdown2'>more_vert</i> <i class="waves-effect gray material-icons dropdown-button" data-activates='dropdown2'>more_vert</i>
<i class="material-icons nex gray waves-effect" title="crwdns395:0crwdne395:0(Ctrl+Shit+C)" <i class="material-icons nex gray waves-effect" title="crwdns395:0crwdne395:0(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
data-trans-title="post_box_clear" id="clear">clear</i> </div>
</div> <div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div id="taglist"></div> <div id="taglist"></div>
<div id="preview" class="mize"></div> <div id="preview" class="mize"></div>
<span class=" sml mize"><span data-trans="reply">crwdns396:0crwdne396:0</span>: <span class=" sml mize"><span data-trans="reply">crwdns396:0crwdne396:0</span>:
<span id="rec">crwdns397:0crwdne397:0</span>/<span data-trans="file">crwdns399:0crwdne399:0</span>: <span id="rec">crwdns397:0crwdne397:0</span>/<span data-trans="file">crwdns399:0crwdne399:0</span>:
<span id="mec">crwdns400:0crwdne400:0</span>/<span data-trans="vis">crwdns401:0crwdne401:0</span>: <span id="mec">crwdns400:0crwdne400:0</span>/<span data-trans="vis">crwdns401:0crwdne401:0</span>:
<span id="vis">public</span> <span id="vis">public</span>
</span> </span>
<br> <br>
<input type="text" id="cw-text" placeholder="crwdns402:0crwdne402:0" class="mize" style="margin:0"> <input type="text" id="cw-text" placeholder="crwdns402:0crwdne402:0" class="mize" style="margin:0">
<div id="sch-box">crwdns1886:0crwdne1886:0<br><span class="sml">crwdns1888:0crwdne1888:0</span><br> <div id="sch-box">crwdns1886:0crwdne1886:0<br><span class="sml">crwdns1888:0crwdne1888:0</span><br>
<input type="datetime-local" id="sch-date" placeholder="crwdns1884:0crwdne1884:0" class="datepicker" style="margin:0"> <input type="datetime-local" id="sch-date" placeholder="crwdns1884:0crwdne1884:0" class="datepicker" style="margin:0">
</div> </div>
</div> </div>
</div> </div>
<!-- 公開範囲 Dropdown Structure --> <!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'> <ul id='dropdown1' class='dropdown-content'>
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">crwdns403:0crwdne403:0</li> <li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">crwdns403:0crwdne403:0</li>
<li> <li>
<a onclick="vis('public')">crwdns404:0crwdne404:0(Public)</a> <a onclick="vis('public')">crwdns404:0crwdne404:0(Public)</a>
</li> </li>
<li> <li>
<a onclick="vis('unlisted')">crwdns405:0crwdne405:0(Unlisted)</a> <a onclick="vis('unlisted')">crwdns405:0crwdne405:0(Unlisted)</a>
</li> </li>
<li> <li>
<a onclick="vis('private')" id="private-button">crwdns406:0crwdne406:0(Private)</a> <a onclick="vis('private')" id="private-button">crwdns406:0crwdne406:0(Private)</a>
</li> </li>
<li id="limited-button" class="hide"> <li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a> <a onclick="vis('limited')">限定公開(Limited)</a>
</li> </li>
<li id="local-button" class="hide"> <li id="local-button" class="hide">
<a onclick="vis('local')">crwdns407:0crwdne407:0(Local)</a> <a onclick="vis('local')">crwdns407:0crwdne407:0(Local)</a>
</li> </li>
<li> <li>
<a onclick="vis('direct')" class="disabled direct">crwdns408:0crwdne408:0(Direct)</a> <a onclick="vis('direct')" class="disabled direct">crwdns408:0crwdne408:0(Direct)</a>
</li> </li>
</ul> </ul>
<!-- その他 Dropdown Structure --> <!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'> <ul id='dropdown2' class='dropdown-content'>
<li> <li>
<a onclick="adobe()">crwdns392:0crwdne392:0</a> <a onclick="adobe()">crwdns392:0crwdne392:0</a>
</li> </li>
@@ -220,37 +189,34 @@
<a onclick="pollToggle();">crwdns2406:0crwdne2406:0</a> <a onclick="pollToggle();">crwdns2406:0crwdne2406:0</a>
</li> </li>
</ul> </ul>
<!--hidden area--> <!--hidden area-->
<input type="hidden" id="reply"> <input type="hidden" id="reply">
<input type="hidden" id="media"> <input type="hidden" id="media">
<!--END hidden area--> <!--END hidden area-->
</div> </div>
<div id="toot-btn-field"> <div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()" <button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()" id="toot-post-btn">crwdns388:0crwdne388:0</button>
id="toot-post-btn">crwdns388:0crwdne388:0</button> <button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon" title="crwdns1890:0crwdne1890:0">lock_open</i></button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn"><i </div>
class="material-icons" id="toot-sec-icon" title="crwdns1890:0crwdne1890:0">lock_open</i></button> </div>
</div> <div id="right-side">
</div> <div id="suggest"></div>
<div id="right-side"> <!--絵文字ピッカー-->
<div id="suggest"></div> <div id="emoji" class="hide">
<!--絵文字ピッカー-->
<div id="emoji" class="hide">
<span class="gray sml">crwdns409:0crwdne409:0 <span class="gray sml">crwdns409:0crwdne409:0
<a onclick="emojiGet('true')" class="pointer">crwdns411:0crwdne411:0</a> <a onclick="emojiGet('true')" class="pointer">crwdns411:0crwdne411:0</a>
<i class="material-icons waves-effect" onclick="emojiToggle()" title="crwdns412:0crwdne412:0" data-trans-title="post_box_close">cancel</i>
<br> <br>
</span> </span>
<div id="emoji-list" class="" style=""> <div id="emoji-list" class="" style="">
</div> </div>
<div class="emoji-control center"> <div class="emoji-control center">
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" <button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" id="emoji-before">
id="emoji-before">
<i class="material-icons">navigate_before</i> <i class="material-icons">navigate_before</i>
</button> </button>
<span id="emoji-count"></span>/ <span id="emoji-count"></span>/
<span id="emoji-sum"></span> <span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" <button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" id="emoji-next">
id="emoji-next">
<i class="material-icons">navigate_next</i> <i class="material-icons">navigate_next</i>
</button> </button>
</div> </div>
@@ -285,7 +251,7 @@
<i class="material-icons">flag</i> <i class="material-icons">flag</i>
</a> </a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn"> <a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fab fa-fort-awesome"></i> <i class="fa fa-fort-awesome"></i>
</a> </a>
</div> </div>
</div> </div>
@@ -293,8 +259,12 @@
<div id="poll" class="hide"> <div id="poll" class="hide">
<select id="poll-sel" onchange="pollProviderCk()"> <select id="poll-sel" onchange="pollProviderCk()">
<option value="nothing">crwdns2408:0crwdne2408:0</option> <option value="nothing">crwdns2408:0crwdne2408:0</option>
<option value="votedon">votedon.</option>
<option value="mastodon-poll">Mastodon(2.8~)</option> <option value="mastodon-poll">Mastodon(2.8~)</option>
</select> </select>
<div id="votedon" class="poll-provider hide">
WIP
</div>
<div id="mastodon-poll" class="poll-provider hide"> <div id="mastodon-poll" class="poll-provider hide">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:01"> <input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:01">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:02"> <input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:02">
@@ -306,36 +276,15 @@
<label for="poll-until">crwdns2412:0crwdne2412:0</label><br> <label for="poll-until">crwdns2412:0crwdne2412:0</label><br>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">crwdns507:0crwdne507:0 <input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">crwdns507:0crwdne507:0
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">crwdns508:0crwdne508:0 <input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">crwdns508:0crwdne508:0
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6">crwdns509:0crwdne509:0 <input type="number" style="width:50px" id="mins_poll" placeholder="m" value="0">crwdns509:0crwdne509:0
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Modal Structure Tootdata--> <!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer"> <div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content"> <div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col"> <ul class="collapsible" data-collapsible="accordion" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>@@afterLTL@@
</div>
<div class="collapsible-body toot-reset" id="ltl-after">
</div>
</li>
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">person_outline</i>@@afterUTL@@
</div>
<div class="collapsible-body toot-reset" id="user-after">
</div>
</li>
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">language</i>@@afterFTL@@
</div>
<div class="collapsible-body toot-reset" id="ftl-after">
</div>
</li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">arrow_upward</i>crwdns423:0crwdne423:0 <i class="material-icons">arrow_upward</i>crwdns423:0crwdne423:0
@@ -347,7 +296,7 @@
<div class="collapsible-header" id="activator"> <div class="collapsible-header" id="activator">
<i class="material-icons">more_horiz</i>crwdns424:0crwdne424:0 <i class="material-icons">more_horiz</i>crwdns424:0crwdne424:0
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body" >
<div class="toot-reset" id="toot-this"></div> <div class="toot-reset" id="toot-this"></div>
</div> </div>
</li> </li>
@@ -381,29 +330,26 @@
</li> </li>
<li class="dm-hide"> <li class="dm-hide">
<div class="collapsible-header"> <div class="collapsible-header">
<i class="text-darken-3 false fas fa-retweet"></i>crwdns429:0crwdne429:0 <i class="text-darken-3 fa fa-retweet"></i>crwdns429:0crwdne429:0
</div> </div>
<div class="collapsible-body toot-reset" id="toot-rt"> <div class="collapsible-body toot-reset" id="toot-rt">
</div> </div>
</li> </li>
</ul> </ul>
<div class="dm-hide"> <div class="dm-hide">
crwdns430:0crwdne430:0(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>crwdns431:0crwdne431:0)<br> crwdns430:0crwdne430:0(<i class="fa fa-retweet"></i>/<i class="fa fa-star"></i>crwdns431:0crwdne431:0)<br>
<div class="row"> <div class="row">
<div class="col s6"> <div class="col s6">
<select id="status-acct-sel" class="acct-sel"></select> <select id="status-acct-sel" class="acct-sel"></select>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i <button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i class="fa fa-share"></i>/button>
class="fas fa-share"></i></button>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i <button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i class="fa fa-retweet"></i></button>
class="fas fa-retweet"></i></button>
</div> </div>
<div class="col s2"> <div class="col s2">
<button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i <button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i class="fa fa-star"></i></button>
class="fas fa-star"></i></button>
</div> </div>
</div> </div>
<div id="toot-tools"> <div id="toot-tools">
@@ -411,9 +357,10 @@
<div id="toot-after"> <div id="toot-after">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">crwdns435:0crwdne435:0</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">crwdns435:0crwdne435:0</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="shot()">crwdns436:0crwdne436:0</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">crwdns437:0crwdne437:0</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">crwdns437:0crwdne437:0</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">crwdns438:0crwdne438:0</a> <a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">crwdns438:0crwdne438:0</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">crwdns385:0crwdne385:0</a> <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">crwdns385:0crwdne385:0</a>
@@ -425,7 +372,7 @@
<div id="his-data-show"> <div id="his-data-show">
<div class="his-float" id="his-float-data"> <div class="his-float" id="his-float-data">
<div id="his-basic-prof"> <div id="his-basic-prof">
<img src="../../img/loading.svg" id="his-prof" draggable="false"> <img src="../../img/loading.svg" id="his-prof">
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span> <span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
<br>@ <br>@
<span id="his-acct"></span><br> <span id="his-acct"></span><br>
@@ -443,16 +390,12 @@
<span class="cbadge" style="max-width:150px; width:150px; ">Since: <span class="cbadge" style="max-width:150px; width:150px; ">Since:
<span id="his-since"></span> <span id="his-since"></span>
</span> </span>
<div id="his-proof-prof"></div>
</div> </div>
<div id="his-des" data-acct=""></div><br> <div id="his-des"></div><br>
<div id="his-plus-action"> <div id="his-plus-action">
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-emp-btn" <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-emp-btn" onclick="empUser()">crwdns472:0crwdne472:0</a>
onclick="empUser()">crwdns472:0crwdne472:0</a> <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data" id="his-end-btn" onclick="pinUser()">crwdns454:0crwdne454:0</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data" id="his-end-btn" <a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin" onclick="profbrws()">crwdns455:0crwdne455:0</a><br>
onclick="pinUser()">crwdns454:0crwdne454:0</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">crwdns455:0crwdne455:0</a><br>
</div><br> </div><br>
<div id="his-matching-list"> <div id="his-matching-list">
crwdns469:0crwdne469:0<br> crwdns469:0crwdne469:0<br>
@@ -489,8 +432,7 @@
<a go="#his-blocking-list" title="crwdns446:0crwdne446:0"><i class="material-icons">voice_over_off</i></a> <a go="#his-blocking-list" title="crwdns446:0crwdne446:0"><i class="material-icons">voice_over_off</i></a>
</li> </li>
<li class="custom-tab col my-data-width only-my-data"> <li class="custom-tab col my-data-width only-my-data">
<a go="#his-domain-list" title="crwdns450:0crwdne450:0"><i class="material-icons">language</i><i <a go="#his-domain-list" title="crwdns450:0crwdne450:0"><i class="material-icons">language</i><i class="material-icons">block</i></a>
class="material-icons">block</i></a>
</li> </li>
<li class="custom-tab col my-data-width only-my-data"> <li class="custom-tab col my-data-width only-my-data">
<a go="#his-prof-list" title="crwdns451:0crwdne451:0"><i class="material-icons">create</i></a> <a go="#his-prof-list" title="crwdns451:0crwdne451:0"><i class="material-icons">create</i></a>
@@ -506,20 +448,17 @@
<div id="his-tl" class="tab-content"> <div id="his-tl" class="tab-content">
<div id="his-tl-contents" class="cont-series"> <div id="his-tl-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="utl('--now','more')">crwdns457:0crwdne457:0</button>
onclick="utl('--now','more')">crwdns457:0crwdne457:0</button>
</div> </div>
<div id="his-follow-list" class="tab-content"> <div id="his-follow-list" class="tab-content">
<div id="his-follow-list-contents" class="cont-series"> <div id="his-follow-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="flw('--now','more')">crwdns457:0crwdne457:0</button>
onclick="flw('--now','more')">crwdns457:0crwdne457:0</button>
</div> </div>
<div id="his-follower-list" class="tab-content"> <div id="his-follower-list" class="tab-content">
<div id="his-follower-list-contents" class="cont-series"> <div id="his-follower-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="fer('--now','more')">crwdns457:0crwdne457:0</button>
onclick="fer('--now','more')">crwdns457:0crwdne457:0</button>
</div> </div>
<div id="his-action" class="tab-content"> <div id="his-action" class="tab-content">
crwdns430:0crwdne430:0crwdns458:0crwdne458:0crwdns440:0crwdne440:0(crwdns459:0crwdne459:0)<br> crwdns430:0crwdne430:0crwdns458:0crwdne458:0crwdns440:0crwdne440:0(crwdns459:0crwdne459:0)<br>
@@ -539,7 +478,7 @@
<button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">crwdns457:0crwdne457:0</button> <button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">crwdns457:0crwdne457:0</button>
</div> </div>
<div id="his-blocking-list" class="tab-content"> <div id="his-blocking-list" class="tab-content">
<div id="his-blocking-list-contents" class="cont-series"> <div id="his-blocking-list-contents"class="cont-series" >
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">crwdns457:0crwdne457:0</button> <button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">crwdns457:0crwdne457:0</button>
</div> </div>
@@ -551,8 +490,7 @@
<div id="his-domain-list" class="tab-content"> <div id="his-domain-list" class="tab-content">
<div id="his-domain-list-contents" class="cont-series"> <div id="his-domain-list-contents" class="cont-series">
</div> </div>
<button class="btn waves-effect " style="width:100%; padding:0;" <button class="btn waves-effect " style="width:100%; padding:0;" onclick="showDom('more')">crwdns457:0crwdne457:0</button>crwdns464:0crwdne464:0
onclick="showDom('more')">crwdns457:0crwdne457:0</button>crwdns464:0crwdne464:0
<br> <br>
<input type="text" placeholder="example.com" id="domainblock"> <input type="text" placeholder="example.com" id="domainblock">
<button class="btn waves-effect" onclick="addDomainblock()">crwdns491:0crwdne491:0</button> <button class="btn waves-effect" onclick="addDomainblock()">crwdns491:0crwdne491:0</button>
@@ -587,20 +525,13 @@
</div> </div>
</div> </div>
</div> </div>
<div class="his-float" id="his-float-blocked">
<div>@@blocked@@</div>
</div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" <button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">crwdns471:0crwdne471:0</button>
onclick="historyShow()">crwdns471:0crwdne471:0</button> <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" onclick="follow()">crwdns440:0crwdne440:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn" onclick="mute()">crwdns449:0crwdne449:0</a>
onclick="follow()">crwdns440:0crwdne440:0</a> <a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn" onclick="block()">crwdns448:0crwdne448:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">crwdns449:0crwdne449:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">crwdns448:0crwdne448:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">crwdns385:0crwdne385:0</a> <a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">crwdns385:0crwdne385:0</a>
</div> </div>
</div> </div>
@@ -639,7 +570,7 @@
<!-- Modal Structure Video--> <!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer"> <div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content"> <div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls> <video src="" id="video" style="max-width:100%; max-height:100%;" controls >
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">crwdns385:0crwdne385:0</a> <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">crwdns385:0crwdne385:0</a>
@@ -652,37 +583,36 @@
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Usamin_18-4-0" class="release-do" style="display:none; "> <div id="release-Usamin_18-1-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.4.0)</h5> <h5>Release Note Usamin (18.1.0)</h5>
・ソフトウェア(通知音などのアセットを含むTheDeskオリジナル制作物)のコピーライトをTheDeskに統一。Cutls PをMain Developer(author)に。<br> ・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
・Misskey v11のストリーミングに対応(初期取得の投稿のリアクションは自動取得できません。)<br> ・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
・その他Misskeyのさまざまな挙動を修正、追加しました。<br> ・画像を個別に削除する(画像をクリックして)<br>
・NSFWメディアが複数あったときに「NSFW Media」の文字が邪魔で複数段になる不具合を修正<br> ・何個もアルバムアートワークが投稿されるバグを修正<br>
・フォローリクエストの許可/拒否ができるように。<br> ・Misskeyでログインしたまま何もできないバグを修正(権限回り)
・起動時に通知のストリーミングにつながらない不具合を修正<br>
<br>
</div> </div>
<div id="release-en" style="display:none"> <div id="release-en">
<h5>Let's make it native!</h5> <h5>Let's make it native!</h5>
<a href="https://translate.thedesk.top">Crowdin translation project</a> <a href="https://translate.thedesk.top">Crowdin translation project</a>
</div> </div>
<br><br> <br><br>
<h3>crwdns473:0crwdne473:0</h3> <h3>crwdns473:0crwdne473:0</h3>
crwdns474:0crwdne474:0<br> crwdns474:0crwdne474:0<br>
<a class="btn-share btn waves-effect waves-light red lighten-2" <a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> crwdns475:0crwdne475:0
@@PixivSupport@@
</a> </a>
<a class="btn-share btn waves-effect waves-light blue" <a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> crwdns479:0crwdne479:0
</a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
crwdns476:0crwdne476:0 crwdns476:0crwdne476:0
</a> </a>
<br> <br>
crwdns477:0crwdne477:0<a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>crwdns478:0crwdne478:0<br> crwdns477:0crwdne477:0<a href="mailto:mstdn@thedesk.top" target="_blank">mstdn@thedesk.top</a>crwdns478:0crwdne478:0<br>
Kyash<br> Kyash<br>
<img src="../../img/kyash.png" width="100"><br> <img src="../../img/kyash.png" width="100"><br>
</div> </div>
@@ -698,31 +628,25 @@
<div id="pip-content"> <div id="pip-content">
</div> </div>
</div> </div>
<!--menu--> <!--menu-->
<div id="menu" class="z-depth-5" style="display:none"> <div id="menu" class="z-depth-5" style="display:none">
<div id="menu-bar" class="drag-bar"></div> <div id="menu-bar" class="drag-bar"></div>
<span class="cancel"> <span class="cancel">
<i class="material-icons waves-effect" onclick="menu()" title="crwdns412:0crwdne412:0(X)">cancel</i> <i class="material-icons waves-effect" onclick="menu()" title="crwdns412:0crwdne412:0(X)">cancel</i>
</span> </span>
<div id="menu-wrapper"> <div id="menu-wrapper">
<div id="left-menu"> <div id="left-menu">
<div class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"><i <div class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"><i class="material-icons">add</i><span>crwdns512:0crwdne512:0</span></div>
class="material-icons">add</i><span>crwdns512:0crwdne512:0</span></div> <div class="waves-effect" onclick="sortMenu()" id="sortMenu"><i class="material-icons">sort</i><span>crwdns513:0crwdne513:0</span></div>
<div class="waves-effect" onclick="sortMenu()" id="sortMenu"><i <div class="waves-effect" onclick="searchMenu()" id="searchMenu"><i class="material-icons">search</i><span>crwdns492:0crwdne492:0</span></div>
class="material-icons">sort</i><span>crwdns513:0crwdne513:0</span></div> <div class="waves-effect" onclick="listMenu()" id="listMenu"><i class="material-icons">view_headline</i><span>crwdns444:0crwdne444:0</span></div>
<div class="waves-effect" onclick="searchMenu()" id="searchMenu"><i <div class="waves-effect" onclick="filterMenu()" id="filterMenu"><i class="material-icons">filter_list</i><span>crwdns515:0crwdne515:0</span></div>
class="material-icons">search</i><span>crwdns492:0crwdne492:0</span></div>
<div class="waves-effect" onclick="listMenu()" id="listMenu"><i
class="material-icons">view_headline</i><span>crwdns444:0crwdne444:0</span></div>
<div class="waves-effect" onclick="filterMenu()" id="filterMenu"><i
class="material-icons">filter_list</i><span>crwdns515:0crwdne515:0</span></div>
<div class="waves-effect" onclick="help()"><i class="material-icons">help_outline</i><span>crwdns1894:0crwdne1894:0</span></div> <div class="waves-effect" onclick="help()"><i class="material-icons">help_outline</i><span>crwdns1894:0crwdne1894:0</span></div>
<div class="waves-effect" onclick="location.href='index.html'"><i <div class="waves-effect" onclick="location.href='index.html'"><i class="material-icons">refresh</i><span>crwdns518:0crwdne518:0</span></div>
class="material-icons">refresh</i><span>crwdns518:0crwdne518:0</span></div>
</div> </div>
<div id="right-menu"> <div id="right-menu">
<!--カラム追加--> <!--カラム追加-->
<div id="add-box" class="hide menu-content"> <div id="add-box" class="hide menu-content">
<div class="input-field"><span data-trans="your_acct">crwdns494:0crwdne494:0</span> <div class="input-field"><span data-trans="your_acct">crwdns494:0crwdne494:0</span>
<br> <br>
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select> <select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
@@ -733,47 +657,24 @@
<input type="hidden" value="local" id="type-sel"> <input type="hidden" value="local" id="type-sel">
crwdns489:0crwdne489:0 crwdns489:0crwdne489:0
<div id="tltype"> <div id="tltype">
<div class="type waves-effect active" data-type="local"> <div class="type waves-effect active" data-type="local"><div><i class="material-icons">people_outline</i></div><span>crwdns480:0crwdne480:0</span></div>
<div><i class="material-icons">people_outline</i></div><span>crwdns480:0crwdne480:0</span> <div class="type waves-effect" data-type="local-media"><div><i class="material-icons">people_outline</i><i class="material-icons sub-icon">perm_media</i></div><span>crwdns481:0crwdne481:0</span></div>
</div> <div class="type waves-effect" data-type="home"><div><i class="material-icons">home</i></div><span>crwdns482:0crwdne482:0</span></div>
<div class="type waves-effect" data-type="local-media"> <div class="type waves-effect" data-type="pub"><div><i class="material-icons">language</i></div><span>crwdns483:0crwdne483:0</span></div>
<div><i class="material-icons">people_outline</i><i class="material-icons sub-icon">perm_media</i> <div class="type waves-effect" data-type="pub-media"><div><i class="material-icons">language</i><i class="material-icons sub-icon">perm_media</i></div><span>crwdns484:0crwdne484:0</span></div>
</div><span>crwdns481:0crwdne481:0</span> <div class="type waves-effect" data-type="dm"><div><i class="material-icons">mail_outline</i></div><span>crwdns485:0crwdne485:0</span></div>
</div> <div class="type waves-effect" data-type="mix"><div><i class="material-icons">merge_type</i></div><span>crwdns486:0crwdne486:0</span></div>
<div class="type waves-effect" data-type="home"> <div class="type waves-effect" data-type="plus"><div><i class="material-icons">merge_type</i><i class="material-icons sub-icon">reply</i></div><span>crwdns487:0crwdne487:0</span></div>
<div><i class="material-icons">home</i></div><span>crwdns482:0crwdne482:0</span> <div class="type waves-effect" data-type="notf"><div><i class="material-icons">notifications</i></div><span>crwdns488:0crwdne488:0</span></div>
</div>
<div class="type waves-effect" data-type="pub">
<div><i class="material-icons">language</i></div><span>crwdns483:0crwdne483:0</span>
</div>
<div class="type waves-effect" data-type="pub-media">
<div><i class="material-icons">language</i><i class="material-icons sub-icon">perm_media</i></div>
<span>crwdns484:0crwdne484:0</span>
</div>
<div class="type waves-effect" data-type="dm">
<div><i class="material-icons">mail_outline</i></div><span>crwdns485:0crwdne485:0</span>
</div>
<div class="type waves-effect" data-type="mix">
<div><i class="material-icons">merge_type</i></div><span>crwdns486:0crwdne486:0</span>
</div>
<div class="type waves-effect" data-type="plus">
<div><i class="material-icons">merge_type</i><i class="material-icons sub-icon">reply</i></div>
<span>crwdns487:0crwdne487:0</span>
</div>
<div class="type waves-effect" data-type="notf">
<div><i class="material-icons">notifications</i></div><span>crwdns488:0crwdne488:0</span>
</div>
</div> </div>
</div> </div>
<div id="noauth" class="hide">crwdns489:0crwdne489:0 <div id="noauth" class="hide">crwdns489:0crwdne489:0
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" <input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
placeholder="e.g:mstdn.jp">
</div> </div>
<div id="webview-add" class="hide">crwdns490:0crwdne490:0 <div id="webview-add" class="hide">crwdns490:0crwdne490:0
</div> </div>
</div> </div>
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" <button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
data-trans-i="add">
<i class="material-icons left">add</i>crwdns491:0crwdne491:0 <i class="material-icons left">add</i>crwdns491:0crwdne491:0
</button> </button>
<br> <br>
@@ -783,13 +684,12 @@
<div id="src-box" class="hide menu-content"> <div id="src-box" class="hide menu-content">
<div class="input-field"> <div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select> <select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div> </div><div class="input-field">
<div class="input-field"> <i class="material-icons prefix">search</i>
<input id="src" type="text" class="validate" style="width:60%"> <input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
<label for="src" data-trans="src">crwdns492:0crwdne492:0</label> <label for="src" data-trans="src">crwdns492:0crwdne492:0</label>
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" <button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
data-trans-i="src"> <i class="material-icons left">search</i>crwdns492:0crwdne492:0
<i class="material-icons left" style="margin:0">search</i>crwdns492:0crwdne492:0
</button> </button>
<br> <br>
<br> <br>
@@ -803,7 +703,7 @@
<div id="sort-box" class="hide menu-content"> <div id="sort-box" class="hide menu-content">
<ul id="sort"></ul> <ul id="sort"></ul>
<div> <div>
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort"> <button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
<i class="material-icons left">sort</i>crwdns493:0crwdne493:0 <i class="material-icons left">sort</i>crwdns493:0crwdne493:0
</button> </button>
</div> </div>
@@ -858,44 +758,32 @@
crwdns504:0crwdne504:0<span class="sml">crwdns505:0crwdne505:0<b>crwdns506:0crwdne506:0</b></span><br><br> crwdns504:0crwdne504:0<span class="sml">crwdns505:0crwdne505:0<b>crwdns506:0crwdne506:0</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">crwdns507:0crwdne507:0 <input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">crwdns507:0crwdne507:0
<input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">crwdns508:0crwdne508:0 <input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">crwdns508:0crwdne508:0
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">crwdns509:0crwdne509:0<br> <input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">crwdns509:0crwdne509:0
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30crwdns509:0crwdne509:0</a>/ <button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">crwdns491:0crwdne491:0</button><br>
<a onclick="filterTime(0,1,0)" class="pointer">1crwdns508:0crwdne508:0</a>/
<a onclick="filterTime(0,6,0)" class="pointer">6crwdns508:0crwdne508:0</a>/
<a onclick="filterTime(0,12,0)" class="pointer">12crwdns508:0crwdne508:0</a>/
<a onclick="filterTime(1,0,0)" class="pointer">1crwdns507:0crwdne507:0</a>/
<a onclick="filterTime(7,0,0)" class="pointer">7crwdns507:0crwdne507:0</a>/
<a onclick="filterTime(0,0,0)" class="pointer">@@unlimited@@</a><br>
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()"
id="add-filter-btn">crwdns491:0crwdne491:0</button><br>
<span class="sml">crwdns510:0crwdne510:0</span> <span class="sml">crwdns510:0crwdne510:0</span>
</div> </div>
</div> </div>
</div> </div>
<a onclick="about()" class="nex waves-effect"> <a onclick="about()" class="nex waves-effect">
<i class="material-icons" style="font-size: 1rem;">info</i>@@about@@ <i class="material-icons" style="font-size: 1rem;">info</i>{{about}}
</a>&nbsp;|&nbsp; </a>&nbsp;|&nbsp;
<a onclick="bottomReverse()" class="nex waves-effect"> <a onclick="bottomReverse()" class="nex waves-effect">
<i class="material-icons" style="font-size: 1rem;">swap_horiz</i>crwdns517:0crwdne517:0 <i class="material-icons" style="font-size: 1rem;">swap_horiz</i>crwdns517:0crwdne517:0
</a> </a>
</div> </div>
<div id="main"> <div id="main">
<!--TLのTL--> <!--TLのTL-->
<div id="timeline-container"> <div id="timeline-container">
<div id="something-wrong"> crwdns511:0crwdne511:0
<div>crwdns511:0crwdne511:0</div> </div>
</div> </div>
</div> </div>
</div> <!--bottom-->
</div> <div id="bottom" class="reverse">
<!--bottom-->
<div id="bottom" class="reverse">
<div class="leftside reverse"> <div class="leftside reverse">
<div id="dambox"> <div id="dambox">
<button id="posttgl" class="btn waves-effect indigo" <button id="posttgl" class="btn waves-effect indigo" style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;"> <i class="material-icons" style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>crwdns388:0crwdne388:0
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>crwdns388:0crwdne388:0
</button> </button>
</div> </div>
<div class="leftside reverse" id="group"> <div class="leftside reverse" id="group">
@@ -912,10 +800,8 @@
<a onclick="menu()" class="nex waves-effect" id="list-tgl"> <a onclick="menu()" class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="crwdns444:0crwdne444:0">apps</i> <i class="material-icons" title="crwdns444:0crwdne444:0">apps</i>
</a> </a>
<span id="fukidashi">@@hereAddColumns@@</span>
</div>
</div>
</div> </div>
</div></div>
<div> <div>
<div id="tips-menu"> <div id="tips-menu">
<div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span> <div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span>
@@ -932,7 +818,7 @@
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i> <i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a> </a>
<a onclick="tips('spotify')" class="nex waves-effect"> <a onclick="tips('spotify')" class="nex waves-effect">
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i> <i class="fa fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a> </a>
</div> </div>
</div> </div>
@@ -943,54 +829,54 @@
<div id="tips-text" style="float:left; width:300px;"></div> <div id="tips-text" style="float:left; width:300px;"></div>
</div> </div>
</div> </div>
</div> </div>
<!--左下メッセージ--> <!--左下メッセージ-->
<div id="message"> <div id="message">
</div> </div>
<!--Radio Happy(Yui) Taku Inoue--> <!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio> <audio src="" id="radio"></audio>
<!--JS--> <!--JS-->
<script type="text/javascript" src="../../js/ui/tips.js"></script> <script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script> <script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/tl/parse.js"></script> <script type="text/javascript" src="../../js/tl/parse.js"></script>
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script> <script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="../../js/tl/dm.js"></script> <script type="text/javascript" src="../../js/tl/dm.js"></script>
<script type="text/javascript" src="../../js/ui/scroll.js"></script> <script type="text/javascript" src="../../js/ui/scroll.js"></script>
<script type="text/javascript" src="../../js/tl/tl.js"></script> <script type="text/javascript" src="../../js/tl/tl.js"></script>
<script type="text/javascript" src="../../js/tl/card.js"></script> <script type="text/javascript" src="../../js/tl/card.js"></script>
<script type="text/javascript" src="../../js/tl/poll.js"></script> <script type="text/javascript" src="../../js/tl/poll.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>
<script type="text/javascript" src="../../js/tl/notification.js"></script> <script type="text/javascript" src="../../js/tl/notification.js"></script>
<script type="text/javascript" src="../../js/tl/datails.js"></script> <script type="text/javascript" src="../../js/tl/datails.js"></script>
<script type="text/javascript" src="../../js/tl/mix.js"></script> <script type="text/javascript" src="../../js/tl/mix.js"></script>
<script type="text/javascript" src="../../js/tl/src.js"></script> <script type="text/javascript" src="../../js/tl/src.js"></script>
<script type="text/javascript" src="../../js/tl/filter.js"></script> <script type="text/javascript" src="../../js/tl/filter.js"></script>
<script type="text/javascript" src="../../js/tl/tag.js"></script> <script type="text/javascript" src="../../js/tl/tag.js"></script>
<script type="text/javascript" src="../../js/tl/list.js"></script> <script type="text/javascript" src="../../js/tl/list.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/ui/post-box.js"></script> <script type="text/javascript" src="../../js/ui/post-box.js"></script>
<script type="text/javascript" src="../../js/ui/layout.js"></script> <script type="text/javascript" src="../../js/ui/layout.js"></script>
<script type="text/javascript" src="../../js/post/emoji.js"></script> <script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script> <script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script> <script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script> <script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script> <script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script> <script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/post/post.js"></script>
<script type="text/javascript" src="../../js/post/post.js"></script> <script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script> <script type="text/javascript" src="../../js/post/secure.js"></script>
<script type="text/javascript" src="../../js/post/secure.js"></script> <script type="text/javascript" src="../../js/post/img.js"></script>
<script type="text/javascript" src="../../js/post/img.js"></script> <script type="text/javascript" src="../../js/post/status.js"></script>
<script type="text/javascript" src="../../js/post/status.js"></script> <script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script> <script type="text/javascript" src="../../js/post/emoji.js"></script>
<script type="text/javascript" src="../../js/post/suggest.js"></script> <script type="text/javascript" src="../../js/post/suggest.js"></script>
<script type="text/javascript" src="../../js/post/bb-md.js"></script> <script type="text/javascript" src="../../js/post/bb-md.js"></script>
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script> <script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="../../js/userdata/his-data.js"></script> <script type="text/javascript" src="../../js/userdata/his-data.js"></script>
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script> <script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script> <script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script> <script type="text/javascript" src="../../js/emoji/default-emoji.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/ui/menu.js"></script> <script type="text/javascript" src="../../js/ui/menu.js"></script>

View File

@@ -1,6 +1,5 @@
<!doctype html> <!doctype html>
<html lang="ps" style="overflow:scroll"> <html lang="ps">
<head> <head>
<title>Settings - TheDesk</title> <title>Settings - TheDesk</title>
@@ -18,27 +17,19 @@
<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> <style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</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
@@ -46,41 +37,32 @@
<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 onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a> <a 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>/
<h5>crwdns531:0crwdne531:0</h5> <h5>crwdns531:0crwdne531:0</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" <button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button>
style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
<div id="envView"> <div id="envView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> <templete v-html=item.text.desc></templete><br>
<templete v-html="item.text.desc"></templete><br> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">crwdns540:0crwdne540:0</a><br></template>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">crwdns540:0crwdne540:0</a><br></template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
</template><br>
</template> </template>
</div> </div>
<h5>crwdns544:0crwdne544:0</h5> <h5>crwdns544:0crwdne544:0</h5>
@@ -127,52 +109,40 @@
<h5>crwdns2438:0crwdne2438:0</h5> <h5>crwdns2438:0crwdne2438:0</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="crwdns2438:0crwdne2438:0..."> <input type="text" style="width:300px" id="custom_name" placeholder="crwdns2438:0crwdne2438:0...">
<h5>crwdns2440:0crwdne2440:0</h5> <h5>crwdns2440:0crwdne2440:0</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" <div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
<h5>crwdns2426:0crwdne2426:0</h5> <h5>crwdns2426:0crwdne2426:0</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" /> <input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label> <label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" /> <input class="with-gap" name="derection" type="radio" id="light" value="light" />
<label for="light">Light</label> <label for="light">Light</label>
<div id="pickers"> <div id="pickers">
<div> <div>
<h5>Primary</h5>crwdns2430:0crwdne2430:0 <h5>Primary</h5>crwdns2430:0crwdne2430:0
<div id="color-picker0-wrap"> <div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value"> <input type="hidden" id="color-picker0_value">
</div> </div>
<div> <div>
<h5>Secondary</h5>crwdns2428:0crwdne2428:0 <h5>Secondary</h5>crwdns2428:0crwdne2428:0
<div id="color-picker1-wrap"> <div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value"> <input type="hidden" id="color-picker1_value">
</div> </div>
<div> <div>
<h5>Texts</h5>crwdns2432:0crwdne2432:0 <h5>Texts</h5>crwdns2432:0crwdne2432:0
<div id="color-picker2-wrap"> <div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value"> <input type="hidden" id="color-picker2_value">
</div> </div>
<div> <div>
<h5>Accent</h5>crwdns2434:0crwdne2434:0 <h5>Accent</h5>crwdns2434:0crwdne2434:0
<div id="color-picker3-wrap"> <div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value"> <input type="hidden" id="color-picker3_value">
</div> </div>
</div> </div>
<button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button>&nbsp;<button <button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
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>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
crwdns2442:0crwdne2442:0 crwdns2442:0crwdne2442:0
<h4>crwdns2444:0crwdne2444:0</h4> <h4>crwdns2444:0crwdne2444:0</h4>
@@cImpWarn@@<br> @@cImpWarn@@<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" <input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br> <button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
</li> </li>
<li> <li>
@@ -183,37 +153,26 @@
<div id="tlView"> <div id="tlView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.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" <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" />
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>
</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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
</template><br>
</template> </template>
</div> </div>
<h5>@@customSound@@</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span id="c4-file"></span><br>
</div> </div>
</li> </li>
<li> <li>
@@ -224,14 +183,11 @@
<div id="postView"> <div id="postView">
<template v-for="(item, i) in config"> <template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5> <h5>{{item.text.head}}</h5>
<template v-if="item.text.desc"> {{item.text.desc}}<br>
<templete v-html="item.text.desc"></templete><br>
</template>
<template v-if="item.checkbox"> <template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox"> <template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)"> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" <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" />
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> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template> </template>
@@ -240,17 +196,14 @@
<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>
<template v-else> <template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
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>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
</template><br>
</template> </template>
</div> </div>
</div> </div>
@@ -317,14 +270,9 @@
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 <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>
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button></div> <a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>crwdns629:0crwdne629:0</a>
<a onclick="spotifyConnect()" class="btn waves-effect nex" <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>
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>crwdns629:0crwdne629:0</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>crwdns630:0crwdne630:0</a>
<h5>crwdns631:0crwdne631:0</h5> <h5>crwdns631:0crwdne631:0</h5>
crwdns632:0crwdne632:0<br> crwdns632:0crwdne632:0<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist} <textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
@@ -332,8 +280,11 @@
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>
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button> <button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
<h5>crwdns635:0crwdne635:0</h5> <h5>crwdns635:0crwdne635:0</h5>
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">crwdns526:0crwdne526:0</label> <label for="awk_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" /> <input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
@@ -348,96 +299,80 @@
<div class="collapsible-body"> <div class="collapsible-body">
<h5>crwdns637:0crwdne637:0</h5> <h5>crwdns637:0crwdne637:0</h5>
crwdns638:0crwdne638:0<br> crwdns638:0crwdne638:0<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" <p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
style="width:500px; max-width:100%" /></p>
<h5>crwdns639:0crwdne639:0</h5> <h5>crwdns639:0crwdne639:0</h5>
crwdns640:0crwdne640:0<br> crwdns640:0crwdne640:0<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" <p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
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()" <button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">crwdns645:0crwdne645:0</button><br>
id="testplay">crwdns645:0crwdne645:0</button><br>
<br> <br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">crwdns525:0crwdne525:0</button> <button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">crwdns525:0crwdne525:0</button>
</div> </div>
</li> </li>
</ul> </ul>
<br> <br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i <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>
class="material-icons left">undo</i>crwdns646:0crwdne646:0</a> <br>
<br> <br>crwdns647:0crwdne647:0
<br>crwdns647:0crwdne647:0 <li>Ctrl+1-9:crwdns648:0crwdne648:0</li>
<li>Ctrl+1-9:crwdns648:0crwdne648:0</li> <li>N:crwdns649:0crwdne649:0</li>
<li>N:crwdns649:0crwdne649:0</li> <li>X:crwdns650:0crwdne650:0</li>
<li>X:crwdns650:0crwdne650:0</li> <li>Ctrl+Enter:crwdns651:0crwdne651:0</li>
<li>Ctrl+Enter:crwdns651:0crwdne651:0</li> <li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li> <li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li> <li>Ctrl+E:crwdns652:0crwdne652:0</li>
<li>Ctrl+E:crwdns652:0crwdne652:0</li> <li>Esc:crwdns653:0crwdne653:0</li>
<li>Esc:crwdns653:0crwdne653:0</li> <li>F5:crwdns654:0crwdne654:0</li>
<li>F5:crwdns654:0crwdne654:0</li> <li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li> <li>Ctrl+Shift+S:crwdns524:0crwdne524:0</li>
<li>Ctrl+Shift+S:crwdns524:0crwdne524:0</li> <li>Ctrl+Shift+M:crwdns656:0crwdne656:0</li>
<li>Ctrl+Shift+M:crwdns656:0crwdne656:0</li> <li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li> <li>Ctrl+Shift+P:crwdns657:0crwdne657:0</li>
<li>Ctrl+Shift+P:crwdns657:0crwdne657:0</li> <li>←/→:crwdns658:0crwdne658:0</li>
<li>←/→:crwdns658:0crwdne658:0</li> <li>crwdns659:0crwdne659:0</li>
<li>crwdns659:0crwdne659:0</li> <div class="hide kirishima">
<div class="hide kirishima"> 以下Markdownに対応したインスタンスのみ。
以下Markdownに対応したインスタンスのみ。 <br>
<br> <li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li> <li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Enter:全角スペースを入れて改行</li> <li>Shift+Space:ゼロ幅スペース</li>
<li>Shift+Space:ゼロ幅スペース</li> 以下アスタルテにログインしている場合のみ
以下アスタルテにログインしている場合のみ <br>
<br> <li>Ctrl+R:
<li>Ctrl+R: <a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く </li><br>
</li><br> </div>
</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 red" style="width:100%; max-width:500px;" <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>
onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i <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>
class="material-icons left">delete</i>crwdns660:0crwdne660:0</button><br><br> <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>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i <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>
class="material-icons left">info</i>crwdns662:0crwdne662:0</button> <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="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i <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>
class="material-icons left">web</i>crwdns663:0crwdne663:0</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>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2" <br>
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Pixiv FANBOX)</a> Kyash<br>
<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> <img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" <a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">crwdns667:0crwdne667:0</a><br>
class="pointer">crwdns667:0crwdne667:0</a><br> <a href="oss.html">OSS Licensecrwdns668:0crwdne668:0</a><br>
<a href="oss.html">OSS Licensecrwdns668:0crwdne668:0</a><br> <span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
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( <br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@cutls.com">@Cutls@cutls.com</a>) <a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
<br> <br>
</span><br> </span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br> TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</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/common/about.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/login/logout.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/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.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/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.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/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script> <script type="text/javascript" src="../../js/tl/date.js"></script>

View File

@@ -7,27 +7,6 @@ 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",
@@ -284,7 +263,7 @@ var tlConstruction=[
setValue:200, setValue:200,
text:{ text:{
head:"crwdns586:0crwdne586:0", head:"crwdns586:0crwdne586:0",
desc:'@@imgheightwarn@@', desc:"",
after:"px" after:"px"
} }
},{ },{
@@ -307,46 +286,6 @@ 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=[
@@ -537,16 +476,5 @@ var postConstruction=[
} }
] ]
} }
},{
id:"zero",
storage:"emoji-zero-width",
checkbox:true,
setValue:"normal",
setValue:"no",
text:{
head:"@@zeroWidthEmoji@@",
desc:"",
checkbox:yesno
}
} }
] ]

View File

@@ -1,5 +1,5 @@
<!doctype html> <!doctype html>
<html lang="ps"> <html lang="en">
<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,6 +62,9 @@ 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,10 +78,11 @@ 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 hide" onclick="update('install')" style="margin-left:15px;">crwdns2382:0crwdne2382:0</button> <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('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button> <button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button>
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">crwdns670:0crwdne670:0</button> <span class="linux">crwdns2384:0crwdne2384:0<br></span>
<button class="waves-effect btn mac hide" onclick="update('mac')" 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" 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>
@@ -180,12 +184,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=="win32"){ if(platform=="linux"){
$('.windows').removeClass("hide") $('.windows').hide()
}else if(platform=="linux"){ $('.linux').show()
$('.linux').removeClass("hide") }else if(platform=="mac"){
}else if(platform=="darwin"){ $('.windows').hide()
$('.mac').removeClass("hide") $('.mac').show()
} }
var start="https://thedesk.top/ver.json"; var start="https://thedesk.top/ver.json";
fetch(start, { fetch(start, {
@@ -198,23 +202,9 @@ function verck(){
console.error(error); console.error(error);
}).then(function(json) { }).then(function(json) {
console.log(json); console.log(json);
if(platform=="win32"){
$("#ver").text(json.desk); $("#ver").text(json.desk);
localStorage.setItem("next-ver",json.desk); localStorage.setItem("next-ver",json.desk);
}else if(platform=="linux"){
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver",json.desk_linux);
}else if(platform=="darwin"){
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver",json.desk_mac);
}
var lang="ps";
if(lang=="ja"){
$("#det").html(json.detail); $("#det").html(json.detail);
}else{
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver")); $("#now").text(localStorage.getItem("ver"));
}); });

View File

@@ -1,11 +1,27 @@
os: windows language: objective-c
language: node_js cache:
node_js: directories:
- '10.15.2' - node_modules
script: node -v env:
- 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:
- cd app - brew update
- brew install wine
- wine --version
- brew install makensis
- npm install electron-builder -g - npm install electron-builder -g
- cd app
- 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
@@ -13,22 +29,24 @@ 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