hexo-theme-particlex 2.3.2 → 2.3.4
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -1
- package/_config.yml +1 -1
- package/layout/menu.ejs +2 -2
- package/layout/post.ejs +5 -6
- package/layout/script.ejs +5 -5
- package/package.json +1 -1
- package/source/css/particlex.css +3 -11
- package/source/js/functions.js +4 -7
- package/source/js/particlex.js +8 -7
package/README.md
CHANGED
package/_config.yml
CHANGED
package/layout/menu.ejs
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
<nav id="menu">
|
2
2
|
<div class="desktop-menu">
|
3
|
-
<a href="<%- config.root %>">
|
4
|
-
<span
|
3
|
+
<a class="title" href="<%- config.root %>">
|
4
|
+
<span><%= config.title.toUpperCase() %></span>
|
5
5
|
</a>
|
6
6
|
<% Object.keys(theme.menu).forEach(key => { %>
|
7
7
|
<a href="<%- url_for(theme.menu[key].src) %>">
|
package/layout/post.ejs
CHANGED
@@ -40,22 +40,20 @@
|
|
40
40
|
<%
|
41
41
|
const CryptoJS = crypto();
|
42
42
|
function sha(str) {
|
43
|
-
return CryptoJS.SHA256(str).toString(
|
43
|
+
return CryptoJS.SHA256(str).toString();
|
44
44
|
}
|
45
45
|
function encrypt(str, key) {
|
46
|
-
return CryptoJS.AES.encrypt(str,
|
47
|
-
mode: CryptoJS.mode.ECB,
|
48
|
-
padding: CryptoJS.pad.Pkcs7,
|
49
|
-
}).toString();
|
46
|
+
return CryptoJS.AES.encrypt(str, key).toString();
|
50
47
|
}
|
51
48
|
%>
|
52
|
-
<input id="crypto" class="input" placeholder="文章被加密,请输入密码" data-encrypt="<%- encrypt(page.content, page.password
|
49
|
+
<input id="crypto" class="input" placeholder="文章被加密,请输入密码" data-encrypt="<%- encrypt(page.content, page.password) %>" data-shasum="<%- sha(page.content) %>">
|
53
50
|
<div class="content" v-pre style="opacity: 0"></div>
|
54
51
|
<% } else { %>
|
55
52
|
<div class="content" v-pre>
|
56
53
|
<%- page.content %>
|
57
54
|
</div>
|
58
55
|
<% } %>
|
56
|
+
<% if (page.comments) { %>
|
59
57
|
<% if (theme.gitalk.enable) { %>
|
60
58
|
<div id="comment">
|
61
59
|
<div id="gitalk-container"></div>
|
@@ -76,4 +74,5 @@
|
|
76
74
|
<div id="twikoo-container"></div>
|
77
75
|
</div>
|
78
76
|
<% } %>
|
77
|
+
<% } %>
|
79
78
|
</div>
|
package/layout/script.ejs
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<script src="<%- url_for("/js/functions.js") %>"></script>
|
2
2
|
<script src="<%- url_for("/js/particlex.js") %>"></script>
|
3
|
-
<% if (type == "post") { %>
|
3
|
+
<% if (type == "post" && page.comments) { %>
|
4
4
|
<% if (theme.gitalk.enable) { %>
|
5
5
|
<script src="https://cdn.staticfile.org/gitalk/1.8.0/gitalk.min.js"></script>
|
6
6
|
<link rel="stylesheet" href="https://cdn.staticfile.org/gitalk/1.8.0/gitalk.min.css">
|
@@ -57,9 +57,9 @@
|
|
57
57
|
serverURL: "<%- theme.waline.serverURL %>",
|
58
58
|
commentCount: <%- theme.waline.commentCount %>,
|
59
59
|
pageview: <%- theme.waline.pageview %>,
|
60
|
-
emoji:
|
61
|
-
meta:
|
62
|
-
requiredMeta:
|
60
|
+
emoji: <%- JSON.stringify(theme.waline.emoji) %>,
|
61
|
+
meta: <%- JSON.stringify(theme.waline.meta) %>,
|
62
|
+
requiredMeta: <%- JSON.stringify(theme.waline.requiredMeta) %>,
|
63
63
|
lang: "<%- theme.waline.lang %>",
|
64
64
|
wordLimit: <%- theme.waline.wordLimit %>,
|
65
65
|
pageSize: "<%- theme.waline.pageSize %>",
|
@@ -73,7 +73,7 @@
|
|
73
73
|
<script>
|
74
74
|
twikoo.init({
|
75
75
|
el: "#twikoo-container",
|
76
|
-
envId: "<%- theme.twikoo.
|
76
|
+
envId: "<%- theme.twikoo.envID %>",
|
77
77
|
region: "<%- theme.twikoo.region %>",
|
78
78
|
path: <%- theme.twikoo.path %>,
|
79
79
|
lang: "<%- theme.twikoo.lang %>",
|
package/package.json
CHANGED
package/source/css/particlex.css
CHANGED
@@ -406,22 +406,14 @@
|
|
406
406
|
#menu .desktop-menu .title {
|
407
407
|
color: #555;
|
408
408
|
display: inline-block;
|
409
|
-
|
410
|
-
margin-
|
409
|
+
margin-left: 60px;
|
410
|
+
margin-right: 5px;
|
411
411
|
}
|
412
412
|
#menu .desktop-menu a {
|
413
413
|
color: #555;
|
414
414
|
display: inline-block;
|
415
415
|
margin-left: 30px;
|
416
416
|
}
|
417
|
-
#menu .desktop-menu a span img {
|
418
|
-
height: 20px;
|
419
|
-
top: 3px;
|
420
|
-
width: 20px;
|
421
|
-
}
|
422
|
-
#menu .desktop-menu a span:nth-child(1) {
|
423
|
-
margin-right: 5px;
|
424
|
-
}
|
425
417
|
#menu .phone-menu {
|
426
418
|
min-height: 50px;
|
427
419
|
text-align: center;
|
@@ -740,7 +732,7 @@ blockquote {
|
|
740
732
|
}
|
741
733
|
body {
|
742
734
|
background: #f6f8fa;
|
743
|
-
color: #
|
735
|
+
color: #000c;
|
744
736
|
font: 500 14px Lexend, "Noto Sans SC", sans-serif;
|
745
737
|
overflow-x: hidden;
|
746
738
|
width: 100%;
|
package/source/js/functions.js
CHANGED
@@ -54,15 +54,12 @@ function rendermath() {
|
|
54
54
|
});
|
55
55
|
}
|
56
56
|
function sha(str) {
|
57
|
-
return CryptoJS.SHA256(str).toString(
|
57
|
+
return CryptoJS.SHA256(str).toString();
|
58
58
|
}
|
59
|
-
function decrypt(
|
59
|
+
function decrypt(str, key, shasum) {
|
60
60
|
try {
|
61
|
-
let res = CryptoJS.AES.decrypt(
|
62
|
-
|
63
|
-
padding: CryptoJS.pad.Pkcs7,
|
64
|
-
}).toString(CryptoJS.enc.Utf8);
|
65
|
-
return { decrypt: res, check: sha(res) == check };
|
61
|
+
let res = CryptoJS.AES.decrypt(str, key).toString(CryptoJS.enc.Utf8);
|
62
|
+
return { decrypt: res, check: sha(res) === shasum };
|
66
63
|
} catch {
|
67
64
|
return { check: false };
|
68
65
|
}
|
package/source/js/particlex.js
CHANGED
@@ -45,14 +45,17 @@ const app = Vue.createApp({
|
|
45
45
|
});
|
46
46
|
}
|
47
47
|
window.addEventListener("scroll", this.handlescroll, true);
|
48
|
-
|
49
|
-
showimg();
|
50
|
-
rendermath();
|
48
|
+
this.render();
|
51
49
|
},
|
52
50
|
methods: {
|
53
51
|
homeclick() {
|
54
52
|
window.scrollTo({ top: window.innerHeight, behavior: "smooth" });
|
55
53
|
},
|
54
|
+
render() {
|
55
|
+
highlight();
|
56
|
+
showimg();
|
57
|
+
rendermath();
|
58
|
+
},
|
56
59
|
handlescroll() {
|
57
60
|
let newlocal = document.documentElement.scrollTop;
|
58
61
|
let menu = document.getElementById("menu");
|
@@ -71,16 +74,14 @@ const app = Vue.createApp({
|
|
71
74
|
handlecrypto() {
|
72
75
|
let input = document.getElementById("crypto"),
|
73
76
|
content = document.getElementsByClassName("content")[0];
|
74
|
-
let res = decrypt(input.dataset.encrypt, input.value, input.dataset.
|
77
|
+
let res = decrypt(input.dataset.encrypt, input.value, input.dataset.shasum);
|
75
78
|
if (res.check) {
|
76
79
|
input.disabled = true;
|
77
80
|
input.classList.remove("fail");
|
78
81
|
input.classList.add("success");
|
79
82
|
content.innerHTML = res.decrypt;
|
80
83
|
content.style.opacity = 1;
|
81
|
-
|
82
|
-
showimg();
|
83
|
-
rendermath();
|
84
|
+
this.render();
|
84
85
|
} else input.classList.add("fail");
|
85
86
|
},
|
86
87
|
handlesearch() {
|