Add mute duration
This commit is contained in:
parent
4dfad6aa02
commit
a550841eeb
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -38,3 +38,4 @@ app/build.js
|
|||
app/view/make/make.js
|
||||
app/view/make/makeCli.ts
|
||||
app/.env
|
||||
app/view/make/index.generated.html
|
||||
|
|
|
@ -86,6 +86,7 @@ option {
|
|||
#imagemodal .modal-footer {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
height: 56px;
|
||||
}
|
||||
|
||||
#imagewrap {
|
||||
|
|
|
@ -1,172 +1,219 @@
|
|||
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
|
||||
|
||||
#his-data {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('../img/loading.svg');
|
||||
overflow-y: hidden;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('../img/loading.svg');
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
#his-data .btn .material-icons {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#his-data-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
#his-name {
|
||||
font-size: 1.5rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
#his-prof {
|
||||
width: 7.7rem;
|
||||
margin-right: 0.4rem;
|
||||
width: 7.7rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
|
||||
.his-float {
|
||||
overflow-y: scroll;
|
||||
padding: 0.4rem;
|
||||
overflow-y: scroll;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
#his-float-data {
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
#his-leftside {
|
||||
width: 28.4rem;
|
||||
max-width: 30vw;
|
||||
width: 28.4rem;
|
||||
max-width: 30vw;
|
||||
}
|
||||
|
||||
#his-float-timeline {
|
||||
max-width: 47.5rem;
|
||||
width: calc(100% - 28.4rem);
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
max-width: 47.5rem;
|
||||
width: calc(100% - 28.4rem);
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
#his-basic-prof {
|
||||
display: flex;
|
||||
min-height: 10rem;
|
||||
display: flex;
|
||||
min-height: 10rem;
|
||||
}
|
||||
|
||||
#his-field {
|
||||
vertical-align: baseline;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
vertical-align: baseline;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#his-field tr {
|
||||
height: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
.his-field-title {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
background-color: #757575;
|
||||
text-align: center;
|
||||
padding: 0.4rem;
|
||||
margin-bottom: 1px;
|
||||
width: 30%;
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
background-color: #757575;
|
||||
text-align: center;
|
||||
padding: 0.4rem;
|
||||
margin-bottom: 1px;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.his-field-content {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
padding-left: 0.4rem;
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
|
||||
.his-var-content a span.ellipsis:after {
|
||||
content: '...';
|
||||
content: '...';
|
||||
}
|
||||
|
||||
.his-var-content a:not(.mention) span:last-of-type {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#his-data a .rep_ct,
|
||||
#his-data a .rt_ct,
|
||||
#his-data a .fav_ct {
|
||||
display: inline !important;
|
||||
display: inline !important;
|
||||
}
|
||||
|
||||
#his-data-show {
|
||||
margin: 1.5rem;
|
||||
margin-left: 3.8rem;
|
||||
margin-right: 3.8rem;
|
||||
background-color: var(--his-data);
|
||||
height: calc(100% - 1.5rem);
|
||||
margin-bottom: 0;
|
||||
padding: 0.4rem;
|
||||
margin: 1.5rem;
|
||||
margin-left: 3.8rem;
|
||||
margin-right: 3.8rem;
|
||||
background-color: var(--his-data);
|
||||
height: calc(100% - 1.5rem);
|
||||
margin-bottom: 0;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
#his-data-wrap {
|
||||
display: flex;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.his-var-content {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 3.4rem);
|
||||
padding-bottom: 60px;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 3.4rem);
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
|
||||
#my-data-nav .btn {
|
||||
width: 10.6rem;
|
||||
width: 10.6rem;
|
||||
}
|
||||
|
||||
#my-data-nav .active-back {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#his-name .emojione,
|
||||
#his-name .emoji-img {
|
||||
width: 1.538rem;
|
||||
width: 1.538rem;
|
||||
}
|
||||
|
||||
#his-plus-action .btn {
|
||||
padding-right: 0.4rem;
|
||||
padding-left: 0.4rem;
|
||||
padding-right: 0.4rem;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
display: flex;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tabs .tab a {
|
||||
padding: 0.6rem 0.9rem;
|
||||
padding: 0.6rem 0.9rem;
|
||||
}
|
||||
|
||||
#his-des {
|
||||
max-height: 17.7rem;
|
||||
overflow-y: scroll;
|
||||
max-height: 17.7rem;
|
||||
overflow-y: scroll;
|
||||
user-select: text;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
#his-sign-action {
|
||||
border: 1px solid;
|
||||
border-radius: 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
border: 1px solid;
|
||||
border-radius: 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#his-sign-action .btn {
|
||||
flex-basis: calc(50% - 10.6px);
|
||||
|
||||
#his-sign-action .shrinker {
|
||||
margin-right: 0.5rem;
|
||||
flex-basis: calc(50% - 1rem);
|
||||
}
|
||||
|
||||
#his-sign-action .shrinker.btn {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#his-sign-action .dropdown-trigger {
|
||||
flex-basis: 100%;
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
#his-des .mention {
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#his-table {
|
||||
max-height: 11.538rem;
|
||||
overflow-y: scroll;
|
||||
max-height: 9.2rem;
|
||||
overflow-y: scroll;
|
||||
user-select: text;
|
||||
}
|
||||
|
||||
#his-float-blocked {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 2rem;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 2rem;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#hisdropdown {
|
||||
background-color: var(--bg);
|
||||
background-color: var(--bg);
|
||||
}
|
||||
|
||||
#hisdropdown li a {
|
||||
color: var(--text);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
#hisdropdown li:hover {
|
||||
background-color: var(--active);
|
||||
background-color: var(--active);
|
||||
}
|
||||
|
||||
#his-data-title-wrap {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.5rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.5rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#his-data-title .material-icons {
|
||||
position: relative;
|
||||
top: 5px;
|
||||
margin-right: 3px;
|
||||
position: relative;
|
||||
top: 5px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
#his-data-title a {
|
||||
color: white;
|
||||
color: white;
|
||||
}
|
|
@ -340,13 +340,23 @@ function muteDo(acct_id) {
|
|||
var id = $('#his-data').attr('user-id')
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
const days = parseInt($('#days_mute').val(), 10)
|
||||
const hours = parseInt($('#hours_mute').val(), 10)
|
||||
const mins = parseInt($('#mins_mute').val(), 10)
|
||||
const notf = $('#notf_mute:checked').val() === '1'
|
||||
let duration = days * 24 * 60 * 60 + hours * 60 + mins
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
var start = 'https://' + domain + '/api/mute/' + flagm
|
||||
var ent = { i: at, userId: id }
|
||||
var rq = JSON.stringify(ent)
|
||||
} else {
|
||||
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
|
||||
var rq = ''
|
||||
const q = {
|
||||
notifications: notf
|
||||
}
|
||||
if (duration > 0) q.duration = duration * 60
|
||||
if (days < 0 || hours < 0 || mins < 0) return Swal.fire('Invalid number')
|
||||
var rq = JSON.stringify(q)
|
||||
}
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
|
@ -371,6 +381,15 @@ function muteDo(acct_id) {
|
|||
}
|
||||
})
|
||||
}
|
||||
function muteMenu() {
|
||||
$('#muteDuration').toggleClass('hide')
|
||||
!$('#muteDuration').hasClass('hide') ? $('#his-des').css('max-height', '112px') : $('#his-des').css('max-height', '196px')
|
||||
}
|
||||
function muteTime(day, hour, min) {
|
||||
$('#days_mute').val(day)
|
||||
$('#hours_mute').val(hour)
|
||||
$('#mins_mute').val(min)
|
||||
}
|
||||
|
||||
//投稿削除
|
||||
function del(id, acct_id) {
|
||||
|
|
|
@ -76,7 +76,12 @@ function imgCont(type) {
|
|||
}
|
||||
}
|
||||
function imageXhr(id, key, murl) {
|
||||
let time = 0
|
||||
var startTime = new Date()
|
||||
const timer = setInterval(function() {
|
||||
time = time + 1
|
||||
$('#imgsec').text(time)
|
||||
}, 10)
|
||||
$('#imgmodal-progress div').removeClass('determinate')
|
||||
$('#imgmodal-progress div').addClass('indeterminate')
|
||||
$('#imgmodal-progress').removeClass('hide')
|
||||
|
@ -89,6 +94,7 @@ function imageXhr(id, key, murl) {
|
|||
if (event.lengthComputable) {
|
||||
var total = event.total
|
||||
var now = event.loaded
|
||||
$('#imgbyte').text(`${Math.floor(now / 1024)}KB/${Math.floor(total / 1024)}`)
|
||||
var per = (now / total) * 100
|
||||
$('#imgmodal-progress div').removeClass('indeterminate')
|
||||
$('#imgmodal-progress div').addClass('determinate')
|
||||
|
@ -147,6 +153,7 @@ function imageXhr(id, key, murl) {
|
|||
}
|
||||
element.src = b64
|
||||
var endTime = new Date()
|
||||
clearInterval(timer)
|
||||
var proctime = endTime.getTime() - startTime.getTime()
|
||||
$('#imgsec').text(proctime)
|
||||
$('#imgmodal').attr('src', b64)
|
||||
|
|
|
@ -190,7 +190,7 @@ function udg(user, acct_id, isSwal) {
|
|||
if (json.fields) {
|
||||
var table = ''
|
||||
if (json.fields.length > 0) {
|
||||
$('#his-des').css('max-height', '250px')
|
||||
$('#his-des').css('max-height', '196px')
|
||||
table = '<table id="his-field">'
|
||||
for (var i = 0; i < json.fields.length; i++) {
|
||||
var fname = json.fields[i].name
|
||||
|
|
56
app/view/make/components/bottomBarHtml.html
Normal file
56
app/view/make/components/bottomBarHtml.html
Normal file
|
@ -0,0 +1,56 @@
|
|||
<!--bottom-->
|
||||
<div id="bottom" class="reverse hide">
|
||||
<div class="leftside reverse">
|
||||
<div id="dambox">
|
||||
<button id="posttgl" class="btn waves-effect" style="width: 100%; height: 2.5rem; line-height: 0; margin: 0">
|
||||
<i class="material-icons" style="position: relative; top: 0.38rem; font-size: 1.5rem; text-align: center; margin-right: 0.76rem">edit</i>@@toot@@
|
||||
</button>
|
||||
</div>
|
||||
<div class="leftside reverse" id="group">
|
||||
<div class="btnsgroup">
|
||||
<a href="acct.html" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
|
||||
</a>
|
||||
<a href="setting.html" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
|
||||
</a>
|
||||
<a onclick="nano()" class="nex waves-effect pwa">
|
||||
<i class="material-icons" title="@@nanoDes@@TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
|
||||
</a>
|
||||
<a onclick="menu()" class="nex waves-effect">
|
||||
<i class="material-icons" title="@@menu@@">apps</i>
|
||||
</a>
|
||||
<span id="fukidashi">@@hereAddColumns@@</span>
|
||||
</div>
|
||||
<a href="https://thedesk.top/bugs/?lang=@@lang@@" target="_blank" class="waves-effect bgReport" draggable="false" title="Feeling unlucky"> @@foundBug@@ </a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div id="tips-menu">
|
||||
<div class="btnsgroup" style="height: 2.61rem">
|
||||
<span class="grouptitle">Tips:</span>
|
||||
<a onclick="tips('ver')" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="@@verTips@@" data-trans-title="ver">info</i>
|
||||
</a>
|
||||
<a onclick="tips('clock')" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="@@clockTips@@" data-trans-title="clock">access_time</i>
|
||||
</a>
|
||||
<a onclick="tips('memory')" class="nex waves-effect pwa">
|
||||
<i class="material-icons nex" title="@@ramTips@@" data-trans-title="memory">memory</i>
|
||||
</a>
|
||||
<a onclick="tips('trend')" class="nex waves-effect imasonly" style="display: none">
|
||||
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
|
||||
</a>
|
||||
<a onclick="tips('spotify')" class="nex waves-effect">
|
||||
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tips" class="hide">
|
||||
<a onclick="tipsToggle()" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="@@changeTips@@" data-trans-title="tips">bubble_chart</i>
|
||||
</a>
|
||||
<div id="tips-text" style="width: 23rem; line-height: 1rem"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
121
app/view/make/components/index.html
Normal file
121
app/view/make/components/index.html
Normal file
|
@ -0,0 +1,121 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="@@lang@@">
|
||||
<head>
|
||||
<script type="text/javascript" src="../../js/ui/theme.js"></script>
|
||||
<link href="../../css/themes.css" type="text/css" rel="stylesheet" />
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
|
||||
<link href="../../@@node_base@@/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../../css/tl.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../../css/post.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../../css/sort.css" rel="stylesheet" type="text/css" />
|
||||
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet" />
|
||||
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
|
||||
<meta charset="utf-8" />
|
||||
@@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@@ @@pwa@@ @@store@@
|
||||
</head>
|
||||
|
||||
<body class="@@pwaClass@@">
|
||||
<script>
|
||||
var ver = '@@versionLetter@@'
|
||||
var gitHash = '@@gitHash@@'
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//var ver="beta";
|
||||
var acct_id = 0
|
||||
var tlid = 0
|
||||
</script>
|
||||
@@preTL@@ @@starterAndDragHandler@@ @@postBox@@ @@tootModal@@ @@userDataModal@@ @@mediaModal@@ @@releaseNote@@
|
||||
<!--PiP-->
|
||||
<div id="pip" class="hide pip-bottom pip-left">
|
||||
<i class="material-icons pip-horiz pointer" onclick="pipHoriz()">chevron_right</i>
|
||||
<i class="material-icons pip-vert pointer" onclick="pipVert()">expand_less</i>
|
||||
<i class="material-icons pointer" onclick="endPip()">close</i>
|
||||
<div id="pip-content"></div>
|
||||
</div>
|
||||
@@menuHtml@@
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
<div id="something-wrong">
|
||||
<img src="../../img/thinking.svg" style="width: 150px; margin: 5px; display: none" draggable="false" />
|
||||
<div class="stw" style="display: none">@@helloTheDesk@@</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@bottomBarHtml@@ @@supportMe@@
|
||||
<!--左下メッセージ-->
|
||||
<div id="message"></div>
|
||||
<!--Radio Happy(Yui) Taku Inoue-->
|
||||
<audio src="" id="radio"></audio>
|
||||
<!--JS-->
|
||||
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/native.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/plugin.js"></script>
|
||||
<script type="text/javascript" src="../../@@node_base@@/materialize-css/dist/js/materialize.js"></script>
|
||||
<script type="text/javascript" src="../../@@node_base@@/grapheme-splitter/index.js"></script>
|
||||
<script type="text/javascript" src="../../@@node_base@@/lodash/lodash.min.js"></script>
|
||||
<script type="text/javascript" src="main.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/time.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/version.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
|
||||
<script type="text/javascript" src="../../js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/tips.js"></script>
|
||||
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
|
||||
<script type="text/javascript" src="../../js/common/about.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/dm.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/scroll.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/announParse.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/tl.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/card.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/parse.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/poll.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/notification.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/datails.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/mix.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/src.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/directory.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/filter.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/tag.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/list.js"></script>
|
||||
<script type="text/javascript" src="../../js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/post-box.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/layout.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/emoji.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/instance.js"></script>
|
||||
<script type="text/javascript" src="../../js/login/login.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/img.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/pip.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/sort.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/post.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/secure.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/img.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/status.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/suggest.js"></script>
|
||||
<script type="text/javascript" src="../../js/post/bb-md.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/his-data.js"></script>
|
||||
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
|
||||
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
|
||||
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script>
|
||||
<script type="text/javascript" src="../../js/platform/end.js"></script>
|
||||
<script type="text/javascript" src="../../js/ui/menu.js"></script>
|
||||
</body>
|
||||
</html>
|
12
app/view/make/components/index.json
Normal file
12
app/view/make/components/index.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
[
|
||||
"bottomBarHtml",
|
||||
"mediaModal",
|
||||
"menuHtml",
|
||||
"postBox",
|
||||
"preTL",
|
||||
"releaseNote",
|
||||
"starterAndDragHandler",
|
||||
"supportMe",
|
||||
"tootModal",
|
||||
"userDataModal"
|
||||
]
|
54
app/view/make/components/mediaModal.html
Normal file
54
app/view/make/components/mediaModal.html
Normal file
|
@ -0,0 +1,54 @@
|
|||
<!-- Modal Structure Image-->
|
||||
<div id="imagemodal" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div id="imagewrap">
|
||||
<img src="" id="imgmodal" />
|
||||
</div>
|
||||
<div class="progress nomargin hide transparent" id="imgmodal-progress">
|
||||
<div class="indeterminate"></div>
|
||||
</div>
|
||||
<br />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div id="imginfo">
|
||||
<span id="imgprog"></span>% <br />
|
||||
<span id="imgsec"></span>ms <br /><span id="imgbyte"></span>KB
|
||||
</div>
|
||||
<a class="waves-effect white-text" onclick="zoom(2)">
|
||||
<i class="material-icons">zoom_in</i>
|
||||
</a>
|
||||
<a class="waves-effect white-text" onclick="zoom(0.5)">
|
||||
<i class="material-icons">zoom_out</i>
|
||||
</a>
|
||||
<a class="waves-effect white-text" onclick="rotate(false)">
|
||||
<i class="material-icons">rotate_90_degrees_ccw</i>
|
||||
</a>
|
||||
<button class="btn waves-effect blue" onclick="copyImgUrl()" title="@@copyURL@@">
|
||||
<i class="material-icons">link</i>
|
||||
</button>
|
||||
<button class="btn waves-effect purple" onclick="dlImg()">
|
||||
<i class="material-icons">file_download</i>
|
||||
</button>
|
||||
<button class="btn waves-effect brown" onclick="detFromImg()" title="@@thisToot@@">
|
||||
<i class="material-icons">pageview</i>
|
||||
</button>
|
||||
<button class="btn waves-effect orange" onclick="imgCont('prev')" id="image-prev">
|
||||
<i class="material-icons">keyboard_arrow_left</i>
|
||||
</button>
|
||||
<button class="btn waves-effect orange" onclick="imgCont('next')" id="image-next">
|
||||
<i class="material-icons">keyboard_arrow_right</i>
|
||||
</button>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">
|
||||
<i class="material-icons">close</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal Structure Video-->
|
||||
<div id="videomodal" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<video src="" id="video" style="max-width: 100%; max-height: 100%" controls loop="true" autoplay="true" />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
|
||||
</div>
|
||||
</div>
|
229
app/view/make/components/menuHtml.html
Normal file
229
app/view/make/components/menuHtml.html
Normal file
|
@ -0,0 +1,229 @@
|
|||
<!--menu-->
|
||||
<div id="menu" class="z-depth-5" style="display: none">
|
||||
<div id="menu-bar" class="drag-bar"></div>
|
||||
<span class="cancel">
|
||||
<i class="material-icons waves-effect" onclick="menu()" title="@@closeThisBox@@(X)">cancel</i>
|
||||
</span>
|
||||
<div id="menu-wrapper">
|
||||
<div id="left-menu">
|
||||
<a class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"> <i class="material-icons" aria-hidden="true">add</i><span>@@addColumn@@</span> </a>
|
||||
<a class="waves-effect" onclick="sortMenu()" id="sortMenu"> <i class="material-icons" aria-hidden="true">sort</i><span>@@sortColumns@@</span> </a>
|
||||
<a class="waves-effect" onclick="searchMenu()" id="searchMenu"> <i class="material-icons" aria-hidden="true">search</i><span>@@search@@</span> </a>
|
||||
<a class="waves-effect" onclick="listMenu()" id="listMenu"> <i class="material-icons" aria-hidden="true">view_headline</i><span>@@list@@</span> </a>
|
||||
<a class="waves-effect" onclick="dirMenu()" id="dirMenu"> <i class="material-icons" aria-hidden="true">recent_actors</i><span>@@discover@@</span> </a>
|
||||
<a class="waves-effect" onclick="filterMenu()" id="filterMenu"> <i class="material-icons" aria-hidden="true">filter_list</i><span>@@filter@@</span> </a>
|
||||
<a class="waves-effect" onclick="help()" id="helpMenu"> <i class="material-icons" aria-hidden="true">help_outline</i><span>@@helpAndLogs@@</span> </a>
|
||||
<a class="waves-effect" onclick="location.href='index.html'"> <i class="material-icons" aria-hidden="true">refresh</i><span>@@f5@@</span> </a>
|
||||
</div>
|
||||
<div id="right-menu">
|
||||
<!--カラム追加-->
|
||||
<div id="add-box" class="hide menu-content">
|
||||
<div class="input-field">
|
||||
<span data-trans="your_acct">@@selectAcct@@</span>
|
||||
<br />
|
||||
<select id="add-acct-sel" class="acct-sel" style="color: black" onchange="addselCk()"></select>
|
||||
<label></label>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<div id="auth">
|
||||
<input type="hidden" value="local" id="type-sel" /> @@showThisTL@@
|
||||
<div id="tltype">
|
||||
<a class="type waves-effect active" data-type="local" title="@@local@@">
|
||||
<div><i class="material-icons" aria-hidden="true">people_outline</i></div>
|
||||
<span>@@local@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="local-media" title="@@localMedia@@">
|
||||
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
|
||||
<span>@@localMedia@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="home" title="@@home@@">
|
||||
<div><i class="material-icons" aria-hidden="true">home</i></div>
|
||||
<span>@@home@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="pub" title="@@fed@@">
|
||||
<div><i class="material-icons" aria-hidden="true">language</i></div>
|
||||
<span>@@fed@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="pub-media" title="@@fedMedia@@">
|
||||
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
|
||||
<span>@@fedMedia@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="dm" title="@@dm@@">
|
||||
<div><i class="material-icons" aria-hidden="true">mail_outline</i></div>
|
||||
<span>@@dm@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="mix" title="@@integratedTLDes@@">
|
||||
<div><i class="material-icons" aria-hidden="true">merge_type</i></div>
|
||||
<span>@@integratedTLDes@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="plus" title="@@localPlusDes@@">
|
||||
<div><i class="material-icons" aria-hidden="true">reply</i></div>
|
||||
<span>@@localPlusDes@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="notf" title="@@notf@@">
|
||||
<div><i class="material-icons" aria-hidden="true">notifications</i></div>
|
||||
<span>@@notf@@</span>
|
||||
</a>
|
||||
<a class="type waves-effect" data-type="bookmark" title="@@bookmark@@">
|
||||
<div><i class="material-icons" aria-hidden="true">bookmark</i></div>
|
||||
<span>@@bookmark@@</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="noauth" class="hide">
|
||||
@@showThisTL@@
|
||||
<input id="noauth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mstdn.jp" />
|
||||
</div>
|
||||
<div id="webview-add" class="hide">@@webviewWarn@@</div>
|
||||
</div>
|
||||
<button class="btn waves-effect blue" style="width: calc(100% - 0.7rem)" onclick="addColumn()" data-trans-i="add"><i class="material-icons left">add</i>@@add@@</button>
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<!--検索-->
|
||||
<div id="src-box" class="hide menu-content">
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<input id="src" type="text" class="validate" style="width: calc(100% - 150px)" />
|
||||
<label for="src" data-trans="src">@@search@@</label>
|
||||
<button class="btn waves-effect indigo" style="width: 36%; padding: 0; padding-left: 1.15rem" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left" style="margin: 0">search</i>@@search@@
|
||||
</button>
|
||||
<br />
|
||||
<br />
|
||||
</div>
|
||||
<div id="search">
|
||||
<div id="src-contents"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!--ディレクトリ-->
|
||||
<div id="dir-box" class="hide menu-content">
|
||||
<label>
|
||||
<input class="with-gap" onchange="dirChange('directory')" name="dirsug" type="radio" value="directory" checked />
|
||||
<span>@@directory@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="with-gap" onchange="dirChange('suggest')" name="dirsug" type="radio" value="suggest" />
|
||||
<span>@@frc@@</span>
|
||||
</label>
|
||||
<div class="input-field">
|
||||
<select id="dir-acct-sel" class="acct-sel" onchange="dirselCk()"></select>
|
||||
</div>
|
||||
<div id="dirNoAuth" class="hide">
|
||||
<input id="dirNoAuth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mastodon.social" />
|
||||
<button class="btn waves-effect indigo" style="width: 9.23rem; padding: 0; padding-left: 1.15rem" onclick="directory('directory')">
|
||||
<i class="material-icons left" style="margin: 0">search</i>@@show@@
|
||||
</button>
|
||||
</div>
|
||||
<div id="directoryConfig">
|
||||
<label>
|
||||
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="active" checked />
|
||||
<span>@@active@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="new" />
|
||||
<span>@@newcomer@@</span> </label
|
||||
><br />
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="local_only" value="true" onchange="directory('directory')" />
|
||||
<span>@@local_only@@</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="dir-contents"></div>
|
||||
<button class="btn waves-effect teal disabled" style="width: 100%" id="moreDir" onclick="directory('check', 'more')">@@more@@</button>
|
||||
</div>
|
||||
<!--並べ替え-->
|
||||
<div id="sort-box" class="hide menu-content">
|
||||
<ul id="sort"></ul>
|
||||
<div>
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width: 97.5%" data-trans-i="sort"><i class="material-icons left">sort</i>@@sortSet@@</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--リスト-->
|
||||
<div id="list-box" class="hide menu-content">
|
||||
<div class="input-field" style="width: calc(100% - 100px); float: left">
|
||||
<select id="list-acct-sel" class="acct-sel"></select>
|
||||
<label>@@selectAcct@@</label>
|
||||
</div>
|
||||
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
|
||||
<button class="btn waves-effect indigo" style="width: 80px" onclick="list()" data-trans-i="lists">@@listLocale@@</button>
|
||||
</div>
|
||||
<br /><br />
|
||||
<div id="lists"></div>
|
||||
<div id="lists-user"></div>
|
||||
<input type="text" style="width: calc(100% - 143px)" id="list-add" placeholder="@@name@@" />
|
||||
<button class="btn waves-effect" style="width: 120px" onclick="makeNewList()">@@makeNew@@</button>
|
||||
</div>
|
||||
<!--フィルター-->
|
||||
<div id="filter-box" class="hide menu-content">
|
||||
<div class="input-field" style="width: calc(100% - 100px); float: left">
|
||||
<select id="filter-acct-sel" class="acct-sel"></select>
|
||||
<label>@@selectAcct@@</label>
|
||||
</div>
|
||||
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
|
||||
<button class="btn waves-effect indigo" style="width: 80px" onclick="filter()" data-trans-i="filters">@@listLocale@@</button>
|
||||
</div>
|
||||
<div id="filtered-words"></div>
|
||||
<input type="hidden" id="filter-edit-id" />
|
||||
<input type="text" style="width: 150px" id="filter-add-word" placeholder="@@filterWord@@" /><br /> @@degree@@
|
||||
<br />
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
|
||||
<span>@@home@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
|
||||
<span>@@local@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
|
||||
<span>@@notf@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
|
||||
<span>@@conver@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="prof_filter" value="profiles" />
|
||||
<span>@@prof@@</span> </label
|
||||
><br />
|
||||
@@option@@
|
||||
<br />
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
|
||||
<span>@@matchWord@@</span>
|
||||
</label>
|
||||
<br />
|
||||
<span class="sml">@@warnMatchWord@@</span><br />
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
|
||||
<span>@@except@@</span>
|
||||
</label>
|
||||
<br />
|
||||
<span class="sml">@@exceptWorn@@</span><br /> @@avalableBefore@@ <span class="sml">@@warnAvBefore@@<b>@@warnAvBefore2@@</b></span
|
||||
><br /><br />
|
||||
<input type="number" style="width: 50px" id="days_filter" placeholder="d" value="0" />@@days@@
|
||||
<input type="number" style="width: 50px" id="hours_filter" placeholder="h" value="0" />@@hours@@
|
||||
<input type="number" style="width: 50px" id="mins_filter" placeholder="m" value="0" />@@mins@@<br />
|
||||
Quick: <a onclick="filterTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="filterTime(0,1,0)" class="pointer">1@@hours@@</a>/
|
||||
<a onclick="filterTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="filterTime(0,12,0)" class="pointer">12@@hours@@</a>/
|
||||
<a onclick="filterTime(1,0,0)" class="pointer">1@@days@@</a>/ <a onclick="filterTime(7,0,0)" class="pointer">7@@days@@</a>/
|
||||
<a onclick="filterTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
|
||||
<button class="btn waves-effect" style="width: 120px" onclick="makeNewFilter()" id="add-filter-btn">@@add@@</button><br />
|
||||
<span class="sml">@@warnOnIntegratedTL@@</span>
|
||||
</div>
|
||||
<!--ヘルプとログ-->
|
||||
<div id="help-box" class="hide menu-content">
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect" style="width: 97.5%">@@help@@</a><br /> @@contactwithlog@@
|
||||
<br />
|
||||
<textarea id="logs" style="height: 250px"></textarea><br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a onclick="about()" class="nex waves-effect pwa"> <i class="material-icons menu-icon">info</i>@@about@@ </a> |
|
||||
<a onclick="bottomReverse()" class="nex waves-effect"> <i class="material-icons menu-icon">swap_horiz</i>@@reverse@@ </a> |
|
||||
<a onclick="openRN()" class="nex waves-effect"> <i class="material-icons menu-icon">new_releases</i>Release Note </a>
|
||||
</div>
|
247
app/view/make/components/postBox.html
Normal file
247
app/view/make/components/postBox.html
Normal file
|
@ -0,0 +1,247 @@
|
|||
<div id="post-box" class="z-depth-5">
|
||||
<div id="post-bar" class="drag-bar"><span id="unreact">@@post-new@@</span><span id="addreact" class="hide">Reaction</span></div>
|
||||
<!--トゥートボックス-->
|
||||
<div id="left-side">
|
||||
<div class="row" style="margin-bottom: 0">
|
||||
<div class="" style="float: left">
|
||||
<a onclick="profShow()" style="vertical-align: -1.7rem" class="pointer mize">
|
||||
<img src="../../img/missing.svg" id="acct-sel-prof" title="@@showSelectProf@@(Ctrl+Shift+P)" data-trans-title="post_box_prof" style="width: 1.8rem" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="input-field mize" style="float: left; width: calc(100% - 1.8rem); margin-top: 0">
|
||||
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
|
||||
</div>
|
||||
<span class="cancel">
|
||||
<i class="material-icons waves-effect" onclick="hide()" title="@@closeThisBox@@(X)" data-trans-title="post_box_close">cancel</i>
|
||||
</span>
|
||||
<!--Markdown-->
|
||||
<div class="row" style="margin-bottom: 0">
|
||||
<div class="markdown mize hide">
|
||||
<div class="col s12">
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
|
||||
<i
|
||||
class="pointer setting fa fa-subscript waves-effect"
|
||||
onclick="markdown('__','yes','no','before')"
|
||||
title="下付き文字 テキストボックス内を選択してから押すと囲みます。"
|
||||
style="font-size: 1.5rem"
|
||||
></i>
|
||||
<i
|
||||
class="pointer setting fa fa-superscript waves-effect"
|
||||
onclick="markdown('_','yes','no','before')"
|
||||
title="上付き文字 テキストボックス内を選択してから押すと囲みます。"
|
||||
style="font-size: 1.5rem"
|
||||
></i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
|
||||
<span class="sml gray pointer waves-effect">
|
||||
<a onclick="mdToggle()">Markdownエディタを隠す</a>
|
||||
</span>
|
||||
<br />
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
|
||||
<input id="size" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" value="12" />px
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
|
||||
<input id="colorhex" style="width: calc(50% - 3.8rem); margin: 0; height: 1.8rem" type="color" />
|
||||
<br />
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
|
||||
<input id="linkt" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクテキスト" />
|
||||
<input id="link2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクアドレス" />
|
||||
<br />
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
|
||||
<input id="image" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="代替テキスト" />
|
||||
<input id="image2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="画像アドレス" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-field col s12" id="preview-field" style="margin-top: 0">
|
||||
<div id="md-preview"></div>
|
||||
<span class="sml gray pointer">
|
||||
<a onclick="previewEdit()">Edit</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="input-field col s12" id="toot-field" style="margin-top: 0; margin-bottom: 0">
|
||||
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom: 0" data-length="500"></textarea>
|
||||
|
||||
<div id="suggest"></div>
|
||||
<label for="textarea" data-trans="toot">@@toot@@</label>
|
||||
<br />
|
||||
<span class="sml gray pointer markdown mize" id="preview-btn">
|
||||
<a onclick="preview()">Preview</a>
|
||||
</span>
|
||||
<span class="sml gray pointer anti-markdown mize">
|
||||
<a onclick="mdToggle()">Markdownエディタを表示</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-top: 0; display: flex; justify-content: space-between">
|
||||
<i class="waves-effect gray material-icons" id="nsfw" title="@@nsfwDes@@" onclick="nsfw()">visibility_off</i>
|
||||
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1" id="vis-icon">public</i>
|
||||
<a class="waves-effect gray" id="cw" onclick="cw()" title="@@cwDes@@">CW</a>
|
||||
<span
|
||||
><span id="imgup"></span><span id="imgsel" class="pwa"><i class="waves-effect material-icons gray" onclick="fileselect()" title="@@selfile@@">photo_library</i></span></span
|
||||
>
|
||||
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="@@insertEmoji@@">tag_faces</i>
|
||||
<i class="waves-effect gray material-icons dropdown-trigger" data-target="dropdown2">more_vert</i>
|
||||
<i class="material-icons nex gray waves-effect" title="@@clearToot@@(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom: 0.4rem; padding: 0">
|
||||
<div id="taglist"></div>
|
||||
<div id="preview" class="mize"></div>
|
||||
<span class="sml mize"
|
||||
><span>@@replyMode@@</span>: <span id="rec">@@no@@</span>/<span>@@temp@@</span>:
|
||||
<span id="mec">@@nothing@@</span>
|
||||
<a onclick="stamp()" class="pointer pwa" title="@@stampWarn@@">@@stamp@@: <span id="stamp">Off</span></a> /@@poll@@:
|
||||
<span id="pollsta">@@no@@</span>
|
||||
<span id="vis" class="hide">public</span>
|
||||
</span>
|
||||
<br />
|
||||
<input type="text" id="cw-text" placeholder="@@cwtext@@" class="mize" style="margin: 0" />
|
||||
<div id="sch-box">
|
||||
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><a onclick="expPostMode()">Expire mode(beta)</a><br />
|
||||
<input type="datetime-local" id="sch-date" placeholder="@@schedule@@" class="datepicker" style="margin: 0" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 公開範囲 Dropdown Structure -->
|
||||
<ul id="dropdown1" class="dropdown-content">
|
||||
<li>
|
||||
<a onclick="vis('public')">@@publicJP@@(Public)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('unlisted')">@@unlistedJP@@(Unlisted)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('private')" id="private-button">@@privateJP@@(Private)</a>
|
||||
</li>
|
||||
<li id="limited-button" class="hide">
|
||||
<a onclick="vis('limited')">限定公開(Limited)</a>
|
||||
</li>
|
||||
<li id="local-button" class="hide">
|
||||
<a onclick="vis('local')">@@localJP@@(Local)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('direct')" class="disabled direct">@@directJP@@(Direct)</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- その他 Dropdown Structure -->
|
||||
<ul id="dropdown2" class="dropdown-content">
|
||||
<li>
|
||||
<a onclick="nowplaying('spotify');">NowPlaying (Spotify)</a>
|
||||
</li>
|
||||
<li class="mac">
|
||||
<a onclick="nowplaying('itunes');">NowPlaying (iTunes macOS)</a>
|
||||
</li>
|
||||
<li class="mac hide" id="ccnp">
|
||||
<a onclick="nowplaying('anynp');">NowPlaying (コントロールセンター)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="nowplaying('lastFm');">NowPlaying (Last.fm)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="schedule();">@@schedule@@</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="pollToggle();">@@poll@@</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="draftToggle();">@@draft@@</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!--hidden area-->
|
||||
<input type="hidden" id="reply" />
|
||||
<input type="hidden" id="ideKey" />
|
||||
<input type="hidden" id="quote" />
|
||||
<input type="hidden" id="media" />
|
||||
<!--END hidden area-->
|
||||
</div>
|
||||
<div id="toot-btn-field">
|
||||
<button class="btn waves-effect unmize toot-btn-group" onclick="post()" id="toot-post-btn">@@toot@@</button>
|
||||
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn">
|
||||
<i class="material-icons" id="toot-sec-icon" title="@@sectoot@@">lock_open</i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="right-side">
|
||||
<div id="draft" class="hide right-side-content"></div>
|
||||
<!--絵文字ピッカー-->
|
||||
<div id="emoji" class="hide right-side-content">
|
||||
<span class="gray sml"
|
||||
>@@emojiWarn@@
|
||||
<a onclick="emojiGet('true')" class="pointer">@@refreshEmoji@@</a>
|
||||
<br />
|
||||
</span>
|
||||
<div id="emoji-list" class="" style=""></div>
|
||||
<div class="emoji-control center">
|
||||
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('before')" id="emoji-before">
|
||||
<i class="material-icons">navigate_before</i>
|
||||
</button>
|
||||
<span id="emoji-count"></span>/
|
||||
<span id="emoji-sum"></span>
|
||||
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('next')" id="emoji-next">
|
||||
<i class="material-icons">navigate_next</i>
|
||||
</button>
|
||||
</div>
|
||||
<div id="default-emoji">
|
||||
<span id="now-emoji"></span>@@showThisEmoji@@<br /><span class="gray sml">@@emojiInsertWarn@@</span>
|
||||
<br />
|
||||
<a onclick="customEmoji()" class="pointer waves-effect" title="@@customEmoji@@">
|
||||
<i class="material-icons">add</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('people')" class="pointer waves-effect" title="@@peopleEmoji@@">
|
||||
<i class="material-icons">people</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('nature')" class="pointer waves-effect" title="@@natureEmoji@@">
|
||||
<i class="material-icons">local_florist</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('food')" class="pointer waves-effect" title="@@foodEmoji@@">
|
||||
<i class="material-icons">restaurant</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('activity')" class="pointer waves-effect" title="@@activityEmoji@@">
|
||||
<i class="material-icons">directions_run</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('place')" class="pointer waves-effect" title="@@placeEmoji@@">
|
||||
<i class="material-icons">directions_car</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('object')" class="pointer waves-effect" title="@@thingsEmoji@@">
|
||||
<i class="material-icons">attach_file</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('symbol')" class="pointer waves-effect" title="@@symbolEmoji@@">
|
||||
<i class="material-icons">gesture</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('flag')" class="pointer waves-effect" title="@@flagsEmoji@@">
|
||||
<i class="material-icons">flag</i>
|
||||
</a>
|
||||
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
|
||||
<i class="fab fa-fort-awesome"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!--Poll UI-->
|
||||
<div id="poll" class="hide right-side-content">
|
||||
<div id="mastodon-poll" class="poll-provider">
|
||||
<input type="text" class="mastodon-choice" placeholder="@@choice@@1" />
|
||||
<input type="text" class="mastodon-choice" placeholder="@@choice@@2" />
|
||||
<input type="text" class="mastodon-choice" placeholder="@@choice@@3" />
|
||||
<input type="text" class="mastodon-choice" placeholder="@@choice@@4" />
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
|
||||
<span>@@pollmulti@@</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
|
||||
<span>@@polluntil@@</span>
|
||||
</label>
|
||||
<input type="number" style="width: 50px" id="days_poll" placeholder="d" value="0" />@@days@@
|
||||
<input type="number" style="width: 50px" id="hours_poll" placeholder="h" value="0" />@@hours@@
|
||||
<input type="number" style="width: 50px" id="mins_poll" placeholder="m" value="6" />@@mins@@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
17
app/view/make/components/preTL.html
Normal file
17
app/view/make/components/preTL.html
Normal file
|
@ -0,0 +1,17 @@
|
|||
<textarea id="copy" style="top: -100px; position: fixed"></textarea>
|
||||
<canvas id="canvas" style="top: -100px; position: fixed; width: 32px; height: 32px" width="32" height="32"></canvas>
|
||||
<div id="pageSrc" class="hide z-depth-2">
|
||||
<div class="srcQ"></div>
|
||||
<div class="pageSrcBtn pointer" onclick="doSrc('web')">@@webSrc@@</div>
|
||||
<div class="pageSrcBtn pointer" onclick="doSrc('ts')">@@tsSrc@@</div>
|
||||
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">@@copy@@</div>
|
||||
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">@@toot@@</div>
|
||||
</div>
|
||||
<div class="hide z-depth-2" id="tagContextMenu">
|
||||
<a onclick="doTShowBox('tl')" class="pointer firstTCM" id="tagCMTL"></a>
|
||||
<a onclick="doTShowBox('toot')" class="pointer" id="tagCMToot"></a>
|
||||
<a onclick="doTShowBox('pin')" class="pointer" id="tagCMPin"></a>
|
||||
<a onclick="doTShowBox('f')" class="pointer lastTCM" title="add it to Featured tags" id="tagCMFeature">Feature</a>
|
||||
</div>
|
||||
<div id="offline" class="hide">@@nowOffline@@</div>
|
||||
<div id="re-online" class="hide">@@reOnline@@</div>
|
38
app/view/make/components/releaseNote.html
Normal file
38
app/view/make/components/releaseNote.html
Normal file
|
@ -0,0 +1,38 @@
|
|||
<!-- Modal Structure Release Note-->
|
||||
<div id="releasenote" class="modal modal-fixed-footer scr">
|
||||
<div class="modal-content">
|
||||
<h3>TheDesk</h3>
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br />
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br />
|
||||
<br />
|
||||
<div id="release-22-3-0_Koume" class="release-do" style="display: none">
|
||||
Pixiv FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br /> 困ったときは、 <a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note 22.3.0 (Koume)</h5>
|
||||
<!--上のdivのidや1行上のところも変えてね-->
|
||||
・フォローサジェストをv2にした
|
||||
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・アカウントの参照を高速化
|
||||
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・環境設定の数値が変更できないバグ
|
||||
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・デザインの一部変更
|
||||
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・文字を選択して右クリックで検索
|
||||
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br /> ・コードレスセットアップを再起動無しに実装
|
||||
<a onclick="udgEx('Cutls@1m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br />
|
||||
</div>
|
||||
<div id="release-en" style="display: none">
|
||||
<h5>Let's make it native!</h5>
|
||||
<a href="https://translate.thedesk.top">Crowdin translation project</a>
|
||||
</div>
|
||||
<br /><br />
|
||||
<h3>@@supportme@@</h3>
|
||||
@@TheDeskDes@@<br />
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
|
||||
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
|
||||
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> @@AWLSupport@@ </a>
|
||||
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
|
||||
<br />
|
||||
<img src="../../img/kyash.png" width="100" /><br />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
|
||||
</div>
|
||||
</div>
|
50
app/view/make/components/starterAndDragHandler.html
Normal file
50
app/view/make/components/starterAndDragHandler.html
Normal file
|
@ -0,0 +1,50 @@
|
|||
<div id="tl">
|
||||
<!--TL-->
|
||||
<!--スターター-->
|
||||
<div id="start" class="scr">
|
||||
<div id="start-content">
|
||||
<h3 class="center">@@demoBottomBtns@@</h3>
|
||||
@@lookAtBottom@@
|
||||
<div id="demobottom">
|
||||
<button class="btn waves-effect" style="width: 23rem; height: 2.5rem; line-height: 0; margin: 0; background-color: var(--active)">
|
||||
<i class="material-icons" style="position: relative; top: 0.4rem; font-size: 1.5rem; text-align: center; margin-right: 0.7rem">edit</i>@@toot@@
|
||||
</button>
|
||||
<div class="leftside reverse" id="demogroup">
|
||||
<div class="btnsgroup" style="margin-left: 0.4rem">
|
||||
<a href="#" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
|
||||
</a>
|
||||
<a href="#" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
|
||||
</a>
|
||||
<a class="nex waves-effect">
|
||||
<i class="material-icons" title="@@nanoDes@@TheDesk Nano">remove_from_queue</i>
|
||||
</a>
|
||||
<a class="nex waves-effect" id="list-tgl">
|
||||
<i class="material-icons" title="@@menu@@">apps</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<i class="material-icons nex big-icon">account_circle</i>: @@acctMan@@<br /> @@acctManDesc@@
|
||||
<hr />
|
||||
<i class="material-icons nex">settings</i>: @@setting@@<br /> @@settingDesc@@
|
||||
<hr />
|
||||
<i class="material-icons nex">remove_from_queue</i>: TheDesk Nano @@nanoDes@@<br /> @@nanoDescPlus@@
|
||||
<hr />
|
||||
<i class="material-icons nex">apps</i>: @@menu@@<br /> @@menuDesc@@
|
||||
<br />
|
||||
<br />
|
||||
<button class="btn waves-effect" onclick="closeStart()" style="width: 300px">@@close@@</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--ドラッグハンドラ-->
|
||||
<div id="drag">
|
||||
<div id="drag-content">
|
||||
@@draghere@@
|
||||
<br />
|
||||
<button class="btn waves-effect" onclick="closedrop()">@@close@@</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
33
app/view/make/components/supportMe.html
Normal file
33
app/view/make/components/supportMe.html
Normal file
|
@ -0,0 +1,33 @@
|
|||
<!--Support me-->
|
||||
<div id="support-btm" class="z-depth-4 hide scr">
|
||||
<div id="support-btm-ja">
|
||||
<h5>ご支援いただけませんか?</h5>
|
||||
(これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)<br /> あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br /> 乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。
|
||||
<br />
|
||||
<br /> TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。
|
||||
<br />
|
||||
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。<br />
|
||||
<b>@@TheDeskDes@@</b>
|
||||
</div>
|
||||
<div id="support-btm-en" class="hide">
|
||||
<h5>Support me</h5>
|
||||
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br />
|
||||
<b>@@TheDeskDes@@</b>
|
||||
</div>
|
||||
<div id="support-btm-middle">
|
||||
<h5>@@monthly@@</h5>
|
||||
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
|
||||
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
|
||||
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
|
||||
</div>
|
||||
<div id="support-btm-right">
|
||||
<h5>@@once@@</h5>
|
||||
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> @@AWLSupport@@ </a>
|
||||
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
|
||||
<br />
|
||||
<img src="../../img/kyash.png" width="100" /><br />
|
||||
</div>
|
||||
<div id="support-btm-close">
|
||||
<button class="btn waves-effect" style="width: 100%" onclick="closeSupport()" id="add-filter-btn">@@close@@</button>
|
||||
</div>
|
||||
</div>
|
96
app/view/make/components/tootModal.html
Normal file
96
app/view/make/components/tootModal.html
Normal file
|
@ -0,0 +1,96 @@
|
|||
<!-- Modal Structure Tootdata-->
|
||||
<div id="tootmodal" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<ul class="collapsible" id="det-col">
|
||||
<li class="dm-hide contextTool">
|
||||
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@afterLTL@@</div>
|
||||
<div class="collapsible-body toot-reset" id="ltl-after"></div>
|
||||
</li>
|
||||
<li class="dm-hide contextTool">
|
||||
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@afterUTL@@</div>
|
||||
<div class="collapsible-body toot-reset" id="user-after"></div>
|
||||
</li>
|
||||
<li class="dm-hide contextTool">
|
||||
<div class="collapsible-header"><i class="material-icons">language</i>@@afterFTL@@</div>
|
||||
<div class="collapsible-body toot-reset" id="ftl-after"></div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">arrow_upward</i>@@contextBefore@@
|
||||
<i class="material-icons red-text hide" id="toot-reply-new">new_releases</i>
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-reply"></div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header" id="activator"><i class="material-icons">more_horiz</i>@@thisToot@@</div>
|
||||
<div class="collapsible-body">
|
||||
<div class="toot-reset" id="toot-this"></div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">arrow_downward</i>@@contextAfter@@
|
||||
<i class="material-icons red-text hide" id="toot-after-new">new_releases</i>
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-after"></div>
|
||||
</li>
|
||||
<li class="dm-hide contextTool">
|
||||
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@beforeLTL@@</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-before"></div>
|
||||
</li>
|
||||
<li class="dm-hide contextTool">
|
||||
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@beforeUTL@@</div>
|
||||
<div class="collapsible-body toot-reset" id="user-before"></div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header"><i class="material-icons">star</i>@@favedPeople@@</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-fav"></div>
|
||||
</li>
|
||||
<li class="dm-hide">
|
||||
<div class="collapsible-header"><i class="text-darken-3 false fas fa-retweet"></i>@@btedPeople@@</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-rt"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="dm-hide" style="max-width: 450px">
|
||||
@@useOtherAcct1@@(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>@@useOtherAcct2@@)<br />
|
||||
<div class="row">
|
||||
<div class="col s6">
|
||||
<select id="status-acct-sel" class="acct-sel"></select>
|
||||
</div>
|
||||
<div class="col s2">
|
||||
<button class="dropdown-button btn waves-effect" style="width: 100%" onclick="staEx('reply')">
|
||||
<i class="fas fa-share"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col s2">
|
||||
<button class="dropdown-button btn waves-effect indigo" style="width: 100%" onclick="staEx('rt')">
|
||||
<i class="fas fa-retweet"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col s2">
|
||||
<button class="dropdown-button btn waves-effect orange" style="width: 100%" onclick="staEx('fav')">
|
||||
<i class="fas fa-star"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@btWithVis@@<br />
|
||||
<button class="btn waves-effect darken-3 toot-btn-group purple" onclick="boostWith('public')">
|
||||
<i class="material-icons">public</i>
|
||||
</button>
|
||||
<button class="btn waves-effect darken-3 toot-btn-group blue" onclick="boostWith('unlisted')">
|
||||
<i class="material-icons">lock_open</i>
|
||||
</button>
|
||||
<button class="btn waves-effect darken-3 toot-btn-group orange" onclick="boostWith('private')">
|
||||
<i class="material-icons">lock</i>
|
||||
</button>
|
||||
<div id="toot-tools"></div>
|
||||
<div id="toot-after"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">@@openBrowser@@</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">@@copyURL@@</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">@@embed@@</a>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
|
||||
</div>
|
||||
</div>
|
210
app/view/make/components/userDataModal.html
Normal file
210
app/view/make/components/userDataModal.html
Normal file
|
@ -0,0 +1,210 @@
|
|||
<!-- Modal Structure Userdata -->
|
||||
<div id="his-data" class="modal bottom-sheet modal-fixed-footer" style="max-height: 750px; height: 90%">
|
||||
<div id="his-data-content" class="modal-content" style="padding-bottom: 0; overflow-y: hidden">
|
||||
<div id="his-data-show">
|
||||
<div id="his-data-wrap">
|
||||
<div class="his-float" id="his-float-data">
|
||||
<div id="his-leftside">
|
||||
<div id="his-basic-prof">
|
||||
<div>
|
||||
<img src="../../img/loading.svg" id="his-prof" draggable="false" />
|
||||
</div>
|
||||
<div>
|
||||
<span id="his-name">Loading...</span>
|
||||
<span class="gray">@</span><span id="his-acct" class="gray"></span><br />
|
||||
<span class="gray" id="his-relation"></span>
|
||||
<br />
|
||||
<span class="cbadge"> <span id="his-sta"></span>@@toots@@ </span>
|
||||
<span class="cbadge"
|
||||
>@@follow@@:
|
||||
<span id="his-follow"></span>
|
||||
</span>
|
||||
<span class="cbadge">@@follower@@: <span id="his-follower"></span> </span><br />
|
||||
<span class="cbadge" style="max-width: 11.5rem; width: 11.5rem"
|
||||
>Since:
|
||||
<span id="his-since"></span>
|
||||
</span>
|
||||
<span class="cbadge" id="his-bot">[bot]</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="his-proof-prof"></div>
|
||||
<div id="his-des" data-acct=""></div>
|
||||
<br />
|
||||
<div id="his-table"></div>
|
||||
<br />
|
||||
<div id="his-sign-action">
|
||||
<a href="#!" class="waves-effect waves-green btn" onclick="follow()" style="flex-basis: 100%" id="his-follow-btn"
|
||||
><i class="material-icons">people</i><span id="his-follow-btn-text">@@follow@@</span></a
|
||||
>
|
||||
<a href="#!" class="waves-effect waves-green btn blue shrinker" onclick="muteMenu()" id="his-mute-btn"
|
||||
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
|
||||
</a>
|
||||
<a href="#!" class="waves-effect waves-green btn red shrinker" onclick="block()" id="his-block-btn"
|
||||
><i class="material-icons">block</i><span id="his-block-btn-text">@@block@@</span></a
|
||||
>
|
||||
<a class="dropdown-trigger btn waves-effect grey" href="#" data-target="actiondropdown"> <i class="material-icons">more_vert</i>@@more@@</a>
|
||||
</div>
|
||||
<div id="muteDuration" class="hide">
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="notf_mute" value="1" />
|
||||
<span>@@notfMute@@</span>
|
||||
</label>
|
||||
<br />
|
||||
@@zeroSetToInfinity@@<br />
|
||||
Quick: <a onclick="muteTime(0,0,5)" class="pointer">5@@mins@@</a>/ <a onclick="muteTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="muteTime(0,1,0)" class="pointer">1@@hours@@</a>/
|
||||
<a onclick="muteTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="muteTime(1,0,0)" class="pointer">1@@days@@</a>/
|
||||
<a onclick="muteTime(3,0,0)" class="pointer">3@@days@@</a>/ <a onclick="muteTime(7,0,0)" class="pointer">7@@days@@</a>
|
||||
<a onclick="muteTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
|
||||
<input type="number" style="width: 62px" id="days_mute" placeholder="d" value="0" />@@days@@
|
||||
<input type="number" style="width: 62px" id="hours_mute" placeholder="h" value="0" />@@hours@@
|
||||
<input type="number" style="width: 62px" id="mins_mute" placeholder="m" value="0" />@@mins@@
|
||||
<a href="#!" class="waves-effect waves-green btn blue" onclick="muteDo()" id="his-mute-btn"
|
||||
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
|
||||
</a>
|
||||
</div>
|
||||
<!-- Dropdown Structure -->
|
||||
<ul id="actiondropdown" class="dropdown-content">
|
||||
<li onclick="empUser()">
|
||||
<a title="@@empUser@@"><i class="material-icons">highlight</i>@@empUser@@</a>
|
||||
</li>
|
||||
<li onclick="pinUser()" class="only-his-data">
|
||||
<a title="@@endorse@@"><i class="material-icons">thumb_up</i>@@endorse@@</a>
|
||||
</li>
|
||||
<li onclick="profbrws()" id="his-openin">
|
||||
<a title="@@openinbrowser@@"><i class="material-icons">open_in_browser</i>@@openinbrowser@@</a>
|
||||
</li>
|
||||
<li onclick="setMain()" class="only-my-data" id="his-main-acct">
|
||||
<a title="@@mainacct@@"><i class="material-icons">grade</i>@@mainacct@@</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="his-float" id="his-float-timeline">
|
||||
<div id="my-data-nav">
|
||||
<a go="#his-tl" title="@@timeline@@" class="btn active-back column-first anc-link waves-effect"><i class="material-icons">timeline</i>@@timeline@@</a>
|
||||
<a go="#his-follow-list" title="@@follow@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>→@@follow@@</a>
|
||||
<a go="#his-follower-list" title="@@follower@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>←@@follower@@</a>
|
||||
<a go="#his-fav-list" title="@@favRegist@@" class="btn only-my-data anc-link waves-effect"> <i class="material-icons">star</i>@@favRegist@@</a>
|
||||
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i class="material-icons">more_vert</i>@@more@@</a>
|
||||
<div id="his-data-title-wrap">
|
||||
<span id="his-data-title"><i class="material-icons">timeline</i>@@timeline@@</span>
|
||||
<button class="btn waves-effect grey darken-2" style="width: 180px" id="util-add" onclick="utlAdd()">
|
||||
<i class="material-icons">add</i>
|
||||
@@utlColumn@@
|
||||
</button>
|
||||
</div>
|
||||
<!-- Dropdown Structure -->
|
||||
<ul id="hisdropdown" class="dropdown-content">
|
||||
<li class="anc-link only-his-data" go="#his-list">
|
||||
<a href="#" title="@@list@@"> <i class="material-icons">list</i>@@list@@ </a>
|
||||
</li>
|
||||
<li class="anc-link only-my-data" go="#his-blocking-list">
|
||||
<a href="#" title="@@blocks@@"><i class="material-icons">block</i>@@blocks@@</a>
|
||||
</li>
|
||||
<li class="anc-link only-my-data" go="#his-muting-list">
|
||||
<a href="#" title="@@mute@@"><i class="material-icons">voice_over_off</i>@@mute@@</a>
|
||||
</li>
|
||||
<li class="anc-link only-my-data" go="#his-domain-list">
|
||||
<a href="#" title="@@domainBlock@@"><i class="material-icons">cancel_schedule_send</i>@@domainBlock@@</a>
|
||||
</li>
|
||||
<li class="anc-link only-my-data" go="#his-prof-list">
|
||||
<a href="#" title="@@editProf@@"><i class="material-icons">create</i>@@editProf@@</a>
|
||||
</li>
|
||||
<li class="anc-link only-my-data" go="#his-request-list">
|
||||
<a href="#" title="@@followReq@@"><i class="material-icons">how_to_reg</i>@@followReq@@</a>
|
||||
</li>
|
||||
<li class="anc-link only-my-data" go="#his-follow-recom-list">
|
||||
<a href="#" title="@@frc@@"><i class="material-icons">recent_actors</i>@@frc@@</a>
|
||||
</li>
|
||||
<li class="anc-link only-his-data" go="#his-action">
|
||||
<a href="#" title="@@operateOtherAcct@@"><i class="material-icons">account_box</i>@@operateOtherAcct@@</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="his-tl" class="his-var-content">
|
||||
<div id="his-tl-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="utlShow('--now','more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-follow-list" class="his-var-content">
|
||||
<div id="his-follow-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="flw('--now','more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-follower-list" class="his-var-content">
|
||||
<div id="his-follower-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="fer('--now','more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-action" class="his-var-content">
|
||||
@@useOtherAcct1@@@@revoverJP@@@@follow@@(@@warnUseOtherAcct@@)<br />
|
||||
<div style="max-width: 500px">
|
||||
<select id="user-acct-sel" class="acct-sel"></select>
|
||||
</div>
|
||||
@@revoverJPde@@
|
||||
<a href="#!" class="waves-effect btn" onclick="follow('selector','selector')">@@follow@@</a><br />
|
||||
@@or@@
|
||||
<br />
|
||||
<a href="#!" class="waves-effect btn" onclick="udgEx('selector', 'selector')">@@openProf@@</a><br />
|
||||
</div>
|
||||
<div id="his-list" class="his-var-content">
|
||||
<div id="his-lists-a">@@warnListRegist@@</div>
|
||||
|
||||
<div id="his-lists-b"></div>
|
||||
</div>
|
||||
<div id="his-fav-list" class="his-var-content">
|
||||
<div id="his-fav-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showFav('more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-blocking-list" class="his-var-content">
|
||||
<div id="his-blocking-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showBlo('more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-muting-list" class="his-var-content">
|
||||
<div id="his-muting-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showMut('more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-domain-list" class="his-var-content">
|
||||
<div id="his-domain-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showDom('more')">@@more@@</button>@@blockDomain@@
|
||||
<br />
|
||||
<input type="text" placeholder="example.com" id="domainblock" />
|
||||
<button class="btn waves-effect" onclick="addDomainblock()">@@add@@</button>
|
||||
<br />
|
||||
</div>
|
||||
<div id="his-prof-list" class="his-var-content">
|
||||
@@name@@
|
||||
<br />
|
||||
<input type="text" placeholder="@@name@@" id="his-name-val" style="max-width: 250px" />
|
||||
<br />@@note@@
|
||||
<br />
|
||||
<div class="input-field col s12">
|
||||
<textarea placeholder="@@note@@" id="his-des-val" class="materialize-textarea"></textarea>
|
||||
<label for="his-des-val">@@note@@</label>
|
||||
</div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="profedit()">@@change@@</button>
|
||||
<br />@@editProfImg@@:
|
||||
<span id="prof-change">
|
||||
<input type="file" onchange="imgChange(this,'avatar')" />
|
||||
</span>
|
||||
<br />@@editHeader@@:
|
||||
<span id="header-change">
|
||||
<input type="file" onchange="imgChange(this,'header')" />
|
||||
</span>
|
||||
</div>
|
||||
<div id="his-request-list" class="his-var-content">
|
||||
<div id="his-request-list-contents" class="cont-series"></div>
|
||||
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showReq('more')">@@more@@</button>
|
||||
</div>
|
||||
<div id="his-follow-recom-list" class="his-var-content">
|
||||
<div id="his-follow-recom-contents" class="cont-series"></div>
|
||||
</div>
|
||||
<div id="his-float-blocked">
|
||||
<div>@@blocked@@</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">@@historyBack@@</button>
|
||||
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">@@close@@</a>
|
||||
</div>
|
||||
</div>
|
File diff suppressed because it is too large
Load Diff
|
@ -86,6 +86,8 @@
|
|||
"makeNew": "Save",
|
||||
"blocks": "Blocks",
|
||||
"mutes": "Mutes",
|
||||
"notfMute": "Mute their notifications too",
|
||||
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
|
||||
"block": "Block",
|
||||
"mute": "Mute",
|
||||
"domainBlock": "Domain block",
|
||||
|
|
|
@ -84,6 +84,8 @@
|
|||
"makeNew": "新しいやつ",
|
||||
"blocks": "ブロック",
|
||||
"mutes": "ミュート",
|
||||
"notfMute": "通知もミュート",
|
||||
"zeroSetToInfinity": "ミュート期間: 0分にしたらずっとミュートするで。",
|
||||
"block": "ブロック",
|
||||
"mute": "ミュート",
|
||||
"domainBlock": "ドメインブロック",
|
||||
|
|
|
@ -86,6 +86,8 @@
|
|||
"makeNew": "新規作成",
|
||||
"blocks": "ブロック",
|
||||
"mutes": "ミュート",
|
||||
"notfMute": "通知もミュート",
|
||||
"zeroSetToInfinity": "ミュート期間: 0分に設定すると無制限にミュートします。",
|
||||
"block": "ブロック",
|
||||
"mute": "ミュート",
|
||||
"domainBlock": "ドメインブロック",
|
||||
|
|
|
@ -1,153 +1,165 @@
|
|||
const fs = require('fs')
|
||||
|
||||
function construct(ver, basefile, pwa, store) {
|
||||
const execSync = require('child_process').execSync
|
||||
let gitHash = execSync('git rev-parse HEAD')
|
||||
.toString()
|
||||
.trim()
|
||||
console.log('Constructing view files ' + ver)
|
||||
const langs = ['ja', 'ja-KS', 'en', 'bg', 'cs', 'de',
|
||||
'es-AR', 'it-IT', 'zh-CN', 'fr-FR', 'zh-TW', 'no-NO', 'pt-BR', 'ru-RU', 'es-ES','pl-PL', 'ps']
|
||||
const langsh = [
|
||||
'日本語',
|
||||
'日本語(関西)',
|
||||
'English',
|
||||
'български',
|
||||
'Česky',
|
||||
'Deutsch',
|
||||
'Español, argentina',
|
||||
'italiano',
|
||||
'简体中文',
|
||||
'français',
|
||||
'繁體中文(β)',
|
||||
'norsk(β)',
|
||||
'Português, brasileiro(β)',
|
||||
'русский(β)',
|
||||
'Español(β)',
|
||||
'Polskie(β)',
|
||||
'Crowdin translate system(beta)'
|
||||
]
|
||||
const simples = ['acct', 'index', 'setting', 'update', 'setting']
|
||||
const samples = [
|
||||
'acct.sample.html',
|
||||
'index.sample.html',
|
||||
'setting.sample.html',
|
||||
'update.sample.html',
|
||||
'setting.sample.js'
|
||||
]
|
||||
const pages = ['acct.html', 'index.html', 'setting.html', 'update.html', 'setting.vue.js']
|
||||
let langstr = ''
|
||||
let refKey = []
|
||||
const enJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/en/main.json', 'utf8'))
|
||||
const jaJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/ja/main.json', 'utf8'))
|
||||
for (let n = 0; n < langs.length; n++) {
|
||||
let lang = langs[n]
|
||||
let targetDir = basefile + 'view/' + lang
|
||||
if (!fs.existsSync(targetDir)) {
|
||||
fs.mkdirSync(targetDir)
|
||||
}
|
||||
langstr =
|
||||
langstr + `<option value="${lang}">${langsh[n]}</option>`
|
||||
let mainJson = JSON.parse(
|
||||
fs.readFileSync(basefile + 'view/make/language/' + lang + '/main.json', 'utf8')
|
||||
)
|
||||
if (lang == 'ja-KS') {
|
||||
Object.keys(jaJson).forEach(function (key) {
|
||||
if (!mainJson[key]) {
|
||||
mainJson[key] = jaJson[key]
|
||||
}
|
||||
})
|
||||
} else if (lang != 'en') {
|
||||
Object.keys(enJson).forEach(function (key) {
|
||||
if (!mainJson[key]) {
|
||||
mainJson[key] = enJson[key]
|
||||
}
|
||||
})
|
||||
}
|
||||
mainJson.language = lang
|
||||
fs.writeFileSync(
|
||||
basefile + 'view/' + lang + '/main.js',
|
||||
JSON.stringify(mainJson).replace(/^{/, 'var lang = {')
|
||||
)
|
||||
}
|
||||
for (let i = 0; i < samples.length; i++) {
|
||||
let sample = samples[i]
|
||||
let sourceParent = fs.readFileSync(basefile + 'view/make/' + sample, 'utf8')
|
||||
let englishRefer = JSON.parse(
|
||||
fs.readFileSync(basefile + 'view/make/language/en/' + simples[i] + '.json', 'utf8')
|
||||
)
|
||||
let jaRefer = JSON.parse(
|
||||
fs.readFileSync(basefile + 'view/make/language/ja/' + simples[i] + '.json', 'utf8')
|
||||
)
|
||||
for (let j = 0; j < langs.length; j++) {
|
||||
let source = sourceParent
|
||||
let lang = langs[j]
|
||||
let target = JSON.parse(
|
||||
fs.readFileSync(
|
||||
basefile + 'view/make/language/' + lang + '/' + simples[i] + '.json',
|
||||
'utf8'
|
||||
)
|
||||
)
|
||||
if (lang == 'ja') {
|
||||
Object.keys(target).forEach(function (key) {
|
||||
refKey.push(key)
|
||||
let str = target[key]
|
||||
if (pages[i] == 'setting.vue.js') {
|
||||
str = str.replace(/'/g, "\\'")
|
||||
}
|
||||
var regExp = new RegExp('@@' + key + '@@', 'g')
|
||||
source = source.replace(regExp, str)
|
||||
})
|
||||
} else {
|
||||
for (let k = 0; k < refKey.length; k++) {
|
||||
let tarKey = refKey[k]
|
||||
if (target[tarKey]) {
|
||||
var str = target[tarKey]
|
||||
} else {
|
||||
if (lang == 'ja-KS') {
|
||||
var str = jaRefer[tarKey]
|
||||
} else {
|
||||
var str = englishRefer[tarKey]
|
||||
}
|
||||
}
|
||||
if (pages[i] == 'setting.vue.js') {
|
||||
if (str) {
|
||||
str = str.replace(/'/g, "\\'")
|
||||
}
|
||||
}
|
||||
var regExp = new RegExp('@@' + tarKey + '@@', 'g')
|
||||
source = source.replace(regExp, str)
|
||||
}
|
||||
}
|
||||
if (lang == 'ps') {
|
||||
source = source.replace(/@@comment-start@@/g, '')
|
||||
source = source.replace(/@@comment-end@@/g, '')
|
||||
} else {
|
||||
source = source.replace(/@@comment-start@@/g, '<!--')
|
||||
source = source.replace(/@@comment-end@@/g, '-->')
|
||||
}
|
||||
source = source.replace(/@@versionLetter@@/g, ver)
|
||||
source = source.replace(/@@gitHash@@/g, gitHash)
|
||||
source = source.replace(/@@gitHashShort@@/g, gitHash.slice(0, 7))
|
||||
source = source.replace(/@@lang@@/g, lang)
|
||||
source = source.replace(/@@langlist@@/g, langstr)
|
||||
if (pwa) {
|
||||
source = source.replace(/@@pwa@@/g, `<link rel="manifest" href="../../manifest.json" />
|
||||
const execSync = require('child_process').execSync
|
||||
let gitHash = execSync('git rev-parse HEAD')
|
||||
.toString()
|
||||
.trim()
|
||||
console.log('Constructing view files ' + ver)
|
||||
genIndexHtml(basefile)
|
||||
const langs = ['ja', 'ja-KS', 'en', 'bg', 'cs', 'de',
|
||||
'es-AR', 'it-IT', 'zh-CN', 'fr-FR', 'zh-TW', 'no-NO', 'pt-BR', 'ru-RU', 'es-ES', 'pl-PL', 'ps'
|
||||
]
|
||||
const langsh = [
|
||||
'日本語',
|
||||
'日本語(関西)',
|
||||
'English',
|
||||
'български',
|
||||
'Česky',
|
||||
'Deutsch',
|
||||
'Español, argentina',
|
||||
'italiano',
|
||||
'简体中文',
|
||||
'français',
|
||||
'繁體中文(β)',
|
||||
'norsk(β)',
|
||||
'Português, brasileiro(β)',
|
||||
'русский(β)',
|
||||
'Español(β)',
|
||||
'Polskie(β)',
|
||||
'Crowdin translate system(beta)'
|
||||
]
|
||||
const simples = ['acct', 'index', 'setting', 'update', 'setting']
|
||||
const samples = [
|
||||
'acct.sample.html',
|
||||
'index.generated.html',
|
||||
'setting.sample.html',
|
||||
'update.sample.html',
|
||||
'setting.sample.js'
|
||||
]
|
||||
const pages = ['acct.html', 'index.html', 'setting.html', 'update.html', 'setting.vue.js']
|
||||
let langstr = ''
|
||||
let refKey = []
|
||||
const enJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/en/main.json', 'utf8'))
|
||||
const jaJson = JSON.parse(fs.readFileSync(basefile + 'view/make/language/ja/main.json', 'utf8'))
|
||||
for (let n = 0; n < langs.length; n++) {
|
||||
let lang = langs[n]
|
||||
let targetDir = basefile + 'view/' + lang
|
||||
if (!fs.existsSync(targetDir)) {
|
||||
fs.mkdirSync(targetDir)
|
||||
}
|
||||
langstr =
|
||||
langstr + `<option value="${lang}">${langsh[n]}</option>`
|
||||
let mainJson = JSON.parse(
|
||||
fs.readFileSync(basefile + 'view/make/language/' + lang + '/main.json', 'utf8')
|
||||
)
|
||||
if (lang == 'ja-KS') {
|
||||
Object.keys(jaJson).forEach(function(key) {
|
||||
if (!mainJson[key]) {
|
||||
mainJson[key] = jaJson[key]
|
||||
}
|
||||
})
|
||||
} else if (lang != 'en') {
|
||||
Object.keys(enJson).forEach(function(key) {
|
||||
if (!mainJson[key]) {
|
||||
mainJson[key] = enJson[key]
|
||||
}
|
||||
})
|
||||
}
|
||||
mainJson.language = lang
|
||||
fs.writeFileSync(
|
||||
basefile + 'view/' + lang + '/main.js',
|
||||
JSON.stringify(mainJson).replace(/^{/, 'var lang = {')
|
||||
)
|
||||
}
|
||||
for (let i = 0; i < samples.length; i++) {
|
||||
let sample = samples[i]
|
||||
let sourceParent = fs.readFileSync(basefile + 'view/make/' + sample, 'utf8')
|
||||
let englishRefer = JSON.parse(
|
||||
fs.readFileSync(basefile + 'view/make/language/en/' + simples[i] + '.json', 'utf8')
|
||||
)
|
||||
let jaRefer = JSON.parse(
|
||||
fs.readFileSync(basefile + 'view/make/language/ja/' + simples[i] + '.json', 'utf8')
|
||||
)
|
||||
for (let j = 0; j < langs.length; j++) {
|
||||
let source = sourceParent
|
||||
let lang = langs[j]
|
||||
let target = JSON.parse(
|
||||
fs.readFileSync(
|
||||
basefile + 'view/make/language/' + lang + '/' + simples[i] + '.json',
|
||||
'utf8'
|
||||
)
|
||||
)
|
||||
if (lang == 'ja') {
|
||||
Object.keys(target).forEach(function(key) {
|
||||
refKey.push(key)
|
||||
let str = target[key]
|
||||
if (pages[i] == 'setting.vue.js') {
|
||||
str = str.replace(/'/g, "\\'")
|
||||
}
|
||||
var regExp = new RegExp('@@' + key + '@@', 'g')
|
||||
source = source.replace(regExp, str)
|
||||
})
|
||||
} else {
|
||||
for (let k = 0; k < refKey.length; k++) {
|
||||
let tarKey = refKey[k]
|
||||
if (target[tarKey]) {
|
||||
var str = target[tarKey]
|
||||
} else {
|
||||
if (lang == 'ja-KS') {
|
||||
var str = jaRefer[tarKey]
|
||||
} else {
|
||||
var str = englishRefer[tarKey]
|
||||
}
|
||||
}
|
||||
if (pages[i] == 'setting.vue.js') {
|
||||
if (str) {
|
||||
str = str.replace(/'/g, "\\'")
|
||||
}
|
||||
}
|
||||
var regExp = new RegExp('@@' + tarKey + '@@', 'g')
|
||||
source = source.replace(regExp, str)
|
||||
}
|
||||
}
|
||||
if (lang == 'ps') {
|
||||
source = source.replace(/@@comment-start@@/g, '')
|
||||
source = source.replace(/@@comment-end@@/g, '')
|
||||
} else {
|
||||
source = source.replace(/@@comment-start@@/g, '<!--')
|
||||
source = source.replace(/@@comment-end@@/g, '-->')
|
||||
}
|
||||
source = source.replace(/@@versionLetter@@/g, ver)
|
||||
source = source.replace(/@@gitHash@@/g, gitHash)
|
||||
source = source.replace(/@@gitHashShort@@/g, gitHash.slice(0, 7))
|
||||
source = source.replace(/@@lang@@/g, lang)
|
||||
source = source.replace(/@@langlist@@/g, langstr)
|
||||
if (pwa) {
|
||||
source = source.replace(/@@pwa@@/g, `<link rel="manifest" href="../../manifest.json" />
|
||||
<script>var pwa = true;"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.pwa.js").then(e=>{});</script>`)
|
||||
source = source.replace(/@@node_base@@/g, 'dependencies')
|
||||
source = source.replace(/@@pwaClass@@/g, 'pwaView')
|
||||
} else {
|
||||
source = source.replace(/@@pwa@@/g, '<script>var pwa = false;</script>')
|
||||
source = source.replace(/@@node_base@@/g, 'node_modules')
|
||||
source = source.replace(/@@pwaClass@@/g, '')
|
||||
}
|
||||
if (store) {
|
||||
source = source.replace(/@@store@@/g, '<script>var store = true;</script>')
|
||||
} else {
|
||||
source = source.replace(/@@store@@/g, '<script>var store = false;</script>')
|
||||
}
|
||||
fs.writeFileSync(basefile + 'view/' + lang + '/' + pages[i], source)
|
||||
}
|
||||
}
|
||||
source = source.replace(/@@node_base@@/g, 'dependencies')
|
||||
source = source.replace(/@@pwaClass@@/g, 'pwaView')
|
||||
} else {
|
||||
source = source.replace(/@@pwa@@/g, '<script>var pwa = false;</script>')
|
||||
source = source.replace(/@@node_base@@/g, 'node_modules')
|
||||
source = source.replace(/@@pwaClass@@/g, '')
|
||||
}
|
||||
if (store) {
|
||||
source = source.replace(/@@store@@/g, '<script>var store = true;</script>')
|
||||
} else {
|
||||
source = source.replace(/@@store@@/g, '<script>var store = false;</script>')
|
||||
}
|
||||
fs.writeFileSync(basefile + 'view/' + lang + '/' + pages[i], source)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function genIndexHtml(basefile) {
|
||||
const index = JSON.parse(fs.readFileSync(`${basefile}view/make/components/index.json`, 'utf8'))
|
||||
let raw = fs.readFileSync(`${basefile}view/make/components/index.html`, 'utf8')
|
||||
for (const component of index) {
|
||||
const componentHtml = fs.readFileSync(`${basefile}view/make/components/${component}.html`, 'utf8')
|
||||
raw = raw.replace(`@@${component}@@`, componentHtml)
|
||||
}
|
||||
fs.writeFileSync(`${basefile}view/make/index.generated.html`, raw)
|
||||
}
|
||||
module.exports = construct
|
|
@ -31,7 +31,7 @@ if (process.argv.indexOf('--watch') !== -1) {
|
|||
'watch mode(not hot-watch): when construction files are changed, refresh view files but not reload. Please reload manually.'
|
||||
)
|
||||
const watcher = chokidar.watch(basefile + 'view/make', {
|
||||
ignored: 'view/make/make.js',
|
||||
ignored: /view\/make\/(make.*\.js|.*\.generated\.html)/,
|
||||
persistent: true
|
||||
})
|
||||
watcher.on('ready', function () {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -645,7 +645,7 @@
|
|||
class="material-icons left">list</i>Help/Docs</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:40rem;"><i class="fab fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@1m.cutls.com" class="btn waves-effect blue lighten-2" style="width:100%; max-width:40rem;"><img src="../../img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Main author: Cutls@1m.cutls.com</a>
|
||||
<br> TheDesk @ <a href="https://github.com/cutls/TheDesk/commits/679151e8eadafebe68b8c0887e9189caeb94474e">679151e8eadafebe68b8c0887e9189caeb94474e</a> - <a onclick="checkupd(); return localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer pwa">Sprawdź aktualizacje</a><br>
|
||||
<br> TheDesk @ <a href="https://github.com/cutls/TheDesk/commits/4dfad6aa023a018c71d82a59b43872d81e4dc394">4dfad6aa023a018c71d82a59b43872d81e4dc394</a> - <a onclick="checkupd(); return localStorage.removeItem('new-ver-skip'); location.href='index.html';" class="pointer pwa">Sprawdź aktualizacje</a><br>
|
||||
<br> Kyash
|
||||
<br>
|
||||
<img src="../../img/kyash.png" width="100"><br>
|
||||
|
@ -653,7 +653,7 @@
|
|||
<img src="https://status.cutls.com/badge-service?site=thedesk.top">
|
||||
</a><br>
|
||||
<h5>OSS License</h5>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2Fcutls%2FTheDesk/refs/branch/master/679151e8eadafebe68b8c0887e9189caeb94474e" alt="FOSSA Status"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcutls%2FTheDesk.svg?type=small" /></a>
|
||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2Fcutls%2FTheDesk/refs/branch/master/4dfad6aa023a018c71d82a59b43872d81e4dc394" alt="FOSSA Status"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcutls%2FTheDesk.svg?type=small" /></a>
|
||||
<br>
|
||||
<span style="font-family:Open Sans;">Copyright © TheDesk 2018
|
||||
Under <a href="https://github.com/cutls/TheDesk/blob/master/LICENSE">GNU General Public License v3.0</a> and <a
|
||||
|
|
Loading…
Reference in New Issue
Block a user