Compare commits
40 Commits
18.1.1
...
untagged-c
Author | SHA1 | Date | |
---|---|---|---|
|
a07d6b3172 | ||
|
253f742332 | ||
|
35e262293d | ||
|
972ea9f5ed | ||
|
0c1191e362 | ||
|
426e48325c | ||
|
6c86825732 | ||
|
e0cae78827 | ||
|
09d3643b19 | ||
|
ed93d5b4f2 | ||
|
f0d7d84f8e | ||
|
05fab4c45c | ||
|
3059ec9941 | ||
|
892872869b | ||
|
0db7ed4a33 | ||
|
54e12db08b | ||
|
6fb90f0c8e | ||
|
5f3257a83b | ||
|
f333595817 | ||
|
cc1018c65d | ||
|
1c16a5f4a0 | ||
|
0ad7bf9036 | ||
|
1670c0bc08 | ||
|
f1c4276d06 | ||
|
50bfbbd755 | ||
|
f5afafe26a | ||
|
c524777505 | ||
|
8155baa07d | ||
|
32c56dcf6a | ||
|
9e982dca37 | ||
|
6f25ece72d | ||
|
b28023bec2 | ||
|
0df8baa7bf | ||
|
14c647ca46 | ||
|
f2ff82c810 | ||
|
2ce9f55f28 | ||
|
4c3c1ac56e | ||
|
4aa14a14a2 | ||
|
a398fae023 | ||
|
100bd648a9 |
28
.travis.yml
28
.travis.yml
@@ -1,31 +1,27 @@
|
||||
os: windows
|
||||
os: osx
|
||||
language: node_js
|
||||
node_js:
|
||||
- '10.15.2'
|
||||
script: node -v
|
||||
before_deploy:
|
||||
- cd app
|
||||
- brew update
|
||||
- npm install electron-builder -g
|
||||
- cd app
|
||||
- npm install
|
||||
- electron-builder --win --ia32
|
||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
|
||||
- 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
|
||||
- electron-builder --mac --x64
|
||||
- mv ../build/TheDesk*.dmg ../TheDesk.dmg
|
||||
- mv ../build/TheDesk*.zip ../TheDesk-darwin-x64.zip
|
||||
- cd ../
|
||||
- ls
|
||||
after_deploy: ls
|
||||
deploy:
|
||||
skip_cleanup: true
|
||||
provider: releases
|
||||
# GitHub にリリースするための API KEY を暗号化した値
|
||||
api_key:
|
||||
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
||||
file:
|
||||
- TheDesk.exe
|
||||
- TheDesk-setup.exe
|
||||
- TheDesk-ia32.exe
|
||||
- TheDesk-setup-ia32.exe
|
||||
# Releases ページにアップロードするファイル
|
||||
file:
|
||||
- TheDesk.dmg
|
||||
- TheDesk-darwin-x64.zip
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: cutls/TheDesk
|
||||
branches:
|
||||
|
@@ -76,7 +76,7 @@ a,button{
|
||||
<img src="./img/desk.png" style="max-width:70%;">
|
||||
<h5>TheDesk</h5>
|
||||
<div class='container'>
|
||||
<div class='area-name1'>バージョン</div>
|
||||
<div class='area-name1'>External version</div>
|
||||
<div class='area-data1' id="now"></div>
|
||||
<div class='area-name2'>Internal version</div>
|
||||
<div class='area-data2' id="ver"></div>
|
||||
|
@@ -389,6 +389,9 @@ blockquote:before, .quote:before {
|
||||
font-size:16px;
|
||||
padding:4px;
|
||||
}
|
||||
#something-wrong{
|
||||
width:100%; height:100%; position:absolute; display:flex; justify-content: center; align-items:center
|
||||
}
|
||||
|
||||
/*スクロールバー*/
|
||||
::-webkit-scrollbar {
|
||||
|
@@ -112,6 +112,13 @@ iframe {
|
||||
border-top:none;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: -10px;
|
||||
}
|
||||
.img_FTL{
|
||||
display:none;
|
||||
}
|
||||
.bbcode_FTL{
|
||||
display:none;
|
||||
}
|
||||
.boxIn{
|
||||
height:100%;
|
||||
@@ -217,7 +224,10 @@ grid-area: toot;
|
||||
cursor:text;
|
||||
user-select: auto;
|
||||
grid-area: additional;
|
||||
}
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.area-actions {
|
||||
padding:0;
|
||||
@@ -327,6 +337,7 @@ p:not(:last-child){
|
||||
.notice-box {
|
||||
top: 0;
|
||||
background-color:var(--notfbox);
|
||||
filter: brightness(110%);
|
||||
position: relative;
|
||||
margin-right: 10px;
|
||||
width:100%;
|
||||
@@ -494,7 +505,26 @@ p:not(:last-child){
|
||||
.votebtn:hover{
|
||||
background-color:var(--color);
|
||||
}
|
||||
|
||||
.jump{
|
||||
display: inline-block; animation: jump 0.75s linear infinite;
|
||||
}
|
||||
@keyframes jump {
|
||||
0% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
25% {
|
||||
transform: translateY(-16px);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
75% {
|
||||
transform: translateY(-8px);
|
||||
}
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
@keyframes fadeInDown {
|
||||
from {
|
||||
opacity: 0;
|
||||
|
@@ -45,6 +45,7 @@
|
||||
height:1.5rem; padding:0; background-color:#757575; text-align:center;
|
||||
padding:5px;
|
||||
margin-bottom:1px;
|
||||
width:30%;
|
||||
}
|
||||
.his-field-content{
|
||||
height:1.5rem; padding:0; padding-left:5px;
|
||||
@@ -89,4 +90,11 @@
|
||||
#his-des .mention{
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
}
|
||||
#his-float-blocked{
|
||||
display:flex; justify-content: center; align-items:center;
|
||||
font-size:2rem;
|
||||
width: 90%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
}
|
@@ -1,5 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL='language.html?mode=redirect'" />
|
||||
</head>
|
@@ -91,6 +91,7 @@ var lang={
|
||||
"lang_list_users":"Users list",
|
||||
"lang_list_nouser":"No users in this list.",
|
||||
"lang_list_add":"Add to the list",
|
||||
"lang_list_add_misskey":"(perhaps this user has been listed)",
|
||||
"lang_list_remove":"Remove from the list",
|
||||
//tl/notification.js
|
||||
"lang_notf_new":" new notifications",
|
||||
@@ -148,11 +149,13 @@ var lang={
|
||||
"lang_showontl_notf":"Notification ",
|
||||
"lang_showontl_domain":"Domain ",
|
||||
"lang_showontl_listwarn":"Follow to add this user to lists.",
|
||||
"lang_showontl_verified":"This website is verified by owner at ",
|
||||
//parse
|
||||
"lang_parse_mentioned":" replied to you",
|
||||
"lang_parse_faved":" favourited your toot",
|
||||
"lang_parse_bted":" boosted your toot",
|
||||
"lang_parse_btedsimple":" boosted",
|
||||
"lang_parse_polled":"'s poll",
|
||||
"lang_parse_notftime":"Actioned at",
|
||||
"lang_parse_cwshow":"Show",
|
||||
"lang_parse_fulltext":"Full size text:",
|
||||
|
@@ -91,6 +91,7 @@ var lang={
|
||||
"lang_list_users":"ユーザー一覧",
|
||||
"lang_list_nouser":"ユーザーはいません",
|
||||
"lang_list_add":"リストに追加",
|
||||
"lang_list_add_misskey":"(重複追加の可能性があります)",
|
||||
"lang_list_remove":"リストから削除",
|
||||
//tl/notification.js
|
||||
"lang_notf_new":"件の新しい通知",
|
||||
@@ -108,6 +109,8 @@ var lang={
|
||||
//tl/tl.js
|
||||
"lang_tl_media":"メディア",
|
||||
"lang_tl_reconnect":"Streamingに再接続しました",
|
||||
//ui/img.js
|
||||
"lang_img_DLDone":"ダウンロード先:",
|
||||
//ui/layout.js
|
||||
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
|
||||
"lang_layout_thisacct":"このアカウントの{{notf}}",
|
||||
@@ -148,11 +151,13 @@ var lang={
|
||||
"lang_showontl_notf":"通知",
|
||||
"lang_showontl_domain":"ドメイン",
|
||||
"lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
|
||||
"lang_showontl_verified":"このユーザーの所持するWebサイトであると証明されています。",
|
||||
//parse
|
||||
"lang_parse_mentioned":"が返信しました",
|
||||
"lang_parse_faved":"がお気に入り登録しました",
|
||||
"lang_parse_bted":"がブーストしました",
|
||||
"lang_parse_btedsimple":"がブースト",
|
||||
"lang_parse_polled":"のアンケート",
|
||||
"lang_parse_notftime":"通知された時間",
|
||||
"lang_parse_cwshow":"見る",
|
||||
"lang_parse_fulltext":"以下全文",
|
||||
|
@@ -8,17 +8,17 @@ var idata={
|
||||
"kirishima.cloud_glitch":"enabled",
|
||||
"kirishima.cloud_public":"パブリックタイムライン",
|
||||
"minohdon.jp":"instance",
|
||||
"minohdon.jp_name":"箕面丼",
|
||||
"minohdon.jp_name":"箕面どん",
|
||||
"minohdon.jp_letters":"500",
|
||||
"minohdon.jp_bbcode":"disabled",
|
||||
"minohdon.jp_markdown":"disabled",
|
||||
"minohdon.jp_glitch":"disabled",
|
||||
"knzk.me":"instance",
|
||||
"knzk.me_name":"神崎丼",
|
||||
"knzk.me_name":"Knzk",
|
||||
"knzk.me_letters":"5000",
|
||||
"knzk.me_bbcode":"disabled",
|
||||
"knzk.me_markdown":"disabled",
|
||||
"knzk.me_glitch":"enabled",
|
||||
"knzk.me_glitch":"disabled",
|
||||
"mastodos.com":"instance",
|
||||
"mastodos.com_name":"マストどす",
|
||||
"mastodos.com_letters":"500",
|
||||
@@ -32,7 +32,7 @@ var idata={
|
||||
"dev.kirishima.cloud_markdown":"enabled",
|
||||
"dev.kirishima.cloud_glitch":"enabled",
|
||||
"mstdn.y-zu.org":"instance",
|
||||
"mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
|
||||
"mstdn.y-zu.org_name":"Yづドン(Y-zuDon)",
|
||||
"mstdn.y-zu.org_letters":"500",
|
||||
"mstdn.y-zu.org_bbcode":"disabled",
|
||||
"mstdn.y-zu.org_markdown":"enabled",
|
||||
@@ -84,20 +84,14 @@ var idata={
|
||||
"itabashi.0j0.jp_bbcode":"disabled",
|
||||
"itabashi.0j0.jp_markdown":"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_name":"DTP鯖",
|
||||
"dtp-mstdn.jp_letters":"500",
|
||||
"dtp-mstdn.jp_bbcode":"disabled",
|
||||
"dtp-mstdn.jp_markdown":"disabled",
|
||||
"dtp-mstdn.jp_glitch":"disabled",
|
||||
"misskey.xyz":"instance",
|
||||
"misskey.xyz_name":"Misskey",
|
||||
"misskey.xyz":"misskey",
|
||||
"misskey.xyz_name":"misskey.xyz",
|
||||
"misskey.xyz_letters":"1000",
|
||||
"misskey.xyz_bbcode":"disabled",
|
||||
"misskey.xyz_markdown":"enabled",
|
||||
@@ -105,6 +99,28 @@ var idata={
|
||||
"misskey.xyz_post":"Post",
|
||||
"misskey.xyz_fav":" reacted 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));
|
||||
|
@@ -42,29 +42,24 @@ function ck() {
|
||||
}
|
||||
}
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (!multi) {
|
||||
var obj = [];
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
} else {
|
||||
if(!multi || multi=="[]"){
|
||||
location.href="acct.html?mode=first&code=true"
|
||||
}else{
|
||||
var obj = JSON.parse(multi);
|
||||
}
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct=obj[key];
|
||||
if(acct.domain){
|
||||
refresh(key,true)
|
||||
}
|
||||
});
|
||||
console.log(obj);
|
||||
if (obj[0].domain) {
|
||||
if (obj[0].domain) {
|
||||
$("#tl").show();
|
||||
ticker();
|
||||
multiSelector();
|
||||
} else {
|
||||
$("#tl").show();
|
||||
$("#post-box").hide();
|
||||
verck(ver);
|
||||
}
|
||||
}
|
||||
}
|
||||
ck();
|
||||
//ログインポップアップ
|
||||
function login(url) {
|
||||
|
@@ -2,6 +2,15 @@
|
||||
//最初に読むやつ
|
||||
function load() {
|
||||
$("#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");
|
||||
$(".my-prof").attr("src", prof);
|
||||
var name = localStorage.getItem("name");
|
||||
@@ -57,14 +66,8 @@ function load() {
|
||||
localStorage.setItem("acct", 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);
|
||||
|
||||
}
|
||||
//最初に読む
|
||||
@@ -262,6 +265,10 @@ function support() {
|
||||
templete = '<a onclick="login(\'' + key +
|
||||
'\')" class="collection-item pointer transparent">' + idata[key + "_name"] + '(' + key + ')</a>';
|
||||
$("#support").append(templete);
|
||||
}else if (instance == "misskey") {
|
||||
templete = '<a onclick="misskeyLogin(\'' + key +
|
||||
'\')" class="collection-item pointer transparent">' + idata[key + "_name"] + '(' + key + ')</a>';
|
||||
$("#support").append(templete);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -270,7 +277,7 @@ function support() {
|
||||
function login(url) {
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
if($('#misskey:checked').val()=="on" || url=="misskey.xyz"){
|
||||
if($('#misskey:checked').val()=="on"){
|
||||
$("#misskey").prop("checked", true);
|
||||
misskeyLogin(url);
|
||||
return;
|
||||
@@ -458,7 +465,9 @@ function code(code) {
|
||||
console.log(obj);
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
|
||||
if($("body").hasClass("first")){
|
||||
location.href="index.html"
|
||||
}
|
||||
load();
|
||||
return;
|
||||
}
|
||||
@@ -546,6 +555,9 @@ function getdata(domain, at) {
|
||||
console.log(obj);
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
if($("body").hasClass("first")){
|
||||
location.href="index.html"
|
||||
}
|
||||
load();
|
||||
});
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@
|
||||
//メンションっぽかったら
|
||||
var ats=[];
|
||||
ats = url.match(
|
||||
/https:\/\/([-a-zA-Z0-9@.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
|
||||
/https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
|
||||
);
|
||||
console.log(toot);
|
||||
if(toot){
|
||||
@@ -41,7 +41,8 @@
|
||||
}else if(ats){
|
||||
console.log(ats);
|
||||
if(ats[2]){
|
||||
if(ats[1]!="quesdon.rinsuki.net"){
|
||||
//Quesdon判定
|
||||
if(!~ats[2].indexOf("@")){
|
||||
udgEx(ats[2]+"@"+ats[1],"main");
|
||||
return false
|
||||
}else{
|
||||
|
@@ -4,11 +4,11 @@ $("#emoji-before").addClass("disabled");
|
||||
$("#emoji-next").addClass("disabled");
|
||||
|
||||
//絵文字ボタンのトグル
|
||||
function emojiToggle() {
|
||||
function emojiToggle(reaction) {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
if(!selin){
|
||||
selin=0;
|
||||
if (!selin) {
|
||||
selin = 0;
|
||||
}
|
||||
localStorage.setItem("cursor", selin);
|
||||
|
||||
@@ -18,10 +18,10 @@ function emojiToggle() {
|
||||
$("#suggest").html("");
|
||||
if (!localStorage.getItem("emoji_" + acct_id)) {
|
||||
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);
|
||||
} else {
|
||||
emojiList('home');
|
||||
emojiList('home', reaction);
|
||||
}
|
||||
} else {
|
||||
$("#poll").addClass("hide")
|
||||
@@ -34,43 +34,97 @@ function emojiToggle() {
|
||||
}
|
||||
|
||||
//絵文字リスト挿入
|
||||
function emojiGet(parse) {
|
||||
function emojiGet(parse, started) {
|
||||
$('#emoji-list').html('Loading...');
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var start = "https://" + domain + "/api/v1/custom_emojis";
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if (parse == "true") {
|
||||
$('#emoji-list').html('Parsing...');
|
||||
//絵文字をマストドン公式と同順にソート
|
||||
json.sort(function(a, b) {
|
||||
if (a.shortcode < b.shortcode) return -1;
|
||||
if (a.shortcode > b.shortcode) return 1;
|
||||
return 0;
|
||||
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
||||
var start = "https://" + domain + "/api/v1/custom_emojis";
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function (response) {
|
||||
return response.json();
|
||||
}).catch(function (error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function (json) {
|
||||
if (parse == "true") {
|
||||
$('#emoji-list').html('Parsing...');
|
||||
//絵文字をマストドン公式と同順にソート
|
||||
json.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(json));
|
||||
} else {
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||
}
|
||||
localStorage.setItem("emojiseek", 0);
|
||||
if (!started) {
|
||||
emojiList('home')
|
||||
}
|
||||
});
|
||||
} else {
|
||||
var start = "https://" + domain + "/api/meta";
|
||||
fetch(start, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function (response) {
|
||||
return response.json();
|
||||
}).catch(function (error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function (json) {
|
||||
if (json.enableEmojiReaction) {
|
||||
localStorage.setItem("emojiReaction_" + acct_id, "true");
|
||||
} else {
|
||||
localStorage.setItem("emojiReaction_" + acct_id, "disabled");
|
||||
}
|
||||
var emojis = json.emojis;
|
||||
var md = [];
|
||||
Object.keys(emojis).forEach(function (key) {
|
||||
var emoji = emojis[key];
|
||||
md.push({
|
||||
"shortcode": emoji.name,
|
||||
"url": emoji.url
|
||||
})
|
||||
});
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||
} else {
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||
}
|
||||
localStorage.setItem("emojiseek", 0);
|
||||
emojiList('home')
|
||||
});
|
||||
if (parse == "true") {
|
||||
$('#emoji-list').html('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) {
|
||||
function emojiList(target, reaction) {
|
||||
$("#now-emoji").text(lang.lang_emoji_custom);
|
||||
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");
|
||||
if (target == "next") {
|
||||
var start = start * 1 + 127;
|
||||
@@ -103,8 +157,14 @@ function emojiList(target) {
|
||||
for (i = start; i < start + 126; i++) {
|
||||
var emoji = obj[i];
|
||||
if (emoji) {
|
||||
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
|
||||
': \')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||
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 +
|
||||
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
$("#emoji-list").html(html);
|
||||
@@ -114,14 +174,19 @@ function emojiList(target) {
|
||||
function emojiInsert(code, del) {
|
||||
var now = $("#textarea").val();
|
||||
var selin = localStorage.getItem("cursor");
|
||||
if (localStorage.getItem("emoji-zero-width") == "yes") {
|
||||
var brank = "";
|
||||
} else {
|
||||
var brank = " ";
|
||||
}
|
||||
console.log(selin);
|
||||
var now = $("#textarea").val();
|
||||
if(selin>0){
|
||||
var before = now.substr(0, selin);
|
||||
var after = now.substr(selin, now.length);
|
||||
newt = before + " "+ code+" " + after;
|
||||
}else{
|
||||
newt = code+" ";
|
||||
if (selin > 0) {
|
||||
var before = now.substr(0, selin);
|
||||
var after = now.substr(selin, now.length);
|
||||
newt = before + brank + code + brank + after;
|
||||
} else {
|
||||
newt = code + brank;
|
||||
}
|
||||
if (!del) {
|
||||
$("#textarea").val(newt);
|
||||
@@ -129,20 +194,20 @@ function emojiInsert(code, del) {
|
||||
} else {
|
||||
var regExp = new RegExp(del, "g");
|
||||
var now = now.replace(regExp, "");
|
||||
$("#textarea").val(now + " " + code);
|
||||
$("#textarea").val(now + brank + code);
|
||||
}
|
||||
|
||||
|
||||
$("#textarea").focus();
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
if(!selin){
|
||||
selin=0;
|
||||
if (!selin) {
|
||||
selin = 0;
|
||||
}
|
||||
localStorage.setItem("cursor", selin);
|
||||
}
|
||||
//改行挿入
|
||||
function brInsert(code) {
|
||||
if(!$('#post-box').hasClass("appear")){
|
||||
localStorage.setItem("nohide",true);
|
||||
if (!$('#post-box').hasClass("appear")) {
|
||||
localStorage.setItem("nohide", true);
|
||||
show();
|
||||
}
|
||||
var now = $("#textarea").val();
|
||||
|
@@ -183,22 +183,20 @@ function toBlob(base64, type) {
|
||||
var element = document.querySelector("#textarea");
|
||||
element.addEventListener("paste", function(e){
|
||||
console.log(e)
|
||||
// 画像の場合
|
||||
// e.clipboardData.types.length == 0
|
||||
// かつ
|
||||
// e.clipboardData.types[0] == "Files"
|
||||
// となっているので、それ以外を弾く
|
||||
if (!e.clipboardData
|
||||
|| !e.clipboardData.types
|
||||
|| (e.clipboardData.types.length != 1)
|
||||
|| (e.clipboardData.types[0] != "Files")) {
|
||||
console.log("not image")
|
||||
return true;
|
||||
if (!e.clipboardData || !e.clipboardData.items) {
|
||||
return true;
|
||||
}
|
||||
// DataTransferItemList に画像が含まれいない場合は終了する
|
||||
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
|
||||
if (imageItems.length == 0) {
|
||||
console.log("not image")
|
||||
return true;
|
||||
}
|
||||
|
||||
// ファイルとして得る
|
||||
// (なぜかgetAsStringでは上手くいかなかった)
|
||||
var imageFile = e.clipboardData.items[0].getAsFile();
|
||||
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
|
||||
var imageFile = imageItems[0].getAsFile();
|
||||
var imageType = imageItems[0].type;
|
||||
|
||||
// FileReaderで読み込む
|
||||
var fr = new FileReader();
|
||||
@@ -209,7 +207,8 @@ element.addEventListener("paste", function(e){
|
||||
if(mediav){
|
||||
var i=mediav.split(",").length;
|
||||
}
|
||||
media(base64, "image/png", i)
|
||||
// DataTransferItem の type に mime tipes があるのでそれを使う
|
||||
media(base64, imageType, i)
|
||||
};
|
||||
fr.readAsDataURL(imageFile);
|
||||
|
||||
|
@@ -65,7 +65,7 @@ function reactiontoggle(id,acct_id,tlid){
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
if(json.reactionCounts){
|
||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","star"];
|
||||
for(var i=0;i<reactions.length;i++){
|
||||
if(json.reactionCounts[reactions[i]]){
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
||||
@@ -93,7 +93,21 @@ function reactiontoggle(id,acct_id,tlid){
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$("#pub_" + id +" .freeReact").toggleClass("hide");
|
||||
}
|
||||
//reactioncustom
|
||||
function reactioncustom(acct_id,id){
|
||||
$("#reply").val(id);
|
||||
$("#unreact").hide();
|
||||
$("#addreact").removeClass("hide");
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$('select').material_select();
|
||||
localStorage.setItem("nohide",true);
|
||||
show()
|
||||
emojiToggle(true)
|
||||
$("#left-side").hide();
|
||||
$("#default-emoji").hide();
|
||||
}
|
||||
function reactRefresh(acct_id,id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
@@ -119,30 +133,42 @@ function reactRefresh(acct_id,id){
|
||||
return false;
|
||||
}
|
||||
var poll="";
|
||||
console.log(json);
|
||||
reactRefreshCore(json)
|
||||
if(json.error){
|
||||
$("[toot-id=" + id + "]").hide();
|
||||
$("[toot-id=" + id + "]").remove();
|
||||
}else{
|
||||
reactRefreshCore(json)
|
||||
}
|
||||
});
|
||||
}
|
||||
function reactRefreshCore(json){
|
||||
var id=json.id;
|
||||
if(json.reactionCounts){
|
||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
||||
$("#pub_" + id +" .reactions").removeClass("hide")
|
||||
for(var i=0;i<reactions.length;i++){
|
||||
if(json.reactionCounts[reactions[i]]){
|
||||
console.log(json.reactionCounts[reactions[i]])
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||
var regExp = new RegExp( ":", "g" ) ;
|
||||
Object.keys(json.reactionCounts).forEach(function(keye) {
|
||||
keyeClass=keye.replace(regExp,'');
|
||||
if(json.reactionCounts[keye]){
|
||||
console.log(json.reactionCounts[keye])
|
||||
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactionCounts[keye])
|
||||
$("#pub_" + id +" .re-"+keyeClass).removeClass("hide")
|
||||
}else{
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
||||
$("#pub_" + id +" .re-"+keyeClass+"ct").text(0)
|
||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
||||
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
|
||||
$("#pub_" + id +" .re-"+keyeClass).addClass("hide")
|
||||
}
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
||||
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactionCounts[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){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
|
@@ -307,4 +307,8 @@ function clear() {
|
||||
$("#post-acct-sel").val(localStorage.getItem("main"));
|
||||
}
|
||||
$('select').material_select();
|
||||
$("#left-side").show();
|
||||
$("#default-emoji").show();
|
||||
$("#unreact").show();
|
||||
$("#addreact").addClass("hide");
|
||||
}
|
@@ -236,6 +236,8 @@ function del(id, acct_id) {
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({i:at,noteId:id}));
|
||||
$("[toot-id=" + id+ "]").hide();
|
||||
$("[toot-id=" + id + "]").remove();
|
||||
}else{
|
||||
var start = "https://" + domain + "/api/v1/statuses/" + id;
|
||||
var httpreq = new XMLHttpRequest();
|
||||
|
@@ -53,16 +53,7 @@ input.addEventListener("focus", function() {
|
||||
|
||||
var tag = new_val.match(/#(\S{3,})/);
|
||||
var acct = new_val.match(/@(\S{3,})/);
|
||||
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]) {
|
||||
if (tag && tag[1]) {
|
||||
var q = tag[1];
|
||||
} else if (acct && acct[1]) {
|
||||
var q = acct[1];
|
||||
|
@@ -412,62 +412,6 @@ function staCopy(id){
|
||||
}
|
||||
|
||||
}
|
||||
//魚拓
|
||||
function shot(){
|
||||
var title=$("#tootmodal").attr("data-id");
|
||||
var off = $('#toot-this').offset();
|
||||
var w=$("#toot-this").width()+50;
|
||||
var h=$("#toot-this").height()+50;
|
||||
var electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const os = require('os')
|
||||
const shell = electron.shell;
|
||||
const path = require('path')
|
||||
var ipc = electron.ipcRenderer;
|
||||
let options = {
|
||||
types: ['screen'],
|
||||
thumbnailSize: {
|
||||
width: window.parent.screen.width,
|
||||
height: window.parent.screen.height
|
||||
}
|
||||
}
|
||||
const desktopCapturer = electron.desktopCapturer;
|
||||
desktopCapturer.getSources(options, function(error, sources) {
|
||||
if (error) return console.log(error)
|
||||
|
||||
sources.forEach(function(source) {
|
||||
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
|
||||
var durl=source.thumbnail.toDataURL();
|
||||
var b64 = durl.match(
|
||||
/data:image\/png;base64,(.+)/
|
||||
);
|
||||
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
|
||||
const savePath = path.join(os.tmpdir(), 'screenshot.png');
|
||||
var ipc = electron.ipcRenderer;
|
||||
if(localStorage.getItem("savefolder")){
|
||||
var save=localStorage.getItem("savefolder");
|
||||
}else{
|
||||
var save="";
|
||||
}
|
||||
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title,off.top+50,off.left,save]);
|
||||
if($("#toot-this .img-parsed").length>0){
|
||||
for(i=0;i<$("#toot-this .img-parsed").length;i++){
|
||||
var url=$("#toot-this .img-parsed").eq(i).attr("data-url");
|
||||
if(localStorage.getItem("savefolder")){
|
||||
var save=localStorage.getItem("savefolder");
|
||||
}else{
|
||||
var save="";
|
||||
}
|
||||
ipc.send('shot-img-dl', [url,title+"_img"+i+".png",save]);
|
||||
}
|
||||
}
|
||||
return;
|
||||
const message = `Saved screenshot to: ${screenshotPath}`
|
||||
//screenshotMsg.textContent = message
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
//翻訳
|
||||
function trans(tar,to){
|
||||
var html=$("#toot-this .toot").html();
|
||||
|
@@ -146,6 +146,11 @@ function filter(){
|
||||
}
|
||||
});
|
||||
}
|
||||
function filterTime(day,hour,min){
|
||||
$("#days_filter").val(day)
|
||||
$("#hours_filter").val(hour)
|
||||
$("#mins_filter").val(min)
|
||||
}
|
||||
function makeNewFilter(){
|
||||
var acct_id = $("#filter-acct-sel").val();
|
||||
var phr=$("#filter-add-word").val();
|
||||
@@ -421,6 +426,16 @@ function exclude(key){
|
||||
}else{
|
||||
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{
|
||||
}
|
||||
localStorage.setItem("exclude-"+key,excludetxt)
|
||||
|
@@ -12,40 +12,68 @@ function list(){
|
||||
$("#lists-user").html("");
|
||||
var acct_id = $("#list-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/lists"
|
||||
console.log(start)
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if (json) {
|
||||
var lists = "";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var list = json[key];
|
||||
lists = lists + 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_users+'</a><br> ';
|
||||
});
|
||||
$("#lists").html(lists);
|
||||
}else{
|
||||
$("#lists").html(lang.lang_list_nodata);
|
||||
}
|
||||
});
|
||||
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 + list.title+':<a onclick="listShow(\'' + list.id + '\',\'' + 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"
|
||||
console.log(start)
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if (json) {
|
||||
var lists = "";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var list = json[key];
|
||||
lists = lists + 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_users+'</a><br>';
|
||||
});
|
||||
$("#lists").html(lists);
|
||||
}else{
|
||||
$("#lists").html(lang.lang_list_nodata);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
function makeNewList(){
|
||||
var acct_id = $("#list-acct-sel").val();
|
||||
var text=$("#list-add").val();
|
||||
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"
|
||||
console.log(start)
|
||||
var httpreq = new XMLHttpRequest();
|
||||
@@ -63,6 +91,25 @@ function makeNewList(){
|
||||
$("#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){
|
||||
localStorage.setItem("list_"+id+"_"+acct_id,title);
|
||||
@@ -70,8 +117,8 @@ function listShow(id,title,acct_id){
|
||||
}
|
||||
function listUser(id,acct_id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||
console.log(start)
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
@@ -99,7 +146,8 @@ function listUser(id,acct_id){
|
||||
}
|
||||
function hisList(user,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"
|
||||
console.log(start)
|
||||
fetch(start, {
|
||||
@@ -118,7 +166,7 @@ function hisList(user,acct_id){
|
||||
var lists = lang.lang_list_add+"<br>";
|
||||
Object.keys(json).forEach(function(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> ';
|
||||
});
|
||||
$("#his-lists-a").html(lists);
|
||||
@@ -144,28 +192,66 @@ function hisList(user,acct_id){
|
||||
var lists = lang.lang_list_remove+"<br>";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var list = json[key];
|
||||
lists = lists + '<a onclick="listRemove(' + list.id + ',\'' + user + '\',\'' + acct_id +
|
||||
lists = lists + '<a onclick="listRemove(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
|
||||
'\')" class="pointer">'+list.title+'</a><br> ';
|
||||
});
|
||||
$("#his-lists-b").html(lists);
|
||||
}else{
|
||||
$("#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 + '\',\'' + 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){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||
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 i={
|
||||
account_ids: [user]
|
||||
}
|
||||
}
|
||||
console.log(start)
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({
|
||||
account_ids: [user]
|
||||
}));
|
||||
httpreq.send(JSON.stringify(i));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
@@ -176,16 +262,28 @@ function listAdd(id,user,acct_id){
|
||||
function listRemove(id,user,acct_id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
var start = "https://" + domain + "/api/users/lists/push"
|
||||
var method='POST'
|
||||
var i={
|
||||
i:at,
|
||||
listId:id,
|
||||
userId:user
|
||||
}
|
||||
}else{
|
||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
||||
var method='DELETE'
|
||||
var i={
|
||||
account_ids: [user]
|
||||
}
|
||||
}
|
||||
console.log(start)
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('DELETE', start, true);
|
||||
httpreq.open(method, start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({
|
||||
account_ids: [user]
|
||||
}));
|
||||
httpreq.send(JSON.stringify(i));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
|
@@ -160,6 +160,15 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
}else{
|
||||
disname="";
|
||||
}
|
||||
//絵文字があれば
|
||||
Object.keys(toot.user.emojis).forEach(function(key5) {
|
||||
var emoji = toot.user.emojis[key5];
|
||||
var shortcode = emoji.name;
|
||||
var emoji_url = '<img draggable="false" src="' + emoji.url +
|
||||
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
dis_name = dis_name.replace(regExp, emoji_url);
|
||||
});
|
||||
if (mix == "notf") {
|
||||
if (gif == "yes") {
|
||||
noticeavatar = toot.user.avatarUrl;
|
||||
@@ -192,24 +201,25 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
"congrats":"🎉",
|
||||
"amgry":"💢",
|
||||
"confused":"😥",
|
||||
"pudding":"🍮"
|
||||
"pudding":"🍮",
|
||||
"star":"⭐"
|
||||
}
|
||||
var icon=reactions[toot.reaction];
|
||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
||||
for(var i=0;i<reactions.length;i++){
|
||||
if(toot.note.reactionCounts[reactions[i]]){
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(toot.note.reactionCounts[reactions[i]])
|
||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||
}else{
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
||||
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
|
||||
}else{
|
||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||
}
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(toot.note.reactionCounts[reactions[i]])
|
||||
}
|
||||
}
|
||||
var emojisData = JSON.parse(localStorage.getItem("emoji_" + acct_id));
|
||||
if(!icon){
|
||||
if(emojisData){
|
||||
var num = emojisData.length;
|
||||
var ehtml="";
|
||||
for (i = 0; i < num; i++) {
|
||||
var emoji = emojisData[i];
|
||||
if (":"+emoji.shortcode+":"==toot.reaction) {
|
||||
if (emoji) {
|
||||
icon='<img src="'+emoji.url+'" style="width:1rem">';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
var icon = '<i class="big-text material-icons indigo-text" style="font-size:17px">info</i>';
|
||||
}
|
||||
@@ -250,19 +260,19 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
var ipc = electron.ipcRenderer;
|
||||
var os = electron.remote.process.platform;
|
||||
var options = {
|
||||
body: toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content),
|
||||
icon: toot.account.avatar
|
||||
body: toot.user.name+"(" + toot.user.username +")"+what+"\n\n"+$.strip_tagstemp(toot.note.text),
|
||||
icon: toot.user.avatarUrl
|
||||
};
|
||||
if(os=="darwin"){
|
||||
var n = new Notification('TheDesk:'+domain, options);
|
||||
}else{
|
||||
ipc.send('native-notf', [
|
||||
'TheDesk:'+domain,
|
||||
toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content),
|
||||
toot.account.avatar,
|
||||
toot.user.name+"(" + toot.user.username +")"+what+"\n\n"+$.strip_tagstemp(toot.note.text),
|
||||
toot.user.avatarUrl,
|
||||
"toot",
|
||||
acct_id,
|
||||
toot.status.id
|
||||
toot.note.id
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -395,7 +405,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
var emojick = toot.emojis[0];
|
||||
}else{
|
||||
var emojick=false;
|
||||
}
|
||||
}
|
||||
//デフォ絵文字
|
||||
if(content){
|
||||
//MFM
|
||||
@@ -403,17 +413,35 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
content=content.replace(/`(.+)`/gi, '<code>$1</code>')
|
||||
content=content.replace(/(http(s)?:\/\/[\x21-\x7e]+)/gi, '<a href="$1" target="_blank">$1</a>')
|
||||
content=content.replace(/\(\(\((.+)\)\)\)/gi, '<span class="shake">$1</span>')
|
||||
content=content.replace(/<motion>(.+)<\/motion>/gi, '<span class="shake">$1</span>')
|
||||
content=content.replace(/<motion>(.+)<\/motion>/gi, '<span class="shake">$1</span>')
|
||||
content=content.replace(/\*\*\*([^*]+)\*\*\*/gi, '<span class="shake" style="font-size:200%">$1</span>')
|
||||
content=content.replace(/\*\*([^*]+)\*\*/gi, '<b>$1</b>')
|
||||
content=content.replace(/^(.+)\s(検索|search)$/gmi, '<div class="input-field"><i class="material-icons prefix">search</i><input type="text" style="width:calc( 60% - 80px);" name="q" value="$1" id="srcbox_'+toot.id+'"><label for="src" data-trans="src" class="">検索</label><button class="btn waves-effect indigo" style="width:40%;" data-trans-i="src" onclick="goGoogle(\''+toot.id+'\')">検索</button></div>')
|
||||
content=content.replace(/\[(.+)\]\(<a href="(http(s)?:\/\/[\x21-\x7e]+)".+\)/gi,'<a href="$2" target="_blank">$1</a>');
|
||||
|
||||
content=content.replace(/<center>/gi, '<div class="center">')
|
||||
content=content.replace(/<\/center>/gi, '</div>')
|
||||
content=content.replace(/<flip>(.+)<\/flip>/gi, '<span class="fa fa-flip-horizontal">$1</span>')
|
||||
content=content.replace(/<small>(.+)<\/small>/gi, '<small>$1</small>')
|
||||
content=content.replace(/<i>(.+)<\/i>/gi, '<i>$1</i>')
|
||||
content=content.replace(/<spin>(.+)<\/spin>/gi, '<span class="fa fa-spin">$1</span>')
|
||||
content=content.replace(/\*\*(.+)\*\*/gi, '<b>$1</b>')
|
||||
content=content.replace(/<jump>(.+)<\/jump>/gi, '<span class="jump">$1</jump>')
|
||||
content=twemoji.parse(content);
|
||||
}else{
|
||||
content="";
|
||||
}
|
||||
|
||||
//絵文字があれば
|
||||
if (emojick) {
|
||||
Object.keys(toot.emojis).forEach(function(key5) {
|
||||
var emoji = toot.emojis[key5];
|
||||
var shortcode = emoji.name;
|
||||
var emoji_url = '<img draggable="false" src="' + emoji.url +
|
||||
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
content = content.replace(regExp, emoji_url);
|
||||
spoil = spoil.replace(regExp, emoji_url);
|
||||
});
|
||||
}
|
||||
if(dis_name){
|
||||
dis_name=twemoji.parse(dis_name);
|
||||
}else{
|
||||
@@ -606,8 +634,46 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
});
|
||||
poll='<div class="vote_'+toot.id+'">'+poll+'</div>';
|
||||
}
|
||||
/*
|
||||
|
||||
*/
|
||||
if(localStorage.getItem("emojiReaction_" + acct_id)=="disabled"){
|
||||
var freeReact="hide";
|
||||
}else{
|
||||
var freeReact="";
|
||||
}
|
||||
//Reactions
|
||||
if(toot.reactionCounts){
|
||||
var addReact="";
|
||||
Object.keys(toot.reactionCounts).forEach(function(keye) {
|
||||
var thisReact=toot.reactionCounts[keye];
|
||||
if(keye=="like"){ var defaultEmoji=true;}
|
||||
else if(keye=="love"){ var defaultEmoji=true; }
|
||||
else if(keye=="laugh"){ var defaultEmoji=true; }
|
||||
else if(keye=="hmm"){ var defaultEmoji=true; }
|
||||
else if(keye=="surprise"){ var defaultEmoji=true; }
|
||||
else if(keye=="congrats"){ var defaultEmoji=true; }
|
||||
else if(keye=="angry"){ var defaultEmoji=true; }
|
||||
else if(keye=="confused"){ var defaultEmoji=true; }
|
||||
else if(keye=="pudding"){ var defaultEmoji=true; }
|
||||
else{
|
||||
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
|
||||
if(obj){
|
||||
var num = obj.length;
|
||||
var ehtml="";
|
||||
for (i = 0; i < num; i++) {
|
||||
var emoji = obj[i];
|
||||
if (":"+emoji.shortcode+":"==keye) {
|
||||
if (emoji) {
|
||||
addReact=addReact+ '<span class="reaction "><a onclick="reaction(\''+keye+'\',\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;"><img src="'+emoji.url+'" style="width:13px;"></a><span class="re-'+emoji.shortcode+'ct">'+thisReact+
|
||||
'</span></span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
if(toot.reactionCounts.like){
|
||||
var like=toot.reactionCounts.like;
|
||||
var likehide="";
|
||||
@@ -676,7 +742,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
var like=0;var love=0;var laugh=0;var hmm=0;var surprise=0;var congrats=0;var angry=0;var confused=0;var pudding=0;
|
||||
var likehide="hide";var lovehide="hide";var laughhide="hide";var hmmhide="hide";var suphide="hide";var conghide="hide";var anghide="hide";var confhide="hide";var pudhide="hide";
|
||||
var fullhide="hide";
|
||||
}
|
||||
}
|
||||
if(!addReact && likehide=="hide"&& lovehide=="hide"&& laughhide=="hide"&& hmmhide=="hide"&& suphide=="hide"&& conghide=="hide"&& anghide=="hide"&& confhide=="hide"&& pudhide=="hide"){
|
||||
var fullhide="hide";
|
||||
}
|
||||
if(toot.myReaction){
|
||||
var reacted=toot.myReaction;
|
||||
}else{
|
||||
@@ -687,6 +756,11 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
content='<span class="gray">This post has no content. It may be media-only, private or deleted.</span>';
|
||||
}
|
||||
var trans="";
|
||||
if(toot.user.emojis){
|
||||
var actemojick = toot.user.emojis[0];
|
||||
}else{
|
||||
var actemojick=false;
|
||||
}
|
||||
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
||||
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
|
||||
key].created_at, 'unix') + '" '+if_notf+' onmouseover="mov(\'' + toot.id + '\',\''+tlid+'\',\'mv\')" onclick="mov(\'' + toot.id + '\',\''+tlid+'\',\'cl\')" onmouseout="resetmv(\'mv\')" reacted="'+reacted+'">' +
|
||||
@@ -711,8 +785,8 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show +
|
||||
'</span>' +
|
||||
'' + viewer + '' +
|
||||
'</div><div class="area-additional"><span class="additional">'+analyze+
|
||||
'<div class="reactions '+fullhide+'" style="height: 25px;"><span class="'+likehide+' reaction re-like"><a onclick="reaction(\'like\',\'' + toot.id + '\',' + acct_id +
|
||||
'</div><div class="area-additional"><span class="additional">'+analyze+
|
||||
'<div class="reactions '+fullhide+'" style="height: 25px;"><span class="'+likehide+' reaction re-like"><a onclick="reaction(\'like\',\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat" style="padding:0;margin-left:3px;">'+twemoji.parse("👍")+'</a><span class="re-likect">'+like+
|
||||
'</span></span><span class="'+lovehide+' reaction re-love"><a onclick="reaction(\'love\',\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("💓")+'</a><span class="re-lovect">'+love+
|
||||
@@ -730,7 +804,9 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("😥")+'</a><span class="re-confusedct">'+confused+
|
||||
'</span></span><span class="'+pudhide+' reaction re-pudding"><a onclick="reaction(\'pudding\',\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("🍮")+'</a><span class="re-puddingct">'+pudding+
|
||||
'</span></div>'+poll + mentions + tags + '</div>' +
|
||||
'</span></span>'+addReact+
|
||||
'<i class="material-icons pointer hide freeReact '+freeReact+'" style="font-size:1.0rem; padding-left:5px;position: relative;top: 3px;" onclick="reactioncustom(\''+acct_id+'\',\''+id+'\')">add_box</i></div>'
|
||||
+poll + mentions + tags + '</div>' +
|
||||
'<div class="area-vis"></div>'+
|
||||
'<div class="area-actions '+mouseover+'">' +
|
||||
'<div class="action">'+vis+'</div>'+
|
||||
|
@@ -60,13 +60,13 @@ function notfColumn(acct_id, tlid, sys){
|
||||
var ipc = electron.ipcRenderer;
|
||||
var os = electron.remote.process.platform;
|
||||
var options = {
|
||||
body: ct+lang_notf_new[lang],
|
||||
body: ct+lang.lang_notf_new,
|
||||
icon: localStorage.getItem("prof_"+acct_id)
|
||||
};
|
||||
if(os=="darwin"){
|
||||
var n = new Notification('TheDesk:'+domain, options);
|
||||
}else{
|
||||
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
|
||||
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -233,13 +233,13 @@ function notfCommon(acct_id, tlid, sys) {
|
||||
var ipc = electron.ipcRenderer;
|
||||
var os = electron.remote.process.platform;
|
||||
var options = {
|
||||
body: ct+lang_notf_new[lang],
|
||||
body: ct+lang.lang_notf_new[lang],
|
||||
icon: localStorage.getItem("prof_"+acct_id)
|
||||
};
|
||||
if(os=="darwin"){
|
||||
var n = new Notification('TheDesk:'+domain, options);
|
||||
}else{
|
||||
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
|
||||
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -482,23 +482,12 @@ function notfCanceler(acct){
|
||||
function allNotfRead(){
|
||||
console.log(localStorage.getItem("notf-fav_2"));
|
||||
var multi = localStorage.getItem("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 {
|
||||
if (multi) {
|
||||
var obj = JSON.parse(multi);
|
||||
}
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
console.log(key);
|
||||
notfCanceler(key)
|
||||
});
|
||||
}
|
||||
}
|
||||
allNotfRead()
|
@@ -33,6 +33,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
var ltr = localStorage.getItem("letters");
|
||||
var gif = localStorage.getItem("gif");
|
||||
var imh = localStorage.getItem("img-height");
|
||||
if(!imh){
|
||||
imh=200;
|
||||
}
|
||||
if(imh=="full"){
|
||||
imh="auto";
|
||||
}else{
|
||||
@@ -228,6 +231,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
if(!locale && 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,
|
||||
'absolute') + '('+lang.lang_parse_notftime+')"><i class="fa fa-clock-o"></i>' + date(toot.created_at,
|
||||
@@ -469,7 +475,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}else{
|
||||
var nicoemojick=false;
|
||||
}
|
||||
//絵文字があれば
|
||||
//絵文字があれば(nico)
|
||||
if (nicoemojick) {
|
||||
Object.keys(toot.profile_emojis).forEach(function(keynico) {
|
||||
var emoji = toot.profile_emojis[keynico];
|
||||
@@ -726,7 +732,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
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=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="fa fa-calendar-times-o"></i>' +
|
||||
@@ -754,12 +760,12 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
'</div></div>' +
|
||||
'<div class="area-toot">'+tickerdom+'<span class="' +
|
||||
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
|
||||
'</span><span class="toot ' + spoiler + '">' + content +
|
||||
'</span><span class="toot ' + spoiler + '">' + content +poll+
|
||||
'</span>' +
|
||||
'' + viewer + '' +
|
||||
'</div><div class="area-additional"><span class="additional">' + analyze +
|
||||
'</span>' +
|
||||
'' +poll+ mentions + tags + '</div>' +
|
||||
'' + mentions + tags + '</div>' +
|
||||
'<div class="area-vis"></div>'+
|
||||
'<div class="area-actions '+mouseover+'">' +
|
||||
'<div class="action">'+vis+'</div>'+
|
||||
|
@@ -15,7 +15,7 @@ function src(mode) {
|
||||
var q = $("#src").val();
|
||||
var acct_id = $("#src-acct-sel").val();
|
||||
if(acct_id=="tootsearch"){
|
||||
tootsearch(q);
|
||||
tsAdd(q)
|
||||
return false;
|
||||
}
|
||||
localStorage.setItem("last-use", acct_id);
|
||||
@@ -73,9 +73,26 @@ function src(mode) {
|
||||
jQuery("time.timeago").timeago();
|
||||
});
|
||||
}
|
||||
function tootsearch(q){
|
||||
function tsAdd(q){
|
||||
var add = {
|
||||
domain: acct_id,
|
||||
type: "tootsearch",
|
||||
data: q
|
||||
};
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
localStorage.setItem("card_" + obj.length,"true");
|
||||
obj.push(add);
|
||||
console.log(obj);
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("column", json);
|
||||
parseColumn();
|
||||
}
|
||||
function tootsearch(tlid,q){
|
||||
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
|
||||
console.log(start)
|
||||
$("#notice_" + tlid).text("tootsearch("+q+")");
|
||||
$("#notice_icon_" + tlid).text("search");
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
@@ -90,17 +107,68 @@ function tootsearch(q){
|
||||
var templete="";
|
||||
var json=raw.hits.hits;
|
||||
console.log(json);
|
||||
Object.keys(json).forEach(function(key5) {
|
||||
var toot = json[key5]["_source"];
|
||||
console.log(toot);
|
||||
if(toot && toot.account){
|
||||
templete = templete+parse([toot],'noauth');
|
||||
var max_id = raw["hits"].length;
|
||||
for(var i=0;i<json.length;i++){
|
||||
var toot = json[i]["_source"];
|
||||
console.log(lastid)
|
||||
if(lastid!=toot.uri){
|
||||
console.log(toot);
|
||||
if(toot && toot.account){
|
||||
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
|
||||
}
|
||||
}
|
||||
});
|
||||
var lastid=toot.uri;
|
||||
}
|
||||
if(!templete){
|
||||
templete=lang.lang_details_nodata;
|
||||
}else{
|
||||
templete=templete+'<div class="hide ts-marker" data-maxid="'+max_id+'"></div>';
|
||||
}
|
||||
$("#src-contents").html("Tootsearch("+lang.lang_src_ts+")<br>" + templete);
|
||||
$("#timeline_" + tlid).html(templete);
|
||||
|
||||
jQuery("time.timeago").timeago();
|
||||
});
|
||||
}
|
||||
function moreTs(tlid,q){
|
||||
var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid");
|
||||
moreloading=true;
|
||||
var start = "https://tootsearch.chotto.moe/api/v1/search?from="+sid+"&sort=created_at%3Adesc&q=" + q
|
||||
console.log(start)
|
||||
$("#notice_" + tlid).text("tootsearch("+q+")");
|
||||
$("#notice_icon_" + tlid).text("search");
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(raw) {
|
||||
var templete="";
|
||||
var json=raw.hits.hits;
|
||||
console.log(json);
|
||||
var max_id = raw["hits"].length;
|
||||
for(var i=0;i<json.length;i++){
|
||||
var toot = json[i]["_source"];
|
||||
console.log(lastid)
|
||||
if(lastid!=toot.uri){
|
||||
console.log(toot);
|
||||
if(toot && toot.account){
|
||||
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
|
||||
}
|
||||
}
|
||||
var lastid=toot.uri;
|
||||
}
|
||||
if(!templete){
|
||||
templete=lang.lang_details_nodata;
|
||||
}else{
|
||||
templete=templete+'<div class="hide ts-marker" data-maxid="'+max_id+'"></div>';
|
||||
}
|
||||
$("#timeline_" + tlid).append(templete);
|
||||
|
||||
jQuery("time.timeago").timeago();
|
||||
});
|
||||
}
|
||||
|
131
app/js/tl/tl.js
131
app/js/tl/tl.js
@@ -164,6 +164,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
|
||||
localStorage.setItem("now", type);
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
var misskey=true;
|
||||
console.log(type);
|
||||
if (type == "home") {
|
||||
var start = "wss://" + domain +
|
||||
"/?i=" + at;
|
||||
@@ -183,12 +184,13 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
|
||||
var start = "wss://" + domain +
|
||||
"/hybrid-timeline?i=" + at;
|
||||
} else if (type == "tag") {
|
||||
Materialize.toast(lang_misskeyparse_tagnostr[lang], 1000);
|
||||
Materialize.toast(lang.lang_misskeyparse_tagnostr, 3000);
|
||||
} else if (type == "noauth") {
|
||||
var start = "wss://" + acct_id +
|
||||
"/local-timeline?i=" + at;
|
||||
} else if (type=="list"){
|
||||
Materialize.toast(lang_misskeyparse_listnostr[lang], 1000);
|
||||
var start = "wss://" + domain +
|
||||
"/user-list?i=" + at+"&listId="+data;
|
||||
}
|
||||
}else{
|
||||
var misskey=false;
|
||||
@@ -382,6 +384,10 @@ function moreload(type, tlid) {
|
||||
}else if (type == "notf") {
|
||||
notfmore(tlid);
|
||||
return;
|
||||
}else if (type == "tootsearch") {
|
||||
var data=obj[tlid].data;
|
||||
moreTs(tlid,data);
|
||||
return;
|
||||
}
|
||||
moreloading=true;
|
||||
localStorage.setItem("now", type);
|
||||
@@ -441,8 +447,6 @@ function moreload(type, tlid) {
|
||||
headers: hdr
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
fetch(start, i).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
@@ -463,6 +467,119 @@ function moreload(type, tlid) {
|
||||
});
|
||||
}
|
||||
}
|
||||
//TL差分取得
|
||||
function tlDiff(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
console.log("sabun")
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
var acct_id = obj[tlid].domain;
|
||||
if (!type) {
|
||||
var type = obj[tlid].type;
|
||||
}else{
|
||||
var data;
|
||||
}
|
||||
if(type=="tag"){
|
||||
var data=obj[tlid].data;
|
||||
var tag = localStorage.getItem("tag-range");
|
||||
if(tag=="local"){
|
||||
data=data+"&local=true";
|
||||
}
|
||||
}else if(type=="list"){
|
||||
var data=obj[tlid].data;
|
||||
}
|
||||
var sid = $("#timeline_" + tlid + " .cvo").first().attr("unique-id");
|
||||
if (sid && !moreloading) {
|
||||
if (type == "mix" && localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))!="misskey") {
|
||||
return;
|
||||
}else if (type == "plus" && localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))!="misskey") {
|
||||
return;
|
||||
}else if (type == "notf") {
|
||||
return;
|
||||
}
|
||||
moreloading=true;
|
||||
localStorage.setItem("now", type);
|
||||
todo(cap(type) + " TL MoreLoading");
|
||||
if(type!="noauth"){
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var hdr={
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
};
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
}else{
|
||||
var hdr={
|
||||
'content-type': 'application/json'
|
||||
};
|
||||
domain=acct_id;
|
||||
}
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
var misskey=true;
|
||||
hdr={
|
||||
'content-type': 'application/json'
|
||||
};
|
||||
var url=misskeycom(type, data);
|
||||
var start = "https://" + domain + "/api/notes/"+url;
|
||||
var method="POST";
|
||||
var req={};
|
||||
if(type!="noauth"){
|
||||
req.i=at;
|
||||
}
|
||||
if(type=="local-media"||type=="pub-media"){
|
||||
req.mediaOnly=true;
|
||||
}
|
||||
if(type=="tag"){
|
||||
req.tag=data;
|
||||
}
|
||||
if(type=="list"){
|
||||
req.listId=data;
|
||||
}
|
||||
req.sinceId=sid;
|
||||
req.limit=20;
|
||||
var i={
|
||||
method: method,
|
||||
headers: hdr,
|
||||
body: JSON.stringify(req),
|
||||
}
|
||||
}else{
|
||||
var misskey=false;
|
||||
var start = "https://" + domain + "/api/v1/timelines/" + com(type,data) +
|
||||
"since_id=" + sid;
|
||||
if(type=="dm"){
|
||||
var start = "https://" + domain + "/api/v1/conversations?" +
|
||||
"since_id=" + sid;
|
||||
}
|
||||
var method="GET";
|
||||
var i={
|
||||
method: method,
|
||||
headers: hdr
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
fetch(start, i).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
console.log(json);
|
||||
if(misskey){
|
||||
var templete = misskeyParse(json, '', acct_id, tlid,"",mute);
|
||||
}else{
|
||||
var templete = parse(json, '', acct_id, tlid,"",mute, type);
|
||||
}
|
||||
$("#timeline_" + tlid).prepend(templete);
|
||||
additional(acct_id, tlid);
|
||||
jQuery("time.timeago").timeago();
|
||||
moreloading=false;
|
||||
todc();
|
||||
});
|
||||
}
|
||||
}
|
||||
//TL再取得
|
||||
function reloadTL(type, data, acct_id, key, delc,voice){
|
||||
tl(type, data, acct_id, key, delc,voice,"");
|
||||
}
|
||||
|
||||
//WebSocket切断
|
||||
function tlCloser() {
|
||||
@@ -567,6 +684,8 @@ function cap(type, data, acct_id) {
|
||||
var response= "Local+"
|
||||
}else if (type == "webview") {
|
||||
var response="Twitter"
|
||||
}else if (type == "tootsearch") {
|
||||
var response="tootsearch(" + data + ")";
|
||||
}
|
||||
return response;
|
||||
}
|
||||
@@ -624,7 +743,7 @@ function icon(type) {
|
||||
} else if (type == "pub-media") {
|
||||
var response="language";
|
||||
} else if (type == "tag") {
|
||||
var response="search";
|
||||
var response="whatshot";
|
||||
} else if (type == "list") {
|
||||
var response="view_headline";
|
||||
} else if (type == "notf") {
|
||||
@@ -639,6 +758,8 @@ function icon(type) {
|
||||
var response="merge_type";
|
||||
}else if (type == "webview") {
|
||||
var response="language";
|
||||
}else if (type == "tootsearch") {
|
||||
var response="search";
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
@@ -287,6 +287,10 @@ function dlImg(){
|
||||
console.log(arg);
|
||||
})
|
||||
ipc.on('general-dl-message', function (event, arg) {
|
||||
console.log(arg);
|
||||
var argC=arg.replace(/\\/g,"\\\\")+"\\\\.";
|
||||
Materialize.toast(lang.lang_img_DLDone+arg+'<button class="btn-flat toast-action" onclick="openFinder(\''+argC+'\')">Show</button>', 5000);
|
||||
})
|
||||
}
|
||||
function openFinder(dir){
|
||||
ipc.send('open-finder', dir);
|
||||
}
|
@@ -30,11 +30,7 @@ function parseColumn() {
|
||||
}
|
||||
tlCloser();
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (!multi) {
|
||||
var obj = [];
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
} else {
|
||||
if (multi) {
|
||||
var obj = JSON.parse(multi);
|
||||
|
||||
var templete;
|
||||
@@ -130,6 +126,21 @@ function parseColumn() {
|
||||
}
|
||||
var html =webviewParse("https://tweetdeck.twitter.com",key,insert,icnsert,css);
|
||||
$("#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{
|
||||
var width = localStorage.getItem("width");
|
||||
if (width) {
|
||||
@@ -146,6 +157,7 @@ function parseColumn() {
|
||||
'<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="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="fa fa-users exc-icons"></i></label> '+
|
||||
'<input type="checkbox" class="filled-in" id="exc-follow-'+key+'" '+excludeCk(key,"poll")+' /><label for="exc-poll-'+key+'" class="exc-chb" ><i class="fa fa-tasks exc-icons"></i></label> '+
|
||||
'<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('+key+')">Filter</button><br>';
|
||||
}else if(acct.type=="home"){
|
||||
var exclude='<a onclick="ebtToggle(' + key +
|
||||
@@ -167,7 +179,7 @@ function parseColumn() {
|
||||
}
|
||||
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+' ">'+
|
||||
'<div class="area-notice"><i class="material-icons waves-effect red-text" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="goTop(' + key + ')" title="'+lang.lang_layout_gotop +'"></i></div>'+
|
||||
'<div class="area-notice"><i class="material-icons waves-effect red-text" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="checkStr(\''+acct.type+'\', \''+data+'\', \''+acct.domain+'\', \''+key+'\', \''+delc+'\',\''+voice+'\',null)" title="'+lang.lang_layout_gotop +'"></i></div>'+
|
||||
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
|
||||
'<div class="area-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_' +
|
||||
@@ -178,7 +190,7 @@ function parseColumn() {
|
||||
')" 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 id="notifications_' + key +
|
||||
'" data-notf="' + acct.domain + '" data-type="notf"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||
'" data-notf="' + acct.domain + '" data-type="notf" class="notf-timeline"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
|
||||
'" style="padding:5px;">'+exclude+left_hold+'<a onclick="mediaToggle(' + key +
|
||||
')" 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 +
|
||||
@@ -239,6 +251,15 @@ function parseColumn() {
|
||||
}
|
||||
}
|
||||
}
|
||||
function checkStr(type, data, acct_id, key, delc,voice){
|
||||
if($('#notice_icon_' + key).hasClass("red-text") && type!="notf" && type!="mix"){
|
||||
console.log("sabun-get")
|
||||
goTop(key);
|
||||
tlDiff(type, data, acct_id, key, delc,voice,"");
|
||||
}else{
|
||||
goTop(key);
|
||||
}
|
||||
}
|
||||
//セカンダリートゥートボタン
|
||||
function secvis(set){
|
||||
if(set=="public"){
|
||||
@@ -433,11 +454,42 @@ function webviewParse(url,key,insert,icnsert,css){
|
||||
')" class="setting nex" title="'+lang.lang_layout_setthis +'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
||||
'<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 +
|
||||
'" style="padding:5px;">'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:calc(100% - 110px);"><div id="timeline_' + key +
|
||||
'" style="padding:5px;">'+lang.lang_layout_headercolor +'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:100%;"><div id="timeline_' + key +
|
||||
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="'+url+'" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
|
||||
|
||||
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){
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
@@ -453,4 +505,4 @@ function leftFoldRemove(key){
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("column", json);
|
||||
parseColumn();
|
||||
}
|
||||
}
|
||||
|
@@ -19,6 +19,8 @@ function menu(){
|
||||
$("#menu-bar").html("TheDesk "+localStorage.getItem("ver"));
|
||||
$(".menu-content").addClass("hide");
|
||||
$("#add-box").removeClass("hide");
|
||||
$("#left-menu div").removeClass("active");
|
||||
$("#addColumnMenu").addClass("active");
|
||||
}else{
|
||||
$('#menu').fadeOut()
|
||||
$("#menu").removeClass("appear")
|
||||
|
@@ -5,6 +5,10 @@ function hide() {
|
||||
$('#post-box').fadeOut()
|
||||
$("#post-box").removeClass("appear")
|
||||
$("#emoji").addClass("hide")
|
||||
$("#left-side").show();
|
||||
$("#default-emoji").show();
|
||||
$("#unreact").show();
|
||||
$("#addreact").addClass("hide");
|
||||
}
|
||||
//最小化
|
||||
function mini() {
|
||||
|
@@ -58,6 +58,8 @@ function Scap(type, data) {
|
||||
return "Integrated"
|
||||
}else if (type == "webview") {
|
||||
return "Twitter"
|
||||
}else if (type == "tootsearch") {
|
||||
return "tootsearch(" + data + ")"
|
||||
}else{
|
||||
console.log(type);
|
||||
}
|
||||
|
@@ -214,50 +214,4 @@ $("#npbtn").click(function() {
|
||||
$("#npbtn").bind('contextmenu', function() {
|
||||
nowplaying('itunes');
|
||||
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);
|
||||
});
|
||||
}
|
||||
});
|
@@ -117,7 +117,7 @@ function udg(user, acct_id) {
|
||||
var emoji = json.emojis[key5];
|
||||
var shortcode = emoji.shortcode;
|
||||
var emoji_url = '<img src="' + emoji.url +
|
||||
'" class="emoji-img" data-emoji="'+shortcode+'">';
|
||||
'" class="emoji-img" data-emoji="'+shortcode+'" draggable="false">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
dis_name = dis_name.replace(regExp, emoji_url);
|
||||
note = note.replace(regExp, emoji_url);
|
||||
@@ -143,8 +143,15 @@ function udg(user, acct_id) {
|
||||
for(var i=0;i<json.fields.length;i++){
|
||||
var fname=json.fields[i].name;
|
||||
var fval=json.fields[i].value;
|
||||
if(json.fields[i].verified_at){
|
||||
var when=lang.lang_showontl_verified+":"+crat(json.fields[i].verified_at);
|
||||
var color="rgba(121,189,154,.25);"
|
||||
}else{
|
||||
var when="";
|
||||
var color="inherit"
|
||||
}
|
||||
fval=twemoji.parse(fval);
|
||||
note=note+'<tr><td class="his-field-title">'+fname+'</td><td class="his-field-content">'+fval+'</td></tr>';
|
||||
note=note+'<tr><td class="his-field-title">'+fname+'</td><td class="his-field-content" title="'+when+'" style="background-color:'+color+'">'+fval+'</td></tr>';
|
||||
}
|
||||
note=note+'</table>'
|
||||
$("#his-des").html(twemoji.parse(note));
|
||||
@@ -392,6 +399,12 @@ function relations(user, acct_id) {
|
||||
$("#his-end-btn").removeClass("endorsed");
|
||||
$("#his-end-btn").text(lang.lang_status_endorse)
|
||||
}
|
||||
//Blocked
|
||||
if(json.blocked_by){
|
||||
$("#his-float-timeline").hide();
|
||||
$("#his-float-blocked").show();
|
||||
$("#his-follow-btn").hide()
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
@@ -453,6 +466,8 @@ function reset(){
|
||||
$("#his-f4-name").val(""); $("#his-f4-val").val("");
|
||||
$("#his-endorse").html("");
|
||||
$("#his-openin").attr("data-href", "");
|
||||
$("#his-float-timeline").show();
|
||||
$("#his-float-blocked").hide();
|
||||
}
|
||||
$('#my-data-nav .custom-tab').on('click',function(){
|
||||
var target=$(this).find("a").attr("go");
|
||||
|
@@ -1,75 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<title>Languages - TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans" rel="stylesheet">
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body style="max-width:100vw; width:500px; padding:10px;">
|
||||
<script type="text/javascript" src="./js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="./js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="./js/lang/lang.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||
<h3 id="language"></h3>
|
||||
<select id="language-sel" style="color:black" onchange="btn();"></select>
|
||||
<button class="btn waves-effect indigo nex" style="width:100%; max-width:200px;" onclick="sel()" id="sel"></button>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;" id="back"></a><br>
|
||||
<br>
|
||||
<span id="notice"></span>
|
||||
<script>
|
||||
//コード受信
|
||||
if(location.search){
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)/);
|
||||
var mode=m[1];
|
||||
if(mode=="redirect"){
|
||||
if(localStorage.getItem("lang")){
|
||||
changelang(localStorage.getItem("lang"))
|
||||
}
|
||||
}
|
||||
}
|
||||
var fstlang="";
|
||||
var langtxt="";
|
||||
var addit="";
|
||||
Object.keys(lang_lang).forEach(function(i) {
|
||||
if(langtxt==""){
|
||||
langtxt=lang_lang[i];
|
||||
$("#sel").text(lang_set[i]);
|
||||
$("#back").text(lang_back[i]);
|
||||
}else{
|
||||
langtxt=langtxt+"/"+lang_lang[i];
|
||||
}
|
||||
addit=addit+"<br>"+lang_langadd[i];
|
||||
var loc=lang_langlocale[i];
|
||||
$("#language-sel").append('<option value="'+i+'">'+loc+'</option>');
|
||||
});
|
||||
|
||||
$("#language").text(langtxt)
|
||||
$("#notice").html(addit)
|
||||
$('select').material_select('update');
|
||||
function sel(){
|
||||
var val=$("#language-sel").val();
|
||||
changelang(val);
|
||||
}
|
||||
function changelang(val){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
localStorage.setItem("lang",val);
|
||||
ipc.send('lang', val);
|
||||
ipc.on('langres', function (event, arg) {
|
||||
location.href="index.html";
|
||||
})
|
||||
|
||||
}
|
||||
function btn(){
|
||||
var val=$("#language-sel").val();
|
||||
$("#sel").text(lang_set[val]);
|
||||
$("#back").text(lang_back[val]);
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
594
app/main.js
594
app/main.js
@@ -1,33 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
var dir='file://' + __dirname;
|
||||
var base=dir + '/view/';
|
||||
// Electronのモジュール
|
||||
const electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const dialog = require('electron').dialog;
|
||||
var Jimp = require("jimp");
|
||||
const shell = electron.shell;
|
||||
const os = require('os')
|
||||
const path = require('path')
|
||||
const fm = require('font-manager');
|
||||
const language = require('./language.js');
|
||||
const language = require('./main/language.js');
|
||||
const css = require('./main/css.js');
|
||||
const dl = require('./main/dl.js');
|
||||
const img = require('./main/img.js');
|
||||
const np = require('./main/np.js');
|
||||
const systemFunc = require('./main/system.js');
|
||||
const Menu=electron.Menu
|
||||
var updatewin=null;
|
||||
const join = require('path').join;
|
||||
var JSON5 = require('json5');
|
||||
// アプリケーションをコントロールするモジュール
|
||||
const app = electron.app;
|
||||
// ウィンドウを作成するモジュール
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const {
|
||||
download
|
||||
} = require('electron-dl');
|
||||
// メインウィンドウはGCされないようにグローバル宣言
|
||||
let mainWindow;
|
||||
var info_path = join(app.getPath("userData"), "window-size.json");
|
||||
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
|
||||
var lang_path=join(app.getPath("userData"), "language");
|
||||
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");
|
||||
try{
|
||||
fs.readFileSync(ha_path, 'utf8');
|
||||
@@ -57,19 +50,14 @@ try {
|
||||
|
||||
}; // デフォルトバリュー
|
||||
}
|
||||
try {
|
||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||
} catch (e) {
|
||||
var langs=app.getLocale();
|
||||
if(~langs.indexOf("ja")){
|
||||
lang="ja";
|
||||
}else{
|
||||
lang="en";
|
||||
function isFile(file){
|
||||
try {
|
||||
fs.statSync(file);
|
||||
return true
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') return false
|
||||
}
|
||||
fs.writeFileSync(lang_path,lang);
|
||||
}
|
||||
console.log(app.getLocale());
|
||||
console.log("launch:"+lang);
|
||||
// 全てのウィンドウが閉じたら終了
|
||||
app.on('window-all-closed', function() {
|
||||
if (process.platform != 'darwin') {
|
||||
@@ -77,8 +65,31 @@ app.on('window-all-closed', function() {
|
||||
app.quit();
|
||||
}
|
||||
});
|
||||
// macOSでウィンドウを閉じた後に再度開けるようにする
|
||||
app.on('activate', function() {
|
||||
if (mainWindow == null) {
|
||||
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 bit=process.arch;
|
||||
@@ -107,7 +118,7 @@ function createWindow() {
|
||||
}else{
|
||||
var plus="";
|
||||
}
|
||||
mainWindow.loadURL('file://' + __dirname + '/view/'+lang+'/index.html'+plus);
|
||||
mainWindow.loadURL(base+lang+'/index.html'+plus);
|
||||
if(!window_size.x && !window_size.y){
|
||||
mainWindow.center();
|
||||
}
|
||||
@@ -116,6 +127,7 @@ function createWindow() {
|
||||
}
|
||||
// ウィンドウが閉じられたらアプリも終了
|
||||
mainWindow.on('closed', function() {
|
||||
electron.ipcMain.removeAllListeners();
|
||||
mainWindow = null;
|
||||
});
|
||||
mainWindow.on('close', function() {
|
||||
@@ -138,529 +150,23 @@ function createWindow() {
|
||||
var platform=process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="darwin"){
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false)));
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false,dir)));
|
||||
}
|
||||
//CSS
|
||||
css.css(mainWindow);
|
||||
//アップデータとダウンロード
|
||||
dl.dl(mainWindow,lang_path,base);
|
||||
//画像選択と画像処理
|
||||
img.img(mainWindow,dir);
|
||||
//NowPlaying
|
||||
np.TheDeskNowPlaying(mainWindow);
|
||||
//その他system
|
||||
systemFunc.system(mainWindow,dir,lang);
|
||||
}
|
||||
// Electronの初期化完了後に実行
|
||||
app.on('ready', createWindow);
|
||||
var onError = function(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')
|
||||
|
105
app/main/css.js
Normal file
105
app/main/css.js
Normal file
@@ -0,0 +1,105 @@
|
||||
function css(mainWindow) {
|
||||
const electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const path = require('path')
|
||||
var ipc = electron.ipcMain;
|
||||
var JSON5 = require('json5');
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
var customcss = join(app.getPath("userData"), "custom.css");
|
||||
|
||||
ipc.on('custom-css-create', function(e, arg) {
|
||||
fs.writeFileSync(customcss, arg);
|
||||
mainWindow.webContents.send('custom-css-create-complete', "");
|
||||
})
|
||||
ipc.on('custom-css-request', function(e, arg) {
|
||||
try {
|
||||
var css = fs.readFileSync(customcss, 'utf8');
|
||||
} catch (e) {
|
||||
var css = "";
|
||||
}
|
||||
mainWindow.webContents.send('custom-css-response', css);
|
||||
})
|
||||
ipc.on('theme-json-create', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] +
|
||||
".thedesktheme");
|
||||
fs.writeFileSync(themecss, JSON.stringify(JSON5.parse(arg)));
|
||||
if (JSON5.parse(arg)["id"]) {
|
||||
mainWindow.webContents.send('theme-json-create-complete', "");
|
||||
} else {
|
||||
mainWindow.webContents.send('theme-json-create-complete', "error");
|
||||
}
|
||||
})
|
||||
ipc.on('theme-json-delete', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
console.log(themecss);
|
||||
fs.unlink(themecss, function(err) {
|
||||
mainWindow.webContents.send('theme-json-delete-complete', "");
|
||||
});
|
||||
})
|
||||
ipc.on('theme-json-request', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
mainWindow.webContents.send('theme-json-response', json);
|
||||
})
|
||||
ipc.on('theme-css-request', function(e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
try {
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
|
||||
var primary = json.vars.primary;
|
||||
var secondary = json.vars.secondary;
|
||||
var text = json.vars.text;
|
||||
if (json.base == "light") {
|
||||
var drag = "rgba(255, 255, 255, 0.8)";
|
||||
var beforehover = "#757575";
|
||||
} else {
|
||||
var drag = "rgba(0, 0, 0, 0.8)";
|
||||
var beforehover = "#9e9e9e";
|
||||
}
|
||||
if (json.props) {
|
||||
if (json.props.TheDeskAccent) {
|
||||
var emphasized = json.props.TheDeskAccent
|
||||
} else {
|
||||
var emphasized = secondary;
|
||||
}
|
||||
} else {
|
||||
var emphasized = primary;
|
||||
}
|
||||
|
||||
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
|
||||
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
|
||||
secondary + ";--subcolor:" + primary + ";--box:" + primary +
|
||||
";--sidebar:" + primary + ";--shared:" + emphasized + ";" +
|
||||
"--notfbox:" + secondary + ";--emphasized:" + primary + ";--his-data:" +
|
||||
secondary +
|
||||
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
|
||||
primary +
|
||||
";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||
mainWindow.webContents.send('theme-css-response', css);
|
||||
} catch (e) {
|
||||
var css = "";
|
||||
}
|
||||
|
||||
})
|
||||
ipc.on('theme-json-list', function(e, arg) {
|
||||
fs.readdir(app.getPath("userData"), function(err, files) {
|
||||
if (err) throw err;
|
||||
var fileList = files.filter(function(file) {
|
||||
var tfile = join(app.getPath("userData"), file);
|
||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み
|
||||
})
|
||||
var themes = [];
|
||||
for (var i = 0; i < fileList.length; i++) {
|
||||
var themecss = join(app.getPath("userData"), fileList[i]);
|
||||
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
themes.push({
|
||||
name: json.name,
|
||||
id: json.id
|
||||
})
|
||||
}
|
||||
mainWindow.webContents.send('theme-json-list-response', themes);
|
||||
});
|
||||
})
|
||||
}
|
||||
exports.css = css;
|
123
app/main/dl.js
Normal file
123
app/main/dl.js
Normal file
@@ -0,0 +1,123 @@
|
||||
function dl(mainWindow,lang_path,base) {
|
||||
const electron = require("electron");
|
||||
const shell=electron.shell;
|
||||
const fs = require("fs");
|
||||
const {download} = require('electron-dl');
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dialog = electron.dialog;
|
||||
var updatewin = null;
|
||||
var ipc = electron.ipcMain;
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
ipc.on('update', function(e, x, y) {
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (platform != "others") {
|
||||
updatewin = new BrowserWindow({
|
||||
width: 600,
|
||||
height: 400,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false,
|
||||
"modal": true
|
||||
});
|
||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||
updatewin.loadURL(base + lang + '/update.html');
|
||||
|
||||
return "true"
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
})
|
||||
//アプデDL
|
||||
ipc.on('download-btn', (e, args) => {
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
dialog.showSaveDialog(null, {
|
||||
title: 'Save',
|
||||
defaultPath: app.getPath('home') + "/" + args[1]
|
||||
}, (savedFiles) => {
|
||||
console.log(savedFiles);
|
||||
if (!savedFiles) {
|
||||
return false;
|
||||
}
|
||||
if (platform == "win32") {
|
||||
var m = savedFiles.match(/(.+)\\(.+)$/);
|
||||
} else {
|
||||
var m = savedFiles.match(/(.+)\/(.+)$/);
|
||||
}
|
||||
//console.log(m);
|
||||
if (isExistFile(savedFiles)) {
|
||||
fs.unlinkSync(savedFiles);
|
||||
}
|
||||
dl(args[0], args[1], m[1]);
|
||||
});
|
||||
});
|
||||
|
||||
function isExistFile(file) {
|
||||
try {
|
||||
fs.statSync(file);
|
||||
return true
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') return false
|
||||
}
|
||||
}
|
||||
|
||||
function dl(url, file, dir) {
|
||||
|
||||
updatewin.webContents.send('mess', "ダウンロードを開始します。");
|
||||
const opts = {
|
||||
directory: dir,
|
||||
openFolderWhenDone: true,
|
||||
onProgress: function(e) {
|
||||
updatewin.webContents.send('prog', e);
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
url, opts)
|
||||
.then(dl => {
|
||||
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
|
||||
app.quit();
|
||||
|
||||
})
|
||||
.catch(console.error);
|
||||
}
|
||||
ipc.on('general-dl', (e, args) => {
|
||||
|
||||
var name = "";
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (args[1] == "") {
|
||||
if (platform == "win32") {
|
||||
var dir = app.getPath('home') + "\\Pictures\\TheDesk";
|
||||
} else if (platform == "linux" || platform == "darwin") {
|
||||
var dir = app.getPath('home') + "/Pictures/TheDesk";
|
||||
}
|
||||
} else {
|
||||
var dir = args[1];
|
||||
}
|
||||
const opts = {
|
||||
directory: dir,
|
||||
filename: name,
|
||||
openFolderWhenDone: false,
|
||||
onProgress: function(e) {
|
||||
mainWindow.webContents.send('general-dl-prog', e);
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
args[0], opts)
|
||||
.then(dl => {
|
||||
mainWindow.webContents.send('general-dl-message', dir);
|
||||
})
|
||||
.catch(console.error);
|
||||
});
|
||||
ipc.on('open-finder', (e, folder) => {
|
||||
|
||||
shell.showItemInFolder(folder)
|
||||
});
|
||||
}
|
||||
exports.dl = dl;
|
71
app/main/img.js
Normal file
71
app/main/img.js
Normal file
@@ -0,0 +1,71 @@
|
||||
function img(mainWindow,dir){
|
||||
const electron = require("electron");
|
||||
const dialog = electron.dialog;
|
||||
const fs = require("fs");
|
||||
var Jimp = require("jimp");
|
||||
var ipc = electron.ipcMain;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
ipc.on('file-select', (e, args) => {
|
||||
|
||||
dialog.showOpenDialog(null, {
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']},
|
||||
{name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']},
|
||||
{name: '動画', extensions: ['mp4','webm']},
|
||||
{name: '全てのファイル', extensions: ['*']}
|
||||
]
|
||||
}, (fileNames) => {
|
||||
if(!fileNames){
|
||||
return false;
|
||||
}
|
||||
for(var i=0;i<fileNames.length;i++){
|
||||
var path=fileNames[i];
|
||||
var bin = fs.readFileSync(path, 'base64');
|
||||
mainWindow.webContents.send('bmp-img-comp', [bin,'new']);
|
||||
}
|
||||
});
|
||||
});
|
||||
ipc.on('adobe', (e, arg) => {
|
||||
|
||||
if(!arg){
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: 'Adobeフォトエディタ',
|
||||
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
|
||||
buttons: ['拒否', '許可','永続的に許可']
|
||||
}
|
||||
dialog.showMessageBox(options, function(index) {
|
||||
if(index===2){
|
||||
mainWindow.webContents.send('adobeagree', "true");
|
||||
}
|
||||
if(index>0){
|
||||
adobeWindow();
|
||||
}
|
||||
})
|
||||
}else{
|
||||
adobeWindow();
|
||||
}
|
||||
});
|
||||
function adobeWindow(){
|
||||
var window = new BrowserWindow({
|
||||
width: 1000,
|
||||
height: 750
|
||||
});
|
||||
window.loadURL(dir + '/adobe.html');
|
||||
}
|
||||
ipc.on('bmp-image', (e, args) => {
|
||||
|
||||
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err;
|
||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
mainWindow.webContents.send('bmp-img-comp', [src,args[1]]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
exports.img = img;
|
@@ -1,5 +1,5 @@
|
||||
// Create the Application's main menu
|
||||
function templete(lang,mainWindow,packaged){
|
||||
function templete(lang,mainWindow,packaged,dir){
|
||||
const electron = require("electron");
|
||||
const app = electron.app;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
@@ -74,7 +74,7 @@ function templete(lang,mainWindow,packaged){
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false });
|
||||
window.loadURL('file://' + __dirname + '/about.html?ver='+ver);
|
||||
window.loadURL(dir + '/about.html?ver='+ver);
|
||||
} },
|
||||
{ type: "separator" },
|
||||
{ label: dict.quit[lang], accelerator: "Command+Q", click: function() { app.quit(); }}
|
69
app/main/np.js
Normal file
69
app/main/np.js
Normal file
@@ -0,0 +1,69 @@
|
||||
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', (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"){
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
exports.TheDeskNowPlaying = np;
|
181
app/main/system.js
Normal file
181
app/main/system.js
Normal file
@@ -0,0 +1,181 @@
|
||||
function system(mainWindow, dir, lang) {
|
||||
const electron = require("electron");
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
var Jimp = require("jimp");
|
||||
const fs = require("fs");
|
||||
var ipc = electron.ipcMain;
|
||||
var tmp_img = join(app.getPath("userData"), "tmp.png");
|
||||
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
|
||||
var lang_path = join(app.getPath("userData"), "language");
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dialog = electron.dialog;
|
||||
const os = require('os')
|
||||
const fm = require('font-manager');
|
||||
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: 460,
|
||||
"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) => {
|
||||
var fonts = fm.getAvailableFontsSync();
|
||||
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted) {
|
||||
mainWindow.webContents.send('font-list', fonts_sorted);
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.system = system;
|
650
app/package-lock.json
generated
650
app/package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "thedesk",
|
||||
"version": "18.0.3",
|
||||
"version": "18.1.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -15,14 +15,14 @@
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
|
||||
},
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
|
||||
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
|
||||
"requires": {
|
||||
"co": "^4.6.0",
|
||||
"fast-deep-equal": "^1.0.0",
|
||||
"fast-deep-equal": "^2.0.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.3.0"
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"ansi-regex": {
|
||||
@@ -60,40 +60,36 @@
|
||||
"dev": true
|
||||
},
|
||||
"asar": {
|
||||
"version": "0.14.6",
|
||||
"resolved": "https://registry.npmjs.org/asar/-/asar-0.14.6.tgz",
|
||||
"integrity": "sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/asar/-/asar-1.0.0.tgz",
|
||||
"integrity": "sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chromium-pickle-js": "^0.2.0",
|
||||
"commander": "^2.9.0",
|
||||
"cuint": "^0.2.1",
|
||||
"glob": "^6.0.4",
|
||||
"minimatch": "^3.0.3",
|
||||
"mkdirp": "^0.5.0",
|
||||
"mksnapshot": "^0.3.4",
|
||||
"tmp": "0.0.28"
|
||||
"commander": "^2.19.0",
|
||||
"cuint": "^0.2.2",
|
||||
"glob": "^7.1.3",
|
||||
"minimatch": "^3.0.4",
|
||||
"mkdirp": "^0.5.1",
|
||||
"pify": "^4.0.1",
|
||||
"tmp-promise": "^1.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
|
||||
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "2 || 3",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
"pify": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
|
||||
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
|
||||
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||
"requires": {
|
||||
"safer-buffer": "~2.1.0"
|
||||
}
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
@@ -117,9 +113,9 @@
|
||||
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
|
||||
},
|
||||
"aws4": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
|
||||
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
|
||||
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
@@ -133,10 +129,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"bcrypt-pbkdf": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
|
||||
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
|
||||
"optional": true,
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||
"requires": {
|
||||
"tweetnacl": "^0.14.3"
|
||||
}
|
||||
@@ -146,16 +141,6 @@
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz",
|
||||
"integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg="
|
||||
},
|
||||
"binary": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
|
||||
"integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffers": "~0.1.1",
|
||||
"chainsaw": "~0.1.0"
|
||||
}
|
||||
},
|
||||
"block-stream": {
|
||||
"version": "0.0.9",
|
||||
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
|
||||
@@ -175,14 +160,6 @@
|
||||
"resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz",
|
||||
"integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo="
|
||||
},
|
||||
"boom": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
|
||||
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
|
||||
"requires": {
|
||||
"hoek": "4.x.x"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
@@ -225,12 +202,6 @@
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
||||
"dev": true
|
||||
},
|
||||
"buffers": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
|
||||
"integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
|
||||
"dev": true
|
||||
},
|
||||
"builtin-modules": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
|
||||
@@ -266,15 +237,6 @@
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||
},
|
||||
"chainsaw": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
|
||||
"integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"traverse": ">=0.3.0 <0.4"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
@@ -357,11 +319,6 @@
|
||||
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
|
||||
"dev": true
|
||||
},
|
||||
"co": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
||||
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||
@@ -397,9 +354,9 @@
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
|
||||
"integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
|
||||
"version": "2.20.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
|
||||
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
|
||||
"dev": true
|
||||
},
|
||||
"compare-version": {
|
||||
@@ -448,24 +405,6 @@
|
||||
"which": "^1.2.9"
|
||||
}
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
|
||||
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
|
||||
"requires": {
|
||||
"boom": "5.x.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"boom": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
|
||||
"integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=",
|
||||
"requires": {
|
||||
"hoek": "4.x.x"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cuint": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
|
||||
@@ -503,47 +442,6 @@
|
||||
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
||||
"dev": true
|
||||
},
|
||||
"decompress-zip": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz",
|
||||
"integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"binary": "^0.3.0",
|
||||
"graceful-fs": "^4.1.3",
|
||||
"mkpath": "^0.1.0",
|
||||
"nopt": "^3.0.1",
|
||||
"q": "^1.1.2",
|
||||
"readable-stream": "^1.1.8",
|
||||
"touch": "0.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
|
||||
"dev": true
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.1.14",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"deep-extend": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
|
||||
@@ -581,12 +479,12 @@
|
||||
"integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
|
||||
"optional": true,
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||
"requires": {
|
||||
"jsbn": "~0.1.0"
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"electron": {
|
||||
@@ -662,48 +560,40 @@
|
||||
}
|
||||
},
|
||||
"electron-download": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz",
|
||||
"integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=",
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
|
||||
"integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^2.2.0",
|
||||
"fs-extra": "^0.30.0",
|
||||
"home-path": "^1.0.1",
|
||||
"debug": "^3.0.0",
|
||||
"env-paths": "^1.0.0",
|
||||
"fs-extra": "^4.0.1",
|
||||
"minimist": "^1.2.0",
|
||||
"nugget": "^2.0.0",
|
||||
"path-exists": "^2.1.0",
|
||||
"rc": "^1.1.2",
|
||||
"semver": "^5.3.0",
|
||||
"sumchecker": "^1.2.0"
|
||||
"nugget": "^2.0.1",
|
||||
"path-exists": "^3.0.0",
|
||||
"rc": "^1.2.1",
|
||||
"semver": "^5.4.1",
|
||||
"sumchecker": "^2.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"es6-promise": {
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
|
||||
"integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
|
||||
"dev": true
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "0.30.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
|
||||
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
|
||||
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^2.1.0",
|
||||
"klaw": "^1.0.0",
|
||||
"path-is-absolute": "^1.0.0",
|
||||
"rimraf": "^2.2.8"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
||||
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
@@ -712,24 +602,11 @@
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||
"dev": true
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
|
||||
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pinkie-promise": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"sumchecker": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz",
|
||||
"integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^2.2.0",
|
||||
"es6-promise": "^4.0.5"
|
||||
}
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -752,26 +629,6 @@
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
|
||||
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
@@ -803,12 +660,12 @@
|
||||
}
|
||||
},
|
||||
"electron-packager": {
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.0.1.tgz",
|
||||
"integrity": "sha512-fXfldaZ1wihpPaMTSGMxvCeETJwVArlnMmKafVXLJbbZwS+WTjY4iL7ju9WMQ0LNGuiiIwSMCQFxt5iA087mqg==",
|
||||
"version": "13.1.1",
|
||||
"resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.1.1.tgz",
|
||||
"integrity": "sha512-3Drgcw8OEOP3Psw/PprloAFJSkSUSQgjUq3AmWffJGB3Kj5WXmZl6A3GOUs8aT7bP/8GWg4oYqSiCSnA5PQkdQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"asar": "^0.14.0",
|
||||
"asar": "^1.0.0",
|
||||
"debug": "^4.0.1",
|
||||
"electron-download": "^4.1.1",
|
||||
"electron-notarize": "^0.0.5",
|
||||
@@ -824,15 +681,9 @@
|
||||
"resolve": "^1.1.6",
|
||||
"sanitize-filename": "^1.6.0",
|
||||
"semver": "^5.3.0",
|
||||
"yargs-parser": "^11.0.0"
|
||||
"yargs-parser": "^13.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"camelcase": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
|
||||
"integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
@@ -842,71 +693,6 @@
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"electron-download": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
|
||||
"integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^3.0.0",
|
||||
"env-paths": "^1.0.0",
|
||||
"fs-extra": "^4.0.1",
|
||||
"minimist": "^1.2.0",
|
||||
"nugget": "^2.0.1",
|
||||
"path-exists": "^3.0.0",
|
||||
"rc": "^1.2.1",
|
||||
"semver": "^5.4.1",
|
||||
"sumchecker": "^2.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
|
||||
"integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
|
||||
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
@@ -920,9 +706,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "11.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
|
||||
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
|
||||
"version": "13.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
|
||||
"integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"camelcase": "^5.0.0",
|
||||
@@ -931,16 +717,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"electron-prebuilt": {
|
||||
"version": "1.4.13",
|
||||
"resolved": "https://registry.npmjs.org/electron-prebuilt/-/electron-prebuilt-1.4.13.tgz",
|
||||
"integrity": "sha1-Cg5Ne/iVokIGHM+rKTlNzaHaM9I=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"electron-download": "^3.0.1",
|
||||
"extract-zip": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"electron-rebuild": {
|
||||
"version": "1.8.4",
|
||||
"resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.8.4.tgz",
|
||||
@@ -1048,9 +824,9 @@
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
|
||||
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"extract-zip": {
|
||||
"version": "1.6.7",
|
||||
@@ -1070,9 +846,9 @@
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
|
||||
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
|
||||
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.0.0",
|
||||
@@ -1144,15 +920,6 @@
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
@@ -1250,15 +1017,6 @@
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
@@ -1420,11 +1178,11 @@
|
||||
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
|
||||
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
|
||||
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
|
||||
"requires": {
|
||||
"ajv": "^5.1.0",
|
||||
"ajv": "^6.5.5",
|
||||
"har-schema": "^2.0.0"
|
||||
}
|
||||
},
|
||||
@@ -1439,28 +1197,6 @@
|
||||
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
|
||||
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
|
||||
},
|
||||
"hawk": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
|
||||
"integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=",
|
||||
"requires": {
|
||||
"boom": "4.x.x",
|
||||
"cryptiles": "3.x.x",
|
||||
"hoek": "4.x.x",
|
||||
"sntp": "2.x.x"
|
||||
}
|
||||
},
|
||||
"hoek": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
|
||||
"integrity": "sha1-ljRQKqEsRF3Vp8VzS1cruHOKrLs="
|
||||
},
|
||||
"home-path": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz",
|
||||
"integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==",
|
||||
"dev": true
|
||||
},
|
||||
"hosted-git-info": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
|
||||
@@ -1600,10 +1336,6 @@
|
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"itunes-nowplaying-mac": {
|
||||
"version": "github:rinsuki/itunes-nowplaying-mac#faf0f53c39d5f895eab9afadbac762914693a1fd",
|
||||
"from": "github:rinsuki/itunes-nowplaying-mac#pull/1/head"
|
||||
},
|
||||
"jimp": {
|
||||
"version": "0.2.28",
|
||||
"resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz",
|
||||
@@ -1635,8 +1367,7 @@
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"optional": true
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
@@ -1644,9 +1375,9 @@
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
||||
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
@@ -1688,15 +1419,6 @@
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"klaw": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
|
||||
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.9"
|
||||
}
|
||||
},
|
||||
"lcid": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
|
||||
@@ -1886,47 +1608,6 @@
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"mkpath": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
|
||||
"integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
|
||||
"dev": true
|
||||
},
|
||||
"mksnapshot": {
|
||||
"version": "0.3.4",
|
||||
"resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.4.tgz",
|
||||
"integrity": "sha512-FgUTiWiY+35LgL95P/MDYrBuQO5o0s3MmaWKX6ZJWoX4vMOY9vPsAv763l1OSSelL9jPsBQ/wf4bzfqTLNPSFg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"decompress-zip": "0.3.0",
|
||||
"fs-extra": "0.26.7",
|
||||
"request": "2.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": {
|
||||
"version": "0.26.7",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
|
||||
"integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"jsonfile": "^2.1.0",
|
||||
"klaw": "^1.0.0",
|
||||
"path-is-absolute": "^1.0.0",
|
||||
"rimraf": "^2.2.8"
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
||||
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"modify-filename": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
|
||||
@@ -2189,9 +1870,9 @@
|
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
|
||||
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
@@ -2514,16 +2195,10 @@
|
||||
"resolved": "https://registry.npmjs.org/pupa/-/pupa-1.0.0.tgz",
|
||||
"integrity": "sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y="
|
||||
},
|
||||
"q": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
||||
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
|
||||
"dev": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg="
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"rc": {
|
||||
"version": "1.2.8",
|
||||
@@ -2611,32 +2286,50 @@
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"version": "2.83.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
|
||||
"integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=",
|
||||
"version": "2.88.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
|
||||
"requires": {
|
||||
"aws-sign2": "~0.7.0",
|
||||
"aws4": "^1.6.0",
|
||||
"aws4": "^1.8.0",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.5",
|
||||
"extend": "~3.0.1",
|
||||
"combined-stream": "~1.0.6",
|
||||
"extend": "~3.0.2",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.3.1",
|
||||
"har-validator": "~5.0.3",
|
||||
"hawk": "~6.0.2",
|
||||
"form-data": "~2.3.2",
|
||||
"har-validator": "~5.1.0",
|
||||
"http-signature": "~1.2.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.17",
|
||||
"oauth-sign": "~0.8.2",
|
||||
"mime-types": "~2.1.19",
|
||||
"oauth-sign": "~0.9.0",
|
||||
"performance-now": "^2.1.0",
|
||||
"qs": "~6.5.1",
|
||||
"safe-buffer": "^5.1.1",
|
||||
"stringstream": "~0.0.5",
|
||||
"tough-cookie": "~2.3.3",
|
||||
"qs": "~6.5.2",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"tough-cookie": "~2.4.3",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.1.0"
|
||||
"uuid": "^3.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"mime-db": {
|
||||
"version": "1.38.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
|
||||
"integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.22",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
|
||||
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
|
||||
"requires": {
|
||||
"mime-db": "~1.38.0"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"require-directory": {
|
||||
@@ -2692,6 +2385,11 @@
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"sanitize-filename": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz",
|
||||
@@ -2750,14 +2448,6 @@
|
||||
"string-width": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"sntp": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
|
||||
"integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=",
|
||||
"requires": {
|
||||
"hoek": "4.x.x"
|
||||
}
|
||||
},
|
||||
"sort-keys": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
|
||||
@@ -2824,9 +2514,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
|
||||
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
|
||||
"requires": {
|
||||
"asn1": "~0.2.3",
|
||||
"assert-plus": "^1.0.0",
|
||||
@@ -2835,6 +2525,7 @@
|
||||
"ecc-jsbn": "~0.1.1",
|
||||
"getpass": "^0.1.1",
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.0.2",
|
||||
"tweetnacl": "~0.14.0"
|
||||
}
|
||||
},
|
||||
@@ -2869,11 +2560,6 @@
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"stringstream": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
||||
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
@@ -2996,48 +2682,33 @@
|
||||
"integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.28",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz",
|
||||
"integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=",
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.1"
|
||||
"os-tmpdir": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"touch": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
|
||||
"integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
|
||||
"tmp-promise": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.0.5.tgz",
|
||||
"integrity": "sha512-hOabTz9Tp49wCozFwuJe5ISrOqkECm6kzw66XTP23DuzNU7QS/KiZq5LC9Y7QSy8f1rPSLy4bKaViP0OwGI1cA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nopt": "~1.0.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"nopt": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
|
||||
"integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"abbrev": "1"
|
||||
}
|
||||
}
|
||||
"bluebird": "^3.5.0",
|
||||
"tmp": "0.0.33"
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
|
||||
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||
"requires": {
|
||||
"psl": "^1.1.24",
|
||||
"punycode": "^1.4.1"
|
||||
}
|
||||
},
|
||||
"traverse": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
|
||||
"integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
|
||||
"dev": true
|
||||
},
|
||||
"trim": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
|
||||
@@ -3075,8 +2746,7 @@
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"optional": true
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
@@ -3134,9 +2804,9 @@
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
|
||||
"integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ="
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
||||
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
|
||||
},
|
||||
"validate-npm-package-license": {
|
||||
"version": "3.0.4",
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "thedesk",
|
||||
"version": "18.1.0",
|
||||
"version": "18.2.1",
|
||||
"description": "TheDesk is a Mastodon client for PC.",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
@@ -88,7 +88,7 @@
|
||||
"category": "Network"
|
||||
},
|
||||
"mac": {
|
||||
"target": "dmg"
|
||||
"target": ["dmg","zip"]
|
||||
},
|
||||
"electronDownload": {
|
||||
"version": "4.0.6"
|
||||
@@ -97,8 +97,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "^4.0.6",
|
||||
"electron-packager": "^13.0.1",
|
||||
"electron-prebuilt": "^1.4.13",
|
||||
"electron-packager": "^13.1.1",
|
||||
"electron-rebuild": "^1.8.4"
|
||||
}
|
||||
}
|
||||
|
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
||||
.colorsel{ display:flex; }
|
||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||
.card .colorsel div.exc{width:40px;height:20px;}
|
||||
.first{
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
align-items:center
|
||||
}
|
||||
.first .hide-first{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<meta charset="utf-8">
|
||||
<!--
|
||||
@@ -39,24 +47,27 @@ body,html{overflow-y: scroll;}
|
||||
<script type="text/javascript" src="../../js/ui/tips.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/time.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br>
|
||||
<h5>List of accounts</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
<div class="hide-first">
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br>
|
||||
<h5>List of accounts</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<div>
|
||||
<h5>Add an account</h5><br>
|
||||
<div id="add">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="col s8">
|
||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||
<div id="ins-suggest"></div>
|
||||
Check if TheDesk is not working on Windows, you want to login Pleroma servers, you cannot login when it checked.<br>
|
||||
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br>
|
||||
<input type="checkbox" class="filled-in" id="linux" />
|
||||
<label for="linux">Code setup</label><br>
|
||||
<input type="checkbox" class="filled-in" id="misskey" />
|
||||
<label for="misskey">Login as Misskey</label><br>
|
||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<div class="col s4">
|
||||
<span style="font-family:Open Sans;">Supports</span>
|
||||
<div id="support" class="collection transparent"></div>
|
||||
</div>
|
||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
||||
<input type="text" id="misskey-key" placeholder="Code">
|
||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide-first">
|
||||
<h5>Main an account</h5>
|
||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">Select an account</span>
|
||||
<br>
|
||||
@@ -91,6 +104,7 @@ Toots:<span id="ins-toot"></span><br>
|
||||
Users:<span id="ins-user"></span>Users<br>
|
||||
Connection:<span id="ins-per"></span>%<br>
|
||||
Mastodon version:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
|
||||
</div>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/sha256.js"></script>
|
||||
|
@@ -32,14 +32,13 @@
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Usamin (18.1.1)";
|
||||
var ver="Usamin (18.2.1)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
|
||||
//var ver="beta";
|
||||
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
|
||||
var acct_id=0;
|
||||
var tlid=0;
|
||||
verck(ver);
|
||||
</script>
|
||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
||||
<div id="tl">
|
||||
@@ -53,7 +52,7 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
<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;">
|
||||
@@ -205,7 +204,6 @@ var tlid=0;
|
||||
<div id="emoji" class="hide">
|
||||
<span class="gray sml">
|
||||
<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>
|
||||
</span>
|
||||
<div id="emoji-list" class="" style="">
|
||||
@@ -259,12 +257,8 @@ var tlid=0;
|
||||
<div id="poll" class="hide">
|
||||
<select id="poll-sel" onchange="pollProviderCk()">
|
||||
<option value="nothing">Polls: Disabled</option>
|
||||
<option value="votedon">votedon.</option>
|
||||
<option value="mastodon-poll">Mastodon(2.8~)</option>
|
||||
</select>
|
||||
<div id="votedon" class="poll-provider hide">
|
||||
WIP
|
||||
</div>
|
||||
<div id="mastodon-poll" class="poll-provider hide">
|
||||
<input type="text" class="mastodon-choice" placeholder="Choice1">
|
||||
<input type="text" class="mastodon-choice" placeholder="Choice2">
|
||||
@@ -274,9 +268,9 @@ var tlid=0;
|
||||
<label for="poll-multiple">Multiple select</label><br>
|
||||
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
|
||||
<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">days
|
||||
<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="0">minutes
|
||||
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">day(s)
|
||||
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">hour(s)
|
||||
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="0">minute(s)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -360,7 +354,6 @@ var tlid=0;
|
||||
</div>
|
||||
<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="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('emb')">Embed</a>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
|
||||
@@ -372,7 +365,7 @@ var tlid=0;
|
||||
<div id="his-data-show">
|
||||
<div class="his-float" id="his-float-data">
|
||||
<div id="his-basic-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof" draggable="false">
|
||||
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
|
||||
<br>@
|
||||
<span id="his-acct"></span><br>
|
||||
@@ -525,6 +518,9 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="his-float" id="his-float-blocked">
|
||||
<div>You are blocked. Why?</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@@ -583,20 +579,24 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-2-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・<b>緊急の脆弱性修正</b>
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・tootsearchをひとつのカラムにしてエゴサが捗る<br>
|
||||
・イントロダクション(初回起動時)の挙動修正<br>
|
||||
・リンクプレビューを最大1行ずつに省略(タイトルと本文)<br>
|
||||
・ブロックされたときのプロフィールの動作(Mastodon 2.8~)<br>
|
||||
・(Misskey)MFM追加flipやjumpなど<br>
|
||||
・(Misskey)リストに対応<br>
|
||||
・(Misskey)カスタム絵文字に対応。カスタム絵文字によるリアクションに対応(対応インスタンスに限る)。<br>
|
||||
・<b>カスタム絵文字をゼロ幅スペースによる挿入に変更する機能</b><br>
|
||||
・一部機能の統廃合とバグの修正<br>
|
||||
・best-friends.chatやキュアスタ!、misskey.devをサポートインスタンスに追加
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -608,9 +608,9 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
Support on Enty
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
Osushi.love: give me sushi
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
Support on Pixiv FANBOX
|
||||
</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
|
||||
</a>
|
||||
@@ -688,11 +688,10 @@ var tlid=0;
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<input id="src" type="text" class="validate" style="width:60%">
|
||||
<label for="src" data-trans="src">Search</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>Search
|
||||
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left" style="margin:0">search</i>Search
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
@@ -706,7 +705,7 @@ var tlid=0;
|
||||
<div id="sort-box" class="hide menu-content">
|
||||
<ul id="sort"></ul>
|
||||
<div>
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>Sort
|
||||
</button>
|
||||
</div>
|
||||
@@ -759,9 +758,16 @@ var tlid=0;
|
||||
<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>
|
||||
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">days
|
||||
<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">minutes
|
||||
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">day(s)
|
||||
<input type="number" style="width:50px" id="hours_filter" placeholder="h" value="0">hour(s)
|
||||
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">minute(s)<br>
|
||||
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30minute(s)</a>/
|
||||
<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>
|
||||
</div>
|
||||
@@ -777,7 +783,9 @@ var tlid=0;
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
<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 id="something-wrong">
|
||||
<div>Internal error: please clear all data(at setting page) <b>All data will be deleted.</b></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -860,6 +868,7 @@ var tlid=0;
|
||||
<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/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/login.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/img.js"></script>
|
||||
@@ -873,7 +882,6 @@ var tlid=0;
|
||||
<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/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/bb-md.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Settings - TheDesk</title>
|
||||
<!--
|
||||
@@ -17,362 +18,424 @@
|
||||
<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">
|
||||
<meta charset="utf-8">
|
||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
||||
<style>
|
||||
input {
|
||||
max-height: 50px !important
|
||||
}
|
||||
|
||||
.pcr-result {
|
||||
height: 1rem !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body id="mainView" style="overflow-y:scroll">
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
|
||||
<h4>Preferences</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>System Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Languages</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
<a 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>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">Export</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">Import</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<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 v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<h5>Font</h5>
|
||||
Select your favorite font to 'Select'<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
|
||||
<br>
|
||||
<h5>Folder to save</h5>
|
||||
TheDesk uses this value when it try to save pictures or take screenshots.<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Change</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>Themes
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>Select theme</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>Edit and add custom themes</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="Add new">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">Add new</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>Name</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="Name...">
|
||||
<h5>About this theme</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="About this theme..."></textarea></div>
|
||||
<h5>Color scheme</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>Background of components
|
||||
<div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>Background color
|
||||
<div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>Text color
|
||||
<div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>Background of boosts
|
||||
<div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">Change</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
||||
Share this code with other TheDesk. Do not share this code with MiAS.
|
||||
<h4>Import of custom themes</h4>
|
||||
Get more themes on <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>Timeline Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>Posting Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<h4>Preferences</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>System Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Languages</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
<a 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>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||
style="width:100%; max-width:200px;">Export</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||
style="width:100%; max-width:200px;">Import</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||
class="pointer">Notification test</a><br></template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">Change</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</div>
|
||||
<h5>Font</h5>
|
||||
Select your favorite font to 'Select'<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
|
||||
<br>
|
||||
<h5>Folder to save</h5>
|
||||
TheDesk uses this value when it try to save pictures or take screenshots.<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Change</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>Themes
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>Select theme</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>Edit and add custom themes</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="Add new">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">Add new</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>Name</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="Name...">
|
||||
<h5>About this theme</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||
placeholder="About this theme..."></textarea></div>
|
||||
<h5>Color scheme</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>Background of components
|
||||
<div id="color-picker0-wrap">
|
||||
<div class="color-picker" id="color-picker0"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>Background color
|
||||
<div id="color-picker1-wrap">
|
||||
<div class="color-picker" id="color-picker1"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>Text color
|
||||
<div id="color-picker2-wrap">
|
||||
<div class="color-picker" id="color-picker2"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>Background of boosts
|
||||
<div id="color-picker3-wrap">
|
||||
<div class="color-picker" id="color-picker3"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">Change</button> <button
|
||||
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||
placeholder="JSON style" readonly><br>
|
||||
Share this code with other TheDesk. Do not share this code with MiAS.
|
||||
<h4>Import of custom themes</h4>
|
||||
Get more themes on <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
|
||||
placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>Timeline Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">Change</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Easy inserter</h5>
|
||||
You can insert any letters and emojis with only 3 keys<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>Posting Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">Change</button>
|
||||
</template><br>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">Fkeyboard</i>Keyboard shortcut Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Easy inserter</h5>
|
||||
You can insert any letters and emojis with only 3 keys<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Client Mute</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>Client Emphasis</h5>
|
||||
Click client name on toots to toggle mute and emphasis.
|
||||
<h5>Words Mute</h5>
|
||||
Enter to set<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||
<h5>Words Emphasis</h5>
|
||||
Enter to set<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||
<h5>Users Emphasis</h5>
|
||||
Set on users data modals.
|
||||
<span class="emphasized"> Use this color to emphasis </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>NowPlaying Provider(Windows)</h5>
|
||||
macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a> is required. And MusicBee requires CAD.<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
|
||||
<h5>Account Connection</h5>
|
||||
TheDesk save your data on thedesk.top server.<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">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="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i class="fa fa-spotify left"></i>Disconnect</a>
|
||||
<h5>Edit a template</h5>
|
||||
<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Client Mute</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>Client Emphasis</h5>
|
||||
Click client name on toots to toggle mute and emphasis.
|
||||
<h5>Words Mute</h5>
|
||||
Enter to set<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||
<h5>Words Emphasis</h5>
|
||||
Enter to set<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||
<h5>Users Emphasis</h5>
|
||||
Set on users data modals.
|
||||
<span class="emphasized"> Use this color to emphasis </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>NowPlaying Provider(Windows)</h5>
|
||||
macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a> is required. And MusicBee requires CAD.<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
|
||||
<h5>Account Connection</h5>
|
||||
TheDesk save your data on thedesk.top server.<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">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="spotifyDisconnect()" class="btn waves-effect nex disabled"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
|
||||
class="fa fa-spotify left"></i>Disconnect</a>
|
||||
<h5>Edit a template</h5>
|
||||
<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
{url}</textarea><br>
|
||||
Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify<br>
|
||||
macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}<br>
|
||||
Windows:{song}:Song name/{album}:Album name/{artist}:Artist name<br>
|
||||
<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>
|
||||
<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" />
|
||||
<label for="awk_yes">Yes</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">No</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Speed</h5>
|
||||
1-100(default:10)<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
||||
<h5>Pitch</h5>
|
||||
0-100(default:50)<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
||||
<h5>Volume</h5>
|
||||
0-100(default:100)<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
||||
<h5>Test</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">Play/Stop</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>Back</a>
|
||||
<br>
|
||||
<br>Keyboard shortcuts
|
||||
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
|
||||
<li>N:Open toot box</li>
|
||||
<li>X:Toggle toot box</li>
|
||||
<li>Ctrl+Enter:Post</li>
|
||||
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
|
||||
<li>Alt+Enter:Secondary Toot Button</li>
|
||||
<li>Ctrl+E:Make all notifications read</li>
|
||||
<li>Esc:Hide toot box</li>
|
||||
<li>F5:Super Reload</li>
|
||||
<li>Ctrl+Shift+C:Clear toot box</li>
|
||||
<li>Ctrl+Shift+S:Preferences</li>
|
||||
<li>Ctrl+Shift+M:Account Manager</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:Show profile of selecting</li>
|
||||
<li>←/→:Show next or previous image</li>
|
||||
<li>Mousewheel:Zoom a image</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>Reset(Danger)</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>About TheDesk</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>Website</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Enty)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>Help/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">Give me a sushi!</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">Check update</a><br>
|
||||
<a href="oss.html">OSS License</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
|
||||
<h5>Attach an Artwork of Spotify</h5>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||
<label for="awk_yes">Yes</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">No</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>Speed</h5>
|
||||
1-100(default:10)<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>Pitch</h5>
|
||||
0-100(default:50)<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>Volume</h5>
|
||||
0-100(default:100)<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>Test</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||
id="testplay">Play/Stop</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||
class="material-icons left">undo</i>Back</a>
|
||||
<br>
|
||||
<br>Keyboard shortcuts
|
||||
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
|
||||
<li>N:Open toot box</li>
|
||||
<li>X:Toggle toot box</li>
|
||||
<li>Ctrl+Enter:Post</li>
|
||||
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
|
||||
<li>Alt+Enter:Secondary Toot Button</li>
|
||||
<li>Ctrl+E:Make all notifications read</li>
|
||||
<li>Esc:Hide toot box</li>
|
||||
<li>F5:Super Reload</li>
|
||||
<li>Ctrl+Shift+C:Clear toot box</li>
|
||||
<li>Ctrl+Shift+S:Preferences</li>
|
||||
<li>Ctrl+Shift+M:Account Manager</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:Show profile of selecting</li>
|
||||
<li>←/→:Show next or previous image</li>
|
||||
<li>Mousewheel:Zoom a image</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||
onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||
class="material-icons left">delete</i>Reset(Danger)</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">info</i>About TheDesk</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">web</i>Website</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">trending_up</i>Support(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">list</i>Help/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@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>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
||||
class="pointer">Check update</a><br>
|
||||
<a href="oss.html">OSS License</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
|
||||
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
|
||||
Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
@@ -476,5 +476,16 @@ var postConstruction=[
|
||||
}
|
||||
]
|
||||
}
|
||||
},{
|
||||
id:"zero",
|
||||
storage:"emoji-zero-width",
|
||||
checkbox:true,
|
||||
setValue:"normal",
|
||||
setValue:"no",
|
||||
text:{
|
||||
head:"Zero-width space when inserting emojis",
|
||||
desc:"",
|
||||
checkbox:yesno
|
||||
}
|
||||
}
|
||||
]
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>Get latest TheDesk</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">Installer ver.</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
|
||||
<span class="linux">Snap ver may be on Snapcraft<br></span>
|
||||
<button class="waves-effect btn linux" onclick="update('linux')" style="margin-left:15px;">Start</button>
|
||||
<button class="waves-effect btn mac" onclick="update('mac')" style="margin-left:15px;">Start</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('install')" style="margin-left:15px;">Installer ver.</button>
|
||||
<button class="waves-effect btn windows hide" onclick="update('portable')" style="margin-left:15px;">Portable ver.</button>
|
||||
<button class="waves-effect btn linux hide" onclick="update('linux')" style="margin-left:15px;">Start</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">Start</button>
|
||||
<br>
|
||||
Some problems?<br>Please download on <a href="https://thedesk.top">Oficial HP</a>.
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
||||
.colorsel{ display:flex; }
|
||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||
.card .colorsel div.exc{width:40px;height:20px;}
|
||||
.first{
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
align-items:center
|
||||
}
|
||||
.first .hide-first{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<meta charset="utf-8">
|
||||
<!--
|
||||
@@ -39,24 +47,27 @@ body,html{overflow-y: scroll;}
|
||||
<script type="text/javascript" src="../../js/ui/tips.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/time.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br>
|
||||
<h5>アカウント一覧</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
<div class="hide-first">
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br>
|
||||
<h5>アカウント一覧</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<div>
|
||||
<h5>アカウントを追加</h5><br>
|
||||
<div id="add">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="col s8">
|
||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||
<div id="ins-suggest"></div>
|
||||
Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。ログインできない場合、チェックを外してください。<br>
|
||||
チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。<br>
|
||||
<input type="checkbox" class="filled-in" id="linux" />
|
||||
<label for="linux">コードセットアップ</label><br>
|
||||
<input type="checkbox" class="filled-in" id="misskey" />
|
||||
<label for="misskey">Misskeyとしてログイン</label><br>
|
||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<div class="col s4">
|
||||
<span style="font-family:Open Sans;">Supports</span>
|
||||
<div id="support" class="collection transparent"></div>
|
||||
</div>
|
||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
||||
<input type="text" id="misskey-key" placeholder="コードを入力">
|
||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide-first">
|
||||
<h5>メインアカウント</h5>
|
||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">アカウントを選択</span>
|
||||
<br>
|
||||
@@ -91,6 +104,7 @@ Administered by:<a id="ins-admin"></a><br>
|
||||
ユーザー数:<span id="ins-user"></span>ユーザー数<br>
|
||||
コネクション:<span id="ins-per"></span>%<br>
|
||||
Mastodonバージョン:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
|
||||
</div>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/sha256.js"></script>
|
||||
|
@@ -32,14 +32,13 @@
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Usamin (18.1.1)";
|
||||
var ver="Usamin (18.2.1)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
|
||||
//var ver="beta";
|
||||
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
|
||||
var acct_id=0;
|
||||
var tlid=0;
|
||||
verck(ver);
|
||||
</script>
|
||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
||||
<div id="tl">
|
||||
@@ -53,7 +52,7 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
<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;">
|
||||
@@ -205,7 +204,6 @@ var tlid=0;
|
||||
<div id="emoji" class="hide">
|
||||
<span class="gray sml">サーバーによって実装が異なります。
|
||||
<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>
|
||||
</span>
|
||||
<div id="emoji-list" class="" style="">
|
||||
@@ -259,12 +257,8 @@ var tlid=0;
|
||||
<div id="poll" class="hide">
|
||||
<select id="poll-sel" onchange="pollProviderCk()">
|
||||
<option value="nothing">アンケートを使用しない</option>
|
||||
<option value="votedon">votedon.</option>
|
||||
<option value="mastodon-poll">Mastodon(2.8~)</option>
|
||||
</select>
|
||||
<div id="votedon" class="poll-provider hide">
|
||||
WIP
|
||||
</div>
|
||||
<div id="mastodon-poll" class="poll-provider hide">
|
||||
<input type="text" class="mastodon-choice" placeholder="選択肢1">
|
||||
<input type="text" class="mastodon-choice" placeholder="選択肢2">
|
||||
@@ -360,7 +354,6 @@ var tlid=0;
|
||||
</div>
|
||||
<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="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('emb')">埋め込む</a>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
|
||||
@@ -372,7 +365,7 @@ var tlid=0;
|
||||
<div id="his-data-show">
|
||||
<div class="his-float" id="his-float-data">
|
||||
<div id="his-basic-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof" draggable="false">
|
||||
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
|
||||
<br>@
|
||||
<span id="his-acct"></span><br>
|
||||
@@ -525,6 +518,9 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="his-float" id="his-float-blocked">
|
||||
<div>ブロックされています。なぜでしょう?</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@@ -583,20 +579,24 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-2-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・<b>緊急の脆弱性修正</b>
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・tootsearchをひとつのカラムにしてエゴサが捗る<br>
|
||||
・イントロダクション(初回起動時)の挙動修正<br>
|
||||
・リンクプレビューを最大1行ずつに省略(タイトルと本文)<br>
|
||||
・ブロックされたときのプロフィールの動作(Mastodon 2.8~)<br>
|
||||
・(Misskey)MFM追加flipやjumpなど<br>
|
||||
・(Misskey)リストに対応<br>
|
||||
・(Misskey)カスタム絵文字に対応。カスタム絵文字によるリアクションに対応(対応インスタンスに限る)。<br>
|
||||
・<b>カスタム絵文字をゼロ幅スペースによる挿入に変更する機能</b><br>
|
||||
・一部機能の統廃合とバグの修正<br>
|
||||
・best-friends.chatやキュアスタ!、misskey.devをサポートインスタンスに追加
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -608,9 +608,9 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
Entyで支援
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
Osushi.loveで寿司を贈る
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
Pixiv FANBOXで支援
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
|
||||
Amazonほしいものリスト
|
||||
</a>
|
||||
@@ -688,11 +688,10 @@ var tlid=0;
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<input id="src" type="text" class="validate" style="width:60%">
|
||||
<label for="src" data-trans="src">検索</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>検索
|
||||
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left" style="margin:0">search</i>検索
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
@@ -706,7 +705,7 @@ var tlid=0;
|
||||
<div id="sort-box" class="hide menu-content">
|
||||
<ul id="sort"></ul>
|
||||
<div>
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>並べ替え設定
|
||||
</button>
|
||||
</div>
|
||||
@@ -758,10 +757,17 @@ var tlid=0;
|
||||
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
|
||||
<label for="except_filter">除外</label><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="hours_filter" placeholder="h" value="0">時間
|
||||
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">分
|
||||
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">分<br>
|
||||
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30分</a>/
|
||||
<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>
|
||||
</div>
|
||||
@@ -777,7 +783,9 @@ var tlid=0;
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
<h3>Welcome to TheDesk</h3><br><a href="acct.html">アカウントを追加</a>するか下の<i class="material-icons">apps</i>ボタンよりカラムを追加してください。
|
||||
<div id="something-wrong">
|
||||
<div>内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -860,6 +868,7 @@ var tlid=0;
|
||||
<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/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/login.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/img.js"></script>
|
||||
@@ -873,7 +882,6 @@ var tlid=0;
|
||||
<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/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/bb-md.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<!doctype html>
|
||||
<html lang="ja">
|
||||
|
||||
<head>
|
||||
<title>Settings - TheDesk</title>
|
||||
<!--
|
||||
@@ -17,362 +18,424 @@
|
||||
<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">
|
||||
<meta charset="utf-8">
|
||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
||||
<style>
|
||||
input {
|
||||
max-height: 50px !important
|
||||
}
|
||||
|
||||
.pcr-result {
|
||||
height: 1rem !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body id="mainView" style="overflow-y:scroll">
|
||||
<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.ja.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
<script type="text/javascript" src="../../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.ja.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
|
||||
<h4>設定</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>環境設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>言語</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
<a 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>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">エクスポート</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">インポート</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">通知テスト</a><br></template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<h5>フォント</h5>
|
||||
「選択」を押してフォントを選んでください。<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">選択</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
|
||||
<br>
|
||||
<h5>デフォルトの保存先</h5>
|
||||
画像ダウンロードやスクリーンショットに影響します。<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">変更</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>テーマの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>テーマの選択</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>カスタムテーマの作成・編集</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="新規作成">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">新規作成</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>名前</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="名前...">
|
||||
<h5>説明</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="説明..."></textarea></div>
|
||||
<h5>色の系統</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>補助要素に使われる背景色
|
||||
<div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>全体の背景色など
|
||||
<div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>テキストの色
|
||||
<div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>ブーストの背景色など
|
||||
<div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">変更</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">削除</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
||||
このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href="https://thedesk.top/mias.html" target="_blank">テーマ互換性</a>
|
||||
<h4>カスタムテーマのインポート</h4>
|
||||
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">インポート</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>タイムラインの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>投稿設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<h4>設定</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>環境設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>言語</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
<a 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>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||
style="width:100%; max-width:200px;">エクスポート</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||
style="width:100%; max-width:200px;">インポート</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||
class="pointer">通知テスト</a><br></template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">変更</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</div>
|
||||
<h5>フォント</h5>
|
||||
「選択」を押してフォントを選んでください。<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">選択</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
|
||||
<br>
|
||||
<h5>デフォルトの保存先</h5>
|
||||
画像ダウンロードやスクリーンショットに影響します。<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">変更</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>テーマの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>テーマの選択</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>カスタムテーマの作成・編集</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="新規作成">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">新規作成</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>名前</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="名前...">
|
||||
<h5>説明</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||
placeholder="説明..."></textarea></div>
|
||||
<h5>色の系統</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>補助要素に使われる背景色
|
||||
<div id="color-picker0-wrap">
|
||||
<div class="color-picker" id="color-picker0"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>全体の背景色など
|
||||
<div id="color-picker1-wrap">
|
||||
<div class="color-picker" id="color-picker1"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>テキストの色
|
||||
<div id="color-picker2-wrap">
|
||||
<div class="color-picker" id="color-picker2"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>ブーストの背景色など
|
||||
<div id="color-picker3-wrap">
|
||||
<div class="color-picker" id="color-picker3"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">変更</button> <button
|
||||
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">削除</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||
placeholder="JSON style" readonly><br>
|
||||
このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href="https://thedesk.top/mias.html" target="_blank">テーマ互換性</a>
|
||||
<h4>カスタムテーマのインポート</h4>
|
||||
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
|
||||
placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">インポート</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>タイムラインの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">変更</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">keyboard</i>キーボードショートカットの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>簡単文字入力</h5>
|
||||
絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>投稿設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">変更</button>
|
||||
</template><br>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">Fkeyboard</i>キーボードショートカットの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>簡単文字入力</h5>
|
||||
絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">bookmark</i>ミュート・強調の設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>クライアントミュート</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>クライアント強調</h5>
|
||||
各トゥートのクライアントをクリックすると設定できます。
|
||||
<h5>ワードミュート</h5>
|
||||
Enterで確定<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||
<h5>ワード強調</h5>
|
||||
Enterで確定<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||
<h5>ユーザー強調</h5>
|
||||
各ユーザーのデータ表示画面で設定できます。
|
||||
<span class="emphasized"> 強調色(テーマによって異なります。) </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>SpotifyとNowPlayingの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>NowPlayingのソース(Windows)</h5>
|
||||
macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
<i class="material-icons" style="font-size:24px;">music_note</i>ボタンから簡単にNowPlayingができます。<br>
|
||||
<h5>アカウントの連携</h5>
|
||||
APIの性質上,thedesk.topへアクセスします。<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">設定</button></div>
|
||||
<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="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i class="fa fa-spotify left"></i>切断</a>
|
||||
<h5>テンプレートの編集</h5>
|
||||
以下を編集してテンプレートを変更できます。<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>クライアントミュート</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>クライアント強調</h5>
|
||||
各トゥートのクライアントをクリックすると設定できます。
|
||||
<h5>ワードミュート</h5>
|
||||
Enterで確定<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||
<h5>ワード強調</h5>
|
||||
Enterで確定<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||
<h5>ユーザー強調</h5>
|
||||
各ユーザーのデータ表示画面で設定できます。
|
||||
<span class="emphasized"> 強調色(テーマによって異なります。) </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>SpotifyとNowPlayingの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>NowPlayingのソース(Windows)</h5>
|
||||
macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
<i class="material-icons" style="font-size:24px;">music_note</i>ボタンから簡単にNowPlayingができます。<br>
|
||||
<h5>アカウントの連携</h5>
|
||||
APIの性質上,thedesk.topへアクセスします。<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">設定</button></div>
|
||||
<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="spotifyDisconnect()" class="btn waves-effect nex disabled"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
|
||||
class="fa fa-spotify left"></i>切断</a>
|
||||
<h5>テンプレートの編集</h5>
|
||||
以下を編集してテンプレートを変更できます。<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
{url}</textarea><br>
|
||||
Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL<br>
|
||||
macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}<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>
|
||||
<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" />
|
||||
<label for="awk_yes">はい</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">いいえ</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>読み上げの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>読み上げの速さ</h5>
|
||||
1-100まで、デフォルトは10。<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
||||
<h5>読み上げの高さ</h5>
|
||||
0-100まで、デフォルトは50。(大きくなるほど高い)<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
||||
<h5>読み上げの音量</h5>
|
||||
0-100まで、デフォルトは100。<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
||||
<h5>テスト</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">再生/停止</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a>
|
||||
<br>
|
||||
<br>キーボードショートカット一覧
|
||||
<li>Ctrl+1-9:1番目~9番目のTLにスクロール</li>
|
||||
<li>N:投稿パネルを開く</li>
|
||||
<li>X:投稿パネルを開閉</li>
|
||||
<li>Ctrl+Enter:投稿</li>
|
||||
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
|
||||
<li>Alt+Enter:セカンダリートゥートボタン</li>
|
||||
<li>Ctrl+E:全ての通知を既読にする</li>
|
||||
<li>Esc:投稿パネルを消す</li>
|
||||
<li>F5:スーパーリロード</li>
|
||||
<li>Ctrl+Shift+C:入力内容を消す</li>
|
||||
<li>Ctrl+Shift+S:設定</li>
|
||||
<li>Ctrl+Shift+M:アカウントマネージャ</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:現在選択中のプロフィール</li>
|
||||
<li>←/→:イメージビューワー起動時に画像切り替え</li>
|
||||
<li>マウスホイール:イメージビューワー時に拡大縮小</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>初期化</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>このソフトについて</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>公式HP</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Enty)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>ヘルプ/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">寿司を投げる</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">アップデートを確認</a><br>
|
||||
<a href="oss.html">OSS License(オープンソースライセンス)</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button>
|
||||
<h5>アルバムアートワークを添付する(Spotify/Windows)</h5>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||
<label for="awk_yes">はい</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">いいえ</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>読み上げの設定
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>読み上げの速さ</h5>
|
||||
1-100まで、デフォルトは10。<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>読み上げの高さ</h5>
|
||||
0-100まで、デフォルトは50。(大きくなるほど高い)<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>読み上げの音量</h5>
|
||||
0-100まで、デフォルトは100。<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>テスト</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||
id="testplay">再生/停止</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||
class="material-icons left">undo</i>戻る</a>
|
||||
<br>
|
||||
<br>キーボードショートカット一覧
|
||||
<li>Ctrl+1-9:1番目~9番目のTLにスクロール</li>
|
||||
<li>N:投稿パネルを開く</li>
|
||||
<li>X:投稿パネルを開閉</li>
|
||||
<li>Ctrl+Enter:投稿</li>
|
||||
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
|
||||
<li>Alt+Enter:セカンダリートゥートボタン</li>
|
||||
<li>Ctrl+E:全ての通知を既読にする</li>
|
||||
<li>Esc:投稿パネルを消す</li>
|
||||
<li>F5:スーパーリロード</li>
|
||||
<li>Ctrl+Shift+C:入力内容を消す</li>
|
||||
<li>Ctrl+Shift+S:設定</li>
|
||||
<li>Ctrl+Shift+M:アカウントマネージャ</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:現在選択中のプロフィール</li>
|
||||
<li>←/→:イメージビューワー起動時に画像切り替え</li>
|
||||
<li>マウスホイール:イメージビューワー時に拡大縮小</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||
onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||
class="material-icons left">delete</i>初期化</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">info</i>このソフトについて</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">web</i>公式HP</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">trending_up</i>支援(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">list</i>ヘルプ/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@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>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
||||
class="pointer">アップデートを確認</a><br>
|
||||
<a href="oss.html">OSS License(オープンソースライセンス)</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
|
||||
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
|
||||
Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
@@ -476,5 +476,16 @@ var postConstruction=[
|
||||
}
|
||||
]
|
||||
}
|
||||
},{
|
||||
id:"zero",
|
||||
storage:"emoji-zero-width",
|
||||
checkbox:true,
|
||||
setValue:"normal",
|
||||
setValue:"no",
|
||||
text:{
|
||||
head:"絵文字にゼロ幅スペースを使う",
|
||||
desc:"",
|
||||
checkbox:yesno
|
||||
}
|
||||
}
|
||||
]
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>アップデートがあります</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">インストーラー版(推奨)</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">ポータブル版</button>
|
||||
<span class="linux">snap版はSnapcraft等よりDLしてください。<br></span>
|
||||
<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>
|
||||
<button class="waves-effect btn windows hide" 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 linux hide" onclick="update('linux')" style="margin-left:15px;">開始</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">開始</button>
|
||||
<br>
|
||||
問題が発生しますか?<br><a href="https://thedesk.top">公式HP</a>からダウンロードをお試しください。
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
||||
.colorsel{ display:flex; }
|
||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||
.card .colorsel div.exc{width:40px;height:20px;}
|
||||
.first{
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
align-items:center
|
||||
}
|
||||
.first .hide-first{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<meta charset="utf-8">
|
||||
{{comment-start}}
|
||||
@@ -39,14 +47,17 @@ body,html{overflow-y: scroll;}
|
||||
<script type="text/javascript" src="../../js/ui/tips.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/time.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">{{back}}</a><br>
|
||||
<h5>{{list}}</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
<div class="hide-first">
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">{{back}}</a><br>
|
||||
<h5>{{list}}</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<div>
|
||||
<h5>{{add}}</h5><br>
|
||||
<div id="add">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="col s8">
|
||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||
<div id="ins-suggest"></div>
|
||||
{{codesetupwarn}}<br>
|
||||
@@ -56,7 +67,7 @@ body,html{overflow-y: scroll;}
|
||||
<label for="misskey">{{thisismisskey}}</label><br>
|
||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<div class="col s4">
|
||||
<span style="font-family:Open Sans;">Supports</span>
|
||||
<div id="support" class="collection transparent"></div>
|
||||
</div>
|
||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
||||
<input type="text" id="misskey-key" placeholder="{{codepaste}}">
|
||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide-first">
|
||||
<h5>{{mainacct}}</h5>
|
||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">{{selacct}}</span>
|
||||
<br>
|
||||
@@ -91,6 +104,7 @@ Administered by:<a id="ins-admin"></a><br>
|
||||
{{users}}:<span id="ins-user"></span>{{users}}<br>
|
||||
{{safety}}:<span id="ins-per"></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/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/sha256.js"></script>
|
||||
|
@@ -39,7 +39,6 @@ var ver="{{versionLetter}}";
|
||||
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
|
||||
var acct_id=0;
|
||||
var tlid=0;
|
||||
verck(ver);
|
||||
</script>
|
||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
||||
<div id="tl">
|
||||
@@ -53,7 +52,7 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
<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;">
|
||||
@@ -205,7 +204,6 @@ var tlid=0;
|
||||
<div id="emoji" class="hide">
|
||||
<span class="gray sml">{{emojiWarn}}
|
||||
<a onclick="emojiGet('true')" class="pointer">{{refreshEmoji}}</a>
|
||||
<i class="material-icons waves-effect" onclick="emojiToggle()" title="{{closeThisBox}}" data-trans-title="post_box_close">cancel</i>
|
||||
<br>
|
||||
</span>
|
||||
<div id="emoji-list" class="" style="">
|
||||
@@ -259,12 +257,8 @@ var tlid=0;
|
||||
<div id="poll" class="hide">
|
||||
<select id="poll-sel" onchange="pollProviderCk()">
|
||||
<option value="nothing">{{pollDdisabled}}</option>
|
||||
<option value="votedon">votedon.</option>
|
||||
<option value="mastodon-poll">Mastodon(2.8~)</option>
|
||||
</select>
|
||||
<div id="votedon" class="poll-provider hide">
|
||||
WIP
|
||||
</div>
|
||||
<div id="mastodon-poll" class="poll-provider hide">
|
||||
<input type="text" class="mastodon-choice" placeholder="{{choice}}1">
|
||||
<input type="text" class="mastodon-choice" placeholder="{{choice}}2">
|
||||
@@ -360,7 +354,6 @@ var tlid=0;
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">{{openBrowser}}</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="shot()">{{screenshot}}</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">{{copyURL}}</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>
|
||||
@@ -372,7 +365,7 @@ var tlid=0;
|
||||
<div id="his-data-show">
|
||||
<div class="his-float" id="his-float-data">
|
||||
<div id="his-basic-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof" draggable="false">
|
||||
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
|
||||
<br>@
|
||||
<span id="his-acct"></span><br>
|
||||
@@ -525,6 +518,9 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="his-float" id="his-float-blocked">
|
||||
<div>{{blocked}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@@ -583,20 +579,24 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-2-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・<b>緊急の脆弱性修正</b>
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・tootsearchをひとつのカラムにしてエゴサが捗る<br>
|
||||
・イントロダクション(初回起動時)の挙動修正<br>
|
||||
・リンクプレビューを最大1行ずつに省略(タイトルと本文)<br>
|
||||
・ブロックされたときのプロフィールの動作(Mastodon 2.8~)<br>
|
||||
・(Misskey)MFM追加flipやjumpなど<br>
|
||||
・(Misskey)リストに対応<br>
|
||||
・(Misskey)カスタム絵文字に対応。カスタム絵文字によるリアクションに対応(対応インスタンスに限る)。<br>
|
||||
・<b>カスタム絵文字をゼロ幅スペースによる挿入に変更する機能</b><br>
|
||||
・一部機能の統廃合とバグの修正<br>
|
||||
・best-friends.chatやキュアスタ!、misskey.devをサポートインスタンスに追加
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -608,9 +608,9 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
{{EntySupport}}
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
{{sendSushi}}
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
{{PixivSupport}}
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
|
||||
{{AWLSupport}}
|
||||
</a>
|
||||
@@ -688,11 +688,10 @@ var tlid=0;
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<input id="src" type="text" class="validate" style="width:60%">
|
||||
<label for="src" data-trans="src">{{search}}</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>{{search}}
|
||||
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left" style="margin:0">search</i>{{search}}
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
@@ -706,7 +705,7 @@ var tlid=0;
|
||||
<div id="sort-box" class="hide menu-content">
|
||||
<ul id="sort"></ul>
|
||||
<div>
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>{{sortSet}}
|
||||
</button>
|
||||
</div>
|
||||
@@ -761,7 +760,14 @@ var tlid=0;
|
||||
{{avalableBefore}}<span class="sml">{{warnAvBefore}}<b>{{warnAvBefore2}}</b></span><br><br>
|
||||
<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">{{hours}}
|
||||
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">{{mins}}
|
||||
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">{{mins}}<br>
|
||||
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30{{mins}}</a>/
|
||||
<a onclick="filterTime(0,1,0)" class="pointer">1{{hours}}</a>/
|
||||
<a onclick="filterTime(0,6,0)" class="pointer">6{{hours}}</a>/
|
||||
<a onclick="filterTime(0,12,0)" class="pointer">12{{hours}}</a>/
|
||||
<a onclick="filterTime(1,0,0)" class="pointer">1{{days}}</a>/
|
||||
<a onclick="filterTime(7,0,0)" class="pointer">7{{days}}</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">{{add}}</button><br>
|
||||
<span class="sml">{{warnOnIntegratedTL}}</span>
|
||||
</div>
|
||||
@@ -777,7 +783,9 @@ var tlid=0;
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
{{helloTheDesk}}
|
||||
<div id="something-wrong">
|
||||
<div>{{helloTheDesk}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -860,6 +868,7 @@ var tlid=0;
|
||||
<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/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/login.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/img.js"></script>
|
||||
@@ -873,7 +882,6 @@ var tlid=0;
|
||||
<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/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/bb-md.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
"list":"List of accounts",
|
||||
"back":"Back",
|
||||
"add":"Add an account",
|
||||
"codesetupwarn":"Check if TheDesk is not working on Windows, you want to login Pleroma servers, you cannot login when it checked.",
|
||||
"codesetupwarn":"Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)",
|
||||
"codesetup":"Code setup",
|
||||
"mainacct":"Main an account",
|
||||
"selacct":"Select an account",
|
||||
@@ -17,5 +17,6 @@
|
||||
"ver":"Mastodon version",
|
||||
"ko":"",
|
||||
"thisismisskey":"Login as Misskey",
|
||||
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey."
|
||||
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata":"No data"
|
||||
}
|
@@ -2,7 +2,7 @@
|
||||
"list":"アカウント一覧",
|
||||
"back":"戻る",
|
||||
"add":"アカウントを追加",
|
||||
"codesetupwarn":"Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。ログインできない場合、チェックを外してください。",
|
||||
"codesetupwarn":"チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。",
|
||||
"codesetup":"コードセットアップ",
|
||||
"mainacct":"メインアカウント",
|
||||
"selacct":"アカウントを選択",
|
||||
@@ -17,5 +17,6 @@
|
||||
"ver":"Mastodonバージョン",
|
||||
"ko":"個",
|
||||
"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":"アカウントがありません"
|
||||
}
|
@@ -98,6 +98,7 @@
|
||||
"note":"Note",
|
||||
"editProfImg":"Change avataor",
|
||||
"editHeader":"Change header image",
|
||||
"blocked":"You are blocked. Why?",
|
||||
"likeUserDes":"Get people resembling this user.",
|
||||
"get":"Get",
|
||||
"historyBack":"Back",
|
||||
@@ -105,6 +106,7 @@
|
||||
"supportme":"Support TheDesk!",
|
||||
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
|
||||
"EntySupport":"Support on Enty",
|
||||
"PixivSupport":"Support on Pixiv FANBOX",
|
||||
"AWLSupport":"Amazon Wish List",
|
||||
"SendAmazonGift1":"Give me Amazon Gift Card:",
|
||||
"SendAmazonGift2":"",
|
||||
@@ -136,12 +138,13 @@
|
||||
"avalableBefore":"Expire after",
|
||||
"warnAvBefore":"Unset or \"0\" means \"Never\"",
|
||||
"warnAvBefore2":"This value may contain some error",
|
||||
"days":"days",
|
||||
"hours":"hours",
|
||||
"mins":"minutes",
|
||||
"secs":"seconds",
|
||||
"unlimited":"Never",
|
||||
"days":"day(s)",
|
||||
"hours":"hour(s)",
|
||||
"mins":"minute(s)",
|
||||
"secs":"second(s)",
|
||||
"warnOnIntegratedTL":"Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
|
||||
"helloTheDesk":"<h3>Welcome to TheDesk</h3><br><a href=\"acct.html\">Add an account</a> or click <i class=\"material-icons\">apps</i> to add a column.",
|
||||
"helloTheDesk":"Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
|
||||
"addColumn":"Add a column",
|
||||
"sortColumns":"Sort",
|
||||
"acctMan":"Account Manager",
|
||||
|
@@ -98,6 +98,7 @@
|
||||
"note":"自己紹介",
|
||||
"editProfImg":"アバターを変更",
|
||||
"editHeader":"ヘッダーを変更",
|
||||
"blocked":"ブロックされています。なぜでしょう?",
|
||||
"likeUserDes":"似ているユーザーを取得できます。",
|
||||
"get":"取得",
|
||||
"historyBack":"一つ前のユーザーデータ",
|
||||
@@ -105,6 +106,7 @@
|
||||
"supportme":"ご支援ください。",
|
||||
"TheDeskDes":"TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。",
|
||||
"EntySupport":"Entyで支援",
|
||||
"PixivSupport":"Pixiv FANBOXで支援",
|
||||
"AWLSupport":"Amazonほしいものリスト",
|
||||
"SendAmazonGift1":"",
|
||||
"SendAmazonGift2":"にAmazonギフトカードを送る",
|
||||
@@ -134,14 +136,15 @@
|
||||
"except":"除外",
|
||||
"exceptWorn":"「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。",
|
||||
"avalableBefore":"有効期限(あと)",
|
||||
"warnAvBefore":"未指定(または0分)で「無制限」になります。",
|
||||
"warnAvBefore":"未指定(または0分)で「無期限」になります。",
|
||||
"warnAvBefore2":"仕様上数値の正確性を保証できません。",
|
||||
"unlimited":"無期限",
|
||||
"days":"日",
|
||||
"hours":"時間",
|
||||
"mins":"分",
|
||||
"secs":"秒",
|
||||
"warnOnIntegratedTL":"Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。",
|
||||
"helloTheDesk":"<h3>Welcome to TheDesk</h3><br><a href=\"acct.html\">アカウントを追加</a>するか下の<i class=\"material-icons\">apps</i>ボタンよりカラムを追加してください。",
|
||||
"helloTheDesk":"内部エラーです。再読込して治らない場合は初期化(全データ削除)をしてください。(事前に設定をエクスポートしておくことをおすすめします。)",
|
||||
"addColumn":"カラム追加",
|
||||
"sortColumns":"カラム一覧/並べ替え",
|
||||
"acctMan":"アカウントマネージャー",
|
||||
|
@@ -114,6 +114,7 @@
|
||||
"secwarn":"Toot with other visibility setting",
|
||||
"nothing":"Hidden",
|
||||
"localonly":"Local Only",
|
||||
"zeroWidthEmoji":"Zero-width space when inserting emojis",
|
||||
"keysc":"Keyboard shortcut Preferences",
|
||||
"iks":"Easy inserter",
|
||||
"okswarn":"You can insert any letters and emojis with only 3 keys",
|
||||
|
@@ -114,6 +114,7 @@
|
||||
"secwarn":"公開範囲の変更とトゥートを一発でできます。",
|
||||
"nothing":"表示しない",
|
||||
"localonly":"ローカル限定",
|
||||
"zeroWidthEmoji":"絵文字にゼロ幅スペースを使う",
|
||||
"keysc":"キーボードショートカットの設定",
|
||||
"iks":"簡単文字入力",
|
||||
"okswarn":"絵文字やタグ、>BTなどを登録しておくとすぐに入力できます。",
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<!doctype html>
|
||||
<html lang="@@lang@@">
|
||||
|
||||
<head>
|
||||
<title>Settings - TheDesk</title>
|
||||
@@comment-start@@
|
||||
@@ -17,362 +18,424 @@
|
||||
<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">
|
||||
<meta charset="utf-8">
|
||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
||||
<style>
|
||||
input {
|
||||
max-height: 50px !important
|
||||
}
|
||||
|
||||
.pcr-result {
|
||||
height: 1rem !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body id="mainView" style="overflow-y:scroll">
|
||||
<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.@@lang@@.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
<script type="text/javascript" src="../../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.@@lang@@.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
|
||||
<h4>@@setting@@</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>@@env@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@setlang@@</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
@@langlist@@
|
||||
<h5>@@backup@@</h5>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">@@export@@</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">@@import@@</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
<template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">@@nntest@@</a><br></template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<h5>@@font@@</h5>
|
||||
@@fontwarn@@<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">@@select@@</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">@@set@@</button>
|
||||
<br>
|
||||
<h5>@@savefolder@@</h5>
|
||||
@@savefolderwarn@@<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">@@change@@</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>@@theme@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>@@themeSel@@</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>@@customtheme@@</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="@@add_new@@">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">@@add_new@@</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>@@name@@</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="@@name@@...">
|
||||
<h5>@@desc@@</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="@@desc@@..."></textarea></div>
|
||||
<h5>@@customthemeDirection@@</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>@@secondarycolor@@
|
||||
<div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>@@primary@@
|
||||
<div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>@@text@@
|
||||
<div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>@@accent@@
|
||||
<div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">@@change@@</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
||||
@@customShare@@
|
||||
<h4>@@customImport@@</h4>
|
||||
@@cImpWarn@@<br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">@@import@@</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>@@timeline@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>@@post@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<h4>@@setting@@</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>@@env@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@setlang@@</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
@@langlist@@
|
||||
<h5>@@backup@@</h5>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||
style="width:100%; max-width:200px;">@@export@@</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||
style="width:100%; max-width:200px;">@@import@@</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||
class="pointer">@@nntest@@</a><br></template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">@@change@@</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</div>
|
||||
<h5>@@font@@</h5>
|
||||
@@fontwarn@@<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">@@select@@</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">@@set@@</button>
|
||||
<br>
|
||||
<h5>@@savefolder@@</h5>
|
||||
@@savefolderwarn@@<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">@@change@@</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>@@theme@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>@@themeSel@@</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>@@customtheme@@</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="@@add_new@@">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">@@add_new@@</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>@@name@@</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="@@name@@...">
|
||||
<h5>@@desc@@</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||
placeholder="@@desc@@..."></textarea></div>
|
||||
<h5>@@customthemeDirection@@</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>@@secondarycolor@@
|
||||
<div id="color-picker0-wrap">
|
||||
<div class="color-picker" id="color-picker0"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>@@primary@@
|
||||
<div id="color-picker1-wrap">
|
||||
<div class="color-picker" id="color-picker1"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>@@text@@
|
||||
<div id="color-picker2-wrap">
|
||||
<div class="color-picker" id="color-picker2"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>@@accent@@
|
||||
<div id="color-picker3-wrap">
|
||||
<div class="color-picker" id="color-picker3"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">@@change@@</button> <button
|
||||
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||
placeholder="JSON style" readonly><br>
|
||||
@@customShare@@
|
||||
<h4>@@customImport@@</h4>
|
||||
@@cImpWarn@@<br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
|
||||
placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">@@import@@</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>@@timeline@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">@@change@@</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">keyboard</i>@@keysc@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@iks@@</h5>
|
||||
@@okswarn@@<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>@@post@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">@@change@@</button>
|
||||
</template><br>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">Fkeyboard</i>@@keysc@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@iks@@</h5>
|
||||
@@okswarn@@<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">bookmark</i>@@muteemp@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@climute@@</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>@@cliemp@@</h5>
|
||||
@@cliwarn@@
|
||||
<h5>@@wordmute@@</h5>
|
||||
@@enter@@<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<h5>@@wordemp@@</h5>
|
||||
@@enter@@<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<h5>@@useremp@@</h5>
|
||||
@@useerempwarn@@
|
||||
<span class="emphasized"> @@empcolorwarn@@ </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>@@spotify@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@npProvider@@</h5>
|
||||
@@npPeoviderWarn@@<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
@@spotifynote1@@<i class="material-icons" style="font-size:24px;">music_note</i>@@spotifynote2@@<br>
|
||||
<h5>@@link@@</h5>
|
||||
@@linkwarn@@<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</button></div>
|
||||
<a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>@@connect@@</a>
|
||||
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i class="fa fa-spotify left"></i>@@disconnect@@</a>
|
||||
<h5>@@templeteedit@@</h5>
|
||||
@@templeteeditwarn@@<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@climute@@</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>@@cliemp@@</h5>
|
||||
@@cliwarn@@
|
||||
<h5>@@wordmute@@</h5>
|
||||
@@enter@@<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<h5>@@wordemp@@</h5>
|
||||
@@enter@@<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<h5>@@useremp@@</h5>
|
||||
@@useerempwarn@@
|
||||
<span class="emphasized"> @@empcolorwarn@@ </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>@@spotify@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@npProvider@@</h5>
|
||||
@@npPeoviderWarn@@<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
@@spotifynote1@@<i class="material-icons" style="font-size:24px;">music_note</i>@@spotifynote2@@<br>
|
||||
<h5>@@link@@</h5>
|
||||
@@linkwarn@@<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</button></div>
|
||||
<a onclick="spotifyConnect()" class="btn waves-effect nex"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
|
||||
class="fa fa-spotify left"></i>@@connect@@</a>
|
||||
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
|
||||
class="fa fa-spotify left"></i>@@disconnect@@</a>
|
||||
<h5>@@templeteedit@@</h5>
|
||||
@@templeteeditwarn@@<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
{url}</textarea><br>
|
||||
@@templete1@@<br>
|
||||
@@templete2@@<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>
|
||||
<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" />
|
||||
<label for="awk_yes">@@yes@@</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">@@no@@</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>@@tts@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@speed@@</h5>
|
||||
@@speedwarn@@<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
||||
<h5>@@pitch@@</h5>
|
||||
@@pitchwarn@@<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
||||
<h5>@@vol@@</h5>
|
||||
@@volwarn@@<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
||||
<h5>@@test@@</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="@@sample@@">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">@@playstop@@</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>@@back@@</a>
|
||||
<br>
|
||||
<br>@@keyscs@@
|
||||
<li>Ctrl+1-9:@@keyscr@@</li>
|
||||
<li>N:@@keynew@@</li>
|
||||
<li>X:@@keytoggle@@</li>
|
||||
<li>Ctrl+Enter:@@keypost@@</li>
|
||||
<li>Ctrl+Enter+Shift:@@keysecpost@@</li>
|
||||
<li>Alt+Enter:@@secondary@@</li>
|
||||
<li>Ctrl+E:@@keyunread@@</li>
|
||||
<li>Esc:@@keyesc@@</li>
|
||||
<li>F5:@@keyf5@@</li>
|
||||
<li>Ctrl+Shift+C:@@keyclear@@</li>
|
||||
<li>Ctrl+Shift+S:@@setting@@</li>
|
||||
<li>Ctrl+Shift+M:@@keyacctman@@</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:@@keyshowprof@@</li>
|
||||
<li>←/→:@@keyrow@@</li>
|
||||
<li>@@keyzoom@@</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>@@reset@@</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>@@about@@</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>@@hp@@</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Enty)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>@@help@@/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">@@sushi@@</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">@@checkup@@</a><br>
|
||||
<a href="oss.html">OSS License@@ossJP@@</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<h5>@@postartwork@@</h5>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||
<label for="awk_yes">@@yes@@</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">@@no@@</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>@@tts@@
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>@@speed@@</h5>
|
||||
@@speedwarn@@<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>@@pitch@@</h5>
|
||||
@@pitchwarn@@<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>@@vol@@</h5>
|
||||
@@volwarn@@<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>@@test@@</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="@@sample@@">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||
id="testplay">@@playstop@@</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||
class="material-icons left">undo</i>@@back@@</a>
|
||||
<br>
|
||||
<br>@@keyscs@@
|
||||
<li>Ctrl+1-9:@@keyscr@@</li>
|
||||
<li>N:@@keynew@@</li>
|
||||
<li>X:@@keytoggle@@</li>
|
||||
<li>Ctrl+Enter:@@keypost@@</li>
|
||||
<li>Ctrl+Enter+Shift:@@keysecpost@@</li>
|
||||
<li>Alt+Enter:@@secondary@@</li>
|
||||
<li>Ctrl+E:@@keyunread@@</li>
|
||||
<li>Esc:@@keyesc@@</li>
|
||||
<li>F5:@@keyf5@@</li>
|
||||
<li>Ctrl+Shift+C:@@keyclear@@</li>
|
||||
<li>Ctrl+Shift+S:@@setting@@</li>
|
||||
<li>Ctrl+Shift+M:@@keyacctman@@</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:@@keyshowprof@@</li>
|
||||
<li>←/→:@@keyrow@@</li>
|
||||
<li>@@keyzoom@@</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||
onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||
class="material-icons left">delete</i>@@reset@@</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">info</i>@@about@@</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">web</i>@@hp@@</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">trending_up</i>@@support@@(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">list</i>@@help@@/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@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>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
||||
class="pointer">@@checkup@@</a><br>
|
||||
<a href="oss.html">OSS License@@ossJP@@</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
|
||||
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
|
||||
Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
@@ -476,5 +476,16 @@ var postConstruction=[
|
||||
}
|
||||
]
|
||||
}
|
||||
},{
|
||||
id:"zero",
|
||||
storage:"emoji-zero-width",
|
||||
checkbox:true,
|
||||
setValue:"normal",
|
||||
setValue:"no",
|
||||
text:{
|
||||
head:"@@zeroWidthEmoji@@",
|
||||
desc:"",
|
||||
checkbox:yesno
|
||||
}
|
||||
}
|
||||
]
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>{{updatehere}}</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">{{installer}}</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">{{portable}}</button>
|
||||
<span class="linux">{{snap}}<br></span>
|
||||
<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>
|
||||
<button class="waves-effect btn windows hide" 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 linux hide" onclick="update('linux')" style="margin-left:15px;">{{download}}</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">{{download}}</button>
|
||||
<br>
|
||||
{{problem1}}<br>{{problem2}}
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -18,6 +18,14 @@ body,html{overflow-y: scroll;}
|
||||
.colorsel{ display:flex; }
|
||||
.card .colorsel div:not(.exc){width:20px;height:20px;}
|
||||
.card .colorsel div.exc{width:40px;height:20px;}
|
||||
.first{
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
align-items:center
|
||||
}
|
||||
.first .hide-first{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<meta charset="utf-8">
|
||||
|
||||
@@ -39,14 +47,17 @@ body,html{overflow-y: scroll;}
|
||||
<script type="text/javascript" src="../../js/ui/tips.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/time.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">crwdns366:0crwdne366:0</a><br>
|
||||
<h5>crwdns365:0crwdne365:0</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
<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>
|
||||
<h5>crwdns365:0crwdne365:0</h5>
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<div>
|
||||
<h5>crwdns367:0crwdne367:0</h5><br>
|
||||
<div id="add">
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<div class="col s8">
|
||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
|
||||
<div id="ins-suggest"></div>
|
||||
crwdns368:0crwdne368:0<br>
|
||||
@@ -56,7 +67,7 @@ body,html{overflow-y: scroll;}
|
||||
<label for="misskey">crwdns382:0crwdne382:0</label><br>
|
||||
<button class="btn waves-effect" onclick="instance()">Login</button><br>
|
||||
</div>
|
||||
<div class="col s6">
|
||||
<div class="col s4">
|
||||
<span style="font-family:Open Sans;">Supports</span>
|
||||
<div id="support" class="collection transparent"></div>
|
||||
</div>
|
||||
@@ -73,6 +84,8 @@ body,html{overflow-y: scroll;}
|
||||
<input type="text" id="misskey-key" placeholder="crwdns373:0crwdne373:0">
|
||||
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hide-first">
|
||||
<h5>crwdns370:0crwdne370:0</h5>
|
||||
<div class="input-field" style="width:300px"><span data-trans="your_acct">crwdns371:0crwdne371:0</span>
|
||||
<br>
|
||||
@@ -91,6 +104,7 @@ crwdns376:0crwdne376:0:<span id="ins-toot"></span>crwdns381:0crwdne381:0<br>
|
||||
crwdns377:0crwdne377:0:<span id="ins-user"></span>crwdns377:0crwdne377:0<br>
|
||||
crwdns379:0crwdne379:0:<span id="ins-per"></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/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/sha256.js"></script>
|
||||
|
@@ -32,14 +32,13 @@
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Usamin (18.1.1)";
|
||||
var ver="Usamin (18.2.1)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
|
||||
//var ver="beta";
|
||||
//WinstoreではバージョンCK・言語・Misskeyトークンの機能が排除
|
||||
var acct_id=0;
|
||||
var tlid=0;
|
||||
verck(ver);
|
||||
</script>
|
||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
||||
<div id="tl">
|
||||
@@ -53,7 +52,7 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
<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;">
|
||||
@@ -205,7 +204,6 @@ var tlid=0;
|
||||
<div id="emoji" class="hide">
|
||||
<span class="gray sml">crwdns409:0crwdne409:0
|
||||
<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>
|
||||
</span>
|
||||
<div id="emoji-list" class="" style="">
|
||||
@@ -259,12 +257,8 @@ var tlid=0;
|
||||
<div id="poll" class="hide">
|
||||
<select id="poll-sel" onchange="pollProviderCk()">
|
||||
<option value="nothing">crwdns2408:0crwdne2408:0</option>
|
||||
<option value="votedon">votedon.</option>
|
||||
<option value="mastodon-poll">Mastodon(2.8~)</option>
|
||||
</select>
|
||||
<div id="votedon" class="poll-provider hide">
|
||||
WIP
|
||||
</div>
|
||||
<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:02">
|
||||
@@ -360,7 +354,6 @@ var tlid=0;
|
||||
</div>
|
||||
<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="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('emb')">crwdns438:0crwdne438:0</a>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">crwdns385:0crwdne385:0</a>
|
||||
@@ -372,7 +365,7 @@ var tlid=0;
|
||||
<div id="his-data-show">
|
||||
<div class="his-float" id="his-float-data">
|
||||
<div id="his-basic-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof">
|
||||
<img src="../../img/loading.svg" id="his-prof" draggable="false">
|
||||
<span id="his-name">Loading...</span><span class="gray" id="his-bot"></span>
|
||||
<br>@
|
||||
<span id="his-acct"></span><br>
|
||||
@@ -525,6 +518,9 @@ var tlid=0;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="his-float" id="his-float-blocked">
|
||||
<div>{{blocked}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@@ -583,20 +579,24 @@ var tlid=0;
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
|
||||
<br>
|
||||
<div id="release-Usamin_18-1-1" class="release-do" style="display:none; ">
|
||||
<div id="release-Usamin_18-2-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note Usamin (18.1.1)</h5>
|
||||
・お知らせ機能改善<br>
|
||||
・Integrated TLで一部挙動改善(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
--以下18.1.0--<br>
|
||||
・iTunes NowPlaying(macOS)にアルバムアートワークを付ける(Thanks to <a href="https://www.kr-kp.com/">kPherox</a>)<br>
|
||||
・カラムを<b>縦に並べられる</b>ように(2つ目以降のカラム毎の設定の「左に重ねる」「右に出す」を押す)<br>
|
||||
・画像を個別に削除する(画像をクリックして)<br>
|
||||
・何個もアルバムアートワークが投稿されるバグを修正<br>
|
||||
・Misskeyでログインしたまま何もできないバグを修正(権限回り)
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・<b>緊急の脆弱性修正</b>
|
||||
<h5>Release Note Usamin (18.2.0)</h5>
|
||||
・tootsearchをひとつのカラムにしてエゴサが捗る<br>
|
||||
・イントロダクション(初回起動時)の挙動修正<br>
|
||||
・リンクプレビューを最大1行ずつに省略(タイトルと本文)<br>
|
||||
・ブロックされたときのプロフィールの動作(Mastodon 2.8~)<br>
|
||||
・(Misskey)MFM追加flipやjumpなど<br>
|
||||
・(Misskey)リストに対応<br>
|
||||
・(Misskey)カスタム絵文字に対応。カスタム絵文字によるリアクションに対応(対応インスタンスに限る)。<br>
|
||||
・<b>カスタム絵文字をゼロ幅スペースによる挿入に変更する機能</b><br>
|
||||
・一部機能の統廃合とバグの修正<br>
|
||||
・best-friends.chatやキュアスタ!、misskey.devをサポートインスタンスに追加
|
||||
</div>
|
||||
<div id="release-en">
|
||||
<h5>Let's make it native!</h5>
|
||||
@@ -608,9 +608,9 @@ var tlid=0;
|
||||
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
|
||||
crwdns475:0crwdne475:0
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
|
||||
crwdns479:0crwdne479:0
|
||||
</a>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
|
||||
{{PixivSupport}}
|
||||
</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
|
||||
</a>
|
||||
@@ -688,11 +688,10 @@ var tlid=0;
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<input id="src" type="text" class="validate" style="width:60%">
|
||||
<label for="src" data-trans="src">crwdns492:0crwdne492:0</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>crwdns492:0crwdne492:0
|
||||
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 15px;" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left" style="margin:0">search</i>crwdns492:0crwdne492:0
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
@@ -706,7 +705,7 @@ var tlid=0;
|
||||
<div id="sort-box" class="hide menu-content">
|
||||
<ul id="sort"></ul>
|
||||
<div>
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:97.5%;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>crwdns493:0crwdne493:0
|
||||
</button>
|
||||
</div>
|
||||
@@ -761,7 +760,14 @@ var tlid=0;
|
||||
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="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
|
||||
<input type="number" style="width:50px" id="mins_filter" placeholder="m" value="0">crwdns509:0crwdne509:0<br>
|
||||
Quick:<a onclick="filterTime(0,0,30)" class="pointer">30crwdns509:0crwdne509:0</a>/
|
||||
<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>
|
||||
</div>
|
||||
@@ -777,7 +783,9 @@ var tlid=0;
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
crwdns511:0crwdne511:0
|
||||
<div id="something-wrong">
|
||||
<div>crwdns511:0crwdne511:0</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -860,6 +868,7 @@ var tlid=0;
|
||||
<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/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/login.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/img.js"></script>
|
||||
@@ -873,7 +882,6 @@ var tlid=0;
|
||||
<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/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/bb-md.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
|
||||
|
@@ -1,5 +1,6 @@
|
||||
<!doctype html>
|
||||
<html lang="ps">
|
||||
|
||||
<head>
|
||||
<title>Settings - TheDesk</title>
|
||||
|
||||
@@ -17,362 +18,424 @@
|
||||
<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">
|
||||
<meta charset="utf-8">
|
||||
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
|
||||
<style>
|
||||
input {
|
||||
max-height: 50px !important
|
||||
}
|
||||
|
||||
.pcr-result {
|
||||
height: 1rem !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body id="mainView" style="overflow-y:scroll">
|
||||
<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.ps.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
<script type="text/javascript" src="../../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.ps.js"></script>
|
||||
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
|
||||
<script src="../../node_modules/vue/dist/vue.min.js"></script>
|
||||
<script type="text/javascript" src="setting.vue.js"></script>
|
||||
|
||||
<h4>crwdns524:0crwdne524:0</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>crwdns529:0crwdne529:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns530:0crwdne530:0</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
<a href="../ja/setting.html" onclick="changelang('ja')">日本語(Japanese)</a>/<a href="../en/setting.html" onclick="changelang('en')">English</a>/<a href="../ps/setting.html" onclick="changelang('ps')">Crowdin web translate</a>/
|
||||
<h5>crwdns531:0crwdne531:0</h5>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<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 v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<h5>crwdns544:0crwdne544:0</h5>
|
||||
crwdns1900:0crwdne1900:0<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">crwdns1896:0crwdne1896:0</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
|
||||
<br>
|
||||
<h5>crwdns547:0crwdne547:0</h5>
|
||||
crwdns548:0crwdne548:0<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">crwdns528:0crwdne528:0</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>crwdns534:0crwdne534:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>crwdns2422:0crwdne2422:0</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>crwdns2424:0crwdne2424:0</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="crwdns2436:0crwdne2436:0">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">crwdns2436:0crwdne2436:0</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>crwdns2438:0crwdne2438:0</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="crwdns2438:0crwdne2438:0...">
|
||||
<h5>crwdns2440:0crwdne2440:0</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
|
||||
<h5>crwdns2426:0crwdne2426:0</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>crwdns2430:0crwdne2430:0
|
||||
<div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>crwdns2428:0crwdne2428:0
|
||||
<div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>crwdns2432:0crwdne2432:0
|
||||
<div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>crwdns2434:0crwdne2434:0
|
||||
<div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button> <button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
||||
crwdns2442:0crwdne2442:0
|
||||
<h4>crwdns2444:0crwdne2444:0</h4>
|
||||
@@cImpWarn@@<br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>crwdns550:0crwdne550:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>crwdns587:0crwdne587:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
{{item.text.desc}}<br>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<h4>crwdns524:0crwdne524:0</h4>
|
||||
<ul class="collapsible" data-collapsible="accordion">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">desktop_windows</i>crwdns529:0crwdne529:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns530:0crwdne530:0</h5>
|
||||
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
|
||||
<a href="../ja/setting.html" onclick="changelang('ja')">日本語(Japanese)</a>/<a href="../en/setting.html" onclick="changelang('en')">English</a>/<a href="../ps/setting.html" onclick="changelang('ps')">Crowdin web translate</a>/
|
||||
<h5>crwdns531:0crwdne531:0</h5>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||
style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||
style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.id=='notf'"><a onclick="notftest()"
|
||||
class="pointer">crwdns540:0crwdne540:0</a><br></template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
|
||||
</div>
|
||||
<h5>crwdns544:0crwdne544:0</h5>
|
||||
crwdns1900:0crwdne1900:0<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">crwdns1896:0crwdne1896:0</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
|
||||
<br>
|
||||
<h5>crwdns547:0crwdne547:0</h5>
|
||||
crwdns548:0crwdne548:0<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">crwdns528:0crwdne528:0</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>crwdns534:0crwdne534:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h4>crwdns2422:0crwdne2422:0</h4>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
|
||||
<label for="black">Black</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
|
||||
<label for="white">White</label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
|
||||
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
|
||||
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
|
||||
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
|
||||
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
|
||||
<label for="custom">Custom</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>crwdns2424:0crwdne2424:0</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="crwdns2436:0crwdne2436:0">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">crwdns2436:0crwdne2436:0</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>crwdns2438:0crwdne2438:0</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="crwdns2438:0crwdne2438:0...">
|
||||
<h5>crwdns2440:0crwdne2440:0</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||
placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
|
||||
<h5>crwdns2426:0crwdne2426:0</h5>
|
||||
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
|
||||
<label for="dark">Dark</label>
|
||||
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
|
||||
<label for="light">Light</label>
|
||||
<div id="pickers">
|
||||
<div>
|
||||
<h5>Primary</h5>crwdns2430:0crwdne2430:0
|
||||
<div id="color-picker0-wrap">
|
||||
<div class="color-picker" id="color-picker0"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker0_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Secondary</h5>crwdns2428:0crwdne2428:0
|
||||
<div id="color-picker1-wrap">
|
||||
<div class="color-picker" id="color-picker1"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker1_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Texts</h5>crwdns2432:0crwdne2432:0
|
||||
<div id="color-picker2-wrap">
|
||||
<div class="color-picker" id="color-picker2"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker2_value">
|
||||
</div>
|
||||
<div>
|
||||
<h5>Accent</h5>crwdns2434:0crwdne2434:0
|
||||
<div id="color-picker3-wrap">
|
||||
<div class="color-picker" id="color-picker3"></div>
|
||||
</div>
|
||||
<input type="hidden" id="color-picker3_value">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button> <button
|
||||
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
|
||||
placeholder="JSON style" readonly><br>
|
||||
crwdns2442:0crwdne2442:0
|
||||
<h4>crwdns2444:0crwdne2444:0</h4>
|
||||
@@cImpWarn@@<br>
|
||||
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
|
||||
placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>crwdns550:0crwdne550:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="tlView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
||||
</template><br>
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">keyboard</i>crwdns611:0crwdne611:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns612:0crwdne612:0</h5>
|
||||
crwdns613:0crwdne613:0<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">send</i>crwdns587:0crwdne587:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<div id="postView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
<template v-if=item.text.desc>
|
||||
<templete v-html=item.text.desc></templete><br>
|
||||
</template>
|
||||
<template v-if="item.checkbox">
|
||||
<template v-for="(check, j) in item.text.checkbox">
|
||||
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
|
||||
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
|
||||
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
|
||||
<label v-bind:for="item.id+check.value">{{check.text}}</label>
|
||||
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.doubleText">
|
||||
<template v-for="(textbox, j) in item.data">
|
||||
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
|
||||
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
|
||||
</template>
|
||||
</template>
|
||||
<template v-else>
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
|
||||
</template><br>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">Fkeyboard</i>crwdns611:0crwdne611:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns612:0crwdne612:0</h5>
|
||||
crwdns613:0crwdne613:0<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">bookmark</i>crwdns614:0crwdne614:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns615:0crwdne615:0</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>crwdns616:0crwdne616:0</h5>
|
||||
crwdns617:0crwdne617:0
|
||||
<h5>crwdns619:0crwdne619:0</h5>
|
||||
crwdns618:0crwdne618:0<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||
<h5>crwdns620:0crwdne620:0</h5>
|
||||
crwdns618:0crwdne618:0<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||
<h5>crwdns621:0crwdne621:0</h5>
|
||||
crwdns622:0crwdne622:0
|
||||
<span class="emphasized"> crwdns623:0crwdne623:0 </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>crwdns624:0crwdne624:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns2354:0crwdne2354:0</h5>
|
||||
crwdns2356:0crwdne2356:0<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
crwdns625:0crwdne625:0<i class="material-icons" style="font-size:24px;">music_note</i>crwdns626:0crwdne626:0<br>
|
||||
<h5>crwdns627:0crwdne627:0</h5>
|
||||
crwdns628:0crwdne628:0<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button></div>
|
||||
<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="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i class="fa fa-spotify left"></i>crwdns630:0crwdne630:0</a>
|
||||
<h5>crwdns631:0crwdne631:0</h5>
|
||||
crwdns632:0crwdne632:0<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns615:0crwdne615:0</h5>
|
||||
<div id="mute-cli"></div>
|
||||
<h5>crwdns616:0crwdne616:0</h5>
|
||||
crwdns617:0crwdne617:0
|
||||
<h5>crwdns619:0crwdne619:0</h5>
|
||||
crwdns618:0crwdne618:0<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||
<h5>crwdns620:0crwdne620:0</h5>
|
||||
crwdns618:0crwdne618:0<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||
<h5>crwdns621:0crwdne621:0</h5>
|
||||
crwdns622:0crwdne622:0
|
||||
<span class="emphasized"> crwdns623:0crwdne623:0 </span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="fa fa-spotify"></i>crwdns624:0crwdne624:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns2354:0crwdne2354:0</h5>
|
||||
crwdns2356:0crwdne2356:0<br>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
|
||||
<label for="aimp">AIMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
|
||||
<label for="itunes">iTunes</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
|
||||
<label for="npmm">MediaMonkey</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
|
||||
<label for="winamp">Winamp</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
|
||||
<label for="wmp">WMP</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
|
||||
<label for="wlm">WLM</label>
|
||||
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
|
||||
<label for="cad">CAD</label><br><br>
|
||||
crwdns625:0crwdne625:0<i class="material-icons" style="font-size:24px;">music_note</i>crwdns626:0crwdne626:0<br>
|
||||
<h5>crwdns627:0crwdne627:0</h5>
|
||||
crwdns628:0crwdne628:0<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button></div>
|
||||
<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="spotifyDisconnect()" class="btn waves-effect nex disabled"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
|
||||
class="fa fa-spotify left"></i>crwdns630:0crwdne630:0</a>
|
||||
<h5>crwdns631:0crwdne631:0</h5>
|
||||
crwdns632:0crwdne632:0<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
{url}</textarea><br>
|
||||
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>
|
||||
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>
|
||||
<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" />
|
||||
<label for="awk_yes">crwdns526:0crwdne526:0</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">crwdns527:0crwdne527:0</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>crwdns636:0crwdne636:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns637:0crwdne637:0</h5>
|
||||
crwdns638:0crwdne638:0<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
|
||||
<h5>crwdns639:0crwdne639:0</h5>
|
||||
crwdns640:0crwdne640:0<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
|
||||
<h5>crwdns641:0crwdne641:0</h5>
|
||||
crwdns642:0crwdne642:0<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
|
||||
<h5>crwdns643:0crwdne643:0</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="crwdns644:0crwdne644:0">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">crwdns645:0crwdne645:0</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">crwdns525:0crwdne525:0</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>crwdns646:0crwdne646:0</a>
|
||||
<br>
|
||||
<br>crwdns647:0crwdne647:0
|
||||
<li>Ctrl+1-9:crwdns648:0crwdne648:0</li>
|
||||
<li>N:crwdns649:0crwdne649:0</li>
|
||||
<li>X:crwdns650:0crwdne650:0</li>
|
||||
<li>Ctrl+Enter:crwdns651:0crwdne651:0</li>
|
||||
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
|
||||
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
|
||||
<li>Ctrl+E:crwdns652:0crwdne652:0</li>
|
||||
<li>Esc:crwdns653:0crwdne653:0</li>
|
||||
<li>F5:crwdns654:0crwdne654:0</li>
|
||||
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
|
||||
<li>Ctrl+Shift+S:crwdns524:0crwdne524:0</li>
|
||||
<li>Ctrl+Shift+M:crwdns656:0crwdne656:0</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:crwdns657:0crwdne657:0</li>
|
||||
<li>←/→:crwdns658:0crwdne658:0</li>
|
||||
<li>crwdns659:0crwdne659:0</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>crwdns660:0crwdne660:0</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>crwdns662:0crwdne662:0</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>crwdns663:0crwdne663:0</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Enty)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>crwdns665:0crwdne665:0/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
|
||||
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="../../img/sushi.svg" class="left" width="25" style="padding-top:5px;">crwdns666:0crwdne666:0</a>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">crwdns667:0crwdne667:0</a><br>
|
||||
<a href="oss.html">OSS Licensecrwdns668:0crwdne668:0</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
|
||||
<h5>crwdns635:0crwdne635:0</h5>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
|
||||
<label for="awk_yes">crwdns526:0crwdne526:0</label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
|
||||
<label for="awk_no">crwdns527:0crwdne527:0</label>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">hearing</i>crwdns636:0crwdne636:0
|
||||
</div>
|
||||
<div class="collapsible-body">
|
||||
<h5>crwdns637:0crwdne637:0</h5>
|
||||
crwdns638:0crwdne638:0<br>
|
||||
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>crwdns639:0crwdne639:0</h5>
|
||||
crwdns640:0crwdne640:0<br>
|
||||
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>crwdns641:0crwdne641:0</h5>
|
||||
crwdns642:0crwdne642:0<br>
|
||||
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
<h5>crwdns643:0crwdne643:0</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="crwdns644:0crwdne644:0">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||
id="testplay">crwdns645:0crwdne645:0</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">crwdns525:0crwdne525:0</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||
class="material-icons left">undo</i>crwdns646:0crwdne646:0</a>
|
||||
<br>
|
||||
<br>crwdns647:0crwdne647:0
|
||||
<li>Ctrl+1-9:crwdns648:0crwdne648:0</li>
|
||||
<li>N:crwdns649:0crwdne649:0</li>
|
||||
<li>X:crwdns650:0crwdne650:0</li>
|
||||
<li>Ctrl+Enter:crwdns651:0crwdne651:0</li>
|
||||
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
|
||||
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
|
||||
<li>Ctrl+E:crwdns652:0crwdne652:0</li>
|
||||
<li>Esc:crwdns653:0crwdne653:0</li>
|
||||
<li>F5:crwdns654:0crwdne654:0</li>
|
||||
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
|
||||
<li>Ctrl+Shift+S:crwdns524:0crwdne524:0</li>
|
||||
<li>Ctrl+Shift+M:crwdns656:0crwdne656:0</li>
|
||||
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
|
||||
<li>Ctrl+Shift+P:crwdns657:0crwdne657:0</li>
|
||||
<li>←/→:crwdns658:0crwdne658:0</li>
|
||||
<li>crwdns659:0crwdne659:0</li>
|
||||
<div class="hide kirishima">
|
||||
以下Markdownに対応したインスタンスのみ。
|
||||
<br>
|
||||
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
|
||||
<li>Shift+Enter:全角スペースを入れて改行</li>
|
||||
<li>Shift+Space:ゼロ幅スペース</li>
|
||||
以下アスタルテにログインしている場合のみ
|
||||
<br>
|
||||
<li>Ctrl+R:
|
||||
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
|
||||
</li><br>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||
onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||
class="material-icons left">delete</i>crwdns660:0crwdne660:0</button><br><br>
|
||||
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">info</i>crwdns662:0crwdne662:0</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">web</i>crwdns663:0crwdne663:0</a>
|
||||
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Enty)</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>crwdns664:0crwdne664:0(Pixiv FANBOX)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
|
||||
class="material-icons left">list</i>crwdns665:0crwdne665:0/Docs(Constructing)</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@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>
|
||||
<br>
|
||||
Kyash<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
||||
class="pointer">crwdns667:0crwdne667:0</a><br>
|
||||
<a href="oss.html">OSS Licensecrwdns668:0crwdne668:0</a><br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018 All Rights Reserved.
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
|
||||
href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy
|
||||
Policy</a>
|
||||
<br>Developer: Cutls P(
|
||||
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
|
||||
<br>
|
||||
</span><br>
|
||||
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
|
||||
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/logout.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/settings.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
@@ -476,5 +476,16 @@ var postConstruction=[
|
||||
}
|
||||
]
|
||||
}
|
||||
},{
|
||||
id:"zero",
|
||||
storage:"emoji-zero-width",
|
||||
checkbox:true,
|
||||
setValue:"normal",
|
||||
setValue:"no",
|
||||
text:{
|
||||
head:"@@zeroWidthEmoji@@",
|
||||
desc:"",
|
||||
checkbox:yesno
|
||||
}
|
||||
}
|
||||
]
|
@@ -62,9 +62,6 @@ a,button,input,label,i{
|
||||
#prog{
|
||||
font-size:200%;
|
||||
}
|
||||
.linux, .mac{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="../../js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
@@ -78,11 +75,10 @@ a,button,input,label,i{
|
||||
<p>crwdns669:0crwdne669:0</p>
|
||||
<span id="now"></span>→<b id="ver"></b><br>
|
||||
<span id="det"></span><br>
|
||||
<button class="waves-effect btn windows" onclick="update('install')" style="margin-left:15px;">crwdns2382:0crwdne2382:0</button>
|
||||
<button class="waves-effect btn windows" onclick="update('portable')" style="margin-left:15px;">crwdns1950:0crwdne1950:0</button>
|
||||
<span class="linux">crwdns2384:0crwdne2384:0<br></span>
|
||||
<button class="waves-effect btn linux" 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>
|
||||
<button class="waves-effect btn windows hide" 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 linux hide" onclick="update('linux')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||
<button class="waves-effect btn mac hide" onclick="update('mac')" style="margin-left:15px;">crwdns670:0crwdne670:0</button>
|
||||
<br>
|
||||
crwdns678:0crwdne678:0<br>crwdns679:0crwdne679:0
|
||||
</div>
|
||||
@@ -184,12 +180,12 @@ function verck(){
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
var bit=process.arch;
|
||||
if(platform=="linux"){
|
||||
$('.windows').hide()
|
||||
$('.linux').show()
|
||||
}else if(platform=="mac"){
|
||||
$('.windows').hide()
|
||||
$('.mac').show()
|
||||
if(platform=="win32"){
|
||||
$('.windows').removeClass("hide")
|
||||
}else if(platform=="linux"){
|
||||
$('.linux').removeClass("hide")
|
||||
}else if(platform=="darwin"){
|
||||
$('.mac').removeClass("hide")
|
||||
}
|
||||
var start="https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
|
@@ -1,27 +1,11 @@
|
||||
language: objective-c
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
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
|
||||
os: windows
|
||||
language: node_js
|
||||
node_js:
|
||||
- '10.15.2'
|
||||
script: node -v
|
||||
before_deploy:
|
||||
- brew update
|
||||
- brew install wine
|
||||
- wine --version
|
||||
- brew install makensis
|
||||
- npm install electron-builder -g
|
||||
- cd app
|
||||
- npm install electron-builder -g
|
||||
- npm install
|
||||
- electron-builder --win --ia32
|
||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
|
||||
@@ -29,24 +13,22 @@ before_deploy:
|
||||
- electron-builder --win --x64
|
||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup.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 ../
|
||||
- ls
|
||||
after_deploy: ls
|
||||
deploy:
|
||||
skip_cleanup: true
|
||||
provider: releases
|
||||
# GitHub にリリースするための API KEY を暗号化した値
|
||||
api_key:
|
||||
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
||||
# Releases ページにアップロードするファイル
|
||||
file:
|
||||
file:
|
||||
- TheDesk.exe
|
||||
- TheDesk-setup.exe
|
||||
- TheDesk-ia32.exe
|
||||
- TheDesk-setup-ia32.exe
|
||||
- TheDesk.snap
|
||||
- TheDesk.dmg
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: cutls/TheDesk
|
||||
repo: cutls/TheDesk
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
|
Reference in New Issue
Block a user