Vue introduces

This commit is contained in:
Cutls 2019-03-15 20:12:11 +09:00
parent d6012ea128
commit 21d8c52829
19 changed files with 3962 additions and 1776 deletions

1
.gitignore vendored
View File

@ -6,6 +6,7 @@ TheDesk-*
app/build app/build
build build
make.js make.js
make_js.js
app/.DS_Store app/.DS_Store
.DS_Store .DS_Store
.vs/* .vs/*

View File

View File

@ -1,189 +0,0 @@
var lang_parse_mentioned={
"ja":"が返信しました",
"en":" replied to you"
}
var lang_parse_faved={
"ja":"がお気に入り登録しました",
"en":" favourited your toot"
}
var lang_parse_bted={
"ja":"がブーストしました",
"en":" boosted your toot"
}
var lang_parse_btedsimple={
"ja":"がブースト",
"en":" boosted"
}
var lang_parse_notftime={
"ja":"通知された時間",
"en":"Actioned at"
}
var lang_parse_cwshow={
"ja":"見る",
"en":"Show"
}
var lang_parse_fulltext={
"ja":"以下全文",
"en":"Full size text:"
}
var lang_parse_autofold={
"ja":"自動折り畳み",
"en":"Auto folded"
}
var lang_parse_more={
"ja":"続き...",
"en":"More"
}
var lang_parse_url={
"ja":"URL解析",
"en":"URL Analyzer"
}
var lang_parse_tagTL={
"ja":"{{tag}}のタイムライン",
"en":"Timeline of {{tag}}"
}
var lang_parse_tagtoot={
"ja":"{{tag}}でトゥート",
"en":"Toot with {{tag}}"
}
var lang_parse_tagpin={
"ja":"{{tag}}をよく使うタグへ",
"en":"Pin {{tag}}"
}
var lang_parse_public={
"ja":"公開",
"en":"Public"
}
var lang_parse_unlisted={
"ja":"未収載",
"en":"Unlisted"
}
var lang_parse_private={
"ja":"非公開",
"en":"Private"
}
var lang_parse_direct={
"ja":"ダイレクト",
"en":"Direct"
}
var lang_parse_clickcopy={
"ja":"クリックして本文をコピー",
"en":"Click to copy text of this toot"
}
var lang_parse_clickcopyurl={
"ja":"クリックしてトゥートURLをコピー",
"en":"Click to copy URL of this toot"
}
var lang_parse_trans={
"ja":"このトゥートを日本語に翻訳",
"en":"Translate to Japanese"
}
var lang_parse_replyto={
"ja":"このトゥートに返信",
"en":"Reply to this toot"
}
var lang_parse_bt={
"ja":"このトゥートをブースト",
"en":"Boost this toot"
}
var lang_parse_fav={
"ja":"このトゥートをお気に入り登録",
"en":"Favourite this toot"
}
var lang_parse_quote={
"ja":"このトゥートを引用",
"en":"Quote this toot"
}
var lang_parse_del={
"ja":"このトゥートを削除",
"en":"Delete this toot"
}
var lang_parse_pin={
"ja":"このトゥートをピン留め",
"en":"Pin this toot"
}
var lang_parse_det={
"ja":"詳細(メインアカウント経由)",
"en":"Details via your main account."
}
var lang_parse_redraft={
"ja":"このトゥートを削除して再編集",
"en":"Delete & re-draft"
}
var lang_parse_followed={
"ja":"フォローされました。",
"en":"Followed you"
}
var lang_parse_clientop={
"ja":"クライアント処理",
"en":"Operation of this client"
}
var lang_parse_clienttxt={
"ja":"に対する処理を選択してください。",
"en":" will be"
}
var lang_parse_clientno={
"ja":"何もしない",
"en":"done nothing"
}
var lang_parse_clientemp={
"ja":"強調表示/解除",
"en":"emphasized(/not emphasized)"
}
var lang_parse_clientmute={
"ja":"ミュート",
"en":"muted"
}
var lang_parse_mute={
"ja":"ミュートします。設定から解除できます。",
"en":" will be muted. You can remove on preferences."
}
//misskey
var lang_misskeyparse_renote={
"ja":"再投稿",
"en":"Repost"
}
var lang_misskeyparse_renoteqt={
"ja":"引用",
"en":"Renote"
}
var lang_misskeyparse_reaction={
"ja":"リアクション",
"en":"Reaction"
}
var lang_misskeyparse_tagnostr={
"ja":"タグTLはストリーミング非対応です。",
"en":"No streaming API on Tag TLs"
}
var lang_misskeyparse_listnostr={
"ja":"リストTLはストリーミング非対応です。",
"en":"No streaming API on List TLs"
}
var lang_misskeyparse_home={
"ja":"ホーム",
"en":"Home"
}
var lang_misskeyparse_followers={
"ja":"フォロワー",
"en":"Follower"
}
var lang_misskeyparse_specified={
"ja":"ユーザー指定",
"en":"Specified User"
}
var lang_misskeyparse_qt={
"ja":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
"en":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear"
}
var lang_misskeyparse_renoted={
"ja":"がRepost",
"en":" renoted your following post."
}
var lang_misskeyparse_quoted={
"ja":"が引用",
"en":" quoted your following post."
}
var lang_misskeyparse_reaction={
"ja":"がリアクション",
"en":" reacted your following post."
}

View File

@ -1,152 +0,0 @@
var lang_setting_time={
"ja":"時間設定を{{set}}に設定しました。",
"en":"Time format:{{set}}"
}
var lang_setting_theme={
"ja":"テーマ設定を{{set}}に設定しました。",
"en":"Theme:{{set}}"
}
var lang_setting_nsfw={
"ja":"画像表示設定を{{set}}に設定しました。",
"en":"NSFW:{{set}}"
}
var lang_setting_cw={
"ja":"テキスト表示設定を{{set}}に設定しました。",
"en":"CW:{{set}}"
}
var lang_setting_cwtext={
"ja":"デフォルトの警告文を「{{set}}」に設定しました。",
"en":"Default CW text:{{set}}"
}
var lang_setting_cws={
"ja":"標準でCW:{{set}}",
"en":"Always CW on:{{set}}"
}
var lang_setting_rp={
"ja":"リプライ数表示:{{set}}",
"en":"Reply counter:{{set}}"
}
var lang_setting_vis={
"ja":"デフォルトの公開設定を{{set}}に設定しました。",
"en":"Default visibility:{{set}}"
}
var lang_setting_popup={
"ja":"ポップアップお知らせを{{set}}に設定しました。",
"en":"Popup notification:{{set}}"
}
var lang_setting_off={
"ja":"オフ",
"en":"Off"
}
var lang_setting_s={
"ja":"秒",
"en":"s"
}
var lang_setting_box={
"ja":"デフォルトでのボックスの挙動を{{set}}に設定しました。",
"en":"Default toot box action:{{set}}"
}
var lang_setting_gif={
"ja":"アイコンアニメーション再生を{{set}}に設定しました。",
"en":"GIF:{{set}}"
}
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}}"
}
var lang_setting_img={
"ja":"画像投稿後の設定を「{{set}}」に設定しました。",
"en":"After posting an image:{{set}}"
}
var lang_setting_font={
"ja":"フォントを{{set}}に設定しました。",
"en":"Fonts:{{set}}"
}
var lang_setting_default={
"ja":"デフォルト",
"en":"default font"
}
var lang_setting_size={
"ja":"フォントサイズを{{set}}pxに設定しました。",
"en":"Font size:{{set}}px"
}
var lang_setting_imgheight={
"ja":"画像高さを{{set}}pxに設定しました。",
"en":"Image height:{{set}}px"
}
var lang_setting_ticker={
"ja":"#InstanceTicker使用を{{set}}に設定しました。",
"en":"#InstanceTicker:{{set}}px"
}
var lang_setting_tag={
"ja":"タグの取得範囲を「{{set}}」に設定しました。",
"en":"Tag TL:{{set}}"
}
var lang_setting_box={
"ja":"投稿ボックスを{{set}}",
"en":"Post box:{{set}}"
}
var lang_setting_ul={
"ja":"独自ロケール設定を{{set}}に設定しました。",
"en":"Native locale:{{set}}"
}
var lang_setting_notf={
"ja":"ネイティブ通知を{{set}}に設定しました。",
"en":"Native notification:{{set}}"
}
var lang_setting_quote={
"ja":"引用形式を{{set}}に設定しました。",
"en":"Quote format:{{set}}"
}
var lang_setting_via={
"ja":"via表示を{{set}}に設定しました。",
"en":"Via:{{set}}"
}
var lang_setting_mov={
"ja":"アクションボタン非表示を{{set}}に設定しました。",
"en":"Action buttons hiding:{{set}}"
}
var lang_setting_setasread={
"ja":"通知カラム存在時新着非表示を{{set}}に設定しました。",
"en":"Notification markers:{{set}}"
}
var lang_setting_main={
"ja":"起動時・投稿時のアカウントを{{set}}に設定しました。",
"en":"Default account:{{set}}"
}
var lang_setting_sec={
"ja":"セカンダリートゥートボタン:{{set}}",
"en":"Secondary toot button:{{set}}"
}
var lang_setting_ksref={
"ja":"キーボードショートカットが更新されました。",
"en":"Keyboard shortcuts are refreshed."
}
var lang_setting_nomuting={
"ja":"ミュートしているクライアントはありません。",
"en":"No client is muted."
}
var lang_setting_notftest={
"ja":"通知テスト",
"en":" Notification test "
}
var lang_setting_notftestprof={
"ja":"アイコンはあなたのアカウントのものです。",
"en":"Your icon is shown."
}
var lang_setting_exportwarn={
"ja":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
"en":"Only important data will be exported. You must keep this data secure."
}
var lang_setting_importwarn={
"ja":"全てのデータがリセットされます。",
"en":"All data will be deleted."
}

View File

@ -22,7 +22,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
} }
var qt = localStorage.getItem("quote"); var qt = localStorage.getItem("quote");
if(qt=="nothing"){ if(qt=="nothing" || !qt){
var qtClass="hide"; var qtClass="hide";
}else{ }else{
var qtClass=""; var qtClass="";

View File

@ -1,13 +1,45 @@
//設定(setting.html)で読む //設定(setting.html)で読む
var envView = new Vue({
el: '#envView',
data: {config:envConstruction},
methods: {
complete: function (i,val) {
var ls=envView.config[i].storage;
Materialize.toast("Complete", 3000);
localStorage.setItem(ls,val)
if(ls=="ha"){
hardwareAcceleration(val)
}
return true
}
}
});
var tlView = new Vue({
el: '#tlView',
data: {config:tlConstruction},
methods: {
complete: function (i,val) {
var ls=tlView.config[i].storage;
Materialize.toast("Complete", 3000);
localStorage.setItem(ls,val)
return true
}
}
});
var postView = new Vue({
el: '#postView',
data: {config:postConstruction,kirishima:localStorage.getItem('kirishima')},
methods: {
complete: function (i,val) {
var ls=postView.config[i].storage;
Materialize.toast("Complete", 3000);
localStorage.setItem(ls,val)
return true
}
}
});
//設定ボタン押した。 //設定ボタン押した。
function settings() { function settings() {
var dd = $("[name=time]:checked").val();
var dt = $("[for="+dd+"]").text();
if (dd != localStorage.getItem("datetype")) {
Materialize.toast(lang.lang_setting_time.replace("{{set}}" ,dt), 3000);
}
localStorage.setItem("datetype", dd);
var cd = $("[name=theme]:checked").val(); var cd = $("[name=theme]:checked").val();
var ct = $("[for="+cd+"]").html(); var ct = $("[for="+cd+"]").html();
if(cd=="custom" && !$("#custom-sel-sel").val()){ if(cd=="custom" && !$("#custom-sel-sel").val()){
@ -24,98 +56,6 @@ function settings() {
themes(cd); themes(cd);
localStorage.setItem("theme", cd); localStorage.setItem("theme", cd);
} }
var nd = $("[name=nsfw]:checked").val();
var nt = $("[for=n_"+nd+"]").text();
if (nd != localStorage.getItem("nsfw")) {
Materialize.toast(lang.lang_setting_nsfw.replace("{{set}}" ,nt), 3000);
}
localStorage.setItem("nsfw", nd);
var cwd = $("[name=cw]:checked").val();
var cwt = $("[for=c_"+cwd+"]").text();
if (cwd != localStorage.getItem("cw")) {
Materialize.toast(lang.lang_setting_cw.replace("{{set}}" ,cwt), 3000);
}
localStorage.setItem("cw", cwd);
var cwtd = $("#cw-text").val();
if (cwtd != localStorage.getItem("cw-text")) {
Materialize.toast(lang.lang_setting_cwtext.replace("{{set}}" ,cwtd), 3000);
}
localStorage.setItem("cw-text", cwtd);
var cwsd = $("[name=cws]:checked").val();
var cwst = $("[for=cws_"+cwsd+"]").text();
if (cwsd != localStorage.getItem("always-cw")) {
Materialize.toast(lang.lang_setting_cws.replace("{{set}}" ,cwst), 3000);
}
localStorage.setItem("always-cw", cwsd);
var rpd = $("[name=rp]:checked").val();
var rpt = $("[for=c_"+cwd+"]").text();
if (rpd != localStorage.getItem("replyct")) {
Materialize.toast(lang.lang_setting_rp.replace("{{set}}" ,rpt), 3000);
}
localStorage.setItem("replyct", rpd);
var visd = $("[name=vis]:checked").val();
var vist = $("[for="+visd+"]").text();
if (visd != localStorage.getItem("vis")) {
Materialize.toast(lang.lang_setting_vis.replace("{{set}}" ,vist), 3000);
}
localStorage.setItem("vis", visd);
var popd = $("#popup").val();
if (popd > 0 && popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,popd+lang.lang_setting_s), 3000);
} else if (popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,lang.lang_setting_off), 3000);
}
localStorage.setItem("popup", popd);
var gifd = $("[name=gif]:checked").val();
var gift = $("[for=g_"+gifd+"]").text();
if (gifd != localStorage.getItem("gif")) {
Materialize.toast(lang.lang_setting_gif.replace("{{set}}" ,gift), 3000);
}
localStorage.setItem("gif", gifd);
var sentd = $("#sentence").val();
var ltrd = $("#letters").val();
if (sentd != localStorage.getItem("sentence") || ltrd != localStorage.getItem("letters")) {
Materialize.toast(lang.lang_setting_selt.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("cw_sentence") || cltrd != localStorage.getItem("cw_letters")) {
Materialize.toast(lang.lang_setting_autocw.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.lang_setting_width.replace("{{set}}" ,widthd), 3000);
}
localStorage.setItem("width", widthd);
var fwidthd = $("#fixwidth").val();
if (fwidthd != localStorage.getItem("fixwidth")) {
Materialize.toast(lang.lang_setting_fixwidth.replace("{{set}}" ,fwidthd), 3000);
}
localStorage.setItem("fixwidth", fwidthd);
var imgd = $("[name=img]:checked").val();
var imgt = $("[for=i_"+imgd+"]").text();
if (imgd != localStorage.getItem("img")) {
Materialize.toast(lang.lang_setting_img.replace("{{set}}" ,imgt), 3000);
}
localStorage.setItem("img", imgd);
var fontd = $("#font").val(); var fontd = $("#font").val();
if(fontd){ if(fontd){
if (fontd != localStorage.getItem("font")) { if (fontd != localStorage.getItem("font")) {
@ -130,326 +70,41 @@ function settings() {
themes(); themes();
} }
} }
var sized = $("#size").val();
if (sized != localStorage.getItem("size")) {
Materialize.toast(lang.lang_setting_size.replace("{{set}}" ,sized), 3000);
}
localStorage.setItem("size", sized);
var heid = $("#img-height").val();
if (heid != localStorage.getItem("img-height")) {
Materialize.toast(lang.lang_setting_imgheight.replace("{{set}}" ,heid), 3000);
}
localStorage.setItem("img-height", heid);
var tckrd = $("[name=ticker]:checked").val();
var tckrt = $("[for=ticker_"+tckrd+"]").text();
if (tckrd != localStorage.getItem("ticker_ok")) {
Materialize.toast(lang.lang_setting_ticker.replace("{{set}}" ,tckrt), 3000);
}
localStorage.setItem("ticker_ok", tckrd);
var animed = $("[name=anime]:checked").val();
var animet = $("[for=anime_"+animed+"]").text();
if (animed != localStorage.getItem("animation")) {
Materialize.toast(lang.lang_setting_animation.replace("{{set}}" ,animet), 3000);
}
localStorage.setItem("animation", animed);
var boxd = $("[name=box]:checked").val();
var boxt = $("[for=bx_"+boxd+"]").text();
if (boxd != localStorage.getItem("box")) {
Materialize.toast(lang.lang_setting_boxConfirm.replace("{{set}}" ,boxt), 3000);
}
localStorage.setItem("box", boxd);
var tagd = $("[name=tag]:checked").val();
var tagt = $("[for=t_"+tagd+"]").text();
if (tagd != localStorage.getItem("tag-range")) {
Materialize.toast(lang.lang_setting_tag.replace("{{set}}" ,tagt), 3000);
}
localStorage.setItem("tag-range", tagd);
var uld = $("[name=ul]:checked").val();
var ult = $("[for=ul_"+uld+"]").text();
if (uld != localStorage.getItem("locale")) {
Materialize.toast(lang.lang_setting_ul.replace("{{set}}" ,ult), 3000);
}
localStorage.setItem("locale", uld);
var ntd = $("[name=notf]:checked").val();
var ntt = $("[for=ntf_"+ntd+"]").text();
if (ntd != localStorage.getItem("nativenotf")) {
Materialize.toast(lang.lang_setting_notf.replace("{{set}}" ,ntt), 3000);
}
localStorage.setItem("nativenotf", ntd);
var qtd = $("[name=quote]:checked").val();
var qtt = $("[for=q_"+qtd+"]").text();
if (qtd != localStorage.getItem("quote")) {
Materialize.toast(lang.lang_setting_quote.replace("{{set}}" ,qtt), 3000);
}
localStorage.setItem("quote", qtd);
var viad = $("[name=via]:checked").val();
var viat = $("[for=via_"+viad+"]").text();
if (viad != localStorage.getItem("viashow")) {
Materialize.toast(lang.lang_setting_via.replace("{{set}}" ,viat), 3000);
}
localStorage.setItem("viashow", viad);
var notfmd = $("[name=notfm]:checked").val();
var notfmt = $("[for=notfm_"+notfmd+"]").text();
if (notfmd != localStorage.getItem("setasread")) {
Materialize.toast(lang.lang_setting_setasread.replace("{{set}}" ,notfmt), 3000);
}
localStorage.setItem("setasread", notfmd);
var movd = $("[name=mov]:checked").val();
var movt = $("[for=mov_"+movd+"]").text();
if (movd != localStorage.getItem("mouseover")) {
Materialize.toast(lang.lang_setting_mov.replace("{{set}}" ,movt), 3000);
}
localStorage.setItem("mouseover", movd);
var maind = $("[name=main]:checked").val();
var maint = $("[for=mn_"+maind+"]").text();
if (maind != localStorage.getItem("mainuse")) {
Materialize.toast(lang.lang_setting_main.replace("{{set}}" ,maint), 3000);
}
localStorage.setItem("mainuse", maind);
var secd = $("[name=sec]:checked").val();
var sect = $("[for=sec-"+secd+"]").text();
if (secd != localStorage.getItem("sec")) {
Materialize.toast(lang.lang_setting_sec.replace("{{set}}" ,sect), 3000);
}
localStorage.setItem("sec", secd);
} }
//読み込み時の設定ロード //読み込み時の設定ロード
function load() { function load() {
var max=envView.config.length;
for(var i=0;i<max;i++){
var ls=envView.config[i].storage;
envView.config[i].setValue=localStorage.getItem(ls)
}
var max=tlView.config.length;
for(var i=0;i<max;i++){
var ls=tlView.config[i].storage;
tlView.config[i].setValue=localStorage.getItem(ls)
}
var max=postView.config.length;
for(var i=0;i<max;i++){
var ls=postView.config[i].storage;
postView.config[i].setValue=localStorage.getItem(ls)
}
if(localStorage.getItem("imas")){ if(localStorage.getItem("imas")){
$(".imas").removeClass("hide"); $(".imas").removeClass("hide");
} }
if(localStorage.getItem("kirishima")){ if(localStorage.getItem("kirishima")){
$(".kirishima").removeClass("hide"); $(".kirishima").removeClass("hide");
} }
var prof = localStorage.getItem("prof");
$("#my-prof").attr("src", prof);
var datetype = localStorage.getItem("datetype");
if (!datetype) {
var datetype = "absolute";
}
$("#" + datetype).prop("checked", true);
var theme = localStorage.getItem("theme"); var theme = localStorage.getItem("theme");
if (!theme) { if (!theme) {
var theme = "white"; var theme = "white";
} }
$("#" + theme).prop("checked", true); $("#" + theme).prop("checked", true);
var ha = localStorage.getItem("ha");
if (!ha) {
var ha = "false";
}
$("#ha_" + ha).prop("checked", true);
var nsfw = localStorage.getItem("nsfw");
if (!nsfw) {
var nsfw = "yes";
}
$("#n_" + nsfw).prop("checked", true);
var cw = localStorage.getItem("cw");
if (!cw) {
var cw = "yes";
}
$("#c_" + cw).prop("checked", true);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var popup = localStorage.getItem("popup");
if (!popup) {
var popup = "0";
}
$("#popup").val(popup);
var box = localStorage.getItem("box");
if (!box) {
var box = "no";
}
if(box=="absolute"){
var box = "abs";
}
$("#bx_" + box).prop("checked", true);
var gif = localStorage.getItem("gif");
if (!gif) {
var gif = "yes";
}
$("#g_" + gif).prop("checked", true);
var sent = localStorage.getItem("sentence");
if (!sent) {
var sent = "500";
}
$("#sentence").val(sent);
var ltrs = localStorage.getItem("letters");
if (!ltrs) {
var ltrs = "500";
}
$("#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";
}
$("#width").val(width);
var fwidth = localStorage.getItem("fixwidth");
if (!fwidth) {
var fwidth = "0";
}
$("#fixwidth").val(fwidth);
var cwt = localStorage.getItem("cw-text");
if (!cwt) {
var cwt = "";
}
$("#cw-text").val(cwt);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var rps = localStorage.getItem("replyct");
if (!rps) {
var rps = "hidden";
}
$("#rp_" + rps).prop("checked", true);
var vis = localStorage.getItem("vis");
if (!vis) {
var vis = "public";
}
$("#" + vis).prop("checked", true);
var img = localStorage.getItem("img");
if (!img) {
var img = "no-act";
}
$("#i_" + img).prop("checked", true);
var font = localStorage.getItem("font"); var font = localStorage.getItem("font");
if (!font) { if (!font) {
var font = ""; var font = "";
} }
$("#font").val(font); $("#font").val(font);
var size = localStorage.getItem("size");
if (!size) {
var size = "13";
}
$("#size").val(size);
var imh = localStorage.getItem("img-height");
if (!imh) {
var imh = "200";
}
$("#img-height").val(imh);
var ticker = localStorage.getItem("ticker_ok");
if (!ticker) {
var ticker = "no";
}
$("#ticker_" + ticker).prop("checked", true);
var animation = localStorage.getItem("animation");
if (!animation) {
var animation = "yes";
}
$("#anime_" + animation).prop("checked", true);
var tag = localStorage.getItem("tag-range");
if (!tag) {
var tag = "all";
}
$("#t_" + tag).prop("checked", true);
var box = localStorage.getItem("box");
if (!box) {
var box = "yes";
}
$("#bx_" + box).prop("checked", true);
var uld = localStorage.getItem("locale");
if (!uld) {
var uld = "yes";
}
$("#ul_" + uld).prop("checked", true);
var nnd = localStorage.getItem("nativenotf");
if (!nnd) {
var nnd = "yes";
}
$("#ntf_" + nnd).prop("checked", true);
var qt = localStorage.getItem("quote");
if (!qt) {
var qt = "simple";
}
$("#q_" + qt).prop("checked", true);
var viat = localStorage.getItem("viashow");
if (!viat) {
var viat = "hide";
}
$("#via_" + viat).prop("checked", true);
var movt = localStorage.getItem("mouseover");
if (!movt) {
var movt = "no";
}
$("#mov_" + movt).prop("checked", true);
var notfmt = localStorage.getItem("setasread");
if (!notfmt) {
var notfmt = "yes";
}
$("#notfm_" + notfmt).prop("checked", true);
var maint = localStorage.getItem("mainuse");
if (!maint) {
var maint = "remain";
}
$("#mn_" + maint).prop("checked", true);
var sect = localStorage.getItem("sec");
if (!sect) {
var sect = "nothing";
}
$("#sec-" + sect).prop("checked", true);
} }
function climute(){ function climute(){
@ -553,7 +208,7 @@ function exportSettings(){
dialog.showSaveDialog(null, { dialog.showSaveDialog(null, {
title: 'Export', title: 'Export',
properties: ['openFile', 'createDirectory'], properties: ['openFile', 'createDirectory'],
defaultPath: "export.thedeskconfig" defaultPath: "export.thedeskconfigv2"
}, (savedFiles) => { }, (savedFiles) => {
console.log(savedFiles); console.log(savedFiles);
if(!savedFiles){ if(!savedFiles){
@ -569,20 +224,27 @@ function exportSettings(){
var column = JSON.parse(multi); var column = JSON.parse(multi);
exp.columns=column; exp.columns=column;
//Themes //Themes
exp.theme=localStorage.getItem("theme"); var config={};
//Min width config.theme=localStorage.getItem("theme");
exp.minwidth=localStorage.getItem("width"); //Other configs
var max=envView.config.length;
for(var i=0;i<max;i++){
var ls=envView.config[i].storage;
config[ls]=localStorage.getItem(ls)
}
var max=tlView.config.length;
for(var i=0;i<max;i++){
var ls=tlView.config[i].storage;
config[ls]=localStorage.getItem(ls)
}
var max=postView.config.length;
for(var i=0;i<max;i++){
var ls=postView.config[i].storage;
config[ls]=localStorage.getItem(ls)
}
//Font //Font
exp.font=localStorage.getItem("font"); config.font=localStorage.getItem("font");
exp.size=localStorage.getItem("size"); exp.config=config;
//Img height
exp.imgheight=localStorage.getItem("img-height");
//Main
exp.mainuse=localStorage.getItem("mainuse");
//CW text
exp.cw=localStorage.getItem("cw-text");
//vis
exp.vis=localStorage.getItem("vis");
//keysc //keysc
exp.ksc=[ exp.ksc=[
localStorage.getItem("oks-1"), localStorage.getItem("oks-1"),
@ -628,7 +290,7 @@ function importSettings(){
title: 'Import', title: 'Import',
properties: ['openFile'], properties: ['openFile'],
filters: [ filters: [
{name: 'TheDesk Config', extensions: ['thedeskconfig']}, {name: 'TheDesk Config', extensions: ['thedeskconfig','thedeskconfigv2']},
] ]
}, (fileNames) => { }, (fileNames) => {
console.log(fileNames); console.log(fileNames);
@ -651,26 +313,53 @@ function importSettings(){
localStorage.setItem("acct_"+ key + "_at", acct.at); localStorage.setItem("acct_"+ key + "_at", acct.at);
} }
localStorage.setItem("column",JSON.stringify(obj.columns)); localStorage.setItem("column",JSON.stringify(obj.columns));
localStorage.setItem("theme",obj.theme); if(obj.config){
if(obj.width){ //Version 2
console.log(obj.width) var max=envView.config.length;
localStorage.setItem("width",obj.width); for(var i=0;i<max;i++){
var ls=envView.config[i].storage;
if(obj.config[ls]){
localStorage.setItem(ls,obj.config[ls])
}
}
var max=tlView.config.length;
for(var i=0;i<max;i++){
var ls=tlView.config[i].storage;
if(obj.config[ls]){
localStorage.setItem(ls,obj.config[ls])
}
}
var max=postView.config.length;
for(var i=0;i<max;i++){
var ls=postView.config[i].storage;
if(obj.config[ls]){
localStorage.setItem(ls,obj.config[ls])
}
}
}else{
//Version 1
localStorage.setItem("theme",obj.theme);
if(obj.width){
console.log(obj.width)
localStorage.setItem("width",obj.width);
}
if(obj.font){
localStorage.setItem("font",obj.font);
}
if(obj.size){
localStorage.setItem("size",obj.size);
}
themes(obj.theme);
if(obj.imgheight){
localStorage.setItem("img-height",obj.imgheight);
}
localStorage.setItem("mainuse",obj.mainuse);
if(obj.cw){
localStorage.setItem("cwtext",obj.cw);
}
localStorage.setItem("vis",obj.vis);
//End
} }
if(obj.font){
localStorage.setItem("font",obj.font);
}
if(obj.size){
localStorage.setItem("size",obj.size);
}
themes(obj.theme);
if(obj.imgheight){
localStorage.setItem("img-height",obj.imgheight);
}
localStorage.setItem("mainuse",obj.mainuse);
if(obj.cw){
localStorage.setItem("cwtext",obj.cw);
}
localStorage.setItem("vis",obj.vis);
if(obj.ksc[0]){ if(obj.ksc[0]){
localStorage.setItem("oks-1",obj.ksc[0]); localStorage.setItem("oks-1",obj.ksc[0]);
} }
@ -920,9 +609,7 @@ function customImp(){
alert("Error") alert("Error")
} }
} }
function hardwareAcceleration(){ function hardwareAcceleration(had){
var had = $("[name=ha]:checked").val();
localStorage.setItem("ha", had);
console.log("ha"); console.log("ha");
ipc.send('ha', had); ipc.send('ha', had);
} }
@ -931,7 +618,8 @@ ipc.on('theme-json-create-complete', function (event, args) {
$("#custom_import").val(""); $("#custom_import").val("");
ctLoad() ctLoad()
}); });
//最初に読む window.onload = function() {
//最初に読む
load(); load();
climute(); climute();
wordmute(); wordmute();
@ -941,3 +629,4 @@ voiceSettingLoad();
oksload(); oksload();
npprovider(); npprovider();
ctLoad() ctLoad()
};

953
app/js/ui/settings.old.js Normal file
View File

@ -0,0 +1,953 @@
//設定(setting.html)で読む
var envView = new Vue({
el: '#env-view',
data: {config:envConstruction,value:envValue},
method: {
settings: function (index) {
return true
}
}
});
//設定ボタン押した。
function settings() {
var dd = $("[name=time]:checked").val();
var dt = $("[for="+dd+"]").text();
if (dd != localStorage.getItem("datetype")) {
Materialize.toast(lang.lang_setting_time.replace("{{set}}" ,dt), 3000);
}
localStorage.setItem("datetype", dd);
var cd = $("[name=theme]:checked").val();
var ct = $("[for="+cd+"]").html();
if(cd=="custom" && !$("#custom-sel-sel").val()){
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
}else{
if (cd != localStorage.getItem("theme")) {
Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000);
}
//テーマはこの場で設定
themes(cd);
localStorage.setItem("theme", cd);
}
var nd = $("[name=nsfw]:checked").val();
var nt = $("[for=n_"+nd+"]").text();
if (nd != localStorage.getItem("nsfw")) {
Materialize.toast(lang.lang_setting_nsfw.replace("{{set}}" ,nt), 3000);
}
localStorage.setItem("nsfw", nd);
var cwd = $("[name=cw]:checked").val();
var cwt = $("[for=c_"+cwd+"]").text();
if (cwd != localStorage.getItem("cw")) {
Materialize.toast(lang.lang_setting_cw.replace("{{set}}" ,cwt), 3000);
}
localStorage.setItem("cw", cwd);
var cwtd = $("#cw-text").val();
if (cwtd != localStorage.getItem("cw-text")) {
Materialize.toast(lang.lang_setting_cwtext.replace("{{set}}" ,cwtd), 3000);
}
localStorage.setItem("cw-text", cwtd);
var cwsd = $("[name=cws]:checked").val();
var cwst = $("[for=cws_"+cwsd+"]").text();
if (cwsd != localStorage.getItem("always-cw")) {
Materialize.toast(lang.lang_setting_cws.replace("{{set}}" ,cwst), 3000);
}
localStorage.setItem("always-cw", cwsd);
var rpd = $("[name=rp]:checked").val();
var rpt = $("[for=c_"+cwd+"]").text();
if (rpd != localStorage.getItem("replyct")) {
Materialize.toast(lang.lang_setting_rp.replace("{{set}}" ,rpt), 3000);
}
localStorage.setItem("replyct", rpd);
var visd = $("[name=vis]:checked").val();
var vist = $("[for="+visd+"]").text();
if (visd != localStorage.getItem("vis")) {
Materialize.toast(lang.lang_setting_vis.replace("{{set}}" ,vist), 3000);
}
localStorage.setItem("vis", visd);
var popd = $("#popup").val();
if (popd > 0 && popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,popd+lang.lang_setting_s), 3000);
} else if (popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,lang.lang_setting_off), 3000);
}
localStorage.setItem("popup", popd);
var gifd = $("[name=gif]:checked").val();
var gift = $("[for=g_"+gifd+"]").text();
if (gifd != localStorage.getItem("gif")) {
Materialize.toast(lang.lang_setting_gif.replace("{{set}}" ,gift), 3000);
}
localStorage.setItem("gif", gifd);
var sentd = $("#sentence").val();
var ltrd = $("#letters").val();
if (sentd != localStorage.getItem("sentence") || ltrd != localStorage.getItem("letters")) {
Materialize.toast(lang.lang_setting_selt.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("cw_sentence") || cltrd != localStorage.getItem("cw_letters")) {
Materialize.toast(lang.lang_setting_autocw.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.lang_setting_width.replace("{{set}}" ,widthd), 3000);
}
localStorage.setItem("width", widthd);
var fwidthd = $("#fixwidth").val();
if (fwidthd != localStorage.getItem("fixwidth")) {
Materialize.toast(lang.lang_setting_fixwidth.replace("{{set}}" ,fwidthd), 3000);
}
localStorage.setItem("fixwidth", fwidthd);
var imgd = $("[name=img]:checked").val();
var imgt = $("[for=i_"+imgd+"]").text();
if (imgd != localStorage.getItem("img")) {
Materialize.toast(lang.lang_setting_img.replace("{{set}}" ,imgt), 3000);
}
localStorage.setItem("img", imgd);
var fontd = $("#font").val();
if(fontd){
if (fontd != localStorage.getItem("font")) {
Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,fontd), 3000);
}
localStorage.setItem("font", fontd);
themes();
}else{
if(localStorage.getItem("font")){
localStorage.removeItem("font");
Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,lang.lang_setting_default), 3000);
themes();
}
}
var sized = $("#size").val();
if (sized != localStorage.getItem("size")) {
Materialize.toast(lang.lang_setting_size.replace("{{set}}" ,sized), 3000);
}
localStorage.setItem("size", sized);
var heid = $("#img-height").val();
if (heid != localStorage.getItem("img-height")) {
Materialize.toast(lang.lang_setting_imgheight.replace("{{set}}" ,heid), 3000);
}
localStorage.setItem("img-height", heid);
var tckrd = $("[name=ticker]:checked").val();
var tckrt = $("[for=ticker_"+tckrd+"]").text();
if (tckrd != localStorage.getItem("ticker_ok")) {
Materialize.toast(lang.lang_setting_ticker.replace("{{set}}" ,tckrt), 3000);
}
localStorage.setItem("ticker_ok", tckrd);
var animed = $("[name=anime]:checked").val();
var animet = $("[for=anime_"+animed+"]").text();
if (animed != localStorage.getItem("animation")) {
Materialize.toast(lang.lang_setting_animation.replace("{{set}}" ,animet), 3000);
}
localStorage.setItem("animation", animed);
var boxd = $("[name=box]:checked").val();
var boxt = $("[for=bx_"+boxd+"]").text();
if (boxd != localStorage.getItem("box")) {
Materialize.toast(lang.lang_setting_boxConfirm.replace("{{set}}" ,boxt), 3000);
}
localStorage.setItem("box", boxd);
var tagd = $("[name=tag]:checked").val();
var tagt = $("[for=t_"+tagd+"]").text();
if (tagd != localStorage.getItem("tag-range")) {
Materialize.toast(lang.lang_setting_tag.replace("{{set}}" ,tagt), 3000);
}
localStorage.setItem("tag-range", tagd);
var uld = $("[name=ul]:checked").val();
var ult = $("[for=ul_"+uld+"]").text();
if (uld != localStorage.getItem("locale")) {
Materialize.toast(lang.lang_setting_ul.replace("{{set}}" ,ult), 3000);
}
localStorage.setItem("locale", uld);
var ntd = $("[name=notf]:checked").val();
var ntt = $("[for=ntf_"+ntd+"]").text();
if (ntd != localStorage.getItem("nativenotf")) {
Materialize.toast(lang.lang_setting_notf.replace("{{set}}" ,ntt), 3000);
}
localStorage.setItem("nativenotf", ntd);
var qtd = $("[name=quote]:checked").val();
var qtt = $("[for=q_"+qtd+"]").text();
if (qtd != localStorage.getItem("quote")) {
Materialize.toast(lang.lang_setting_quote.replace("{{set}}" ,qtt), 3000);
}
localStorage.setItem("quote", qtd);
var viad = $("[name=via]:checked").val();
var viat = $("[for=via_"+viad+"]").text();
if (viad != localStorage.getItem("viashow")) {
Materialize.toast(lang.lang_setting_via.replace("{{set}}" ,viat), 3000);
}
localStorage.setItem("viashow", viad);
var notfmd = $("[name=notfm]:checked").val();
var notfmt = $("[for=notfm_"+notfmd+"]").text();
if (notfmd != localStorage.getItem("setasread")) {
Materialize.toast(lang.lang_setting_setasread.replace("{{set}}" ,notfmt), 3000);
}
localStorage.setItem("setasread", notfmd);
var movd = $("[name=mov]:checked").val();
var movt = $("[for=mov_"+movd+"]").text();
if (movd != localStorage.getItem("mouseover")) {
Materialize.toast(lang.lang_setting_mov.replace("{{set}}" ,movt), 3000);
}
localStorage.setItem("mouseover", movd);
var maind = $("[name=main]:checked").val();
var maint = $("[for=mn_"+maind+"]").text();
if (maind != localStorage.getItem("mainuse")) {
Materialize.toast(lang.lang_setting_main.replace("{{set}}" ,maint), 3000);
}
localStorage.setItem("mainuse", maind);
var secd = $("[name=sec]:checked").val();
var sect = $("[for=sec-"+secd+"]").text();
if (secd != localStorage.getItem("sec")) {
Materialize.toast(lang.lang_setting_sec.replace("{{set}}" ,sect), 3000);
}
localStorage.setItem("sec", secd);
}
//読み込み時の設定ロード
function load() {
if(localStorage.getItem("imas")){
$(".imas").removeClass("hide");
}
if(localStorage.getItem("kirishima")){
$(".kirishima").removeClass("hide");
}
var prof = localStorage.getItem("prof");
$("#my-prof").attr("src", prof);
var datetype = localStorage.getItem("datetype");
if (!datetype) {
var datetype = "absolute";
}
$("#" + datetype).prop("checked", true);
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
var ha = localStorage.getItem("ha");
if (!ha) {
var ha = "false";
}
$("#ha_" + ha).prop("checked", true);
var nsfw = localStorage.getItem("nsfw");
if (!nsfw) {
var nsfw = "yes";
}
$("#n_" + nsfw).prop("checked", true);
var cw = localStorage.getItem("cw");
if (!cw) {
var cw = "yes";
}
$("#c_" + cw).prop("checked", true);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var popup = localStorage.getItem("popup");
if (!popup) {
var popup = "0";
}
$("#popup").val(popup);
var box = localStorage.getItem("box");
if (!box) {
var box = "no";
}
if(box=="absolute"){
var box = "abs";
}
$("#bx_" + box).prop("checked", true);
var gif = localStorage.getItem("gif");
if (!gif) {
var gif = "yes";
}
$("#g_" + gif).prop("checked", true);
var sent = localStorage.getItem("sentence");
if (!sent) {
var sent = "500";
}
$("#sentence").val(sent);
var ltrs = localStorage.getItem("letters");
if (!ltrs) {
var ltrs = "500";
}
$("#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";
}
$("#width").val(width);
var fwidth = localStorage.getItem("fixwidth");
if (!fwidth) {
var fwidth = "300";
}
$("#fixwidth").val(fwidth);
var cwt = localStorage.getItem("cw-text");
if (!cwt) {
var cwt = "";
}
$("#cw-text").val(cwt);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var rps = localStorage.getItem("replyct");
if (!rps) {
var rps = "hidden";
}
$("#rp_" + rps).prop("checked", true);
var vis = localStorage.getItem("vis");
if (!vis) {
var vis = "public";
}
$("#" + vis).prop("checked", true);
var img = localStorage.getItem("img");
if (!img) {
var img = "no-act";
}
$("#i_" + img).prop("checked", true);
var font = localStorage.getItem("font");
if (!font) {
var font = "";
}
$("#font").val(font);
var size = localStorage.getItem("size");
if (!size) {
var size = "13";
}
$("#size").val(size);
var imh = localStorage.getItem("img-height");
if (!imh) {
var imh = "200";
}
$("#img-height").val(imh);
var ticker = localStorage.getItem("ticker_ok");
if (!ticker) {
var ticker = "no";
}
$("#ticker_" + ticker).prop("checked", true);
var animation = localStorage.getItem("animation");
if (!animation) {
var animation = "yes";
}
$("#anime_" + animation).prop("checked", true);
var tag = localStorage.getItem("tag-range");
if (!tag) {
var tag = "all";
}
$("#t_" + tag).prop("checked", true);
var box = localStorage.getItem("box");
if (!box) {
var box = "yes";
}
$("#bx_" + box).prop("checked", true);
var uld = localStorage.getItem("locale");
if (!uld) {
var uld = "yes";
}
$("#ul_" + uld).prop("checked", true);
var nnd = localStorage.getItem("nativenotf");
if (!nnd) {
var nnd = "yes";
}
$("#ntf_" + nnd).prop("checked", true);
var qt = localStorage.getItem("quote");
if (!qt) {
var qt = "simple";
}
$("#q_" + qt).prop("checked", true);
var viat = localStorage.getItem("viashow");
if (!viat) {
var viat = "hide";
}
$("#via_" + viat).prop("checked", true);
var movt = localStorage.getItem("mouseover");
if (!movt) {
var movt = "no";
}
$("#mov_" + movt).prop("checked", true);
var notfmt = localStorage.getItem("setasread");
if (!notfmt) {
var notfmt = "yes";
}
$("#notfm_" + notfmt).prop("checked", true);
var maint = localStorage.getItem("mainuse");
if (!maint) {
var maint = "remain";
}
$("#mn_" + maint).prop("checked", true);
var sect = localStorage.getItem("sec");
if (!sect) {
var sect = "nothing";
}
$("#sec-" + sect).prop("checked", true);
}
function climute(){
//クライアントミュート
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if(!obj){
$("#mute-cli").html(lang.lang_setting_nomuting);
}else{
if(!obj[0]){
$("#mute-cli").html(lang.lang_setting_nomuting);
return;
}
var templete;
Object.keys(obj).forEach(function(key) {
var cli = obj[key];
var list = key * 1 + 1;
templete = '<div class="acct" id="acct_' + key + '">' + list +
'.' +
cli + '<button class="btn waves-effect red disTar" onclick="cliMuteDel(' +
key + ')">'+lang.lang_del+'</button><br></div>';
$("#mute-cli").append(templete);
});
}
}
function cliMuteDel(key){
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
obj.splice(key, 1);
var json = JSON.stringify(obj);
localStorage.setItem("client_mute", json);
mute();
}
function wordmute(){
var word = localStorage.getItem("word_mute");
var obj = JSON.parse(word);
$('#wordmute').material_chip({
data: obj,
});
}
function wordmuteSave(){
var word=$('#wordmute').material_chip('data');
var json = JSON.stringify(word);
localStorage.setItem("word_mute", json);
}
function wordemp(){
var word = localStorage.getItem("word_emp");
var obj = JSON.parse(word);
$('#wordemp').material_chip({
data: obj,
});
}
function wordempSave(){
var word=$('#wordemp').material_chip('data');
var json = JSON.stringify(word);
localStorage.setItem("word_emp", json);
}
function notftest(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',
icon: localStorage.getItem("prof_0")
};
if(os=="darwin"){
var n = new Notification('TheDesk'+lang.lang_setting_notftest, options);
}else{
ipc.send('native-notf', ['TheDesk'+lang.lang_setting_notftest,lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',localStorage.getItem('prof_0'),"",""]);
}
}
function oks(no){
var txt=$("#oks-"+no).val();
localStorage.setItem("oks-"+no, txt);
Materialize.toast(lang.lang_setting_ksref, 3000);
}
function oksload(){
if(localStorage.getItem("oks-1")){$("#oks-1").val(localStorage.getItem("oks-1"))}
if(localStorage.getItem("oks-2")){$("#oks-2").val(localStorage.getItem("oks-2"))}
if(localStorage.getItem("oks-3")){$("#oks-3").val(localStorage.getItem("oks-3"))}
}
function changelang(lang){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('lang',lang);
ipc.on('langres', function (event, arg) {
location.href="../"+lang+"/setting.html"
});
}
function exportSettings(){
if(!confirm(lang.lang_setting_exportwarn)){
return false;
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showSaveDialog(null, {
title: 'Export',
properties: ['openFile', 'createDirectory'],
defaultPath: "export.thedeskconfig"
}, (savedFiles) => {
console.log(savedFiles);
if(!savedFiles){
return false;
}
var exp={};
//Accounts
var multi = localStorage.getItem("multi");
var acct = JSON.parse(multi);
exp.accts=acct;
//Columns
var multi = localStorage.getItem("column");
var column = JSON.parse(multi);
exp.columns=column;
//Themes
exp.theme=localStorage.getItem("theme");
//Min width
exp.minwidth=localStorage.getItem("width");
//Font
exp.font=localStorage.getItem("font");
exp.size=localStorage.getItem("size");
//Img height
exp.imgheight=localStorage.getItem("img-height");
//Main
exp.mainuse=localStorage.getItem("mainuse");
//CW text
exp.cw=localStorage.getItem("cw-text");
//vis
exp.vis=localStorage.getItem("vis");
//keysc
exp.ksc=[
localStorage.getItem("oks-1"),
localStorage.getItem("oks-2"),
localStorage.getItem("oks-3")
];
//climu
var cli = localStorage.getItem("client_mute");
var climu = JSON.parse(cli);
exp.clientMute=climu;
//wordmu
var wdm = localStorage.getItem("word_mute");
var wordmu = JSON.parse(wdm);
exp.wordMute=wordmu;
//spotify
exp.spotifyArtwork=localStorage.getItem("artwork")
var content=localStorage.getItem("np-temp");
if(content || content=="" || content=="null"){
exp.spotifyTemplete=content;
}else{
exp.spotifyTemplete=null;
}
//tags
var tagarr = localStorage.getItem("tag");
var favtag = JSON.parse(tagarr);
exp.favoriteTags=favtag;
console.log(exp);
ipc.send('export', [savedFiles,JSON.stringify(exp)]);
alert("Done.")
//cards
//lang
});
}
function importSettings(){
if(!confirm(lang.lang_setting_importwarn)){
return false;
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showOpenDialog(null, {
title: 'Import',
properties: ['openFile'],
filters: [
{name: 'TheDesk Config', extensions: ['thedeskconfig']},
]
}, (fileNames) => {
console.log(fileNames);
if(!fileNames){
return false;
}
ipc.send('import', fileNames[0]);
ipc.on('config', function (event, arg) {
var obj = JSON.parse(arg);
if(obj){
localStorage.clear();
localStorage.setItem("multi",JSON.stringify(obj.accts));
for(var key=0;key<obj.accts.length;key++){
var acct=obj.accts[key];
localStorage.setItem("name_" + key, acct.name);
localStorage.setItem("user_" + key, acct.user);
localStorage.setItem("user-id_" + key, acct.id);
localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem("acct_"+ key + "_at", acct.at);
}
localStorage.setItem("column",JSON.stringify(obj.columns));
localStorage.setItem("theme",obj.theme);
if(obj.width){
console.log(obj.width)
localStorage.setItem("width",obj.width);
}
if(obj.font){
localStorage.setItem("font",obj.font);
}
if(obj.size){
localStorage.setItem("size",obj.size);
}
themes(obj.theme);
if(obj.imgheight){
localStorage.setItem("img-height",obj.imgheight);
}
localStorage.setItem("mainuse",obj.mainuse);
if(obj.cw){
localStorage.setItem("cwtext",obj.cw);
}
localStorage.setItem("vis",obj.vis);
if(obj.ksc[0]){
localStorage.setItem("oks-1",obj.ksc[0]);
}
if(obj.ksc[1]){
localStorage.setItem("oks-2",obj.ksc[1]);
}
if(obj.ksc[2]){
localStorage.setItem("oks-3",obj.ksc[2]);
}
if(obj.clientMute){
localStorage.setItem("client_mute",JSON.stringify(obj.clientMute));
}
if(obj.wordMute){
localStorage.setItem("word_mute",JSON.stringify(obj.wordMute));
}
if(obj.favoriteTags){
localStorage.setItem("tag",JSON.stringify(obj.favoriteTags));
}
localStorage.setItem("np-temp",obj.spotifyTemplete);
for(var i=0;i<obj.columns.length;i++){
localStorage.setItem("card_" + i,"true");
localStorage.removeItem("catch_" + i);
}
location.href="language.html";
}else{
alert("Error.")
}
})
//cards
//lang
});
}
function savefolder(){
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
dialog.showOpenDialog(null, {
title: 'Save folder',
properties: ['openDirectory'],
}, (fileNames) => {
localStorage.setItem("savefolder",fileNames[0]);
});
}
function font(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('fonts', []);
ipc.on('font-list', function (event, arg) {
$("#fonts").removeClass("hide");
for( var i=0; i<arg.length; i++) {
var font=arg[i];
$("#fonts").append('<div class="font pointer" style="font-family:'+font.family+'" onclick="insertFont(\''+font.family+'\')">'+font.family+"</div>")
}
});
}
function insertFont(name){
$("#font").val(name);
}
$(".color-picker").each(function(i, elem) {
pickerDefine(i,"fff");
});
function pickerDefine(i,color){
var pickr = new Pickr({
el: '#color-picker'+i,
default: color,
showAlways: true,
appendToBody: true,
closeWithKey: 'Escape',
comparison: false,
components: {
preview: true, // Left side color comparison
opacity: false, // Opacity slider
hue: true, // Hue slider
interaction: {
rgba: false, // rgba option (red green blue and alpha)
input: true, // input / output element
}
},
strings: {
save: 'Save', // Default for save button
clear: 'Clear' // Default for clear button
}
});
pickr.on('change', (...args) => {
var rgb='rgb('+args[0].toRGBA()[0]+','+args[0].toRGBA()[1]+','+args[0].toRGBA()[2]+')';
$("#color-picker"+i+"_value").val(rgb)
});
}
function customComp(){
var nameC=$("#custom_name").val();
if(!nameC){return false;}
var descC=$("#custom_desc").val();
var primaryC=$("#color-picker0_value").val();
if(!primaryC){primaryC="rgb(255,255,255)"}
var secondaryC=$("#color-picker1_value").val();
if(!secondaryC){secondaryC="rgb(255,255,255)"}
var textC=$("#color-picker2_value").val();
if(!textC){textC="rgb(255,255,255)"}
var accentC=$("#color-picker3_value").val();
if(!accentC){accentC="rgb(255,255,255)"}
var multi = localStorage.getItem("multi");
var my=JSON.parse(multi)[0].name;
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
id=makeCID();
}
var json={
"name": nameC,
"author": my,
"desc": descC,
"base": $("[name=direction]:checked").val(),
"vars": {
"primary": primaryC,
"secondary": secondaryC,
"text": textC
},
"props": {
"TheDeskAccent": accentC
},
"id": id
}
$("#custom_json").val(JSON.stringify(json));
themes();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.send('theme-json-create', JSON.stringify(json));
}
function deleteIt(){
var id=$("#custom-sel-sel").val();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.on('theme-json-delete-complete', function (event, args) {
ctLoad()
});
ipc.send('theme-json-delete', id);
}
function ctLoad(){
ipc.send('theme-json-list', "");
ipc.on('theme-json-list-response', function (event, args) {
console.log(args);
var templete="";
Object.keys(args).forEach(function(key) {
var theme = args[key];
var themeid=theme.id
templete = templete+'<option value="'+themeid+'">' + theme.name +'</option>';
});
if(args[0]){
localStorage.setItem("customtheme-id",args[0].id)
}
$("#custom-sel-sel").html(templete);
templete='<option value="add_new">'+$("#edit-selector").attr("data-add")+'</option>'+templete;
$("#custom-edit-sel").html(templete);
$('select').material_select('update');
});
}
function customSel(){
var id=$("#custom-sel-sel").val();
localStorage.setItem("customtheme-id",id)
}
function custom(){
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
$("#delTheme").addClass("disabled")
}else{
$("#delTheme").removeClass("disabled")
ipc.send('theme-json-request', id);
ipc.on('theme-json-response', function (event, args) {
console.log(args);
$("#custom_name").val(args.name);
$("#custom_desc").val(args.desc);
$("#"+args.base).prop("checked", true);
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0,rgbToHex(args.vars.primary))
$("#color-picker0_value").val(args.vars.primary);
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1,rgbToHex(args.vars.secondary))
$("#color-picker1_value").val(args.vars.secondary);
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker2_value").val(args.vars.text);
pickerDefine(2,rgbToHex(args.vars.text))
if(args.props){
if(args.props.TheDeskAccent){
var accent=args.props.TheDeskAccent;
}else{
var accent=args.vars.secondary;
}
}else{
var accent=args.vars.secondary;
}
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
pickerDefine(3,rgbToHex(accent))
$("#custom_json").val(JSON.stringify(args));
});
}
}
function customImp(){
var json=$("#custom_import").val();
if(JSON5.parse(json)){
ipc.send('theme-json-create', json);
}else{
alert("Error")
}
}
function hardwareAcceleration(){
var had = $("[name=ha]:checked").val();
localStorage.setItem("ha", had);
console.log("ha");
ipc.send('ha', had);
}
ipc.on('theme-json-create-complete', function (event, args) {
$("#custom_import").val("");
ctLoad()
});
//最初に読む
load();
climute();
wordmute();
wordemp();
checkSpotify();
voiceSettingLoad();
oksload();
npprovider();
ctLoad()

7
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "17.2.0", "version": "17.3.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -3160,6 +3160,11 @@
"extsprintf": "^1.2.0" "extsprintf": "^1.2.0"
} }
}, },
"vue": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.9.tgz",
"integrity": "sha512-t1+tvH8hybPM86oNne3ZozCD02zj/VoZIiojOBPJLjwBn7hxYU5e1gBObFpq8ts1NEn1VhPf/hVXBDAJ3X5ljg=="
},
"wcwidth": { "wcwidth": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "17.3.0", "version": "18.0.0",
"description": "TheDesk is a Mastodon client for PC.", "description": "TheDesk is a Mastodon client for PC.",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {
@ -39,7 +39,8 @@
"jimp": "^0.2.28", "jimp": "^0.2.28",
"json5": "^2.1.0", "json5": "^2.1.0",
"node-notifier": "^5.2.1", "node-notifier": "^5.2.1",
"sumchecker": "^2.0.2" "sumchecker": "^2.0.2",
"vue": "^2.6.9"
}, },
"optionalDependencies": { "optionalDependencies": {
"itunes-nowplaying-mac": "^0.2.3", "itunes-nowplaying-mac": "^0.2.3",

View File

@ -25,6 +25,8 @@
<script type="text/javascript" src="../../js/common/materialize.js"></script> <script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script> <script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script> <script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<h4>Preferences</h4> <h4>Preferences</h4>
<ul class="collapsible" data-collapsible="accordion"> <ul class="collapsible" data-collapsible="accordion">
@ -39,30 +41,31 @@
<h5>Import and export of preferences</h5> <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="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> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">Import</button>
<br> <div id="envView">
<h5>Popup notification(on Windows)</h5>Hide to set "0" <template v-for="(item, i) in config">
<br> <h5>{{item.text.head}}</h5>
<input type="text" style="width:50px" id="popup">sec {{item.text.desc}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">Notification test</a><br></template>
<br> <template v-if="item.checkbox">
<h5>Native notification</h5> <template v-for="(check, j) in item.text.checkbox">
This does not work on Windows Portable ver.<br><a onclick="notftest()" class="pointer">Notification test</a> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<br> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_yes" value="yes" /> </template>
<label for="ntf_yes">Yes</label> </template>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" /> <template v-else>
<label for="ntf_no">No</label> <template v-if="item.doubleText">
<br> <template v-for="(textbox, j) in item.data">
<h5>Minimum width of columns</h5>Scroll bar will be shown when your window size is more than ammounts of columns. <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<input type="text" style="width:50px" id="width">pxabove </template>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <template v-else>
<br> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<h5>Minimum width of TweetDeck browser</h5> </template>
<input type="text" style="width:50px" id="fixwidth">pxabove <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> </template>
<br> </template>
<h5>Font</h5> </div>
<h5>Font</h5>
Select your favorite font to 'Select'<br> Select your favorite font to 'Select'<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Select</button><br> <button class="btn waves-effect" style="width:100px;" onclick="font()">Select</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div> <div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
@ -70,23 +73,10 @@
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br> <br>
<h5>Font size</h5> <h5>Folder to save</h5>
<span style="font-size:15px">15px(absolute value)</span>
<br>
<input type="text" style="width:50px" id="size">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button><br>
<h5>Folder to save</h5>
TheDesk uses this value when it try to save pictures or take screenshots.<br> TheDesk uses this value when it try to save pictures or take screenshots.<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Change</button> <button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Change</button>
<br> <br>
<h5>Disable hardware acceleration</h5>
Auto restarted
<br>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_true" value="true" />
<label for="ha_true">Yes</label>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_false" value="false" />
<label for="ha_false">No</label>
<br>
</div> </div>
</li> </li>
<li> <li>
@ -160,101 +150,29 @@
<i class="material-icons">reorder</i>Timeline Preferences <i class="material-icons">reorder</i>Timeline Preferences
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>Time format</h5>Relative format:"1 minutes ago","3 days ago" <div id="tlView">
<br>Absolute format:"23:25:21","2017/12/30 23:59:00" <template v-for="(item, i) in config">
<br>Mixed format:toots posted today are relative-format, others are absolute-format. <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<input class="with-gap" onchange="settings()" onchange="settings()" name="time" type="radio" id="relative" value="relative" /> <template v-if="item.checkbox">
<label for="relative">Relative</label> <template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" onchange="settings()" name="time" type="radio" id="absolute" value="absolute" /> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label for="absolute">Absolute</label> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="double" value="double" /> </template>
<label for="double">Both relative and absolute</label> </template>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="medium" value="medium" /> <template v-else>
<label for="medium">Mixed</label> <template v-if="item.doubleText">
<h5>Server's unique locale</h5>This value is available on some Japanese servers <template v-for="(textbox, j) in item.data">
<br> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_yes" value="yes" /> </template>
<label for="ul_yes">Yes</label> </template>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_no" value="no" /> <template v-else>
<label for="ul_no">No</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<br> </template>
<h5>Hide NSFW pictures</h5>Strong blur effect <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
<br> </template>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_yes" value="yes" /> </template>
<label for="n_yes">Yes</label> </div>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_no" value="no" />
<label for="n_no">No</label>
<br>
<h5>Hide CW contents</h5>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_yes" value="yes" />
<label for="c_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_no" value="no" />
<label for="c_no">No</label>
<br>
<h5>Reply counter style</h5>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_hidden" value="hidden" />
<label for="rp_hidden">Show 1+ if the replies are more than 1.</label>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_all" value="all" />
<label for="rp_all">Show full count(1,2...)</label>
<br>
<h5>Animated GIF images animation</h5>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_yes" value="yes" />
<label for="g_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_no" value="no" />
<label for="g_no">No</label>
<br>
<h5>Tag TL Search</h5>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_all" value="all" />
<label for="t_all">Use federated network</label>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_local" value="local" />
<label for="t_local">Use local network</label>
<br>
<h5>Show via</h5>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_yes" value="yes" />
<label for="via_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_hide" value="hide" />
<label for="via_hide">No</label>
<br>
<h5>Hide action buttons without mouseover</h5>
You may feel 'mouseover' is unconfortable:(<br>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_yes" value="yes" />
<label for="mov_yes">Mouseover to show</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_click" value="click" />
<label for="mov_click">Click to show</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_no" value="no" />
<label for="mov_no">No</label>
<br>
<h5>Show Notification marker, red colored bell and counter(if you show a notification column.)</h5>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_yes" value="yes" />
<label for="notfm_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_no" value="no" />
<label for="notfm_no">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.
<br>
<input type="text" style="width:50px" id="sentence">lines above or
<input type="text" style="width:50px" id="letters">letters above
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br>
<h5>Height of images
</h5>
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button>
<br>
<h5>Enable #InstanceTicker</h5>
Show colorful stickers about tooters' server. <a href="https://cdn.weep.me/mastodon/">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">No</label>
<br>
<h5>Animation of timelines</h5>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_yes" value="yes" />
<label for="anime_yes">Yes</label>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_no" value="no" />
<label for="anime_no">No</label>
</div> </div>
</li> </li>
<li> <li>
@ -262,90 +180,32 @@
<i class="material-icons">send</i>Posting Preferences <i class="material-icons">send</i>Posting Preferences
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>Default warining text</h5> <div id="postView">
<input type="text" style="width:150px" id="cw-text"> <template v-for="(item, i) in config">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<h5>Alert before posting a long toot.</h5> <template v-if="item.checkbox">
Show dialog whether you make too-long text hidden. <template v-for="(check, j) in item.text.checkbox">
<br> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input type="text" style="width:50px" id="cw_sentence">lines above or <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<input type="text" style="width:50px" id="cw_letters">letters above <label v-bind:for="item.id+check.value">{{check.text}}</label>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Save</button> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
<br> </template>
<h5>Always CW set</h5> </template>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_yes" value="yes" /> </template>
<label for="cws_yes">Yes</label> <template v-else>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_no" value="no" /> <template v-if="item.doubleText">
<label for="cws_no">No <template v-for="(textbox, j) in item.data">
</label> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<h5>Default visibility</h5> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="public" value="public" /> <template v-else>
<label for="public">Public</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="unlisted" value="unlisted" /> </template>
<label for="unlisted">Unlisted</label> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">Change</button>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="private" value="private" /> </template>
<label for="private">Private</label> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" /> </div>
<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 server)</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 server)</label>
<br>
<h5>Posting images preferences</h5>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_url" value="url" />
<label for="i_url">Insert media 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>
<br>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_inline" value="inline" disabled />
<label for="i_inline">Disabled
<!--画像を投稿し、インラインで表示(Markdownに対応したインスタンスのみ。マルチアカウント環境では非推奨。)-->
</label>
<br>
<h5>Action of posting-box</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_yes" value="yes" />
<label for="bx_yes">Folding</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_no" value="no" />
<label for="bx_no">Open after posting
</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_abs" value="absolute" />
<label for="bx_abs">Absolutely open</label>
<br>
<h5>Quote format</h5>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_simple" value="simple" />
<label for="q_simple">Only 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>
<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>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_nothing" value="nothing" />
<label for="q_nothing">Disabled(Hide buttons on TLs)</label>
<br>
<h5>Default accounts of actions</h5>
Main account can be set on Account Manager.<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>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_main" value="main" />
<label for="mn_main">Main account</label>
</label>
<h5>Secondary Toot Button</h5>
Toot with other visibility setting<br>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-nothing" value="nothing" />
<label for="sec-nothing">Hidden</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-public" value="public" />
<label for="sec-public">Public</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-unlisted" value="unlisted" />
<label for="sec-unlisted">Unlisted</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-private" value="private" />
<label for="sec-private">Private</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-direct" value="direct" />
<label for="sec-direct">Direct</label>
<input class="with-gap hide kirishima" onchange="settings()" name="sec" type="radio" id="sec-local" value="local" />
<label for="sec-local">Local Only</label><span class="hide kirishima">非対応インスタンスでは「未収載」になります。</span>
<br>
</div> </div>
</li> </li>
<li> <li>
@ -510,7 +370,6 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script> <script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script> <script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/lang/lang.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script> <script type="text/javascript" src="../../js/platform/pickr.js"></script>

480
app/view/en/setting.vue.js Normal file
View File

@ -0,0 +1,480 @@
var yesno=[
{
text:"Yes",
value:"yes"
},{
text:"No",
value:"no"
}
];
var envConstruction=[
{
id:"popup",
storage:"popup",
checkbox:false,
doubleText:false,
setValue:0,
width:50,
text:{
head:"Popup notification(on Windows)",
desc:"Hide to set "0"",
after:"sec"
}
},{
id:"notf",
storage:"nativenotf",
checkbox:true,
setValue:"yes",
text:{
head:"Native notification",
desc:"This does not work on Windows Portable ver.",
checkbox:yesno
}
},{
id:"width",
storage:"width",
checkbox:false,
doubleText:false,
width:50,
setValue:300,
text:{
head:"Minimum width of columns",
desc:"Scroll bar will be shown when your window size is more than ammounts of columns.",
after:"px above"
}
},{
id:"fixwidth",
storage:"fixwidth",
checkbox:false,
doubleText:false,
setValue:300,
width:50,
text:{
head:"Minimum width of TweetDeck browser",
desc:"",
after:"px above"
}
},{
id:"size",
storage:"size",
checkbox:false,
doubleText:false,
width:50,
setValue:13,
text:{
head:"Font size",
desc:'<span style="font-size:15px">15px(absolute value)</span>',
after:"px"
}
},{
id:"ha",
storage:"ha",
checkbox:true,
setValue:false,
text:{
head:"Disable hardware acceleration",
desc:"Auto restarted",
checkbox:[
{
text:"Yes",
value:"true"
},{
text:"No",
value:"false"
}
]
}
}
];
var tlConstruction=[
{
id:"time",
storage:"datetype",
checkbox:true,
setValue:"absolute",
text:{
head:"Time format",
desc:'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.',
checkbox:[
{
text:"Relative",
value:"relative"
},{
text:"Absolute",
value:"absolute"
},{
text:"Both relative and absolute",
value:"double"
},{
text:"Mixed",
value:"medium"
}
]
}
},{
id:"ul",
storage:"locale",
checkbox:true,
setValue:"yes",
text:{
head:"Server's unique locale",
desc:"This value is available on some Japanese servers",
checkbox:yesno
}
},{
id:"nsfw",
storage:"nsfw",
checkbox:true,
setValue:"yes",
text:{
head:"Hide NSFW pictures",
desc:"Strong blur effect",
checkbox:yesno
}
},{
id:"cw",
storage:"cw",
checkbox:true,
setValue:"yes",
text:{
head:"Hide CW contents",
desc:"",
checkbox:yesno
}
},{
id:"rp",
storage:"replyct",
checkbox:true,
setValue:"hidden",
text:{
head:"Reply counter style",
desc:"",
checkbox:[
{
text:"Show 1+ if the replies are more than 1.",
value:"hidden"
},{
text:"Show 1+ if the replies are more than 1.",
value:"all"
}
]
}
},{
id:"gif",
storage:"gif",
checkbox:true,
setValue:"yes",
text:{
head:"Animated GIF images animation",
desc:"",
checkbox:yesno
}
},{
id:"tag",
storage:"tag-range",
checkbox:true,
setValue:"local",
text:{
head:"Tag TL Search",
desc:"",
checkbox:[
{
text:"Use federated network",
value:"all"
},{
text:"Use local network",
value:"local"
}
]
}
},{
id:"via",
storage:"viashow",
checkbox:true,
setValue:"no",
text:{
head:"Show via",
desc:"",
checkbox:yesno
}
},{
id:"mov",
storage:"mouseover",
checkbox:true,
setValue:"no",
text:{
head:"Hide action buttons without mouseover",
desc:"You may feel 'mouseover' is unconfortable:(",
checkbox:[
{
text:"Mouseover to show",
value:"yes"
},{
text:"Click to show",
value:"click"
},{
text:"No",
value:"no"
}
]
}
},{
id:"notfm",
storage:"setasread",
checkbox:true,
setValue:"yes",
text:{
head:"Show Notification marker, red colored bell and counter(if you show a notification column.)",
desc:"",
checkbox:yesno
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"sentence",
storage:"sentence",
width:50,
setValue:500,
text:{after:"lines above or"}
},{
id:"letters",
storage:"letters",
width:50,
setValue:7000,
text:{after:"letters above"}
}
],
text:{
head:"Auto folding",
desc:"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.",
}
},{
id:"img-height",
storage:"img-height",
checkbox:false,
doubleText:false,
width:80,
setValue:200,
text:{
head:"Height of images",
desc:"",
after:"px"
}
},{
id:"ticker",
storage:"ticker_ok",
checkbox:true,
setValue:"no",
text:{
head:"Enable #InstanceTicker",
desc:'Show colorful stickers about tooters' server. <a href="https://cdn.weep.me/mastodon/">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.',
checkbox:yesno
}
},{
id:"anime",
storage:"animation",
checkbox:true,
setValue:"yes",
text:{
head:"Animation of timelines",
desc:"",
checkbox:yesno
}
}
];
var postConstruction=[
{
id:"cw-text",
storage:"cw-text",
checkbox:false,
doubleText:false,
width:150,
setValue:"",
text:{
head:"Default warining text",
desc:"",
after:""
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"cw_sentence",
storage:"cw_sentence",
width:50,
setValue:500,
text:{after:"lines above or"}
},{
id:"cw_letters",
storage:"cw_letters",
width:50,
setValue:7000,
text:{after:"letters above"}
}
],
text:{
head:"Alert before posting a long toot.",
desc:"Show dialog whether you make too-long text hidden.",
}
},{
id:"cws",
storage:"always-cw",
checkbox:true,
setValue:"no",
text:{
head:"Always CW set",
desc:"",
checkbox:yesno
}
},{
id:"vis",
storage:"vis",
checkbox:true,
setValue:"public",
text:{
head:"Default visibility",
desc:"",
checkbox:[
{
text:"Public",
value:"public"
},{
text:"Unlisted",
value:"unlisted"
},{
text:"Private",
value:"private"
},{
text:"Direct",
value:"direct"
},{
text:"Memory(memorized as each server)",
value:"memory"
},{
text:"Default of your visibility(Set on preferences of Mastodon server)",
value:"useapi"
}
]
}
},{
id:"img",
storage:"img",
checkbox:true,
setValue:"no-act",
text:{
head:"Posting images preferences",
desc:"",
checkbox:[
{
text:"Insert media URL",
value:"url"
},{
text:"Insert nothig",
value:"no-act"
}
]
}
},{
id:"box",
storage:"box",
checkbox:true,
setValue:"yes",
text:{
head:"Action of posting-box",
desc:"",
checkbox:[
{
text:"Folding",
value:"yes"
},{
text:"Open after posting",
value:"no"
},{
text:"Absolutely open",
value:"absolute"
}
]
}
},{
id:"quote",
storage:"quote",
checkbox:true,
setValue:"nothing",
text:{
head:"Quote format",
desc:"",
checkbox:[
{
text:"Only URL",
value:"simple"
},{
text:"URL and acct(mention to the user)",
value:"mention"
},{
text:"URL, text and acct(mention to the user)",
value:"full"
},{
text:"Disabled(Hide buttons on TLs)",
value:"nothing"
}
]
}
},{
id:"main",
storage:"mainuse",
checkbox:true,
setValue:"remain",
text:{
head:"Default accounts of actions",
desc:"Main account can be set on Account Manager.",
checkbox:[
{
text:"Account you used recently",
value:"remain"
},{
text:"Main account",
value:"main"
}
]
}
},{
id:"sec",
storage:"sec",
checkbox:true,
setValue:"public",
text:{
head:"Secondary Toot Button",
desc:"",
checkbox:[
{
text:"Hidden",
value:"nothing"
},{
text:"Public",
value:"public"
},{
text:"Unlisted",
value:"unlisted"
},{
text:"Private",
value:"private"
},{
text:"Direct",
value:"direct"
},{
text:"Local Only",
value:"local",
kirishima:true,
kirishimaText:"非対応インスタンスでは「未収載」になります。"
}
]
}
}
]

View File

@ -25,6 +25,8 @@
<script type="text/javascript" src="../../js/common/materialize.js"></script> <script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ja.js"></script> <script type="text/javascript" src="../../js/lang/lang.ja.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script> <script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<h4>設定</h4> <h4>設定</h4>
<ul class="collapsible" data-collapsible="accordion"> <ul class="collapsible" data-collapsible="accordion">
@ -39,30 +41,31 @@
<h5>設定のインポートとエクスポート</h5> <h5>設定のインポートとエクスポート</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">エクスポート</button> <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> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">インポート</button>
<br> <div id="envView">
<h5>新規通知のポップアップお知らせの表示秒数</h5>0に設定すると表示されません <template v-for="(item, i) in config">
<br> <h5>{{item.text.head}}</h5>
<input type="text" style="width:50px" id="popup"> {{item.text.desc}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">通知テスト</a><br></template>
<br> <template v-if="item.checkbox">
<h5>ネイティブ通知設定</h5> <template v-for="(check, j) in item.text.checkbox">
Portableバージョンでは表示できません。<br><a onclick="notftest()" class="pointer">通知テスト</a> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<br> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_yes" value="yes" /> </template>
<label for="ntf_yes">はい</label> </template>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" /> <template v-else>
<label for="ntf_no">いいえ</label> <template v-if="item.doubleText">
<br> <template v-for="(textbox, j) in item.data">
<h5>マルチカラムの最低横幅</h5>画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。 <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<input type="text" style="width:50px" id="width">px以上 </template>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <template v-else>
<br> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<h5>TweetDeckの限定の最低横幅</h5> </template>
<input type="text" style="width:50px" id="fixwidth">px以上 <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> </template>
<br> </template>
<h5>フォント</h5> </div>
<h5>フォント</h5>
「選択」を押してフォントを選んでください。<br> 「選択」を押してフォントを選んでください。<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">選択</button><br> <button class="btn waves-effect" style="width:100px;" onclick="font()">選択</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div> <div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
@ -70,23 +73,10 @@
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br> <br>
<h5>フォントサイズ</h5> <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()">設定</button><br>
<h5>デフォルトの保存先</h5>
画像ダウンロードやスクリーンショットに影響します。<br> 画像ダウンロードやスクリーンショットに影響します。<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">変更</button> <button class="btn waves-effect" style="width:100px;" onclick="savefolder()">変更</button>
<br> <br>
<h5>ハードウェアアクセラレーションの無効化</h5>
表示(特に設定画面)が乱れる場合に「はい」を選択してください。自動で再起動します。
<br>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_true" value="true" />
<label for="ha_true">はい</label>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_false" value="false" />
<label for="ha_false">いいえ</label>
<br>
</div> </div>
</li> </li>
<li> <li>
@ -160,101 +150,29 @@
<i class="material-icons">reorder</i>タイムラインの設定 <i class="material-icons">reorder</i>タイムラインの設定
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>時間表記設定</h5>相対時間の例:"1分前","3日前" <div id="tlView">
<br>絶対時間の例"23:25:21","2017年12月30日 23:59:00" <template v-for="(item, i) in config">
<br>混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<input class="with-gap" onchange="settings()" onchange="settings()" name="time" type="radio" id="relative" value="relative" /> <template v-if="item.checkbox">
<label for="relative">相対時間</label> <template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" onchange="settings()" name="time" type="radio" id="absolute" value="absolute" /> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label for="absolute">絶対時間</label> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="double" value="double" /> </template>
<label for="double">両方表示</label> </template>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="medium" value="medium" /> <template v-else>
<label for="medium">混合表示</label> <template v-if="item.doubleText">
<h5>独自ロケールを使用</h5>対応サーバーではそのサーバーにあわせた言語表示ができます。 <template v-for="(textbox, j) in item.data">
<br> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_yes" value="yes" /> </template>
<label for="ul_yes">はい</label> </template>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_no" value="no" /> <template v-else>
<label for="ul_no">いいえ</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<br> </template>
<h5>非表示設定の画像(NSFW)を隠す</h5>きつめのぼかしがかかります。 <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
<br> </template>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_yes" value="yes" /> </template>
<label for="n_yes">はい</label> </div>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_no" value="no" />
<label for="n_no">いいえ</label>
<br>
<h5>非表示設定のテキスト(CW)を隠す</h5>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_yes" value="yes" />
<label for="c_yes">はい</label>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_no" value="no" />
<label for="c_no">いいえ</label>
<br>
<h5>リプライ数表示</h5>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_hidden" value="hidden" />
<label for="rp_hidden">2以上のとき1+と表示</label>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_all" value="all" />
<label for="rp_all">完全に表示</label>
<br>
<h5>アイコンのアニメーションを再生する</h5>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_yes" value="yes" />
<label for="g_yes">はい</label>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_no" value="no" />
<label for="g_no">いいえ</label>
<br>
<h5>タグタイムラインの表示範囲</h5>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_all" value="all" />
<label for="t_all">接続しているサーバー</label>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_local" value="local" />
<label for="t_local">検索対象のサーバーのみ</label>
<br>
<h5>viaを表示する</h5>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_yes" value="yes" />
<label for="via_yes">はい</label>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_hide" value="hide" />
<label for="via_hide">いいえ</label>
<br>
<h5>アクションメニューを非表示</h5>
「マウスオーバー」はすこし鬱陶しいと思うかもしれません。<br>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_yes" value="yes" />
<label for="mov_yes">マウスオーバーで表示</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_click" value="click" />
<label for="mov_click">クリックで表示</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_no" value="no" />
<label for="mov_no">いいえ</label>
<br>
<h5>通知を開いているとき、通知新着お知らせを表示する</h5>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_yes" value="yes" />
<label for="notfm_yes">はい</label>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_no" value="no" />
<label for="notfm_no">いいえ</label>
<br>
<h5>指定行数以上を折りたたむ</h5>
5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。
<br>
<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>画像の高さ
</h5>
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button>
<br>
<h5>#InstanceTickerを使う</h5>
トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href="https://cdn.weep.me/mastodon/">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">はい</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">いいえ</label>
<br>
<h5>タイムラインのアニメーション</h5>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_yes" value="yes" />
<label for="anime_yes">はい</label>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_no" value="no" />
<label for="anime_no">いいえ</label>
</div> </div>
</li> </li>
<li> <li>
@ -262,90 +180,32 @@
<i class="material-icons">send</i>投稿設定 <i class="material-icons">send</i>投稿設定
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>デフォルトの警告文</h5> <div id="postView">
<input type="text" style="width:150px" id="cw-text"> <template v-for="(item, i) in config">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<h5>長文投稿時に警告</h5> <template v-if="item.checkbox">
下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。 <template v-for="(check, j) in item.text.checkbox">
<br> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input type="text" style="width:50px" id="cw_sentence">行 以上 または <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<input type="text" style="width:50px" id="cw_letters">文字 以上 <label v-bind:for="item.id+check.value">{{check.text}}</label>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">設定</button> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
<br> </template>
<h5>標準でCWを設定</h5> </template>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_yes" value="yes" /> </template>
<label for="cws_yes">はい</label> <template v-else>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_no" value="no" /> <template v-if="item.doubleText">
<label for="cws_no">いいえ <template v-for="(textbox, j) in item.data">
</label> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<h5>デフォルトの公開設定</h5> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="public" value="public" /> <template v-else>
<label for="public">公開(Public)</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="unlisted" value="unlisted" /> </template>
<label for="unlisted">未収載(Unlisted)</label> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">変更</button>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="private" value="private" /> </template>
<label for="private">非公開(Private)</label> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" /> </div>
<label for="direct">ダイレクト(Direct)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="memory" value="memory" />
<label for="memory">前回の投稿設定を記憶する(サーバーごとに記憶されます)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="server" value="server" />
<label for="server">マストドンアカウント設定の既定値</label>
<br>
<h5>画像投稿設定</h5>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_url" value="url" />
<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">画像を投稿するがURLは表示しない</label>
<br>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_inline" value="inline" disabled />
<label for="i_inline">現在利用できません。
<!--画像を投稿し、インラインで表示(Markdownに対応したインスタンスのみ。マルチアカウント環境では非推奨。)-->
</label>
<br>
<h5>投稿ボックスの挙動</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_yes" value="yes" />
<label for="bx_yes">たたむ</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_no" value="no" />
<label for="bx_no">投稿後も隠さない
</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_abs" value="absolute" />
<label for="bx_abs">枠外クリックで閉じない(起動時に展開)</label>
<br>
<h5>引用形式</h5>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_simple" value="simple" />
<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とアカウント名(相手に通知)</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_full" value="full" />
<label for="q_full">本文・URL・アカウント名</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_nothing" value="nothing" />
<label for="q_nothing">使わない(TL上にボタンも表示されません)</label>
<br>
<h5>投稿後や起動時のアカウント</h5>
メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。<br>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_remain" value="remain" />
<label for="mn_remain">最後に使用したアカウント</label>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_main" value="main" />
<label for="mn_main">メインアカウント</label>
</label>
<h5>セカンダリートゥートボタン</h5>
公開範囲の変更とトゥートを一発でできます。<br>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-nothing" value="nothing" />
<label for="sec-nothing">表示しない</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-public" value="public" />
<label for="sec-public">公開(Public)</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-unlisted" value="unlisted" />
<label for="sec-unlisted">未収載(Unlisted)</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-private" value="private" />
<label for="sec-private">非公開(Private)</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-direct" value="direct" />
<label for="sec-direct">ダイレクト(Direct)</label>
<input class="with-gap hide kirishima" onchange="settings()" name="sec" type="radio" id="sec-local" value="local" />
<label for="sec-local">ローカル限定</label><span class="hide kirishima">非対応インスタンスでは「未収載」になります。</span>
<br>
</div> </div>
</li> </li>
<li> <li>
@ -510,7 +370,6 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script> <script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script> <script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/lang/lang.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script> <script type="text/javascript" src="../../js/platform/pickr.js"></script>

480
app/view/ja/setting.vue.js Normal file
View File

@ -0,0 +1,480 @@
var yesno=[
{
text:"はい",
value:"yes"
},{
text:"いいえ",
value:"no"
}
];
var envConstruction=[
{
id:"popup",
storage:"popup",
checkbox:false,
doubleText:false,
setValue:0,
width:50,
text:{
head:"新規通知のポップアップお知らせの表示秒数",
desc:"0に設定すると表示されません",
after:"秒"
}
},{
id:"notf",
storage:"nativenotf",
checkbox:true,
setValue:"yes",
text:{
head:"ネイティブ通知設定",
desc:"Portableバージョンでは表示できません。",
checkbox:yesno
}
},{
id:"width",
storage:"width",
checkbox:false,
doubleText:false,
width:50,
setValue:300,
text:{
head:"マルチカラムの最低横幅",
desc:"画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。",
after:"px 以上"
}
},{
id:"fixwidth",
storage:"fixwidth",
checkbox:false,
doubleText:false,
setValue:300,
width:50,
text:{
head:"TweetDeckの限定の最低横幅",
desc:"",
after:"px 以上"
}
},{
id:"size",
storage:"size",
checkbox:false,
doubleText:false,
width:50,
setValue:13,
text:{
head:"フォントサイズ",
desc:'<span style="font-size:15px">15px(絶対指定)</span>',
after:"px"
}
},{
id:"ha",
storage:"ha",
checkbox:true,
setValue:false,
text:{
head:"ハードウェアアクセラレーションの無効化",
desc:"表示(特に設定画面)が乱れる場合に「はい」を選択してください。自動で再起動します。",
checkbox:[
{
text:"はい",
value:"true"
},{
text:"いいえ",
value:"false"
}
]
}
}
];
var tlConstruction=[
{
id:"time",
storage:"datetype",
checkbox:true,
setValue:"absolute",
text:{
head:"時間表記設定",
desc:'相対時間の例:"1分前","3日前"<br>絶対時間の例"23:25:21","2017年12月30日 23:59:00"<br>混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 ',
checkbox:[
{
text:"相対時間",
value:"relative"
},{
text:"絶対時間",
value:"absolute"
},{
text:"両方表示",
value:"double"
},{
text:"混合表示",
value:"medium"
}
]
}
},{
id:"ul",
storage:"locale",
checkbox:true,
setValue:"yes",
text:{
head:"独自ロケールを使用",
desc:"対応サーバーではそのサーバーにあわせた言語表示ができます。",
checkbox:yesno
}
},{
id:"nsfw",
storage:"nsfw",
checkbox:true,
setValue:"yes",
text:{
head:"非表示設定の画像(NSFW)を隠す",
desc:"きつめのぼかしがかかります。",
checkbox:yesno
}
},{
id:"cw",
storage:"cw",
checkbox:true,
setValue:"yes",
text:{
head:"非表示設定のテキスト(CW)を隠す",
desc:"",
checkbox:yesno
}
},{
id:"rp",
storage:"replyct",
checkbox:true,
setValue:"hidden",
text:{
head:"リプライ数表示",
desc:"",
checkbox:[
{
text:"2以上のとき1+と表示",
value:"hidden"
},{
text:"2以上のとき1+と表示",
value:"all"
}
]
}
},{
id:"gif",
storage:"gif",
checkbox:true,
setValue:"yes",
text:{
head:"アイコンのアニメーションを再生する",
desc:"",
checkbox:yesno
}
},{
id:"tag",
storage:"tag-range",
checkbox:true,
setValue:"local",
text:{
head:"タグタイムラインの表示範囲",
desc:"",
checkbox:[
{
text:"接続しているサーバー",
value:"all"
},{
text:"検索対象のサーバーのみ",
value:"local"
}
]
}
},{
id:"via",
storage:"viashow",
checkbox:true,
setValue:"no",
text:{
head:"viaを表示する",
desc:"",
checkbox:yesno
}
},{
id:"mov",
storage:"mouseover",
checkbox:true,
setValue:"no",
text:{
head:"アクションメニューを非表示",
desc:"「マウスオーバー」はすこし鬱陶しいと思うかもしれません。",
checkbox:[
{
text:"マウスオーバーで表示",
value:"yes"
},{
text:"クリックで表示",
value:"click"
},{
text:"いいえ",
value:"no"
}
]
}
},{
id:"notfm",
storage:"setasread",
checkbox:true,
setValue:"yes",
text:{
head:"通知を開いているとき、通知新着お知らせを表示する",
desc:"",
checkbox:yesno
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"sentence",
storage:"sentence",
width:50,
setValue:500,
text:{after:"行 以上 または"}
},{
id:"letters",
storage:"letters",
width:50,
setValue:7000,
text:{after:"文字 以上"}
}
],
text:{
head:"指定行数以上を折りたたむ",
desc:"5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。",
}
},{
id:"img-height",
storage:"img-height",
checkbox:false,
doubleText:false,
width:80,
setValue:200,
text:{
head:"画像の高さ",
desc:"",
after:"px"
}
},{
id:"ticker",
storage:"ticker_ok",
checkbox:true,
setValue:"no",
text:{
head:"#InstanceTickerを使う",
desc:'トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href="https://cdn.weep.me/mastodon/">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.',
checkbox:yesno
}
},{
id:"anime",
storage:"animation",
checkbox:true,
setValue:"yes",
text:{
head:"タイムラインのアニメーション",
desc:"",
checkbox:yesno
}
}
];
var postConstruction=[
{
id:"cw-text",
storage:"cw-text",
checkbox:false,
doubleText:false,
width:150,
setValue:"",
text:{
head:"デフォルトの警告文",
desc:"",
after:""
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"cw_sentence",
storage:"cw_sentence",
width:50,
setValue:500,
text:{after:"行 以上 または"}
},{
id:"cw_letters",
storage:"cw_letters",
width:50,
setValue:7000,
text:{after:"文字 以上"}
}
],
text:{
head:"長文投稿時に警告",
desc:"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
}
},{
id:"cws",
storage:"always-cw",
checkbox:true,
setValue:"no",
text:{
head:"標準でCWを設定",
desc:"",
checkbox:yesno
}
},{
id:"vis",
storage:"vis",
checkbox:true,
setValue:"public",
text:{
head:"デフォルトの公開設定",
desc:"",
checkbox:[
{
text:"公開(Public)",
value:"public"
},{
text:"未収載(Unlisted)",
value:"unlisted"
},{
text:"非公開(Private)",
value:"private"
},{
text:"ダイレクト(Direct)",
value:"direct"
},{
text:"前回の投稿設定を記憶する(サーバーごとに記憶されます)",
value:"memory"
},{
text:"マストドンアカウント設定の既定値",
value:"useapi"
}
]
}
},{
id:"img",
storage:"img",
checkbox:true,
setValue:"no-act",
text:{
head:"画像投稿設定",
desc:"",
checkbox:[
{
text:"画像を投稿し、画像のURLを最後に表示",
value:"url"
},{
text:"画像を投稿するがURLは表示しない",
value:"no-act"
}
]
}
},{
id:"box",
storage:"box",
checkbox:true,
setValue:"yes",
text:{
head:"投稿ボックスの挙動",
desc:"",
checkbox:[
{
text:"たたむ",
value:"yes"
},{
text:"投稿後も隠さない",
value:"no"
},{
text:"枠外クリックで閉じない(起動時に展開)",
value:"absolute"
}
]
}
},{
id:"quote",
storage:"quote",
checkbox:true,
setValue:"nothing",
text:{
head:"引用形式",
desc:"",
checkbox:[
{
text:"URLのみ",
value:"simple"
},{
text:"URLとアカウント名(相手に通知)",
value:"mention"
},{
text:"本文・URL・アカウント名",
value:"full"
},{
text:"使わない(TL上にボタンも表示されません)",
value:"nothing"
}
]
}
},{
id:"main",
storage:"mainuse",
checkbox:true,
setValue:"remain",
text:{
head:"投稿後や起動時のアカウント",
desc:"メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。",
checkbox:[
{
text:"最後に使用したアカウント",
value:"remain"
},{
text:"メインアカウント",
value:"main"
}
]
}
},{
id:"sec",
storage:"sec",
checkbox:true,
setValue:"public",
text:{
head:"セカンダリートゥートボタン",
desc:"",
checkbox:[
{
text:"表示しない",
value:"nothing"
},{
text:"公開(Public)",
value:"public"
},{
text:"未収載(Unlisted)",
value:"unlisted"
},{
text:"非公開(Private)",
value:"private"
},{
text:"ダイレクト(Direct)",
value:"direct"
},{
text:"ローカル限定",
value:"local",
kirishima:true,
kirishimaText:"非対応インスタンスでは「未収載」になります。"
}
]
}
}
]

View File

@ -582,19 +582,22 @@ var tlid=0;
<a href="https://thedesk.top" target="_blank">HP</a><br> <a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br> <a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br>
<br> <br>
<div id="release-Miria_17-2-1" class="release-do" style="display:none; "> <div id="release-Usamin_18-0-0" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br> <a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br> <a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br> Entyでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。 困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Miria (17.2.1)</h5> <h5>Release Note Usamin (18.0.0)</h5>
多くの機能を「メニュー」に集約。結局何のボタンかわからないアイコンの羅列から解放。<br> ・多くの機能を「メニュー」に集約。結局何のボタンかわからないアイコンの羅列から解放。<br>
Alt+Enterでセカンダリートゥートボタン<br> ・Alt+Enterでセカンダリートゥートボタン<br>
引用ボタンを表示しない設定(引用形式設定を「使用しない」)<br> ・引用ボタンを表示しない設定(引用形式設定を「使用しない」)<br>
実況機能をまともに書き直した。<br> ・実況機能をまともに書き直した。<br>
サジェストをトゥートボックスの右に<br> ・サジェストをトゥートボックスの右に<br>
ハードウェアアクセラレーションを無効化するオプション。(設定の表示などが乱れるときに設定)<br> ・ハードウェアアクセラレーションを無効化するオプション。(設定の表示などが乱れるときに設定)<br>
返信時に「@」が複数含まれない仕様を訂正<br> ・返信時に「@」が複数含まれない仕様を訂正<br>
・一部のデフォルト値を修正。<br>
・設定のエクスポート(バックアップ)がバージョン2に。ほとんどの設定をエクスポートします。<br>
・イメージビューワーの修正<br>
<img class="emoji" draggable="false" alt="⚠" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">TheDeskのMisskeyについての機能追加は終了しています。<br> <img class="emoji" draggable="false" alt="⚠" src="https://twemoji.maxcdn.com/2/72x72/26a0.png">TheDeskのMisskeyについての機能追加は終了しています。<br>
</div> </div>
<br><br> <br><br>

View File

@ -1,14 +1,14 @@
<!doctype html> <!doctype html>
<html lang="{{lang}}"> <html lang="@@lang@@">
<head> <head>
<title>Settings - TheDesk</title> <title>Settings - TheDesk</title>
{{comment-start}} @@comment-start@@
<script type="text/javascript"> <script type="text/javascript">
var _jipt = []; var _jipt = [];
_jipt.push(['project', 'thedesk']); _jipt.push(['project', 'thedesk']);
</script> </script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script> <script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
{{comment-end}} @@comment-end@@
<meta content="width=device-width,initial-scale=1.0" name="viewport"> <meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet"> <link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet"> <link href="../../css/themes.css" type="text/css" rel="stylesheet">
@ -23,78 +23,68 @@
<script type="text/javascript" src="../../js/common/jquery.js"></script> <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/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script> <script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.{{lang}}.js"></script> <script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script> <script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<h4>{{setting}}</h4> <h4>@@setting@@</h4>
<ul class="collapsible" data-collapsible="accordion"> <ul class="collapsible" data-collapsible="accordion">
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">desktop_windows</i>{{env}} <i class="material-icons">desktop_windows</i>@@env@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{setlang}}</h5> <h5>@@setlang@@</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br> To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
{{langlist}} @@langlist@@
<h5>{{backup}}</h5> <h5>@@backup@@</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">{{export}}</button> <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> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">@@import@@</button>
<br> <div id="envView">
<h5>{{popup}}</h5>{{popupwarn}} <template v-for="(item, i) in config">
<br> <h5>{{item.text.head}}</h5>
<input type="text" style="width:50px" id="popup">{{s}} {{item.text.desc}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">@@nntest@@</a><br></template>
<br> <template v-if="item.checkbox">
<h5>{{nativenotf}}</h5> <template v-for="(check, j) in item.text.checkbox">
{{nnwarn}}<br><a onclick="notftest()" class="pointer">{{nntest}}</a> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<br> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_yes" value="yes" /> </template>
<label for="ntf_yes">{{yes}}</label> </template>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" /> <template v-else>
<label for="ntf_no">{{no}}</label> <template v-if="item.doubleText">
<br> <template v-for="(textbox, j) in item.data">
<h5>{{minwidth}}</h5>{{minwidthwarn}} <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<input type="text" style="width:50px" id="width">px{{above}} </template>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <template v-else>
<br> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<h5>{{fixwidth}}</h5>{{fixwidthwarn}} </template>
<input type="text" style="width:50px" id="fixwidth">px{{above}} <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> </template>
<br> </template>
<h5>{{font}}</h5> </div>
{{fontwarn}}<br> <h5>@@font@@</h5>
<button class="btn waves-effect" style="width:100px;" onclick="font()">{{select}}</button><br> @@fontwarn@@<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">@@select@@</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div> <div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br> <br>
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">@@set@@</button>
<br> <br>
<h5>{{fontsize}}</h5> <h5>@@savefolder@@</h5>
<span style="font-size:15px">15px({{absolute}})</span> @@savefolderwarn@@<br>
<br> <button class="btn waves-effect" style="width:100px;" onclick="savefolder()">@@change@@</button>
<input type="text" style="width:50px" id="size">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button><br>
<h5>{{savefolder}}</h5>
{{savefolderwarn}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">{{change}}</button>
<br>
<h5>{{hardwareAcceleration}}</h5>
{{hardwareAccelerationWarn}}
<br>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_true" value="true" />
<label for="ha_true">{{yes}}</label>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_false" value="false" />
<label for="ha_false">{{no}}</label>
<br> <br>
</div> </div>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">color_lens</i>{{theme}} <i class="material-icons">color_lens</i>@@theme@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h4>{{themeSel}}</h4> <h4>@@themeSel@@</h4>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" /> <input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label> <label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" /> <input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
@ -110,289 +100,159 @@
<div style="width:300px" id="sel-selector"> <div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select> <select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div> </div>
<h4>{{customtheme}}</h4> <h4>@@customtheme@@</h4>
<div style="width:300px" id="edit-selector" data-add="{{add_new}}"> <div style="width:300px" id="edit-selector" data-add="@@add_new@@">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()"> <select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">{{add_new}}</option> <option value="add_new">@@add_new@@</option>
</select> </select>
</div> </div>
<h5>{{name}}</h5> <h5>@@name@@</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="{{name}}..."> <input type="text" style="width:300px" id="custom_name" placeholder="@@name@@...">
<h5>{{desc}}</h5> <h5>@@desc@@</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="{{desc}}..."></textarea></div> <div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="@@desc@@..."></textarea></div>
<h5>{{customthemeDirection}}</h5> <h5>@@customthemeDirection@@</h5>
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" /> <input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label> <label for="dark">Dark</label>
<input class="with-gap" name="derection" type="radio" id="light" value="light" /> <input class="with-gap" name="derection" type="radio" id="light" value="light" />
<label for="light">Light</label> <label for="light">Light</label>
<div id="pickers"> <div id="pickers">
<div> <div>
<h5>Primary</h5>{{secondarycolor}} <h5>Primary</h5>@@secondarycolor@@
<div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div> <div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
<input type="hidden" id="color-picker0_value"> <input type="hidden" id="color-picker0_value">
</div> </div>
<div> <div>
<h5>Secondary</h5>{{primary}} <h5>Secondary</h5>@@primary@@
<div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div> <div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
<input type="hidden" id="color-picker1_value"> <input type="hidden" id="color-picker1_value">
</div> </div>
<div> <div>
<h5>Texts</h5>{{text}} <h5>Texts</h5>@@text@@
<div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div> <div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
<input type="hidden" id="color-picker2_value"> <input type="hidden" id="color-picker2_value">
</div> </div>
<div> <div>
<h5>Accent</h5>{{accent}} <h5>Accent</h5>@@accent@@
<div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div> <div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
<input type="hidden" id="color-picker3_value"> <input type="hidden" id="color-picker3_value">
</div> </div>
</div> </div>
<button class="btn-large waves-effect" onclick="customComp()">{{change}}</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">{{delete}}</button><br><br> <button class="btn-large waves-effect" onclick="customComp()">@@change@@</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br> <input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
{{customShare}} @@customShare@@
<h4>{{customImport}}</h4> <h4>@@customImport@@</h4>
{{cImpWarn}}<br> @@cImpWarn@@<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style"> <input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">{{import}}</button><br> <button class="btn waves-effect" onclick="customImp()">@@import@@</button><br>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">reorder</i>{{timeline}} <i class="material-icons">reorder</i>@@timeline@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{timemode}}</h5>{{relativetime}} <div id="tlView">
<br>{{absolutetime}} <template v-for="(item, i) in config">
<br>{{mixtime}} <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<input class="with-gap" onchange="settings()" onchange="settings()" name="time" type="radio" id="relative" value="relative" /> <template v-if="item.checkbox">
<label for="relative">{{relativesel}}</label> <template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" onchange="settings()" name="time" type="radio" id="absolute" value="absolute" /> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label for="absolute">{{absolutesel}}</label> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="double" value="double" /> </template>
<label for="double">{{doublesel}}</label> </template>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="medium" value="medium" /> <template v-else>
<label for="medium">{{mixsel}}</label> <template v-if="item.doubleText">
<h5>{{locale}}</h5>{{localewarn}} <template v-for="(textbox, j) in item.data">
<br> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_yes" value="yes" /> </template>
<label for="ul_yes">{{yes}}</label> </template>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_no" value="no" /> <template v-else>
<label for="ul_no">{{no}}</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<br> </template>
<h5>{{nswf}}</h5>{{nsfwwarn}} <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
<br> </template>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_yes" value="yes" /> </template>
<label for="n_yes">{{yes}}</label> </div>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_no" value="no" />
<label for="n_no">{{no}}</label>
<br>
<h5>{{cw}}</h5>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_yes" value="yes" />
<label for="c_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_no" value="no" />
<label for="c_no">{{no}}</label>
<br>
<h5>{{replyct}}</h5>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_hidden" value="hidden" />
<label for="rp_hidden">{{replyct_hidden}}</label>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_all" value="all" />
<label for="rp_all">{{replyct_full}}</label>
<br>
<h5>{{gif}}</h5>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_yes" value="yes" />
<label for="g_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_no" value="no" />
<label for="g_no">{{no}}</label>
<br>
<h5>{{tag}}</h5>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_all" value="all" />
<label for="t_all">{{tagfed}}</label>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_local" value="local" />
<label for="t_local">{{taglocal}}</label>
<br>
<h5>{{via}}</h5>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_yes" value="yes" />
<label for="via_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_hide" value="hide" />
<label for="via_hide">{{no}}</label>
<br>
<h5>{{mouseover}}</h5>
{{mouseoverwarn}}<br>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_yes" value="yes" />
<label for="mov_yes">{{mv}}</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_click" value="click" />
<label for="mov_click">{{mvclick}}</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_no" value="no" />
<label for="mov_no">{{no}}</label>
<br>
<h5>{{notfmarker}}</h5>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_yes" value="yes" />
<label for="notfm_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_no" value="no" />
<label for="notfm_no">{{no}}</label>
<br>
<h5>{{autofold}}</h5>
{{autofoldwarn}}
<br>
<input type="text" style="width:50px" id="sentence">{{lines}} {{above}} {{or}}
<input type="text" style="width:50px" id="letters">{{letters}} {{above}}
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{imgheight}}
</h5>
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{ticker}}</h5>
{{tickerwarn}}<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">{{no}}</label>
<br>
<h5>{{animation}}</h5>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_yes" value="yes" />
<label for="anime_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_no" value="no" />
<label for="anime_no">{{no}}</label>
</div> </div>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">send</i>{{post}} <i class="material-icons">send</i>@@post@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{defaultcw}}</h5> <div id="postView">
<input type="text" style="width:150px" id="cw-text"> <template v-for="(item, i) in config">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<h5>{{autocw}}</h5> <template v-if="item.checkbox">
{{autocwwarn}} <template v-for="(check, j) in item.text.checkbox">
<br> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input type="text" style="width:50px" id="cw_sentence">{{lines}} {{above}} {{or}} <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<input type="text" style="width:50px" id="cw_letters">{{letters}} {{above}} <label v-bind:for="item.id+check.value">{{check.text}}</label>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
<br> </template>
<h5>{{cws}}</h5> </template>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_yes" value="yes" /> </template>
<label for="cws_yes">{{yes}}</label> <template v-else>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_no" value="no" /> <template v-if="item.doubleText">
<label for="cws_no">{{no}} <template v-for="(textbox, j) in item.data">
</label> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<h5>{{defaultvis}}</h5> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="public" value="public" /> <template v-else>
<label for="public">{{public}}</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="unlisted" value="unlisted" /> </template>
<label for="unlisted">{{unlisted}}</label> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">@@change@@</button>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="private" value="private" /> </template>
<label for="private">{{private}}</label> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" /> </div>
<label for="direct">{{direct}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="memory" value="memory" />
<label for="memory">{{memory}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="server" value="server" />
<label for="server">{{useapi}}</label>
<br>
<h5>{{postimg}}</h5>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_url" value="url" />
<label for="i_url">{{showurl}}</label>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_no-act" value="no-act" />
<label for="i_no-act">{{nourl}}</label>
<br>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_inline" value="inline" disabled />
<label for="i_inline">{{disabled}}
<!--画像を投稿し、インラインで表示(Markdownに対応したインスタンスのみ。マルチアカウント環境では非推奨。)-->
</label>
<br>
<h5>{{box}}</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_yes" value="yes" />
<label for="bx_yes">{{boxyes}}</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_no" value="no" />
<label for="bx_no">{{boxno}}
</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_abs" value="absolute" />
<label for="bx_abs">{{boxabs}}</label>
<br>
<h5>{{quote}}</h5>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_simple" value="simple" />
<label for="q_simple">{{simple}}</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_mention" value="mention" />
<label for="q_mention">{{mention}}</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_full" value="full" />
<label for="q_full">{{full}}</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_nothing" value="nothing" />
<label for="q_nothing">{{notqt}}</label>
<br>
<h5>{{main}}</h5>
{{mainwarn}}<br>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_remain" value="remain" />
<label for="mn_remain">{{lastacct}}</label>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_main" value="main" />
<label for="mn_main">{{usemainacct}}</label>
</label>
<h5>{{secondary}}</h5>
{{secwarn}}<br>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-nothing" value="nothing" />
<label for="sec-nothing">{{nothing}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-public" value="public" />
<label for="sec-public">{{public}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-unlisted" value="unlisted" />
<label for="sec-unlisted">{{unlisted}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-private" value="private" />
<label for="sec-private">{{private}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-direct" value="direct" />
<label for="sec-direct">{{direct}}</label>
<input class="with-gap hide kirishima" onchange="settings()" name="sec" type="radio" id="sec-local" value="local" />
<label for="sec-local">{{localonly}}</label><span class="hide kirishima">非対応インスタンスでは「未収載」になります。</span>
<br>
</div> </div>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">keyboard</i>{{keysc}} <i class="material-icons">keyboard</i>@@keysc@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{iks}}</h5> <h5>@@iks@@</h5>
{{okswarn}}<br> @@okswarn@@<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1"> Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">{{set}}</button><br><br> <button onclick="oks(1)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2"> Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">{{set}}</button><br><br> <button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3"> Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">{{set}}</button><br><br> <button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
</div> </div>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">bookmark</i>{{muteemp}} <i class="material-icons">bookmark</i>@@muteemp@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{climute}}</h5> <h5>@@climute@@</h5>
<div id="mute-cli"></div> <div id="mute-cli"></div>
<h5>{{cliemp}}</h5> <h5>@@cliemp@@</h5>
{{cliwarn}} @@cliwarn@@
<h5>{{wordmute}}</h5> <h5>@@wordmute@@</h5>
{{enter}}<br> @@enter@@<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div> <div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">{{set}}</button> <button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
<h5>{{wordemp}}</h5> <h5>@@wordemp@@</h5>
{{enter}}<br> @@enter@@<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div> <div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">{{set}}</button> <button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
<h5>{{useremp}}</h5> <h5>@@useremp@@</h5>
{{useerempwarn}} @@useerempwarn@@
<span class="emphasized"> {{empcolorwarn}} </span> <span class="emphasized"> @@empcolorwarn@@ </span>
</div> </div>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="fa fa-spotify"></i>{{spotify}} <i class="fa fa-spotify"></i>@@spotify@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{npProvider}}</h5> <h5>@@npProvider@@</h5>
{{npPeoviderWarn}}<br> @@npPeoviderWarn@@<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" /> <input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label> <label for="aimp">AIMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" /> <input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
@ -407,73 +267,73 @@
<label for="wlm">WLM</label> <label for="wlm">WLM</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" /> <input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<label for="cad">CAD</label><br><br> <label for="cad">CAD</label><br><br>
{{spotifynote1}}<i class="material-icons" style="font-size:24px;">music_note</i>{{spotifynote2}}<br> @@spotifynote1@@<i class="material-icons" style="font-size:24px;">music_note</i>@@spotifynote2@@<br>
<h5>{{link}}</h5> <h5>@@link@@</h5>
{{linkwarn}}<br> @@linkwarn@@<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">{{set}}</button></div> <div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</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="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> <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>{{templeteedit}}</h5> <h5>@@templeteedit@@</h5>
{{templeteeditwarn}}<br> @@templeteeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist} <textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br> {url}</textarea><br>
{{templete1}}<br> @@templete1@@<br>
{{templete2}}<br> @@templete2@@<br>
{{templete3}}<br> @@templete3@@<br>
<span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br> <span class="imas hide">CINDERELLA NowPlaying(imastodon.net限定)では作曲家{composer}/作詞家{lyricist}/BPM{bpm}が有効です。<br>
CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br> CINDERELLA NowPlayingはimastodon.netにログインしているとき、トゥート欄に「//」を入力し、その後に曲名を入れることで可能です。</span><br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">{{set}}</button> <button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
<h5>{{postartwork}}</h5> <h5>@@postartwork@@</h5>
<span class="imas hide">この設定はCINDERELLA NowPlaying(imastodon.net限定)にも適用されます。</span><br> <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" /> <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">@@yes@@</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" /> <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">@@no@@</label>
<br> <br>
</div> </div>
</li> </li>
<li> <li>
<div class="collapsible-header"> <div class="collapsible-header">
<i class="material-icons">hearing</i>{{tts}} <i class="material-icons">hearing</i>@@tts@@
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>{{speed}}</h5> <h5>@@speed@@</h5>
{{speedwarn}}<br> @@speedwarn@@<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10" style="width:500px; max-width:100%"/></p> <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> <h5>@@pitch@@</h5>
{{pitchwarn}}<br> @@pitchwarn@@<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p> <p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
<h5>{{vol}}</h5> <h5>@@vol@@</h5>
{{volwarn}}<br> @@volwarn@@<br>
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100" style="width:500px; max-width:100%"/></p> <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> <h5>@@test@@</h5>
<input type="text" style="width:350px" id="voicetxt" value="{{sample}}"> <input type="text" style="width:350px" id="voicetxt" value="@@sample@@">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">{{playstop}}</button><br> <button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">@@playstop@@</button><br>
<br> <br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">{{set}}</button> <button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
</div> </div>
</li> </li>
</ul> </ul>
<br> <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>@@back@@</a>
<br> <br>
<br>{{keyscs}} <br>@@keyscs@@
<li>Ctrl+1-9:{{keyscr}}</li> <li>Ctrl+1-9:@@keyscr@@</li>
<li>N:{{keynew}}</li> <li>N:@@keynew@@</li>
<li>X:{{keytoggle}}</li> <li>X:@@keytoggle@@</li>
<li>Ctrl+Enter:{{keypost}}</li> <li>Ctrl+Enter:@@keypost@@</li>
<li>Ctrl+Enter+Shift:{{keysecpost}}</li> <li>Ctrl+Enter+Shift:@@keysecpost@@</li>
<li>Alt+Enter:{{secondary}}</li> <li>Alt+Enter:@@secondary@@</li>
<li>Ctrl+E:{{keyunread}}</li> <li>Ctrl+E:@@keyunread@@</li>
<li>Esc:{{keyesc}}</li> <li>Esc:@@keyesc@@</li>
<li>F5:{{keyf5}}</li> <li>F5:@@keyf5@@</li>
<li>Ctrl+Shift+C:{{keyclear}}</li> <li>Ctrl+Shift+C:@@keyclear@@</li>
<li>Ctrl+Shift+S:{{setting}}</li> <li>Ctrl+Shift+S:@@setting@@</li>
<li>Ctrl+Shift+M:{{keyacctman}}</li> <li>Ctrl+Shift+M:@@keyacctman@@</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li> <li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:{{keyshowprof}}</li> <li>Ctrl+Shift+P:@@keyshowprof@@</li>
<li>←/→:{{keyrow}}</li> <li>←/→:@@keyrow@@</li>
<li>{{keyzoom}}</li> <li>@@keyzoom@@</li>
<div class="hide kirishima"> <div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。 以下Markdownに対応したインスタンスのみ。
<br> <br>
@ -486,19 +346,19 @@
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く <a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br> </li><br>
</div> </div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('{{resetconfirm}}')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>{{reset}}</button><br><br> <button class="btn waves-effect red" style="width:100%; max-width:500px;" onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>@@reset@@</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}}</button> <button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>@@about@@</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://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>{{support}}(Enty)</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> <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>
<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="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 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;">{{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;">@@sushi@@</a>
<br> <br>
Kyash<br> Kyash<br>
<img src="../../img/kyash.png" width="100"><br> <img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">{{checkup}}</a><br> <a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">@@checkup@@</a><br>
<a href="oss.html">OSS License{{ossJP}}</a><br> <a href="oss.html">OSS License@@ossJP@@</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved. <span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a> Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
<br>Developer: Cutls P( <br>Developer: Cutls P(
@ -510,7 +370,6 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script> <script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script> <script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/lang/lang.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script> <script type="text/javascript" src="../../js/platform/pickr.js"></script>

View File

@ -0,0 +1,480 @@
var yesno=[
{
text:"@@yes@@",
value:"yes"
},{
text:"@@no@@",
value:"no"
}
];
var envConstruction=[
{
id:"popup",
storage:"popup",
checkbox:false,
doubleText:false,
setValue:0,
width:50,
text:{
head:"@@popup@@",
desc:"@@popupwarn@@",
after:"@@s@@"
}
},{
id:"notf",
storage:"nativenotf",
checkbox:true,
setValue:"yes",
text:{
head:"@@nativenotf@@",
desc:"@@nnwarn@@",
checkbox:yesno
}
},{
id:"width",
storage:"width",
checkbox:false,
doubleText:false,
width:50,
setValue:300,
text:{
head:"@@minwidth@@",
desc:"@@minwidthwarn@@",
after:"px @@above@@"
}
},{
id:"fixwidth",
storage:"fixwidth",
checkbox:false,
doubleText:false,
setValue:300,
width:50,
text:{
head:"@@fixwidth@@",
desc:"@@fixwidthwarn@@",
after:"px @@above@@"
}
},{
id:"size",
storage:"size",
checkbox:false,
doubleText:false,
width:50,
setValue:13,
text:{
head:"@@fontsize@@",
desc:'<span style="font-size:15px">15px(@@absolute@@)</span>',
after:"px"
}
},{
id:"ha",
storage:"ha",
checkbox:true,
setValue:false,
text:{
head:"@@hardwareAcceleration@@",
desc:"@@hardwareAccelerationWarn@@",
checkbox:[
{
text:"@@yes@@",
value:"true"
},{
text:"@@no@@",
value:"false"
}
]
}
}
];
var tlConstruction=[
{
id:"time",
storage:"datetype",
checkbox:true,
setValue:"absolute",
text:{
head:"@@timemode@@",
desc:'@@relativetime@@<br>@@absolutetime@@<br>@@mixtime@@',
checkbox:[
{
text:"@@relativesel@@",
value:"relative"
},{
text:"@@absolutesel@@",
value:"absolute"
},{
text:"@@doublesel@@",
value:"double"
},{
text:"@@mixsel@@",
value:"medium"
}
]
}
},{
id:"ul",
storage:"locale",
checkbox:true,
setValue:"yes",
text:{
head:"@@locale@@",
desc:"@@localewarn@@",
checkbox:yesno
}
},{
id:"nsfw",
storage:"nsfw",
checkbox:true,
setValue:"yes",
text:{
head:"@@nswf@@",
desc:"@@nsfwwarn@@",
checkbox:yesno
}
},{
id:"cw",
storage:"cw",
checkbox:true,
setValue:"yes",
text:{
head:"@@cw@@",
desc:"",
checkbox:yesno
}
},{
id:"rp",
storage:"replyct",
checkbox:true,
setValue:"hidden",
text:{
head:"@@replyct@@",
desc:"",
checkbox:[
{
text:"@@replyct_hidden@@",
value:"hidden"
},{
text:"@@replyct_hidden@@",
value:"all"
}
]
}
},{
id:"gif",
storage:"gif",
checkbox:true,
setValue:"yes",
text:{
head:"@@gif@@",
desc:"",
checkbox:yesno
}
},{
id:"tag",
storage:"tag-range",
checkbox:true,
setValue:"local",
text:{
head:"@@tag@@",
desc:"",
checkbox:[
{
text:"@@tagfed@@",
value:"all"
},{
text:"@@taglocal@@",
value:"local"
}
]
}
},{
id:"via",
storage:"viashow",
checkbox:true,
setValue:"no",
text:{
head:"@@via@@",
desc:"",
checkbox:yesno
}
},{
id:"mov",
storage:"mouseover",
checkbox:true,
setValue:"no",
text:{
head:"@@mouseover@@",
desc:"@@mouseoverwarn@@",
checkbox:[
{
text:"@@mv@@",
value:"yes"
},{
text:"@@mvclick@@",
value:"click"
},{
text:"@@no@@",
value:"no"
}
]
}
},{
id:"notfm",
storage:"setasread",
checkbox:true,
setValue:"yes",
text:{
head:"@@notfmarker@@",
desc:"",
checkbox:yesno
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"sentence",
storage:"sentence",
width:50,
setValue:500,
text:{after:"@@lines@@ @@above@@ @@or@@"}
},{
id:"letters",
storage:"letters",
width:50,
setValue:7000,
text:{after:"@@letters@@ @@above@@"}
}
],
text:{
head:"@@autofold@@",
desc:"@@autofoldwarn@@",
}
},{
id:"img-height",
storage:"img-height",
checkbox:false,
doubleText:false,
width:80,
setValue:200,
text:{
head:"@@imgheight@@",
desc:"",
after:"px"
}
},{
id:"ticker",
storage:"ticker_ok",
checkbox:true,
setValue:"no",
text:{
head:"@@ticker@@",
desc:'@@tickerwarn@@',
checkbox:yesno
}
},{
id:"anime",
storage:"animation",
checkbox:true,
setValue:"yes",
text:{
head:"@@animation@@",
desc:"",
checkbox:yesno
}
}
];
var postConstruction=[
{
id:"cw-text",
storage:"cw-text",
checkbox:false,
doubleText:false,
width:150,
setValue:"",
text:{
head:"@@defaultcw@@",
desc:"",
after:""
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"cw_sentence",
storage:"cw_sentence",
width:50,
setValue:500,
text:{after:"@@lines@@ @@above@@ @@or@@"}
},{
id:"cw_letters",
storage:"cw_letters",
width:50,
setValue:7000,
text:{after:"@@letters@@ @@above@@"}
}
],
text:{
head:"@@autocw@@",
desc:"@@autocwwarn@@",
}
},{
id:"cws",
storage:"always-cw",
checkbox:true,
setValue:"no",
text:{
head:"@@cws@@",
desc:"",
checkbox:yesno
}
},{
id:"vis",
storage:"vis",
checkbox:true,
setValue:"public",
text:{
head:"@@defaultvis@@",
desc:"",
checkbox:[
{
text:"@@public@@",
value:"public"
},{
text:"@@unlisted@@",
value:"unlisted"
},{
text:"@@private@@",
value:"private"
},{
text:"@@direct@@",
value:"direct"
},{
text:"@@memory@@",
value:"memory"
},{
text:"@@useapi@@",
value:"useapi"
}
]
}
},{
id:"img",
storage:"img",
checkbox:true,
setValue:"no-act",
text:{
head:"@@postimg@@",
desc:"",
checkbox:[
{
text:"@@showurl@@",
value:"url"
},{
text:"@@nourl@@",
value:"no-act"
}
]
}
},{
id:"box",
storage:"box",
checkbox:true,
setValue:"yes",
text:{
head:"@@box@@",
desc:"",
checkbox:[
{
text:"@@boxyes@@",
value:"yes"
},{
text:"@@boxno@@",
value:"no"
},{
text:"@@boxabs@@",
value:"absolute"
}
]
}
},{
id:"quote",
storage:"quote",
checkbox:true,
setValue:"nothing",
text:{
head:"@@quote@@",
desc:"",
checkbox:[
{
text:"@@simple@@",
value:"simple"
},{
text:"@@mention@@",
value:"mention"
},{
text:"@@full@@",
value:"full"
},{
text:"@@notqt@@",
value:"nothing"
}
]
}
},{
id:"main",
storage:"mainuse",
checkbox:true,
setValue:"remain",
text:{
head:"@@main@@",
desc:"@@mainwarn@@",
checkbox:[
{
text:"@@lastacct@@",
value:"remain"
},{
text:"@@usemainacct@@",
value:"main"
}
]
}
},{
id:"sec",
storage:"sec",
checkbox:true,
setValue:"public",
text:{
head:"@@secondary@@",
desc:"",
checkbox:[
{
text:"@@nothing@@",
value:"nothing"
},{
text:"@@public@@",
value:"public"
},{
text:"@@unlisted@@",
value:"unlisted"
},{
text:"@@private@@",
value:"private"
},{
text:"@@direct@@",
value:"direct"
},{
text:"@@localonly@@",
value:"local",
kirishima:true,
kirishimaText:"非対応インスタンスでは「未収載」になります。"
}
]
}
}
]

View File

@ -0,0 +1,519 @@
<!doctype html>
<html lang="{{lang}}">
<head>
<title>Settings - TheDesk</title>
{{comment-start}}
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
{{comment-end}}
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
<style>input{max-height:50px!important} .pcr-result{height:1rem !important;}</style>
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.{{lang}}.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<h4>{{setting}}</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>{{env}}
</div>
<div class="collapsible-body">
<h5>{{setlang}}</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
{{langlist}}
<h5>{{backup}}</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">{{export}}</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">{{import}}</button>
<br>
<h5>{{popup}}</h5>{{popupwarn}}
<br>
<input type="text" style="width:50px" id="popup">{{s}}
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{nativenotf}}</h5>
{{nnwarn}}<br><a onclick="notftest()" class="pointer">{{nntest}}</a>
<br>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_yes" value="yes" />
<label for="ntf_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" />
<label for="ntf_no">{{no}}</label>
<br>
<h5>{{minwidth}}</h5>{{minwidthwarn}}
<br>
<input type="text" style="width:50px" id="width">px{{above}}
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{fixwidth}}</h5>{{fixwidthwarn}}
<input type="text" style="width:50px" id="fixwidth">px{{above}}
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{font}}</h5>
{{fontwarn}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">{{select}}</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br>
<input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{fontsize}}</h5>
<span style="font-size:15px">15px({{absolute}})</span>
<br>
<input type="text" style="width:50px" id="size">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button><br>
<h5>{{savefolder}}</h5>
{{savefolderwarn}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">{{change}}</button>
<br>
<h5>{{hardwareAcceleration}}</h5>
{{hardwareAccelerationWarn}}
<br>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_true" value="true" />
<label for="ha_true">{{yes}}</label>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_false" value="false" />
<label for="ha_false">{{no}}</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">color_lens</i>{{theme}}
</div>
<div class="collapsible-body">
<h4>{{themeSel}}</h4>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<label for="white">White</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
<label for="custom">Custom</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
<h4>{{customtheme}}</h4>
<div style="width:300px" id="edit-selector" data-add="{{add_new}}">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">{{add_new}}</option>
</select>
</div>
<h5>{{name}}</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="{{name}}...">
<h5>{{desc}}</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea" placeholder="{{desc}}..."></textarea></div>
<h5>{{customthemeDirection}}</h5>
<input class="with-gap" name="derection" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label>
<input class="with-gap" name="derection" type="radio" id="light" value="light" />
<label for="light">Light</label>
<div id="pickers">
<div>
<h5>Primary</h5>{{secondarycolor}}
<div id="color-picker0-wrap"><div class="color-picker" id="color-picker0"></div></div>
<input type="hidden" id="color-picker0_value">
</div>
<div>
<h5>Secondary</h5>{{primary}}
<div id="color-picker1-wrap"><div class="color-picker" id="color-picker1"></div></div>
<input type="hidden" id="color-picker1_value">
</div>
<div>
<h5>Texts</h5>{{text}}
<div id="color-picker2-wrap"><div class="color-picker" id="color-picker2"></div></div>
<input type="hidden" id="color-picker2_value">
</div>
<div>
<h5>Accent</h5>{{accent}}
<div id="color-picker3-wrap"><div class="color-picker" id="color-picker3"></div></div>
<input type="hidden" id="color-picker3_value">
</div>
</div>
<button class="btn-large waves-effect" onclick="customComp()">{{change}}</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">{{delete}}</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
{{customShare}}
<h4>{{customImport}}</h4>
{{cImpWarn}}<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">{{import}}</button><br>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>{{timeline}}
</div>
<div class="collapsible-body">
<h5>{{timemode}}</h5>{{relativetime}}
<br>{{absolutetime}}
<br>{{mixtime}}
<br>
<input class="with-gap" onchange="settings()" onchange="settings()" name="time" type="radio" id="relative" value="relative" />
<label for="relative">{{relativesel}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="absolute" value="absolute" />
<label for="absolute">{{absolutesel}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="double" value="double" />
<label for="double">{{doublesel}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="medium" value="medium" />
<label for="medium">{{mixsel}}</label>
<h5>{{locale}}</h5>{{localewarn}}
<br>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_yes" value="yes" />
<label for="ul_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_no" value="no" />
<label for="ul_no">{{no}}</label>
<br>
<h5>{{nswf}}</h5>{{nsfwwarn}}
<br>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_yes" value="yes" />
<label for="n_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_no" value="no" />
<label for="n_no">{{no}}</label>
<br>
<h5>{{cw}}</h5>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_yes" value="yes" />
<label for="c_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_no" value="no" />
<label for="c_no">{{no}}</label>
<br>
<h5>{{replyct}}</h5>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_hidden" value="hidden" />
<label for="rp_hidden">{{replyct_hidden}}</label>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_all" value="all" />
<label for="rp_all">{{replyct_full}}</label>
<br>
<h5>{{gif}}</h5>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_yes" value="yes" />
<label for="g_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_no" value="no" />
<label for="g_no">{{no}}</label>
<br>
<h5>{{tag}}</h5>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_all" value="all" />
<label for="t_all">{{tagfed}}</label>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_local" value="local" />
<label for="t_local">{{taglocal}}</label>
<br>
<h5>{{via}}</h5>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_yes" value="yes" />
<label for="via_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_hide" value="hide" />
<label for="via_hide">{{no}}</label>
<br>
<h5>{{mouseover}}</h5>
{{mouseoverwarn}}<br>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_yes" value="yes" />
<label for="mov_yes">{{mv}}</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_click" value="click" />
<label for="mov_click">{{mvclick}}</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_no" value="no" />
<label for="mov_no">{{no}}</label>
<br>
<h5>{{notfmarker}}</h5>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_yes" value="yes" />
<label for="notfm_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_no" value="no" />
<label for="notfm_no">{{no}}</label>
<br>
<h5>{{autofold}}</h5>
{{autofoldwarn}}
<br>
<input type="text" style="width:50px" id="sentence">{{lines}} {{above}} {{or}}
<input type="text" style="width:50px" id="letters">{{letters}} {{above}}
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{imgheight}}
</h5>
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">{{set}}</button>
<br>
<h5>{{ticker}}</h5>
{{tickerwarn}}<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">{{no}}</label>
<br>
<h5>{{animation}}</h5>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_yes" value="yes" />
<label for="anime_yes">{{yes}}</label>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_no" value="no" />
<label for="anime_no">{{no}}</label>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>{{post}}
</div>
<div class="collapsible-body">
<h5>{{defaultcw}}</h5>
<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>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_no" value="no" />
<label for="cws_no">{{no}}
</label>
<br>
<h5>{{defaultvis}}</h5>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="public" value="public" />
<label for="public">{{public}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="unlisted" value="unlisted" />
<label for="unlisted">{{unlisted}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="private" value="private" />
<label for="private">{{private}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" />
<label for="direct">{{direct}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="memory" value="memory" />
<label for="memory">{{memory}}</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="server" value="server" />
<label for="server">{{useapi}}</label>
<br>
<h5>{{postimg}}</h5>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_url" value="url" />
<label for="i_url">{{showurl}}</label>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_no-act" value="no-act" />
<label for="i_no-act">{{nourl}}</label>
<br>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_inline" value="inline" disabled />
<label for="i_inline">{{disabled}}
<!--画像を投稿し、インラインで表示(Markdownに対応したインスタンスのみ。マルチアカウント環境では非推奨。)-->
</label>
<br>
<h5>{{box}}</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_yes" value="yes" />
<label for="bx_yes">{{boxyes}}</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_no" value="no" />
<label for="bx_no">{{boxno}}
</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_abs" value="absolute" />
<label for="bx_abs">{{boxabs}}</label>
<br>
<h5>{{quote}}</h5>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_simple" value="simple" />
<label for="q_simple">{{simple}}</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_mention" value="mention" />
<label for="q_mention">{{mention}}</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_full" value="full" />
<label for="q_full">{{full}}</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_nothing" value="nothing" />
<label for="q_nothing">{{notqt}}</label>
<br>
<h5>{{main}}</h5>
{{mainwarn}}<br>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_remain" value="remain" />
<label for="mn_remain">{{lastacct}}</label>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_main" value="main" />
<label for="mn_main">{{usemainacct}}</label>
</label>
<h5>{{secondary}}</h5>
{{secwarn}}<br>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-nothing" value="nothing" />
<label for="sec-nothing">{{nothing}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-public" value="public" />
<label for="sec-public">{{public}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-unlisted" value="unlisted" />
<label for="sec-unlisted">{{unlisted}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-private" value="private" />
<label for="sec-private">{{private}}</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-direct" value="direct" />
<label for="sec-direct">{{direct}}</label>
<input class="with-gap hide kirishima" onchange="settings()" name="sec" type="radio" id="sec-local" value="local" />
<label for="sec-local">{{localonly}}</label><span class="hide kirishima">非対応インスタンスでは「未収載」になります。</span>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">keyboard</i>{{keysc}}
</div>
<div class="collapsible-body">
<h5>{{iks}}</h5>
{{okswarn}}<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">{{set}}</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;">{{set}}</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;">{{set}}</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>{{muteemp}}
</div>
<div class="collapsible-body">
<h5>{{climute}}</h5>
<div id="mute-cli"></div>
<h5>{{cliemp}}</h5>
{{cliwarn}}
<h5>{{wordmute}}</h5>
{{enter}}<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">{{set}}</button>
<h5>{{wordemp}}</h5>
{{enter}}<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">{{set}}</button>
<h5>{{useremp}}</h5>
{{useerempwarn}}
<span class="emphasized"> {{empcolorwarn}} </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fa fa-spotify"></i>{{spotify}}
</div>
<div class="collapsible-body">
<h5>{{npProvider}}</h5>
{{npPeoviderWarn}}<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
<label for="itunes">iTunes</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
<label for="npmm">MediaMonkey</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
<label for="winamp">Winamp</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<label for="wmp">WMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<label for="wlm">WLM</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<label for="cad">CAD</label><br><br>
{{spotifynote1}}<i class="material-icons" style="font-size:24px;">music_note</i>{{spotifynote2}}<br>
<h5>{{link}}</h5>
{{linkwarn}}<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">{{set}}</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>{{templeteedit}}</h5>
{{templeteeditwarn}}<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
{{templete1}}<br>
{{templete2}}<br>
{{templete3}}<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;">{{set}}</button>
<h5>{{postartwork}}</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>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<label for="awk_no">{{no}}</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>{{tts}}
</div>
<div class="collapsible-body">
<h5>{{speed}}</h5>
{{speedwarn}}<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>
{{pitchwarn}}<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50" style="width:500px; max-width:100%"/></p>
<h5>{{vol}}</h5>
{{volwarn}}<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="{{sample}}">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()" id="testplay">{{playstop}}</button><br>
<br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">{{set}}</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>
<br>
<br>{{keyscs}}
<li>Ctrl+1-9:{{keyscr}}</li>
<li>N:{{keynew}}</li>
<li>X:{{keytoggle}}</li>
<li>Ctrl+Enter:{{keypost}}</li>
<li>Ctrl+Enter+Shift:{{keysecpost}}</li>
<li>Alt+Enter:{{secondary}}</li>
<li>Ctrl+E:{{keyunread}}</li>
<li>Esc:{{keyesc}}</li>
<li>F5:{{keyf5}}</li>
<li>Ctrl+Shift+C:{{keyclear}}</li>
<li>Ctrl+Shift+S:{{setting}}</li>
<li>Ctrl+Shift+M:{{keyacctman}}</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:{{keyshowprof}}</li>
<li>←/→:{{keyrow}}</li>
<li>{{keyzoom}}</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Space:ゼロ幅スペース</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<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('{{resetconfirm}}')){ localStorage.clear(); location.href='index.html'; }"><i class="material-icons left">delete</i>{{reset}}</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}}</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>{{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>
<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;">{{sushi}}</a>
<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
<a onclick="localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer">{{checkup}}</a><br>
<a href="oss.html">OSS License{{ossJP}}</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018 All Rights Reserved.
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a href="https://thedesk.top/tos.html">Terms of Use</a>/<a href="https://thedesk.top/priv.html">Privacy Policy</a>
<br>Developer: Cutls P(
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
<br>
</span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>をログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/lang/lang.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script>
<script type="text/javascript" src="../../js/ui/settings.js"></script>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

View File

@ -25,6 +25,8 @@
<script type="text/javascript" src="../../js/common/materialize.js"></script> <script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ps.js"></script> <script type="text/javascript" src="../../js/lang/lang.ps.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script> <script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<h4>crwdns524:0crwdne524:0</h4> <h4>crwdns524:0crwdne524:0</h4>
<ul class="collapsible" data-collapsible="accordion"> <ul class="collapsible" data-collapsible="accordion">
@ -39,30 +41,31 @@
<h5>crwdns531:0crwdne531:0</h5> <h5>crwdns531:0crwdne531:0</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button> <button onclick="exportSettings()" class="btn waves-effect lime darken-3" style="width:100%; max-width:200px;">crwdns533:0crwdne533:0</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button> <button onclick="importSettings()" class="btn waves-effect cyan darken-3" style="width:100%; max-width:200px;">crwdns532:0crwdne532:0</button>
<br> <div id="envView">
<h5>crwdns1898:0crwdne1898:0</h5>crwdns536:0crwdne536:0 <template v-for="(item, i) in config">
<br> <h5>{{item.text.head}}</h5>
<input type="text" style="width:50px" id="popup">crwdns537:0crwdne537:0 {{item.text.desc}}<br>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button> <template v-if="item.id=='notf'"><a onclick="notftest()" class="pointer">crwdns540:0crwdne540:0</a><br></template>
<br> <template v-if="item.checkbox">
<h5>crwdns538:0crwdne538:0</h5> <template v-for="(check, j) in item.text.checkbox">
crwdns539:0crwdne539:0<br><a onclick="notftest()" class="pointer">crwdns540:0crwdne540:0</a> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<br> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_yes" value="yes" /> </template>
<label for="ntf_yes">crwdns526:0crwdne526:0</label> </template>
<input class="with-gap" onchange="settings()" name="notf" type="radio" id="ntf_no" value="no" /> <template v-else>
<label for="ntf_no">crwdns527:0crwdne527:0</label> <template v-if="item.doubleText">
<br> <template v-for="(textbox, j) in item.data">
<h5>crwdns2376:0crwdne2376:0</h5>crwdns542:0crwdne542:0 <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<input type="text" style="width:50px" id="width">pxcrwdns543:0crwdne543:0 </template>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button> <template v-else>
<br> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<h5>crwdns2378:0crwdne2378:0</h5>crwdns2380:0crwdne2380:0 </template>
<input type="text" style="width:50px" id="fixwidth">pxcrwdns543:0crwdne543:0 <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button> </template>
<br> </template>
<h5>crwdns544:0crwdne544:0</h5> </div>
<h5>crwdns544:0crwdne544:0</h5>
crwdns1900:0crwdne1900:0<br> crwdns1900:0crwdne1900:0<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">crwdns1896:0crwdne1896:0</button><br> <button class="btn waves-effect" style="width:100px;" onclick="font()">crwdns1896:0crwdne1896:0</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div> <div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
@ -70,23 +73,10 @@
<input type="text" style="width:150px" id="font"> <input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button> <button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
<br> <br>
<h5>crwdns546:0crwdne546:0</h5> <h5>crwdns547:0crwdne547:0</h5>
<span style="font-size:15px">15px(crwdns549:0crwdne549:0)</span>
<br>
<input type="text" style="width:50px" id="size">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button><br>
<h5>crwdns547:0crwdne547:0</h5>
crwdns548:0crwdne548:0<br> crwdns548:0crwdne548:0<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">crwdns528:0crwdne528:0</button> <button class="btn waves-effect" style="width:100px;" onclick="savefolder()">crwdns528:0crwdne528:0</button>
<br> <br>
<h5>{{hardwareAcceleration}}</h5>
{{hardwareAccelerationWarn}}
<br>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_true" value="true" />
<label for="ha_true">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="hardwareAcceleration()" name="ha" type="radio" id="ha_false" value="false" />
<label for="ha_false">crwdns527:0crwdne527:0</label>
<br>
</div> </div>
</li> </li>
<li> <li>
@ -147,11 +137,11 @@
<input type="hidden" id="color-picker3_value"> <input type="hidden" id="color-picker3_value">
</div> </div>
</div> </div>
<button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">{{delete}}</button><br><br> <button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button>&nbsp;<button class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br> <input type="text" style="width:300px" id="custom_json" class="materialize-textarea" placeholder="JSON style" readonly><br>
crwdns2442:0crwdne2442:0 crwdns2442:0crwdne2442:0
<h4>crwdns2444:0crwdne2444:0</h4> <h4>crwdns2444:0crwdne2444:0</h4>
{{cImpWarn}}<br> @@cImpWarn@@<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style"> <input type="text" style="width:300px" id="custom_import" class="materialize-textarea" placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br> <button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
</li> </li>
@ -160,101 +150,29 @@
<i class="material-icons">reorder</i>crwdns550:0crwdne550:0 <i class="material-icons">reorder</i>crwdns550:0crwdne550:0
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>crwdns551:0crwdne551:0</h5>crwdns552:0crwdne552:0 <div id="tlView">
<br>crwdns553:0crwdne553:0 <template v-for="(item, i) in config">
<br>crwdns554:0crwdne554:0 <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<input class="with-gap" onchange="settings()" onchange="settings()" name="time" type="radio" id="relative" value="relative" /> <template v-if="item.checkbox">
<label for="relative">crwdns555:0crwdne555:0</label> <template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" onchange="settings()" name="time" type="radio" id="absolute" value="absolute" /> <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label for="absolute">crwdns1902:0crwdne1902:0</label> <label v-bind:for="item.id+check.value">{{check.text}}</label>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="double" value="double" /> </template>
<label for="double">crwdns557:0crwdne557:0</label> </template>
<input class="with-gap" onchange="settings()" name="time" type="radio" id="medium" value="medium" /> <template v-else>
<label for="medium">crwdns558:0crwdne558:0</label> <template v-if="item.doubleText">
<h5>crwdns1904:0crwdne1904:0</h5>crwdns1906:0crwdne1906:0 <template v-for="(textbox, j) in item.data">
<br> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_yes" value="yes" /> </template>
<label for="ul_yes">crwdns526:0crwdne526:0</label> </template>
<input class="with-gap" onchange="settings()" name="ul" type="radio" id="ul_no" value="no" /> <template v-else>
<label for="ul_no">crwdns527:0crwdne527:0</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<br> </template>
<h5>crwdns561:0crwdne561:0</h5>crwdns562:0crwdne562:0 <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
<br> </template>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_yes" value="yes" /> </template>
<label for="n_yes">crwdns526:0crwdne526:0</label> </div>
<input class="with-gap" onchange="settings()" name="nsfw" type="radio" id="n_no" value="no" />
<label for="n_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns563:0crwdne563:0</h5>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_yes" value="yes" />
<label for="c_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="cw" type="radio" id="c_no" value="no" />
<label for="c_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns564:0crwdne564:0</h5>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_hidden" value="hidden" />
<label for="rp_hidden">crwdns565:0crwdne565:0</label>
<input class="with-gap" onchange="settings()" name="rp" type="radio" id="rp_all" value="all" />
<label for="rp_all">crwdns566:0crwdne566:0</label>
<br>
<h5>crwdns567:0crwdne567:0</h5>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_yes" value="yes" />
<label for="g_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="gif" type="radio" id="g_no" value="no" />
<label for="g_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns572:0crwdne572:0</h5>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_all" value="all" />
<label for="t_all">crwdns573:0crwdne573:0</label>
<input class="with-gap" onchange="settings()" name="tag" type="radio" id="t_local" value="local" />
<label for="t_local">crwdns574:0crwdne574:0</label>
<br>
<h5>crwdns575:0crwdne575:0</h5>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_yes" value="yes" />
<label for="via_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="via" type="radio" id="via_hide" value="hide" />
<label for="via_hide">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns576:0crwdne576:0</h5>
crwdns577:0crwdne577:0<br>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_yes" value="yes" />
<label for="mov_yes">crwdns578:0crwdne578:0</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_click" value="click" />
<label for="mov_click">crwdns579:0crwdne579:0</label>
<input class="with-gap" onchange="settings()" name="mov" type="radio" id="mov_no" value="no" />
<label for="mov_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns580:0crwdne580:0</h5>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_yes" value="yes" />
<label for="notfm_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="notfm" type="radio" id="notfm_no" value="no" />
<label for="notfm_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns581:0crwdne581:0</h5>
crwdns582:0crwdne582:0
<br>
<input type="text" style="width:50px" id="sentence">crwdns583:0crwdne583:0 crwdns543:0crwdne543:0 crwdns585:0crwdne585:0
<input type="text" style="width:50px" id="letters">crwdns584:0crwdne584:0 crwdns543:0crwdne543:0
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
<br>
<h5>crwdns586:0crwdne586:0
</h5>
<input type="text" style="width:50px" id="img-height">px
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button>
<br>
<h5>crwdns1908:0crwdne1908:0</h5>
crwdns1910:0crwdne1910:0<br>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_yes" value="yes" />
<label for="ticker_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="ticker" type="radio" id="ticker_no" value="no" />
<label for="ticker_no">crwdns527:0crwdne527:0</label>
<br>
<h5>crwdns2446:0crwdne2446:0</h5>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_yes" value="yes" />
<label for="anime_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="settings()" name="anime" type="radio" id="anime_no" value="no" />
<label for="anime_no">crwdns527:0crwdne527:0</label>
</div> </div>
</li> </li>
<li> <li>
@ -262,90 +180,32 @@
<i class="material-icons">send</i>crwdns587:0crwdne587:0 <i class="material-icons">send</i>crwdns587:0crwdne587:0
</div> </div>
<div class="collapsible-body"> <div class="collapsible-body">
<h5>crwdns590:0crwdne590:0</h5> <div id="postView">
<input type="text" style="width:150px" id="cw-text"> <template v-for="(item, i) in config">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button> <h5>{{item.text.head}}</h5>
<br> {{item.text.desc}}<br>
<h5>crwdns588:0crwdne588:0</h5> <template v-if="item.checkbox">
crwdns589:0crwdne589:0 <template v-for="(check, j) in item.text.checkbox">
<br> <template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input type="text" style="width:50px" id="cw_sentence">crwdns583:0crwdne583:0 crwdns543:0crwdne543:0 crwdns585:0crwdne585:0 <input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue" type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<input type="text" style="width:50px" id="cw_letters">crwdns584:0crwdne584:0 crwdns543:0crwdne543:0 <label v-bind:for="item.id+check.value">{{check.text}}</label>
<button class="btn waves-effect" style="width:100px;" onclick="settings()">crwdns525:0crwdne525:0</button> <span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
<br> </template>
<h5>crwdns591:0crwdne591:0</h5> </template>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_yes" value="yes" /> </template>
<label for="cws_yes">crwdns526:0crwdne526:0</label> <template v-else>
<input class="with-gap" onchange="settings()" name="cws" type="radio" id="cws_no" value="no" /> <template v-if="item.doubleText">
<label for="cws_no">crwdns527:0crwdne527:0 <template v-for="(textbox, j) in item.data">
</label> <input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id" v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
<br> </template>
<h5>crwdns592:0crwdne592:0</h5> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="public" value="public" /> <template v-else>
<label for="public">crwdns593:0crwdne593:0</label> <input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id" v-bind:style="{ width: item.width+'px'}"/>{{item.text.after}}
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="unlisted" value="unlisted" /> </template>
<label for="unlisted">crwdns594:0crwdne594:0</label> <button class="btn waves-effect" style="width:100px;" v-on:click="complete(i)">crwdns528:0crwdne528:0</button>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="private" value="private" /> </template>
<label for="private">crwdns595:0crwdne595:0</label> </template>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" /> </div>
<label for="direct">crwdns596:0crwdne596:0</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="memory" value="memory" />
<label for="memory">crwdns1912:0crwdne1912:0</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="server" value="server" />
<label for="server">crwdns1914:0crwdne1914:0</label>
<br>
<h5>crwdns599:0crwdne599:0</h5>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_url" value="url" />
<label for="i_url">crwdns600:0crwdne600:0</label>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_no-act" value="no-act" />
<label for="i_no-act">crwdns601:0crwdne601:0</label>
<br>
<input class="with-gap" onchange="settings()" name="img" type="radio" id="i_inline" value="inline" disabled />
<label for="i_inline">crwdns602:0crwdne602:0
<!--画像を投稿し、インラインで表示(Markdownに対応したインスタンスのみ。マルチアカウント環境では非推奨。)-->
</label>
<br>
<h5>crwdns568:0crwdne568:0</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_yes" value="yes" />
<label for="bx_yes">crwdns569:0crwdne569:0</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_no" value="no" />
<label for="bx_no">crwdns571:0crwdne571:0
</label>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="bx_abs" value="absolute" />
<label for="bx_abs">crwdns570:0crwdne570:0</label>
<br>
<h5>crwdns603:0crwdne603:0</h5>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_simple" value="simple" />
<label for="q_simple">crwdns604:0crwdne604:0</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_mention" value="mention" />
<label for="q_mention">crwdns605:0crwdne605:0</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_full" value="full" />
<label for="q_full">crwdns606:0crwdne606:0</label>
<input class="with-gap" onchange="settings()" name="quote" type="radio" id="q_nothing" value="nothing" />
<label for="q_nothing">{{notqt}}</label>
<br>
<h5>crwdns607:0crwdne607:0</h5>
crwdns608:0crwdne608:0<br>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_remain" value="remain" />
<label for="mn_remain">crwdns609:0crwdne609:0</label>
<input class="with-gap" onchange="settings()" name="main" type="radio" id="mn_main" value="main" />
<label for="mn_main">crwdns610:0crwdne610:0</label>
</label>
<h5>crwdns1916:0crwdne1916:0</h5>
crwdns1918:0crwdne1918:0<br>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-nothing" value="nothing" />
<label for="sec-nothing">crwdns1920:0crwdne1920:0</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-public" value="public" />
<label for="sec-public">crwdns593:0crwdne593:0</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-unlisted" value="unlisted" />
<label for="sec-unlisted">crwdns594:0crwdne594:0</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-private" value="private" />
<label for="sec-private">crwdns595:0crwdne595:0</label>
<input class="with-gap" onchange="settings()" name="sec" type="radio" id="sec-direct" value="direct" />
<label for="sec-direct">crwdns596:0crwdne596:0</label>
<input class="with-gap hide kirishima" onchange="settings()" name="sec" type="radio" id="sec-local" value="local" />
<label for="sec-local">crwdns1922:0crwdne1922:0</label><span class="hide kirishima">非対応インスタンスでは「未収載」になります。</span>
<br>
</div> </div>
</li> </li>
<li> <li>
@ -510,7 +370,6 @@ TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のため
<script type="text/javascript" src="../../js/common/about.js"></script> <script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script> <script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script> <script type="text/javascript" src="../../js/login/logout.js"></script>
<script type="text/javascript" src="../../js/lang/lang.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script> <script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script> <script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/platform/pickr.js"></script> <script type="text/javascript" src="../../js/platform/pickr.js"></script>

480
app/view/ps/setting.vue.js Normal file
View File

@ -0,0 +1,480 @@
var yesno=[
{
text:"crwdns526:0crwdne526:0",
value:"yes"
},{
text:"crwdns527:0crwdne527:0",
value:"no"
}
];
var envConstruction=[
{
id:"popup",
storage:"popup",
checkbox:false,
doubleText:false,
setValue:0,
width:50,
text:{
head:"crwdns1898:0crwdne1898:0",
desc:"crwdns536:0crwdne536:0",
after:"crwdns537:0crwdne537:0"
}
},{
id:"notf",
storage:"nativenotf",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns538:0crwdne538:0",
desc:"crwdns539:0crwdne539:0",
checkbox:yesno
}
},{
id:"width",
storage:"width",
checkbox:false,
doubleText:false,
width:50,
setValue:300,
text:{
head:"crwdns2376:0crwdne2376:0",
desc:"crwdns542:0crwdne542:0",
after:"px crwdns543:0crwdne543:0"
}
},{
id:"fixwidth",
storage:"fixwidth",
checkbox:false,
doubleText:false,
setValue:300,
width:50,
text:{
head:"crwdns2378:0crwdne2378:0",
desc:"crwdns2380:0crwdne2380:0",
after:"px crwdns543:0crwdne543:0"
}
},{
id:"size",
storage:"size",
checkbox:false,
doubleText:false,
width:50,
setValue:13,
text:{
head:"crwdns546:0crwdne546:0",
desc:'<span style="font-size:15px">15px(crwdns549:0crwdne549:0)</span>',
after:"px"
}
},{
id:"ha",
storage:"ha",
checkbox:true,
setValue:false,
text:{
head:"@@hardwareAcceleration@@",
desc:"@@hardwareAccelerationWarn@@",
checkbox:[
{
text:"crwdns526:0crwdne526:0",
value:"true"
},{
text:"crwdns527:0crwdne527:0",
value:"false"
}
]
}
}
];
var tlConstruction=[
{
id:"time",
storage:"datetype",
checkbox:true,
setValue:"absolute",
text:{
head:"crwdns551:0crwdne551:0",
desc:'crwdns552:0crwdne552:0<br>crwdns553:0crwdne553:0<br>crwdns554:0crwdne554:0',
checkbox:[
{
text:"crwdns555:0crwdne555:0",
value:"relative"
},{
text:"crwdns1902:0crwdne1902:0",
value:"absolute"
},{
text:"crwdns557:0crwdne557:0",
value:"double"
},{
text:"crwdns558:0crwdne558:0",
value:"medium"
}
]
}
},{
id:"ul",
storage:"locale",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns1904:0crwdne1904:0",
desc:"crwdns1906:0crwdne1906:0",
checkbox:yesno
}
},{
id:"nsfw",
storage:"nsfw",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns561:0crwdne561:0",
desc:"crwdns562:0crwdne562:0",
checkbox:yesno
}
},{
id:"cw",
storage:"cw",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns563:0crwdne563:0",
desc:"",
checkbox:yesno
}
},{
id:"rp",
storage:"replyct",
checkbox:true,
setValue:"hidden",
text:{
head:"crwdns564:0crwdne564:0",
desc:"",
checkbox:[
{
text:"crwdns565:0crwdne565:0",
value:"hidden"
},{
text:"crwdns565:0crwdne565:0",
value:"all"
}
]
}
},{
id:"gif",
storage:"gif",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns567:0crwdne567:0",
desc:"",
checkbox:yesno
}
},{
id:"tag",
storage:"tag-range",
checkbox:true,
setValue:"local",
text:{
head:"crwdns572:0crwdne572:0",
desc:"",
checkbox:[
{
text:"crwdns573:0crwdne573:0",
value:"all"
},{
text:"crwdns574:0crwdne574:0",
value:"local"
}
]
}
},{
id:"via",
storage:"viashow",
checkbox:true,
setValue:"no",
text:{
head:"crwdns575:0crwdne575:0",
desc:"",
checkbox:yesno
}
},{
id:"mov",
storage:"mouseover",
checkbox:true,
setValue:"no",
text:{
head:"crwdns576:0crwdne576:0",
desc:"crwdns577:0crwdne577:0",
checkbox:[
{
text:"crwdns578:0crwdne578:0",
value:"yes"
},{
text:"crwdns579:0crwdne579:0",
value:"click"
},{
text:"crwdns527:0crwdne527:0",
value:"no"
}
]
}
},{
id:"notfm",
storage:"setasread",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns580:0crwdne580:0",
desc:"",
checkbox:yesno
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"sentence",
storage:"sentence",
width:50,
setValue:500,
text:{after:"crwdns583:0crwdne583:0 crwdns543:0crwdne543:0 crwdns585:0crwdne585:0"}
},{
id:"letters",
storage:"letters",
width:50,
setValue:7000,
text:{after:"crwdns584:0crwdne584:0 crwdns543:0crwdne543:0"}
}
],
text:{
head:"crwdns581:0crwdne581:0",
desc:"crwdns582:0crwdne582:0",
}
},{
id:"img-height",
storage:"img-height",
checkbox:false,
doubleText:false,
width:80,
setValue:200,
text:{
head:"crwdns586:0crwdne586:0",
desc:"",
after:"px"
}
},{
id:"ticker",
storage:"ticker_ok",
checkbox:true,
setValue:"no",
text:{
head:"crwdns1908:0crwdne1908:0",
desc:'crwdns1910:0crwdne1910:0',
checkbox:yesno
}
},{
id:"anime",
storage:"animation",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns2446:0crwdne2446:0",
desc:"",
checkbox:yesno
}
}
];
var postConstruction=[
{
id:"cw-text",
storage:"cw-text",
checkbox:false,
doubleText:false,
width:150,
setValue:"",
text:{
head:"crwdns590:0crwdne590:0",
desc:"",
after:""
}
},{
checkbox:false,
doubleText:true,
data:[
{
id:"cw_sentence",
storage:"cw_sentence",
width:50,
setValue:500,
text:{after:"crwdns583:0crwdne583:0 crwdns543:0crwdne543:0 crwdns585:0crwdne585:0"}
},{
id:"cw_letters",
storage:"cw_letters",
width:50,
setValue:7000,
text:{after:"crwdns584:0crwdne584:0 crwdns543:0crwdne543:0"}
}
],
text:{
head:"crwdns588:0crwdne588:0",
desc:"crwdns589:0crwdne589:0",
}
},{
id:"cws",
storage:"always-cw",
checkbox:true,
setValue:"no",
text:{
head:"crwdns591:0crwdne591:0",
desc:"",
checkbox:yesno
}
},{
id:"vis",
storage:"vis",
checkbox:true,
setValue:"public",
text:{
head:"crwdns592:0crwdne592:0",
desc:"",
checkbox:[
{
text:"crwdns593:0crwdne593:0",
value:"public"
},{
text:"crwdns594:0crwdne594:0",
value:"unlisted"
},{
text:"crwdns595:0crwdne595:0",
value:"private"
},{
text:"crwdns596:0crwdne596:0",
value:"direct"
},{
text:"crwdns1912:0crwdne1912:0",
value:"memory"
},{
text:"crwdns1914:0crwdne1914:0",
value:"useapi"
}
]
}
},{
id:"img",
storage:"img",
checkbox:true,
setValue:"no-act",
text:{
head:"crwdns599:0crwdne599:0",
desc:"",
checkbox:[
{
text:"crwdns600:0crwdne600:0",
value:"url"
},{
text:"crwdns601:0crwdne601:0",
value:"no-act"
}
]
}
},{
id:"box",
storage:"box",
checkbox:true,
setValue:"yes",
text:{
head:"crwdns568:0crwdne568:0",
desc:"",
checkbox:[
{
text:"crwdns569:0crwdne569:0",
value:"yes"
},{
text:"crwdns571:0crwdne571:0",
value:"no"
},{
text:"crwdns570:0crwdne570:0",
value:"absolute"
}
]
}
},{
id:"quote",
storage:"quote",
checkbox:true,
setValue:"nothing",
text:{
head:"crwdns603:0crwdne603:0",
desc:"",
checkbox:[
{
text:"crwdns604:0crwdne604:0",
value:"simple"
},{
text:"crwdns605:0crwdne605:0",
value:"mention"
},{
text:"crwdns606:0crwdne606:0",
value:"full"
},{
text:"@@notqt@@",
value:"nothing"
}
]
}
},{
id:"main",
storage:"mainuse",
checkbox:true,
setValue:"remain",
text:{
head:"crwdns607:0crwdne607:0",
desc:"crwdns608:0crwdne608:0",
checkbox:[
{
text:"crwdns609:0crwdne609:0",
value:"remain"
},{
text:"crwdns610:0crwdne610:0",
value:"main"
}
]
}
},{
id:"sec",
storage:"sec",
checkbox:true,
setValue:"public",
text:{
head:"crwdns1916:0crwdne1916:0",
desc:"",
checkbox:[
{
text:"crwdns1920:0crwdne1920:0",
value:"nothing"
},{
text:"crwdns593:0crwdne593:0",
value:"public"
},{
text:"crwdns594:0crwdne594:0",
value:"unlisted"
},{
text:"crwdns595:0crwdne595:0",
value:"private"
},{
text:"crwdns596:0crwdne596:0",
value:"direct"
},{
text:"crwdns1922:0crwdne1922:0",
value:"local",
kirishima:true,
kirishimaText:"非対応インスタンスでは「未収載」になります。"
}
]
}
}
]