TheDesk Miria (17.0.0)

This commit is contained in:
cutls 2018-12-09 03:46:01 +09:00
parent 8bb27aa8d5
commit bc197db0d5
32 changed files with 632 additions and 224 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
*.exe *.exe
TheDesk-* TheDesk-*
app/build app/build
build
make.js make.js
app/.DS_Store app/.DS_Store
.DS_Store .DS_Store

View File

@ -275,7 +275,18 @@ blockquote:before, .quote:before {
.modal-footer{ .modal-footer{
background-color: var(--modalfooter) !important; background-color: var(--modalfooter) !important;
} }
.font{
font-size:1.5rem;
margin-bottom:5px;
}
.font:hover{
background-color: #999;
}
.release-do{
border: solid 2px;
border-color:var(--color);
padding:5px;
}
/*スクロールバー*/ /*スクロールバー*/

View File

@ -2,6 +2,7 @@
--bg:white; --bg:white;
--drag:rgba(255, 255, 255, 0.8); --drag:rgba(255, 255, 255, 0.8);
--color:black; --color:black;
--beforehover:#757575;
--modal:white; --modal:white;
--subcolor:#e0e0e0; --subcolor:#e0e0e0;
--box:white; --box:white;
@ -18,6 +19,7 @@
--bg:#212121; --bg:#212121;
--drag:rgba(0, 0, 0, 0.8); --drag:rgba(0, 0, 0, 0.8);
--color:white; --color:white;
--beforehover:#e0e0e0;
--modal:black; --modal:black;
--subcolor:#212121; --subcolor:#212121;
--box:#424242; --box:#424242;
@ -34,6 +36,7 @@
--bg:#031833; --bg:#031833;
--drag:rgba(0, 0, 0, 0.8); --drag:rgba(0, 0, 0, 0.8);
--color:white; --color:white;
--beforehover:#e0e0e0;
--modal:#0d1351; --modal:#0d1351;
--subcolor:#0d1351; --subcolor:#0d1351;
--shared:#004d40; --shared:#004d40;
@ -50,6 +53,7 @@
--bg:#261411; --bg:#261411;
--drag:rgba(0, 0, 0, 0.8); --drag:rgba(0, 0, 0, 0.8);
--color:white; --color:white;
--beforehover:#e0e0e0;
--modal:#261411; --modal:#261411;
--subcolor:#4e342e; --subcolor:#4e342e;
--shared:#004d40; --shared:#004d40;
@ -66,6 +70,7 @@
--bg:#c8e6c9; --bg:#c8e6c9;
--drag:rgba(255, 255, 255, 0.8); --drag:rgba(255, 255, 255, 0.8);
--color:black; --color:black;
--beforehover:#757575;
--modal:#81c784; --modal:#81c784;
--subcolor:#a5d6a7; --subcolor:#a5d6a7;
--box:#81c784; --box:#81c784;

View File

@ -133,6 +133,7 @@ iframe {
display:none; display:none;
} }
.cvo { .cvo {
user-select: text;
padding-left: 5px; padding-left: 5px;
border-bottom:0.5px solid; border-bottom:0.5px solid;
padding-right: 2px; padding-right: 2px;
@ -158,7 +159,7 @@ grid-area: icon;
} }
.area-display_name { .area-display_name {
user-select: auto; user-select: text;
height:1.5em; height:1.5em;
margin:2px; margin:2px;
margin-left:5px; margin-left:5px;
@ -208,7 +209,6 @@ grid-area: toot;
} }
.area-vis { .area-vis {
margin:2px; margin:2px;
font-size:0.5rem !important;
grid-area: vis; grid-area: vis;
} }
.area-side { .area-side {
@ -224,8 +224,15 @@ grid-area: toot;
margin-top:10px; margin-top:10px;
} }
.action i{ .action i{
font-size:1rem; font-size:1.2rem;
margin-right:2px;
color:var(--beforehover);
} }
.action i:hover{
color:var(--color);
transition: 1s;
}
.gray { .gray {
color: gray; color: gray;
} }

View File

@ -1,5 +1,5 @@
//バージョンチェッカー //バージョンチェッカー
function verck(ver) { function verck(ver,winstore) {
if(localStorage.getItem("ver")!=ver){ if(localStorage.getItem("ver")!=ver){
localStorage.setItem("ver", ver); localStorage.setItem("ver", ver);
console.log("Thank you for your update"); console.log("Thank you for your update");
@ -18,7 +18,6 @@ function verck(ver) {
} }
var l = 5; var l = 5;
// 生成する文字列に含める文字セット // 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length; var cl = c.length;
@ -48,7 +47,9 @@ function verck(ver) {
if (newest == ver) { if (newest == ver) {
todo(lang_version_usever[lang].replace("{{ver}}" ,mess.desk)); todo(lang_version_usever[lang].replace("{{ver}}" ,mess.desk));
//betaかWInstoreならアプデチェックしない //betaかWInstoreならアプデチェックしない
} else if (ver.indexOf("beta")==-1 || winstore) { } else if (ver.indexOf("beta")!=-1 || winstore) {
}else{
localStorage.removeItem("instance") localStorage.removeItem("instance")
if(localStorage.getItem("new-ver-skip")){ if(localStorage.getItem("new-ver-skip")){
if(localStorage.getItem("next-ver")!=newest){ if(localStorage.getItem("next-ver")!=newest){

View File

@ -82,6 +82,10 @@ var lang_setting_imgheight={
"ja":"画像高さを{{set}}pxに設定しました。", "ja":"画像高さを{{set}}pxに設定しました。",
"en":"Image height:{{set}}px" "en":"Image height:{{set}}px"
} }
var lang_setting_ticker={
"ja":"#InstanceTicker使用を{{set}}に設定しました。",
"en":"#InstanceTicker:{{set}}px"
}
var lang_setting_tag={ var lang_setting_tag={
"ja":"タグの取得範囲を「{{set}}」に設定しました。", "ja":"タグの取得範囲を「{{set}}」に設定しました。",
"en":"Tag TL:{{set}}" "en":"Tag TL:{{set}}"

View File

@ -43,7 +43,7 @@ function ck() {
if (at) { if (at) {
$("#tl").show(); $("#tl").show();
ticker();
parseColumn(); parseColumn();
multiSelector(); multiSelector();
} else { } else {
@ -512,3 +512,24 @@ function enc(ver){
var ver = ver.replace( /\]/g , "" ); var ver = ver.replace( /\]/g , "" );
return ver; return ver;
} }
//インスタンスティッカー
function ticker() {
var start = "https://toot.app/toot/";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
console.error(error);
}).then(function(json) {
if (json.error) {
return;
}
if(json){
localStorage.setItem("ticker", JSON.stringify(json));
}
});
}

View File

@ -61,7 +61,7 @@ function load() {
var remote=electron.remote; var remote=electron.remote;
var platform=remote.process.platform; var platform=remote.process.platform;
if(platform=="win32"){ if(platform=="win32"){
$("#linux").prop("checked", false);
}else{ }else{
$("#linux").prop("checked", true); $("#linux").prop("checked", true);
} }

View File

@ -113,28 +113,7 @@
} }
return ret; return ret;
}; };
$.strip_tags = function(str, allowed) {
if(!str){
return "";
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
if(!str){
return "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
//コピー //コピー
function execCopy(string){ function execCopy(string){
var temp = $("#copy"); var temp = $("#copy");

View File

@ -1,3 +1,34 @@
//jQuery読む //jQuery読む
window.jQuery = window.$ = require('../../js/common/jquery.js'); window.jQuery = window.$ = require('../../js/common/jquery.js');
var Hammer = require('../../js/common/hammer.min.js'); var Hammer = require('../../js/common/hammer.min.js');
$.strip_tags = function(str, allowed) {
if(!str){
return "";
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
if(!str){
return "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
//PHPのnl2brと同様
function nl2br(str) {
if(!str){
return "";
}
str = str.replace(/\r\n/g, "<br />");
str = str.replace(/(\n|\r)/g, "<br />");
return str;
}

View File

@ -47,10 +47,10 @@ function mdCheck(){
}else{ }else{
$("#textarea").attr("data-length", 500) $("#textarea").attr("data-length", 500)
} }
if(idata[domain+"_glitch"]){ if(idata[domain+"_glitch"]==="true"){
$("#local-button").removeClass("hide"); $("#local-button").removeClass("hide");
}else{ }else{
$("#local-button").removeClass("hide"); $("#local-button").addClass("hide");
} }
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
if (multi) { if (multi) {
@ -117,15 +117,6 @@ if(localStorage.getItem("md")=="hide"){
}[match] }[match]
}); });
} }
//PHPのnl2brと同様
function nl2br(str) {
if(!str){
return "";
}
str = str.replace(/\r\n/g, "<br />");
str = str.replace(/(\n|\r)/g, "<br />");
return str;
}
//テキストボックスで選択したやつをタグで囲む(BB版) //テキストボックスで選択したやつをタグで囲む(BB版)
function surroundHTML(tagS,tagE) { function surroundHTML(tagS,tagE) {
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();

View File

@ -70,45 +70,6 @@ function additional(acct_id, tlid) {
$("[toot-id=" + id + "]").addClass("parsed"); $("[toot-id=" + id + "]").addClass("parsed");
} }
}); });
}else{
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
//body: JSON.stringify({})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
//このリンク鳥やんけ、ってとき
if (json.provider_name=="Twitter"){
if(json.image){
var twiImg='<br><img src="'+json.image+'">';
}else{
var twiImg='';
}
$("[toot-id=" + id + "] .additional").html(
'<blockquote class="twitter-tweet"><b>'+escapeHTML(json.author_name)+'</b><br>'+escapeHTML(json.description)+twiImg+'</blockquote>');
}
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL"+lang_cards_check[lang]+":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
}
if (json.html) {
$("[toot-id=" + id + "] .additional").html(json.html+'<i class="material-icons" onclick="pip('+id+')" title="'+lang_cards_pip[lang]+'">picture_in_picture_alt</i>');
}
if (json.title) {
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
} }
}else{ }else{

View File

@ -1,3 +1,25 @@
function escapeHTMLtemp(str) {
if(!str){
return "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
$.strip_tagstemp = function(str, allowed) {
if(!str){
return "";
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
//オブジェクトパーサー(トゥート) //オブジェクトパーサー(トゥート)
function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = ''; var templete = '';
@ -55,6 +77,13 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{ }else{
wordmute = mutefilter; wordmute = mutefilter;
} }
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if(tickerck){
var ticker=true;
}else{
var ticker=false;
}
if (!sent) { if (!sent) {
var sent = 500; var sent = 500;
} }
@ -127,7 +156,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var toot = obj[key]; var toot = obj[key];
var dis_name=toot.user.name; var dis_name=toot.user.name;
if(dis_name){ if(dis_name){
dis_name=escapeHTML(dis_name); dis_name=escapeHTMLtemp(dis_name);
}else{ }else{
disname=""; disname="";
} }
@ -214,14 +243,14 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if(popup>0){ if(popup>0){
Materialize.toast("["+domain+"]"+escapeHTML(toot.user.name)+what, popup * 1000); Materialize.toast("["+domain+"]"+escapeHTMLtemp(toot.user.name)+what, popup * 1000);
} }
if(native=="yes"){ if(native=="yes"){
var electron = require("electron"); var electron = require("electron");
var ipc = electron.ipcRenderer; var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform; var os = electron.remote.process.platform;
var options = { var options = {
body: toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tags(toot.status.content), body: toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content),
icon: toot.account.avatar icon: toot.account.avatar
}; };
if(os=="darwin"){ if(os=="darwin"){
@ -229,7 +258,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{ }else{
ipc.send('native-notf', [ ipc.send('native-notf', [
'TheDesk:'+domain, 'TheDesk:'+domain,
toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tags(toot.status.content), toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content),
toot.account.avatar, toot.account.avatar,
"toot", "toot",
acct_id, acct_id,
@ -245,7 +274,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
var if_notf='data-notfIndv="'+acct_id+"_"+toot.id+'"'; var if_notf='data-notfIndv="'+acct_id+"_"+toot.id+'"';
var toot = toot.note; var toot = toot.note;
var dis_name=escapeHTML(toot.user.name); var dis_name=escapeHTMLtemp(toot.user.name);
}else{ }else{
var if_notf=""; var if_notf="";
if (toot.renote) { if (toot.renote) {
@ -256,7 +285,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var boostback = "shared"; var boostback = "shared";
var uniqueid=toot.id; var uniqueid=toot.id;
var toot = toot.renote; var toot = toot.renote;
var dis_name=escapeHTML(toot.user.name); var dis_name=escapeHTMLtemp(toot.user.name);
var uniqueid=toot.id; var uniqueid=toot.id;
var actemojick=false var actemojick=false
} else { } else {
@ -320,7 +349,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
if ((toot.cw || toot.cw=="") && cw) { if ((toot.cw || toot.cw=="") && cw) {
var content = toot.text; var content = toot.text;
var spoil = escapeHTML(toot.cw); var spoil = escapeHTMLtemp(toot.cw);
var spoiler = "cw cw_hide_" + toot.id; var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray"; var api_spoil = "gray";
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
@ -329,18 +358,18 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var ct1 = nl2br(toot.text).split('<br />').length -2; var ct1 = nl2br(toot.text).split('<br />').length -2;
var ct2 = nl2br(toot.text).split('<br>').length -2; var ct2 = nl2br(toot.text).split('<br>').length -2;
if(ct1>ct2){ var ct= ct1; }else{ var ct= ct2; } if(ct1>ct2){ var ct= ct1; }else{ var ct= ct2; }
if ((sent < ct && $.mb_strlen($.strip_tags(toot.text)) > 5) || ($.strip_tags(toot.text).length > ltr && $.mb_strlen($.strip_tags(toot.text)) > 5)) { if ((sent < ct && $.mb_strlen($.strip_tagstemp(toot.text)) > 5) || ($.strip_tagstemp(toot.text).length > ltr && $.mb_strlen($.strip_tagstemp(toot.text)) > 5)) {
var content = '<span class="gray">'+lang_parse_fulltext[lang]+'</span><br>' + escapeHTML(toot.text) var content = '<span class="gray">'+lang_parse_fulltext[lang]+'</span><br>' + escapeHTMLtemp(toot.text)
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags( var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tagstemp(
toot.text), 0, 100) + toot.text), 0, 100) +
'</span><span class="gray">'+lang_parse_autofold[lang]+'</span>'; '</span><span class="gray">'+lang_parse_autofold[lang]+'</span>';
var spoiler = "cw cw_hide_" + toot.id; var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed">'+lang_parse_more[lang]+'</a><br>'; '\')" class="nex parsed">'+lang_parse_more[lang]+'</a><br>';
} else { } else {
var content = escapeHTML(toot.text); var content = escapeHTMLtemp(toot.text);
if(toot.cw){ if(toot.cw){
var spoil = escapeHTML(toot.cw); var spoil = escapeHTMLtemp(toot.cw);
}else{ }else{
var spoil=""; var spoil="";
} }
@ -350,7 +379,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
} }
var analyze = ''; var analyze = '';
var urls = $.strip_tags(content).replace(/\n/g, " ").match( var urls = $.strip_tagstemp(content).replace(/\n/g, " ").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/ /https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
); );
if (urls) { if (urls) {
@ -431,7 +460,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url + acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="video" class="img-parsed"><video src="' + '" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense + purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%; height:'+imh+'px;"></a></span>'; ' toot-img pointer" style="max-width:100%;"></a></span>';
}else{ }else{
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' + viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url + acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
@ -528,7 +557,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var word=worde var word=worde
} }
var regExp = new RegExp( word, "g" ) ; var regExp = new RegExp( word, "g" ) ;
if($.strip_tags(content).match(regExp)){ if($.strip_tagstemp(content).match(regExp)){
boostback = "hide by_filter"; boostback = "hide by_filter";
} }
} }
@ -545,6 +574,23 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
}); });
} }
//Ticker
var tickerdom="";
if(ticker){
var tickerdata=JSON.parse(localStorage.getItem("ticker"));
var thisdomain=toot.user.username.split("@");
if(thisdomain.length>1){
thisdomain=thisdomain[1];
}
for( var i=0; i<tickerdata.length; i++) {
var value=tickerdata[i];
if(value.domain==thisdomain){
var tickerdom='<div style="background:linear-gradient(to left,transparent, '+value.bg+' 96%) !important; color:'+value.text+';width:100%; height:0.9rem; font-size:0.8rem;"><img src="'+value.image+'" style="height:100%;"><span style="position:relative; top:-0.2rem;"> '+value.name+'</span></div>';
break;
}
}
}
//Poll //Poll
var poll=""; var poll="";
if(toot.poll){ if(toot.poll){
@ -660,7 +706,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'('+lang_parse_clickcopyurl[lang]+')"><i class="fa fa-clock-o"></i>' + '('+lang_parse_clickcopyurl[lang]+')"><i class="fa fa-clock-o"></i>' +
date(toot.createdAt, datetype) + '</span>' + date(toot.createdAt, datetype) + '</span>' +
'</div></div>' + '</div></div>' +
'<div class="area-toot"><span class="toot ' + spoiler + '">' + content + '<div class="area-toot">'+tickerdom+'<span class="toot ' + spoiler + '">' + content +
'</span><span class="' + '</span><span class="' +
api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show + api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show +
'</span>' + '</span>' +
@ -712,7 +758,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
+'<div class="' + if_mine + ' action '+disp["red"]+' '+noauth+'"><a onclick="redraft(\'' + toot.id + '\',' + +'<div class="' + if_mine + ' action '+disp["red"]+' '+noauth+'"><a onclick="redraft(\'' + toot.id + '\',' +
acct_id + acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang_parse_redraft[lang]+'"><i class="material-icons">redo</i></a></div>'+trans+ ')" class="waves-effect waves-dark btn-flat" style="padding:0" title="'+lang_parse_redraft[lang]+'"><i class="material-icons">redo</i></a></div>'+trans+
'<span class="cbadge viabadge waves-effect '+viashow+' '+mine_via+'" onclick="client(\''+$.strip_tags(via)+'\')" title="via ' + $.strip_tags(via) + '">via ' + '<span class="cbadge viabadge waves-effect '+viashow+' '+mine_via+'" onclick="client(\''+$.strip_tagstemp(via)+'\')" title="via ' + $.strip_tagstemp(via) + '">via ' +
via + via +
'</span>'+ '</span>'+
'</div><div class="area-side '+mouseover+'"><div class="action ' + if_mine + ' '+noauth+'"><a onclick="toggleAction(\'' + toot.id + '\',\''+tlid+'\',\''+acct_id+'\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' + '</div><div class="area-side '+mouseover+'"><div class="action ' + if_mine + ' '+noauth+'"><a onclick="toggleAction(\'' + toot.id + '\',\''+tlid+'\',\''+acct_id+'\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
@ -754,7 +800,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
} }
var memory = localStorage.getItem("notice-mem"); var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) { if (popup >= 0 && obj.length < 5 && notftext != memory) {
Materialize.toast(escapeHTML(toot.name)+":"+ftxt, popup * 1000); Materialize.toast(escapeHTMLtemp(toot.name)+":"+ftxt, popup * 1000);
$(".notf-icon_" + tlid).addClass("red-text"); $(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext); localStorage.setItem("notice-mem", notftext);
notftext = ""; notftext = "";
@ -786,7 +832,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
} }
} }
if(toot.name){ if(toot.name){
var dis_name=escapeHTML(toot.name); var dis_name=escapeHTMLtemp(toot.name);
dis_name=twemoji.parse(dis_name); dis_name=twemoji.parse(dis_name);
}else{ }else{
var dis_name=toot.name; var dis_name=toot.name;

View File

@ -66,7 +66,15 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{ }else{
wordmute = mutefilter; wordmute = mutefilter;
} }
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if(tickerck){
var ticker=true;
}else{
var ticker=false;
}
//Cards
var card = localStorage.getItem("card_" + tlid);
if (!sent) { if (!sent) {
@ -601,6 +609,42 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{ }else{
var trans=""; var trans="";
} }
//Cards
if (!card && toot.card) {
var cards=toot.card;
if (cards.provider_name=="Twitter"){
if(cards.image){
var twiImg='<br><img src="'+cards.image+'">';
}else{
var twiImg='';
}
analyze='<blockquote class="twitter-tweet"><b>'+escapeHTML(cards.author_name)+'</b><br>'+escapeHTML(cards.description)+twiImg+'</blockquote>';
}
if (cards.title) {
analyze="<span class=\"gray\">URL"+lang_cards_check[lang]+":<br>Title:" + escapeHTML(cards.title) + "<br>" +
escapeHTML(cards.description) + "</span>";
}
if (cards.html) {
analyze=cards.html+'<i class="material-icons" onclick="pip('+id+')" title="'+lang_cards_pip[lang]+'">picture_in_picture_alt</i>';
}
}
//Ticker
var tickerdom="";
if(ticker){
var tickerdata=JSON.parse(localStorage.getItem("ticker"));
var thisdomain=toot.account.acct.split("@");
if(thisdomain.length>1){
thisdomain=thisdomain[1];
}
for( var i=0; i<tickerdata.length; i++) {
var value=tickerdata[i];
if(value.domain==thisdomain){
var tickerdom='<div style="background:linear-gradient(to left,transparent, '+value.bg+' 96%) !important; color:'+value.text+';width:100%; height:0.9rem; font-size:0.8rem;"><img src="'+value.image+'" style="height:100%;"><span style="position:relative; top:-0.2rem;"> '+value.name+'</span></div>';
break;
}
}
}
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app + boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[ ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
@ -621,7 +665,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
'('+lang_parse_clickcopyurl[lang]+')"><i class="fa fa-clock-o"></i>' + '('+lang_parse_clickcopyurl[lang]+')"><i class="fa fa-clock-o"></i>' +
date(toot.created_at, datetype) + '</span>' + date(toot.created_at, datetype) + '</span>' +
'</div></div>' + '</div></div>' +
'<div class="area-toot"><span class="' + '<div class="area-toot">'+tickerdom+'<span class="' +
api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show + api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show +
'</span><span class="toot ' + spoiler + '">' + content + '</span><span class="toot ' + spoiler + '">' + content +
'</span>' + '</span>' +

View File

@ -271,7 +271,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} }
} else if (typeA == "update") { } else if (typeA == "update" || typeA == "conversation") {
localStorage.removeItem("delete"); localStorage.removeItem("delete");
var obj = JSON.parse(JSON.parse(mess.data).payload); var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj); console.log(obj);

View File

@ -239,12 +239,10 @@ function addColumn() {
var obj = JSON.parse(multi); var obj = JSON.parse(multi);
if(!obj){ if(!obj){
var leng=0; var leng=0;
localStorage.setItem("card_" + leng,"true");
var json = JSON.stringify([add]); var json = JSON.stringify([add]);
localStorage.setItem("column", json); localStorage.setItem("column", json);
}else{ }else{
var leng=obj.length; var leng=obj.length;
localStorage.setItem("card_" + leng,"true");
obj.push(add); obj.push(add);
var json = JSON.stringify(obj); var json = JSON.stringify(obj);
localStorage.setItem("column", json); localStorage.setItem("column", json);

View File

@ -130,6 +130,13 @@ function settings() {
} }
localStorage.setItem("img-height", heid); localStorage.setItem("img-height", heid);
var tckrd = $("[name=ticker]:checked").val();
var tckrt = $("[for=ticker_"+tckrd+"]").text();
if (tckrd != localStorage.getItem("ticker_ok")) {
Materialize.toast(lang_setting_ticker[lang].replace("{{set}}" ,tckrt), 3000);
}
localStorage.setItem("ticker_ok", tckrd);
var boxd = $("[name=box]:checked").val(); var boxd = $("[name=box]:checked").val();
var boxt = $("[for=bx_"+boxd+"]").text(); var boxt = $("[for=bx_"+boxd+"]").text();
if (boxd != localStorage.getItem("box")) { if (boxd != localStorage.getItem("box")) {
@ -338,6 +345,12 @@ function load() {
} }
$("#img-height").val(imh); $("#img-height").val(imh);
var ticker = localStorage.getItem("ticker-ok");
if (!ticker) {
var ticker = "no";
}
$("#ticker_" + ticker).prop("checked", true);
var tag = localStorage.getItem("tag-range"); var tag = localStorage.getItem("tag-range");
if (!tag) { if (!tag) {
var tag = "all"; var tag = "all";
@ -669,3 +682,19 @@ function savefolder(){
localStorage.setItem("savefolder",fileNames[0]); localStorage.setItem("savefolder",fileNames[0]);
}); });
} }
function font(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('fonts', []);
ipc.on('font-list', function (event, arg) {
$("#fonts").removeClass("hide");
for( var i=0; i<arg.length; i++) {
var font=arg[i];
$("#fonts").append('<div class="font pointer" style="font-family:'+font.family+'" onclick="insertFont(\''+font.family+'\')">'+font.family+"</div>")
}
});
}
function insertFont(name){
$("#font").val(name);
}

View File

@ -8,6 +8,7 @@ var Jimp = require("jimp");
const shell = electron.shell; const shell = electron.shell;
const os = require('os') const os = require('os')
const path = require('path') const path = require('path')
const fm = require('font-manager');
const Menu=electron.Menu const Menu=electron.Menu
var updatewin=null; var updatewin=null;
// アプリケーションをコントロールするモジュール // アプリケーションをコントロールするモジュール
@ -604,5 +605,44 @@ ipc.on('export', (e, args) => {
ipc.on('import', (e, arg) => { ipc.on('import', (e, arg) => {
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8')); mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
}); });
//フォント
function object_array_sort(data,key,order,fn){
//デフォは降順(DESC)
var num_a = -1;
var num_b = 1;
if(order === 'asc'){//指定があれば昇順(ASC)
num_a = 1;
num_b = -1;
}
data = data.sort(function(a, b){
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
//重複排除
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data); // ソート後の配列を返す
}
ipc.on('fonts', (e, arg) => {
var fonts = fm.getAvailableFontsSync();
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted){
mainWindow.webContents.send('font-list', fonts_sorted);
});
});
app.setAsDefaultProtocolClient('thedesk') app.setAsDefaultProtocolClient('thedesk')

View File

@ -69,7 +69,33 @@ textarea {
</style> </style>
</head> </head>
<body> <body>
<script type="text/javascript" src="./js/common/jquery.js"></script> <script>
//jQuery読む
window.jQuery = window.$ = require('./js/common/jquery.js');
var Hammer = require('./js/common/hammer.min.js');
$.strip_tags = function(str, allowed) {
if(!str){
return "";
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
if(!str){
return "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
</script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script> <script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<select id="post-acct-sel" style="max-width:150px"> <select id="post-acct-sel" style="max-width:150px">
</select> </select>
@ -92,6 +118,7 @@ textarea {
var lang="ja"; var lang="ja";
} }
</script> </script>
<script type="text/javascript" src="./js/lang/lang.js"></script> <script type="text/javascript" src="./js/lang/lang.js"></script>
<script type="text/javascript" src="./js/lang/parse.lang.js"></script> <script type="text/javascript" src="./js/lang/parse.lang.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script> <script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>

150
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "16.1.5", "version": "17.0.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -336,7 +336,7 @@
"debug": "2.6.9", "debug": "2.6.9",
"detect-libc": "1.0.3", "detect-libc": "1.0.3",
"fs-extra": "3.0.1", "fs-extra": "3.0.1",
"node-abi": "2.4.4", "node-abi": "2.5.0",
"node-gyp": "3.8.0", "node-gyp": "3.8.0",
"ora": "1.4.0", "ora": "1.4.0",
"rimraf": "2.6.2", "rimraf": "2.6.2",
@ -432,6 +432,14 @@
} }
} }
}, },
"font-manager": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/font-manager/-/font-manager-0.3.0.tgz",
"integrity": "sha512-6N3pzO+9kxE3yD9c4VN7reg5fqgFvjcUdxZmwauRzsExaeKRu0APfEi3DOISFakokybgKlZcLFQHawwc2TMpQQ==",
"requires": {
"nan": "2.11.1"
}
},
"for-each": { "for-each": {
"version": "0.3.2", "version": "0.3.2",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz",
@ -461,7 +469,7 @@
"integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
"dev": true, "dev": true,
"requires": { "requires": {
"graceful-fs": "4.1.11", "graceful-fs": "4.1.15",
"jsonfile": "3.0.1", "jsonfile": "3.0.1",
"universalify": "0.1.2" "universalify": "0.1.2"
} }
@ -478,7 +486,7 @@
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"dev": true, "dev": true,
"requires": { "requires": {
"graceful-fs": "4.1.11", "graceful-fs": "4.1.15",
"inherits": "2.0.3", "inherits": "2.0.3",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"rimraf": "2.6.2" "rimraf": "2.6.2"
@ -538,9 +546,9 @@
} }
}, },
"graceful-fs": { "graceful-fs": {
"version": "4.1.11", "version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true "dev": true
}, },
"growly": { "growly": {
@ -755,7 +763,7 @@
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
"dev": true, "dev": true,
"requires": { "requires": {
"graceful-fs": "4.1.11" "graceful-fs": "4.1.15"
} }
}, },
"jsprim": { "jsprim": {
@ -798,7 +806,7 @@
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true, "dev": true,
"requires": { "requires": {
"graceful-fs": "4.1.11", "graceful-fs": "4.1.15",
"parse-json": "2.2.0", "parse-json": "2.2.0",
"pify": "2.3.0", "pify": "2.3.0",
"pinkie-promise": "2.0.1", "pinkie-promise": "2.0.1",
@ -891,10 +899,15 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}, },
"nan": {
"version": "2.11.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz",
"integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA=="
},
"node-abi": { "node-abi": {
"version": "2.4.4", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.4.tgz", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.0.tgz",
"integrity": "sha512-DQ9Mo2mf/XectC+s6+grPPRQ1Z9gI3ZbrGv6nyXRkjwT3HrE0xvtvrfnH7YHYBLgC/KLadg+h3XHnhZw1sv88A==", "integrity": "sha512-9g2twBGSP6wIR5PW7tXvAWnEWKJDH/VskdXp168xsw9VVxpEGov8K4jsP4/VeoC7b2ZAyzckvMCuQuQlw44lXg==",
"dev": true, "dev": true,
"requires": { "requires": {
"semver": "5.5.1" "semver": "5.5.1"
@ -908,7 +921,7 @@
"requires": { "requires": {
"fstream": "1.0.11", "fstream": "1.0.11",
"glob": "7.1.3", "glob": "7.1.3",
"graceful-fs": "4.1.11", "graceful-fs": "4.1.15",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"nopt": "3.0.6", "nopt": "3.0.6",
"npmlog": "4.1.2", "npmlog": "4.1.2",
@ -920,6 +933,18 @@
"which": "1.3.1" "which": "1.3.1"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz",
"integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==",
"dev": true,
"requires": {
"fast-deep-equal": "2.0.1",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.4.1",
"uri-js": "4.2.2"
}
},
"aws4": { "aws4": {
"version": "1.8.0", "version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
@ -932,29 +957,41 @@
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true "dev": true
}, },
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
"dev": true
},
"har-validator": { "har-validator": {
"version": "5.1.0", "version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "5.5.2", "ajv": "6.6.1",
"har-schema": "2.0.0" "har-schema": "2.0.0"
} }
}, },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"mime-db": { "mime-db": {
"version": "1.36.0", "version": "1.37.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.20", "version": "2.1.21",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"dev": true, "dev": true,
"requires": { "requires": {
"mime-db": "1.36.0" "mime-db": "1.37.0"
} }
}, },
"oauth-sign": { "oauth-sign": {
@ -982,12 +1019,12 @@
"extend": "3.0.2", "extend": "3.0.2",
"forever-agent": "0.6.1", "forever-agent": "0.6.1",
"form-data": "2.3.2", "form-data": "2.3.2",
"har-validator": "5.1.0", "har-validator": "5.1.3",
"http-signature": "1.2.0", "http-signature": "1.2.0",
"is-typedarray": "1.0.0", "is-typedarray": "1.0.0",
"isstream": "0.1.2", "isstream": "0.1.2",
"json-stringify-safe": "5.0.1", "json-stringify-safe": "5.0.1",
"mime-types": "2.1.20", "mime-types": "2.1.21",
"oauth-sign": "0.9.0", "oauth-sign": "0.9.0",
"performance-now": "2.1.0", "performance-now": "2.1.0",
"qs": "6.5.2", "qs": "6.5.2",
@ -1005,7 +1042,7 @@
}, },
"semver": { "semver": {
"version": "5.3.0", "version": "5.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
"dev": true "dev": true
}, },
@ -1120,7 +1157,7 @@
}, },
"os-homedir": { "os-homedir": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true "dev": true
}, },
@ -1135,7 +1172,7 @@
}, },
"os-tmpdir": { "os-tmpdir": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true "dev": true
}, },
@ -1193,7 +1230,7 @@
}, },
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true "dev": true
}, },
@ -1203,7 +1240,7 @@
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true, "dev": true,
"requires": { "requires": {
"graceful-fs": "4.1.11", "graceful-fs": "4.1.15",
"pify": "2.3.0", "pify": "2.3.0",
"pinkie-promise": "2.0.1" "pinkie-promise": "2.0.1"
} }
@ -1215,7 +1252,7 @@
}, },
"pify": { "pify": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true "dev": true
}, },
@ -1457,19 +1494,19 @@
} }
}, },
"spdx-correct": { "spdx-correct": {
"version": "3.0.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
"integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"spdx-expression-parse": "3.0.0", "spdx-expression-parse": "3.0.0",
"spdx-license-ids": "3.0.1" "spdx-license-ids": "3.0.2"
} }
}, },
"spdx-exceptions": { "spdx-exceptions": {
"version": "2.1.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
"integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true "dev": true
}, },
"spdx-expression-parse": { "spdx-expression-parse": {
@ -1478,14 +1515,14 @@
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true, "dev": true,
"requires": { "requires": {
"spdx-exceptions": "2.1.0", "spdx-exceptions": "2.2.0",
"spdx-license-ids": "3.0.1" "spdx-license-ids": "3.0.2"
} }
}, },
"spdx-license-ids": { "spdx-license-ids": {
"version": "3.0.1", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
"integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
"dev": true "dev": true
}, },
"sshpk": { "sshpk": {
@ -1529,7 +1566,7 @@
}, },
"string_decoder": { "string_decoder": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true, "dev": true,
"requires": { "requires": {
@ -1543,7 +1580,7 @@
}, },
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true, "dev": true,
"requires": { "requires": {
@ -1584,7 +1621,7 @@
}, },
"tar": { "tar": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"dev": true, "dev": true,
"requires": { "requires": {
@ -1640,6 +1677,23 @@
"path-exists": "3.0.0" "path-exists": "3.0.0"
} }
}, },
"uri-js": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
"punycode": "2.1.1"
},
"dependencies": {
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
}
}
},
"url-regex": { "url-regex": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz",
@ -1665,7 +1719,7 @@
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true, "dev": true,
"requires": { "requires": {
"spdx-correct": "3.0.0", "spdx-correct": "3.1.0",
"spdx-expression-parse": "3.0.0" "spdx-expression-parse": "3.0.0"
} }
}, },

View File

@ -1,6 +1,6 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "16.1.6", "version": "17.0.0",
"description": "TheDesk is a Mastodon client for PC.", "description": "TheDesk is a Mastodon client for PC.",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {
@ -27,6 +27,7 @@
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
"dependencies": { "dependencies": {
"electron-dl": "^1.11.0", "electron-dl": "^1.11.0",
"font-manager": "^0.3.0",
"jimp": "^0.2.28", "jimp": "^0.2.28",
"node-notifier": "^5.2.1", "node-notifier": "^5.2.1",
"sumchecker": "^2.0.2" "sumchecker": "^2.0.2"
@ -38,7 +39,7 @@
"productName": "TheDesk", "productName": "TheDesk",
"appId": "top.thedesk", "appId": "top.thedesk",
"directories": { "directories": {
"output": "build" "output": "../build"
}, },
"win": { "win": {
"icon": "thedesk.ico", "icon": "thedesk.ico",
@ -56,9 +57,9 @@
"category": "Network" "category": "Network"
}, },
"electronDownload": { "electronDownload": {
"version": "3.0.0" "version": "3.0.10"
}, },
"electronVersion": "3.0.0" "electronVersion": "3.0.10"
}, },
"devDependencies": { "devDependencies": {
"electron-rebuild": "^1.8.2" "electron-rebuild": "^1.8.2"

View File

@ -26,7 +26,7 @@
<script type="text/javascript" src="../../js/common/modal.js"></script> <script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script> <script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script> <script>
var ver="Akane (16.1.5)"; var ver="Miria (17.0.0)";
//betaを入れるとバージョンチェックしない //betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html) //GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta"; //var ver="beta";
@ -35,7 +35,7 @@ var winstore=false;
var acct_id=0; var acct_id=0;
var tlid=0; var tlid=0;
var lang="en"; var lang="en";
verck(ver); verck(ver,winstore);
</script> </script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea> <textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl"> <div id="tl">
@ -528,28 +528,16 @@ var lang="en";
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Akane_16-1-5" style="display:none"> <div id="release-Miria_17-0-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Akane (16.1.5)</h5> <h5>Release Note Miria (17.0.0)</h5>
16.1.5<br> セキュリティアップデート、安定性の向上。<br>
<ul> <b>#InstanceTickerが使用できるように</b><br>
<li>バグ,脆弱性修正</li> <b>フォントが直感的に選べるように</b><br>
</ul> <b>リンク解析をオンにしても制限がかからないように</b>(これによりデフォルトでオンになります。)<br>
16.1.4<br>
<ul>
<li>全てバグ修正(5件ほど)</li>
</ul>
ご迷惑をおかけしたことをお詫び申し上げます。
16.1.3<br>
<ul>
<li>セカンダリートゥートボタン</li>
<li>読み上げや絵文字に関するバグの修正</li>
<li>公式ヘルプサイト:<a href="https://docs.thedesk.top">TheDesk Docs</a></li>
</ul>
いつの間にかリアルタイムユーザー数が100を超えていました。皆様のご愛顧に感謝申し上げます。<br>
</div> </div>
<br><br> <br><br>
<h3>Support TheDesk!</h3> <h3>Support TheDesk!</h3>

View File

@ -877,7 +877,29 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.<br> SOFTWARE.<br>
<h5>#InstanceTicker</h5>
The MIT License (MIT)<br>
<br>
ORIGINAL CSS © 小田急don <a href="https://odakyu.app/@ars42525">https://odakyu.app/@ars42525</a><br>
#InstanceTicker © weep.me <a href="https://weep.me/@weep">https://weep.me/@weep</a><br>
<br>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:<br>
<br>
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.<br>
<br>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.<br>
</article> </article>
<a href="setting.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>Back</a> <a href="setting.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>Back</a>
<script type="text/javascript" src="../../js/ui/theme.js"></script> <script type="text/javascript" src="../../js/ui/theme.js"></script>

View File

@ -59,7 +59,12 @@
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br> <br>
<h5>Font</h5> <h5>Font</h5>
Set local font<br> Select your favorite font to 'Select'<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;">
</div>
<br>
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br> <br>
@ -162,6 +167,12 @@
<input type="text" style="width:50px" id="img-height">px <input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br> <br>
<h5>Enable #InstanceTicker</h5>
Show colorful stickers about tooters' instance. <a href="https://cdn.weep.me/mastodon/">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">No</label>
<br> <br>
</div> </div>
</li> </li>

109
app/view/ja/beta.html Normal file
View File

@ -0,0 +1,109 @@
<!doctype html>
<!--Vue.jsでなんかTLづくりやってみようみたいなやつ。そっ閉じ推奨。-->
<html lang="ja">
<head>
<title>Beta - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<meta charset="utf-8">
</head>
<a href="index.html">Back</a>
<div id="tl">
<div :id="pub_id" class="cvo" :class="boostback" v-bind:class="{ 'faved': fav_app, 'rted': rt_app, 'pinned':pin_app,'hasmedia':hasmedia}"
:toot-id="id" :unique-id="uniqueid" :data-medias="media_ids" :unixtime="unixtime" :data-notfIndv="if_notf"
@mouseover="mov('mv')" @click="mov('cl')" @mouseout="resetmv('mv')">
<div class="area-notice"><span class="gray sharesta"><span v-if="notice"><i class="big-text fa" :class="rticon"></i>{{dis_name}}(@{{acct}})<br></span></span></div>
<div class="area-icon">
<a @click="udg" :user="acct" class="udg"><img :src="avatar" width="40" class="prof-img" :user="acct"></a>
<a @click="udg" :user="acct" class="udg" v-if="notice"><img :src="avatar" width="40" class="notf-icon prof-img" :user="acct"></a>
</div>
Yeah
</div>
</div>
<script>
var app = new Vue({
el: '#tl',
data: {
tlid:0,
pub_id:"pub_123",
id: 123,
uniqueid:1234,
boostback:'a',
fav_app:true,
rt_app:true,
pin_app:false,
hasmedia:false,
media_ids:'',
unixtime:'1238954',
if_notf:''
},
methods: {
mov: function (c) {
mov(this.id,this.tlid,c)
},
resetmv: function (c) {
resetmv(c)
}
}
})
</script>
<script>
function mov(a,b,c){
console.log(a+":"+b+":"+c);
}
function resetmv(a){
console.log(a);
}
</script>
<!--@mouseover="mov({{id}},{{tlid}},'mv')" @click="mov({{id}},{{tlid}},'cl')" @mouseout="resetmv('mv')"-->
<!--
<div id="pub_toot.id" class="cvo boostback fav_app rt_app pin_app hasmedia" toot-id="id" unique-id="uniqueid" data-medias="media_ids " unixtime="date(obj[key].created_at, unix)" if_notf onmouseover="mov(toot.id,tlid,mv)" onclick="mov(toot.id,tlid,cl)" onmouseout="resetmv(mv)">
<div class="area-notice"><span class="gray sharesta">noticehome</span></div>
<div class="area-icon">
<a onclick="udg(toot.account.id,acct_id);" user="toot.account.acct" class="udg"><img src="avatar" width="40" class="prof-img" user="toot.account.acct"></a>noticeavatar
</div>
<div class="area-display_name">
<div class="flex-name"><span class="user">dis_name</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;">@toot.account.acctlocked</span></div>
<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(toot.url);" title="date(toot.created_at, absolute)(lang_parse_clickcopyurl[lang])"><i class="fa fa-clock-o"></i>
date(toot.created_at, datetype)</span>
</div></div>
<div class="area-toot"><span class="api_spoil cw_text_toot.id">spoilspoiler_show</span><span class="toot spoiler">content</span>
viewer
</div><div class="area-additional"><span class="additional">analyze</span>mentionstags</div>
<div class="area-vis"></div>
<div class="area-actions mouseover">
<div class="action">vis</div>
<div class="action antinoauth"><a onclick="detEx(toot.url,main)" class="waves-effect waves-dark details" style="padding:0">lang_parse_det[lang]</a></div>
<div class="action disp["re"] noauth"><a onclick="re(toot.id,toot.account.acct,acct_id,visen)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_replyto[lang]">
<i class="fa fa-share"></i><span class="rep_ct">replyct</a></span></a></div>
<div class="action can_rt disp["rt"] noauth"><a onclick="rt(toot.id,acct_id,tlid)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_bt[lang]"><i class="text-darken-3 fa fa-retweet
if_rt rt_toot.id"></i><span class="rt_ct">toot.reblogs_count
</span></a></div>
<div class="action can_rt disp["qt"] noauth"><a onclick="qt(toot.id,acct_id
,toot.account.acct ,toot.url
)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_quote[lang]"><i class="text-darken-3 fa fa-quote-right"></i></a></div>
<div class="action disp["fav"] noauth"><a onclick="fav(toot.id,acct_id
,tlid
)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_fav[lang]"><i class="fa text-darken-3 fa-star
if_fav fav_toot.id"></i><span class="fav_ct">toot.favourites_count
</a></span></div>
<div class="if_mine action disp["del"] noauth"><a onclick="del(toot.id,
acct_id
)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_del[lang]"><i class="fa fa-trash-o"></i></a></div>
<div class="if_mine action pin disp["pin"] noauth"><a onclick="pin(toot.id,
acct_id
)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_pin[lang]"><i class="fa fa-map-pin pin_toot.id if_pin"></i></a></div>
<div class="if_mine action disp["red"] noauth"><a onclick="redraft(toot.id,
acct_id
)" class="waves-effect waves-dark btn-flat" style="padding:0" title="lang_parse_redraft[lang]"><i class="material-icons">redo</i></a></div>trans
<span class="cbadge viabadge waves-effect viashow mine_via" onclick="client($.strip_tags(via))" title="via $.strip_tags(via)">via
via
</span>
</div><div class="area-side mouseover"><div class="action if_mine noauth"><a onclick="toggleAction(toot.id,tlid,acct_id)" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>
<div class="action noauth"><a onclick="details(toot.id,acct_id
,tlid)" class="waves-effect waves-dark btn-flat details" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div>
</div></div>
</div></div>
-->

View File

@ -26,7 +26,7 @@
<script type="text/javascript" src="../../js/common/modal.js"></script> <script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script> <script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script> <script>
var ver="Akane (16.1.5)"; var ver="Miria (17.0.0)";
//betaを入れるとバージョンチェックしない //betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html) //GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta"; //var ver="beta";
@ -35,7 +35,7 @@ var winstore=false;
var acct_id=0; var acct_id=0;
var tlid=0; var tlid=0;
var lang="ja"; var lang="ja";
verck(ver); verck(ver,winstore);
</script> </script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea> <textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl"> <div id="tl">
@ -528,28 +528,16 @@ var lang="ja";
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Akane_16-1-5" style="display:none"> <div id="release-Miria_17-0-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Akane (16.1.5)</h5> <h5>Release Note Miria (17.0.0)</h5>
16.1.5<br> セキュリティアップデート、安定性の向上。<br>
<ul> <b>#InstanceTickerが使用できるように</b><br>
<li>バグ,脆弱性修正</li> <b>フォントが直感的に選べるように</b><br>
</ul> <b>リンク解析をオンにしても制限がかからないように</b>(これによりデフォルトでオンになります。)<br>
16.1.4<br>
<ul>
<li>全てバグ修正(5件ほど)</li>
</ul>
ご迷惑をおかけしたことをお詫び申し上げます。
16.1.3<br>
<ul>
<li>セカンダリートゥートボタン</li>
<li>読み上げや絵文字に関するバグの修正</li>
<li>公式ヘルプサイト:<a href="https://docs.thedesk.top">TheDesk Docs</a></li>
</ul>
いつの間にかリアルタイムユーザー数が100を超えていました。皆様のご愛顧に感謝申し上げます。<br>
</div> </div>
<br><br> <br><br>
<h3>ご支援ください。</h3> <h3>ご支援ください。</h3>

View File

@ -876,6 +876,29 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.<br> SOFTWARE.<br>
<h5>#InstanceTicker</h5>
The MIT License (MIT)<br>
<br>
ORIGINAL CSS © 小田急don <a href="https://odakyu.app/@ars42525">https://odakyu.app/@ars42525</a><br>
#InstanceTicker © weep.me <a href="https://weep.me/@weep">https://weep.me/@weep</a><br>
<br>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:<br>
<br>
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.<br>
<br>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.<br>
</article> </article>
<a href="setting.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a> <a href="setting.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a>
<script type="text/javascript" src="../../js/ui/theme.js"></script> <script type="text/javascript" src="../../js/ui/theme.js"></script>

View File

@ -59,7 +59,12 @@
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br> <br>
<h5>フォント</h5> <h5>フォント</h5>
ローカルフォントを指定します。<br> 「選択」を押してフォントを選んでください。<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">選択</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;">
</div>
<br>
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br> <br>
@ -162,6 +167,12 @@
<input type="text" style="width:50px" id="img-height">px <input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br> <br>
<h5>#InstanceTickerを使う</h5>
トゥートした人の所属インスタンスをわかりやすく彩ります(自インスタンス以外のトゥート向け)。<a href="https://cdn.weep.me/mastodon/">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">はい</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">いいえ</label>
<br> <br>
</div> </div>
</li> </li>

View File

@ -26,7 +26,7 @@
<script type="text/javascript" src="../../js/common/modal.js"></script> <script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script> <script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script> <script>
var ver="Akane (16.1.5)"; var ver="Miria (17.0.0)";
//betaを入れるとバージョンチェックしない //betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html) //GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta"; //var ver="beta";
@ -35,7 +35,7 @@ var winstore=false;
var acct_id=0; var acct_id=0;
var tlid=0; var tlid=0;
var lang="{{lang}}"; var lang="{{lang}}";
verck(ver); verck(ver,winstore);
</script> </script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea> <textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl"> <div id="tl">
@ -528,28 +528,16 @@ var lang="{{lang}}";
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Akane_16-1-5" style="display:none"> <div id="release-Miria_17-0-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Akane (16.1.5)</h5> <h5>Release Note Miria (17.0.0)</h5>
16.1.5<br> セキュリティアップデート、安定性の向上。<br>
<ul> <b>#InstanceTickerが使用できるように</b><br>
<li>バグ,脆弱性修正</li> <b>フォントが直感的に選べるように</b><br>
</ul> <b>リンク解析をオンにしても制限がかからないように</b>(これによりデフォルトでオンになります。)<br>
16.1.4<br>
<ul>
<li>全てバグ修正(5件ほど)</li>
</ul>
ご迷惑をおかけしたことをお詫び申し上げます。
16.1.3<br>
<ul>
<li>セカンダリートゥートボタン</li>
<li>読み上げや絵文字に関するバグの修正</li>
<li>公式ヘルプサイト:<a href="https://docs.thedesk.top">TheDesk Docs</a></li>
</ul>
いつの間にかリアルタイムユーザー数が100を超えていました。皆様のご愛顧に感謝申し上げます。<br>
</div> </div>
<br><br> <br><br>
<h3>{{supportme}}</h3> <h3>{{supportme}}</h3>

View File

@ -4,6 +4,7 @@
"yes":"Yes", "yes":"Yes",
"no":"No", "no":"No",
"change":"Change", "change":"Change",
"select":"Select",
"env":"System Preferences", "env":"System Preferences",
"setlang":"Languages", "setlang":"Languages",
"backup":"Import and export of preferences", "backup":"Import and export of preferences",
@ -20,7 +21,7 @@
"minwidthwarn":"Scroll bar will be shown when your window size is more than ammounts of columns.", "minwidthwarn":"Scroll bar will be shown when your window size is more than ammounts of columns.",
"above":"above", "above":"above",
"font":"Font", "font":"Font",
"fontwarn":"Set local font", "fontwarn":"Select your favorite font to 'Select'",
"fontsize":"Font size", "fontsize":"Font size",
"savefolder":"Folder to save", "savefolder":"Folder to save",
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.", "savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
@ -62,6 +63,8 @@
"letters":"letters", "letters":"letters",
"or":"or", "or":"or",
"imgheight":"Height of images", "imgheight":"Height of images",
"ticker":"Enable #InstanceTicker",
"tickerwarn":"Show colorful stickers about tooters' instance. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"post":"Posting Preferences", "post":"Posting Preferences",
"autocw":"Alert before posting a long toot.", "autocw":"Alert before posting a long toot.",
"autocwwarn":"Show dialog whether you make too-long text hidden.", "autocwwarn":"Show dialog whether you make too-long text hidden.",

View File

@ -4,6 +4,7 @@
"yes":"はい", "yes":"はい",
"no":"いいえ", "no":"いいえ",
"change":"変更", "change":"変更",
"select":"選択",
"env":"環境設定", "env":"環境設定",
"setlang":"言語", "setlang":"言語",
"backup":"設定のインポートとエクスポート", "backup":"設定のインポートとエクスポート",
@ -20,7 +21,7 @@
"minwidthwarn":"画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。", "minwidthwarn":"画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。",
"above":"以上", "above":"以上",
"font":"フォント", "font":"フォント",
"fontwarn":"ローカルフォントを指定します。", "fontwarn":"「選択」を押してフォントを選んでください。",
"fontsize":"フォントサイズ", "fontsize":"フォントサイズ",
"savefolder":"デフォルトの保存先", "savefolder":"デフォルトの保存先",
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。", "savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
@ -62,6 +63,8 @@
"letters":"文字", "letters":"文字",
"or":"または", "or":"または",
"imgheight":"画像の高さ", "imgheight":"画像の高さ",
"ticker":"#InstanceTickerを使う",
"tickerwarn":"トゥートした人の所属インスタンスをわかりやすく彩ります(自インスタンス以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
"post":"投稿設定", "post":"投稿設定",
"autocw":"長文投稿時に警告", "autocw":"長文投稿時に警告",
"autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。", "autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",

View File

@ -60,6 +60,11 @@
<br> <br>
<h5>{{font}}</h5> <h5>{{font}}</h5>
{{fontwarn}}<br> {{fontwarn}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">{{select}}</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;">
</div>
<br>
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br> <br>
@ -162,6 +167,12 @@
<input type="text" style="width:50px" id="img-height">px <input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br> <br>
<h5>{{ticker}}</h5>
{{tickerwarn}}<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">{{no}}</label>
<br> <br>
</div> </div>
</li> </li>