91 lines
2.8 KiB
Plaintext
Executable File
91 lines
2.8 KiB
Plaintext
Executable File
<%
|
|
const { enable: pjax_enable } = theme?.pjax
|
|
const {
|
|
appid,
|
|
appkey,
|
|
server_urls,
|
|
placeholder
|
|
} = theme.comment?.valine
|
|
let cdn_url = '//cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js'
|
|
const { enable: t_cdn_enable, provider: t_cdn_provider } = theme?.cdn
|
|
if (t_cdn_enable === true) {
|
|
switch (t_cdn_provider) {
|
|
case 'jsdelivr':
|
|
cdn_url = '//cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js'
|
|
break
|
|
|
|
case 'unpkg':
|
|
cdn_url = '//unpkg.com/valine@latest/dist/Valine.min.js'
|
|
break
|
|
}
|
|
}
|
|
%>
|
|
<% if(appid && appkey) { %>
|
|
<div class="valine-container">
|
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %> src="<%= cdn_url %>"></script>
|
|
<div id="vcomments"></div>
|
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %>>
|
|
function loadValine() {
|
|
|
|
const config = {
|
|
el: '#vcomments',
|
|
appId: '<%= appid %>',
|
|
appKey: '<%= appkey %>',
|
|
meta: ['nick', 'mail', 'link'],
|
|
avatar: 'wavatar',
|
|
enableQQ: true,
|
|
placeholder: '<%= placeholder %>',
|
|
lang: '<%= config.language %>'.toLowerCase()
|
|
}
|
|
|
|
if ('<%= server_urls %>') {
|
|
config.serverURLs = '<%= server_urls %>'
|
|
}
|
|
|
|
new Valine(config)
|
|
|
|
function getAuthor(language) {
|
|
switch (language) {
|
|
case 'en':
|
|
return 'Author'
|
|
case 'zh-CN':
|
|
return '博主'
|
|
default:
|
|
return 'Master'
|
|
}
|
|
}
|
|
|
|
// Add "Author" identify
|
|
const getValineDomTimer = setInterval(() => {
|
|
const vcards = document.querySelectorAll('#vcomments .vcards .vcard')
|
|
if (vcards.length > 0) {
|
|
let author = '<%= theme.base_info.author || config.author %>'
|
|
|
|
if (author) {
|
|
for (let vcard of vcards) {
|
|
const vnick_dom = vcard.querySelector('.vhead .vnick')
|
|
const vnick = vnick_dom.innerHTML
|
|
if (vnick === author) {
|
|
vnick_dom.innerHTML = `${vnick} <span class="author">${getAuthor(KEEP.hexo_config.language)}</span>`
|
|
}
|
|
}
|
|
}
|
|
clearInterval(getValineDomTimer)
|
|
} else {
|
|
clearInterval(getValineDomTimer)
|
|
}
|
|
}, 2000)
|
|
}
|
|
|
|
if ('<%= pjax_enable %>' === 'true') {
|
|
const loadValineTimeout = setTimeout(() => {
|
|
loadValine()
|
|
clearTimeout(loadValineTimeout)
|
|
}, 1000)
|
|
} else {
|
|
window.addEventListener('DOMContentLoaded', loadValine)
|
|
}
|
|
</script>
|
|
</div>
|
|
<% } %>
|