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
TheDesk-*
app/build
build
make.js
app/.DS_Store
.DS_Store

View File

@ -275,7 +275,18 @@ blockquote:before, .quote:before {
.modal-footer{
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;
--drag:rgba(255, 255, 255, 0.8);
--color:black;
--beforehover:#757575;
--modal:white;
--subcolor:#e0e0e0;
--box:white;
@ -18,6 +19,7 @@
--bg:#212121;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--beforehover:#e0e0e0;
--modal:black;
--subcolor:#212121;
--box:#424242;
@ -34,6 +36,7 @@
--bg:#031833;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--beforehover:#e0e0e0;
--modal:#0d1351;
--subcolor:#0d1351;
--shared:#004d40;
@ -50,6 +53,7 @@
--bg:#261411;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--beforehover:#e0e0e0;
--modal:#261411;
--subcolor:#4e342e;
--shared:#004d40;
@ -66,6 +70,7 @@
--bg:#c8e6c9;
--drag:rgba(255, 255, 255, 0.8);
--color:black;
--beforehover:#757575;
--modal:#81c784;
--subcolor:#a5d6a7;
--box:#81c784;

View File

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

View File

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

View File

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

View File

@ -43,7 +43,7 @@ function ck() {
if (at) {
$("#tl").show();
ticker();
parseColumn();
multiSelector();
} else {
@ -512,3 +512,24 @@ function enc(ver){
var ver = ver.replace( /\]/g , "" );
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 platform=remote.process.platform;
if(platform=="win32"){
$("#linux").prop("checked", false);
}else{
$("#linux").prop("checked", true);
}

View File

@ -113,28 +113,7 @@
}
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){
var temp = $("#copy");

View File

@ -1,3 +1,34 @@
//jQuery読む
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{
$("#textarea").attr("data-length", 500)
}
if(idata[domain+"_glitch"]){
if(idata[domain+"_glitch"]==="true"){
$("#local-button").removeClass("hide");
}else{
$("#local-button").removeClass("hide");
$("#local-button").addClass("hide");
}
var multi = localStorage.getItem("multi");
if (multi) {
@ -117,15 +117,6 @@ if(localStorage.getItem("md")=="hide"){
}[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版)
function surroundHTML(tagS,tagE) {
var acct_id = $("#post-acct-sel").val();

View File

@ -70,45 +70,6 @@ function additional(acct_id, tlid) {
$("[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{

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) {
var templete = '';
@ -55,6 +77,13 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{
wordmute = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if(tickerck){
var ticker=true;
}else{
var ticker=false;
}
if (!sent) {
var sent = 500;
}
@ -127,7 +156,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var toot = obj[key];
var dis_name=toot.user.name;
if(dis_name){
dis_name=escapeHTML(dis_name);
dis_name=escapeHTMLtemp(dis_name);
}else{
disname="";
}
@ -214,14 +243,14 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
var domain = localStorage.getItem("domain_" + acct_id);
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"){
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
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
};
if(os=="darwin"){
@ -229,7 +258,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{
ipc.send('native-notf', [
'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",
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 toot = toot.note;
var dis_name=escapeHTML(toot.user.name);
var dis_name=escapeHTMLtemp(toot.user.name);
}else{
var if_notf="";
if (toot.renote) {
@ -256,7 +285,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var boostback = "shared";
var uniqueid=toot.id;
var toot = toot.renote;
var dis_name=escapeHTML(toot.user.name);
var dis_name=escapeHTMLtemp(toot.user.name);
var uniqueid=toot.id;
var actemojick=false
} else {
@ -320,7 +349,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
if ((toot.cw || toot.cw=="") && cw) {
var content = toot.text;
var spoil = escapeHTML(toot.cw);
var spoil = escapeHTMLtemp(toot.cw);
var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray";
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 ct2 = nl2br(toot.text).split('<br>').length -2;
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)) {
var content = '<span class="gray">'+lang_parse_fulltext[lang]+'</span><br>' + escapeHTML(toot.text)
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(
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>' + escapeHTMLtemp(toot.text)
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tagstemp(
toot.text), 0, 100) +
'</span><span class="gray">'+lang_parse_autofold[lang]+'</span>';
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed">'+lang_parse_more[lang]+'</a><br>';
} else {
var content = escapeHTML(toot.text);
var content = escapeHTMLtemp(toot.text);
if(toot.cw){
var spoil = escapeHTML(toot.cw);
var spoil = escapeHTMLtemp(toot.cw);
}else{
var spoil="";
}
@ -350,7 +379,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
}
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;\/?:\@&=+\$,%#]+)?/
);
if (urls) {
@ -431,7 +460,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="video" class="img-parsed"><video src="' +
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{
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
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 regExp = new RegExp( word, "g" ) ;
if($.strip_tags(content).match(regExp)){
if($.strip_tagstemp(content).match(regExp)){
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
var 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>' +
date(toot.createdAt, datetype) + '</span>' +
'</div></div>' +
'<div class="area-toot"><span class="toot ' + spoiler + '">' + content +
'<div class="area-toot">'+tickerdom+'<span class="toot ' + spoiler + '">' + content +
'</span><span class="' +
api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show +
'</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 + '\',' +
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 ' +
'<span class="cbadge viabadge waves-effect '+viashow+' '+mine_via+'" onclick="client(\''+$.strip_tagstemp(via)+'\')" title="via ' + $.strip_tagstemp(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>' +
@ -754,7 +800,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
}
var memory = localStorage.getItem("notice-mem");
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");
localStorage.setItem("notice-mem", notftext);
notftext = "";
@ -786,7 +832,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
}
}
if(toot.name){
var dis_name=escapeHTML(toot.name);
var dis_name=escapeHTMLtemp(toot.name);
dis_name=twemoji.parse(dis_name);
}else{
var dis_name=toot.name;

View File

@ -66,7 +66,15 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{
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) {
@ -601,6 +609,42 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
}else{
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 ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
' ' + 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>' +
date(toot.created_at, datetype) + '</span>' +
'</div></div>' +
'<div class="area-toot"><span class="' +
'<div class="area-toot">'+tickerdom+'<span class="' +
api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show +
'</span><span class="toot ' + spoiler + '">' + content +
'</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();
}
} else if (typeA == "update") {
} else if (typeA == "update" || typeA == "conversation") {
localStorage.removeItem("delete");
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);

View File

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

View File

@ -130,6 +130,13 @@ function settings() {
}
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 boxt = $("[for=bx_"+boxd+"]").text();
if (boxd != localStorage.getItem("box")) {
@ -338,6 +345,12 @@ function load() {
}
$("#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");
if (!tag) {
var tag = "all";
@ -668,4 +681,20 @@ function savefolder(){
}, (fileNames) => {
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 os = require('os')
const path = require('path')
const fm = require('font-manager');
const Menu=electron.Menu
var updatewin=null;
// アプリケーションをコントロールするモジュール
@ -604,5 +605,44 @@ ipc.on('export', (e, args) => {
ipc.on('import', (e, arg) => {
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
});
//フォント
function object_array_sort(data,key,order,fn){
//デフォは降順(DESC)
var num_a = -1;
var num_b = 1;
if(order === 'asc'){//指定があれば昇順(ASC)
num_a = 1;
num_b = -1;
}
data = data.sort(function(a, b){
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
//重複排除
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data); // ソート後の配列を返す
}
ipc.on('fonts', (e, arg) => {
var fonts = fm.getAvailableFontsSync();
object_array_sort(fonts, 'family', 'asc', function(fonts_sorted){
mainWindow.webContents.send('font-list', fonts_sorted);
});
});
app.setAsDefaultProtocolClient('thedesk')

View File

@ -69,7 +69,33 @@ textarea {
</style>
</head>
<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>
<select id="post-acct-sel" style="max-width:150px">
</select>
@ -92,6 +118,7 @@ textarea {
var lang="ja";
}
</script>
<script type="text/javascript" src="./js/lang/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>

150
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "16.1.5",
"version": "17.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -336,7 +336,7 @@
"debug": "2.6.9",
"detect-libc": "1.0.3",
"fs-extra": "3.0.1",
"node-abi": "2.4.4",
"node-abi": "2.5.0",
"node-gyp": "3.8.0",
"ora": "1.4.0",
"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": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz",
@ -461,7 +469,7 @@
"integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"graceful-fs": "4.1.15",
"jsonfile": "3.0.1",
"universalify": "0.1.2"
}
@ -478,7 +486,7 @@
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"graceful-fs": "4.1.15",
"inherits": "2.0.3",
"mkdirp": "0.5.1",
"rimraf": "2.6.2"
@ -538,9 +546,9 @@
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true
},
"growly": {
@ -755,7 +763,7 @@
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11"
"graceful-fs": "4.1.15"
}
},
"jsprim": {
@ -798,7 +806,7 @@
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"graceful-fs": "4.1.15",
"parse-json": "2.2.0",
"pify": "2.3.0",
"pinkie-promise": "2.0.1",
@ -891,10 +899,15 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"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": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.4.tgz",
"integrity": "sha512-DQ9Mo2mf/XectC+s6+grPPRQ1Z9gI3ZbrGv6nyXRkjwT3HrE0xvtvrfnH7YHYBLgC/KLadg+h3XHnhZw1sv88A==",
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.0.tgz",
"integrity": "sha512-9g2twBGSP6wIR5PW7tXvAWnEWKJDH/VskdXp168xsw9VVxpEGov8K4jsP4/VeoC7b2ZAyzckvMCuQuQlw44lXg==",
"dev": true,
"requires": {
"semver": "5.5.1"
@ -908,7 +921,7 @@
"requires": {
"fstream": "1.0.11",
"glob": "7.1.3",
"graceful-fs": "4.1.11",
"graceful-fs": "4.1.15",
"mkdirp": "0.5.1",
"nopt": "3.0.6",
"npmlog": "4.1.2",
@ -920,6 +933,18 @@
"which": "1.3.1"
},
"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": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
@ -932,29 +957,41 @@
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"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": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"dev": true,
"requires": {
"ajv": "5.5.2",
"ajv": "6.6.1",
"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": {
"version": "1.36.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
"version": "1.37.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
"integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
"dev": true
},
"mime-types": {
"version": "2.1.20",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"version": "2.1.21",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"dev": true,
"requires": {
"mime-db": "1.36.0"
"mime-db": "1.37.0"
}
},
"oauth-sign": {
@ -982,12 +1019,12 @@
"extend": "3.0.2",
"forever-agent": "0.6.1",
"form-data": "2.3.2",
"har-validator": "5.1.0",
"har-validator": "5.1.3",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.20",
"mime-types": "2.1.21",
"oauth-sign": "0.9.0",
"performance-now": "2.1.0",
"qs": "6.5.2",
@ -1005,7 +1042,7 @@
},
"semver": {
"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=",
"dev": true
},
@ -1120,7 +1157,7 @@
},
"os-homedir": {
"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=",
"dev": true
},
@ -1135,7 +1172,7 @@
},
"os-tmpdir": {
"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=",
"dev": true
},
@ -1193,7 +1230,7 @@
},
"path-is-absolute": {
"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=",
"dev": true
},
@ -1203,7 +1240,7 @@
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "4.1.11",
"graceful-fs": "4.1.15",
"pify": "2.3.0",
"pinkie-promise": "2.0.1"
}
@ -1215,7 +1252,7 @@
},
"pify": {
"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=",
"dev": true
},
@ -1457,19 +1494,19 @@
}
},
"spdx-correct": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
"integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
"integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true,
"requires": {
"spdx-expression-parse": "3.0.0",
"spdx-license-ids": "3.0.1"
"spdx-license-ids": "3.0.2"
}
},
"spdx-exceptions": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
"integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
"integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
@ -1478,14 +1515,14 @@
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
"spdx-exceptions": "2.1.0",
"spdx-license-ids": "3.0.1"
"spdx-exceptions": "2.2.0",
"spdx-license-ids": "3.0.2"
}
},
"spdx-license-ids": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
"integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
"integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
"dev": true
},
"sshpk": {
@ -1529,7 +1566,7 @@
},
"string_decoder": {
"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==",
"dev": true,
"requires": {
@ -1543,7 +1580,7 @@
},
"strip-ansi": {
"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=",
"dev": true,
"requires": {
@ -1584,7 +1621,7 @@
},
"tar": {
"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=",
"dev": true,
"requires": {
@ -1640,6 +1677,23 @@
"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": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz",
@ -1665,7 +1719,7 @@
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "3.0.0",
"spdx-correct": "3.1.0",
"spdx-expression-parse": "3.0.0"
}
},

View File

@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "16.1.6",
"version": "17.0.0",
"description": "TheDesk is a Mastodon client for PC.",
"main": "main.js",
"scripts": {
@ -27,6 +27,7 @@
"license": "GPL-3.0-or-later",
"dependencies": {
"electron-dl": "^1.11.0",
"font-manager": "^0.3.0",
"jimp": "^0.2.28",
"node-notifier": "^5.2.1",
"sumchecker": "^2.0.2"
@ -38,7 +39,7 @@
"productName": "TheDesk",
"appId": "top.thedesk",
"directories": {
"output": "build"
"output": "../build"
},
"win": {
"icon": "thedesk.ico",
@ -56,9 +57,9 @@
"category": "Network"
},
"electronDownload": {
"version": "3.0.0"
"version": "3.0.10"
},
"electronVersion": "3.0.0"
"electronVersion": "3.0.10"
},
"devDependencies": {
"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/ui/jquery-ui.min.js"></script>
<script>
var ver="Akane (16.1.5)";
var ver="Miria (17.0.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -35,7 +35,7 @@ var winstore=false;
var acct_id=0;
var tlid=0;
var lang="en";
verck(ver);
verck(ver,winstore);
</script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl">
@ -528,28 +528,16 @@ var lang="en";
<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-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://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Akane (16.1.5)</h5>
16.1.5<br>
<ul>
<li>バグ,脆弱性修正</li>
</ul>
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>
<h5>Release Note Miria (17.0.0)</h5>
セキュリティアップデート、安定性の向上。<br>
<b>#InstanceTickerが使用できるように</b><br>
<b>フォントが直感的に選べるように</b><br>
<b>リンク解析をオンにしても制限がかからないように</b>(これによりデフォルトでオンになります。)<br>
</div>
<br><br>
<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,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
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>
<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>

View File

@ -59,7 +59,12 @@
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br>
<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">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br>
@ -162,6 +167,12 @@
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<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>
</div>
</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/ui/jquery-ui.min.js"></script>
<script>
var ver="Akane (16.1.5)";
var ver="Miria (17.0.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -35,7 +35,7 @@ var winstore=false;
var acct_id=0;
var tlid=0;
var lang="ja";
verck(ver);
verck(ver,winstore);
</script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl">
@ -528,28 +528,16 @@ var lang="ja";
<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-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://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Akane (16.1.5)</h5>
16.1.5<br>
<ul>
<li>バグ,脆弱性修正</li>
</ul>
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>
<h5>Release Note Miria (17.0.0)</h5>
セキュリティアップデート、安定性の向上。<br>
<b>#InstanceTickerが使用できるように</b><br>
<b>フォントが直感的に選べるように</b><br>
<b>リンク解析をオンにしても制限がかからないように</b>(これによりデフォルトでオンになります。)<br>
</div>
<br><br>
<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,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
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>
<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>

View File

@ -59,7 +59,12 @@
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<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">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
@ -162,6 +167,12 @@
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<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>
</div>
</li>

View File

@ -26,7 +26,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="Akane (16.1.5)";
var ver="Miria (17.0.0)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -35,7 +35,7 @@ var winstore=false;
var acct_id=0;
var tlid=0;
var lang="{{lang}}";
verck(ver);
verck(ver,winstore);
</script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl">
@ -528,28 +528,16 @@ var lang="{{lang}}";
<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-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://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Akane (16.1.5)</h5>
16.1.5<br>
<ul>
<li>バグ,脆弱性修正</li>
</ul>
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>
<h5>Release Note Miria (17.0.0)</h5>
セキュリティアップデート、安定性の向上。<br>
<b>#InstanceTickerが使用できるように</b><br>
<b>フォントが直感的に選べるように</b><br>
<b>リンク解析をオンにしても制限がかからないように</b>(これによりデフォルトでオンになります。)<br>
</div>
<br><br>
<h3>{{supportme}}</h3>

View File

@ -4,6 +4,7 @@
"yes":"Yes",
"no":"No",
"change":"Change",
"select":"Select",
"env":"System Preferences",
"setlang":"Languages",
"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.",
"above":"above",
"font":"Font",
"fontwarn":"Set local font",
"fontwarn":"Select your favorite font to 'Select'",
"fontsize":"Font size",
"savefolder":"Folder to save",
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
@ -62,6 +63,8 @@
"letters":"letters",
"or":"or",
"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",
"autocw":"Alert before posting a long toot.",
"autocwwarn":"Show dialog whether you make too-long text hidden.",

View File

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

View File

@ -60,6 +60,11 @@
<br>
<h5>{{font}}</h5>
{{fontwarn}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">{{select}}</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;">
</div>
<br>
<input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
@ -162,6 +167,12 @@
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<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>
</div>
</li>