Merge pull request #24 from cutls/WIP-(before-CI)

TheDesk Miria (17.2.0)
This commit is contained in:
Cutls 2019-03-09 10:16:24 +09:00 committed by GitHub
commit dd55236e84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
55 changed files with 1365 additions and 545 deletions

View File

@ -298,6 +298,10 @@ blockquote:before, .quote:before {
border-color:var(--color);
padding:5px;
}
#pickers{
display:flex;
flex-wrap: wrap;
}
/*スクロールバー*/

1
app/css/pickr.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -70,7 +70,7 @@ function defEmoji(target){
$("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if(!selin){
selin=0;
selin=0;
}
localStorage.setItem("cursor", selin);
}

View File

@ -178,6 +178,7 @@ var lang={
"lang_parse_voted":"Voted",
"lang_parse_vote":"Voted",
"lang_parse_unvoted":"Show the result without voting",
"lang_parse_endedvote":"Expired",
//misskey
"lang_misskeyparse_renote":"Repost",
"lang_misskeyparse_renoteqt":"Renote",

View File

@ -179,6 +179,7 @@ var lang={
"lang_parse_voted":"投票済みです",
"lang_parse_vote":"投票",
"lang_parse_unvoted":"結果だけ見る",
"lang_parse_endedvote":"終了済み",
//misskey
"lang_misskeyparse_renote":"再投稿",
"lang_misskeyparse_renoteqt":"引用",

206
app/js/lang/lang.ps.js Normal file
View File

@ -0,0 +1,206 @@
var lang={
"language": "crwdns1960:0crwdne1960:0",
"lang_toot": "crwdns1962:0crwdne1962:0",
"lang_there": "crwdns1964:0crwdne1964:0",
"lang_nothing": "crwdns1966:0crwdne1966:0",
"lang_yesno": "crwdns1968:0crwdne1968:0",
"lang_no": "crwdns1970:0crwdne1970:0",
"lang_progress": "crwdns1972:0crwdne1972:0",
"lang_edit": "crwdns1974:0crwdne1974:0",
"lang_del": "crwdns1976:0crwdne1976:0",
"lang_add": "crwdns1978:0crwdne1978:0",
"lang_fatalerroroccured": "crwdns1980:0crwdne1980:0",
"lang_speech": "crwdns1982:0crwdne1982:0",
"lang_lang": "crwdns1984:0crwdne1984:0",
"lang_langlocale": "crwdns1986:0crwdne1986:0",
"lang_back": "crwdns1988:0crwdne1988:0",
"lang_set": "crwdns1990:0crwdne1990:0",
"lang_langadd": "crwdns2364:0crwdne2364:0",
"lang_version_usever": "crwdns1994:0{{ver}}crwdne1994:0",
"lang_version_skipver": "crwdns1996:0crwdne1996:0",
"lang_login_noauth": "crwdns1998:0crwdne1998:0",
"lang_manager_info": "crwdns2000:0crwdne2000:0",
"lang_manager_refresh": "crwdns2002:0crwdne2002:0",
"lang_manager_delete": "crwdns2004:0crwdne2004:0",
"lang_manager_color": "crwdns2006:0crwdne2006:0",
"lang_manager_confirm": "crwdns2008:0crwdne2008:0",
"lang_manager_mainAcct": "crwdns2010:0crwdne2010:0",
"lang_manager_def": "crwdns2012:0crwdne2012:0",
"lang_manager_none": "crwdns2014:0crwdne2014:0",
"lang_manager_godev": "crwdns2016:0crwdne2016:0",
"lang_bbmd_misskey": "crwdns2018:0crwdne2018:0",
"lang_emoji_get": "crwdns2020:0crwdne2020:0",
"lang_emoji_custom": "crwdns2022:0crwdne2022:0",
"lang_defaultemojis_text": "crwdns2388:0{{cat}}crwdne2388:0",
"lang_postimg_previewdis": "crwdns2024:0crwdne2024:0",
"lang_postimg_aftupload": "crwdns2026:0crwdne2026:0",
"lang_post_tagTL": "crwdns2028:0crwdne2028:0",
"lang_post_tagVis": "crwdns2030:0crwdne2030:0",
"lang_post_cwtitle": "crwdns2032:0crwdne2032:0",
"lang_post_cwtxt": "crwdns2034:0crwdne2034:0",
"lang_post_btn1": "crwdns2036:0crwdne2036:0",
"lang_post_btn2": "crwdns2038:0crwdne2038:0",
"lang_post_btn3": "crwdns2040:0crwdne2040:0",
"lang_status_favWarn": "crwdns2042:0crwdne2042:0",
"lang_status_btWarn": "crwdns2044:0crwdne2044:0",
"lang_status_follow": "crwdns2046:0crwdne2046:0",
"lang_status_unfollow": "crwdns2048:0crwdne2048:0",
"lang_status_block": "crwdns2050:0crwdne2050:0",
"lang_status_unblock": "crwdns2052:0crwdne2052:0",
"lang_status_mute": "crwdns2054:0crwdne2054:0",
"lang_status_unmute": "crwdns2056:0crwdne2056:0",
"lang_status_redraft": "crwdns2058:0crwdne2058:0",
"lang_status_emphas": "crwdns2060:0crwdne2060:0",
"lang_status_unemphas": "crwdns2062:0crwdne2062:0",
"lang_status_unendorse": "crwdns2064:0crwdne2064:0",
"lang_status_endorse": "crwdns2066:0crwdne2066:0",
"lang_suggest_nodata": "crwdns2068:0crwdne2068:0",
"lang_usetxtbox_reply": "crwdns2070:0crwdne2070:0",
"lang_cards_check": "crwdns2072:0crwdne2072:0",
"lang_cards_pip": "crwdns2074:0crwdne2074:0",
"lang_details_nodata": "crwdns2076:0crwdne2076:0",
"lang_details_filtered": "crwdns2078:0crwdne2078:0",
"lang_details_embed": "crwdns2080:0crwdne2080:0",
"lang_details_url": "crwdns2082:0crwdne2082:0",
"lang_details_txt": "crwdns2084:0crwdne2084:0",
"lang_filter_nodata": "crwdns2086:0crwdne2086:0",
"lang_filter_errordegree": "crwdns2088:0crwdne2088:0",
"lang_list_nodata": "crwdns2090:0crwdne2090:0",
"lang_list_show": "crwdns2092:0crwdne2092:0",
"lang_list_users": "crwdns2094:0crwdne2094:0",
"lang_list_nouser": "crwdns2096:0crwdne2096:0",
"lang_list_add": "crwdns2098:0crwdne2098:0",
"lang_list_remove": "crwdns2100:0crwdne2100:0",
"lang_notf_new": "crwdns2102:0crwdne2102:0",
"lang_speech_refresh": "crwdns2348:0crwdne2348:0",
"lang_src_ts": "crwdns2106:0crwdne2106:0",
"lang_src_people": "crwdns2108:0crwdne2108:0",
"lang_tags_always": "crwdns2110:0crwdne2110:0",
"lang_tags_realtime": "crwdns2112:0crwdne2112:0",
"lang_tags_tagunpin": "crwdns2114:0{{tag}}crwdne2114:0",
"lang_tags_tagwarn": "crwdns2116:0{{tag}}crwdne2116:0",
"lang_tl_media": "crwdns2118:0crwdne2118:0",
"lang_tl_reconnect": "crwdns2120:0crwdne2120:0",
"lang_layout_gotop": "crwdns2122:0crwdne2122:0",
"lang_layout_thisacct": "crwdns2124:0{{notf}}crwdne2124:0",
"lang_layout_delthis": "crwdns2126:0crwdne2126:0",
"lang_layout_setthis": "crwdns2128:0crwdne2128:0",
"lang_layout_mediafil": "crwdns2130:0crwdne2130:0",
"lang_layout_linkana": "crwdns2132:0crwdne2132:0",
"lang_layout_linkanades": "crwdns2134:0crwdne2134:0",
"lang_layout_tts": "crwdns2136:0crwdne2136:0",
"lang_layout_reconnect": "crwdns2138:0crwdne2138:0",
"lang_layout_headercolor": "crwdns2140:0crwdne2140:0",
"lang_layout_nodata": "crwdns2142:0crwdne2142:0",
"lang_layout_dm": "crwdns2144:0crwdne2144:0",
"lang_layout_webviewmode": "crwdns2146:0crwdne2146:0",
"lang_excluded": "crwdns2368:0crwdne2368:0",
"lang_layout_excludingbt": "crwdns2390:0crwdne2390:0",
"lang_spotify_img": "crwdns2148:0crwdne2148:0",
"lang_spotify_imgno": "crwdns2150:0crwdne2150:0",
"lang_spotify_acct": "crwdns2152:0crwdne2152:0",
"lang_spotify_np": "crwdns2154:0crwdne2154:0",
"lang_setting_npprovide": "crwdns2370:0{{set}}crwdne2370:0",
"lang_hisdata_frcreq": "crwdns2156:0crwdne2156:0",
"lang_hisdata_frcwarn": "crwdns2158:0crwdne2158:0",
"lang_hisdata_taketime": "crwdns2160:0crwdne2160:0",
"lang_hisdata_notonmisskey": "crwdns2162:0crwdne2162:0",
"lang_showontl_movetxt": "crwdns2164:0crwdne2164:0",
"lang_showontl_movebtn": "crwdns2166:0crwdne2166:0",
"lang_showontl_botacct": "crwdns2168:0[bot]crwdne2168:0",
"lang_showontl_followed": "crwdns2170:0crwdne2170:0",
"lang_showontl_notf": "crwdns2172:0crwdne2172:0",
"lang_showontl_domain": "crwdns2174:0crwdne2174:0",
"lang_showontl_listwarn": "crwdns2176:0crwdne2176:0",
"lang_parse_mentioned": "crwdns2178:0crwdne2178:0",
"lang_parse_faved": "crwdns2180:0crwdne2180:0",
"lang_parse_bted": "crwdns2182:0crwdne2182:0",
"lang_parse_btedsimple": "crwdns2184:0crwdne2184:0",
"lang_parse_notftime": "crwdns2186:0crwdne2186:0",
"lang_parse_cwshow": "crwdns2188:0crwdne2188:0",
"lang_parse_fulltext": "crwdns2190:0crwdne2190:0",
"lang_parse_autofold": "crwdns2192:0crwdne2192:0",
"lang_parse_more": "crwdns2194:0crwdne2194:0",
"lang_parse_url": "crwdns2196:0crwdne2196:0",
"lang_parse_tagTL": "crwdns2198:0{{tag}}crwdne2198:0",
"lang_parse_tagtoot": "crwdns2200:0{{tag}}crwdne2200:0",
"lang_parse_tagpin": "crwdns2202:0{{tag}}crwdne2202:0",
"lang_parse_public": "crwdns2204:0crwdne2204:0",
"lang_parse_unlisted": "crwdns2206:0crwdne2206:0",
"lang_parse_private": "crwdns2208:0crwdne2208:0",
"lang_parse_direct": "crwdns2210:0crwdne2210:0",
"lang_parse_clickcopy": "crwdns2212:0crwdne2212:0",
"lang_parse_clickcopyurl": "crwdns2214:0crwdne2214:0",
"lang_parse_trans": "crwdns2216:0crwdne2216:0",
"lang_parse_replyto": "crwdns2218:0crwdne2218:0",
"lang_parse_bt": "crwdns2220:0crwdne2220:0",
"lang_parse_fav": "crwdns2222:0crwdne2222:0",
"lang_parse_quote": "crwdns2224:0crwdne2224:0",
"lang_parse_del": "crwdns2226:0crwdne2226:0",
"lang_parse_pin": "crwdns2228:0crwdne2228:0",
"lang_parse_det": "crwdns2230:0crwdne2230:0",
"lang_parse_redraft": "crwdns2232:0crwdne2232:0",
"lang_parse_followed": "crwdns2234:0crwdne2234:0",
"lang_parse_clientop": "crwdns2236:0crwdne2236:0",
"lang_parse_clienttxt": "crwdns2238:0crwdne2238:0",
"lang_parse_clientno": "crwdns2240:0crwdne2240:0",
"lang_parse_clientemp": "crwdns2242:0crwdne2242:0",
"lang_parse_clientmute": "crwdns2244:0crwdne2244:0",
"lang_parse_mute": "crwdns2246:0crwdne2246:0",
"lang_parse_voted": "crwdns2392:0crwdne2392:0",
"lang_parse_vote": "crwdns2394:0crwdne2394:0",
"lang_parse_unvoted": "crwdns2396:0crwdne2396:0",
"lang_parse_endedvote": "crwdns2398:0crwdne2398:0",
"lang_misskeyparse_renote": "crwdns2248:0crwdne2248:0",
"lang_misskeyparse_renoteqt": "crwdns2250:0crwdne2250:0",
"lang_misskeyparse_reaction": "crwdns2252:0crwdne2252:0",
"lang_misskeyparse_tagnostr": "crwdns2254:0crwdne2254:0",
"lang_misskeyparse_listnostr": "crwdns2256:0crwdne2256:0",
"lang_misskeyparse_home": "crwdns2258:0crwdne2258:0",
"lang_misskeyparse_followers": "crwdns2260:0crwdne2260:0",
"lang_misskeyparse_specified": "crwdns2262:0crwdne2262:0",
"lang_misskeyparse_qt": "crwdns2264:0crwdne2264:0",
"lang_misskeyparse_renoted": "crwdns2266:0crwdne2266:0",
"lang_misskeyparse_quoted": "crwdns2268:0crwdne2268:0",
"lang_misskeyparse_reacted": "crwdns2372:0crwdne2372:0",
"lang_setting_time": "crwdns2272:0{{set}}crwdne2272:0",
"lang_setting_theme": "crwdns2274:0{{set}}crwdne2274:0",
"lang_setting_nsfw": "crwdns2276:0{{set}}crwdne2276:0",
"lang_setting_cw": "crwdns2278:0{{set}}crwdne2278:0",
"lang_setting_cwtext": "crwdns2280:0{{set}}crwdne2280:0",
"lang_setting_cws": "crwdns2282:0{{set}}crwdne2282:0",
"lang_setting_rp": "crwdns2284:0{{set}}crwdne2284:0",
"lang_setting_vis": "crwdns2286:0{{set}}crwdne2286:0",
"lang_setting_popup": "crwdns2288:0{{set}}crwdne2288:0",
"lang_setting_off": "crwdns2290:0crwdne2290:0",
"lang_setting_s": "crwdns2292:0crwdne2292:0",
"lang_setting_box": "crwdns2294:0{{set}}crwdne2294:0",
"lang_setting_gif": "crwdns2296:0{{set}}crwdne2296:0",
"lang_setting_selt": "crwdns2298:0{{set1}}crwdnd2298:0{{set2}}crwdne2298:0",
"lang_setting_autocw": "crwdns2300:0{{set1}}crwdnd2300:0{{set2}}crwdne2300:0",
"lang_setting_width": "crwdns2302:0{{set}}crwdne2302:0",
"lang_setting_fixwidth": "crwdns2386:0{{set}}crwdne2386:0",
"lang_setting_img": "crwdns2304:0{{set}}crwdne2304:0",
"lang_setting_font": "crwdns2306:0{{set}}crwdne2306:0",
"lang_setting_default": "crwdns2308:0crwdne2308:0",
"lang_setting_size": "crwdns2310:0{{set}}crwdne2310:0",
"lang_setting_imgheight": "crwdns2312:0{{set}}crwdne2312:0",
"lang_setting_ticker": "crwdns2314:0{{set}}crwdne2314:0",
"lang_setting_animation": "crwdns2400:0{{set}}crwdne2400:0",
"lang_setting_tag": "crwdns2316:0{{set}}crwdne2316:0",
"lang_setting_boxConfirm": "crwdns2318:0{{set}}crwdne2318:0",
"lang_setting_ul": "crwdns2320:0{{set}}crwdne2320:0",
"lang_setting_notf": "crwdns2322:0{{set}}crwdne2322:0",
"lang_setting_quote": "crwdns2324:0{{set}}crwdne2324:0",
"lang_setting_via": "crwdns2326:0{{set}}crwdne2326:0",
"lang_setting_mov": "crwdns2328:0{{set}}crwdne2328:0",
"lang_setting_setasread": "crwdns2330:0{{set}}crwdne2330:0",
"lang_setting_main": "crwdns2332:0{{set}}crwdne2332:0",
"lang_setting_sec": "crwdns2334:0{{set}}crwdne2334:0",
"lang_setting_ksref": "crwdns2336:0crwdne2336:0",
"lang_setting_nomuting": "crwdns2338:0crwdne2338:0",
"lang_setting_notftest": "crwdns2340:0crwdne2340:0",
"lang_setting_notftestprof": "crwdns2342:0crwdne2342:0",
"lang_setting_exportwarn": "crwdns2344:0crwdne2344:0",
"lang_setting_importwarn": "crwdns2346:0crwdne2346:0"
}

View File

@ -11,9 +11,9 @@ function ck() {
if(!main){
localStorage.setItem("main",0)
}
var domain = localStorage.getItem("domain_0");
var domainz = localStorage.getItem("domain_0");
var at = localStorage.getItem("acct_0_at");
var oldat = localStorage.getItem(domain + "_at");
var oldat = localStorage.getItem(domainz + "_at");
if(oldat){
console.log("Move to New Account Management System")
var multi = localStorage.getItem("multi");
@ -77,7 +77,7 @@ function login(url) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
scopes: 'read write follow',
client_name: "TheDesk(PC)",
@ -85,7 +85,7 @@ function login(url) {
website: "https://thedesk.top"
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
var auth = "https://" + url + "/oauth/authorize?client_id=" + json[
@ -96,9 +96,7 @@ function login(url) {
localStorage.setItem("client_secret", json["client_secret"]);
$("#auth").show();
$("#masara").hide();
const {
shell
} = require('electron');
const { shell } = require('electron');
shell.openExternal(auth);

View File

@ -286,7 +286,7 @@ function login(url) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
scopes: 'read write follow',
client_name: "TheDesk(PC)",
@ -294,7 +294,7 @@ function login(url) {
website: "https://thedesk.top"
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
localStorage.setItem("msky","false");
@ -326,43 +326,41 @@ function misskeyLogin(url) {
if(!url){
var url=$("#misskey-url").val();
}
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var start = "https://"+url+"/api/app/create";
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
localStorage.setItem("msky","true");
httpreq.send(JSON.stringify({
name: "TheDesk(PC)",
description: "Mastodon client for PC",
permission: ["read","write","follow"]
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
misskeyAuth(url, json.secret)
}
}
}
function misskeyAuth(url, mkc){
var start = "https://"+url+"/api/auth/session/generate";
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
localStorage.setItem("msky","true");
if(url=="misskey.xyz" && misskeytoken){
var mkc=misskeytoken;
localStorage.setItem("mkc",mkc)
}else{
var mkc=$("#misskey-key").val();
localStorage.setItem("mkc",mkc)
if(!mkc){
$("#misskeylogin").show();
$("#misskey-url").val(url);
if(confirm(lang.lang_manager_godev)){
const {
shell
} = require('electron');
console.log("https://"+url+"/dev")
shell.openExternal("https://"+url+"/dev");
shell.openExternal("https://thedesk.top/how-to-login-misskey.html");
}
httpreq.responseType = "json";
return false;
}else{
$("#misskeylogin").hide();
$("#misskey-url").val("");
}
}
localStorage.setItem("mkc",mkc)
localStorage.setItem("msky","true");
httpreq.send(JSON.stringify({
appSecret: mkc
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
const {
@ -375,11 +373,8 @@ function misskeyLogin(url) {
$("#misskey").prop("checked", false);
localStorage.setItem("domain_tmp",url);
shell.openExternal(json.url);
var electron = require("electron");
}
}
}
//テキストボックスにURL入れた
@ -407,13 +402,13 @@ function code(code) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
token:code,
appSecret:localStorage.getItem("mkc")
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
var i = sha256(json.accessToken + localStorage.getItem("mkc"));
console.log(json);
@ -454,7 +449,7 @@ function code(code) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
grant_type: "authorization_code",
redirect_uri: "https://thedesk.top/hello.html",
@ -463,7 +458,7 @@ function code(code) {
code: code
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if (json["access_token"]) {
@ -595,13 +590,13 @@ function misskeyRefresh(obj,target,url){
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
username:obj[target].user,
i:localStorage.getItem("at")
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
return;

View File

@ -58,9 +58,7 @@
//hrefがhttp/httpsならブラウザで
if(urls){
if (urls[0]) {
const {
shell
} = require('electron');
const {shell} = require('electron');
if(~url.indexOf("thedeks.top")){
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
url="https://thedesk.top";
@ -81,8 +79,7 @@
//よく使うライブラリ
/*マルチバイト用切り出し*/
$.isSurrogatePear = function(upper, lower) {
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <=
0xDFFF;
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF;
};
$.mb_strlen = function(str) {
var ret = 0;

View File

@ -81,4 +81,80 @@ function formattimeutc(date){
str=str+date.getUTCMinutes()
}
return str;
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('custom-css-request', "");
ipc.on('custom-css-response', function (event, arg) {
if(arg==""){ return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type","text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if(arg==""){ return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type","text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
function makeCID(){
return randomStr(8)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(12);
}
function randomStr(l){
// 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length;
var r = "";
for(var i=0; i<l; i++){
r += c[Math.floor(Math.random()*cl)];
}
return r;
}
function rgbToHex(color)
{
// HEXに変換したものを代入する変数
var hex = '';
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
// IE8の場合はjQueryのcss()関数でHEXを返すので除外
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i))
{
return color;
}
// 正規表現
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/);
// 正規表現でマッチしたとき
if (regex)
{
var rgb =
[
// RGBからHEXへ変換
parseInt(regex[1]).toString(16),
parseInt(regex[2]).toString(16),
parseInt(regex[3]).toString(16)
];
for (var i = 0; i < rgb.length; ++i)
{
// rgb(1,1,1)のようなときHEXに変換すると1桁になる
// 1桁のときは前に0を足す
if (rgb[i].length == 1)
{
rgb[i] = '0' + rgb[i];
}
hex += rgb[i];
}
return hex;
}
console.error(color+':第1引数はRGB形式で入力');
}

2
app/js/platform/pickr.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -290,10 +290,10 @@ function preview(){
for(let l = 0; l < li.length; l++) {
var u=li[l].match(/^1\. (.+)$/);
var listUl='<li>'+u[1]+'</li>';
if(l == 0){
if(l === 0){
listUl='<ol>'+listUl;
}
if(l==li.length-1){
if(l===li.length-1){
listUl=listUl+'</ol>';
}
var bb=bb.replace(new RegExp(li[l], ""),listUl);

View File

@ -90,7 +90,7 @@ function emojiList(target) {
var page = Math.ceil(num / 126);
$("#emoji-sum").text(page);
var ct = Math.ceil(start / 126);
if (ct == 0) {
if (ct === 0) {
var ct = 1;
$("#emoji-before").addClass("disabled");
} else {

View File

@ -106,7 +106,7 @@ function media(b64, type, no) {
var start = "https://" + domain + "/api/drive/files/create";
httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
httpreq.responseType = 'json';
httpreq.responseType = "json";
if ($("#nsfw").hasClass("nsfw-avail")) {
var nsfw = true;
} else {
@ -121,12 +121,12 @@ function media(b64, type, no) {
var start = "https://" + domain + "/api/v1/media";
httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.send(fd);
}
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
var img = localStorage.getItem("img");

View File

@ -1,7 +1,7 @@
//Renpost
function renote(id, acct_id, remote) {
if ($("#pub_" + id).hasClass("rted")) {
return
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
@ -12,10 +12,10 @@ function renote(id, acct_id, remote) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,renoteId:id}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
$("[toot-id=" + id + "]").addClass("rted");
@ -58,10 +58,10 @@ function reactiontoggle(id,acct_id,tlid){
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if(json.reactionCounts){
@ -158,10 +158,10 @@ function reaction(mode,id,acct_id,tlid){
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id,reaction:mode}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
$(".fav_"+id).toggleClass("yellow-text");
}
}
@ -177,7 +177,7 @@ function vote(acct_id,id,to){
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id,choice:to}));
httpreq.onreadystatechange = function() {
voterefresh(acct_id,id)

View File

@ -11,7 +11,7 @@ function sec(){
}
function post(mode,postvis) {
if($("#toot-post-btn").prop("disabled")){
return
return false;
}
var str = $("#textarea").val();
var acct_id = $("#post-acct-sel").val();
@ -57,13 +57,13 @@ function post(mode,postvis) {
buttons: [lang.lang_post_btn1,lang.lang_post_btn2, lang.lang_post_btn3]
}
dialog.showMessageBox(options, function(arg) {
if(arg==1){
if(arg===1){
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass");
}else if(arg==2){
}else if(arg===2){
post("pass");
}
})
@ -162,10 +162,10 @@ function post(mode,postvis) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
if(str.indexOf(localStorage.getItem("stable"))==-1){
localStorage.removeItem("stable")
}
@ -234,10 +234,10 @@ function misskeyPost(){
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
if(str.indexOf(localStorage.getItem("stable"))==-1){
localStorage.removeItem("stable")
}

View File

@ -13,10 +13,10 @@ function fav(id, acct_id, remote) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if(remote!="remote"){
//APIのふぁぼカウントがおかしい
@ -63,10 +63,10 @@ function rt(id, acct_id, remote) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if (remote != "remote") {
@ -133,10 +133,10 @@ function follow(acct_id,remote) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify(ent));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if ($("#his-data").hasClass("following")) {
@ -168,10 +168,10 @@ function block(acct_id) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("blocking")) {
$("#his-data").removeClass("blocking");
$("#his-block-btn").text(lang.lang_status_block);
@ -210,10 +210,10 @@ function mute(acct_id) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(rq);
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("muting")) {
$("#his-data").removeClass("muting");
$("#his-mute-btn").text(lang.lang_status_mute);
@ -234,7 +234,7 @@ function del(id, acct_id) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id}));
}else{
var start = "https://" + domain + "/api/v1/statuses/" + id;
@ -242,11 +242,11 @@ function del(id, acct_id) {
httpreq.open('DELETE', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
}
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
}
}
}
@ -300,10 +300,10 @@ function pin(id, acct_id) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if ($("[toot-id=" + id + "]").hasClass("pined")) {
@ -326,10 +326,10 @@ function request(id, flag, acct_id) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
showReq();
@ -349,10 +349,10 @@ function domainblock(add, flag, acct_id) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
showDom();
@ -406,10 +406,10 @@ function pinUser(){
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if ($("#his-end-btn").hasClass("endorsed")) {

View File

@ -83,7 +83,7 @@ function additional(acct_id, tlid) {
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function()
{
if( this.readyState == 4 && this.status == 200 ) {
if( this.readyState === 4 && this.status === 200 ) {
if( this.response){
var json=this.response;
var emojis=json.emojis;

View File

@ -78,10 +78,11 @@ function details(id, acct_id, tlid) {
$("#tootmodal").attr("data-user",scn);
}
context(id, acct_id);
var dom=null;
if(!local){
var dom=scn.replace(/.+@/g,'');
dom=scn.replace(/.+@/g,'');
}else{
var dom=domain;
dom=domain;
}
beforeToot(id, acct_id, dom);
userToot(id, acct_id, uid);
@ -448,7 +449,7 @@ function shot(){
})
}
//翻訳
function trans(tar){
function trans(tar,to){
var html=$("#toot-this .toot").html();
if(html.match(/^<p>(.+)<\/p>$/)){
html = html.match(/^<p>(.+)<\/p>$/)[1];
@ -457,18 +458,21 @@ function trans(tar){
html = html.replace(/<p>/g, "\n");
html = html.replace(/<\/p>/g, "\n");
html=$.strip_tags(html);
if(~tar.indexOf("zh")){
tar="zh";
}
$("#toot-this .additional").text("Loading...(Powered by Google Translate)");
var exec='https://script.google.com/macros/s/AKfycbz0ETqcUxwNlw961GjErNb7vr_X18N2s1AS5Xu5nFTbYXcdcRM/exec?text='+encodeURIComponent(html)+'&source='+tar+'&target=ja'
var exec='https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text='+encodeURIComponent(html)+'&source='+tar+'&target='+to
console.log(exec);
fetch(exec, {
method: 'GET',
}).then(function(response) {
return response.text();
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(text) {
$("#toot-this .additional").html('<span class="gray">'+text+'</span>');
$("#toot-this .additional").html('<span class="gray">'+text.text+'</span>');
});
}
//ブラウザで開く

View File

@ -15,10 +15,11 @@ function date(str, datetype) {
} else {
var min = date.getMinutes();
}
var sec=null;
if (date.getSeconds() < 10) {
var sec = "0" + date.getSeconds();
sec = "0" + date.getSeconds();
} else {
var sec = date.getSeconds();
sec = date.getSeconds();
}
if (datetype == "full") {
var ret = date.getFullYear() + "/" + month + "/" + date.getDate() + "/ " +
@ -56,10 +57,11 @@ function date(str, datetype) {
//特殊フォーマット(インスタンス情報で利用)
function crat(str) {
var date = new Date(str);
var mnt=null;
if(date.getMonth()<9){
var mnt="0"+(date.getMonth()+1);
mnt="0"+(date.getMonth()+1);
}else{
var mnt=date.getMonth()+1;
mnt=date.getMonth()+1;
}
if(date.getDate()<10){
var dat="0"+date.getDate();

View File

@ -32,9 +32,6 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
console.log(obj);
var templete = '';
if(obj[0]){
if(tlid==1){
console.log("testalive:"+"lastunix_"+ tlid+":"+date(obj[0].created_at, 'unix'))
}
localStorage.setItem("lastunix_"+ tlid,date(obj[0].created_at, 'unix'));
}

View File

@ -192,7 +192,7 @@ function makeNewFilter(){
httpreq.open(method, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
phrase: phr,
context: cont,
@ -201,7 +201,7 @@ function makeNewFilter(){
expires_in:time
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
filter();
filterUpdate(acct_id)
@ -283,10 +283,10 @@ function filterDel(id,acct_id){
httpreq.open("DELETE", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
filter();
filterUpdate(acct_id)

View File

@ -56,12 +56,12 @@ function makeNewList(){
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
title: text
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
list();
$("#list-add").val("")
@ -166,12 +166,12 @@ function listAdd(id,user,acct_id){
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
account_ids: [user]
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
hisList(user,acct_id)
}
@ -186,12 +186,12 @@ function listRemove(id,user,acct_id){
httpreq.open('DELETE', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
account_ids: [user]
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
hisList(user,acct_id)
}

View File

@ -39,10 +39,10 @@ function notfColumn(acct_id, tlid, sys){
var body="";
}
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(body);
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
var max_id = httpreq.getResponseHeader("link").match(/\?max_id=([0-9]+)/)[1];
if(json[0]){
@ -391,10 +391,10 @@ function notfmore(tlid) {
var body="";
}
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(body);
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
var max_id = httpreq.getResponseHeader("link").match(/\?max_id=([0-9]+)/)[1];

View File

@ -2,7 +2,7 @@
function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = '';
if(obj[0]){
if(tlid==1){
if(tlid===1){
console.log("testalive:"+"lastunix_"+ tlid+":"+date(obj[0].created_at, 'unix'))
}
localStorage.setItem("lastunix_"+ tlid,date(obj[0].created_at, 'unix'));
@ -84,7 +84,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
var card = localStorage.getItem("card_" + tlid);
if (!sent) {
var sent = 500;
sent = 500;
}
if (!ltr) {
var ltr = 500;
@ -614,8 +614,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
});
}
//日本語じゃない
if(toot.language!="ja"){
var trans='<div class="action pin"><a onclick="trans(\''+toot.language+'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang.lang_parse_trans+'"><i class="material-icons">g_translate</i></a></div>';
if(toot.language!=lang.language && toot.language){
var trans='<div class="action pin"><a onclick="trans(\''+toot.language+'\',\''+lang.language+'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang.lang_parse_trans+'"><i class="material-icons">g_translate</i></a></div>';
}else{
var trans="";
}
@ -673,9 +673,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
var result_hide="hide";
}
if(toot.poll.expired){
var ended=lang.lang_parse_endedvote;
}else{
var ended=date(toot.poll.expires_at, datetype);
}
Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc];
if(!toot.poll.voted){
if(!toot.poll.voted && !toot.poll.expired){
var votesel='voteSelMastodon(\''+acct_id+'\',\''+toot.poll.id+'\','+keyc+','+toot.poll.multiple+')';
var voteclass="pointer waves-effect waves-light";
}else{
@ -686,7 +691,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
});
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>' +
date(toot.poll.expires_at, datetype) + '</span></div>';
ended+ '</span></div>';
}
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
@ -905,7 +910,7 @@ function client(name) {
buttons: [lang.lang_parse_clientno,lang.lang_parse_clientemp, lang.lang_parse_clientmute]
}
dialog.showMessageBox(options, function(arg) {
if(arg==1){
if(arg===1){
var cli = localStorage.getItem("client_emp");
var obj = JSON.parse(cli);
if(!obj){
@ -933,7 +938,7 @@ function client(name) {
}
var json = JSON.stringify(obj);
localStorage.setItem("client_emp", json);
}else if(arg==2){
}else if(arg===2){
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if(!obj){

View File

@ -70,7 +70,7 @@ function voteMastodon(acct_id,id){
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({choices:choice}));
httpreq.onreadystatechange = function() {
voteMastodonrefresh(acct_id,id)

View File

@ -116,7 +116,7 @@ function graphDraw(tag){
var two=50-(his[2].uses/max*50);
var one=50-(his[1].uses/max*50);
var zero=50-(his[0].uses/max*50);
if(max==0){
if(max===0){
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people;

View File

@ -289,7 +289,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
say(obj.content)
}
var templete = parse([obj], type, acct_id, tlid,"",mute);
if ($("timeline_box_"+tlid+"_box .tl-box").scrollTop() == 0) {
if ($("timeline_box_"+tlid+"_box .tl-box").scrollTop() === 0) {
$("#timeline_" + tlid).prepend(templete);
}else{
var pool = localStorage.getItem("pool_" + tlid);
@ -578,7 +578,7 @@ function com(type, data) {
return "tag/" + data + "?"
}else if (type == "list") {
return "list/" + data + "?"
}else if (type="dm") {
}else if (type=="dm") {
return "direct?"
}
}

View File

@ -222,13 +222,13 @@ function imgCont(type) {
}
}
}
if ($("#" + id + "-image-" + (key * 1 + 1)).length == 0) {
if ($("#" + id + "-image-" + (key * 1 + 1)).length === 0) {
$("#image-next").prop("disabled", true);
} else {
$("#image-next").prop("disabled", false);
}
console.log("#" + id + "-image-" + (key * 1 - 1));
if ($("#" + id + "-image-" + (key * 1 - 1)).length == 0) {
if ($("#" + id + "-image-" + (key * 1 - 1)).length === 0) {
$("#image-prev").prop("disabled", true);
} else {
$("#image-prev").prop("disabled", false);
@ -289,7 +289,7 @@ function zoom(z) {
'cursor': 'move'
}); //指が触れたか検知
$(this).on('touchmove', function(event) {
if ($(target).data('down') == true) {
if ($(target).data('down') === true) {
// スクロール
console.log($(target).data('x'));
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') -

View File

@ -311,7 +311,7 @@ function removeColumn(tlid) {
ipc.send('column-del', "");
ipc.on('column-del-reply', function (event, arg) {
console.log(arg);
if(arg==1){
if(arg===1){
localStorage.removeItem("card_" + tlid);
obj.splice(tlid, 1);
for(var i=0;i<obj.length;i++){

View File

@ -10,7 +10,7 @@ function scrollck() {
$(".tl-box").each(function(i, elem) {
var tlid = $(this).attr('tlid');
//一番上ならためていた新しいトゥートを表示
if ($(this).scrollTop() == 0) {
if ($(this).scrollTop() === 0) {
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
$("#timeline_" + tlid).prepend(pool);

View File

@ -10,13 +10,20 @@ function settings() {
var cd = $("[name=theme]:checked").val();
var ct = $("[for="+cd+"]").html();
if (cd != localStorage.getItem("theme")) {
Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000);
if(cd=="custom" && !$("#custom-sel-sel").val()){
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
}else{
if (cd != localStorage.getItem("theme")) {
Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000);
}
//テーマはこの場で設定
themes(cd);
localStorage.setItem("theme", cd);
}
//テーマはこの場で設定
themes(cd);
localStorage.setItem("theme", cd);
var nd = $("[name=nsfw]:checked").val();
var nt = $("[for=n_"+nd+"]").text();
if (nd != localStorage.getItem("nsfw")) {
@ -435,16 +442,9 @@ function load() {
var sect = "nothing";
}
$("#sec-" + sect).prop("checked", true);
}
//最初に読む
load();
climute();
wordmute();
wordemp();
checkSpotify();
voiceSettingLoad();
oksload();
npprovider();
function climute(){
//クライアントミュート
var cli = localStorage.getItem("client_mute");
@ -723,4 +723,208 @@ function font(){
}
function insertFont(name){
$("#font").val(name);
}
}
$(".color-picker").each(function(i, elem) {
pickerDefine(i,"fff");
});
function pickerDefine(i,color){
var pickr = new Pickr({
el: '#color-picker'+i,
default: color,
showAlways: true,
appendToBody: true,
closeWithKey: 'Escape',
comparison: false,
components: {
preview: true, // Left side color comparison
opacity: false, // Opacity slider
hue: true, // Hue slider
interaction: {
rgba: false, // rgba option (red green blue and alpha)
input: true, // input / output element
}
},
strings: {
save: 'Save', // Default for save button
clear: 'Clear' // Default for clear button
}
});
pickr.on('change', (...args) => {
var rgb='rgb('+args[0].toRGBA()[0]+','+args[0].toRGBA()[1]+','+args[0].toRGBA()[2]+')';
$("#color-picker"+i+"_value").val(rgb)
});
}
function customComp(){
var nameC=$("#custom_name").val();
if(!nameC){return false;}
var descC=$("#custom_desc").val();
var primaryC=$("#color-picker0_value").val();
if(!primaryC){primaryC="rgb(255,255,255)"}
var secondaryC=$("#color-picker1_value").val();
if(!secondaryC){secondaryC="rgb(255,255,255)"}
var textC=$("#color-picker2_value").val();
if(!textC){textC="rgb(255,255,255)"}
var accentC=$("#color-picker3_value").val();
if(!accentC){accentC="rgb(255,255,255)"}
var multi = localStorage.getItem("multi");
var my=JSON.parse(multi)[0].name;
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
id=makeCID();
}
var json={
"name": nameC,
"author": my,
"desc": descC,
"base": $("[name=direction]:checked").val(),
"vars": {
"primary": primaryC,
"secondary": secondaryC,
"text": textC
},
"props": {
"TheDeskAccent": accentC
},
"id": id
}
$("#custom_json").val(JSON.stringify(json));
themes();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.send('theme-json-create', JSON.stringify(json));
}
function deleteIt(){
var id=$("#custom-sel-sel").val();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.on('theme-json-delete-complete', function (event, args) {
ctLoad()
});
ipc.send('theme-json-delete', id);
}
function ctLoad(){
ipc.send('theme-json-list', "");
ipc.on('theme-json-list-response', function (event, args) {
console.log(args);
var templete="";
Object.keys(args).forEach(function(key) {
var theme = args[key];
var themeid=theme.id
templete = templete+'<option value="'+themeid+'">' + theme.name +'</option>';
});
if(args[0]){
localStorage.setItem("customtheme-id",args[0].id)
}
$("#custom-sel-sel").html(templete);
templete='<option value="add_new">'+$("#edit-selector").attr("data-add")+'</option>'+templete;
$("#custom-edit-sel").html(templete);
$('select').material_select('update');
});
}
function customSel(){
var id=$("#custom-sel-sel").val();
localStorage.setItem("customtheme-id",id)
}
function custom(){
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
$("#delTheme").addClass("disabled")
}else{
$("#delTheme").removeClass("disabled")
ipc.send('theme-json-request', id);
ipc.on('theme-json-response', function (event, args) {
console.log(args);
$("#custom_name").val(args.name);
$("#custom_desc").val(args.desc);
$("#"+args.base).prop("checked", true);
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0,rgbToHex(args.vars.primary))
$("#color-picker0_value").val(args.vars.primary);
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1,rgbToHex(args.vars.secondary))
$("#color-picker1_value").val(args.vars.secondary);
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker2_value").val(args.vars.text);
pickerDefine(2,rgbToHex(args.vars.text))
if(args.props){
if(args.props.TheDeskAccent){
var accent=args.props.TheDeskAccent;
}else{
var accent=args.vars.secondary;
}
}else{
var accent=args.vars.secondary;
}
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
pickerDefine(3,rgbToHex(accent))
$("#custom_json").val(JSON.stringify(args));
});
}
}
function customImp(){
var json=$("#custom_import").val();
if(JSON5.parse(json)){
ipc.send('theme-json-create', json);
}else{
alert("Error")
}
}
ipc.on('theme-json-create-complete', function (event, args) {
$("#custom_import").val("");
ctLoad()
});
//最初に読む
load();
climute();
wordmute();
wordemp();
checkSpotify();
voiceSettingLoad();
oksload();
npprovider();
ctLoad()

View File

@ -11,6 +11,7 @@ function themes(theme) {
$("html").removeClass("greentheme");
$("html").removeClass("browntheme");
$("html").removeClass("blacktheme");
$("html").removeClass("customtheme");
$("html").addClass(theme+"theme");
var font = localStorage.getItem("font");
if(font){
@ -18,5 +19,10 @@ function themes(theme) {
}else{
$("html").css("font-family","");
}
if(theme=="custom"){
if(localStorage.getItem("customtheme-id")){
ipc.send('theme-css-request', localStorage.getItem("customtheme-id"));
}
}
}
themes();

View File

@ -12,13 +12,13 @@ function profedit() {
httpreq.open('PATCH', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
display_name: name,
note: des,
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
$('#his-data').modal('close');
todc();
}
@ -47,10 +47,10 @@ function imgChange(imgfile, target) {
httpreq.open('PATCH', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(fd);
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
$('#his-data').modal('close');

View File

@ -46,7 +46,7 @@ function udgEx(user,acct_id){
shell.openExternal(url);
}
});
return;
return true;
}
function udg(user, acct_id) {
reset();

155
app/language.js Normal file
View File

@ -0,0 +1,155 @@
// Create the Application's main menu
function templete(lang){
const electron = require("electron");
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const dict={
"application":{
"ja":"アプリケーション",
"en":"Application"
},
"about":{
"ja":"TheDeskについて",
"en":"About TheDesk"
},
"quit":{
"ja":"終了",
"en":"Quit"
},
"edit":{
"ja":"編集",
"en":"Edit"
},
"undo":{
"ja":"元に戻す",
"en":"Undo"
},
"redo":{
"ja":"やり直す",
"en":"Redo"
},
"cut":{
"ja":"切り取り",
"en":"Cut"
},
"copy":{
"ja":"コピー",
"en":"Copy"
},
"paste":{
"ja":"貼り付け",
"en":"Paste"
},
"selall":{
"ja":"すべて選択",
"en":"Select All"
},
"view":{
"ja":"表示",
"en":"View"
},
"reload":{
"ja":"再読み込み",
"en":"Reload"
},
"window":{
"ja":"ウィンドウ",
"en":"Window"
},
"minimun":{
"ja":"最小化",
"en":"Minimarize"
},
"close":{
"ja":"閉じる",
"en":"Close"
}
}
const menu = [{
label: dict.application[lang],
submenu: [
{ label: dict.about[lang], click: function() {
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);
} },
{ type: "separator" },
{ label: dict.quit[lang], accelerator: "Command+Q", click: function() { app.quit(); }}
]}, {
label: dict.edit[lang],
submenu: [
{ label: dict.undo[lang], accelerator: "CmdOrCtrl+Z", selector: "undo:" },
{ label: dict.redo[lang], accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
{ type: "separator" },
{ label: dict.cut[lang], accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: dict.copy[lang], accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: dict.paste[lang], accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ label: dict.selall[lang], accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
]},{
label: dict.view[lang],
submenu: [
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function() { mainWindow.toggleDevTools(); }
},
{
label: dict.reload[lang],
accelerator: 'CmdOrCtrl+R',
click: function() { mainWindow.webContents.send('reload', " "); }
}
]
},
{
label: dict.window[lang],
role: 'window',
submenu: [
{
label: dict.minimun[lang],
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
},
{
label: dict.close[lang],
accelerator: 'CmdOrCtrl+W',
role: 'close'
},
]
}
];
return menu;
}
function delsel(lang){
const dict={
"delete":{
"ja":"カラム削除",
"en":"Delete this column"
},
"mess":{
"ja":"カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)",
"en":"Delete this column(URL analyzes of all windows will be disabled.)"
},
"yes":{
"ja":"はい",
"en":"Yes"
},
"no":{
"ja":"いいえ",
"en":"No"
}
}
const options = {
type: 'info',
title: dict.delete[lang],
message: dict.mess[lang],
buttons: [dict.no[lang], dict.yes[lang]]
}
return options;
}
exports.template = templete;
exports.delsel = delsel;

View File

@ -9,9 +9,11 @@ const shell = electron.shell;
const os = require('os')
const path = require('path')
const fm = require('font-manager');
const language = require('./language.js');
const Menu=electron.Menu
var updatewin=null;
const join = require('path').join;
var JSON5 = require('json5');
// アプリケーションをコントロールするモジュール
const app = electron.app;
// ウィンドウを作成するモジュール
@ -24,6 +26,8 @@ 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 window_size;
try {
@ -43,9 +47,21 @@ try {
height: "string",
x: "string",
y: "string"
}; // デフォルトバリュー
}
try {
var lang = fs.readFileSync(lang_path, 'utf8');
} catch (e) {
var lang=app.getLocale();
if(~lang.indexOf("ja")){
lang="ja";
}else{
lang="en";
}
fs.writeFileSync(lang_path,lang);
}
console.log("launch:"+lang);
// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
if (process.platform != 'darwin') {
@ -64,17 +80,6 @@ function createWindow() {
var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,simpleFullscreen:true}
}
mainWindow = new BrowserWindow(arg);
try {
var lang = fs.readFileSync(lang_path, 'utf8');
} catch (e) {
var lang=app.getLocale();
if(~lang.indexOf("ja")){
lang="ja";
}else{
lang="en";
}
fs.writeFileSync(lang_path,lang);
}
electron.session.defaultSession.clearCache(() => {})
if(process.argv){
if(process.argv[1]){
@ -119,60 +124,11 @@ function createWindow() {
mainWindow.on('maximize', function() {
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()));
});
// Create the Application's main menu
var template = [{
label: "アプリケーション",
submenu: [
{ label: "TheDeskについて", click: function() { about(); } },
{ type: "separator" },
{ label: "終了", accelerator: "Command+Q", click: function() { app.quit(); }}
]}, {
label: "編集",
submenu: [
{ label: "元に戻す", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
{ label: "やり直し", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
{ type: "separator" },
{ label: "切り取り", accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: "コピー", accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: "貼り付け", accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ label: "すべて選択", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
]},{
label: "表示",
submenu: [
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function() { mainWindow.toggleDevTools(); }
},
{
label: '再読み込み',
accelerator: 'CmdOrCtrl+R',
click: function() { mainWindow.webContents.send('reload', " "); }
}
]
},
{
label: 'ウィンドウ',
role: 'window',
submenu: [
{
label: '最小化',
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
},
{
label: '閉じる',
accelerator: 'CmdOrCtrl+W',
role: 'close'
},
]
}
];
var platform=process.platform;
var bit=process.arch;
if(platform=="darwin"){
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang)));
}
}
// Electronの初期化完了後に実行
@ -211,9 +167,99 @@ ipc.on('native-notf', function(e, args) {
});
//言語
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('update', function(e, x, y) {
var platform=process.platform;
@ -224,7 +270,8 @@ ipc.on('update', function(e, x, y) {
height: 400,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false
"resizable": false,
"modal":true
});
var lang = fs.readFileSync(lang_path, 'utf8');
updatewin.loadURL('file://' + __dirname + '/view/'+lang+'/update.html');
@ -455,12 +502,8 @@ ipc.on('file-select', (e, args) => {
});
ipc.on('column-del', (e, args) => {
const options = {
type: 'info',
title: 'カラム削除',
message: "カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)",
buttons: ['いいえ', 'はい']
}
console.log(lang);
var options=language.delsel(lang)
dialog.showMessageBox(options, function(index) {
mainWindow.webContents.send('column-del-reply', index);
})
@ -505,7 +548,7 @@ ipc.on('nano', function (e, x, y) {
buttons: ['拒否', '許可','永続的に許可']
}
dialog.showMessageBox(options, function(index) {
if(index==2){
if(index===2){
mainWindow.webContents.send('adobeagree', "true");
}
if(index>0){

View File

@ -178,10 +178,10 @@ function post(){
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if (httpreq.readyState === 4) {
$("#textarea").val("");
}
}

21
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "17.0.2",
"version": "17.2.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -1655,6 +1655,21 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"json5": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
"integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
"requires": {
"minimist": "^1.2.0"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
}
}
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@ -1947,7 +1962,8 @@
"node-addon-api": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.6.2.tgz",
"integrity": "sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA=="
"integrity": "sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA==",
"optional": true
},
"node-gyp": {
"version": "3.8.0",
@ -2119,6 +2135,7 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/nowplaying-node/-/nowplaying-node-0.1.3.tgz",
"integrity": "sha512-nEvuw93xmgZS7X1XqUaLJXhd4iB54xjTOnYuEEoPMBHHs3QWGECNKvnD0uDBCe269sUK8Z5InX5rPjzf3vRVrw==",
"optional": true,
"requires": {
"@types/node": "^10.1.2",
"node-addon-api": "^1.2.0",

View File

@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "17.1.1",
"version": "17.2.0",
"description": "TheDesk is a Mastodon client for PC.",
"main": "main.js",
"scripts": {
@ -37,6 +37,7 @@
"electron-dl": "^1.11.0",
"font-manager": "^0.3.0",
"jimp": "^0.2.28",
"json5": "^2.1.0",
"node-notifier": "^5.2.1",
"sumchecker": "^2.0.2"
},

View File

@ -32,7 +32,7 @@
<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="Miria (17.1.1)";
var ver="Miria (17.2.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -582,17 +582,18 @@ 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-Miria_17-1-0" class="release-do" style="display:none; ">
<div id="release-Miria_17-2-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Miria (17.1.0)</h5>
トゥートボックスがフロートタイプに。左下、右下以外にも自由においてください。<br>
いろいろとアニメーション入れた(硬派な方は設定「タイムラインの設定」からオフに)<br>
アンケートができるように(OK:Mastodon (2.8~)/WIP: votedon./ NG: ニコフレ)<br>
フォント選択機能が復活<br>
WindowsからiTunesやAIMP、その他CAD系のNowPlayingができるように。要プラグインのソフトもある。<br>
<h5>Release Note Miria (17.2.0)</h5>
カスタムテーマを実装。Misskeyのテーマとの一定の互換性あり。<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>から80を超えるテーマを入手。
<a href="https://thedesk.top/mias.html">注意点</a><br>
Misskeyのログイン方法変更につき、いちいちDevCenterに行かなくてもよくなりました。<br>
日本語でベタ書きしていたダイアログを一部多言語対応に変更。<br>
<img class="emoji" draggable="false" alt="⚠" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">TheDeskのMisskeyについての機能追加は終了しています。<br>
</div>
<br><br>
<h3>Support TheDesk!</h3>

View File

@ -12,16 +12,20 @@
<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/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../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>
<h4>Preferences</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
@ -30,21 +34,11 @@
</div>
<div class="collapsible-body">
<h5>Languages</h5>
<a href="../ja/setting.html">日本語(Japanese)</a>/<a href="../en/setting.html">English</a>/<a href="../ps/setting.html">Crowdin web translate</a>/
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>
<h5>Themes</h5>
<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>
<br>
<h5>Popup notification(on Windows)</h5>Hide to set "0"
<br>
@ -88,6 +82,72 @@
</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>&nbsp;<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>
@ -322,7 +382,7 @@
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
</div>
<div class="collapsible-body">
<!-->h5>NowPlaying Provider(Windows)</h5>
<h5>NowPlaying Provider(Windows)</h5>
macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a> is required. And MusicBee requires CAD.<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
@ -337,7 +397,7 @@
<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-->
<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>
@ -443,6 +503,7 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/lang/lang.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>

View File

@ -32,7 +32,7 @@
<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="Miria (17.1.1)";
var ver="Miria (17.2.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -582,17 +582,18 @@ 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-Miria_17-1-0" class="release-do" style="display:none; ">
<div id="release-Miria_17-2-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Miria (17.1.0)</h5>
トゥートボックスがフロートタイプに。左下、右下以外にも自由においてください。<br>
いろいろとアニメーション入れた(硬派な方は設定「タイムラインの設定」からオフに)<br>
アンケートができるように(OK:Mastodon (2.8~)/WIP: votedon./ NG: ニコフレ)<br>
フォント選択機能が復活<br>
WindowsからiTunesやAIMP、その他CAD系のNowPlayingができるように。要プラグインのソフトもある。<br>
<h5>Release Note Miria (17.2.0)</h5>
カスタムテーマを実装。Misskeyのテーマとの一定の互換性あり。<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>から80を超えるテーマを入手。
<a href="https://thedesk.top/mias.html">注意点</a><br>
Misskeyのログイン方法変更につき、いちいちDevCenterに行かなくてもよくなりました。<br>
日本語でベタ書きしていたダイアログを一部多言語対応に変更。<br>
<img class="emoji" draggable="false" alt="⚠" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">TheDeskのMisskeyについての機能追加は終了しています。<br>
</div>
<br><br>
<h3>ご支援ください。</h3>

View File

@ -12,16 +12,20 @@
<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/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../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>
<h4>設定</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
@ -30,21 +34,11 @@
</div>
<div class="collapsible-body">
<h5>言語</h5>
<a href="../ja/setting.html">日本語(Japanese)</a>/<a href="../en/setting.html">English</a>/<a href="../ps/setting.html">Crowdin web translate</a>/
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>
<h5>テーマの設定</h5>
<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>
<br>
<h5>新規通知のポップアップお知らせの表示秒数</h5>0に設定すると表示されません
<br>
@ -88,6 +82,72 @@
</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>&nbsp;<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>
@ -322,7 +382,7 @@
<i class="fa fa-spotify"></i>SpotifyとNowPlayingの設定
</div>
<div class="collapsible-body">
<!-->h5>NowPlayingのソース(Windows)</h5>
<h5>NowPlayingのソース(Windows)</h5>
macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
@ -337,7 +397,7 @@
<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-->
<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>
@ -443,6 +503,7 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/lang/lang.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>

View File

@ -582,17 +582,18 @@ 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-Miria_17-1-1" class="release-do" style="display:none; ">
<div id="release-Miria_17-2-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Miria (17.1.0)</h5>
トゥートボックスがフロートタイプに。左下、右下以外にも自由においてください。<br>
いろいろとアニメーション入れた(硬派な方は設定「タイムラインの設定」からオフに)<br>
アンケートができるように(OK:Mastodon (2.8~)/WIP: votedon./ NG: ニコフレ)<br>
フォント選択機能が復活<br>
WindowsからiTunesやAIMP、その他CAD系のNowPlayingができるように。要プラグインのソフトもある。<br>
<h5>Release Note Miria (17.2.0)</h5>
カスタムテーマを実装。Misskeyのテーマとの一定の互換性あり。<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>から80を超えるテーマを入手。
<a href="https://thedesk.top/mias.html">注意点</a><br>
Misskeyのログイン方法変更につき、いちいちDevCenterに行かなくてもよくなりました。<br>
日本語でベタ書きしていたダイアログを一部多言語対応に変更。<br>
<img class="emoji" draggable="false" alt="⚠" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">TheDeskのMisskeyについての機能追加は終了しています。<br>
</div>
<br><br>
<h3>{{supportme}}</h3>

View File

@ -4,13 +4,14 @@
"showSelectProf": "crwdns386:0crwdne386:0",
"closethisbox": "crwdns387:0crwdne387:0",
"toot": "crwdns388:0crwdne388:0",
"post-new": "crwdns2402:0crwdne2402:0",
"nsfwDes": "crwdns389:0crwdne389:0",
"cwDes": "crwdns390:0crwdne390:0",
"selfile": "crwdns391:0crwdne391:0",
"adobephoto": "crwdns392:0crwdne392:0",
"insertEmoji": "crwdns393:0crwdne393:0",
"NPSpotify": "crwdns1880:0crwdne1880:0",
"NPiTunes": "crwdns1882:0crwdne1882:0",
"NPiTunes": "crwdns2404:0crwdne2404:0",
"schedule": "crwdns1884:0crwdne1884:0",
"postat": "crwdns1886:0crwdne1886:0",
"scheduleWarn": "crwdns1888:0crwdne1888:0",
@ -43,6 +44,13 @@
"thingsEmoji": "crwdns420:0crwdne420:0",
"symbolEmoji": "crwdns421:0crwdne421:0",
"flagsEmoji": "crwdns422:0crwdne422:0",
"poll": "crwdns2406:0crwdne2406:0",
"pollDdisabled": "crwdns2408:0crwdne2408:0",
"pollProvider": "crwdns2410:0crwdne2410:0",
"polluntil": "crwdns2412:0crwdne2412:0",
"choice": "crwdns2414:0crwdne2414:0",
"pollmulti": "crwdns2416:0crwdne2416:0",
"expires_in": "crwdns2418:0crwdne2418:0",
"contextBefore": "crwdns423:0crwdne423:0",
"thisToot": "crwdns424:0crwdne424:0",
"contextAfter": "crwdns425:0crwdne425:0",
@ -131,6 +139,7 @@
"days": "crwdns507:0crwdne507:0",
"hours": "crwdns508:0crwdne508:0",
"mins": "crwdns509:0crwdne509:0",
"secs": "crwdns2420:0crwdne2420:0",
"warnOnIntegratedTL": "crwdns510:0crwdne510:0",
"helloTheDesk": "crwdns511:0crwdne511:0",
"addColumn": "crwdns512:0crwdne512:0",

View File

@ -1,199 +0,0 @@
{
"language":"en",
"lang_toot":"Toot",
"lang_there":"Yes",
"lang_nothing":"None",
"lang_yesno":"Yes",
"lang_no":"No",
"lang_progress":"Wait...",
"lang_edit":"Edit",
"lang_del":"Delete",
"lang_add":"Add",
"lang_fatalerroroccured":"Some errors are occured, please restart TheDesk.",
"lang_speech":"Google US English",
"lang_lang":"Language",
"lang_langlocale":"English",
"lang_back":"Back",
"lang_set":"Set",
"lang_langadd":"Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.",
"lang_version_usever":"No update is found({{ver}})",
"lang_version_skipver":"Update was ignored.",
"lang_login_noauth":"Show TL of unlogined accounts",
"lang_manager_info":"About this instance",
"lang_manager_refresh":"Refresh",
"lang_manager_delete":"Logout",
"lang_manager_color":"Account Color",
"lang_manager_confirm":"is about to logout. Continue?",
"lang_manager_mainAcct":"Done:choose main account",
"lang_manager_def":"Default",
"lang_manager_none":"None",
"lang_manager_godev":"Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_bbmd_misskey":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_emoji_get":"Get emojis",
"lang_emoji_custom":"Custom emojis",
"lang_postimg_previewdis":"cannot preview",
"lang_postimg_aftupload":"You cannot change accounts after uploading.",
"lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
"lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.",
"lang_post_cwtitle":"Auto CW Alert",
"lang_post_cwtxt":"You are about to post longer toot than you set.\nWarning text:",
"lang_post_btn1":"Cancel (will not post)",
"lang_post_btn2":"Make text hidden automatically",
"lang_post_btn3":"Continue to post",
"lang_status_favWarn":"It will take a miunte to favourite a remote toot.",
"lang_status_btWarn":"It will take a miunte to boost a remote toot.",
"lang_status_follow":"Follow",
"lang_status_unfollow":"Unfollow",
"lang_status_block":"Block",
"lang_status_unblock":"Unblock",
"lang_status_mute":"Mute",
"lang_status_unmute":"Unmute",
"lang_status_redraft":"Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_emphas":"'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas":"'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse":"Not feature on profile",
"lang_status_endorse":"Feature on profile",
"lang_suggest_nodata":"Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply":"Reply Mode. Ctrl+Shift+C to clear.",
"lang_cards_check":" check",
"lang_cards_pip":"PiP mode",
"lang_details_nodata":"No data",
"lang_details_filtered":"Filtered toot",
"lang_details_embed":"Embed HTML is cliped.",
"lang_details_url":"URL of this toot is cliped.",
"lang_details_txt":"Content of this toot is cliped.",
"lang_filter_nodata":"No data",
"lang_filter_errordegree":"Please check a context",
"lang_list_nodata":"No data",
"lang_list_show":"Show",
"lang_list_users":"Users list",
"lang_list_nouser":"No users in this list.",
"lang_list_add":"Add to the list",
"lang_list_remove":"Remove from the list",
"lang_notf_new":" new notifications",
"lang_speech_refresh":"Save value about TTS config",
"lang_src_ts":"chronological order",
"lang_src_people":" people toot",
"lang_tags_always":"Always toots with ",
"lang_tags_realtime":"Tag-stream toot",
"lang_tags_tagunpin":"Unpin {{tag}}",
"lang_tags_tagwarn":"When you toot without {{tag}}, tag-streaming mode will be off.",
"lang_tl_media":"Media",
"lang_tl_reconnect":"Reconnect to streaming API",
"lang_layout_gotop":"Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct":"{{notf}} of this account",
"lang_layout_delthis":"Remove this column",
"lang_layout_setthis":"Preferences of this column",
"lang_layout_mediafil":"Media filtering",
"lang_layout_linkana":"Auto Link Analyzer",
"lang_layout_linkanades":"Auto link analyzer",
"lang_layout_tts":"Text to speech ",
"lang_layout_reconnect":"Reconnect to streaming API",
"lang_layout_headercolor":"Header color of this column",
"lang_layout_nodata":"[No data]<br>F5/⌘+R to reload",
"lang_layout_dm":"Direct Message",
"lang_layout_webviewmode":"Prefer WebView",
"lang_excluded":"Excluded type of notification",
"lang_spotify_img":"Attach an album artwork",
"lang_spotify_imgno":"Not attach an album artwork",
"lang_spotify_acct":"Connect TheDesk to Spotify",
"lang_spotify_np":"Done:templete of NowPlaying",
"lang_setting_npprovide":"NowPlaying provider:{{set}}",
"lang_hisdata_frcreq":"Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn":"Unfollow accounts will be shown.",
"lang_hisdata_taketime":"It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey":"Misskey is unable to request.",
"lang_showontl_movetxt":"This account was moved",
"lang_showontl_movebtn":"Continue on the new account",
"lang_showontl_botacct":"[bot]",
"lang_showontl_followed":"Following you",
"lang_showontl_notf":"Notification ",
"lang_showontl_domain":"Domain ",
"lang_showontl_listwarn":"Follow to add this user to lists.",
"lang_parse_mentioned":" replied to you",
"lang_parse_faved":" favourited your toot",
"lang_parse_bted":" boosted your toot",
"lang_parse_btedsimple":" boosted",
"lang_parse_notftime":"Actioned at",
"lang_parse_cwshow":"Show",
"lang_parse_fulltext":"Full size text:",
"lang_parse_autofold":"Auto folded",
"lang_parse_more":"More",
"lang_parse_url":"URL Analyzer",
"lang_parse_tagTL":"Timeline of {{tag}}",
"lang_parse_tagtoot":"Toot with {{tag}}",
"lang_parse_tagpin":"Pin {{tag}}",
"lang_parse_public":"Public",
"lang_parse_unlisted":"Unlisted",
"lang_parse_private":"Private",
"lang_parse_direct":"Direct",
"lang_parse_clickcopy":"Click to copy text of this toot",
"lang_parse_clickcopyurl":"Click to copy URL of this toot",
"lang_parse_trans":"Translate to Japanese",
"lang_parse_replyto":"Reply to this toot",
"lang_parse_bt":"Boost this toot",
"lang_parse_fav":"Favourite this toot",
"lang_parse_quote":"Quote this toot",
"lang_parse_del":"Delete this toot",
"lang_parse_pin":"Pin this toot",
"lang_parse_det":"Details via your main account.",
"lang_parse_redraft":"Delete & re-draft",
"lang_parse_followed":"Followed you",
"lang_parse_clientop":"Operation of this client",
"lang_parse_clienttxt":" will be",
"lang_parse_clientno":"done nothing",
"lang_parse_clientemp":"emphasized(/not emphasized)",
"lang_parse_clientmute":"muted",
"lang_parse_mute":" will be muted. You can remove on preferences.",
"lang_misskeyparse_renote":"Repost",
"lang_misskeyparse_renoteqt":"Renote",
"lang_misskeyparse_reaction":"Reaction",
"lang_misskeyparse_tagnostr":"No streaming API on Tag TLs",
"lang_misskeyparse_listnostr":"No streaming API on List TLs",
"lang_misskeyparse_home":"Home",
"lang_misskeyparse_followers":"Follower",
"lang_misskeyparse_specified":"Specified User",
"lang_misskeyparse_qt":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted":" renoted your following post.",
"lang_misskeyparse_quoted":" quoted your following post.",
"lang_misskeyparse_reacted":" reacted your following post.",
"lang_setting_time":"Time format:{{set}}",
"lang_setting_theme":"Theme:{{set}}",
"lang_setting_nsfw":"NSFW:{{set}}",
"lang_setting_cw":"CW:{{set}}",
"lang_setting_cwtext":"Default CW text:{{set}}",
"lang_setting_cws":"Always CW on:{{set}}",
"lang_setting_rp":"Reply counter:{{set}}",
"lang_setting_vis":"Default visibility:{{set}}",
"lang_setting_popup":"Popup notification:{{set}}",
"lang_setting_off":"Off",
"lang_setting_s":"s",
"lang_setting_box":"Default toot box action:{{set}}",
"lang_setting_gif":"GIF:{{set}}",
"lang_setting_selt":"Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw":"Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width":"Minimam width:{{set}}",
"lang_setting_fixwidth":"TweetDeck fixed width:{{set}}px",
"lang_setting_img":"After posting an image:{{set}}",
"lang_setting_font":"Fonts:{{set}}",
"lang_setting_default":"default font",
"lang_setting_size":"Font size:{{set}}px",
"lang_setting_imgheight":"Image height:{{set}}px",
"lang_setting_ticker":"#InstanceTicker:{{set}}px",
"lang_setting_tag":"Tag TL:{{set}}",
"lang_setting_boxConfirm":"Post box:{{set}}",
"lang_setting_ul":"Native locale:{{set}}",
"lang_setting_notf":"Native notification:{{set}}",
"lang_setting_quote":"Quote format:{{set}}",
"lang_setting_via":"Via:{{set}}",
"lang_setting_mov":"Action buttons hiding:{{set}}",
"lang_setting_setasread":"Notification markers:{{set}}",
"lang_setting_main":"Default account:{{set}}",
"lang_setting_sec":"Secondary toot button:{{set}}",
"lang_setting_ksref":"Keyboard shortcuts are refreshed.",
"lang_setting_nomuting":"No client is muted.",
"lang_setting_notftest":" Notification test ",
"lang_setting_notftestprof":"Your icon is shown.",
"lang_setting_exportwarn":"Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn":"All data will be deleted."
}

View File

@ -28,6 +28,20 @@
"savefolder":"Folder to save",
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
"absolute":"absolute value",
"themeSel":"Select theme",
"customtheme":"Edit and add custom themes",
"customthemeDirection":"Color scheme",
"primary":"Background color",
"secondarycolor":"Background of components",
"text":"Text color",
"accent":"Background of boosts",
"add_new":"Add new",
"name":"Name",
"desc":"About this theme",
"customShare":"Share this code with other TheDesk. Do not share this code with MiAS.",
"customImport":"Import of custom themes",
"delete":"Delete",
"cImpWarn":"Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline":"Timeline Preferences",
"timemode":"Time format",
"relativetime":"Relative format:\"1 minutes ago\",\"3 days ago\"",

View File

@ -28,6 +28,20 @@
"savefolder":"デフォルトの保存先",
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
"absolute":"絶対指定",
"themeSel":"テーマの選択",
"customtheme":"カスタムテーマの作成・編集",
"customthemeDirection":"色の系統",
"primary":"全体の背景色など",
"secondarycolor":"補助要素に使われる背景色",
"text":"テキストの色",
"accent":"ブーストの背景色など",
"add_new":"新規作成",
"name":"名前",
"desc":"説明",
"customShare":"このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href=\"https://thedesk.top/mias.html\" target=\"_blank\">テーマ互換性</a>",
"customImport":"カスタムテーマのインポート",
"delete":"削除",
"cImpWarn":"<a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>上の80を超えるテーマを張り付けることもできます。",
"timeline":"タイムラインの設定",
"timemode":"時間表記設定",
"relativetime":"相対時間の例:\"1分前\",\"3日前\"",

View File

@ -17,8 +17,10 @@
"nativenotf": "crwdns538:0crwdne538:0",
"nnwarn": "crwdns539:0crwdne539:0",
"nntest": "crwdns540:0crwdne540:0",
"minwidth": "crwdns541:0crwdne541:0",
"minwidth": "crwdns2376:0crwdne2376:0",
"minwidthwarn": "crwdns542:0crwdne542:0",
"fixwidth": "crwdns2378:0crwdne2378:0",
"fixwidthwarn": "crwdns2380:0crwdne2380:0",
"above": "crwdns543:0crwdne543:0",
"font": "crwdns544:0crwdne544:0",
"fontwarn": "crwdns1900:0crwdne1900:0",
@ -26,6 +28,18 @@
"savefolder": "crwdns547:0crwdne547:0",
"savefolderwarn": "crwdns548:0crwdne548:0",
"absolute": "crwdns549:0crwdne549:0",
"themeSel": "crwdns2422:0crwdne2422:0",
"customtheme": "crwdns2424:0crwdne2424:0",
"customthemeDirection": "crwdns2426:0crwdne2426:0",
"primary": "crwdns2428:0crwdne2428:0",
"secondarycolor": "crwdns2430:0crwdne2430:0",
"text": "crwdns2432:0crwdne2432:0",
"accent": "crwdns2434:0crwdne2434:0",
"add_new": "crwdns2436:0crwdne2436:0",
"name": "crwdns2438:0crwdne2438:0",
"desc": "crwdns2440:0crwdne2440:0",
"customShare": "crwdns2442:0crwdne2442:0",
"customImport": "crwdns2444:0crwdne2444:0",
"timeline": "crwdns550:0crwdne550:0",
"timemode": "crwdns551:0crwdne551:0",
"relativetime": "crwdns552:0crwdne552:0",
@ -65,6 +79,7 @@
"imgheight": "crwdns586:0crwdne586:0",
"ticker": "crwdns1908:0crwdne1908:0",
"tickerwarn": "crwdns1910:0crwdne1910:0",
"animation": "crwdns2446:0crwdne2446:0",
"post": "crwdns587:0crwdne587:0",
"autocw": "crwdns588:0crwdne588:0",
"autocwwarn": "crwdns589:0crwdne589:0",
@ -107,6 +122,8 @@
"useerempwarn": "crwdns622:0crwdne622:0",
"empcolorwarn": "crwdns623:0crwdne623:0",
"spotify": "crwdns624:0crwdne624:0",
"npProvider": "crwdns2354:0crwdne2354:0",
"npPeoviderWarn": "crwdns2356:0crwdne2356:0",
"spotifynote1": "crwdns625:0crwdne625:0",
"spotifynote2": "crwdns626:0crwdne626:0",
"link": "crwdns627:0crwdne627:0",
@ -115,8 +132,9 @@
"disconnect": "crwdns630:0crwdne630:0",
"templeteedit": "crwdns631:0crwdne631:0",
"templeteeditwarn": "crwdns632:0crwdne632:0",
"templete1": "crwdns633:0{song}crwdnd633:0{album}crwdnd633:0{artist}crwdnd633:0{url}crwdne633:0",
"templete2": "crwdns634:0{url}crwdnd634:0{composer}crwdnd634:0{hz}crwdnd634:0{bitRate}crwdnd634:0{genre}crwdne634:0",
"templete1": "crwdns2358:0{song}crwdnd2358:0{album}crwdnd2358:0{artist}crwdnd2358:0{url}crwdne2358:0",
"templete2": "crwdns2360:0{song}crwdnd2360:0{album}crwdnd2360:0{artist}crwdnd2360:0{composer}crwdnd2360:0{hz}crwdnd2360:0{bitRate}crwdnd2360:0{genre}crwdne2360:0",
"templete3": "crwdns2362:0{song}crwdnd2362:0{album}crwdnd2362:0{artist}crwdne2362:0",
"postartwork": "crwdns635:0crwdne635:0",
"tts": "crwdns636:0crwdne636:0",
"speed": "crwdns637:0crwdne637:0",

View File

@ -2,7 +2,8 @@
"updatehere": "crwdns669:0crwdne669:0",
"download": "crwdns670:0crwdne670:0",
"portable": "crwdns1950:0crwdne1950:0",
"winzip": "crwdns672:0crwdne672:0",
"installer": "crwdns2382:0crwdne2382:0",
"snap": "crwdns2384:0crwdne2384:0",
"unrewrite": "crwdns673:0crwdne673:0",
"sureupd": "crwdns674:0crwdne674:0",
"skipupd": "crwdns675:0crwdne675:0",

View File

@ -12,16 +12,20 @@
<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/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../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>
<h4>{{setting}}</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
@ -30,21 +34,11 @@
</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>
<h5>{{theme}}</h5>
<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>
<br>
<h5>{{popup}}</h5>{{popupwarn}}
<br>
@ -88,6 +82,72 @@
</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>&nbsp;<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>
@ -322,7 +382,7 @@
<i class="fa fa-spotify"></i>{{spotify}}
</div>
<div class="collapsible-body">
<!-->h5>{{npProvider}}</h5>
<h5>{{npProvider}}</h5>
{{npPeoviderWarn}}<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
@ -337,7 +397,7 @@
<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-->
<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>
@ -443,6 +503,7 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/lang/lang.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>

View File

@ -32,7 +32,7 @@
<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="Miria (17.1.1)";
var ver="Miria (17.2.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -54,7 +54,7 @@ var tlid=0;
</div>
</div>
<div id="post-box" class="z-depth-5">
<div id="post-bar">{{post-new}}</div>
<div id="post-bar">crwdns2402:0crwdne2402:0</div>
<!--トゥートボックス-->
<div id="left-side">
<div class="row" style="margin-bottom:0;">
@ -182,13 +182,13 @@ var tlid=0;
<a onclick="nowplaying('spotify');">crwdns1880:0crwdne1880:0</a>
</li>
<li>
<a onclick="nowplaying('itunes');">crwdns1882:0crwdne1882:0</a>
<a onclick="nowplaying('itunes');">crwdns2404:0crwdne2404:0</a>
</li>
<li>
<a onclick="schedule();">crwdns1884:0crwdne1884:0</a>
</li>
<li>
<a onclick="pollToggle();">{{poll}}</a>
<a onclick="pollToggle();">crwdns2406:0crwdne2406:0</a>
</li>
</ul>
<!--hidden area-->
@ -259,7 +259,7 @@ var tlid=0;
<!--Poll UI-->
<div id="poll" class="hide">
<select id="poll-sel" onchange="pollProviderCk()">
<option value="nothing">{{pollDdisabled}}</option>
<option value="nothing">crwdns2408:0crwdne2408:0</option>
<option value="votedon">votedon.</option>
<option value="mastodon-poll">Mastodon(2.8~)</option>
</select>
@ -267,14 +267,14 @@ var tlid=0;
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">
<input type="text" class="mastodon-choice" placeholder="{{choice}}3">
<input type="text" class="mastodon-choice" placeholder="{{choice}}4">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:01">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:02">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:03">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:04">
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<label for="poll-multiple">{{pollmulti}}</label><br>
<label for="poll-multiple">crwdns2416:0crwdne2416:0</label><br>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<label for="poll-until">{{polluntil}}</label><br>
<label for="poll-until">crwdns2412:0crwdne2412:0</label><br>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">crwdns507:0crwdne507:0
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">crwdns508:0crwdne508:0
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="0">crwdns509:0crwdne509:0
@ -582,17 +582,18 @@ 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-Miria_17-1-0" class="release-do" style="display:none; ">
<div id="release-Miria_17-2-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Miria (17.1.0)</h5>
トゥートボックスがフロートタイプに。左下、右下以外にも自由においてください。<br>
いろいろとアニメーション入れた(硬派な方は設定「タイムラインの設定」からオフに)<br>
アンケートができるように(OK:Mastodon (2.8~)/WIP: votedon./ NG: ニコフレ)<br>
フォント選択機能が復活<br>
WindowsからiTunesやAIMP、その他CAD系のNowPlayingができるように。要プラグインのソフトもある。<br>
<h5>Release Note Miria (17.2.0)</h5>
カスタムテーマを実装。Misskeyのテーマとの一定の互換性あり。<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>から80を超えるテーマを入手。
<a href="https://thedesk.top/mias.html">注意点</a><br>
Misskeyのログイン方法変更につき、いちいちDevCenterに行かなくてもよくなりました。<br>
日本語でベタ書きしていたダイアログを一部多言語対応に変更。<br>
<img class="emoji" draggable="false" alt="⚠" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">TheDeskのMisskeyについての機能追加は終了しています。<br>
</div>
<br><br>
<h3>crwdns473:0crwdne473:0</h3>

View File

@ -12,16 +12,20 @@
<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/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../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>
<h4>crwdns524:0crwdne524:0</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
@ -30,21 +34,11 @@
</div>
<div class="collapsible-body">
<h5>crwdns530:0crwdne530:0</h5>
<a href="../ja/setting.html">日本語(Japanese)</a>/<a href="../en/setting.html">English</a>/<a href="../ps/setting.html">Crowdin web translate</a>/
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>
<h5>crwdns534:0crwdne534:0</h5>
<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>
<br>
<h5>crwdns1898:0crwdne1898:0</h5>crwdns536:0crwdne536:0
<br>
@ -59,12 +53,12 @@
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" />
<label for="ntf_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns541:0crwdne541:0</h5>crwdns542:0crwdne542:0
<h5>crwdns2376:0crwdne2376:0</h5>crwdns542:0crwdne542:0
<br>
<input type="text" style="width:50px" id="width">pxcrwdns543:0crwdne543:0
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
<br>
<h5>{{fixwidth}}</h5>{{fixwidthwarn}}
<h5>crwdns2378:0crwdne2378:0</h5>crwdns2380:0crwdne2380:0
<input type="text" style="width:50px" id="fixwidth">pxcrwdns543:0crwdne543:0
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
<br>
@ -88,6 +82,72 @@
</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>&nbsp;<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>
@ -182,7 +242,7 @@
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">crwdns527:0crwdne527:0</label>
<br>
<h5>{{animation}}</h5>
<h5>crwdns2446:0crwdne2446:0</h5>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_yes" value="yes" />
<label for="anime_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_no" value="no" />
@ -322,8 +382,8 @@
<i class="fa fa-spotify"></i>crwdns624:0crwdne624:0
</div>
<div class="collapsible-body">
<!-->h5>{{npProvider}}</h5>
{{npPeoviderWarn}}<br>
<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" />
@ -337,7 +397,7 @@
<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-->
<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>
@ -348,9 +408,9 @@
crwdns632:0crwdne632:0<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
crwdns633:0{song}crwdnd633:0{album}crwdnd633:0{artist}crwdnd633:0{url}crwdne633:0<br>
crwdns634:0{url}crwdnd634:0{composer}crwdnd634:0{hz}crwdnd634:0{bitRate}crwdnd634:0{genre}crwdne634:0<br>
{{templete3}}<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>
@ -443,6 +503,7 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/lang/lang.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>

View File

@ -78,9 +78,9 @@ 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;">{{installer}}</button>
<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">{{snap}}<br></span>
<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>
<br>