add dialog dropdown for hashtag and suggestion, add custom emojis suggestion
This commit is contained in:
parent
b047c80768
commit
7db8989cd8
|
@ -1,4 +1,6 @@
|
||||||
const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
|
const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
|
||||||
|
const gcc = require('textarea-caret')
|
||||||
|
global.getCaretCoordinates = gcc
|
||||||
global.sanitizeHtml = require('sanitize-html')
|
global.sanitizeHtml = require('sanitize-html')
|
||||||
global.asValue = values
|
global.asValue = values
|
||||||
global.AiScript = AiScript
|
global.AiScript = AiScript
|
||||||
|
|
|
@ -97,4 +97,13 @@ i.left {
|
||||||
}
|
}
|
||||||
#add {
|
#add {
|
||||||
max-width: 1000px;
|
max-width: 1000px;
|
||||||
|
}
|
||||||
|
.autocomplete-content {
|
||||||
|
min-width: 450px;
|
||||||
|
}
|
||||||
|
.autocomplete-content li {
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
word-break: break-word;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
|
@ -579,7 +579,7 @@ h2.swal2-title {
|
||||||
z-index: 501;
|
z-index: 501;
|
||||||
}
|
}
|
||||||
.pageSrcBtn:hover {
|
.pageSrcBtn:hover {
|
||||||
background-color: var(--active);
|
background-color: var(--selected);
|
||||||
}
|
}
|
||||||
.srcQ {
|
.srcQ {
|
||||||
margin-top: 0.4rem;
|
margin-top: 0.4rem;
|
||||||
|
|
|
@ -69,6 +69,20 @@ textarea {
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
#suggest {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: var(--bg);
|
||||||
|
z-index: 2;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
display: none;
|
||||||
|
max-height: 10rem;
|
||||||
|
}
|
||||||
|
#suggest a {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
margin-right: 0.5rem;
|
||||||
|
}
|
||||||
#emoji-list {
|
#emoji-list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 15.4rem;
|
height: 15.4rem;
|
||||||
|
|
|
@ -590,7 +590,29 @@ p:not(:last-child) {
|
||||||
.small-header .area-sta::-webkit-scrollbar {
|
.small-header .area-sta::-webkit-scrollbar {
|
||||||
height: 5px;
|
height: 5px;
|
||||||
}
|
}
|
||||||
|
#tagContextMenu {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: var(--subcolor);
|
||||||
|
z-index: 2;
|
||||||
|
border-radius: 0.4rem;
|
||||||
|
}
|
||||||
|
#tagContextMenu a {
|
||||||
|
display: block;
|
||||||
|
color: var(--text);
|
||||||
|
padding-left: 0.5rem;
|
||||||
|
padding-right: 0.5rem;
|
||||||
|
}
|
||||||
|
#tagContextMenu a:hover {
|
||||||
|
background-color: var(--selected);
|
||||||
|
}
|
||||||
|
.firstTCM {
|
||||||
|
margin-top: 0.4rem;
|
||||||
|
}
|
||||||
|
.lastTCM {
|
||||||
|
margin-bottom: 0.4rem;
|
||||||
|
}
|
||||||
.area-notice_name {
|
.area-notice_name {
|
||||||
grid-area: notice_name;
|
grid-area: notice_name;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
|
@ -126,8 +126,10 @@ function emojiGet(parse, started) {
|
||||||
|
|
||||||
md['if_categorized'] = if_categorized
|
md['if_categorized'] = if_categorized
|
||||||
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||||
|
localStorage.setItem(`emojis_raw_${acct_id}`, JSON.stringify(json))
|
||||||
} else {
|
} else {
|
||||||
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||||
|
localStorage.setItem(`emojis_raw_${acct_id}`, JSON.stringify(json))
|
||||||
}
|
}
|
||||||
localStorage.setItem('emojiseek', 0)
|
localStorage.setItem('emojiseek', 0)
|
||||||
if (!started) {
|
if (!started) {
|
||||||
|
|
|
@ -9,183 +9,162 @@ var suggest
|
||||||
|
|
||||||
input.addEventListener(
|
input.addEventListener(
|
||||||
'focus',
|
'focus',
|
||||||
function() {
|
function () {
|
||||||
localStorage.removeItem('cursor')
|
localStorage.removeItem('cursor')
|
||||||
var acct_id = $('#post-acct-sel').val()
|
var acct_id = $('#post-acct-sel').val()
|
||||||
$('#suggest').html('')
|
$('#suggest').html('')
|
||||||
|
$('#suggest').hide()
|
||||||
window.clearInterval(timer)
|
window.clearInterval(timer)
|
||||||
timer = window.setInterval(function() {
|
timer = window.setInterval(function () {
|
||||||
var new_val = input.value
|
var new_val = input.value
|
||||||
if (new_val == '') {
|
if (new_val == '') {
|
||||||
$('#suggest').html('')
|
$('#suggest').html('')
|
||||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
$('#suggest').hide()
|
||||||
$('#right-side').hide()
|
|
||||||
$('#right-side').css('width', '300px')
|
|
||||||
$('#left-side').css('width', '100%')
|
|
||||||
var width = localStorage.getItem('postbox-width')
|
|
||||||
if (width) {
|
|
||||||
width = width.replace('px', '') * 1
|
|
||||||
} else {
|
|
||||||
width = 300
|
|
||||||
}
|
|
||||||
$('#post-box').css('width', width + 'px')
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (prev_val != new_val) {
|
if (prev_val != new_val) {
|
||||||
var tag = new_val.match(/#(\S{3,})/)
|
const pos = input.selectionStart
|
||||||
var acct = new_val.match(/@(\S{3,})/)
|
let startI = pos - 1
|
||||||
if (tag && tag[1]) {
|
let hasDomain = false
|
||||||
var q = tag[1]
|
let hasDomainOnce = false
|
||||||
} else if (acct && acct[1]) {
|
for (startI = pos - 1; startI >= 0; startI--) {
|
||||||
var q = acct[1]
|
if (new_val[startI].match(/\./)) hasDomain = true
|
||||||
|
if (new_val[startI].match(/#|@|:/) && !hasDomain) break
|
||||||
|
if (new_val[startI].match(/@/) && hasDomainOnce) break
|
||||||
|
if (new_val[startI].match(/@/) && !hasDomainOnce) hasDomainOnce = true
|
||||||
|
}
|
||||||
|
const target = new_val.substr(startI, pos - startI)
|
||||||
|
var tag = target.match(/#(\S{3,})/g)
|
||||||
|
var acct = target.match(/@(\S{3,})(@(\S{3,}))?/g)
|
||||||
|
var emoji = target.match(/:(\S{1,})/g)
|
||||||
|
if (emoji && emoji[0]) {
|
||||||
|
const l = emoji[0]
|
||||||
|
const emojis = localStorage.getItem('emojis_raw_' + acct_id)
|
||||||
|
const json = emojis ? JSON.parse(emojis) : []
|
||||||
|
const reg = new RegExp(`${emoji[0]}`)
|
||||||
|
let listHtml = ''
|
||||||
|
for (const emoji of json) {
|
||||||
|
const { shortcode, url } = emoji
|
||||||
|
if (`:${shortcode}`.match(reg)) {
|
||||||
|
listHtml = listHtml + `${listHtml ? `<br>` : ``}<a onclick="tagInsert(':${shortcode}:','${l}')" class="pointer"><img src="${url}" width="15">:${shortcode}:</a>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#suggest').html(listHtml)
|
||||||
|
$('#suggest').show()
|
||||||
|
} else if (tag && tag[0]) {
|
||||||
|
var q = tag[0]
|
||||||
|
} else if (acct && acct[0]) {
|
||||||
|
var q = acct[0]
|
||||||
} else {
|
} else {
|
||||||
$('#suggest').html('')
|
$('#suggest').html('')
|
||||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
$('#suggest').hide()
|
||||||
$('#right-side').hide()
|
|
||||||
$('#right-side').css('width', '300px')
|
|
||||||
$('#left-side').css('width', '100%')
|
|
||||||
var width = localStorage.getItem('postbox-width')
|
|
||||||
if (width) {
|
|
||||||
width = width.replace('px', '') * 1
|
|
||||||
} else {
|
|
||||||
width = 300
|
|
||||||
}
|
|
||||||
$('#post-box').css('width', width + 'px')
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var domain = localStorage.getItem('domain_' + acct_id)
|
if (q) {
|
||||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
suggest = 'https://' + domain + '/api/v2/search?q=' + q
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
if (suggest != oldSuggest) {
|
suggest = 'https://' + domain + '/api/v2/search?q=' + encodeURIComponent(q)
|
||||||
console.log('Try to get suggest at ' + suggest)
|
if (suggest != oldSuggest) {
|
||||||
fetch(suggest, {
|
console.log('Try to get suggest at ' + suggest)
|
||||||
method: 'GET',
|
fetch(suggest, {
|
||||||
headers: {
|
method: 'GET',
|
||||||
'content-type': 'application/json',
|
headers: {
|
||||||
Authorization: 'Bearer ' + at
|
'content-type': 'application/json',
|
||||||
}
|
Authorization: 'Bearer ' + at
|
||||||
})
|
|
||||||
.then(function(response) {
|
|
||||||
if (!response.ok) {
|
|
||||||
response.text().then(function(text) {
|
|
||||||
setLog(response.url, response.status, text)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
return response.json()
|
|
||||||
})
|
})
|
||||||
.catch(function(error) {
|
.then(function (response) {
|
||||||
todo(error)
|
if (!response.ok) {
|
||||||
setLog(start, 'JSON', error)
|
response.text().then(function (text) {
|
||||||
console.error(error)
|
setLog(response.url, response.status, text)
|
||||||
})
|
})
|
||||||
.then(function(json) {
|
}
|
||||||
console.log(['Search', json])
|
return response.json()
|
||||||
//ハッシュタグ
|
})
|
||||||
if (json.hashtags[0] && tag) {
|
.catch(function (error) {
|
||||||
if (tag[1]) {
|
todo(error)
|
||||||
var tags = []
|
setLog(start, 'JSON', error)
|
||||||
Object.keys(json.hashtags).forEach(function(key4) {
|
console.error(error)
|
||||||
var tag = json.hashtags[key4]
|
})
|
||||||
var his = tag.history
|
.then(function (json) {
|
||||||
var uses =
|
console.log(['Search', json])
|
||||||
his[0].uses * 1 +
|
//ハッシュタグ
|
||||||
his[1].uses * 1 +
|
if (json.hashtags[0] && tag) {
|
||||||
his[2].uses * 1 +
|
if (tag[0]) {
|
||||||
his[3].uses * 1 +
|
var tags = []
|
||||||
his[4].uses * 1 +
|
Object.keys(json.hashtags).forEach(function (key4) {
|
||||||
his[5].uses * 1 +
|
var tag = json.hashtags[key4]
|
||||||
his[6].uses * 1
|
var his = tag.history
|
||||||
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(
|
var uses =
|
||||||
tag.name
|
his[0].uses * 1 +
|
||||||
)}','#${q}')" class="pointer">#${escapeHTML(tag.name)}</a> ${uses}toot(s)`
|
his[1].uses * 1 +
|
||||||
|
his[2].uses * 1 +
|
||||||
|
his[3].uses * 1 +
|
||||||
|
his[4].uses * 1 +
|
||||||
|
his[5].uses * 1 +
|
||||||
|
his[6].uses * 1
|
||||||
|
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(
|
||||||
|
tag.name
|
||||||
|
)}','${q}')" class="pointer">#${escapeHTML(tag.name)}</a> ${uses}toot(s)`
|
||||||
|
|
||||||
var item = {
|
var item = {
|
||||||
uses: uses,
|
uses: uses,
|
||||||
html: tagHTML
|
html: tagHTML
|
||||||
}
|
}
|
||||||
tags.push(item)
|
tags.push(item)
|
||||||
})
|
})
|
||||||
var num_a = -1
|
var num_a = -1
|
||||||
var num_b = 1
|
var num_b = 1
|
||||||
tags = tags.sort(function(a, b) {
|
tags = tags.sort(function (a, b) {
|
||||||
var x = a['uses']
|
var x = a['uses']
|
||||||
var y = b['uses']
|
var y = b['uses']
|
||||||
if (x > y) return num_a
|
if (x > y) return num_a
|
||||||
if (x < y) return num_b
|
if (x < y) return num_b
|
||||||
return 0
|
return 0
|
||||||
})
|
})
|
||||||
var ins = ''
|
var ins = ''
|
||||||
var nev = false
|
var nev = false
|
||||||
Object.keys(tags).forEach(function(key7) {
|
Object.keys(tags).forEach(function (key7) {
|
||||||
ins = ins + tags[key7].html
|
ins = ins + tags[key7].html
|
||||||
if (key7 <= 0 && !nev) {
|
if (key7 <= 0 && !nev) {
|
||||||
ins = ins + '<br>'
|
//ins = ins + '<br>'
|
||||||
nev = true
|
nev = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
$('#suggest').html(ins)
|
$('#suggest').html(ins)
|
||||||
$('#right-side').show()
|
$('#suggest').show()
|
||||||
$('#right-side').css('width', '200px')
|
|
||||||
$('#left-side').css('width', 'calc(100% - 200px)')
|
|
||||||
var width = localStorage.getItem('postbox-width')
|
|
||||||
if (width) {
|
|
||||||
width = width.replace('px', '') * 1 + 200
|
|
||||||
} else {
|
|
||||||
width = 500
|
|
||||||
}
|
}
|
||||||
$('#post-box').css('width', width + 'px')
|
} else if (json.accounts[0] && acct[0]) {
|
||||||
$('#poll').addClass('hide')
|
var accts = ''
|
||||||
$('#emoji').addClass('hide')
|
Object.keys(json.accounts).forEach(function (key3) {
|
||||||
$('#draft').addClass('hide')
|
var acct = json.accounts[key3]
|
||||||
}
|
if (acct.acct != q) {
|
||||||
} else if (json.accounts[0] && acct[1]) {
|
//Instance Actorって…
|
||||||
var accts = ''
|
if (acct.username.indexOf('.') < 0) {
|
||||||
Object.keys(json.accounts).forEach(function(key3) {
|
accts =
|
||||||
var acct = json.accounts[key3]
|
accts +
|
||||||
if (acct.acct != q) {
|
`<a onclick="tagInsert('@${acct.acct}','${q}')" class="pointer">@${acct.acct}</a><br>`
|
||||||
//Instance Actorって…
|
}
|
||||||
if (acct.username.indexOf('.') < 0) {
|
|
||||||
accts =
|
|
||||||
accts +
|
|
||||||
`<a onclick="tagInsert('@${acct.acct}','@${q}')" class="pointer">@${acct.acct}</a><br>`
|
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
})
|
$('#suggest').html(accts)
|
||||||
$('#right-side').show()
|
$('#suggest').show()
|
||||||
$('#right-side').css('width', '200px')
|
|
||||||
$('#left-side').css('width', 'calc(100% - 200px)')
|
|
||||||
var width = localStorage.getItem('postbox-width')
|
|
||||||
if (width) {
|
|
||||||
width = width.replace('px', '') * 1 + 200
|
|
||||||
} else {
|
} else {
|
||||||
width = 500
|
|
||||||
}
|
}
|
||||||
$('#post-box').css('width', width + 'px')
|
})
|
||||||
$('#suggest').html(accts)
|
}
|
||||||
$('#poll').addClass('hide')
|
|
||||||
$('#emoji').addClass('hide')
|
|
||||||
$('#draft').addClass('hide')
|
|
||||||
} else {
|
|
||||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
|
||||||
$('#right-side').hide()
|
|
||||||
$('#right-side').css('width', '300px')
|
|
||||||
$('#left-side').css('width', '100%')
|
|
||||||
var width = localStorage.getItem('postbox-width')
|
|
||||||
if (width) {
|
|
||||||
width = width.replace('px', '') * 1
|
|
||||||
} else {
|
|
||||||
width = 300
|
|
||||||
}
|
|
||||||
$('#post-box').css('width', width + 'px')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
oldSuggest = suggest
|
oldSuggest = suggest
|
||||||
prev_value = new_val
|
prev_val = new_val
|
||||||
|
|
||||||
|
const rectTextarea = document.querySelector('#textarea')
|
||||||
|
const rect = rectTextarea.getBoundingClientRect()
|
||||||
|
const caret = getCaretCoordinates(rectTextarea, rectTextarea.selectionEnd)
|
||||||
|
$('#suggest').css('top', `calc(${caret.top}px + 1rem)`)
|
||||||
|
const left = rect.width / 2 < caret.left ? rect.width / 2 : caret.left
|
||||||
|
$('#suggest').css('left', left)
|
||||||
}, 1000)
|
}, 1000)
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
|
@ -193,15 +172,20 @@ input.addEventListener(
|
||||||
|
|
||||||
input.addEventListener(
|
input.addEventListener(
|
||||||
'blur',
|
'blur',
|
||||||
function() {
|
function () {
|
||||||
window.clearInterval(timer)
|
window.clearInterval(timer)
|
||||||
favTag()
|
favTag()
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
function tagInsert(code, del) {
|
function tagInsert(code, del, emoji) {
|
||||||
var blankBefore = ' '
|
if (localStorage.getItem('emoji-zero-width') == 'yes' && emoji) {
|
||||||
var blankAfter = ' '
|
var blankBefore = ''
|
||||||
|
var blankAfter = ''
|
||||||
|
} else {
|
||||||
|
var blankBefore = ' '
|
||||||
|
var blankAfter = ' '
|
||||||
|
}
|
||||||
var textarea = document.querySelector('#textarea')
|
var textarea = document.querySelector('#textarea')
|
||||||
var sentence = textarea.value
|
var sentence = textarea.value
|
||||||
var len = sentence.length
|
var len = sentence.length
|
||||||
|
@ -217,10 +201,10 @@ function tagInsert(code, del) {
|
||||||
var after = sentence.substr(pos, len)
|
var after = sentence.substr(pos, len)
|
||||||
var start = after.substr(0, 1)
|
var start = after.substr(0, 1)
|
||||||
if (start == ' ') blankAfter = ''
|
if (start == ' ') blankAfter = ''
|
||||||
if (len == 0) {
|
if (len === delLen) {
|
||||||
var word = code
|
var word = code + blankAfter
|
||||||
} else if (len == pos) {
|
} else if (len == pos) {
|
||||||
var word = blankBefore + code
|
var word = blankBefore + code + blankAfter
|
||||||
} else if (pos == 0) {
|
} else if (pos == 0) {
|
||||||
var word = code + blankAfter
|
var word = code + blankAfter
|
||||||
} else {
|
} else {
|
||||||
|
@ -228,17 +212,9 @@ function tagInsert(code, del) {
|
||||||
}
|
}
|
||||||
sentence = before + word + after
|
sentence = before + word + after
|
||||||
textarea.value = sentence
|
textarea.value = sentence
|
||||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
|
||||||
$('#right-side').hide()
|
|
||||||
$('#right-side').css('width', '300px')
|
|
||||||
$('#left-side').css('width', '50%')
|
|
||||||
var width = localStorage.getItem('postbox-width').replace('px', '') * 1
|
|
||||||
if (!width) {
|
|
||||||
width = 300
|
|
||||||
}
|
|
||||||
$('#post-box').css('width', width + 'px')
|
|
||||||
}
|
|
||||||
$('#suggest').html('')
|
$('#suggest').html('')
|
||||||
|
$('#suggest').hide()
|
||||||
|
$('#textarea').focus()
|
||||||
}
|
}
|
||||||
function cgNPs(q) {
|
function cgNPs(q) {
|
||||||
suggest = 'https://cg.toot.app/api/v1/search/light?q=' + q
|
suggest = 'https://cg.toot.app/api/v1/search/light?q=' + q
|
||||||
|
@ -250,23 +226,23 @@ function cgNPs(q) {
|
||||||
'content-type': 'application/json'
|
'content-type': 'application/json'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.then(function(response) {
|
.then(function (response) {
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
response.text().then(function(text) {
|
response.text().then(function (text) {
|
||||||
setLog(response.url, response.status, text)
|
setLog(response.url, response.status, text)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return response.json()
|
return response.json()
|
||||||
})
|
})
|
||||||
.catch(function(error) {
|
.catch(function (error) {
|
||||||
todo(error)
|
todo(error)
|
||||||
setLog(start, 'JSON', error)
|
setLog(start, 'JSON', error)
|
||||||
console.error(error)
|
console.error(error)
|
||||||
})
|
})
|
||||||
.then(function(json) {
|
.then(function (json) {
|
||||||
if (json[0]) {
|
if (json[0]) {
|
||||||
var tags = ''
|
var tags = ''
|
||||||
Object.keys(json).forEach(function(key4) {
|
Object.keys(json).forEach(function (key4) {
|
||||||
var tag = json[key4]
|
var tag = json[key4]
|
||||||
tags =
|
tags =
|
||||||
tags +
|
tags +
|
||||||
|
|
|
@ -17,7 +17,8 @@ function additional(acct_id, tlid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tagThis) {
|
if (tagThis) {
|
||||||
$(this).attr('href', "javascript:tagShow('" + tagThis + "')")
|
$(this).attr('href', "#")
|
||||||
|
$(this).attr('onclick', "tagShow('" + tagThis + "', this)")
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -518,7 +518,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||||
if (tagck) {
|
if (tagck) {
|
||||||
Object.keys(toot.tags).forEach(function (key4) {
|
Object.keys(toot.tags).forEach(function (key4) {
|
||||||
var tag = toot.tags[key4]
|
var tag = toot.tags[key4]
|
||||||
var tags = '<a onclick="tagShow(\'' + tag + '\')" class="pointer parsed">#' + tag + '</a><span class="hide" data-tag="' + tag + '" data-regTag="'+tag.toLowerCase()+'">#' + tag + ':<a onclick="tl(\'tag\',\'' + tag + '\',' + acct_id +
|
var tags = '<a onclick="tagShow(\'' + tag + '\', this)" class="pointer parsed">#' + tag + '</a><span class="hide" data-tag="' + tag + '" data-regTag="'+tag.toLowerCase()+'">#' + tag + ':<a onclick="tl(\'tag\',\'' + tag + '\',' + acct_id +
|
||||||
',\'add\')" class="pointer parsed" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag) + '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">Toot</a> ' +
|
',\'add\')" class="pointer parsed" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag) + '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">Toot</a> ' +
|
||||||
'<a onclick="tagPin(\'' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag) + '">Pin</a></span> '
|
'<a onclick="tagPin(\'' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag) + '">Pin</a></span> '
|
||||||
content = content.replace("#" + tag, tags)
|
content = content.replace("#" + tag, tags)
|
||||||
|
|
|
@ -703,31 +703,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
|
||||||
${lang.lang_parse_thread}
|
${lang.lang_parse_thread}
|
||||||
</a></div>`
|
</a></div>`
|
||||||
}
|
}
|
||||||
var tagck = toot.tags[0]
|
|
||||||
var tags = ''
|
|
||||||
//タグであれば
|
|
||||||
if (tagck) {
|
|
||||||
Object.keys(toot.tags).forEach(function (key4) {
|
|
||||||
var tag = toot.tags[key4]
|
|
||||||
var featured = ` <a onclick="tagFeature('${tag.name}','${acct_id}')" class="pointer" title="add it to Featured tags">Feature</a> `
|
|
||||||
tags =
|
|
||||||
tags +
|
|
||||||
`<span class="hide" data-tag="${tag.name}" data-regTag="${tag.name.toLowerCase()}">#${tag.name
|
|
||||||
}:
|
|
||||||
<a onclick="tl('tag','${tag.name}','${acct_id}','add')" class="pointer"
|
|
||||||
title="${lang.lang_parse_tagTL.replace(
|
|
||||||
'{{tag}}',
|
|
||||||
'#' + tag.name
|
|
||||||
)}">TL</a> <a onclick="brInsert('#${tag.name}')"
|
|
||||||
class="pointer" title="${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag.name)}">Toot</a>
|
|
||||||
<a onclick="tagPin('${tag.name}')" class="pointer" title="${lang.lang_parse_tagpin.replace(
|
|
||||||
'{{tag}}',
|
|
||||||
'#' + tag.name
|
|
||||||
)}
|
|
||||||
">Pin</a>${featured}</span> `
|
|
||||||
})
|
|
||||||
tags = '<div style="float:right" aria-hidden="true">' + tags + '</div>'
|
|
||||||
}
|
|
||||||
//リプ数
|
//リプ数
|
||||||
if (toot.replies_count || toot.replies_count === 0) {
|
if (toot.replies_count || toot.replies_count === 0) {
|
||||||
var replyct = toot.replies_count
|
var replyct = toot.replies_count
|
||||||
|
@ -1077,7 +1052,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
|
||||||
</div>
|
</div>
|
||||||
<div class="area-additional grid">
|
<div class="area-additional grid">
|
||||||
<span class="additional">${analyze}</span>
|
<span class="additional">${analyze}</span>
|
||||||
${mentions}${tags}
|
${mentions}
|
||||||
</div>
|
</div>
|
||||||
<div class="area-vis grid">${vis}</div>
|
<div class="area-vis grid">${vis}</div>
|
||||||
<div class="area-actions grid">
|
<div class="area-actions grid">
|
||||||
|
|
|
@ -9,9 +9,46 @@ if (location.search) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//よく使うタグ
|
//よく使うタグ
|
||||||
function tagShow(tag) {
|
function tagShow(tag, elm) {
|
||||||
console.log('[data-regTag=' + decodeURI(tag).toLowerCase() + ']')
|
const tagTL = lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)
|
||||||
$('[data-regTag=' + decodeURI(tag).toLowerCase() + ']').toggleClass('hide')
|
const tagPin = lang.lang_parse_tagpin.replace('{{tag}}', '#' + tag)
|
||||||
|
const tagToot = lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)
|
||||||
|
$('#tagCMTL').text(tagTL)
|
||||||
|
$('#tagCMPin').text(tagPin)
|
||||||
|
$('#tagCMToot').text(tagToot)
|
||||||
|
const acct_id = $(elm).parents('.tl').attr('data-acct')
|
||||||
|
const rect = elm.getBoundingClientRect()
|
||||||
|
$('#tagContextMenu').css('top', `calc(${rect.top}px + 1rem)`)
|
||||||
|
$('#tagContextMenu').css('left', `${rect.left}px`)
|
||||||
|
$('#tagContextMenu').attr('data-tag', tag)
|
||||||
|
$('#tagContextMenu').attr('data-acct', acct_id)
|
||||||
|
$('#tagContextMenu').removeClass('hide')
|
||||||
|
setTimeout(() => tShowBox('open'), 500)
|
||||||
|
}
|
||||||
|
function tShowBox(mode) {
|
||||||
|
if (mode == 'open') {
|
||||||
|
$('#tagContextMenu').removeClass('hide')
|
||||||
|
} else if (mode == 'close') {
|
||||||
|
if (!$('#tagContextMenu').hasClass('hide')) $('#tagContextMenu').addClass('hide')
|
||||||
|
$('#tagContextMenu').removeClass('keep')
|
||||||
|
} else {
|
||||||
|
$('#tagContextMenu').toggleClass('hide')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function doTShowBox(type) {
|
||||||
|
$('#tagContextMenu').addClass('hide')
|
||||||
|
$('#tagContextMenu').removeClass('keep')
|
||||||
|
const q = $('#tagContextMenu').attr('data-tag')
|
||||||
|
const acct_id = $('#tagContextMenu').attr('data-acct')
|
||||||
|
if (type == 'tl') {
|
||||||
|
tl('tag', q, acct_id, 'add')
|
||||||
|
} else if (type == 'toot') {
|
||||||
|
brInsert(`#${q}`)
|
||||||
|
} else if (type == 'pin') {
|
||||||
|
tagPin(q)
|
||||||
|
} else if (type == 'f') {
|
||||||
|
tagFeature(q, acct_id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//タグ追加
|
//タグ追加
|
||||||
function tagPin(tag) {
|
function tagPin(tag) {
|
||||||
|
@ -22,7 +59,7 @@ function tagPin(tag) {
|
||||||
var obj = JSON.parse(tags)
|
var obj = JSON.parse(tags)
|
||||||
}
|
}
|
||||||
var can
|
var can
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function (key) {
|
||||||
var tagT = obj[key]
|
var tagT = obj[key]
|
||||||
if (tagT == tag) {
|
if (tagT == tag) {
|
||||||
can = true
|
can = true
|
||||||
|
@ -56,7 +93,7 @@ function favTag() {
|
||||||
}
|
}
|
||||||
var tags = ''
|
var tags = ''
|
||||||
var nowPT = localStorage.getItem('stable')
|
var nowPT = localStorage.getItem('stable')
|
||||||
Object.keys(obj).forEach(function(key) {
|
Object.keys(obj).forEach(function (key) {
|
||||||
var tag = obj[key]
|
var tag = obj[key]
|
||||||
if (nowPT != tag) {
|
if (nowPT != tag) {
|
||||||
console.log('stable tags:' + nowPT + '/' + tag)
|
console.log('stable tags:' + nowPT + '/' + tag)
|
||||||
|
@ -69,28 +106,31 @@ function favTag() {
|
||||||
tag = escapeHTML(tag)
|
tag = escapeHTML(tag)
|
||||||
tags =
|
tags =
|
||||||
tags +
|
tags +
|
||||||
`<a onclick="tagShow('${tag}')" class="pointer">#${tag}</a>
|
`<a onclick="tagShowHorizon('${tag}')" class="pointer">#${tag}</a>
|
||||||
${nowon}<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
${nowon}<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
||||||
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="${lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)}">
|
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="${lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)}">
|
||||||
TL
|
TL
|
||||||
</a>
|
</a>
|
||||||
<a onclick="brInsert('#${tag}')" class="pointer" title="${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)}">
|
<a onclick="brInsert('#${tag}')" class="pointer" title="${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)}">
|
||||||
Toot
|
Toot
|
||||||
</a>
|
</a>
|
||||||
<a onclick="autoToot('${tag}');" class="pointer" title="${lang.lang_tags_always}${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)}">
|
<a onclick="autoToot('${tag}');" class="pointer" title="${lang.lang_tags_always}${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)}">
|
||||||
${ptt}
|
${ptt}
|
||||||
</a>
|
</a>
|
||||||
<a onclick="tagRemove('${key}')" class="pointer" title="${lang.lang_tags_tagunpin.replace('{{tag}}', '#' + tag)}">
|
<a onclick="tagRemove('${key}')" class="pointer" title="${lang.lang_tags_tagunpin.replace('{{tag}}', '#' + tag)}">
|
||||||
${lang.lang_del}
|
${lang.lang_del}
|
||||||
</a>
|
</a>
|
||||||
</span> `
|
</span> `
|
||||||
})
|
})
|
||||||
if (obj.length > 0) {
|
if (obj.length > 0) {
|
||||||
$('#taglist').append('My Tags:' + tags)
|
$('#taglist').append('My Tags: ' + tags)
|
||||||
} else {
|
} else {
|
||||||
$('#taglist').append('')
|
$('#taglist').append('')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function tagShowHorizon(tag) {
|
||||||
|
$('[data-regTag=' + decodeURI(tag).toLowerCase() + ']').toggleClass('hide')
|
||||||
|
}
|
||||||
function trendTag() {
|
function trendTag() {
|
||||||
$('.trendtag').remove()
|
$('.trendtag').remove()
|
||||||
var domain = 'imastodon.net'
|
var domain = 'imastodon.net'
|
||||||
|
@ -103,28 +143,28 @@ function trendTag() {
|
||||||
Authorization: 'Bearer ' + at
|
Authorization: 'Bearer ' + at
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.then(function(response) {
|
.then(function (response) {
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
response.text().then(function(text) {
|
response.text().then(function (text) {
|
||||||
setLog(response.url, response.status, text)
|
setLog(response.url, response.status, text)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return response.json()
|
return response.json()
|
||||||
})
|
})
|
||||||
.catch(function(error) {
|
.catch(function (error) {
|
||||||
todo(error)
|
todo(error)
|
||||||
setLog(start, 'JSON', error)
|
setLog(start, 'JSON', error)
|
||||||
console.error(error)
|
console.error(error)
|
||||||
})
|
})
|
||||||
.then(function(json) {
|
.then(function (json) {
|
||||||
if (json) {
|
if (json) {
|
||||||
var tags = ''
|
var tags = ''
|
||||||
json = json.score
|
json = json.score
|
||||||
Object.keys(json).forEach(function(tag) {
|
Object.keys(json).forEach(function (tag) {
|
||||||
tag = escapeHTML(tag)
|
tag = escapeHTML(tag)
|
||||||
tags =
|
tags =
|
||||||
tags +
|
tags +
|
||||||
`<a onclick="tagShow('${tag}')" class="pointer">#${tag}</a>
|
`<a onclick="tagShow('${tag}', this)" class="pointer">#${tag}</a>
|
||||||
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
||||||
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="#${tag}のタイムライン">TL</a>
|
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="#${tag}のタイムライン">TL</a>
|
||||||
<a onclick="show();brInsert('#${tag}')" class="pointer" title="#${tag}でトゥート">
|
<a onclick="show();brInsert('#${tag}')" class="pointer" title="#${tag}でトゥート">
|
||||||
|
@ -134,8 +174,8 @@ function trendTag() {
|
||||||
})
|
})
|
||||||
$('#taglist').append(
|
$('#taglist').append(
|
||||||
'<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' +
|
'<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' +
|
||||||
tags +
|
tags +
|
||||||
'</div>'
|
'</div>'
|
||||||
)
|
)
|
||||||
trendintervalset()
|
trendintervalset()
|
||||||
} else {
|
} else {
|
||||||
|
@ -182,18 +222,18 @@ function tagFeature(name, acct_id) {
|
||||||
name: name
|
name: name
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.then(function(response) {
|
.then(function (response) {
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
response.text().then(function(text) {
|
response.text().then(function (text) {
|
||||||
setLog(response.url, response.status, text)
|
setLog(response.url, response.status, text)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return response.json()
|
return response.json()
|
||||||
})
|
})
|
||||||
.catch(function(error) {
|
.catch(function (error) {
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
.then(function(json) {
|
.then(function (json) {
|
||||||
console.log(json)
|
console.log(json)
|
||||||
M.toast({ html: 'Complete: ' + escapeHTML(name), displayLength: 3000 })
|
M.toast({ html: 'Complete: ' + escapeHTML(name), displayLength: 3000 })
|
||||||
})
|
})
|
||||||
|
@ -202,7 +242,7 @@ function tagFeature(name, acct_id) {
|
||||||
function addTag(id) {
|
function addTag(id) {
|
||||||
var columns = JSON.parse(localStorage.getItem('column'))
|
var columns = JSON.parse(localStorage.getItem('column'))
|
||||||
var column = columns[id]
|
var column = columns[id]
|
||||||
if(!column.data.name) {
|
if (!column.data.name) {
|
||||||
var name = column.data
|
var name = column.data
|
||||||
} else {
|
} else {
|
||||||
var name = column.data.name
|
var name = column.data.name
|
||||||
|
@ -219,7 +259,7 @@ function addTag(id) {
|
||||||
o[id] = obj
|
o[id] = obj
|
||||||
var json = JSON.stringify(o)
|
var json = JSON.stringify(o)
|
||||||
console.log(json)
|
console.log(json)
|
||||||
localStorage.setItem('column',json)
|
localStorage.setItem('column', json)
|
||||||
columnReload(id, 'tag')
|
columnReload(id, 'tag')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ if (location.search) {
|
||||||
$('.mini-btn').text('expand_less')
|
$('.mini-btn').text('expand_less')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function initPostbox() {
|
function initPostbox() {
|
||||||
$('#posttgl').click(function (e) {
|
$('#posttgl').click(function (e) {
|
||||||
if (!$('#post-box').hasClass('appear')) {
|
if (!$('#post-box').hasClass('appear')) {
|
||||||
|
@ -124,6 +125,7 @@ function initPostbox() {
|
||||||
selectedToot = 0
|
selectedToot = 0
|
||||||
localStorage.removeItem('nohide')
|
localStorage.removeItem('nohide')
|
||||||
srcBox('close')
|
srcBox('close')
|
||||||
|
tShowBox('close')
|
||||||
})
|
})
|
||||||
$('#textarea,#cw-text').focusout(function (e) {
|
$('#textarea,#cw-text').focusout(function (e) {
|
||||||
localStorage.setItem('nohide', true)
|
localStorage.setItem('nohide', true)
|
||||||
|
|
|
@ -117,7 +117,7 @@ function trendTagonTip() {
|
||||||
Object.keys(json).forEach(function(tag) {
|
Object.keys(json).forEach(function(tag) {
|
||||||
tags =
|
tags =
|
||||||
tags +
|
tags +
|
||||||
`<a onclick="tagShow('${tag}')" class="pointer">
|
`<a onclick="tagShow('${tag}', this)" class="pointer">
|
||||||
#${escapeHTML(tag)}
|
#${escapeHTML(tag)}
|
||||||
</a>
|
</a>
|
||||||
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
||||||
|
|
|
@ -71,6 +71,7 @@
|
||||||
"sumchecker": "^3.0.1",
|
"sumchecker": "^3.0.1",
|
||||||
"sweetalert2": "^10.15.7",
|
"sweetalert2": "^10.15.7",
|
||||||
"system-font-families": "^0.4.1",
|
"system-font-families": "^0.4.1",
|
||||||
|
"textarea-caret": "^3.1.0",
|
||||||
"vue": "^2.6.12"
|
"vue": "^2.6.12"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
bottom: '#eeeeee',
|
bottom: '#eeeeee',
|
||||||
emphasized: '#81c784',
|
emphasized: '#81c784',
|
||||||
postbox: '#fff',
|
postbox: '#fff',
|
||||||
active: '#009688',
|
active: '#66dacf',
|
||||||
selected: '#c0c0c0',
|
selected: '#c0c0c0',
|
||||||
selectedWithShared: '#b2babd',
|
selectedWithShared: '#b2babd',
|
||||||
},
|
},
|
||||||
|
|
|
@ -35,13 +35,20 @@
|
||||||
</script>
|
</script>
|
||||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
<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>
|
<canvas id="canvas" style="top:-100px; position:fixed;width:32px;height:32px" width="32" height="32"></canvas>
|
||||||
<div id="pageSrc" class="hide z-depth-5">
|
<div id="pageSrc" class="hide z-depth-2">
|
||||||
<div class="srcQ"></div>
|
<div class="srcQ"></div>
|
||||||
<div class="pageSrcBtn pointer" onclick="doSrc('web')">@@webSrc@@</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('ts')">@@tsSrc@@</div>
|
||||||
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">@@copy@@</div>
|
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">@@copy@@</div>
|
||||||
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">@@toot@@</div>
|
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">@@toot@@</div>
|
||||||
</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">
|
<div id="offline" class="hide">
|
||||||
@@nowOffline@@
|
@@nowOffline@@
|
||||||
</div>
|
</div>
|
||||||
|
@ -199,6 +206,8 @@
|
||||||
<div class="input-field col s12" id="toot-field" style="margin-top: 0;margin-bottom: 0;">
|
<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;"
|
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;"
|
||||||
data-length="500"></textarea>
|
data-length="500"></textarea>
|
||||||
|
|
||||||
|
<div id="suggest"></div>
|
||||||
<label for="textarea" data-trans="toot">@@toot@@</label>
|
<label for="textarea" data-trans="toot">@@toot@@</label>
|
||||||
<br />
|
<br />
|
||||||
<span class="sml gray pointer markdown mize" id="preview-btn">
|
<span class="sml gray pointer markdown mize" id="preview-btn">
|
||||||
|
@ -307,7 +316,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="right-side">
|
<div id="right-side">
|
||||||
<div id="suggest" class="right-side-content"></div>
|
|
||||||
<div id="draft" class="hide right-side-content"></div>
|
<div id="draft" class="hide right-side-content"></div>
|
||||||
<!--絵文字ピッカー-->
|
<!--絵文字ピッカー-->
|
||||||
<div id="emoji" class="hide right-side-content">
|
<div id="emoji" class="hide right-side-content">
|
||||||
|
@ -568,14 +576,14 @@
|
||||||
class="material-icons">people</i>→@@follow@@</a>
|
class="material-icons">people</i>→@@follow@@</a>
|
||||||
<a go="#his-follower-list" title="@@follower@@" class="btn anc-link waves-effect"><i
|
<a go="#his-follower-list" title="@@follower@@" class="btn anc-link waves-effect"><i
|
||||||
class="material-icons">people</i>←@@follower@@</a>
|
class="material-icons">people</i>←@@follower@@</a>
|
||||||
<a go="#his-fav-list" title="@@favRegist@@"
|
<a go="#his-fav-list" title="@@favRegist@@" class="btn only-my-data anc-link waves-effect">
|
||||||
class="btn only-my-data anc-link waves-effect">
|
|
||||||
<i class="material-icons">star</i>@@favRegist@@</a>
|
<i class="material-icons">star</i>@@favRegist@@</a>
|
||||||
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i
|
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i
|
||||||
class="material-icons">more_vert</i>@@more@@</a>
|
class="material-icons">more_vert</i>@@more@@</a>
|
||||||
<div id="his-data-title-wrap">
|
<div id="his-data-title-wrap">
|
||||||
<span id="his-data-title"><i class="material-icons">timeline</i>@@timeline@@</span>
|
<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()">
|
<button class="btn waves-effect grey darken-2" style="width: 180px" id="util-add"
|
||||||
|
onclick="utlAdd()">
|
||||||
<i class="material-icons">add</i>
|
<i class="material-icons">add</i>
|
||||||
@@utlColumn@@
|
@@utlColumn@@
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -40,19 +40,28 @@
|
||||||
<div id="acct-list"></div>
|
<div id="acct-list"></div>
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hide-second">
|
|
||||||
<a href="setting.html">Having the exported file of TheDesk, click here to jump setting page</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<h5>Dodaj konto</h5>
|
<h5>Dodaj konto</h5>
|
||||||
|
|
||||||
|
<div class="hide-second">
|
||||||
|
<a href="setting.html">Having the exported file of TheDesk, click here to jump setting page</a>
|
||||||
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div id="add">
|
<div id="add">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s8">
|
<div class="col s8">
|
||||||
Wprowadź domenę instancji (jak mastodon.social)<br />
|
Wprowadź domenę instancji (jak mastodon.social)
|
||||||
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp" />
|
<div class="row">
|
||||||
<div id="ins-suggest"></div>
|
<div class="input-field col s6">
|
||||||
<button class="btn waves-effect" onclick="instance()">Login</button><br />
|
<input type="text" id="autocomplete-input" class="autocomplete" placeholder="eg) mstdn.jp">
|
||||||
|
<label for="autocomplete-input">URL</label>
|
||||||
|
</div>
|
||||||
|
<div class="col s4 loginBtnWrap">
|
||||||
|
<button class="btn waves-effect" onclick="instance()"><i
|
||||||
|
class="material-icons left">login</i>Login</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="pwa">
|
<div class="pwa">
|
||||||
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br />
|
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br />
|
||||||
<label>
|
<label>
|
||||||
|
@ -129,6 +138,7 @@
|
||||||
<script type="text/javascript" src="../../js/login/manager.js"></script>
|
<script type="text/javascript" src="../../js/login/manager.js"></script>
|
||||||
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
<script type="text/javascript" src="../../js/tl/date.js"></script>
|
||||||
<script>$('body').addClass(localStorage.getItem('platform'))</script>
|
<script>$('body').addClass(localStorage.getItem('platform'))</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -27,7 +27,7 @@
|
||||||
<body class="">
|
<body class="">
|
||||||
<script>
|
<script>
|
||||||
var ver = '22.2.0 (Koume)'
|
var ver = '22.2.0 (Koume)'
|
||||||
var gitHash = '2c3fc66b0f6e08205c2691b966253c60c246464c'
|
var gitHash = 'b047c8076821314419fdd11573d1f4337567b53d'
|
||||||
//betaを入れるとバージョンチェックしない
|
//betaを入れるとバージョンチェックしない
|
||||||
//var ver="beta";
|
//var ver="beta";
|
||||||
var acct_id = 0
|
var acct_id = 0
|
||||||
|
@ -35,14 +35,19 @@
|
||||||
</script>
|
</script>
|
||||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
<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>
|
<canvas id="canvas" style="top:-100px; position:fixed;width:32px;height:32px" width="32" height="32"></canvas>
|
||||||
<div id="pageSrc" class="hide z-depth-5">
|
<div id="pageSrc" class="hide z-depth-2">
|
||||||
<input type="text" id="pageSrcInput" placeholder="Search" />
|
<div class="srcQ"></div>
|
||||||
<button class="btn waves-effect" onclick="doSrc('web')" title="Szukaj w Internecie">
|
<div class="pageSrcBtn pointer" onclick="doSrc('web')">Szukaj w Internecie</div>
|
||||||
<i class="material-icons">open_in_browser</i>
|
<div class="pageSrcBtn pointer" onclick="doSrc('ts')">Search on tootsearch</div>
|
||||||
</button>
|
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">Copy</div>
|
||||||
<button class="btn waves-effect" onclick="doSrc('ts')" title="Search on tootsearch">
|
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">Toot</div>
|
||||||
<i class="material-icons">chat</i>
|
</div>
|
||||||
</button>
|
<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>
|
||||||
<div id="offline" class="hide">
|
<div id="offline" class="hide">
|
||||||
OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet
|
OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet
|
||||||
|
@ -201,6 +206,8 @@
|
||||||
<div class="input-field col s12" id="toot-field" style="margin-top: 0;margin-bottom: 0;">
|
<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;"
|
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;"
|
||||||
data-length="500"></textarea>
|
data-length="500"></textarea>
|
||||||
|
|
||||||
|
<div id="suggest"></div>
|
||||||
<label for="textarea" data-trans="toot">Toot</label>
|
<label for="textarea" data-trans="toot">Toot</label>
|
||||||
<br />
|
<br />
|
||||||
<span class="sml gray pointer markdown mize" id="preview-btn">
|
<span class="sml gray pointer markdown mize" id="preview-btn">
|
||||||
|
@ -309,7 +316,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="right-side">
|
<div id="right-side">
|
||||||
<div id="suggest" class="right-side-content"></div>
|
|
||||||
<div id="draft" class="hide right-side-content"></div>
|
<div id="draft" class="hide right-side-content"></div>
|
||||||
<!--絵文字ピッカー-->
|
<!--絵文字ピッカー-->
|
||||||
<div id="emoji" class="hide right-side-content">
|
<div id="emoji" class="hide right-side-content">
|
||||||
|
@ -570,12 +576,18 @@
|
||||||
class="material-icons">people</i>→Obserwuj</a>
|
class="material-icons">people</i>→Obserwuj</a>
|
||||||
<a go="#his-follower-list" title="Obserwujący" class="btn anc-link waves-effect"><i
|
<a go="#his-follower-list" title="Obserwujący" class="btn anc-link waves-effect"><i
|
||||||
class="material-icons">people</i>←Obserwujący</a>
|
class="material-icons">people</i>←Obserwujący</a>
|
||||||
<a go="#his-fav-list" title="Polub"
|
<a go="#his-fav-list" title="Polub" class="btn only-my-data anc-link waves-effect">
|
||||||
class="btn only-my-data anc-link waves-effect"><i
|
<i class="material-icons">star</i>Polub</a>
|
||||||
class="material-icons">star</i>Polub</a>
|
|
||||||
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i
|
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i
|
||||||
class="material-icons">more_vert</i>Więcej</a>
|
class="material-icons">more_vert</i>Więcej</a>
|
||||||
<div id="his-data-title"><i class="material-icons">timeline</i>Oś czasu</div>
|
<div id="his-data-title-wrap">
|
||||||
|
<span id="his-data-title"><i class="material-icons">timeline</i>Oś czasu</span>
|
||||||
|
<button class="btn waves-effect grey darken-2" style="width: 180px" id="util-add"
|
||||||
|
onclick="utlAdd()">
|
||||||
|
<i class="material-icons">add</i>
|
||||||
|
Pokaż jako kolumnę
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<!-- Dropdown Structure -->
|
<!-- Dropdown Structure -->
|
||||||
<ul id="hisdropdown" class="dropdown-content">
|
<ul id="hisdropdown" class="dropdown-content">
|
||||||
<li class="anc-link only-his-data" go="#his-list">
|
<li class="anc-link only-his-data" go="#his-list">
|
||||||
|
@ -612,9 +624,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="his-tl" class="his-var-content">
|
<div id="his-tl" class="his-var-content">
|
||||||
<button class="btn waves-effect grey" style="width:100%; padding:0;" onclick="utlAdd()">
|
|
||||||
Pokaż jako kolumnę
|
|
||||||
</button>
|
|
||||||
<div id="his-tl-contents" class="cont-series"></div>
|
<div id="his-tl-contents" class="cont-series"></div>
|
||||||
<button class="btn waves-effect " style="width:100%; padding:0;"
|
<button class="btn waves-effect " style="width:100%; padding:0;"
|
||||||
onclick="utlShow('--now','more')">
|
onclick="utlShow('--now','more')">
|
||||||
|
@ -893,43 +902,43 @@
|
||||||
<input type="hidden" value="local" id="type-sel" />
|
<input type="hidden" value="local" id="type-sel" />
|
||||||
Show this TL:
|
Show this TL:
|
||||||
<div id="tltype">
|
<div id="tltype">
|
||||||
<a class="type waves-effect active" data-type="local">
|
<a class="type waves-effect active" data-type="local" title="Local">
|
||||||
<div><i class="material-icons" aria-hidden="true">people_outline</i></div>
|
<div><i class="material-icons" aria-hidden="true">people_outline</i></div>
|
||||||
<span>Local</span>
|
<span>Local</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="local-media">
|
<a class="type waves-effect" data-type="local-media" title="Local(Media)">
|
||||||
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
|
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
|
||||||
<span>Local(Media)</span>
|
<span>Local(Media)</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="home">
|
<a class="type waves-effect" data-type="home" title="Home">
|
||||||
<div><i class="material-icons" aria-hidden="true">home</i></div>
|
<div><i class="material-icons" aria-hidden="true">home</i></div>
|
||||||
<span>Home</span>
|
<span>Home</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="pub">
|
<a class="type waves-effect" data-type="pub" title="Federated">
|
||||||
<div><i class="material-icons" aria-hidden="true">language</i></div>
|
<div><i class="material-icons" aria-hidden="true">language</i></div>
|
||||||
<span>Federated</span>
|
<span>Federated</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="pub-media">
|
<a class="type waves-effect" data-type="pub-media" title="Federated(Media)">
|
||||||
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
|
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
|
||||||
<span>Federated(Media)</span>
|
<span>Federated(Media)</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="dm">
|
<a class="type waves-effect" data-type="dm" title="Direct Message">
|
||||||
<div><i class="material-icons" aria-hidden="true">mail_outline</i></div>
|
<div><i class="material-icons" aria-hidden="true">mail_outline</i></div>
|
||||||
<span>Direct Message</span>
|
<span>Direct Message</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="mix">
|
<a class="type waves-effect" data-type="mix" title="Integrated(Local/Home)">
|
||||||
<div><i class="material-icons" aria-hidden="true">merge_type</i></div>
|
<div><i class="material-icons" aria-hidden="true">merge_type</i></div>
|
||||||
<span>Integrated(Local/Home)</span>
|
<span>Integrated(Local/Home)</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="plus">
|
<a class="type waves-effect" data-type="plus" title="LTL+Reply+BT">
|
||||||
<div><i class="material-icons" aria-hidden="true">reply</i></div>
|
<div><i class="material-icons" aria-hidden="true">reply</i></div>
|
||||||
<span>LTL+Reply+BT</span>
|
<span>LTL+Reply+BT</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="notf">
|
<a class="type waves-effect" data-type="notf" title="Notifications">
|
||||||
<div><i class="material-icons" aria-hidden="true">notifications</i></div>
|
<div><i class="material-icons" aria-hidden="true">notifications</i></div>
|
||||||
<span>Notifications</span>
|
<span>Notifications</span>
|
||||||
</a>
|
</a>
|
||||||
<a class="type waves-effect" data-type="bookmark">
|
<a class="type waves-effect" data-type="bookmark" title="Bookmarks">
|
||||||
<div><i class="material-icons" aria-hidden="true">bookmark</i></div>
|
<div><i class="material-icons" aria-hidden="true">bookmark</i></div>
|
||||||
<span>Bookmarks</span>
|
<span>Bookmarks</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -955,7 +964,7 @@
|
||||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-field">
|
<div class="input-field">
|
||||||
<input id="src" type="text" class="validate" style="width:57%" />
|
<input id="src" type="text" class="validate" style="width:calc(100% - 150px)" />
|
||||||
<label for="src" data-trans="src">Search</label>
|
<label for="src" data-trans="src">Search</label>
|
||||||
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 1.15rem;"
|
<button class="btn waves-effect indigo" style="width: 36%;padding: 0;padding-left: 1.15rem;"
|
||||||
onclick="src()" data-trans-i="src">
|
onclick="src()" data-trans-i="src">
|
||||||
|
@ -1023,7 +1032,7 @@
|
||||||
<br /><br />
|
<br /><br />
|
||||||
<div id="lists"></div>
|
<div id="lists"></div>
|
||||||
<div id="lists-user"></div>
|
<div id="lists-user"></div>
|
||||||
<input type="text" style="width:150px" id="list-add" placeholder="Wyświetlana nazwa" />
|
<input type="text" style="width: calc(100% - 143px)" id="list-add" placeholder="Wyświetlana nazwa" />
|
||||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">
|
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">
|
||||||
Zapisz
|
Zapisz
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -690,7 +690,7 @@
|
||||||
style="width:100%; max-width:40rem;"><img src="../../img/desk_full.svg" class="left" width="25"
|
style="width:100%; max-width:40rem;"><img src="../../img/desk_full.svg" class="left" width="25"
|
||||||
style="padding-top:5px;">Main author: Cutls@cutls.com</a>
|
style="padding-top:5px;">Main author: Cutls@cutls.com</a>
|
||||||
<br>
|
<br>
|
||||||
TheDesk @ <a href="https://github.com/cutls/TheDesk/commits/2c3fc66b0f6e08205c2691b966253c60c246464c">2c3fc66b0f6e08205c2691b966253c60c246464c</a> - <a
|
TheDesk @ <a href="https://github.com/cutls/TheDesk/commits/b047c8076821314419fdd11573d1f4337567b53d">b047c8076821314419fdd11573d1f4337567b53d</a> - <a
|
||||||
onclick="checkupd(); return localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
onclick="checkupd(); return localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
||||||
class="pointer pwa">Sprawdź aktualizacje</a><br>
|
class="pointer pwa">Sprawdź aktualizacje</a><br>
|
||||||
<br>
|
<br>
|
||||||
|
@ -700,7 +700,7 @@
|
||||||
<img src="https://status.cutls.com/badge-service?site=thedesk.top">
|
<img src="https://status.cutls.com/badge-service?site=thedesk.top">
|
||||||
</a><br>
|
</a><br>
|
||||||
<h5>OSS License</h5>
|
<h5>OSS License</h5>
|
||||||
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2Fcutls%2FTheDesk/refs/branch/master/2c3fc66b0f6e08205c2691b966253c60c246464c"
|
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2Fcutls%2FTheDesk/refs/branch/master/b047c8076821314419fdd11573d1f4337567b53d"
|
||||||
alt="FOSSA Status"><img
|
alt="FOSSA Status"><img
|
||||||
src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcutls%2FTheDesk.svg?type=small" /></a>
|
src="https://app.fossa.com/api/projects/git%2Bgithub.com%2Fcutls%2FTheDesk.svg?type=small" /></a>
|
||||||
<br>
|
<br>
|
||||||
|
|
|
@ -4986,6 +4986,11 @@ text-table@^0.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||||
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
|
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
|
||||||
|
|
||||||
|
textarea-caret@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/textarea-caret/-/textarea-caret-3.1.0.tgz#5d5a35bb035fd06b2ff0e25d5359e97f2655087f"
|
||||||
|
integrity sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q==
|
||||||
|
|
||||||
textextensions@^5.11.0:
|
textextensions@^5.11.0:
|
||||||
version "5.12.0"
|
version "5.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-5.12.0.tgz#b908120b5c1bd4bb9eba41423d75b176011ab68a"
|
resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-5.12.0.tgz#b908120b5c1bd4bb9eba41423d75b176011ab68a"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user