hexo-theme-solitude 1.10.5 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/_config.yml +16 -0
- package/languages/default.yml +3 -0
- package/languages/en.yml +3 -0
- package/languages/zh-CN.yml +3 -0
- package/languages/zh-TW.yml +3 -0
- package/layout/includes/console.pug +5 -1
- package/layout/includes/inject/head.pug +1 -1
- package/layout/includes/page/recentcomment.pug +16 -0
- package/layout/includes/widgets/home/hometop.pug +0 -1
- package/layout/includes/widgets/home/topGroup.pug +9 -8
- package/layout/includes/widgets/page/banner.pug +2 -2
- package/layout/includes/widgets/page/message/artalk.pug +45 -0
- package/layout/includes/widgets/page/message/js.pug +5 -1
- package/layout/includes/widgets/page/message/twikoo.pug +19 -16
- package/layout/includes/widgets/page/message/valine.pug +12 -3
- package/layout/includes/widgets/page/message/waline.pug +42 -0
- package/layout/includes/widgets/page/recentcomment/artalk.pug +78 -0
- package/layout/includes/widgets/page/recentcomment/twikoo.pug +83 -0
- package/layout/includes/widgets/page/recentcomment/valine.pug +79 -0
- package/layout/includes/widgets/page/recentcomment/waline.pug +72 -0
- package/layout/includes/widgets/third-party/comments/artalk.pug +1 -1
- package/layout/includes/widgets/third-party/news-comment/artalk.pug +1 -1
- package/layout/includes/widgets/third-party/news-comment/twikoo.pug +1 -1
- package/layout/includes/widgets/third-party/news-comment/valine.pug +19 -17
- package/layout/includes/widgets/third-party/news-comment/waline.pug +2 -2
- package/layout/page.pug +2 -0
- package/package.json +1 -1
- package/plugins.yml +3 -3
- package/scripts/event/merge_config.js +7 -0
- package/source/css/_comments/comment.styl +1 -1
- package/source/css/_comments/valine.styl +1 -0
- package/source/css/_global/index.styl +27 -23
- package/source/css/_layout/article-container.styl +1 -1
- package/source/css/_layout/aside.styl +1 -0
- package/source/css/_layout/console.styl +13 -0
- package/source/css/_layout/footer.styl +1 -1
- package/source/css/_layout/header.styl +0 -27
- package/source/css/_layout/rightmenu.styl +1 -1
- package/source/css/_page/_about/about.styl +2 -1
- package/source/css/_page/_about/buff.styl +1 -1
- package/source/css/_page/_about/contentinfo.styl +2 -2
- package/source/css/_page/_about/maxim.styl +1 -1
- package/source/css/_page/_about/myphoto.styl +1 -1
- package/source/css/_page/_about/oneself.styl +2 -2
- package/source/css/_page/_about/personalities.styl +1 -1
- package/source/css/_page/_about/skills.styl +1 -1
- package/source/css/_page/_about/statistic.styl +1 -1
- package/source/css/_page/_home/home-top.styl +17 -96
- package/source/css/_page/_home/home.styl +1 -1
- package/source/css/_page/index.styl +3 -0
- package/source/css/_page/links.styl +0 -3
- package/source/css/_page/other.styl +127 -115
- package/source/css/_page/recentcomment.styl +85 -0
- package/source/css/_page/says.styl +5 -14
- package/source/css/_tags/gallery.styl +5 -3
- package/source/js/main.js +2 -22
- package/source/js/search/algolia.js +11 -0
- package/source/js/search/local.js +11 -0
- package/layout/includes/widgets/home/categoryGroup.pug +0 -12
@@ -0,0 +1,72 @@
|
|
1
|
+
script(pjax).
|
2
|
+
(async () => {
|
3
|
+
document.querySelector('#comments-page').textContent = `#{__("loading")}`
|
4
|
+
const emojiReg = /<img [^>]+ class="wl-emoji">/g
|
5
|
+
let cache = utils.saveToLocal.get('waline-recent-comments')
|
6
|
+
if (cache) {
|
7
|
+
setHtml(document.querySelector('#comments-page'), cache)
|
8
|
+
return
|
9
|
+
}
|
10
|
+
let ls = []
|
11
|
+
await fetch('!{theme.waline.envId}/api/comment?type=recent&count=!{limit}', {method: 'GET'}).then(async res => res.json())
|
12
|
+
.then(async data => {
|
13
|
+
console.log(data)
|
14
|
+
for (const i of data.data) {
|
15
|
+
let title = ''
|
16
|
+
if (i.url) {
|
17
|
+
await fetch(i.url).then(res => res.text()).then(html => {
|
18
|
+
const parser = new DOMParser()
|
19
|
+
const doc = parser.parseFromString(html, 'text/html')
|
20
|
+
title = doc.querySelector('title').innerText
|
21
|
+
}).catch(() => {
|
22
|
+
title = i.url
|
23
|
+
})
|
24
|
+
}
|
25
|
+
if (title.indexOf('|') > 0) {
|
26
|
+
title = title.split('|')[0]
|
27
|
+
}
|
28
|
+
ls.push({
|
29
|
+
title: title,
|
30
|
+
url: i.url,
|
31
|
+
nick: i.nick,
|
32
|
+
avatar: i.avatar,
|
33
|
+
time: new Date(i.time),
|
34
|
+
content: formatContent(i.comment)
|
35
|
+
})
|
36
|
+
}
|
37
|
+
setHtml(document.querySelector('#comments-page'), ls)
|
38
|
+
utils.saveToLocal.set('waline-recent-comments', ls, !{cache})
|
39
|
+
})
|
40
|
+
|
41
|
+
function setHtml(el, data) {
|
42
|
+
el.innerHTML = data.map(i => `
|
43
|
+
<div class="comment-card" title="${i.title}" onclick="pjax.loadUrl('${i.url}')">
|
44
|
+
<div class="comment-info">
|
45
|
+
<img src="${i.avatar}" class="nolazyload" alt="${i.nick}">
|
46
|
+
<div>
|
47
|
+
<span class="comment-user">${i.nick}</span>
|
48
|
+
</div>
|
49
|
+
<time class="comment-time" datetime="${i.time}"></time>
|
50
|
+
</div>
|
51
|
+
<div class="comment-content">${i.content}</div>
|
52
|
+
<div class="comment-title">
|
53
|
+
<i class="solitude st-chat-fill"></i>
|
54
|
+
${i.title}</div>
|
55
|
+
</div>
|
56
|
+
`).join('')
|
57
|
+
if (typeof sco !== 'undefined') sco.changeTimeFormat(document.querySelectorAll('.comment-time'))
|
58
|
+
else {
|
59
|
+
document.addEventListener('pjax:complete', () => sco.changeTimeFormat(document.querySelectorAll('.comment-time')))
|
60
|
+
document.addEventListener('DOMContentLoaded', () => sco.changeTimeFormat(document.querySelectorAll('.comment-time')))
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
function formatContent(content) {
|
65
|
+
content = content.replace(emojiReg, '[!{__("console.newest_comment.emoji")}]')
|
66
|
+
content = content.replace(/<img.*?>/g, '[!{__("console.newest_comment.image")}]');
|
67
|
+
content = content.replace(/<a.*?>.*?<\/a>/g, '[!{__("console.newest_comment.link")}]');
|
68
|
+
content = content.replace(/<pre.*?>.*?<\/pre>/g, '[!{__("console.newest_comment.code")}]');
|
69
|
+
content = content.replace(/<.*?>/g, '');
|
70
|
+
return content
|
71
|
+
}
|
72
|
+
})()
|
@@ -41,7 +41,7 @@ script.
|
|
41
41
|
const artalkWrap = document.getElementById('artalk-wrap')
|
42
42
|
if (!(artalkWrap && artalkWrap.children.length)) return
|
43
43
|
const isDark = theme === 'dark'
|
44
|
-
artalkItem.setDarkMode(
|
44
|
+
artalkItem.setDarkMode(isDark)
|
45
45
|
}
|
46
46
|
utils.addGlobalFn('themeChange', artalkChangeMode, 'artalk')
|
47
47
|
if ('!{use[0]}' === 'Artalk' || !{lazyload}) {
|
@@ -46,7 +46,7 @@ script.
|
|
46
46
|
nick: e.nick,
|
47
47
|
url: `${e.url}#${e.id}`,
|
48
48
|
date: new Date(e.created).toString()
|
49
|
-
}))
|
49
|
+
})).slice(0, 6)
|
50
50
|
utils.saveToLocal.set('twikoo-newest-comment', twikooArray, !{theme.comment.newest_comment.storage})
|
51
51
|
generateHtml(twikooArray)
|
52
52
|
}).catch((err) => {
|
@@ -1,5 +1,6 @@
|
|
1
1
|
script.
|
2
2
|
window.addEventListener('load', () => {
|
3
|
+
const emojiReg = /:[a-z0-9_\u4e00-\u9fa5]+:/g
|
3
4
|
const changeContent = (content) => {
|
4
5
|
if (content === '') return content;
|
5
6
|
|
@@ -38,31 +39,32 @@ script.
|
|
38
39
|
},
|
39
40
|
}
|
40
41
|
if (typeof md5 === "undefined") await utils.getScript('!{url_for(theme.cdn.blueimp_md5)}')
|
41
|
-
await fetch('!{theme.valine.serverURLs}/1.1/classes/Comment?limit=8&order=-createdAt', settings).then(
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
42
|
+
await fetch('!{theme.valine.serverURLs}/1.1/classes/Comment?limit=8&order=-createdAt', settings).then(res => res.json())
|
43
|
+
.then(async result => {
|
44
|
+
let ls = []
|
45
|
+
for (const i of result.results.slice(0, 6)) {
|
46
|
+
if (emojiReg.test(i.comment)) continue
|
47
|
+
ls.push({
|
48
|
+
content: changeContent(i.comment),
|
49
|
+
avatar: '!{theme.comment.avatar}' + '/avatar/' + md5(i.mail.toLowerCase()),
|
50
|
+
nick: i.nick,
|
51
|
+
url: i.url,
|
52
|
+
date: i.updatedAt || i.createdAt
|
53
|
+
})
|
51
54
|
}
|
55
|
+
utils.saveToLocal.set('valine-newest-comment', ls, !{theme.comment.newest_comment.storage})
|
56
|
+
generateHtml(ls)
|
57
|
+
}).catch(error => {
|
58
|
+
console.error(error);
|
59
|
+
$asideList.textContent = "!{_p('newest_comment.error')}"
|
52
60
|
})
|
53
|
-
utils.saveToLocal.set('valine-newest-comment', valineArray, !{theme.comment.newest_comment.storage})
|
54
|
-
generateHtml(valineArray)
|
55
|
-
}).catch(error => {
|
56
|
-
console.error(error);
|
57
|
-
$asideList.textContent = "!{_p('newest_comment.error')}"
|
58
|
-
})
|
59
61
|
}
|
60
62
|
|
61
63
|
const generateHtml = array => {
|
62
64
|
const $dom = document.querySelector('#card-newest-comments .aside-list')
|
63
65
|
$dom.innerHTML = array.length ? array.map(item => `
|
64
66
|
<div class='aside-list-item'>
|
65
|
-
<div onclick='pjax.loadUrl("${item.url}")' class='thumbnail'>
|
67
|
+
<div onclick='pjax.loadUrl(\"${item.url}\")' class='thumbnail'>
|
66
68
|
<img src='${item.avatar}' alt='${item.nick}'>
|
67
69
|
<div class='name'><span>${item.nick}</span></div>
|
68
70
|
</div>
|
@@ -29,7 +29,7 @@ script.
|
|
29
29
|
}
|
30
30
|
|
31
31
|
const getComment = async () => {
|
32
|
-
await fetch('!{theme.waline.envId}/api/comment?type=recent&count=
|
32
|
+
await fetch('!{theme.waline.envId}/api/comment?type=recent&count=6', {method: 'GET'}).then(async res => {
|
33
33
|
const result = await res.json()
|
34
34
|
const walineArray = result.data.map(e => {
|
35
35
|
return {
|
@@ -37,7 +37,7 @@ script.
|
|
37
37
|
'avatar': e.avatar,
|
38
38
|
'nick': e.nick,
|
39
39
|
'url': e.url + '#' + e.objectId,
|
40
|
-
'date': e.time || e.insertedAt
|
40
|
+
'date': new Date(e.time || e.insertedAt)
|
41
41
|
}
|
42
42
|
})
|
43
43
|
utils.saveToLocal.set('waline-newest-comment', walineArray, !{theme.comment.newest_comment.storage})
|
package/layout/page.pug
CHANGED
@@ -22,6 +22,8 @@ block content
|
|
22
22
|
include includes/page/music
|
23
23
|
when 'message'
|
24
24
|
!=partial('includes/page/message', {}, {cache: true})
|
25
|
+
when 'recentcomment'
|
26
|
+
!=partial('includes/page/recentcomment', {}, {cache: true})
|
25
27
|
when 'banner'
|
26
28
|
include includes/widgets/page/banner
|
27
29
|
if page.container
|
package/package.json
CHANGED
package/plugins.yml
CHANGED
@@ -5,7 +5,7 @@ algolia_search:
|
|
5
5
|
instantsearch:
|
6
6
|
name: instantsearch.js
|
7
7
|
file: dist/instantsearch.production.min.js
|
8
|
-
version: 4.
|
8
|
+
version: 4.68.1
|
9
9
|
pjax:
|
10
10
|
name: pjax
|
11
11
|
file: pjax.min.js
|
@@ -31,11 +31,11 @@ valine:
|
|
31
31
|
artalk_css:
|
32
32
|
name: artalk
|
33
33
|
file: dist/Artalk.css
|
34
|
-
version: 2.8.
|
34
|
+
version: 2.8.6
|
35
35
|
artalk_js:
|
36
36
|
name: artalk
|
37
37
|
file: dist/Artalk.js
|
38
|
-
version: 2.8.
|
38
|
+
version: 2.8.6
|
39
39
|
katex:
|
40
40
|
name: katex
|
41
41
|
file: dist/katex.min.css
|
@@ -200,12 +200,19 @@ hexo.extend.filter.register('before_generate', () => {
|
|
200
200
|
style: 1,
|
201
201
|
strip: 30
|
202
202
|
},
|
203
|
+
recent_comments: {
|
204
|
+
enable: false,
|
205
|
+
limit: 50,
|
206
|
+
console: false,
|
207
|
+
page: '/recentcomments/'
|
208
|
+
},
|
203
209
|
envelope: {
|
204
210
|
enable: false,
|
205
211
|
line: 10,
|
206
212
|
speed: 20,
|
207
213
|
hover: true,
|
208
214
|
loop: true,
|
215
|
+
page: '/message/'
|
209
216
|
},
|
210
217
|
meting_api: "https://meting.qjqq.cn/?server=:server&type=:type&id=:id&auth=:auth&r=:r",
|
211
218
|
music: {
|
@@ -86,15 +86,38 @@ main
|
|
86
86
|
|
87
87
|
// scrollbar - chrome/safari
|
88
88
|
*::-webkit-scrollbar
|
89
|
-
width
|
90
|
-
height
|
89
|
+
width 12px
|
90
|
+
height 6px
|
91
91
|
|
92
92
|
*::-webkit-scrollbar-thumb
|
93
93
|
background var(--scrollbar-color)
|
94
|
+
opacity .5
|
95
|
+
border-radius 8px
|
96
|
+
cursor pointer
|
97
|
+
border 2px solid var(--efu-background)
|
98
|
+
|
99
|
+
&:hover
|
100
|
+
background var(--efu-lighttext)
|
101
|
+
display block
|
94
102
|
|
95
103
|
*::-webkit-scrollbar-track
|
96
104
|
background-color transparent
|
97
105
|
|
106
|
+
::-webkit-scrollbar-thumb
|
107
|
+
background var(--efu-card-border)
|
108
|
+
opacity .5
|
109
|
+
border-radius 8px
|
110
|
+
cursor pointer
|
111
|
+
border 2px solid var(--efu-background)
|
112
|
+
|
113
|
+
::-webkit-scrollbar-thumb:hover
|
114
|
+
background var(--efu-main)
|
115
|
+
opacity 1
|
116
|
+
display block !important
|
117
|
+
|
118
|
+
::-webkit-scrollbar-track
|
119
|
+
background-color var(--efu-none)
|
120
|
+
|
98
121
|
if hexo-config('lazyload.enable') && !hexo-config('lazyload.placeholder')
|
99
122
|
img
|
100
123
|
&[data-lazy-src]:not(.loaded)
|
@@ -116,7 +139,7 @@ h1, h2, h3, h4, h5, h6
|
|
116
139
|
padding-left 0
|
117
140
|
font-weight 700
|
118
141
|
position relative
|
119
|
-
margin
|
142
|
+
margin .5rem 0
|
120
143
|
color var(--efu-fontcolor)
|
121
144
|
|
122
145
|
hr
|
@@ -319,25 +342,6 @@ li, ul
|
|
319
342
|
margin 0
|
320
343
|
padding 0
|
321
344
|
|
322
|
-
::-webkit-scrollbar
|
323
|
-
width 10px
|
324
|
-
height 6px
|
325
|
-
|
326
|
-
::-webkit-scrollbar-thumb
|
327
|
-
background var(--efu-card-border)
|
328
|
-
opacity .5
|
329
|
-
border-radius 8px
|
330
|
-
cursor pointer
|
331
|
-
border 2px solid var(--efu-background)
|
332
|
-
|
333
|
-
::-webkit-scrollbar-thumb:hover
|
334
|
-
background var(--efu-main)
|
335
|
-
opacity 1
|
336
|
-
display block !important
|
337
|
-
|
338
|
-
::-webkit-scrollbar-track
|
339
|
-
background-color var(--efu-none)
|
340
|
-
|
341
345
|
[data-theme=dark] img
|
342
346
|
filter brightness(1)
|
343
347
|
|
@@ -383,7 +387,7 @@ i.solitude
|
|
383
387
|
+maxWidth1200()
|
384
388
|
width 100%
|
385
389
|
|
386
|
-
> #post
|
390
|
+
> #post, #category, #tag, #archive
|
387
391
|
box-shadow var(--efu-shadow-border)
|
388
392
|
padding 1rem 2rem
|
389
393
|
border-radius 12px
|
@@ -17,6 +17,15 @@
|
|
17
17
|
&.show .close-btn i
|
18
18
|
transform rotate(0)
|
19
19
|
|
20
|
+
if hexo-config('recent_comments.enable') && hexo-config('recent_comments.console')
|
21
|
+
.recent-comment-more
|
22
|
+
margin-left auto
|
23
|
+
display flex
|
24
|
+
align-items center
|
25
|
+
|
26
|
+
&:hover
|
27
|
+
color var(--efu-main)
|
28
|
+
|
20
29
|
.console-card-group
|
21
30
|
display flex
|
22
31
|
justify-content space-between
|
@@ -35,11 +44,13 @@
|
|
35
44
|
+maxHeight800()
|
36
45
|
display none
|
37
46
|
|
47
|
+
|
38
48
|
&.show
|
39
49
|
.console-card-group
|
40
50
|
transform translateY(0)
|
41
51
|
opacity 1
|
42
52
|
transition-delay .1s
|
53
|
+
max-height 80%
|
43
54
|
|
44
55
|
.console-card-group-left
|
45
56
|
margin-right .5rem
|
@@ -102,6 +113,8 @@
|
|
102
113
|
font-size 36px
|
103
114
|
font-weight 700
|
104
115
|
line-height 1
|
116
|
+
display flex
|
117
|
+
align-items center
|
105
118
|
|
106
119
|
.aside-list-item
|
107
120
|
.thumbnail
|
@@ -521,33 +521,6 @@
|
|
521
521
|
padding 4px
|
522
522
|
transition transform .3s ease 0s
|
523
523
|
|
524
|
-
&.hide-menu
|
525
|
-
#toggle-menu
|
526
|
-
display inline-block
|
527
|
-
|
528
|
-
+minWidth768()
|
529
|
-
display none
|
530
|
-
|
531
|
-
.site-page
|
532
|
-
font-size inherit
|
533
|
-
|
534
|
-
+maxWidth768()
|
535
|
-
width 35px
|
536
|
-
height 35px
|
537
|
-
display flex
|
538
|
-
align-items center
|
539
|
-
justify-content center
|
540
|
-
|
541
|
-
.menus_items
|
542
|
-
position absolute
|
543
|
-
left 0
|
544
|
-
visibility hidden
|
545
|
-
opacity 0
|
546
|
-
|
547
|
-
#search-button
|
548
|
-
span
|
549
|
-
display none
|
550
|
-
|
551
524
|
#search-button
|
552
525
|
display inline
|
553
526
|
padding 0 .4rem
|
@@ -7,7 +7,7 @@
|
|
7
7
|
background linear-gradient(120deg, #5b27ff 0, #00d4ff 100%)
|
8
8
|
background-size 200%
|
9
9
|
animation gradient 15s ease infinite
|
10
|
-
width 59%
|
10
|
+
width 59.5%
|
11
11
|
|
12
12
|
.title1
|
13
13
|
opacity .8
|
@@ -28,7 +28,7 @@
|
|
28
28
|
justify-content center
|
29
29
|
align-items flex-start
|
30
30
|
flex-direction column
|
31
|
-
width 39%
|
31
|
+
width 39.5%
|
32
32
|
|
33
33
|
h2
|
34
34
|
margin-right auto
|
@@ -10,7 +10,8 @@
|
|
10
10
|
width 100% !important
|
11
11
|
|
12
12
|
&.mapAndInfo
|
13
|
-
width 59%
|
13
|
+
width 59.5%
|
14
|
+
gap .5rem
|
14
15
|
|
15
16
|
.author-content-item
|
16
17
|
+minWidth1300()
|
@@ -22,7 +23,6 @@
|
|
22
23
|
max-height 400px
|
23
24
|
position relative
|
24
25
|
overflow hidden
|
25
|
-
margin-bottom 0.5rem
|
26
26
|
height 60%
|
27
27
|
background-size 100%
|
28
28
|
transition 1s ease-in-out
|