TheDesk Akane (16.0.9)

This commit is contained in:
cutls 2018-08-23 02:29:39 +09:00
parent 406f65b17f
commit 8ed7796556
32 changed files with 484 additions and 1188 deletions

View File

@ -1,5 +1,5 @@
<!doctype html>
<html lang="en">
<html lang="ja">
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
@ -27,26 +27,26 @@ body,html{overflow-y: scroll;}
<script type="text/javascript" src="./js/common/materialize.js"></script>
<script type="text/javascript" src="./js/lang/lang.js"></script>
<script>
var lang="en";
var lang="ja";
</script>
<script type="text/javascript" src="./js/ui/tips.js"></script>
<script type="text/javascript" src="./js/common/time.js"></script>
<script type="text/javascript" src="./js/common/modal.js"></script>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">Back</a><br>
<h5>List of accounts</h5>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;">戻る</a><br>
<h5>アカウント一覧</h5>
<div id="acct-list"></div>
<div class="divider"></div>
<h5>Add an account</h5><br>
<h5>アカウントを追加</h5><br>
<div id="add">
<div class="row">
<div class="col s6">
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
Check if TheDesk is not working on Windows, you want to login Pleroma instance.<br>
Windows以外でご使用の方やPleromaにログインされる方はチェックを入れて下さい。<br>
<input type="checkbox" class="filled-in" id="linux" />
<label for="linux">Code setup</label><br>
<label for="linux">コードセットアップ</label><br>
<input type="checkbox" class="filled-in" id="misskey" />
<label for="misskey">Login as Misskey</label><br>
<label for="misskey">Misskeyとしてログイン</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s6">
@ -55,19 +55,19 @@ body,html{overflow-y: scroll;}
</div>
</div></div>
<div id="auth" style="display:none">
Paste the code and close browser.<br>
<input type="text" id="code" placeholder="Code">
指定されたコードを貼り付けてください。ログインウィンドウは閉じていただいて構いません。<br>
<input type="text" id="code" placeholder="コードを入力">
<button class="btn waves-effect" onclick="code()">Auth</button><br>
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Read <a href="https://thedesk.top/how-to-misskey-login.html">Docs(ja)</a> to login Misskey.<br>
<a href="https://thedesk.top/how-to-misskey-login.html">ドキュメント</a>を参照して正しいコードを入れてください。<br>
<input type="hidden" id="misskey-url">
<input type="text" id="misskey-key" placeholder="Code">
<input type="text" id="misskey-key" placeholder="コードを入力">
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
</div>
<h5>Main an account</h5>
<div class="input-field" style="width:300px"><span data-trans="your_acct">Select an account</span>
<h5>メインアカウント</h5>
<div class="input-field" style="width:300px"><span data-trans="your_acct">アカウントを選択</span>
<br>
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label>
@ -75,12 +75,12 @@ body,html{overflow-y: scroll;}
Instance data by <a href="https://instances.social" target="_blank">instances.social API</a><br>
<img src="./img/loading.svg" id="ins-prof" width="200"><br>
@<span id="ins-upd"></span><br>
Domain:<span id="ins-name"></span><br>
Federated instances:<span id="ins-connect"></span><br>
Toots:<span id="ins-toot"></span><br>
Users:<span id="ins-user"></span>Users<br>
Connection:<span id="ins-per"></span>%<br>
Mastodon version:<span id="ins-ver"></span><br>
ドメイン名:<span id="ins-name"></span><br>
接続インスタンス数:<span id="ins-connect"></span><br>
トゥート数:<span id="ins-toot"></span><br>
ユーザー数:<span id="ins-user"></span>ユーザー数<br>
コネクション:<span id="ins-per"></span>%<br>
Mastodonバージョン:<span id="ins-ver"></span><br>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>
<script type="text/javascript" src="./js/common/sha256.js"></script>

View File

@ -1,834 +1,5 @@
<!doctype html>
<html lang="en">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="./css/themes.css" type="text/css" rel="stylesheet">
<link href='./css/tl.css' rel='stylesheet' type='text/css'>
<link href='./css/userdata.css' rel='stylesheet' type='text/css'>
<link href='./css/post.css' rel='stylesheet' type='text/css'>
<link href="./css/master.css" type="text/css" rel="stylesheet">
<link href='./css/sort.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0;URL='language.html?mode=redirect'" />
</head>
<body>
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<script type="text/javascript" src="./js/lang/lang.js"></script>
<script type="text/javascript" src="./js/lang/parse.lang.js"></script>
<script type="text/javascript" src="./js/common/time.js"></script>
<script type="text/javascript" src="./js/common/version.js"></script>
<script type="text/javascript" src="./js/common/keyshortcut.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>
var ver="Akane (16.0.8)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
var acct_id=0;
var tlid=0;
var lang="en";
verck(ver);
</script>
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
<div id="tl">
<!--TL-->
<!--ドラッグハンドラ-->
<div id="drag">
<div id="drag-content" data-trans="drag_here">Drag here to upload
<br>
<button class="btn waves-effect" onclick="closedrop()" data-trans="close">Close</button>
</div>
</div>
</div>
<div id="post-box" class="z-depth-3">
<!--トゥートボックス-->
<div class="row" style="margin-bottom:0;">
</span>
<div class="" style="float:left;">
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize">
<img src="./img/missing.svg" id="acct-sel-prof" title="Show profile of the selecting account(Ctrl+Shift+P)" data-trans-title="post_box_prof" width="24px">
</a>
</div>
<div class="input-field mize" style="float:left; width:calc(100% - 24px)">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="Close this box(X)" data-trans-title="post_box_close">cancel</i>
</span>
<!--Markdown-->
<div class="row" style="margin-bottom:0">
<div class="markdown mize hide">
<div class="col s12">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">&nbsp;
<input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
<br>
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">&nbsp;
<input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0;">
<div id="md-preview">
</div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" data-length="500"></textarea>
<label for="textarea" data-trans="toot">Toot</label>
<br>
<span class="sml gray pointer markdown mize" id="preview-btn">
<a onclick="preview()">Preview</a>
</span>
<span class="sml gray pointer anti-markdown mize">
<a onclick="mdToggle()">Markdownエディタを表示</a>
</span>
<span id="suggest"></span>
</div>
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="Mark media as sensitive" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1' id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="Hide text behind warning">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" onclick="fileselect()" title="Attach..">photo_library</i></span></span>
<i class="waves-effect gray material-icons" onclick="adobe()" title="Adobe Photo Editor">format_shapes</i>
<i class="waves-effect gray material-icons" onclick="emoji()" title="Emojis">tag_faces</i>
<a class="pointer waves-effect gray" id="npbtn" title="NowPlaying[Click to insert info of Spotify(account link is required.)/control+click to insert that of iTunes(macOS)]"><i class="material-icons" style="font-size:24px;">music_note</i></a>
<i class="material-icons nex gray waves-effect" title="Clear toot box(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
</div>
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
<div id="taglist"></div>
<span id="preview" class="mize"></span>
<span class=" sml mize"><span data-trans="reply">Reply</span>:
<span id="rec">No</span>/<span data-trans="file">Attaching files</span>:
<span id="mec">None</span>/<span data-trans="vis">Adjust status privacy</span>:
<span id="vis">public</span>
</span>
<br>
<input type="text" id="cw-text" placeholder="Warning text" class="mize" style="margin:0">
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'>
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">Adjust status privacy</li>
<li>
<a onclick="vis('public')">(Public)</a>
</li>
<li>
<a onclick="vis('unlisted')">(Unlisted)</a>
</li>
<li>
<a onclick="vis('private')" id="private-button">(Private)</a>
</li>
<li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a>
</li>
<li>
<a onclick="vis('direct')" class="disabled direct">(Direct)</a>
</li>
</ul>
<!--hidden area-->
<input type="hidden" id="reply">
<input type="hidden" id="media">
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect indigo unmize" style="width:calc(100% - 10px); padding:0; margin-top:10px;" onclick="post()" id="toot-post-btn">Toot</button>
</div>
</div>
<!--絵文字ピッカー-->
<div id="emoji" class="hide shared z-depth-4">
<span class="gray sml">
<a onclick="emojiGet('true')" class="pointer">Refresh emojis list</a>
<i class="material-icons waves-effect" onclick="emoji()" title="Close this box" data-trans-title="post_box_close">cancel</i>
<br>
</span>
<input type="text" id="emoji-suggest" placeholder="Custom emojis Search">
<div id="emoji-list" class="" style="">
</div>
<div class="emoji-control center">
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" id="emoji-before">
<i class="material-icons">navigate_before</i>
</button>
<span id="emoji-count"></span>/
<span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" id="emoji-next">
<i class="material-icons">navigate_next</i>
</button>
</div>
<div id="default-emoji">
<span id="now-emoji"></span> are shown.<br><span class="gray sml">Some emojis are not able to be inserted.</span>
<br>
<a onclick="customEmoji()" class="pointer waves-effect" title="Custom emojis">
<i class="material-icons">add</i>
</a>
<a onclick="defaultEmoji('people')" class="pointer waves-effect" title="Emojis of people">
<i class="material-icons">people</i>
</a>
<a onclick="defaultEmoji('nature')" class="pointer waves-effect" title="Emojis of nature">
<i class="material-icons">local_florist</i>
</a>
<a onclick="defaultEmoji('food')" class="pointer waves-effect" title="Emojis of foods">
<i class="material-icons">restaurant</i>
</a>
<a onclick="defaultEmoji('activity')" class="pointer waves-effect" title="Emojis of activities">
<i class="material-icons">directions_run</i>
</a>
<a onclick="defaultEmoji('place')" class="pointer waves-effect" title="Emojis of places">
<i class="material-icons">directions_car</i>
</a>
<a onclick="defaultEmoji('object')" class="pointer waves-effect" title="Emojis of tools">
<i class="material-icons">attach_file</i>
</a>
<a onclick="defaultEmoji('symbol')" class="pointer waves-effect" title="Emojis of symbols">
<i class="material-icons">gesture</i>
</a>
<a onclick="defaultEmoji('flag')" class="pointer waves-effect" title="Emojis of flags">
<i class="material-icons">flag</i>
</a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fa fa-fort-awesome"></i>
</a>
</div>
</div>
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col">
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_upward</i>Context before this toot
</div>
<div class="collapsible-body toot-reset" id="toot-reply">
</div>
</li>
<li>
<div class="collapsible-header" id="activator">
<i class="material-icons">more_horiz</i>This toot
</div>
<div class="collapsible-body toot-reset" id="toot-this">
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_downward</i>Context after this toot
</div>
<div class="collapsible-body toot-reset" id="toot-after">
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">people_outline</i>Local TL before this toot
</div>
<div class="collapsible-body toot-reset" id="toot-before">
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">person_outline</i>User TL before this toot
</div>
<div class="collapsible-body toot-reset" id="user-before">
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">star</i>People who favourited it
</div>
<div class="collapsible-body toot-reset" id="toot-fav">
</div>
</li>
<li>
<div class="collapsible-header">
<i class="text-darken-3 fa fa-retweet"></i>People who boosted it
</div>
<div class="collapsible-body toot-reset" id="toot-rt">
</div>
</li>
</ul>
Use other account(<i class="fa fa-retweet"></i>/<i class="fa fa-star"></i>:unfav and unBT are disabled.)<br>
<div class="row">
<div class="col s4">
<select id="status-acct-sel" class="acct-sel"></select>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i class="fa fa-share left"></i>Reply</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i class="fa fa-retweet left"></i>Boost</button>
</div>
<div class="col s3">
<button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i class="fa fa-star left"></i>Favourite</button>
</div>
</div>
<div id="toot-tools">
</div>
<div id="toot-after">
</div>
</div>
<div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat" onclick="brws()">Open in browser</a>
<a href="#!" class="waves-effect waves-green btn-flat" onclick="shot()">Take a screenshot</a>
<a href="#!" class="waves-effect waves-green btn-flat" onclick="cbCopy()">Copy URL of this toot</a>
<a href="#!" class="waves-effect waves-green btn-flat" onclick="cbCopy('emb')">Embed</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Use other account</a>
</div>
</div>
<!-- Modal Structure Userdata -->
<div id="his-data" class="modal bottom-sheet modal-fixed-footer" style="max-height:750px; height:90%;">
<div id="his-data-content" class="modal-content" style="padding-bottom: 0;overflow-y:hidden;">
<div id="his-data-show">
<img src="./img/loading.svg" id="his-prof" style="">
<div class="his-float">
<span id="his-name" style="font-size:1.5rem">Loading...</span><span class="gray" id="his-bot"></span>
<br>@
<span id="his-acct"></span>
<span class="gray" id="his-relation"></span>
<br>
<span class="cbadge">
<span id="his-sta"></span>Toots
</span>
<span class="cbadge">Follow:
<span id="his-follow"></span>
</span>
<span class="cbadge">Follower:
<span id="his-follower"></span>
</span>
<span class="cbadge" style="max-width:150px; width:150px; ">Since:
<span id="his-since"></span>
</div>
<div class="his-float">
<span id="his-des"></span>
<br>
</div>
<div class="row">
<div class="col s12" id="my-data-nav">
<ul class="custom-tabs transparent">
<li class="custom-tab col my-data-width active-back column-first">
<a go="#his-tl">Timeline</a>
</li>
<li class="custom-tab col my-data-width">
<a go="#his-follow-list">Follow</a>
</li>
<li class="custom-tab col my-data-width">
<a go="#his-follower-list">Follower</a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<a go="#his-action">Cross-account</a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<a go="#his-list">List</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-fav-list">Favourite</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-blocking-list">Blocks</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-muting-list">Mutes</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-domain-list">Domain block</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-prof-list">Edit profile</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-request-list">Follow requests</a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<a go="#his-matching-list">Resembling</a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<a go="#his-follow-recom-list">Suggest</a>
</li>
</ul>
</div>
<div id="his-tl" class="col s12 tab-content">
<div id="his-tl-contents" class="cont-series">
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="utl('--now','more')">More</button>
</div>
<div id="his-follow-list" class="col s12 tab-content">
<div id="his-follow-list-contents" class="cont-series">
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="flw('--now','more')">More</button>
</div>
<div id="his-follower-list" class="col s12 tab-content">
<div id="his-follower-list-contents" class="cont-series">
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="fer('--now','more')">More</button>
</div>
<div id="his-action" class="col s12 tab-content">
Use other account to Follow((Unable to unfollow))<br>
<div style="max-width:500px;"><select id="user-acct-sel" class="acct-sel"></select></div>
<a href="#!" class="waves-effect btn" onclick="follow('selector','true')">Follow</a><br>
or<br>
<a href="#!" class="waves-effect btn" onclick="udgEx('selector', 'selector')">Show profile</a><br>
</div>
<div id="his-list" class="col s12 tab-content">
<div id="his-lists-a">Follow to add this user to lists.</div>
<div id="his-lists-b"></div>
</div>
<div id="his-fav-list" class="col s12 tab-content">
<div id="his-fav-list-contents" class="cont-series">
</div>
<button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">More</button>
</div>
<div id="his-blocking-list" class="col s12 tab-content">
<div id="his-blocking-list-contents"class="cont-series" >
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">More</button>
</div>
<div id="his-muting-list" class="col s12 tab-content">
<div id="his-muting-list-contents" class="cont-series">
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showMut('more')">More</button>
</div>
<div id="his-domain-list" class="col s12 tab-content">
<div id="his-domain-list-contents" class="cont-series">
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showDom('more')">More</button>Add blocking domain
<br>
<input type="text" placeholder="example.com" id="domainblock">
<button class="btn waves-effect" onclick="addDomainblock()">Add</button>
<br>
</div>
<div id="his-prof-list" class="col s12 tab-content">Display name
<br>
<input type="text" placeholder="Display name" id="his-name-val" style="max-width:250px;">
<br>Note
<br>
<div class="input-field col s12">
<textarea placeholder="Note" id="his-des-val" class="materialize-textarea"></textarea>
<label for="his-des-val">Note</label>
</div>
<br>Change avataor:
<span id="prof-change">
<input type="file" onchange="imgChange(this,'avatar')">
</span>
<br>Change header image:
<span id="header-change">
<input type="file" onchange="imgChange(this,'header')">
</span>
</div>
<div id="his-request-list" class="col s12 tab-content">
<div id="his-request-list-contents" class="cont-series">
</div>
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showReq('more')">More</button>
</div>
<div id="his-matching-list" class="col s12 tab-content">
Get people resembling this user.<br>
Powered by <a href="https://vinayaka.distsn.org/" target="_blank">Mastodon User Matching</a><br>
<div id="his-matching-list-contents" class="cont-series">
</div>
<button class="btn waves-effect " onclick="showMat()">Get</button>
</div>
<div id="his-follow-recom-list" class="col s12 tab-content">
<div id="his-follow-recom-contents" class="cont-series">
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">Back</button>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" onclick="follow()">Follow</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn" onclick="mute()">Mute</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn" onclick="block()">Block</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-emp-btn" onclick="empUser()">Emphasize this user</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
</div>
</div>
<!-- Modal Structure Image-->
<div id="imagemodal" class="modal modal-fixed-footer" style="min-width:550px">
<div class="modal-content">
<div id="imagewrap">
<img src="" id="imgmodal">
</div>
<br>
</div>
<div class="modal-footer">
DL:<span id="imgprog"></span>%
<a class="waves-effect white-text" onclick="zoom(2)">
<i class="material-icons">zoom_in</i>
</a>
<a class="waves-effect white-text" onclick="zoom(0.5)">
<i class="material-icons">zoom_out</i>
</a>
<button class="btn waves-effect purple" onclick="dlImg()">
<i class="material-icons">file_download</i>
</button>
<button class="btn waves-effect brown" onclick="detFromImg()">This toot</button>
<button class="btn waves-effect orange" onclick="imgCont('prev')" id="image-prev">
<i class="material-icons">keyboard_arrow_left</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('next')" id="image-next">
<i class="material-icons">keyboard_arrow_right</i>
</button>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">
<i class="material-icons">close</i>
</a>
</div>
</div>
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls >
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
</div>
</div>
<!-- Modal Structure Release Note-->
<div id="releasenote" class="modal modal-fixed-footer">
<div class="modal-content">
<h3>TheDesk</h3>
<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-0-8" style="display:none">
<h5>Release Note Akane (16.0.8)</h5>
16.0.7<br>
<ul>
<li>ログインできない問題を修正。</li>
<li>ストリーミングが切れることがある不具合を修正。</li>
<li>通知カラムが存在するときにベルアイコンが赤くならないようにする設定を追加。</li>
</ul>
16.0.7<br>
<ul>
<li>Pixiv埋め込み</li>
<li>Misskey(URL Analyzer/Realtime Reaction)</li>
<li>その他修正</li>
</ul>
16.0.6/16.0.5<br>
<ul>
<li>開けっ放し設定時にズレるバグ</li>
<li>閉じた後Nで開かないバグ</li>
<li>その他修正</li>
</ul>
16.0.4<br>
<ul>
<li>一部ロケールを追加</li>
<li>Misskeyの一部修正</li>
<li>アニメーションの変更</li>
</ul>
16.0.3<br>
<ul>
<li>Misskey周りの改善</li>
<li>Fav/BT/Reply数の表示バグ修正(β)</li>
</ul>
16.0.2<br>
<ul>
<li>CWの固定</li>
<li>トゥートボックスを閉じない設定</li>
</ul>
16.0.1<br>
<ul>
<li>(β)Windows環境ではアップデート時に自動で展開を行います。ダウンロードを押すだけでアップデートは完結します。</li>
</ul>
16.0.0
<ul>
<li>言語設定:英語に対応</li>
<li>Misskeyに暫定対応</li>
<li>デザインを大きく変更</li>
</ul>
</div>
<br><br>
TheDesk is open-source software. We need your friendly support!<br>
<a href="https://enty.jp/Cutls" target="_blank">Support on Enty</a><br>
<a href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">Amazon Wish List</a><br>
Give me Amazon Gift Card:<a href="mailto:mstdn@thedesk.top" target="_blank">mstdn@thedesk.top</a><br>
<a href="https://osushi.love/Cutls_P" target="_blank">Osushi.love</a>: give me sushi<br>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
</div>
</div>
<!--PiP-->
<div id="pip" class="hide pip-bottom pip-left">
<i class="material-icons pip-horiz pointer" onclick="pipHoriz()">chevron_right</i> 
<i class="material-icons pip-vert pointer" onclick="pipVert()">expand_less</i> 
<i class="material-icons pointer" onclick="endPip()">close</i>
<div id="pip-content">
</div>
</div>
<!--カラム追加-->
<div id="add-box" class="hide z-depth-4 notf-box">
<div class="input-field"><span data-trans="your_acct">Select an account</span>
<br>
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
<label></label>
</div>
<div class="input-field">
<div id="auth">
<select id="type-sel" style="color:black">
<option value="local" data-trans="local">Local</option>
<option value="local-media" data-trans="local-media">Local(Media)</option>
<option value="home" data-trans="home">Home</option>
<option value="pub" data-trans="public">Federated</option>
<option value="pub-media" data-trans="public-media">Federated(Media)</option>
<option value="dm" data-trans="dm">Direct Message</option>
<option value="mix" data-trans="integrated">Integrated(Local and Home)</option>
<option value="plus" data-trans="plus">Integrated(Local and replies and BT on Home)</option>
<option value="notf" data-trans="notification">Notifications</option>
</select>
<label data-trans="show_tl">Show this TL:</label>
</div>
<div id="noauth" class="hide">Show this TL:
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
</div>
</div>
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
<i class="material-icons left">add</i>Add
</button>
<br>
<br>
</div>
<!--検索-->
<div id="src-box" class="hide notf-box z-depth-4" style="width:500px">
<div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div><div class="input-field">
<i class="material-icons prefix">search</i>
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
<label for="src" data-trans="src">Search</label>
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
<i class="material-icons left">search</i>Search
</button>
<br>
<br>
</div>
<div id="search">
<div id="src-contents">
</div>
</div>
</div>
<!--並べ替え-->
<div id="sort-box" class="hide">
<ul id="sort"></ul>
<div>
<button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
<i class="material-icons left">sort</i>Sort
</button>
<button onclick="sortToggle()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="close">
<i class="material-icons left">close</i>Close
</button>
</div>
</div>
<!--リスト-->
<div id="list-box" class="hide notf-box z-depth-4">
<div class="input-field" style="width:calc( 100% - 100px);float:left">
<select id="list-acct-sel" class="acct-sel"></select>
<label>Select an account</label>
</div>
<div style="float:left; padding-top:8px; padding-bottom:28px;">
<button class="btn waves-effect indigo" style="width:80px;" onclick="list()" data-trans-i="lists">
List
</button>
</div>
<br><br>
<div id="lists"></div>
<div id="lists-user"></div>
<input type="text" style="width:150px" id="list-add" placeholder="Display name">
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">Save</button>
</div>
<!--フィルター-->
<div id="filter-box" class="hide notf-box z-depth-4">
<div class="input-field" style="width:calc( 100% - 100px);float:left">
<select id="filter-acct-sel" class="acct-sel"></select>
<label>Select an account</label>
</div>
<div style="float:left; padding-top:8px; padding-bottom:28px;">
<button class="btn waves-effect indigo" style="width:80px;" onclick="filter()" data-trans-i="filters">
List
</button>
</div>
<div id="filtered-words"></div>
<input type="hidden" id="filter-edit-id">
<input type="text" style="width:150px" id="filter-add-word" placeholder="Filtering words"><br>
Filter contexts<br>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<label for="home_filter">Home</label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<label for="local_filter">Local</label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<label for="notf_filter">Notifications</label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<label for="conv_filter">Conversations</label><br>
Options<br>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<label for="wholeword_filter">Whole word</label><br>
<span class="sml">Nice for Latin language</span><br>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<label for="except_filter">Drop instead of hide</label><br>
<span class="sml">Filtered toots will disappear irreversibly, even if filter is later removed</span><br>
Expire after<span class="sml">Unset or "0" means "Never"<b>This value may contain some error</b></span><br><br>
<input type="text" style="width:50px" id="days_filter" placeholder="d" value="0">days
<input type="text" style="width:50px" id="hours_filter" placeholder="h" value="0">hours
<input type="text" style="width:50px" id="mins_filter" placeholder="m" value="0">minutes
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">Add</button><br>
<span class="sml">Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.</span>
</div>
<div id="main">
<!--TLのTL-->
<div id="timeline-container">
<h3>Welcome to TheDesk</h3><br><a href="acct.html">Add an account</a> or click <i class="material-icons">add</i> to add a column.
</div>
</div>
</div>
<!--bottom-->
<div id="bottom">
<div class="leftside">
<div id="dambox">
<input type="text" id="posttgl" placeholder="Toot" style="height:2rem">
</div>
<div class="leftside" id="group">
<div class="btnsgroup"><span class="grouptitle">Columns:</span>
<a onclick="addToggle()" class="nex waves-effect" data-trans-i="add" id="add-tgl">
<i class="material-icons nex" title="Add a column" data-trans-title="column_add">add</i>
</a>
<a onclick="sortToggle()" class="nex waves-effect">
<i class="material-icons nex big-icon" title="Sort" data-trans-title="sort">sort</i>
</a>
</div>
<div class="btnsgroup"><span class="grouptitle">Accounts:</span>
<a href="acct.html" class="nex waves-effect">
<i class="material-icons nex big-icon" title="Account Manager(Ctrl+Shift+M)" data-trans-title="manager">account_circle</i>
</a>
<a onclick="srcToggle()" class="nex waves-effect" id="src-tgl">
<i class="material-icons" title="Search" data-trans-title="src">search</i>
</a>
<a onclick="listToggle()" class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="List" data-trans-title="list">view_headline</i>
</a>
<a onclick="filterToggle()" class="nex waves-effect" id="filter-tgl">
<i class="material-icons" title="Filter" data-trans-title="filter">filter_list</i>
</a>
</div>
<div class="btnsgroup"><span class="grouptitle">Preferences:</span>
<a href="setting.html" class="nex waves-effect">
<i class="material-icons nex" title="Preferences(Ctrl+Shift+S)" data-trans-title="setting">settings</i>
</a>
<a href="index.html" class="nex mize waves-effect">
<i class="material-icons nex" title="Super Reload(F5/⌘+R)" data-trans-title="reload">refresh</i>
</a>
<a onclick="nano()" class="nex waves-effect">
<i class="material-icons" title="The smallest Mastodon,TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
</a>
<a onclick="window.open('https://astarte.thedesk.top');" class="setting nex waves-effect" target="_blank" id="ranking-btn" style="display:none;">
<i class="material-icons nex" title="アスタルテランキング">timeline</i>
</a>
</div>
</div>
</div>
<div>
<div id="tips-menu">
<div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span>
<a onclick="tips('ver')" class="nex waves-effect">
<i class="material-icons nex" title="Version" data-trans-title="ver">info</i>
</a>
<a onclick="tips('clock')" class="nex waves-effect">
<i class="material-icons nex" title="Clock" data-trans-title="clock">access_time</i>
</a>
<a onclick="tips('memory')" class="nex waves-effect">
<i class="material-icons nex" title="RAM status" data-trans-title="memory">memory</i>
</a>
<a onclick="tips('trend')" class="nex waves-effect imasonly" style="display:none;">
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a>
<a onclick="tips('spotify')" class="nex waves-effect">
<i class="fa fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a>
</div>
</div>
<div id="tips" class="hide">
<a onclick="tipsToggle()" class="nex waves-effect" style="float:left">
<i class="material-icons nex" title="Change Tips" data-trans-title="tips">bubble_chart</i>
</a>
<div id="tips-text" style="float:left; width:300px;"></div>
</div>
</div>
</div>
<!--左下メッセージ-->
<div id="message">
</div>
<!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio>
<!--JS-->
<script type="text/javascript" src="./js/ui/tips.js"></script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="./js/common/about.js"></script>
<script type="text/javascript" src="./js/tl/parse.js"></script>
<script type="text/javascript" src="./js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="./js/ui/scroll.js"></script>
<script type="text/javascript" src="./js/tl/tl.js"></script>
<script type="text/javascript" src="./js/tl/card.js"></script>
<script type="text/javascript" src="./js/tl/date.js"></script>
<script type="text/javascript" src="./js/tl/notification.js"></script>
<script type="text/javascript" src="./js/tl/datails.js"></script>
<script type="text/javascript" src="./js/tl/mix.js"></script>
<script type="text/javascript" src="./js/tl/src.js"></script>
<script type="text/javascript" src="./js/tl/filter.js"></script>
<script type="text/javascript" src="./js/tl/tag.js"></script>
<script type="text/javascript" src="./js/tl/list.js"></script>
<script type="text/javascript" src="./js/tl/speech.js"></script>
<script type="text/javascript" src="./js/ui/post-box.js"></script>
<script type="text/javascript" src="./js/ui/layout.js"></script>
<script type="text/javascript" src="./js/login/instance.js"></script>
<script type="text/javascript" src="./js/login/login.js"></script>
<script type="text/javascript" src="./js/ui/img.js"></script>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/ui/pip.js"></script>
<script type="text/javascript" src="./js/ui/sort.js"></script>
<script type="text/javascript" src="./js/ui/spotify.js"></script>
<script type="text/javascript" src="./js/post/post.js"></script>
<script type="text/javascript" src="./js/post/use-txtbox.js"></script>
<script type="text/javascript" src="./js/post/secure.js"></script>
<script type="text/javascript" src="./js/post/img.js"></script>
<script type="text/javascript" src="./js/post/status.js"></script>
<script type="text/javascript" src="./js/post/misskeystatus.js"></script>
<script type="text/javascript" src="./js/post/emoji.js"></script>
<script type="text/javascript" src="./js/post/suggest.js"></script>
<script type="text/javascript" src="./js/post/bb-md.js"></script>
<script type="text/javascript" src="./js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="./js/userdata/his-data.js"></script>
<script type="text/javascript" src="./js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="./js/emoji/emojipack.js"></script>
<script type="text/javascript" src="./js/emoji/default-emoji.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>

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.0.8)";
var ver="Akane (16.0.9)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@ -520,61 +520,39 @@ var lang="{{lang}}";
<div class="modal-content">
<h3>TheDesk</h3>
<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-0-8" style="display:none">
<h5>Release Note Akane (16.0.8)</h5>
16.0.7<br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br>
<div id="release-Akane_16-0-9" 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に関する記事をご覧いただけます。
<h5>Release Note Akane (16.0.9)</h5>
16.0.9<br>
<ul>
<li>ログインできない問題を修正。</li>
<li>ストリーミングが切れることがある不具合を修正。</li>
<li>通知カラムが存在するときにベルアイコンが赤くならないようにする設定を追加。</li>
<li>ログインできない問題を修正</li>
<li>ストリーミングが切れることがある不具合を修正</li>
<li>長文投稿時にCWが簡単に付く機能</li>
<li>誰が通知アクションをしたかのミニアイコンを表示</li>
<li>クリップボードへ複数枚の貼り付けに対応</li>
<li>全てのMisskeyに全てのOSからログイン可能に</li>
<li>friends.nicoのユーザー絵文字に対応</li>
<li>バグ修正</li>
</ul>
16.0.7<br>
<ul>
<li>Pixiv埋め込み</li>
<li>Misskey(URL Analyzer/Realtime Reaction)</li>
<li>その他修正</li>
</ul>
16.0.6/16.0.5<br>
<ul>
<li>開けっ放し設定時にズレるバグ</li>
<li>閉じた後Nで開かないバグ</li>
<li>その他修正</li>
</ul>
16.0.4<br>
<ul>
<li>一部ロケールを追加</li>
<li>Misskeyの一部修正</li>
<li>アニメーションの変更</li>
</ul>
16.0.3<br>
<ul>
<li>Misskey周りの改善</li>
<li>Fav/BT/Reply数の表示バグ修正(β)</li>
</ul>
16.0.2<br>
<ul>
<li>CWの固定</li>
<li>トゥートボックスを閉じない設定</li>
</ul>
16.0.1<br>
<ul>
<li>(β)Windows環境ではアップデート時に自動で展開を行います。ダウンロードを押すだけでアップデートは完結します。</li>
</ul>
16.0.0
<ul>
<li>言語設定:英語に対応</li>
<li>Misskeyに暫定対応</li>
<li>デザインを大きく変更</li>
</ul>
</div>
<br><br>
<h3>{{supportme}}</h3>
{{TheDeskDes}}<br>
<a href="https://enty.jp/Cutls" target="_blank">{{EntySupport}}</a><br>
<a href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">{{AWLSupport}}</a><br>
<a class="btn-share btn waves-effect waves-light purple lighten-2" href="https://enty.jp/Cutls" target="_blank">
{{EntySupport}}
</a>
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://osushi.love/Cutls_P" target="_blank">
{{sendSushi}}
</a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
{{AWLSupport}}
</a>
<br>
{{SendAmazonGift1}}<a href="mailto:mstdn@thedesk.top" target="_blank">mstdn@thedesk.top</a>{{SendAmazonGift2}}<br>
<a href="https://osushi.love/Cutls_P" target="_blank">Osushi.love</a>{{sendSushi}}<br>
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">{{close}}</a>

View File

@ -4,7 +4,7 @@ $(function($) {
var hasFocus = $('input').is(':focus');
var hasFocus2 = $('textarea').is(':focus');
//Ctrl+Enter:投稿
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 13) {
post();
return false;
@ -35,7 +35,7 @@ $(function($) {
return false;
}
//Ctrl+R:ランキング
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 82) {
if(localStorage.getItem("kirishima")){
window.open("https://astarte.thedesk.top");
@ -43,14 +43,14 @@ $(function($) {
}
}
//Ctrl+Sift+C:全消し
if (event.ctrlKey && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 67) {
clear();
return false;
}
}
//Ctrl+Sift+N:NowPlaying
if (event.ctrlKey && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 78) {
show();
nowplaying()
@ -60,7 +60,7 @@ $(function($) {
//input/textareaにフォーカスなし時
if (!hasFocus && !hasFocus2) {
//Ctrl+V:いつもの
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 86) {
show();
}
@ -83,42 +83,42 @@ $(function($) {
return false;
}
//Ctrl+E:全ての通知未読を既読にする
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 69) {
allNotfRead();
return false;
}
}
//Ctrl+Space:読み込み
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 32) {
parseColumn();
return false;
}
}
//Ctrl+Sift+S:設定
if (event.ctrlKey && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 83) {
location.href = "setting.html";
return false;
}
}
//Ctrl+Sift+M:アカマネ
if (event.ctrlKey && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 77) {
location.href = "acct.html";
return false;
}
}
//Ctrl+Sift+P:プロフ
if (event.ctrlKey && event.shiftKey) {
if ((event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) {
profShow()
return false;
}
}
//数字:TL
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
if (e.keyCode >= 49 && e.keyCode <= 57) {
var kz=e.keyCode-49;
goColumn(kz);
@ -128,7 +128,7 @@ $(function($) {
}
//textareaフォーカス時
if (hasFocus2) {
if (event.ctrlKey) {
if (event.metaKey || event.ctrlKey) {
//Ctrl+B:太字
if (e.keyCode === 66) {
tagsel('b');
@ -150,7 +150,7 @@ $(function($) {
return false;
}
//C+S+(No):ワンクリ
if (event.ctrlKey && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) {
var no=e.keyCode-48;
if(localStorage.getItem("oks-"+no)){$("#textarea").val($("#textarea").val()+localStorage.getItem("oks-"+no))}

View File

@ -144,6 +144,26 @@ var lang_post_tagTL={
"ja":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
"en":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?"
}
var lang_post_cwtitle={
"ja":"長文投稿の警告",
"en":"Auto CW Alert"
}
var lang_post_cwtxt={
"ja":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
"en":"You are about to post longer toot than you set.\nWarning text:"
}
var lang_post_btn1={
"ja":"キャンセル(投稿しない)",
"en":"Cancel (will not post)"
}
var lang_post_btn2={
"ja":"自動でCWを付ける",
"en":"Make text hidden automatically"
}
var lang_post_btn3={
"ja":"そのまま投稿",
"en":"Continue to post"
}
//post/status.js
var lang_status_favWarn={
"ja":"お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。",

View File

@ -50,6 +50,10 @@ var lang_setting_selt={
"ja":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
"en":"Auto fold:{{set1}} lines and above, {{set2}} letters and above"
}
var lang_setting_autocw={
"ja":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
"en":"Auto CW:{{set1}} lines and above, {{set2}} letters and above"
}
var lang_setting_width={
"ja":"横幅最低を{{set}}pxに設定しました。",
"en":"Minimam width:{{set}}"

View File

@ -381,7 +381,7 @@ function ckdb(acct_id) {
localStorage.setItem("follow_" + acct_id, json[domain + "_follow"]);
}
}
if(domain.indexOf("misskey::")==-1 || domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/v1/instance/activity";
fetch(start, {
method: 'GET',
@ -404,9 +404,6 @@ function ckdb(acct_id) {
});
}else{
if(domain=="misskey.xyz"){
localStorage.setItem("domain_" + acct_id,"misskey::misskey.xyz");
}
}
@ -441,7 +438,6 @@ function multiSelector() {
if (key == last) {
sel = "selected";
var domain = localStorage.getItem("domain_" + key);
var domain=domain.replace( "misskey::", "" );
if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain+"_letters"])
}else{

View File

@ -33,9 +33,14 @@ function load() {
}else{
var style=""
}
if(acct.name){
var name=acct.name;
}else{
var name=acct.user;
}
templete = '<div id="acct_' + key + '" class="card" '+style+'><div class="card-content "><span class="lts">' + list +
'.</span><img src="' + acct.prof + '" width="40" height="40"><span class="card-title">' +
acct.name + '</span>' + escapeHTML(acct.user) + '@' + acct.domain +
name + '</span>' + escapeHTML(acct.user) + '@' + acct.domain +
'</div><div class="card-action"><a class="waves-effect disTar pointer white-text" onclick="data(\'' +
acct.domain +
'\')"><i class="material-icons">info</i>'+lang_manager_info[lang]+'</a><a class="waves-effect disTar pointer white-text" onclick="refresh(' +
@ -306,11 +311,12 @@ function misskeyLogin(url) {
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
localStorage.setItem("msky","ture");
localStorage.setItem("msky","true");
if(url=="misskey.xyz"){
var mkc=localStorage.getItem("mkc");
}else{
var mkc=$("#misskey-key").val();
localStorage.setItem("mkc",mkc)
if(!mkc){
$("#misskeylogin").show();
$("#misskey-url").val(url);
@ -371,7 +377,7 @@ function code(code) {
}
var url = localStorage.getItem("domain_tmp");
localStorage.removeItem("domain_tmp");
console.log(url);
console.log(localStorage.getItem("msky"));
if(localStorage.getItem("msky")=="true"){
var start = "https://"+url+"/api/auth/session/userkey";
var httpreq = new XMLHttpRequest();
@ -399,6 +405,7 @@ function code(code) {
vis: priv,
mode: "misskey"
};
localStorage.setItem("mode_" + url,"misskey")
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var target = obj.lengtth;
@ -560,7 +567,6 @@ function refresh(target) {
});
}
function misskeyRefresh(obj,target,url){
var start = "https://"+url+"/api/users/show";
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);

View File

@ -10,7 +10,7 @@ function mdCheck(){
if(localStorage.getItem("post_" + acct_id)){
$("#toot-post-btn").text(localStorage.getItem("post_" + acct_id)+"("+localStorage.getItem("domain_"+acct_id)+")");
}else{
$("#toot-post-btn").text(lang_toot[lang]+"("+localStorage.getItem("domain_"+acct_id).replace( "misskey::", "" )+")");
$("#toot-post-btn").text(lang_toot[lang]+"("+localStorage.getItem("domain_"+acct_id)+")");
}
if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){
$(".markdown").addClass("hide");
@ -39,7 +39,7 @@ function mdCheck(){
}else{
$("#trendtag").html("");
}
if(~domain.indexOf("misskey::")){
if(localStorage.getItem("mode_" + domain)=="misskey"){
Materialize.toast(lang_bbmd_misskey[lang], 5000);
}
if(idata[domain+"_letters"]){

View File

@ -102,9 +102,9 @@ function media(b64, type, no) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var httpreq = new XMLHttpRequest();
if(~domain.indexOf("misskey::")){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain.replace( "misskey::", "" ) + "/api/drive/files/create";
var start = "https://" + domain + "/api/drive/files/create";
httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
httpreq.responseType = 'json';
@ -183,6 +183,7 @@ function toBlob(base64, type) {
//画像を貼り付けたら…
var element = document.querySelector("#textarea");
element.addEventListener("paste", function(e){
console.log("paste")
// 画像の場合
// e.clipboardData.types.length == 0
// かつ
@ -192,6 +193,7 @@ element.addEventListener("paste", function(e){
|| !e.clipboardData.types
|| (e.clipboardData.types.length != 1)
|| (e.clipboardData.types[0] != "Files")) {
console.log("not image")
return true;
}
@ -206,7 +208,7 @@ element.addEventListener("paste", function(e){
var base64 = e.target.result;
var mediav = $("#media").val();
if(mediav){
var i=media.split(",").length;
var i=mediav.split(",").length;
}
media(base64, "image/png", i)
};

View File

@ -6,7 +6,7 @@ function renote(id, acct_id, remote) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/notes/create";
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
return false;
}
var httpreq = new XMLHttpRequest();
@ -52,7 +52,7 @@ function reactiontoggle(id,acct_id,tlid){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/notes/show";
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
return false;
}
var httpreq = new XMLHttpRequest();
@ -152,7 +152,7 @@ function reaction(mode,id,acct_id,tlid){
var flag="create";
}
var start = "https://" + domain + "/api/notes/reactions/"+flag;
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
return false;
}
var httpreq = new XMLHttpRequest();
@ -171,7 +171,7 @@ function vote(acct_id,id,to){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/notes/polls/vote";
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
return false;
}
var httpreq = new XMLHttpRequest();

View File

@ -1,6 +1,6 @@
/*投稿系*/
//投稿
function post() {
function post(mode) {
if($("#toot-post-btn").prop("disabled")){
return
}
@ -26,7 +26,31 @@ function post() {
}
}
}
if(domain=="misskey.xyz"){
if(mode!="pass" && !$("#cw").hasClass("cw-avail") && (str.length>localStorage.getItem("cw_sentence") || (str.split("\n").length - 1)>localStorage.getItem("cw_letters"))){
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var plus=str.replace(/\n/g,"").slice(0,10)+"...";
const options = {
type: 'info',
title: lang_post_cwtitle[lang],
message: lang_post_cwtxt[lang]+plus,
buttons: [lang_post_btn1[lang],lang_post_btn2[lang], lang_post_btn3[lang]]
}
dialog.showMessageBox(options, function(arg) {
if(arg==1){
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass");
}else if(arg==2){
post("pass");
}
})
return false;
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
misskeyPost();
return;
}
@ -90,7 +114,7 @@ function misskeyPost(){
var str = $("#textarea").val();
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("last-use", acct_id);
var domain = "misskey.xyz"
var domain = localStorage.getItem("domain_" + acct_id);
$("#toot-post-btn").prop("disabled", true);
todo("Posting");
var at = localStorage.getItem("acct_"+ acct_id + "_at");

View File

@ -116,7 +116,7 @@ function follow(acct_id,remote) {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/following/"+flagm;
var user=$("#his-acct").text();
var ent={"i":at,"userId":id}
@ -198,7 +198,7 @@ function mute(acct_id) {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/mute/"+flagm;
var ent={"i":at,"userId":id}
var rq=JSON.stringify(ent);
@ -229,7 +229,7 @@ function mute(acct_id) {
function del(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/delete";
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);

View File

@ -49,7 +49,7 @@ function additional(acct_id, tlid) {
$(this).remove();
} else if (!card) {
var id = $(this).parents('.cvo').attr("toot-id");
if(localStorage.getItem("domain_" + acct_id)=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/url?url="+text;
fetch(start, {
method: 'GET',
@ -173,7 +173,7 @@ function additionalIndv(tlid, acct_id, id) {
if (urls) {
$("[toot-id="+id+"] .toot a").remove();
} else {
if(localStorage.getItem("domain_" + acct_id)=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/url?url="+text;
fetch(start, {
method: 'GET',

View File

@ -6,7 +6,7 @@ function details(id, acct_id, tlid) {
$('#tootmodal').modal('open');
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/show";
var i={
method: 'POST',
@ -41,8 +41,8 @@ function details(id, acct_id, tlid) {
$("#toot-this").html(html);
jQuery("time.timeago").timeago();
}
if(domain=="misskey.xyz"){
var url="https://misskey.xyz/notes/"+json.id;
if(localStorage.getItem("mode_" + domain)=="misskey"){
var url="https://"+domain+"/notes/"+json.id;
var scn=json.user.username;
if(!json.user.host){
var local=true;
@ -98,7 +98,7 @@ function details(id, acct_id, tlid) {
function replyTL(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/show";
var i={
method: 'POST',
@ -131,7 +131,7 @@ function replyTL(id, acct_id) {
}else{
var mute=[];
}
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var templete = misskeyParse([json], '', acct_id,"","",mute);
$("#toot-after").prepend(templete);
$("#toot-after .hide").html(lang_details_filtered[lang]);
@ -161,7 +161,7 @@ function replyTL(id, acct_id) {
function context(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/conversation";
var i={
method: 'POST',
@ -189,7 +189,7 @@ function context(id, acct_id) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
json.reverse();
console.log(json);
var templete = misskeyParse(json, '', acct_id,"","",[]);
@ -219,7 +219,7 @@ function context(id, acct_id) {
function beforeToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain +
"/api/notes/local-timeline"
fetch(start, {
@ -265,7 +265,7 @@ function beforeToot(id, acct_id, domain) {
function userToot(id, acct_id, user) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain +
"/api/users/notes"
fetch(start, {
@ -313,7 +313,7 @@ function userToot(id, acct_id, user) {
//ふぁぼ一覧
function faved(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){ return false; }
if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/favourited_by";
fetch(start, {
@ -336,7 +336,7 @@ function faved(id, acct_id) {
//ブースト一覧
function rted(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){ return false; }
if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/reblogged_by";
fetch(start, {

View File

@ -130,9 +130,20 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
dis_name=escapeHTML(dis_name);
}
if (mix == "notf") {
if (gif == "yes") {
noticeavatar = toot.user.avatarUrl;
} else {
noticeavatar = toot.user.avatarUrl;
}
noticeavatar='<a onclick="udg(\'' + toot.user.id +
'\',' + acct_id + ');" user="' + toot.user.username + '" class="udg">' +
'<img src="' + noticeavatar +
'" width="20" class="notf-icon prof-img" user="' + toot.user.username +
'"></a>';
if (toot.type == "reply") {
var what = lang_parse_mentioned[lang];
var icon = '<i class="big-text fa fa-share teal-text"></i>';
noticeavatar="";
} else if (toot.type == "renote") {
var what = lang_misskeyparse_renoted[lang];
var icon = '<i class="big-text fa fa-retweet light-blue-text"></i>';
@ -339,7 +350,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} else {
var analyze = '';
}
var viewer = "";
var viewer = "<br>";
var hasmedia = "";
var youtube = "";
if(toot.emojis){
@ -424,7 +435,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var mentions = "";
//メンションであれば
if (menck) {
mentions = '<div style="float:right"><a onclick="udg(\'' + menck.user.username + '\',' +
mentions = '<div style="float:right"><a onclick="udg(\'' + menck.user.id + '\',' +
acct_id + ')" class="pointer">@' + menck.user.username + '</a></div>';
}
var tagck = toot.tags[0];
@ -641,23 +652,23 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'' + viewer + '' +
'</div><div class="area-additional"><span class="additional">'+analyze+
'<div class="reactions '+fullhide+'" style="height: 25px;"><span class="'+likehide+' reaction re-like"><a onclick="reaction(\'like\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat" style="padding:0">'+twemoji.parse("👍")+'</a><span class="re-likect">'+like+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat" style="padding:0;margin-left:3px;">'+twemoji.parse("👍")+'</a><span class="re-likect">'+like+
'</span></span><span class="'+lovehide+' reaction re-love"><a onclick="reaction(\'love\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("💓")+'</a><span class="re-lovect">'+love+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("💓")+'</a><span class="re-lovect">'+love+
'</span></span><span class="'+laughhide+' reaction re-laugh"><a onclick="reaction(\'laugh\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("😁")+'</a><span class="re-laughct">'+laugh+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("😁")+'</a><span class="re-laughct">'+laugh+
'</span></span><span class="'+hmmhide+' reaction re-hmm"><a onclick="reaction(\'hmm\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("🤔")+'</a><span class="re-hmmct">'+hmm+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("🤔")+'</a><span class="re-hmmct">'+hmm+
'</span></span><span class="'+suphide+' reaction re-surprise"><a onclick="reaction(\'surprise\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("😮")+'</a><span class="re-surprisect">'+surprise+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("😮")+'</a><span class="re-surprisect">'+surprise+
'</span></span><span class="'+conghide+' reaction re-congrats"><a onclick="reaction(\'congrats\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("🎉")+'</a><span class="re-congratsct">'+congrats+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("🎉")+'</a><span class="re-congratsct">'+congrats+
'</span></span><span class="'+anghide+' reaction re-angry"><a onclick="reaction(\'angry\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("💢")+'</a><span class="re-angryct">'+angry+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("💢")+'</a><span class="re-angryct">'+angry+
'</span></span><span class="'+confhide+' reaction re-confused"><a onclick="reaction(\'confused\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("😥")+'</a><span class="re-confusedct">'+confused+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("😥")+'</a><span class="re-confusedct">'+confused+
'</span></span><span class="'+pudhide+' reaction re-pudding"><a onclick="reaction(\'pudding\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0">'+twemoji.parse("🍮")+'</a><span class="re-puddingct">'+pudding+
',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("🍮")+'</a><span class="re-puddingct">'+pudding+
'</span></div>'+poll + mentions + tags + '</div>' +
'<div class="area-vis"></div>'+
'<div class="area-actions '+mouseover+'">' +

View File

@ -8,7 +8,8 @@ function notf(acct_id, tlid, sys) {
native="yes";
}
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
var start = "https://" + domain + "/api/i/notifications";
var i={
method: 'POST',
@ -20,6 +21,7 @@ function notf(acct_id, tlid, sys) {
})
}
}else{
var misskey=false;
var start = "https://" + domain + "/api/v1/notifications";
var i={
method: 'GET',
@ -66,13 +68,13 @@ function notf(acct_id, tlid, sys) {
var mute=[];
}
if(obj.type!="follow"){
if(domain=="misskey.xyz"){
if(misskey){
templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
}
}else{
if(domain=="misskey.xyz"){
if(misskey){
templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
@ -92,7 +94,7 @@ function notf(acct_id, tlid, sys) {
$("#notf-box").addClass("fetched");
todc();
});
if(domain!="misskey.xyz"){
if(!misskey){
var start = "wss://" + domain + "/api/v1/streaming/?stream=user&access_token=" +
at;
}else{
@ -117,7 +119,7 @@ function notf(acct_id, tlid, sys) {
popup = 0;
}
console.log(domain)
if(domain=="misskey.xyz"){
if(misskey){
console.log("misskey")
console.log(JSON.parse(mess.data));
if (JSON.parse(mess.data).type == "notification") {
@ -186,7 +188,8 @@ function notfmore(tlid) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
var start = "https://" + domain + "/api/i/notifications";
var i={
method: 'POST',
@ -199,6 +202,7 @@ function notfmore(tlid) {
})
}
}else{
var misskey=false;
var start = "https://" + domain + "/api/v1/notifications"+
"max_id=" + sid;
var i={
@ -220,13 +224,13 @@ function notfmore(tlid) {
Object.keys(json).forEach(function(key) {
var obj = json[key];
if(obj.type!="follow"){
if(domain=="misskey.xyz"){
if(misskey){
templete = templete+misskeyParse([obj.note], '', acct_id, tlid, -1);
}else{
templete = templete+parse([obj], '', acct_id, tlid, -1);
}
}else{
if(domain=="misskey.xyz"){
if(misskey){
templete = templete+misskeyUserparse([obj], '', acct_id, tlid, -1);
}else{
templete = templete+userparse([obj.account], '', acct_id, tlid, -1);

View File

@ -172,6 +172,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (toot.type == "mention") {
var what = lang_parse_mentioned[lang];
var icon = "fa-share teal-text";
noticeavatar="";
} else if (toot.type == "reblog") {
var what = lang_parse_bted[lang];
var icon = "fa-retweet light-blue-text";

View File

@ -31,7 +31,10 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
var type = "local";
}
}
if (type == "mix" && domain != "misskey.xyz") {
/*
*/
if (type == "mix" && localStorage.getItem("mode_" + domain)!="misskey") {
//Integratedなら飛ばす
$("#notice_" + tlid).text("Integrated TL(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")");
@ -71,7 +74,8 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
$("#notice_" + tlid).text("Glance TL(" + domain + ")");
}
$("#notice_icon_" + tlid).text(icon(type));
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
var url=misskeycom(type, data);
var start = "https://" + domain + "/api/notes/"+url;
var method="POST";
@ -95,6 +99,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
body: JSON.stringify(req),
}
}else{
var misskey=false;
var url=com(type, data);
if(type=="tag"){
var tag = localStorage.getItem("tag-range");
@ -124,7 +129,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
}else{
var mute=[];
}
if(domain=="misskey.xyz"){
if(misskey){
var templete = misskeyParse(json, type, acct_id, tlid, "", mute);
}else{
var templete = parse(json, type, acct_id, tlid, "", mute);
@ -147,7 +152,8 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
localStorage.setItem("now", type);
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
if (type == "home") {
var start = "wss://" + domain +
"/?i=" + at;
@ -175,6 +181,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
Materialize.toast(lang_misskeyparse_listnostr[lang], 1000);
}
}else{
var misskey=false;
if (type == "home") {
var start = "wss://" + domain +
"/api/v1/streaming/?stream=user&access_token=" + at;
@ -223,7 +230,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
websocket[wsid].onmessage = function(mess) {
console.log(tlid + ":Receive Streaming API:");
console.log(JSON.parse(mess.data));
if(domain=="misskey.xyz"){
if(misskey){
if (JSON.parse(mess.data).type == "note") {
var obj = JSON.parse(mess.data).body;
if(voice){
@ -298,22 +305,34 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
}
websocket[wsid].onerror = function(error) {
console.error('WebSocket Error ' + error);
console.error("Error closing");
console.error(error);
if(mode=="error"){
$("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Error ' + error);
}else{
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid,errorct);
if(errorct<3){
reconnector(tlid,type,acct_id,data,"error");
}
}
return false;
};
websocket[wsid].onclose = function() {
console.error('WebSocket Closing by error:' + tlid);
console.error("Closing");
console.error(tlid);
if(mode=="error"){
$("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Closed');
}else{
var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid,errorct);
if(errorct<3){
reconnector(tlid,type,acct_id,data,"error");
}
}
return false;
};
}
@ -340,10 +359,10 @@ function moreload(type, tlid) {
var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id");
if (sid && localStorage.getItem("morelock") != sid) {
localStorage.setItem("morelock", sid);
if (type == "mix" && localStorage.getItem("domain_" + acct_id)!="misskey.xyz") {
if (type == "mix" && localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))!="misskey") {
mixmore(tlid,"integrated");
return;
}else if (type == "plus" && localStorage.getItem("domain_" + acct_id)!="misskey.xyz") {
}else if (type == "plus" && localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))!="misskey") {
mixmore(tlid,"plus");
return;
}else if (type == "notf") {
@ -365,7 +384,8 @@ function moreload(type, tlid) {
};
domain=acct_id;
}
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
hdr={
'content-type': 'application/json'
};
@ -393,6 +413,7 @@ function moreload(type, tlid) {
body: JSON.stringify(req),
}
}else{
var misskey=false;
var start = "https://" + domain + "/api/v1/timelines/" + com(type,data) +
"max_id=" + sid;
var method="GET";
@ -409,7 +430,7 @@ function moreload(type, tlid) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain=="misskey.xyz"){
if(misskey){
var templete = misskeyParse(json, '', acct_id, tlid,"",mute);
}else{
var templete = parse(json, '', acct_id, tlid,"",mute);
@ -517,7 +538,7 @@ function cap(type, data, acct_id) {
} else if (type == "dm") {
var response= "DM"
} else if (type == "mix") {
if(localStorage.getItem("domain_" + acct_id)=="misskey.xyz"){
if(localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))=="misskey"){
var response= "Social TL"
}else{
var response= "Integrated"
@ -600,10 +621,12 @@ function strAlive(){
var type=obj[key].type;
var acct_id=obj[key].domain;
var data=obj[key].data;
localStorage.removeItem("wserror_" + tlid)
reconnector(key,type,acct_id,data,"error");
}
});
}
return;
}
function strAliveInt(){

View File

@ -69,11 +69,19 @@ function settings() {
var sentd = $("#sentence").val();
var ltrd = $("#letters").val();
if (sentd != localStorage.getItem("sentence") || ltrd != localStorage.getItem("letters")) {
Materialize.toast(lang_setting_selt[lang].replace("{{set1}}" ,sentd).replace("{{set1}}" ,ltrd), 3000);
Materialize.toast(lang_setting_selt[lang].replace("{{set1}}" ,sentd).replace("{{set2}}" ,ltrd), 3000);
}
localStorage.setItem("sentence", sentd);
localStorage.setItem("letters", ltrd);
var csentd = $("#cw_sentence").val();
var cltrd = $("#cw_letters").val();
if (csentd != localStorage.getItem("sentcw_sentenceence") || cltrd != localStorage.getItem("cw_letters")) {
Materialize.toast(lang_setting_autocw[lang].replace("{{set1}}" ,csentd).replace("{{set2}}" ,cltrd), 3000);
}
localStorage.setItem("cw_sentence", csentd);
localStorage.setItem("cw_letters", cltrd);
var widthd = $("#width").val();
if (widthd != localStorage.getItem("width")) {
Materialize.toast(lang_setting_width[lang].replace("{{set}}" ,widthd), 3000);
@ -251,6 +259,17 @@ function load() {
}
$("#letters").val(ltrs);
var csent = localStorage.getItem("cw_sentence");
if (!csent) {
var csent = "500";
}
$("#cw_sentence").val(csent);
var cltrs = localStorage.getItem("cw_letters");
if (!cltrs) {
var cltrs = "500";
}
$("#cw_letters").val(cltrs);
var width = localStorage.getItem("width");
if (!width) {
var width = "300";

View File

@ -9,7 +9,7 @@ function utl(user, more, acct_id) {
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
if (more) {
var sid = $("#his-tl .cvo").last().attr("toot-id");
var plus = "?max_id=" + sid;
@ -47,7 +47,7 @@ function utl(user, more, acct_id) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var templete = misskeyParse(json, '', acct_id);
}else{
var templete = parse(json, '', acct_id);
@ -60,7 +60,7 @@ function utl(user, more, acct_id) {
if (more) {
$("#his-tl-contents").append(templete);
} else {
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
pinutl(templete,user, acct_id)
}else{
$("#his-tl-contents").html(templete);
@ -115,7 +115,7 @@ function flw(user, more, acct_id) {
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
if (more) {
var sid = $("#his-follow-list .cvo").last().attr("user-id");
@ -153,7 +153,7 @@ function flw(user, more, acct_id) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var templete = misskeyUserparse(json,'',acct_id);
}else{
var templete = userparse(json,'',acct_id);
@ -181,7 +181,7 @@ function fer(user, more, acct_id) {
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
if (more) {
var sid = $("#his-follower-list .cvo").last().attr("user-id");
@ -219,7 +219,7 @@ function fer(user, more, acct_id) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var templete = misskeyUserparse(json,'',acct_id);
}else{
var templete = userparse(json,'',acct_id);
@ -244,7 +244,7 @@ function showFav(more, acct_id) {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
if (more) {
var sid = $("#his-fav-list .cvo").last().attr("toot-id");
var plus = "?max_id=" + sid;
@ -281,7 +281,7 @@ function showFav(more, acct_id) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
var templete = parse(json, '', acct_id);
}else{
var templete = misskeyParse(json, '', acct_id);
@ -305,7 +305,7 @@ function showMut(more, acct_id) {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
if (more) {
var sid = $("#his-muting-list .cvo").last().attr("user-id");
@ -361,7 +361,7 @@ function showBlo(more, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#his-blocking-list-contents").html(lang_hisdata_notonmisskey[lang]+"<br>");
return false;
}
@ -406,7 +406,7 @@ function showReq(more, acct_id) {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
if (more) {
var sid = $("#his-request-list .cvo").last().attr("user-id");
@ -442,7 +442,7 @@ function showReq(more, acct_id) {
todo(error);
console.error(error);
}).then(function(json) {
if(domain="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
var templete = userparse(json, 'true',acct_id);
}else{
var templete = misskeyUserparse(json, 'true',acct_id);
@ -466,7 +466,7 @@ function showDom(more, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#his-domain-list-contents").html(lang_hisdata_notonmisskey[lang]+"<br>");
return false;
}
@ -517,7 +517,7 @@ function showFrl(more, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#his-follow-recom-contents").html(lang_hisdata_notonmisskey[lang]+"<br>");
return false;
}

View File

@ -21,7 +21,7 @@ function udgEx(user,acct_id){
}
console.log(user);
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){ return false; }
if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/search?resolve=true&q="+user
fetch(start, {
@ -49,7 +49,7 @@ function udg(user, acct_id) {
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)=="misskey"){
misskeyUdg(user, acct_id)
return;
}
@ -190,7 +190,7 @@ function misskeyUdg(user, acct_id) {
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
if(domain!="misskey.xyz"){
if(localStorage.getItem("mode_" + domain)!="misskey"){
udg(user, acct_id)
return;
}

View File

@ -85,12 +85,13 @@
"get":"Get",
"historyBack":"Back",
"empUser":"Emphasize this user",
"TheDeskDes":"TheDesk is open-source software. We need your friendly support!",
"supportme":"Support TheDesk!",
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
"EntySupport":"Support on Enty",
"AWLSupport":"Amazon Wish List",
"SendAmazonGift1":"Give me Amazon Gift Card:",
"SendAmazonGift2":"",
"sendSushi":": give me sushi",
"sendSushi":"Osushi.love: give me sushi",
"local":"Local",
"localMedia":"Local(Media)",
"home":"Home",

View File

@ -85,12 +85,13 @@
"get":"取得",
"historyBack":"一つ前のユーザーデータ",
"empUser":"ユーザー強調",
"TheDeskDes":"TheDeskはオープンソース・ソフトウェアです。<br>皆様のあたたかいご支援のもとで製作されています。",
"supportme":"ご支援ください。",
"TheDeskDes":"TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。",
"EntySupport":"Entyで支援",
"AWLSupport":"Amazonほしいものリスト",
"SendAmazonGift1":"",
"SendAmazonGift2":"にAmazonギフトカードを送る",
"sendSushi":"で寿司を贈る",
"sendSushi":"Osushi.loveで寿司を贈る",
"local":"ローカル",
"localMedia":"ローカル(メディア)",
"home":"ホーム",

View File

@ -58,6 +58,8 @@
"or":"or",
"imgheight":"Height of images",
"post":"Posting Preferences",
"autocw":"Alert before posting a long toot.",
"autocwwarn":"Show dialog whether you make too-long text hidden.",
"defaultcw":"Default warining text",
"cws":"Always CW set",
"defaultvis":"Default visibility",

View File

@ -58,6 +58,8 @@
"or":"または",
"imgheight":"画像の高さ",
"post":"投稿設定",
"autocw":"長文投稿時に警告",
"autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
"defaultcw":"デフォルトの警告文",
"cws":"標準でCWを設定",
"defaultvis":"デフォルトの公開設定",

View File

@ -114,6 +114,7 @@ function createWindow() {
{ label: "TheDeskについて", click: function() { about(); } },
{ type: "separator" },
{ label: "終了", accelerator: "Command+Q", click: function() { app.quit(); }}
]}, {
label: "編集",
submenu: [
@ -138,6 +139,22 @@ function createWindow() {
click: function() { mainWindow.webContents.send('reload', " "); }
}
]
},
{
label: 'ウィンドウ',
role: 'window',
submenu: [
{
label: '最小化',
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
},
{
label: '閉じる',
accelerator: 'CmdOrCtrl+W',
role: 'close'
},
]
}
];
var platform=process.platform;

View File

@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "16.0.8",
"version": "16.0.9",
"description": "TheDesk is a Mastodon client for PC.",
"main": "main.js",
"scripts": {

View File

@ -1,5 +1,5 @@
<!doctype html>
<html lang="en">
<html lang="ja">
<head>
<title>Settings - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
@ -15,20 +15,20 @@
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<script type="text/javascript" src="./js/lang/setting.lang.js"></script>
<script>var lang="en";</script>
<h4>Preferences</h4>
<script>var lang="ja";</script>
<h4>設定</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>System Preferences
<i class="material-icons">desktop_windows</i>環境設定
</div>
<div class="collapsible-body">
<h5>Languages</h5>
<a href="language.html" class="btn waves-effect indigo nex" style="width:100%; max-width:200px;">Change</a><br>
<h5>Import and export of preferences</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">Export</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">Import</button>
<h5>Themes</h5>
<h5>言語</h5>
<a href="language.html" class="btn waves-effect indigo nex" style="width:100%; max-width:200px;">変更</a><br>
<h5>設定のインポートとエクスポート</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">エクスポート</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">インポート</button>
<h5>テーマの設定</h5>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
@ -40,297 +40,304 @@
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
<br>
<h5>Popup notification(on window)</h5>Hide to set "0"
<h5>新規通知のポップアップお知らせの表示秒数</h5>0に設定すると表示されません
<br>
<input type="text" style="width:50px" id="popup">sec
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<input type="text" style="width:50px" id="popup">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<h5>Native notification</h5>
This does not work on Windows 10.<br><a onclick="notftest()" class="pointer">Notification test</a>
<h5>ネイティブ通知設定</h5>
Windows 10の最新バージョンでは通知が表示されません。これは既知のバグですが解決が難しいため保留しています。<br><a onclick="notftest()" class="pointer">通知テスト</a>
<br>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_yes" value="yes" />
<label for="ntf_yes">Yes</label>
<label for="ntf_yes">はい</label>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" />
<label for="ntf_no">No</label>
<label for="ntf_no">いいえ</label>
<br>
<h5>Minimam width of columns</h5>Scroll bar will be shown when your window size is more than ammounts of columns.
<h5>マルチカラムの最低横幅</h5>画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。
<br>
<input type="text" style="width:50px" id="width">pxabove
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<input type="text" style="width:50px" id="width">px以上
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<h5>Font</h5>
Set local font<br>
<h5>フォント</h5>
ローカルフォントを指定します。<br>
<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()">設定</button>
<br>
<h5>Font size</h5>
<span style="font-size:15px">15px(absolute value)</span>
<h5>フォントサイズ</h5>
<span style="font-size:15px">15px(絶対指定)</span>
<br>
<input type="text" style="width:50px" id="size">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>Timeline Preferences
<i class="material-icons">reorder</i>タイムラインの設定
</div>
<div class="collapsible-body">
<h5>Time format</h5>Relative format:"1 minutes ago","3 days ago"
<br>Absolute format:"23:25:21","2017/12/30 23:59:00"
<br>Mixed format:toots posted today are relative-format, others are absolute-format.
<h5>時間表記設定</h5>相対時間の例:"1分前","3日前"
<br>絶対時間の例"23:25:21","2017年12月30日 23:59:00"
<br>混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示
<br>
<input class="with-gap" onchange="settings()" onchange="settings()" name="time" type="radio" id="relative" value="relative" />
<label for="relative">Relative</label>
<label for="relative">相対時間</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="absolute" value="absolute" />
<label for="absolute">Absoltue</label>
<label for="absolute">絶対時間</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="double" value="double" />
<label for="double">Both relative and absolute</label>
<label for="double">両方表示</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="medium" value="medium" />
<label for="medium">Mixed</label>
<h5>Instance unique locale</h5>This value is available on some Japanese instances
<label for="medium">混合表示</label>
<h5>独自ロケールを使用</h5>対応インスタンスではそのインスタンスにあわせた言語表示ができます。
<br>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_yes" value="yes" />
<label for="ul_yes">Yes</label>
<label for="ul_yes">はい</label>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_no" value="no" />
<label for="ul_no">No</label>
<label for="ul_no">いいえ</label>
<br>
<h5>Hide NSFW pictures</h5>Strong blur effect
<h5>非表示設定の画像(NSFW)を隠す</h5>きつめのぼかしがかかります。
<br>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_yes" value="yes" />
<label for="n_yes">Yes</label>
<label for="n_yes">はい</label>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_no" value="no" />
<label for="n_no">No</label>
<label for="n_no">いいえ</label>
<br>
<h5>Hide CW contents</h5>
<h5>非表示設定のテキスト(CW)を隠す</h5>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_yes" value="yes" />
<label for="c_yes">Yes</label>
<label for="c_yes">はい</label>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_no" value="no" />
<label for="c_no">No</label>
<label for="c_no">いいえ</label>
<br>
<h5>Animated GIF images animation</h5>
<h5>アイコンのアニメーションを再生する</h5>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_yes" value="yes" />
<label for="g_yes">Yes</label>
<label for="g_yes">はい</label>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_no" value="no" />
<label for="g_no">No</label>
<label for="g_no">いいえ</label>
<br>
<h5>Tag TL Search</h5>
<h5>タグタイムラインの表示範囲</h5>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_all" value="all" />
<label for="t_all">Use federated network</label>
<label for="t_all">接続しているインスタンス</label>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_local" value="local" />
<label for="t_local">Use local network</label>
<label for="t_local">検索対象のインスタンスのみ</label>
<br>
<h5>Show via</h5>
<h5>viaを表示する</h5>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_yes" value="yes" />
<label for="via_yes">Yes</label>
<label for="via_yes">はい</label>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_hide" value="hide" />
<label for="via_hide">No</label>
<label for="via_hide">いいえ</label>
<br>
<h5>Hide action buttons without mouseover</h5>
You may feel 'mouseover' is unconfortable:(<br>
<h5>アクションメニューを非表示</h5>
「マウスオーバー」はすこし鬱陶しいと思うかもしれません。<br>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_yes" value="yes" />
<label for="mov_yes">Mouseover to show</label>
<label for="mov_yes">マウスオーバーで表示</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_click" value="click" />
<label for="mov_click">Click to show</label>
<label for="mov_click">クリックで表示</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_no" value="no" />
<label for="mov_no">No</label>
<label for="mov_no">いいえ</label>
<br>
<h5>Show Notification marker, red colored bell and counter(if you show a notification column.)</h5>
<h5>通知を開いているとき、通知新着お知らせを表示する</h5>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_yes" value="yes" />
<label for="notfm_yes">Yes</label>
<label for="notfm_yes">はい</label>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_no" value="no" />
<label for="notfm_no">No</label>
<label for="notfm_no">いいえ</label>
<br>
<h5>Auto folding</h5>
TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.
<h5>指定行数以上を折りたたむ</h5>
5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。
<br>
<input type="text" style="width:50px" id="sentence">linesaboveor
<input type="text" style="width:50px" id="letters">lettersabove
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<input type="text" style="width:50px" id="sentence">行以上または
<input type="text" style="width:50px" id="letters">文字以上
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<h5>Height of images
<h5>画像の高さ
</h5>
<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()">設定</button>
<br>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>Posting Preferences
<i class="material-icons">send</i>投稿設定
</div>
<div class="collapsible-body">
<h5>Default warining text</h5>
<h5>デフォルトの警告文</h5>
<input type="text" style="width:150px" id="cw-text">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<h5>Always CW set</h5>
<h5>長文投稿時に警告</h5>
下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。
<br>
<input type="text" style="width:50px" id="cw_sentence">行以上または
<input type="text" style="width:50px" id="cw_letters">文字以上
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<h5>標準でCWを設定</h5>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_yes" value="yes" />
<label for="cws_yes">Yes</label>
<label for="cws_yes">はい</label>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_no" value="no" />
<label for="cws_no">No
<label for="cws_no">いいえ
</label>
<br>
<h5>Default visibility</h5>
<h5>デフォルトの公開設定</h5>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="public" value="public" />
<label for="public">Public</label>
<label for="public">公開(Public)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="unlisted" value="unlisted" />
<label for="unlisted">Unlisted</label>
<label for="unlisted">未収載(Unlisted)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="private" value="private" />
<label for="private">Private</label>
<label for="private">非公開(Private)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" />
<label for="direct">Direct</label>
<label for="direct">ダイレクト(Direct)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="memory" value="memory" />
<label for="memory">Memory(memorized as each instance)</label>
<label for="memory">前回の投稿設定を記憶する(インスタンスごとに記憶されます)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="server" value="server" />
<label for="server">Default of your visibility(Set on preferences of Mastodon instance)</label>
<label for="server">マストドンアカウント設定の既定値</label>
<br>
<h5>Posting images preferences</h5>
<h5>画像投稿設定</h5>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_url" value="url" />
<label for="i_url">Insert media URL</label>
<label for="i_url">画像を投稿し、画像のURLを最後に表示</label>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_no-act" value="no-act" />
<label for="i_no-act">Insert nothig</label>
<label for="i_no-act">画像を投稿するがURLは表示しない</label>
<br>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_inline" value="inline" disabled />
<label for="i_inline">Disabled
<label for="i_inline">現在利用できません。
<!--画像を投稿し、インラインで表示(Markdownに対応したインスタンスのみ。マルチアカウント環境では非推奨。)-->
</label>
<br>
<h5>Action of posting-box</h5>
<h5>投稿ボックスの挙動</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_yes" value="yes" />
<label for="bx_yes">Folding</label>
<label for="bx_yes">たたむ</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_no" value="no" />
<label for="bx_no">Open after posting
<label for="bx_no">投稿後も隠さない
</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_abs" value="absolute" />
<label for="bx_abs">Absolutely open</label>
<label for="bx_abs">枠外クリックで閉じない(起動時に展開)</label>
<br>
<h5>Quote format</h5>
<h5>引用形式</h5>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_simple" value="simple" />
<label for="q_simple">Only URL</label>
<label for="q_simple">URLのみ</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_mention" value="mention" />
<label for="q_mention">URL and acct(mention to the user)</label>
<label for="q_mention">URLとアカウント名(相手に通知)</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_full" value="full" />
<label for="q_full">URL, text and acct(mention to the user)
<label for="q_full">本文・URL・アカウント名
</label>
<br>
<h5>Default accounts of actions</h5>
Main account can be set on Account Manager.<br>
<h5>投稿後や起動時のアカウント</h5>
メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。<br>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_remain" value="remain" />
<label for="mn_remain">Account you used recently</label>
<label for="mn_remain">最後に使用したアカウント</label>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_main" value="main" />
<label for="mn_main">Main account</label>
<label for="mn_main">メインアカウント</label>
</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
<i class="material-icons">keyboard</i>キーボードショートカットの設定
</div>
<div class="collapsible-body">
<h5>Easy inserter</h5>
You can insert any letters and emojis with only 3 keys<br>
<h5>簡単文字入力</h5>
絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
<i class="material-icons">bookmark</i>ミュート・強調の設定
</div>
<div class="collapsible-body">
<h5>Client Mute</h5>
<h5>クライアントミュート</h5>
<div id="mute-cli"></div>
<h5>Client Emphasis</h5>
Click client name on toots to toggle mute and emphasis.
<h5>Words Mute</h5>
Enter to set<br>
<h5>クライアント強調</h5>
各トゥートのクライアントをクリックすると設定できます。
<h5>ワードミュート</h5>
Enterで確定<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Save</button>
<h5>Words Emphasis</h5>
Enter to set<br>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">設定</button>
<h5>ワード強調</h5>
Enterで確定<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Save</button>
<h5>Users Emphasis</h5>
Set on users data modals.
<span class="emphasized"> Use this color to emphasis </span>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">設定</button>
<h5>ユーザー強調</h5>
各ユーザーのデータ表示画面で設定できます。
<span class="emphasized"> 強調色(テーマによって異なります。) </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
<i class="fa fa-spotify"></i>SpotifyとNowPlayingの設定
</div>
<div class="collapsible-body">
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
<h5>Account Connection</h5>
TheDesk save your data on thedesk.top server.<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Save</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>Connect</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i class="fa fa-spotify left"></i>Disconnect</a>
<h5>Edit a template</h5>
<br>
<i class="material-icons" style="font-size:24px;">music_note</i>ボタンから簡単にNowPlayingができます。<br>
<h5>アカウントの連携</h5>
APIの性質上thedesk.topへアクセスします。<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">設定</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i class="fa fa-spotify left"></i>接続</a>
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled" style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i class="fa fa-spotify left"></i>切断</a>
<h5>テンプレートの編集</h5>
以下を編集してテンプレートを変更できます。<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
Refer:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify<br>
iTunes NowPlaying:{url} is disabled, but composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre} are available.<br>
テンプレート:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL<br>
iTunes NowPlayingでも{url}以外のテンプレートに従ってトゥートされます。また、作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}が有効です。<br>
<span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br>
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
<h5>Attach an Artwork of Spotify</h5>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button>
<h5>Spotifyでアルバムアートワークを添付する</h5>
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">Yes</label>
<label for="awk_yes">はい</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<label for="awk_no">No</label>
<label for="awk_no">いいえ</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
<i class="material-icons">hearing</i>読み上げの設定
</div>
<div class="collapsible-body">
<h5>Speed</h5>
1-100(default:10)<br>
<h5>読み上げの速さ</h5>
1-100まで、デフォルトは10。<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p>
<h5>Pitch</h5>
0-100(default:50)<br>
<h5>読み上げの高さ</h5>
0-100まで、デフォルトは50。(大きくなるほど高い)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
<h5>Volume</h5>
0-100(default:100)<br>
<h5>読み上げの音量</h5>
0-100まで、デフォルトは100。<br>
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p>
<h5>Test</h5>
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">Play/Stop</button><br>
<h5>テスト</h5>
<input type="text" style="width:350px" id="voicetxt" value="これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチインスタンスやマルチカラムに対応しています。">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">再生/停止</button><br>
<br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Save</button>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">設定</button>
</div>
</li>
</ul>
<br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>Back</a>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a>
<br>
<br>Keyboard shortcuts
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
<li>N:Open toot box</li>
<li>X:Toggle toot box</li>
<li>Ctrl+Enter:Post</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
<li>Ctrl+Shift+S:Preferences</li>
<li>Ctrl+Shift+M:Account Manager</li>
<br>キーボードショートカット一覧
<li>Ctrl+1-9:1番目9番目のTLにスクロール</li>
<li>N:投稿パネルを開く</li>
<li>X:投稿パネルを開閉</li>
<li>Ctrl+Enter:投稿</li>
<li>Ctrl+E:全ての通知を既読にする</li>
<li>Esc:投稿パネルを消す</li>
<li>F5:スーパーリロード</li>
<li>Ctrl+Shift+C:入力内容を消す</li>
<li>Ctrl+Shift+S:設定</li>
<li>Ctrl+Shift+M:アカウントマネージャ</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:Show profile of selecting</li>
<li>←/→:Show next or previous image</li>
<li>Mousewheel:Zoom a image</li>
<li>Ctrl+Shift+P:現在選択中のプロフィール</li>
<li>←/→:イメージビューワー起動時に画像切り替え</li>
<li>マウスホイール:イメージビューワー時に拡大縮小</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
@ -343,17 +350,17 @@
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>Reset(Danger)</button><br><br>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>About TheDesk</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>Website</a>
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Support(Enty)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>Help/Docs(Constructing)</a>
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>初期化</button><br><br>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>このソフトについて</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>公式HP</a>
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Enty)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>ヘルプ/Docs(Constructing)</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="./img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="./img/sushi.svg" class="left" width="25" style="padding-top:5px;">Give me a sushi!</a>
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="./img/sushi.svg" class="left" width="25" style="padding-top:5px;">寿司を投げる</a>
<br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">Check update</a><br>
<a href="oss.html">OSS License</a><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">アップデートを確認</a><br>
<a href="oss.html">OSS License(オープンソースライセンス)</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
<a href="https://github.com/cutls/TheDesk/blob/master/LICENSE.md">TheDesk LICENSE (Latest Ver.)</a>
<br>Developer: Cutls P(

View File

@ -164,6 +164,13 @@
<input type="text" style="width:150px" id="cw-text">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{autocw}}</h5>
{{autocwwarn}}
<br>
<input type="text" style="width:50px" id="cw_sentence">{{lines}}{{above}}{{or}}
<input type="text" style="width:50px" id="cw_letters">{{letters}}{{above}}
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{cws}}</h5>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_yes" value="yes" />
<label for="cws_yes">{{yes}}</label>

View File

@ -1,5 +1,5 @@
<!doctype html>
<html lang="en">
<html lang="ja">
<head>
<title>Update - TheDesk</title>
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
@ -21,21 +21,21 @@ a,button{
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<h5>Latest TheDesk[TheDesk <span id="ver"></span>]</h5>
<h5>アップデートがあります[TheDesk <span id="ver"></span>]</h5>
<span id="det"></span><br>
Current version<span id="now"></span><br>
TheDesk will be quit TheDesk after downloading.<br>
<button id="update" class="waves-effect btn" onclick="update('true')">Download</button>
現在のバージョン<span id="now"></span><br>
ダウンロード後は選択したフォルダが開きソフトは閉じられます。<br>
<button id="update" class="waves-effect btn" onclick="update('true')">ダウンロード</button>
<p id="prog"></p>
<div class="progress">
<div class="determinate" style="width: 0%"></div>
</div><br>
<b>On Windows, TheDesk will self-unzip and launch the latest file. Durling unzippng, TheDesk may freeze. It takes several seconds.</b><br>
Visit a releasenote of <a href="https://github.com/cutls/TheDesk/blob/master/LATEST.md">GitHub</a><br><br>
Skip this uodate(<a onclick="window.close();" class="pointer">until next TL loading</a>/<a onclick="nextv();" class="pointer">until next version</a>)<br>
<a onclick="quit()" class="pointer">Quit</a><br>
<a onclick="about()" class="pointer">About TheDesk</a><br>
Some problems? Please download on <a href="https://thedesk.top">TheDesk HP</a>
<b>Windows環境の場合、自動で展開され起動します。展開時にTheDeskが固まることがありますが、しばらくお待ち下さい。</b><br>
アップデート内容の詳細は<a href="https://github.com/cutls/TheDesk/blob/master/LATEST.md">GitHub</a>をご覧ください。<br><br>
このアップデートを飛ばす(<a onclick="window.close();" class="pointer">次回TL表示時まで</a>/<a onclick="nextv();" class="pointer">次のバージョンが出るまで</a>)<br>
<a onclick="quit()" class="pointer">このソフトを終了</a><br>
<a onclick="about()" class="pointer">このソフトについて</a><br>
アップデートに問題が生じる場合は<a href="https://thedesk.top">TheDesk HP</a>からのダウンロードをおためしください。
<script type="text/javascript" src="./js/common/about.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>
<script>
@ -52,7 +52,7 @@ verck();
ipc.on('prog', function (event, arg) {
console.log(arg);
$(".determinate").css('width',arg*100+"%");
$("#prog").text("Downloading:"+Math.floor(arg*100)+"%");
$("#prog").text("ダウンロード中:"+Math.floor(arg*100)+"%");
})
ipc.on('mess', function (event, arg) {
console.log(arg);

View File

@ -72,7 +72,7 @@ function verck(){
console.log(json);
$("#ver").text(json.desk);
localStorage.setItem("next-ver",json.desk);
$("#det").text(json.detail);
$("#det").html(json.detail);
$("#now").text(localStorage.getItem("ver"));
});
}