150 lines
6.3 KiB
HTML
150 lines
6.3 KiB
HTML
|
|
||
|
<th:block th:if="${#strings.equals(theme.config.comments.use, 'Twikoo') &&
|
||
|
not #strings.isEmpty(theme.config.comments.twikoos.envId)}">
|
||
|
<div class="js-pjax">
|
||
|
<script th:src="${assets_link + '/js/comment/twikoo.js'}"></script>
|
||
|
</div>
|
||
|
<!-- 最近评论 -->
|
||
|
<script>
|
||
|
window.addEventListener('load', () => {
|
||
|
const getComment = () => {
|
||
|
const runTwikoo = () => {
|
||
|
twikoo.getRecentComments({
|
||
|
envId: "[(${theme.config.comments.twikoos.envId})]",
|
||
|
region: '',
|
||
|
pageSize: 20,
|
||
|
includeReply: true
|
||
|
}).then(function (res) {
|
||
|
const twikooArray = res.map(e => {
|
||
|
return {
|
||
|
'content': btf.changeContent(e.comment,150),
|
||
|
'avatar': e.avatar,
|
||
|
'nick': e.nick,
|
||
|
'url': e.url + '#' + e.id,
|
||
|
'date': new Date(e.created).toISOString()
|
||
|
}
|
||
|
})
|
||
|
|
||
|
saveToLocal.set('twikoo-newest-comments', JSON.stringify(twikooArray), 10 / (60 * 24))
|
||
|
generateHtml(twikooArray)
|
||
|
document.querySelector('#newcomm') && necommHtml(twikooArray)
|
||
|
}).catch(function (err) {
|
||
|
const $dom = document.querySelector('#card-newest-comments .aside-list')
|
||
|
const $newcomm = document.querySelector('#newcomm')
|
||
|
$dom.innerHTML = "无法获取评论,请确认相关配置是否正确"
|
||
|
if($newcomm){
|
||
|
$newcomm.innerHTML = "无法获取评论,请确认相关配置是否正确"
|
||
|
}
|
||
|
|
||
|
})
|
||
|
}
|
||
|
|
||
|
if (typeof twikoo === 'object') {
|
||
|
runTwikoo()
|
||
|
} else {
|
||
|
getScript(GLOBAL_CONFIG.source.twikoo.js).then(runTwikoo)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const generateHtml = array => {
|
||
|
let result = ''
|
||
|
|
||
|
if (array.length) {
|
||
|
for (let i = 0; i < array.length; i++) {
|
||
|
if (i == 6) {
|
||
|
break;
|
||
|
}
|
||
|
result += '<div class=\'aside-list-item\'>'
|
||
|
|
||
|
if (true) {
|
||
|
let name = 'src'
|
||
|
if([[${isLazyload}]]){
|
||
|
name = 'data-lazy-src'
|
||
|
}
|
||
|
result += `<a href='${array[i].url}' class='thumbnail'><img ${name}='${array[i].avatar}' alt='${array[i].nick}'><div class='name'><span>${array[i].nick}</span></div></a>`
|
||
|
}
|
||
|
|
||
|
result += `<div class='content'>
|
||
|
<a class='comment' href='${array[i].url}' title='${array[i].content}'>${array[i].content}</a>
|
||
|
<time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time></div>
|
||
|
</div>`
|
||
|
}
|
||
|
} else {
|
||
|
result += '没有评论'
|
||
|
}
|
||
|
|
||
|
let $dom = document.querySelector('#card-newest-comments .aside-list')
|
||
|
$dom.innerHTML = result
|
||
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
||
|
window.pjax && window.pjax.refresh($dom)
|
||
|
}
|
||
|
|
||
|
const necommHtml = array => {
|
||
|
let result = ''
|
||
|
|
||
|
const pagesize = [[${theme.config.sidebar.newcomment.newcommentnumber}]];
|
||
|
const defaultpagesize = 5;
|
||
|
const finalpagesize = pagesize <= 0 ? defaultpagesize : pagesize;
|
||
|
|
||
|
if (array.length) {
|
||
|
for (let i = 0; i < array.length; i++) {
|
||
|
|
||
|
if (i == finalpagesize) {
|
||
|
break;
|
||
|
}
|
||
|
result += '<div class="aside-list-item">'
|
||
|
|
||
|
if (true) {
|
||
|
let name = 'src'
|
||
|
if([[${isLazyload}]]){
|
||
|
name = 'data-lazy-src'
|
||
|
}
|
||
|
result += `
|
||
|
<a class="thumbnail" href="${array[i].url}">
|
||
|
<img alt="dasda" ${name}="${array[i].avatar}">
|
||
|
</a>
|
||
|
`
|
||
|
}
|
||
|
|
||
|
result += `
|
||
|
<div class="content">
|
||
|
<a class="comment" style="display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden;"
|
||
|
href="${array[i].url}" title="${array[i].content}">
|
||
|
${array[i].content}
|
||
|
</a>
|
||
|
<div class="name">
|
||
|
<span>${array[i].nick} / </span>
|
||
|
<time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
`
|
||
|
|
||
|
}
|
||
|
} else {
|
||
|
result += '没有评论'
|
||
|
}
|
||
|
|
||
|
let $dom = document.querySelector('#newcomm')
|
||
|
$dom.innerHTML = result
|
||
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
||
|
window.pjax && window.pjax.refresh($dom)
|
||
|
}
|
||
|
|
||
|
const newestCommentInit = () => {
|
||
|
if (document.querySelector('#card-newest-comments .aside-list')) {
|
||
|
const data = saveToLocal.get('twikoo-newest-comments')
|
||
|
if (data) {
|
||
|
generateHtml(JSON.parse(data))
|
||
|
document.querySelector('#newcomm') && necommHtml(JSON.parse(data))
|
||
|
} else {
|
||
|
getComment()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
newestCommentInit()
|
||
|
document.addEventListener('pjax:complete', newestCommentInit)
|
||
|
})</script>
|
||
|
|
||
|
</th:block>
|