UNPKG

5.79 kBJavaScriptView Raw
1function loadSideBarFriends(id, url) { //id=class name
2 var uri = url + "/pub/friends/";
3 var loadStyle = '<div class="qexo_loading"><div class="qexo_part"><div style="display: flex; justify-content: center"><div class="qexo_loader"><div class="qexo_inner one"></div><div class="qexo_inner two"></div><div class="qexo_inner three"></div></div></div></div><p style="text-align: center; display: block">友链加载中...</p></div>';
4 for (let i = 0; i < document.getElementsByClassName(id).length; i++) {
5 document.getElementsByClassName(id)[i].innerHTML = loadStyle;
6 }
7 document.getElementsByClassName(id)[1]
8 var ajax;
9 try {
10 // Firefox, Opera 8.0+, Safari
11 ajax = new XMLHttpRequest();
12 } catch (e) {
13 // Internet Explorer
14 try {
15 ajax = new ActiveXObject("Msxml2.XMLHTTP");
16 } catch (e) {
17 try {
18 ajax = new ActiveXObject("Microsoft.XMLHTTP");
19 } catch (e) {
20 alert("糟糕,你的浏览器不能上传文件!");
21 return false;
22 }
23 }
24 }
25 ajax.open("get", uri, true);
26 ajax.setRequestHeader("Content-Type", "text/plain");
27 ajax.onreadystatechange = function () {
28 if (ajax.readyState == 4) {
29 if (ajax.status == 200) {
30 var res = JSON.parse(ajax.response);
31 if (res["status"]) {
32 var friends = res["data"];
33 for (let i = 0; i < document.getElementsByClassName(id).length; i++) {
34 document.getElementsByClassName(id)[i].innerHTML = '';
35 }
36 for (let i = 0; i < friends.length; i++) {
37 for (let j = 0; j < document.getElementsByClassName(id).length; j++) {
38 document.getElementsByClassName(id)[j].innerHTML += '<li><a class="level is-mobile is-mobile" href="' + friends[i]["url"] + '" target="_blank" rel="noopener"><span class="level-left"><span class="level-item">' + friends[i]["name"] + '</span></span><span class="level-right"><span class="level-item tag">' + friends[i]["url"].split('/')[2] + '</span></span></a></li>';
39 }
40 }
41 } else {
42 console.log(res["data"]["msg"]);
43 }
44 } else {
45 console.log("友链获取失败! 网络错误");
46 }
47 }
48 };
49 ajax.send(null);
50}
51
52
53function loadSideBarTalks(id, url, limit) { //id=class name
54 var uri = url + "/pub/talks/?page=1&limit=" + limit;
55 var loadStyle = '<div class="qexo_loading"><div class="qexo_part"><div style="display: flex; justify-content: center"><div class="qexo_loader"><div class="qexo_inner one"></div><div class="qexo_inner two"></div><div class="qexo_inner three"></div></div></div></div><p style="text-align: center; display: block">说说加载中...</p></div>';
56 for (let i = 0; i < document.getElementsByClassName(id).length; i++) {
57 document.getElementsByClassName(id)[i].innerHTML = loadStyle;
58 }
59 document.getElementsByClassName(id)[1]
60 var ajax;
61 try {
62 // Firefox, Opera 8.0+, Safari
63 ajax = new XMLHttpRequest();
64 } catch (e) {
65 // Internet Explorer
66 try {
67 ajax = new ActiveXObject("Msxml2.XMLHTTP");
68 } catch (e) {
69 try {
70 ajax = new ActiveXObject("Microsoft.XMLHTTP");
71 } catch (e) {
72 alert("糟糕,你的浏览器不能上传文件!");
73 return false;
74 }
75 }
76 }
77 ajax.open("get", uri, true);
78 ajax.setRequestHeader("Content-Type", "text/plain");
79 ajax.onreadystatechange = function () {
80 if (ajax.readyState == 4) {
81 if (ajax.status == 200) {
82 var res = JSON.parse(ajax.response);
83 if (res["status"]) {
84 var talks = res["data"];
85 for (let i = 0; i < document.getElementsByClassName(id).length; i++) {
86 document.getElementsByClassName(id)[i].innerHTML = '';
87 }
88 for (let i = 0; i < talks.length; i++) {
89 var item = talks[i];
90 var date = new Date(item.time * 1000);
91 for (let j = 0; j < document.getElementsByClassName(id).length; j++) {
92 document.getElementsByClassName(id)[j].innerHTML +=
93 '<article class="media"><div class="media-content">' +
94 '<p class="title"><a href="#' + item.id + '">' + changeContent(item.content) + '</a></p>' +
95 '<p class="date">' + item.tags.join() + ' / ' + date.getFullYear() + "-" +
96 (date.getMonth() < 9 ? 0 : "") + (date.getMonth() + 1) + "-" + date.getDate() + '</p>' +
97 '</div></article>';
98 }
99 }
100 } else {
101 console.log(res["data"]["msg"]);
102 }
103 } else {
104 console.log("友链获取失败! 网络错误");
105 }
106 }
107 };
108 ajax.send(null);
109}
110
111// 从 butterfly 主题借鉴
112// https://github.com/jerryc127/hexo-theme-butterfly/blob/dev/layout/includes/third-party/newest-comments/twikoo-comment.pug
113function changeContent(content) {
114 if (content === '') return content;
115 content = content.replace(/<[^>]+>/g, ''); // remove html tag
116 if (content.length > 150) {
117 content = content.substring(0, 150) + '...';
118 }
119 return content;
120}
\No newline at end of file