Add: bg/cs/de locales

This commit is contained in:
Cutls
2019-08-07 09:24:52 +09:00
parent 0a1d462ace
commit da6993730c
49 changed files with 9611 additions and 8 deletions

159
app/view/bg/acct.html Normal file
View File

@@ -0,0 +1,159 @@
<!doctype html>
<html lang="bg">
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.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='../../css/tl.css' rel='stylesheet' type='text/css'>
<link href='../../css/userdata.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<style>
.acct {
display: flex;
justify-content: space-around;
}
.card {
width: 400px;
background-color: #9e9e9e;
margin: 10px;
}
body,
html {
overflow-y: scroll;
}
#acct-list {
display: flex;
flex-wrap: wrap;
color: white;
align-items: flex-start
}
.lts {
font-size: 150%
}
.colorsel {
display: flex;
}
.card .colorsel div:not(.exc) {
width: 20px;
height: 20px;
}
.card .colorsel div.exc {
width: 40px;
height: 20px;
}
.first {
display: flex;
justify-content: center;
align-items: center
}
.first .hide-first {
display: none;
}
</style>
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body id="mainView">
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.bg.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<div class="hide-first">
<a href="index.html" class="btn waves-effect orange nex"
style="width:100%; max-width:200px;">Назад</a><br>
<h5>Списък на профилите</h5>
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div>
<h5>Добавяне на профил</h5><br>
<div id="add">
<div class="row">
<div class="col s8">
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
Премахнете отметката за да пропуснете влизането с код. (Вход в Mastodon от Windows или macOS) (Препоръчително: pcheck)<br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>Настройка на код</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Влезте като Misskey</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">
<span style="font-family:Open Sans;">Supports</span>
<div id="support" class="collection transparent"></div>
</div>
</div>
</div>
<div id="auth" style="display:none">
Поставете кода и затворете браузъра.<br>
<input type="text" id="code" placeholder="Код">
<button class="btn waves-effect" onclick="code()">Auth</button><br>
</div>
<div id="misskeylogin" style="display:none">
<h5>AppSecret</h5>
Прочетете <a href="https://thedesk.top/how-to-misskey-login.html">Документацията</a>, за да влезете в Misskey.<br>
<input type="hidden" id="misskey-url">
<input type="text" id="misskey-key" placeholder="Код">
<button class="btn waves-effect" onclick="misskeyLogin()">Auth</button><br>
</div>
</div>
<div class="hide-first">
<h5>Основен профил</h5>
<div class="input-field" style="width:300px"><span data-trans="your_acct">Изберете профил</span>
<br>
<select id="main-acct-sel" class="acct-sel" style="color:black" onchange="mainacct()"></select>
<label></label>
</div>
Some instance data by <a href="https://instances.social" target="_blank">instances.social API</a><br>
<h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br>
<span id="ins-desc"></span><br>
<img src="../../img/loading.svg" id="ins-prof" width="200"><br>
<br>
Домейн:<span id="ins-name"></span><br>
Федерални сървъри:<span id="ins-connect"></span><br>
Тоот:<span id="ins-toot"></span><br>
Потребители:<span id="ins-user"></span>Потребители<br>
Свързване:<span id="ins-per"></span>%<br>
Mastodon версия:<span id="ins-ver"></span>@<span id="ins-upd"></span><br>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/common/sha256.js"></script>
<script type="text/javascript" src="../../js/login/tkn.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>

1106
app/view/bg/index.html Normal file

File diff suppressed because it is too large Load Diff

508
app/view/bg/setting.html Normal file
View File

@@ -0,0 +1,508 @@
<!doctype html>
<html lang="bg" style="overflow:scroll">
<head>
<title>Settings - TheDesk</title>
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../node_modules/materialize-css/dist/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="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.bg.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>Предпочитания</h4>
<ul class="collapsible" data-collapsible="accordion">
<li>
<div class="collapsible-header">
<i class="material-icons">desktop_windows</i>Системни предпочитания
</div>
<div class="collapsible-body">
<h5>Езици</h5>
To translate with Crowdin, you have to login Crowdin and restart TheDesk when login is finished.<br>
<a onclick="changelang('ja')" class="pointer" style="margin-right:5px;">日本語</a><a onclick="changelang('en')" class="pointer" style="margin-right:5px;">English</a><a onclick="changelang('ps')" class="pointer" style="margin-right:5px;">Crowdin translate system(beta)</a><a onclick="changelang('bg')" class="pointer" style="margin-right:5px;">български</a><a onclick="changelang('cs')" class="pointer" style="margin-right:5px;">Česky</a><a onclick="changelang('de')" class="pointer" style="margin-right:5px;">Deutsch</a>
<h5>Внос и износ на предпочитания</h5>
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
style="width:100%; max-width:200px;">Износ</button>
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
style="width:100%; max-width:200px;">Внос</button>
<div id="envView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Тест за уведомяване</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<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" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Промяна</button>
</template><br>
</template>
</div>
<h5>Шрифт</h5>
Изберете любимия си шрифт с „Избор“ (само за Windows / macOS)<br>
<button class="btn waves-effect" style="width:100px;" onclick="font()">Избери</button><br>
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
<br>
<input type="text" style="width:150px" id="font">
<button class="btn waves-effect" style="width:100px;" onclick="settings()">Запази</button>
<br>
<h5>Папка за запазване</h5>
TheDesk ще използва това местоназначение, когато се опитва да запази снимки или да прави екранни снимки.<br>
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">Промяна</button>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">color_lens</i>Теми
</div>
<div class="collapsible-body">
<h4>Изберете тема</h4>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
<h4>Редактирайте и добавете персонализирани теми</h4>
<div style="width:300px" id="edit-selector" data-add="Добавяне на нов">
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
<option value="add_new">Добавяне на нов</option>
</select>
</div>
<h5>Име</h5>
<input type="text" style="width:300px" id="custom_name" placeholder="Име...">
<h5>Относно тази тема</h5>
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="Относно тази тема..."></textarea></div>
<h5>Цветова схема</h5>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>Компоненти на фона
<div id="color-picker0-wrap">
<div class="color-picker" id="color-picker0"></div>
</div>
<input type="hidden" id="color-picker0_value">
</div>
<div>
<h5>Secondary</h5>Цвят на фона
<div id="color-picker1-wrap">
<div class="color-picker" id="color-picker1"></div>
</div>
<input type="hidden" id="color-picker1_value">
</div>
<div>
<h5>Texts</h5>Цвят на текста
<div id="color-picker2-wrap">
<div class="color-picker" id="color-picker2"></div>
</div>
<input type="hidden" id="color-picker2_value">
</div>
<div>
<h5>Accent</h5>Фон на подсилването
<div id="color-picker3-wrap">
<div class="color-picker" id="color-picker3"></div>
</div>
<input type="hidden" id="color-picker3_value">
</div>
</div>
<button class="btn-large waves-effect" onclick="customComp()">Промяна</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Изтрий</button><br><br>
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
Споделете този код с друг TheDesk. Не споделяйте този код с MiAS.
<h4>Импортиране на персонализирани теми</h4>
Вземете още теми от <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br>
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Внос</button><br>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">reorder</i>Предпочитания за времевата линия
</div>
<div class="collapsible-body">
<div id="tlView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<label>
<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" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Промяна</button>
</template><br>
</template>
</div>
<h5>Персонализиран звук</h5>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(1)">Custom 1</button><span
id="c1-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(2)">Custom 2</button><span
id="c2-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(3)">Custom 3</button><span
id="c3-file"></span><br>
<button class="btn waves-effect" style="width:120px;" onclick="customSound(4)">Custom 4</button><span
id="c4-file"></span><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">send</i>Предпочитания за публикуване
</div>
<div class="collapsible-body">
<div id="postView">
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<label><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" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
</template>
<template v-else>
<template v-if="item.doubleText">
<template v-for="(textbox, j) in item.data">
<input type="text" v-model="textbox.setValue" type="radio" v-bind:id="textbox.id"
v-bind:style="{ width: textbox.width+'px'}" />{{textbox.text.after}}
</template>
</template>
<template v-else>
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
</template>
<button class="btn waves-effect" style="width:100px;"
v-on:click="complete(i)">Промяна</button>
</template><br>
</template>
</div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">keyboard</i>Keyboard shortcut Preferences
</div>
<div class="collapsible-body">
<h5>Easy inserter</h5>
Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша<br>
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">Запази</button><br><br>
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Запази</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;">Запази</button><br><br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">bookmark</i>Mute & Emphasis Preferences
</div>
<div class="collapsible-body">
<h5>Client Mute</h5>
<div id="mute-cli"></div>
<h5>Client Emphasis</h5>
Click client name on toots to toggle mute and emphasis.
<h5>Words Mute</h5>
Enter to set<br>
<div class="chips" id="wordmute" style="background-color:gray;"></div>
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">Запази</button>
<h5>Words Emphasis</h5>
Enter to set<br>
<div class="chips" id="wordemp" style="background-color:gray;"></div>
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">Запази</button>
<h5>Users Emphasis</h5>
Set on users data modals.
<span class="emphasized"> Use this color to emphasis </span>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="fa fa-spotify"></i>Spotify and NowPlaying Preferences
</div>
<div class="collapsible-body">
<h5>NowPlaying Provider(Windows)</h5>
macOS и Linux не се поддържат. AIMP и iTunes бяха проверени от разработчика. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>. И MusicBee изисква CAD.<br>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<span>AIMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes"
value="ITUNES" />
<span>iTunes</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm"
value="MEDIAMONKEY" />
<span>MediaMonkey</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp"
value="WINAMP" />
<span>Winamp</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<span>WMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<span>WLM</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<span>CAD</span>
</label>
<br><br>
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
<h5>Account Connection</h5>
TheDesk save your data on thedesk.top server.<br>
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">Запази</button></div>
<a onclick="spotifyConnect()" class="btn waves-effect nex"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
class="fa fa-spotify left"></i>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>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Запази</button>
<h5>Attach an Artwork of Spotify</h5>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Да</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>Не</span>
</label>
<br>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">hearing</i>TTS(text to speech) Preferences
</div>
<div class="collapsible-body">
<h5>Speed</h5>
1-100(default:10)<br>
<p class="range-field"><input type="range" id="voicespeed" min="1" max="100" value="10"
style="width:500px; max-width:100%" /></p>
<h5>Pitch</h5>
0-100(default:50)<br>
<p class="range-field"><input type="range" id="voicepitch" min="0" max="100" value="50"
style="width:500px; max-width:100%" /></p>
<h5>Volume</h5>
0-100(default:100)<br>
<p class="range-field"><input type="range" id="voicevol" min="0" max="100" value="100"
style="width:500px; max-width:100%" /></p>
<h5>Test</h5>
<input type="text" style="width:350px" id="voicetxt" value="TheDesk is an open-source Mastodon client for PC.">
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
id="testplay">Play/Stop</button><br>
<br>
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">Запази</button>
</div>
</li>
</ul>
<br>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
class="material-icons left">undo</i>Back</a>
<br>
<br>Keyboard shortcuts
<li>Ctrl+1-9:Jump to n(1-9)th column</li>
<li>N:Open toot box</li>
<li>X:Toggle toot box</li>
<li>Ctrl+Enter:Post</li>
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
<li>Ctrl+Shift+S:Предпочитания</li>
<li>Ctrl+Shift+M:Account Manager</li>
<li>Ctrl+Shift+N:NowPlaying(Spotify)</li>
<li>Ctrl+Shift+P:Show profile of selecting</li>
<li>←/→:Show next or previous image</li>
<li>Mousewheel:Zoom a image</li>
<div class="hide kirishima">
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Изтриване на всички данни. Не можете да го отмените. Продължaвате?')){ localStorage.clear(); location.href='index.html'; }"><i
class="material-icons left">delete</i>Reset(Danger)</button><br><br>
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i
class="material-icons left">info</i>About TheDesk</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
class="material-icons left">web</i>Website</a>
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Поддръжка(Pixiv FANBOX)</a>
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2"
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>Поддръжка(Patreon)</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@cutls.com" 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@cutls.com</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">Check update</a><br>
<a href="oss.html">OSS License</a><br>
<span style="font-family:Open Sans;">Copyright &copy; TheDesk 2018
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@cutls.com">@Cutls@cutls.com</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/modal.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/login/logout.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>

552
app/view/bg/setting.vue.js Normal file
View File

@@ -0,0 +1,552 @@
var yesno = [
{
text: "Да",
value: "yes"
}, {
text: "Не",
value: "no"
}
];
var sound = [
{
text: "Няма",
value: "none"
}, {
text: "По подразбиране",
value: "default"
}, {
text: "Custom 1",
value: "c1"
}, {
text: "Custom 2",
value: "c2"
}, {
text: "Custom 3",
value: "c3"
}, {
text: "Custom 4",
value: "c4"
}
];
var envConstruction = [
{
id: "popup",
storage: "popup",
checkbox: false,
doubleText: false,
setValue: 0,
width: 50,
text: {
head: "Известие с изскачащ прозорец (за Windows)",
desc: 'Скрито ако е зададено на „0“',
after: "сек"
}
}, {
id: "notf",
storage: "nativenotf",
checkbox: true,
setValue: "yes",
text: {
head: "Вътрешно уведомяване",
desc: "Това не работи в Windows 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:13px">13px(абсолютна стойност)</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: "Показване на 1+, ако отговорите са повече от 1.",
value: "hidden"
}, {
text: "Показване на 1+, ако отговорите са повече от 1.",
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 в TL търсене",
desc: "",
checkbox: [
{
text: "Използване в обединената мрежа",
value: "all"
}, {
text: "Използване в локалната мрежа",
value: "local"
}
]
}
}, {
id: "via",
storage: "viashow",
checkbox: true,
setValue: "no",
text: {
head: "С показване",
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: "Не",
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 над or" }
}, {
id: "letters",
storage: "letters",
width: 50,
setValue: 7000,
text: { after: "букви над" }
}
],
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: 'Option:Set "full" to uncrop.',
after: "px"
}
}, {
id: "ticker",
storage: "ticker_ok",
checkbox: true,
setValue: "no",
text: {
head: "Enable #InstanceTicker",
desc: 'Show colorful stickers about the 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: "Анимация на времевата линия",
desc: "",
checkbox: yesno
}
}, {
id: "replySound",
storage: "replySound",
checkbox: true,
setValue: "none",
text: {
head: "Звук (Отговор)",
desc: "",
checkbox: sound
}
}, {
id: "favSound",
storage: "favSound",
checkbox: true,
setValue: "none",
text: {
head: "Звук(Фаворит)",
desc: "",
checkbox: sound
}
}, {
id: "btSound",
storage: "btSound",
checkbox: true,
setValue: "none",
text: {
head: "Звук(Подсилване)",
desc: "",
checkbox: sound
}
}, {
id: "followSound",
storage: "followSound",
checkbox: true,
setValue: "none",
text: {
head: "Звук(Харесване)",
desc: "",
checkbox: sound
}
}
];
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: "lines над or" }
}, {
id: "cw_letters",
storage: "cw_letters",
width: 50,
setValue: 7000,
text: { after: "букви над" }
}
],
text: {
head: "Предупреждение преди публикуване на дълга раздумка.",
desc: "Показване на диалогов прозорец, когато правите твърде дълъг скрит текст.",
}
}, {
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: "Публично",
value: "public"
}, {
text: "Скрито",
value: "unlisted"
}, {
text: "Частно",
value: "private"
}, {
text: "Директно",
value: "direct"
}, {
text: "Памет(запомнено на всеки сървър)",
value: "memory"
}, {
text: "Видимост по подразбиране (Зададени от предпочитанията в Mastodon сървъра)",
value: "useapi"
}
]
}
}, {
id: "img",
storage: "img",
checkbox: true,
setValue: "no-act",
text: {
head: "Предпочитания за публикуване на изображения",
desc: "",
checkbox: [
{
text: "Вмъкване на URL адрес на медия",
value: "url"
}, {
text: "Без вмъкване",
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: "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: "Публично",
value: "public"
}, {
text: "Скрито",
value: "unlisted"
}, {
text: "Частно",
value: "private"
}, {
text: "Директно",
value: "direct"
}, {
text: "Local Only",
value: "local",
kirishima: true,
kirishimaText: "非対応インスタンスでは「未収載」になります。"
}
]
}
}, {
id: "zero",
storage: "emoji-zero-width",
checkbox: true,
setValue: "normal",
setValue: "no",
text: {
head: "Zero-width space when inserting emojis",
desc: "",
checkbox: yesno
}
}
]

255
app/view/bg/update.html Normal file
View File

@@ -0,0 +1,255 @@
<!doctype html>
<html lang="bg">
<head>
<title>Update - TheDesk</title>
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
<!--
<script type="text/javascript">
var _jipt = [];
_jipt.push(['project', 'thedesk']);
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
</head>
<body>
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 10px;
text-align: right;
}
#start {
display: flex;
justify-content: center;
align-items: center;
width: 100vw;
height: calc(100vh - 2.5rem);
text-align: center;
}
#checkbox {
text-align: left;
}
a,
button,
input,
label,
i {
-webkit-app-region: no-drag;
}
#updskip {
display: flex;
justify-content: center;
align-items: center;
}
.skipbtn {
display: block;
float: left;
width: 200px;
height: 200px;
border: 1px solid;
margin-left: 5px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid;
overflow: hidden;
}
.skipbtn:hover {
background-color: #b3e5fc;
transition: all 0.3s ease-in-out;
}
#prog {
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
<div id="start">
<div id="box" class="show">
<h2>TheDesk</h2>
<p>Get latest TheDesk</p>
<span id="now"></span><b id="ver"></b><br>
<span id="det"></span><br>
<button class="waves-effect btn windows hide" onclick="update('install')"
style="margin-left:15px;">Installer ver.</button>
<button class="waves-effect btn windows hide" onclick="update('portable')"
style="margin-left:15px;">Portable ver.</button>
<button class="waves-effect btn linux hide" onclick="update('linux')"
style="margin-left:15px;">Start</button>
<button class="waves-effect btn mac hide" onclick="update('mac')"
style="margin-left:15px;">Start</button>
<br>
Some problems?<br>Please download on <a href="https://thedesk.top">Oficial HP</a>.
</div>
<div id="skipper" class="hide">
<h4>You may lose a cool experience!</h4>
Skip this update<br>
<div id="updskip">
<a onclick="window.close();" class="pointer skipbtn waves-effect waves-light">
<div>Until next TL loading</div>
</a>
<a onclick="nextv();" class="pointer skipbtn waves-effect waves-light">
<div>Until next version</div>
</a>
</div>
<a class="pointer waves-effect" onclick="skipper();" style="margin-top:5px">Continue updating</a>
</div>
<div id="dlnow" class="hide">
<h4>Downloading...</h4>
<h4 id="prog"></h4>
<div class="progress">
<div class="determinate" style="width: 0%"></div>
</div>
</div>
</div>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script>
function skipper() {
$("#dlnow").addClass("hide");
$("#box").toggleClass("show");
if ($("#box").hasClass("hide") && $("#skipper").hasClass("hide")) {
$("#skipper").removeClass("hide");
$("#skipper").addClass("show");
} else {
$("#box").toggleClass("hide");
$("#skipper").toggleClass("hide");
$("#skipper").toggleClass("show");
}
}
verck();
function update(sel) {
$("#box").toggleClass("show");
$("#box").toggleClass("hide");
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (sel == "install") {
if (bit == "x64") {
var url = json["winx64"];
var file = "TheDesk-setup.exe";
} else if (bit == "ia32") {
var url = json["winia32"];
var file = "TheDesk-setup-ia32.exe";
}
} else if (sel == "portable") {
if (bit == "x64") {
var url = json["winx64p"];
var file = "TheDesk.exe";
} else if (bit == "ia32") {
var url = json["winia32p"];
var file = "TheDesk-ia32.exe";
}
} else if (sel == "linux") {
if (bit == "x64") {
var url = json["linuxx64"];
var file = "TheDesk-linux-x64.zip";
} else if (bit == "ia32") {
var url = json["linuxia64"];
var file = "TheDesk-linux-ia32.zip";
}
} else if (sel == "mac") {
var url = json["mac"];
shell.openExternal(url);
return false;
}
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
postMessage(["sendSinmpleIpc", "quit"], "*")
}
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
}
function verck() {
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {
$('.linux').removeClass("hide")
} else if (platform == "darwin") {
$('.mac').removeClass("hide")
}
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
console.log(json);
if (platform == "win32") {
$("#ver").text(json.desk);
localStorage.setItem("next-ver", json.desk);
} else if (platform == "linux") {
$("#ver").text(json.desk_linux);
localStorage.setItem("next-ver", json.desk_linux);
} else if (platform == "darwin") {
$("#ver").text(json.desk_mac);
localStorage.setItem("next-ver", json.desk_mac);
}
var lang = "bg";
if (lang == "ja") {
$("#det").html(json.detail);
} else {
$("#det").html(json.detail_en);
}
$("#now").text(localStorage.getItem("ver"));
});
}
function nextv() {
localStorage.setItem("new-ver-skip", "true");
window.close();
}
function enc(ver) {
var ver = ver.replace(/\s/g, "");
var ver = ver.replace(/\(/g, "-");
var ver = ver.replace(/\)/g, "");
var ver = ver.replace(/\[/g, "_");
var ver = ver.replace(/\]/g, "");
return ver;
}
</script>