hexo-theme-particlex 2.3.2 → 2.3.3

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/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 class="title"><%= config.title.toUpperCase() %></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(CryptoJS.enc.Base64);
43
+ return CryptoJS.SHA256(str).toString();
44
44
  }
45
45
  function encrypt(str, key) {
46
- return CryptoJS.AES.encrypt(str, sha(key), {
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.toString()) %>" data-check="<%- sha(page.content) %>">
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">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hexo-theme-particlex",
3
- "version": "2.3.2",
3
+ "version": "2.3.3",
4
4
  "description": "A concise Hexo theme, based on Particle.",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -406,22 +406,14 @@
406
406
  #menu .desktop-menu .title {
407
407
  color: #555;
408
408
  display: inline-block;
409
- font-family: Lexend, "Noto Sans SC", sans-serif;
410
- margin-left: 30px;
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: #000000d9;
735
+ color: #000c;
744
736
  font: 500 14px Lexend, "Noto Sans SC", sans-serif;
745
737
  overflow-x: hidden;
746
738
  width: 100%;
@@ -54,15 +54,12 @@ function rendermath() {
54
54
  });
55
55
  }
56
56
  function sha(str) {
57
- return CryptoJS.SHA256(str).toString(CryptoJS.enc.Base64);
57
+ return CryptoJS.SHA256(str).toString();
58
58
  }
59
- function decrypt(encrypt, key, check) {
59
+ function decrypt(str, key, shasum) {
60
60
  try {
61
- let res = CryptoJS.AES.decrypt(encrypt, sha(key), {
62
- mode: CryptoJS.mode.ECB,
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
  }
@@ -45,14 +45,17 @@ const app = Vue.createApp({
45
45
  });
46
46
  }
47
47
  window.addEventListener("scroll", this.handlescroll, true);
48
- highlight();
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.check);
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
- highlight();
82
- showimg();
83
- rendermath();
84
+ this.render();
84
85
  } else input.classList.add("fail");
85
86
  },
86
87
  handlesearch() {