add theme and fix for macOS
This commit is contained in:
parent
b4674c8b09
commit
7950042eb6
|
@ -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
1
app/css/pickr.css
Normal file
File diff suppressed because one or more lines are too long
|
@ -177,6 +177,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",
|
||||
|
|
|
@ -178,6 +178,7 @@ var lang={
|
|||
"lang_parse_voted":"投票済みです",
|
||||
"lang_parse_vote":"投票",
|
||||
"lang_parse_unvoted":"結果だけ見る",
|
||||
"lang_parse_endedvote":"終了済み",
|
||||
//misskey
|
||||
"lang_misskeyparse_renote":"再投稿",
|
||||
"lang_misskeyparse_renoteqt":"引用",
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
@ -332,7 +332,7 @@ function misskeyLogin(url) {
|
|||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = 'json';
|
||||
httpreq.responseType = "json";
|
||||
localStorage.setItem("msky","true");
|
||||
if(url=="misskey.xyz" && misskeytoken){
|
||||
var mkc=misskeytoken;
|
||||
|
@ -362,7 +362,7 @@ function misskeyLogin(url) {
|
|||
appSecret: mkc
|
||||
}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState == 4) {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
const {
|
||||
|
@ -407,13 +407,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 +454,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 +463,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 +595,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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -82,3 +82,79 @@ function formattimeutc(date){
|
|||
}
|
||||
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\((\d+),\s*(\d+),\s*(\d+)\)$/);
|
||||
|
||||
// 正規表現でマッチしたとき
|
||||
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('第1引数はRGB形式で入力');
|
||||
}
|
2
app/js/platform/pickr.js
Normal file
2
app/js/platform/pickr.js
Normal file
File diff suppressed because one or more lines are too long
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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")) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>');
|
||||
});
|
||||
}
|
||||
//ブラウザで開く
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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){
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 <a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
|
||||
'\',\'add\')" class="pointer">#' + tag.name + '</a> '+his[0].accounts+lang.lang_src_people;
|
||||
|
|
|
@ -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?"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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') -
|
||||
|
|
|
@ -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++){
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -10,13 +10,20 @@ function settings() {
|
|||
|
||||
var cd = $("[name=theme]:checked").val();
|
||||
var ct = $("[for="+cd+"]").html();
|
||||
if(cd=="custom" && !$("#custom-sel-sel").val()){
|
||||
var theme = localStorage.getItem("theme");
|
||||
if (!theme) {
|
||||
var theme = "white";
|
||||
}
|
||||
$("#" + theme).prop("checked", true);
|
||||
}else{
|
||||
if (cd != localStorage.getItem("theme")) {
|
||||
Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000);
|
||||
}
|
||||
//テーマはこの場で設定
|
||||
themes(cd);
|
||||
localStorage.setItem("theme", cd);
|
||||
|
||||
}
|
||||
var nd = $("[name=nsfw]:checked").val();
|
||||
var nt = $("[for=n_"+nd+"]").text();
|
||||
if (nd != localStorage.getItem("nsfw")) {
|
||||
|
@ -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");
|
||||
|
@ -724,3 +724,139 @@ 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
|
||||
},
|
||||
strings: {
|
||||
save: 'Save', // Default for save button
|
||||
clear: 'Clear' // Default for clear button
|
||||
}
|
||||
});
|
||||
pickr.on('change', (...args) => {
|
||||
var rgb='rgb('+rgs[0].toRGBA()[0]+','+rgs[0].toRGBA()[1]+','+rgs[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();
|
||||
if(!descC){return false;}
|
||||
var primaryC=$("#color-picker0_value").val();
|
||||
if(!primaryC){return false;}
|
||||
var secondaryC=$("#color-picker1_value").val();
|
||||
if(!secondaryC){return false;}
|
||||
var textC=$("#color-picker2_value").val();
|
||||
if(!textC){return false;}
|
||||
var accentC=$("#color-picker3_value").val();
|
||||
if(!accentC){return false;}
|
||||
var multi = localStorage.getItem("multi");
|
||||
var my=JSON.parse(multi)[0].name;
|
||||
var json={
|
||||
"name": nameC,
|
||||
"author": my,
|
||||
"desc": descC,
|
||||
"base": $("[name=direction]:checked").val(),
|
||||
"vars": {
|
||||
"primary": primaryC,
|
||||
"secondary": secondaryC,
|
||||
"text": textC
|
||||
},
|
||||
"props": {
|
||||
"TheDeskAccent": accentC
|
||||
},
|
||||
"id": makeCID()
|
||||
}
|
||||
$("#custom_json").val(JSON.stringify(json));
|
||||
}
|
||||
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>';
|
||||
|
||||
|
||||
});
|
||||
$("#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("");
|
||||
}else{
|
||||
ipc.send('theme-json-request', id);
|
||||
ipc.on('theme-json-response', function (event, 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-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
|
||||
pickerDefine(1,rgbToHex(args.vars.secondary))
|
||||
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
|
||||
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()
|
|
@ -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();
|
|
@ -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');
|
||||
|
|
|
@ -46,7 +46,7 @@ function udgEx(user,acct_id){
|
|||
shell.openExternal(url);
|
||||
}
|
||||
});
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
function udg(user, acct_id) {
|
||||
reset();
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
// Create the Application's main menu
|
||||
function createMenu(lang){
|
||||
function templete(lang){
|
||||
const electron = require("electron");
|
||||
const app = electron.app;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dict={
|
||||
"application":{
|
||||
"ja":"アプリケーション",
|
||||
|
@ -65,7 +68,14 @@ function createMenu(lang){
|
|||
const menu = [{
|
||||
label: dict.application[lang],
|
||||
submenu: [
|
||||
{ label: dict.about[lang], click: function() { about(); } },
|
||||
{ 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(); }}
|
||||
|
||||
|
@ -141,5 +151,5 @@ function delsel(lang){
|
|||
return options;
|
||||
}
|
||||
|
||||
exports.templete = createMenu;
|
||||
exports.template = templete;
|
||||
exports.delsel = delsel;
|
94
app/main.js
94
app/main.js
|
@ -13,6 +13,7 @@ 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;
|
||||
// ウィンドウを作成するモジュール
|
||||
|
@ -25,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 {
|
||||
|
@ -58,6 +61,7 @@ try {
|
|||
}
|
||||
fs.writeFileSync(lang_path,lang);
|
||||
}
|
||||
console.log("launch:"+lang);
|
||||
// 全てのウィンドウが閉じたら終了
|
||||
app.on('window-all-closed', function() {
|
||||
if (process.platform != 'darwin') {
|
||||
|
@ -163,9 +167,94 @@ 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) {
|
||||
console.log(arg);
|
||||
console.log(JSON5.parse(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-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=secondary;
|
||||
}
|
||||
|
||||
var css=".customtheme {--bg:"+primary+";--drag:"+drag+";"+
|
||||
"--color:"+text+";--beforehover:"+beforehover+";--modal:"+primary+";--subcolor:"+secondary+";--box:"+secondary+";--sidebar:"+secondary+";--shared:"+emphasized+";"+
|
||||
"--notfbox:"+primary+";--emphasized:"+secondary+";--his-data:"+primary+
|
||||
+"--active:"+secondary+";--postbox:"+secondary+";--modalfooter:"+secondary+";}.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;
|
||||
|
@ -407,7 +496,8 @@ ipc.on('file-select', (e, args) => {
|
|||
});
|
||||
|
||||
ipc.on('column-del', (e, args) => {
|
||||
var options=delsel(lang)
|
||||
console.log(lang);
|
||||
var options=language.delsel(lang)
|
||||
dialog.showMessageBox(options, function(index) {
|
||||
mainWindow.webContents.send('column-del-reply', index);
|
||||
})
|
||||
|
@ -452,7 +542,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){
|
||||
|
|
|
@ -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("");
|
||||
}
|
||||
}
|
||||
|
|
19
app/package-lock.json
generated
19
app/package-lock.json
generated
|
@ -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",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "thedesk",
|
||||
"version": "17.0.2",
|
||||
"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"
|
||||
},
|
||||
|
|
|
@ -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,7 +582,7 @@ 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-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
|
|
|
@ -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}</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,10 @@
|
|||
</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>/
|
||||
<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 +81,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 color
|
||||
<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 of components
|
||||
<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><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
||||
Share this code with other TheDesk and Misskey.
|
||||
<h4>Import of custom themes</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 Preferences
|
||||
</div>
|
||||
|
@ -322,7 +381,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 +396,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 +502,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>
|
|
@ -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,7 +582,7 @@ 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-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
|
|
|
@ -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}</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,10 @@
|
|||
</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>/
|
||||
<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 +81,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><br>
|
||||
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
|
||||
このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。
|
||||
<h4>カスタムテーマのインポート</h4>
|
||||
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の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 +381,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 +396,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 +502,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>
|
|
@ -28,6 +28,18 @@
|
|||
"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 and Misskey.",
|
||||
"customImport":"Import of custom themes",
|
||||
"timeline":"Timeline Preferences",
|
||||
"timemode":"Time format",
|
||||
"relativetime":"Relative format:\"1 minutes ago\",\"3 days ago\"",
|
||||
|
|
|
@ -28,6 +28,19 @@
|
|||
"savefolder":"デフォルトの保存先",
|
||||
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
|
||||
"absolute":"絶対指定",
|
||||
"themeSel":"テーマの選択",
|
||||
"customtheme":"カスタムテーマの作成・編集",
|
||||
"customthemeDirection":"色の系統",
|
||||
"primary":"全体の背景色など",
|
||||
"secondarycolor":"補助要素に使われる背景色",
|
||||
"text":"テキストの色",
|
||||
"accent":"ブーストの背景色など",
|
||||
"add_new":"新規作成",
|
||||
"name":"名前",
|
||||
"desc":"説明",
|
||||
"customShare":"このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。",
|
||||
"customImport":"カスタムテーマのインポート",
|
||||
"cImpWarn":"<a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>上の80を超えるテーマを張り付けることもできます。",
|
||||
"timeline":"タイムラインの設定",
|
||||
"timemode":"時間表記設定",
|
||||
"relativetime":"相対時間の例:\"1分前\",\"3日前\"",
|
||||
|
|
|
@ -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}</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>
|
||||
|
@ -34,17 +38,6 @@
|
|||
<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 +81,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>{{primary}}
|
||||
<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>{{secondarycolor}}
|
||||
<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><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 +381,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 +396,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 +502,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>
|
|
@ -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,7 +582,7 @@ 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-1-1" class="release-do" style="display:none; ">
|
||||
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
|
||||
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
|
||||
|
|
|
@ -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}</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,10 @@
|
|||
</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>/
|
||||
<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>
|
||||
|
@ -88,6 +81,72 @@
|
|||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">color_lens</i>crwdns534:0crwdne534:0
|
||||
</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>{{primary}}
|
||||
<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>{{secondarycolor}}
|
||||
<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()">crwdns528:0crwdne528:0</button><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()">crwdns532:0crwdne532:0</button><br>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">reorder</i>crwdns550:0crwdne550:0
|
||||
</div>
|
||||
|
@ -322,7 +381,7 @@
|
|||
<i class="fa fa-spotify"></i>crwdns624:0crwdne624:0
|
||||
</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 +396,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>
|
||||
|
@ -443,6 +502,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>
|
Loading…
Reference in New Issue
Block a user