From ebe51c2356a714ed210e824135aafb2600446078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=AA=E5=AD=90?= Date: Fri, 14 Jun 2024 14:03:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hugo.toml | 7 +- themes/farallon/README.md | 155 ------- themes/farallon/README_CN.md | 153 ------- themes/farallon/assets/images/favicon.png | Bin 15406 -> 351 bytes themes/farallon/assets/images/logo.jpeg | Bin 29556 -> 14763 bytes themes/farallon/assets/scss/app.scss | 29 +- themes/farallon/assets/scss/modules/_db.scss | 140 ++---- .../farallon/assets/scss/modules/graph.scss | 2 + .../assets/scss/templates/single.scss | 42 +- themes/farallon/assets/ts/action.ts | 152 +++++++ themes/farallon/assets/ts/app.ts | 254 ++++------- themes/farallon/assets/ts/comment.ts | 43 +- themes/farallon/assets/ts/date.ts | 88 ++++ themes/farallon/assets/ts/db.ts | 309 +++++++------- themes/farallon/assets/ts/utils.ts | 39 ++ themes/farallon/go.mod | 3 - .../layouts/_default/_markup/render-link.html | 5 +- themes/farallon/layouts/_default/list.html | 4 +- themes/farallon/layouts/_default/single.html | 50 ++- themes/farallon/layouts/index.html | 397 +----------------- themes/farallon/layouts/page/about.html | 23 + themes/farallon/layouts/page/gears.html | 24 ++ themes/farallon/layouts/page/links.html | 22 + themes/farallon/layouts/page/movies.html | 8 + themes/farallon/layouts/page/search.html | 79 ++++ themes/farallon/layouts/partials/footer.html | 12 +- themes/farallon/layouts/partials/head.html | 5 +- themes/farallon/layouts/partials/memo.html | 3 +- .../farallon/layouts/partials/navigation.html | 2 +- themes/farallon/layouts/partials/post.html | 11 +- themes/farallon/layouts/partials/twikoo.html | 9 + 31 files changed, 861 insertions(+), 1209 deletions(-) delete mode 100644 themes/farallon/README.md delete mode 100644 themes/farallon/README_CN.md create mode 100644 themes/farallon/assets/ts/action.ts create mode 100644 themes/farallon/assets/ts/date.ts create mode 100644 themes/farallon/assets/ts/utils.ts delete mode 100644 themes/farallon/go.mod create mode 100644 themes/farallon/layouts/page/about.html create mode 100644 themes/farallon/layouts/page/gears.html create mode 100644 themes/farallon/layouts/page/links.html create mode 100644 themes/farallon/layouts/page/movies.html create mode 100644 themes/farallon/layouts/page/search.html create mode 100644 themes/farallon/layouts/partials/twikoo.html diff --git a/hugo.toml b/hugo.toml index bfc0213..4176c0f 100644 --- a/hugo.toml +++ b/hugo.toml @@ -47,6 +47,7 @@ theme = 'farallon' authorName = '老孙' authorDescription = '资深网民孙先生' authorAvatar = 'https://i.sunpeiwen.com/source/img/logo.jpg' + icon = 'https://i.sunpeiwen.com/source/img/logo.jpg' commentDomain = '' telegram = 'https://t.me/s/imsunpw' feed = '/index.xml' @@ -54,12 +55,16 @@ theme = 'farallon' instagram = 'https://www.instagram.com/imsunpw/' github = 'https://github.com/jkjoy' footer_sns = true + post_like = true + post_view = true + actionDomain = 'https://v.wpista.com/' + dbAPIBase = 'https://db.imsun.org/' + twikoo = 'https://twikoo.ima.cm/' [outputs] home = [ "HTML","JSON","RSS","SITEMAP"] page = ["HTML"] - [markup.tableOfContents] endLevel = 5 startLevel = 3 \ No newline at end of file diff --git a/themes/farallon/README.md b/themes/farallon/README.md deleted file mode 100644 index ae1823a..0000000 --- a/themes/farallon/README.md +++ /dev/null @@ -1,155 +0,0 @@ -# Hugo Theme Farallon - -![Hugo Theme Farallon](https://static.fatesinger.com/2023/06/u1ak8xgmyn9ec24r.png) - -Farallon is a simple single column hugo theme with perfect performace and elegance design. - -## Usage - -``` -git submodule add https://github.com/bigfa/hugo-theme-farallon.git themes/farallon - -echo "theme = 'farallon'" >> hugo.toml -``` - -[Full demo site](https://github.com/bigfa/bigfa.github.io) - -## Release Notes - -### 0.3.7 - -- add footer sns icons - -### 0.3.6 - -- add post category card -- add github icon - -### 0.3.5 - -- add author sns icons - -### 0.3.4 - -- change category file name - -### 0.3.3 - -- add post type memo - -### 0.3.2 - -- add story author card - -### 0.3.1 - -- add sticky icon -- fixed db list style in dark mode - -### 0.3.0 - -- add search - -### 0.2.11 - -- add link shortcode - -### 0.2.10 - -- fixed category list and tag list style -- relative time support i18n - -### 0.2.9 - -- fixed url render error -- add friend links template - -### 0.2.8 - -- add `pre` and `code` style - -### 0.2.7 - -- refactory taxonomy - -### 0.2.6 - -- toc style changed - -### 0.2.5 - -- Fixed ol list style error - -### 0.2.4 - -- Added a gear template - -### 0.2.3 - -- Added a “back to top” button. - -### 0.2.2 - -- Added support for table of contents (TOC). - -### 0.2.1 - -- Fixed compatibility issues with older versions of SCSS. - -### 0.2.0 - -- Added dark mode support. -- Fixed footer style issues on mobile devices. - -### 0.1.0 - -- Added theme information. - -### 0.0.8 - -- Fixed date formatting issue on Safari browser. - -### 0.0.7 - -- Changed to local item retrieval without the need for a token. - -### 0.0.6 - -- Added support for Douban items. - -Usage: - -Scan the QR code with WeChat at https://node.wpista.com/. - -Enter your Douban numeric ID and click “Save” to automatically sync your Douban records. - -Click “Get integration token” to generate a token. - -Add the following parameter to your site configuration: - -``` -[params] -wpdToken = 'token generated above' -``` - -### 0.0.5 - -- Fixed styling issues on category/tag pages. - -### 0.0.4 - -- Added relative time display. -- Included sample data. - -### 0.0.3 - -- Used normalize.css. - -### 0.0.2 - -- Added menu settings. -- Added a parameter to control the display of site owner information. - -### 0.0.1 - -- Initial setup. diff --git a/themes/farallon/README_CN.md b/themes/farallon/README_CN.md deleted file mode 100644 index 827e5f0..0000000 --- a/themes/farallon/README_CN.md +++ /dev/null @@ -1,153 +0,0 @@ -# Hugo Theme Farallon - -![Hugo 主题 Farallon](https://static.fatesinger.com/2023/06/u1ak8xgmyn9ec24r.png) - -## 使用方法 - -``` -git submodule add https://github.com/bigfa/hugo-theme-farallon.git themes/farallon - -echo "theme = 'farallon'" >> hugo.toml -``` - -[完整演示站点](https://github.com/bigfa/bigfa.github.io) - -## Release Note - -### 0.3.7 - -- 增加页脚 SNS 图标 - -### 0.3.6 - -- 增加文章分类卡片 -- 增加 Github 图标 - -### 0.3.5 - -- 增加作者 SNS 图标 - -### 0.3.4 - -- 修改分类文件名 - -### 0.3.3 - -- 增加状态文章格式 - -### 0.3.2 - -- 文章页增加作者信息 - -### 0.3.1 - -- 增加置顶标识 -- 修复豆瓣页面暗黑模式下的样式问题 - -### 0.3.0 - -- 增加搜索 - -### 0.2.11 - -- 文章内链短代码 - -### 0.2.10 - -- 修正分类和标签归档页样式问题 -- 相对时间多语言支持 - -### 0.2.9 - -- 修复链接渲染错误 -- 增加友情链接页面模版 - -### 0.2.8 - -- 增加 `pre` 和 `code` 标签样式 - -### 0.2.7 - -- 整理分类页面 - -### 0.2.6 - -- 文章目录样式更新 - -### 0.2.5 - -- 有序列表样式修正 - -### 0.2.4 - -- 增加了一个卡片页面 - -### 0.2.3 - -- 增加了返回顶部按钮 - -### 0.2.2 - -- 增加 TOC 支持 - -### 0.2.1 - -- 修复 scss 低版本兼容性问题 - -### 0.2.0 - -- 增加暗黑模式支持 -- 修复移动端 footer 样式问题 - -### 0.1.0 - -- 添加主题信息 - -### 0.0.8 - -- 修复 safari 浏览器下时间格式化错误的问题 - -### 0.0.7 - -- 修改为本地获取条目,无需设置 token - -### 0.0.6 - -- 新增豆瓣条目支持 - -使用方法 - -微信扫码登录https://node.wpista.com/ - -输入你的豆瓣数字 id,点击保存即可自动同步豆瓣记录。 - -点击 Get integration token 会生成一个 token。 - -在你的站点配置中加入参数 - -``` -[params] - wpdToken= '上面生成的token' -``` - -### 0.0.5 - -- 修复分类页/标签页样式错误 - -### 0.0.4 - -- 增加相对时间 -- 加入示例数据 - -### 0.0.3 - -- 使用`normalize.css` - -### 0.0.2 - -- 增加菜单设置 -- 增加一个是否显示站长信息的参数 - -### 0.0.1 - -初始化 diff --git a/themes/farallon/assets/images/favicon.png b/themes/farallon/assets/images/favicon.png index a44155beaf1d406d4642f9f55a2a5b0977c7ebe0..8ca5e961a25bf2c74aa0dbf52e97c06a950d1937 100644 GIT binary patch literal 351 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 diff --git a/themes/farallon/assets/images/logo.jpeg b/themes/farallon/assets/images/logo.jpeg index 4a430adee92b919fb6d7f96ad60592c5807a11de..f6c2ee58c2d1e71aadc0ce5d0c210a2dd3186346 100644 GIT binary patch delta 14468 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

+e zJBCJQ)(X47vI`&?ImX7)>ET%H*Nwyh#K!k~$gAjFi&Mp%al@Rr!XIT|!+dAn%ycx=~R@kS) z|BWb(_>_cm3h+&VnSWHj#+A4hx7XqKyiLby_uoP!XX$UPr^#UeV`-YwfTeo@$=V^j}_kt2#9$ZT;yn zlLyFbz`Xqb65IW|`~OpC_b;0r$I0ELO*Ddn@++Xr{?qD#3X=)P!yk|! zKTf{(4T9?u(aa+Y?DXFPhgPTWq=f}0>Y?D+H{{f0pxF?U{p|ZGPL>kLwr5IzadpKr zSJ5xYfDsb=iU@Qx!@sy@zpno5-1M9EFHam=N7`Y2q8TN>xMJEsn6d--oD8}^Y*U40 zjc;|T_{CM|i;vFziht48j(md8odM<1qcBFyJz|7JBLP6=`{V+cP0>aJN6 z^ba4lkZ3F@_dshb4Ic=KhdFE?TOJ-p{Je69w9txQJ6yO-gm-|>lRS9j7nf}*o}-dn a6A#9x)^38OX^CcO08 { + res.json().then((data) => { + ( + document.querySelector(this.viewSelector) as HTMLElement + ).innerText = data.views + this.text; + }); + }); + } + + initArticlesView() { + const articles: HTMLElement[] = Array.from( + document.querySelectorAll(this.articleSelector) + ); + + if (articles.length === 0) return; + + let ids: Array = []; + articles.forEach((article: HTMLElement) => { + return ids.push(article.dataset.id!); + }); + + const idsString = ids.join(","); + + fetch(this.actionDomain + "post/views?post_ids=" + idsString).then( + (res) => { + res.json().then((data) => { + const result = data.results; + articles.forEach((article: HTMLElement) => { + if (!article.querySelector(this.viewSelector)) return; + ( + article.querySelector( + this.viewSelector + ) as HTMLElement + ).innerText = + (result.find( + (item: any) => + item.post_id == article.dataset.id + ) + ? result.find( + (item: any) => + item.post_id == article.dataset.id + ).views + : 0) + this.text; + }); + }); + } + ); + } + + initArticleLike() { + this.likeButton = document.querySelector(this.likeButtonSelctor); + if (this.likeButton) { + fetch(this.actionDomain + "post/" + this.post_id + "/like").then( + (res) => { + res.json().then((data) => { + ( + this.likeButton!.querySelector( + ".count" + ) as HTMLElement + ).innerText = data.likes; + }); + } + ); + + this.likeButton.addEventListener("click", () => { + this.handleLike(); + }); + if (this.getCookie("like_" + this.post_id)) { + this.likeButton.classList.add("is-active"); + } + } + } + + handleLike() { + if (this.getCookie("like_" + this.post_id)) { + return this.showNotice("You have already liked this post"); + } + if (this.likeButton) { + const url = this.actionDomain + "post/" + this.post_id + "/like"; + fetch(url, { + method: "post", + }) + .then((response) => { + return response.json(); + }) + .then((data) => { + this.showNotice("Thanks for your like"); + const countElement = this.likeButton?.querySelector( + ".count" + ) as HTMLElement; + if (countElement) { + countElement.innerText = data.likes; + } + this.setCookie("like_" + this.post_id, "1", 1); + }); + this.likeButton?.classList.add("is-active"); + } + } +} + +export default farallonActions; diff --git a/themes/farallon/assets/ts/app.ts b/themes/farallon/assets/ts/app.ts index 1c49f8f..2bf1a15 100644 --- a/themes/farallon/assets/ts/app.ts +++ b/themes/farallon/assets/ts/app.ts @@ -1,34 +1,65 @@ -//@ts-nocheck -class farallonDate { - selector: string; - timeFormat: any = { - second: "second ago", - seconds: "seconds ago", - minute: "minute ago", - minutes: "minutes ago", - hour: "hour ago", - hours: "hours ago", - day: "day ago", - days: "days ago", - week: "week ago", - weeks: "weeks ago", - month: "month ago", - months: "months ago", - year: "year ago", - years: "years ago", - }; - doms: Array = []; - VERSION: string = "0.3.7"; - constructor(config: any) { - this.selector = config.selector; - if (config.timeFormat) { - this.timeFormat = config.timeFormat; - } - this.init(); - setTimeout(() => { - this.refresh(); - }, 1000 * 5); +import { farallonHelper } from "./utils"; +import farallonDate from "./date.ts"; +import farallonActions from "./action.ts"; +import { farallonComment } from "./comment.ts"; +import Douban from "./db.ts"; +declare global { + interface Window { + actionDomain: string; + timeFormat: string; + dbAPIBase: string; + } +} +class farallonBase extends farallonHelper { + is_single: boolean = false; + post_id: number = 0; + is_archive: boolean = false; + VERSION: string = "0.4.3"; + like_btn: any; + selctor: string = ".like-btn"; + actionDomain: string = window.actionDomain; + constructor() { + super(); + this.initCopyright(); + this.initThemeSwitch(); + this.initBack2Top(); + this.initSearch(); + } + initSearch() { + document + .querySelector('[data-action="show-search"]')! + .addEventListener("click", () => { + document + .querySelector(".site--header__center .inner")! + .classList.toggle("search--active"); + }); + } + + initBack2Top() { + if (document.querySelector(".backToTop")) { + const backToTop = document.querySelector( + ".backToTop" + ) as HTMLElement; + window.addEventListener("scroll", () => { + const t = window.scrollY || window.pageYOffset; + // console.log(t); + // const documentHeight = document.body.clientHeight; + //const windowHeight = window.innerHeight; + // const percent = Math.ceil((t / (documentHeight - windowHeight)) * 100); + + t > 200 + ? backToTop!.classList.add("is-active") + : backToTop!.classList.remove("is-active"); + }); + + backToTop.addEventListener("click", () => { + window.scrollTo({ top: 0, behavior: "smooth" }); + }); + } + } + + initCopyright() { const copyright = `

`; @@ -46,75 +77,7 @@ class farallonDate { }); } - init() { - this.doms = Array.from(document.querySelectorAll(this.selector)); - this.doms.forEach((dom: any) => { - dom.innerText = this.humanize_time_ago( - dom.attributes["datetime"].value - ); - }); - } - - humanize_time_ago(datetime: string) { - const time = new Date(datetime); - const between: number = - Date.now() / 1000 - Number(time.getTime() / 1000); - if (between < 3600) { - return `${Math.ceil(between / 60)} ${ - Math.ceil(between / 60) == 1 - ? this.timeFormat.second - : this.timeFormat.seconds - }`; - } else if (between < 86400) { - return `${Math.ceil(between / 3600)} ${ - Math.ceil(between / 3660) == 1 - ? this.timeFormat.hour - : this.timeFormat.hours - }`; - } else if (between < 86400 * 30) { - return `${Math.ceil(between / 86400)} ${ - Math.ceil(between / 86400) == 1 - ? this.timeFormat.day - : this.timeFormat.days - }`; - } else if (between < 86400 * 30 * 12) { - return `${Math.ceil(between / (86400 * 30))} ${ - Math.ceil(between / (86400 * 30)) == 1 - ? this.timeFormat.month - : this.timeFormat.months - }`; - } else { - return ( - time.getFullYear() + - "-" + - (time.getMonth() + 1) + - "-" + - time.getDate() - ); - } - } - - refresh() { - this.doms.forEach((dom: any) => { - dom.innerText = this.humanize_time_ago( - dom.attributes["datetime"].value - ); - }); - } -} - -new farallonDate({ - selector: ".humane--time", - //@ts-ignore - timeFormat: window.timeFormat, -}); - -class farallonBase { - is_single: boolean = false; - post_id: number = 0; - is_archive: boolean = false; - VERSION: string = "0.2.3"; - constructor() { + initThemeSwitch() { const theme = localStorage.getItem("theme") ? localStorage.getItem("theme") : "auto"; @@ -165,25 +128,26 @@ class farallonBase { if (item.classList.contains("is-active")) return; document .querySelectorAll(".fixed--theme span") - .forEach((item) => { + .forEach((item: Element) => { item.classList.remove("is-active"); }); - // @ts-ignore - if (item.dataset.actionValue == "dark") { + if ((item as HTMLElement).dataset.actionValue == "dark") { localStorage.setItem("theme", "dark"); document.querySelector("body")!.classList.remove("auto"); document.querySelector("body")!.classList.add("dark"); item.classList.add("is-active"); //this.showNotice('夜间模式已开启'); - // @ts-ignore - } else if (item.dataset.actionValue == "light") { + } else if ( + (item as HTMLElement).dataset.actionValue == "light" + ) { localStorage.setItem("theme", "light"); document.querySelector("body")!.classList.remove("auto"); document.querySelector("body")!.classList.remove("dark"); item.classList.add("is-active"); //this.showNotice('夜间模式已关闭'); - // @ts-ignore - } else if (item.dataset.actionValue == "auto") { + } else if ( + (item as HTMLElement).dataset.actionValue == "auto" + ) { localStorage.setItem("theme", "auto"); document.querySelector("body")!.classList.remove("dark"); document.querySelector("body")!.classList.add("auto"); @@ -192,68 +156,24 @@ class farallonBase { } }); }); - - if (document.querySelector(".backToTop")) { - const backToTop = document.querySelector( - ".backToTop" - ) as HTMLElement; - window.addEventListener("scroll", () => { - const t = window.scrollY || window.pageYOffset; - // console.log(t); - // const documentHeight = document.body.clientHeight; - //const windowHeight = window.innerHeight; - // const percent = Math.ceil((t / (documentHeight - windowHeight)) * 100); - - t > 200 - ? backToTop!.classList.add("is-active") - : backToTop!.classList.remove("is-active"); - }); - - backToTop.addEventListener("click", () => { - window.scrollTo({ top: 0, behavior: "smooth" }); - }); - } - - document - .querySelector('[data-action="show-search"]')! - .addEventListener("click", () => { - document - .querySelector(".site--header__center .inner")! - .classList.toggle("search--active"); - }); - } - - getCookie(t: any) { - if (0 < document.cookie.length) { - var e = document.cookie.indexOf(t + "="); - if (-1 != e) { - e = e + t.length + 1; - var n = document.cookie.indexOf(";", e); - return ( - -1 == n && (n = document.cookie.length), - document.cookie.substring(e, n) - ); - } - } - return ""; - } - - setCookie(t: any, e: any, n: any) { - var o = new Date(); - o.setTime(o.getTime() + 24 * n * 60 * 60 * 1e3); - var i = "expires=" + o.toUTCString(); - document.cookie = t + "=" + e + ";" + i + ";path=/"; - } - - showNotice(message: any, type: any = "success") { - const html = `
${message}
`; - - document.querySelector("body")!.insertAdjacentHTML("beforeend", html); - document.querySelector(".notice--wrapper")!.classList.add("is-active"); - setTimeout(() => { - document.querySelector(".notice--wrapper")!.remove(); - }, 3000); } } +new farallonActions({ + singleSelector: ".post--single", + articleSelector: ".post--item", + likeButtonSelctor: ".like-btn", + actionDomain: window.actionDomain, +}); + new farallonBase(); +new farallonDate({ + selector: ".humane--time", + timeFormat: window.timeFormat, +}); +new farallonComment(); + +new Douban({ + baseAPI: window.dbAPIBase, + container: ".db--container", +}); diff --git a/themes/farallon/assets/ts/comment.ts b/themes/farallon/assets/ts/comment.ts index d87b9b7..99e3240 100644 --- a/themes/farallon/assets/ts/comment.ts +++ b/themes/farallon/assets/ts/comment.ts @@ -1,5 +1,4 @@ -//@ts-nocheck -class farallonComment { +export class farallonComment { loading: boolean = false; post_id: any; total: any = 0; @@ -8,15 +7,16 @@ class farallonComment { constructor() { if (!document.querySelector(".post--ingle__comments")) return; - this.post_id = document.querySelector( - ".post--ingle__comments" - )!.dataset.id; + this.post_id = ( + document.querySelector(".post--ingle__comments") as HTMLElement + ).dataset.id; this.fetchComments(); this.init(); } fetchComments() { fetch( + // @ts-ignore window.commentDomain + "/post/" + this.post_id + @@ -58,9 +58,11 @@ class farallonComment { @@ -93,8 +95,9 @@ class farallonComment { @@ -158,8 +161,9 @@ class farallonComment { (value, key: any) => (formDataObj[key] = value) ); this.loading = true; - // @ts-ignore fetch( + // @ts-ignore + window.commentDomain + "/post/" + this.post_id + @@ -205,20 +209,23 @@ class farallonComment { `; // @ts-ignore - const parent_id = + const parent_id = ( document.querySelector( "#comment_parent" - )?.value; + ) as HTMLInputElement + )?.value; // @ts-ignore (a.style.display = "none"), // @ts-ignore (a.onclick = null), // @ts-ignore - (document.getElementById( - "comment_parent" + (( + document.getElementById( + "comment_parent" + ) as HTMLInputElement ).value = "0"), n && // @ts-ignore i && // @ts-ignore - (n.parentNode.insertBefore(i, n), - n.parentNode.removeChild(n)); + n.parentNode && + n.parentNode.removeChild(n); if (document.querySelector(".comment-body__fresh")) document .querySelector(".comment-body__fresh") @@ -264,5 +271,3 @@ class farallonComment { } } } - -new farallonComment(); diff --git a/themes/farallon/assets/ts/date.ts b/themes/farallon/assets/ts/date.ts new file mode 100644 index 0000000..1190076 --- /dev/null +++ b/themes/farallon/assets/ts/date.ts @@ -0,0 +1,88 @@ +class farallonDate { + readonly selector: string; + timeFormat: any = { + second: "second ago", + seconds: "seconds ago", + minute: "minute ago", + minutes: "minutes ago", + hour: "hour ago", + hours: "hours ago", + day: "day ago", + days: "days ago", + week: "week ago", + weeks: "weeks ago", + month: "month ago", + months: "months ago", + year: "year ago", + years: "years ago", + }; + doms: Array = []; + constructor(config: any) { + this.selector = config.selector; + if (config.timeFormat) { + this.timeFormat = config.timeFormat; + } + this.init(); + setTimeout(() => { + this.refresh(); + }, 1000 * 5); + } + + init() { + this.doms = Array.from(document.querySelectorAll(this.selector)); + this.doms.forEach((dom: any) => { + dom.innerText = this.humanize_time_ago( + dom.attributes["datetime"].value + ); + }); + } + + humanize_time_ago(datetime: string) { + const time = new Date(datetime); + const between: number = + Date.now() / 1000 - Number(time.getTime() / 1000); + if (between < 3600) { + return `${Math.ceil(between / 60)} ${ + Math.ceil(between / 60) == 1 + ? this.timeFormat.second + : this.timeFormat.seconds + }`; + } else if (between < 86400) { + return `${Math.ceil(between / 3600)} ${ + Math.ceil(between / 3660) == 1 + ? this.timeFormat.hour + : this.timeFormat.hours + }`; + } else if (between < 86400 * 30) { + return `${Math.ceil(between / 86400)} ${ + Math.ceil(between / 86400) == 1 + ? this.timeFormat.day + : this.timeFormat.days + }`; + } else if (between < 86400 * 30 * 12) { + return `${Math.ceil(between / (86400 * 30))} ${ + Math.ceil(between / (86400 * 30)) == 1 + ? this.timeFormat.month + : this.timeFormat.months + }`; + } else { + return ( + time.getFullYear() + + "-" + + (time.getMonth() + 1) + + "-" + + time.getDate() + ); + } + } + + refresh() { + this.doms.forEach((dom: any) => { + dom.innerText = this.humanize_time_ago( + dom.attributes["datetime"].value + ); + }); + } +} + +export default farallonDate; diff --git a/themes/farallon/assets/ts/db.ts b/themes/farallon/assets/ts/db.ts index eb7ee97..96022c2 100644 --- a/themes/farallon/assets/ts/db.ts +++ b/themes/farallon/assets/ts/db.ts @@ -1,109 +1,140 @@ -class FARALLON_DOUBAN { - ver: string; +interface StatusObject { + name: string; + value: string; +} + +interface DoubanConfig { + baseAPI: string; + container: string; + types?: Array; + onChange?: (value: string) => void; +} + +interface DoubanObject { + subject_id: string; + name: string; + card_subtitle: string; + create_time: any; + douban_score: string; + link: string; + type: string; + poster: string; + pubdate: string; + year: string; + status: string; +} + +class Douban { + readonly ver: string; type: any; finished: boolean; paged: number; - genre_list: Array; - subjects: Array; - genre: Array; - baseAPI: string = "https://node.wpista.com/v1/outer/"; - token: string; - - constructor(config: any) { - this.ver = "1.0.1"; + genre_list: Array; + subjects: Array; + status: string; + baseAPI: string; + types: Array; + container: string; + constructor(config: DoubanConfig) { + this.container = config.container; + this.types = config.types ?? [ + "movie", + "book", + "music", + "game", + "drama", + ]; + this.baseAPI = config.baseAPI; + this.ver = "1.0.6"; this.type = "movie"; + this.status = "done"; this.finished = false; this.paged = 1; - this.genre_list = []; - this.genre = []; + this.genre_list = [ + { + name: "已看", + value: "done", + }, + { + name: "在看", + value: "doing", + }, + { + name: "想看", + value: "mark", + }, + ]; this.subjects = []; - this.token = config.token; this._create(); } - on(t: any, e: any, n: any) { - var a = document.querySelectorAll(e); - a.forEach((item) => { - item.addEventListener(t, n); + on(event: string, element: string, callback: any) { + const nodeList: NodeList = document.querySelectorAll(element); + nodeList.forEach((item) => { + item.addEventListener(event, callback); }); } - _fetchGenres() { - document.querySelector(".db--genres")!.innerHTML = ""; - fetch( - this.baseAPI + "genres?token=" + this.token + "&type=" + this.type - ) - .then((response) => response.json()) - .then((t) => { - // @ts-ignore - if (t.data.length) { - this.genre_list = t.data; - this._renderGenre(); - } - }); - } - - _handleGenreClick() { - this.on("click", ".db--genreItem", (t: any) => { + _handleGenreClick(): void { + this.on("click", ".db--genreItem", (t: MouseEvent) => { const self = t.currentTarget as HTMLElement; if (self.classList.contains("is-active")) { - const index = this.genre.indexOf(self.innerText); - self.classList.remove("is-active"); - this.genre.splice(index, 1); - this.paged = 1; - this.finished = false; - this.subjects = []; - this._fetchData(); return; } document.querySelector(".db--list")!.innerHTML = ""; document.querySelector(".lds-ripple")!.classList.remove("u-hide"); - self.classList.add("is-active"); - this.genre.push(self.innerText); + this.status = self.dataset.status || ""; // Provide a default value of an empty string if self.dataset.status is undefined + this._renderGenre(); this.paged = 1; this.finished = false; this.subjects = []; this._fetchData(); - return; }); } - _renderGenre() { + _reanderTypes(): void { + document.querySelector(".db--nav")!.innerHTML = this.types + .map((item: string) => { + return `${item}`; + }) + .join(""); + this._handleNavClick(); + } + + _renderGenre(): void { document.querySelector(".db--genres")!.innerHTML = this.genre_list - .map((item: any) => { + .map((item: StatusObject) => { return `${item.name}`; + this.status == item.value ? " is-active" : "" + }" data-status="${item.value}">${item.name}`; }) .join(""); this._handleGenreClick(); } - _fetchData() { - fetch( - this.baseAPI + - "faves?token=" + - this.token + - "&type=" + - this.type + - "&paged=" + - this.paged + - "&genre=" + - JSON.stringify(this.genre) - ) + _fetchData(): void { + const params: URLSearchParams = new URLSearchParams({ + paged: this.paged.toString(), + type: this.type, + status: this.status, + }); + fetch(this.baseAPI + "list?" + params.toString()) .then((response) => response.json()) .then((t: any) => { - if (t.data.length) { + console.log(t.results); + if (t.results.length) { if ( document .querySelector(".db--list")! .classList.contains("db--list__card") ) { - this.subjects = [...this.subjects, ...t.data]; + this.subjects = [...this.subjects, ...t.results]; this._randerDateTemplate(); } else { - this.subjects = [...this.subjects, ...t.data]; + this.subjects = [...this.subjects, ...t.results]; this._randerListTemplate(); } document @@ -118,7 +149,7 @@ class FARALLON_DOUBAN { }); } - _randerDateTemplate() { + _randerDateTemplate(): void { const result = this.subjects.reduce((result, item) => { const date = new Date(item.create_time); const year = date.getFullYear(); @@ -135,14 +166,12 @@ class FARALLON_DOUBAN { let html = ``; for (let key in result) { const date = key.split("-"); - html += `
${date[1]}
${date[0]}
`; + html += `
${date[1]}
${date[0]}
`; html += result[key] .map((movie: any) => { - return `
${ - movie.is_top250 - ? 'Top 250' - : "" - }
${ movie.douban_score > 0 @@ -161,22 +190,20 @@ class FARALLON_DOUBAN { document.querySelector(".db--list")!.innerHTML = html; } - _randerListTemplate() { + _randerListTemplate(): void { document.querySelector(".db--list")!.innerHTML = this.subjects - .map((item: any) => { - return `
${ - item.is_top250 ? 'Top 250' : "" - }
${ item.create_time }
${ - item.douban_score > 0 + item.douban_score ? '' + item.douban_score : "" }${ - item.year > 0 ? " · " + item.year : "" + item.year ? " · " + item.year : "" }
@@ -186,7 +213,7 @@ class FARALLON_DOUBAN { .join(""); } - _handleScroll() { + _handleScroll(): void { window.addEventListener("scroll", () => { var t = window.scrollY || window.pageYOffset; const moreElement = document.querySelector( @@ -208,25 +235,18 @@ class FARALLON_DOUBAN { }); } - _handleNavClick() { - this.on("click", ".db--navItem", (t: any) => { - if (t.currentTarget.classList.contains("current")) return; - this.genre = []; - this.type = t.currentTarget.dataset.type; - if (this.type != "book") { - this._fetchGenres(); - document - .querySelector(".db--genres") - ?.classList.remove("u-hide"); - } else { - document.querySelector(".db--genres")!.classList.add("u-hide"); - } + _handleNavClick(): void { + this.on("click", ".db--navItem", (t: MouseEvent) => { + const self = t.currentTarget as HTMLElement; + if (self.classList.contains("current")) return; + this.status = "done"; + this.type = self.dataset.type; + this._renderGenre(); document.querySelector(".db--list")!.innerHTML = ""; document.querySelector(".lds-ripple")!.classList.remove("u-hide"); document .querySelector(".db--navItem.current")! .classList.remove("current"); - const self = t.target; self.classList.add("current"); this.paged = 1; this.finished = false; @@ -235,35 +255,26 @@ class FARALLON_DOUBAN { }); } - _create() { + _create(): void { if (document.querySelector(".db--container")) { const container = document.querySelector( - ".db--container" + this.container ) as HTMLElement; - if (container.dataset.token) { - this.token = container.dataset.token; - } else { - return; - } - const currentNavItem = document.querySelector( - ".db--navItem.current" - ); - if (currentNavItem instanceof HTMLElement) { - this.type = currentNavItem.dataset.type; - } - const currentType = document.querySelector( - ".db--list" - ) as HTMLElement; - if (currentType.dataset.type) this.type = currentType.dataset.type; - if (this.type == "movie") { - document - .querySelector(".db--genres")! - .classList.remove("u-hide"); - } - this._fetchGenres(); + if (!container) return; + container.innerHTML = ` +
+
+
+
+
+
+
+
`; + this._renderGenre(); + this._reanderTypes(); this._fetchData(); this._handleScroll(); - this._handleNavClick(); } if (document.querySelector(".js-db")) { @@ -272,10 +283,7 @@ class FARALLON_DOUBAN { const id = db.dataset.id; const type = db.dataset.type; const nodeParent = db.parentNode as HTMLElement; - fetch( - // @ts-ignore - this.baseAPI + `${type}/${id}?token=${this.token}` - ).then((response) => { + fetch(this.baseAPI + `${type}/${id}`).then((response) => { response.json().then((t) => { if (t.data) { const data = t.data; @@ -305,14 +313,13 @@ class FARALLON_DOUBAN { } } - _fetchCollection(item: any) { + _fetchCollection(item: any): void { const type = item.dataset.style ? item.dataset.style : "card"; fetch( - // @ts-ignore - obvInit.api + - "v1/movies?type=" + + this.baseAPI + + "/list?type=" + item.dataset.type + - "&paged=1&genre=&start_time=" + + "&paged=1&start_time=" + item.dataset.start + "&end_time=" + item.dataset.end @@ -322,39 +329,30 @@ class FARALLON_DOUBAN { if (t.length) { if (type == "card") { item.innerHTML += t - .map((movie: any) => { + .map((movie: DoubanObject) => { return `
-
Marked ${ - movie.create_time - }
-
${ - movie.douban_score - }
${ - movie.remark || movie.card_subtitle - }
`; +
Marked ${movie.create_time}
+
${movie.douban_score}
${movie.card_subtitle}
`; }) .join(""); } else { - const result = t.reduce((result: any, item: any) => { - if ( - Object.prototype.hasOwnProperty.call( - result, - item.create_time - ) - ) { - result[item.create_time].push(item); - } else { - result[item.create_time] = [item]; - } - return result; - }, {}); + const result = t.reduce( + (result: any, item: DoubanObject) => { + if ( + Object.prototype.hasOwnProperty.call( + result, + item.create_time + ) + ) { + result[item.create_time].push(item); + } else { + result[item.create_time] = [item]; + } + return result; + }, + {} + ); let html = ``; for (let key in result) { html += `
${key}
`; @@ -387,7 +385,4 @@ class FARALLON_DOUBAN { } } -new FARALLON_DOUBAN({ - // @ts-ignore - token: window.WPD_TOKEN, -}); +export default Douban; diff --git a/themes/farallon/assets/ts/utils.ts b/themes/farallon/assets/ts/utils.ts new file mode 100644 index 0000000..40a6251 --- /dev/null +++ b/themes/farallon/assets/ts/utils.ts @@ -0,0 +1,39 @@ +interface Helper { + getCookie(key: string): string; + setCookie(key: string, value: string, n: number): void; + showNotice(message: string, type: any): void; +} + +export abstract class farallonHelper implements Helper { + getCookie(key: string) { + if (0 < document.cookie.length) { + var e = document.cookie.indexOf(key + "="); + if (-1 != e) { + e = e + key.length + 1; + var n = document.cookie.indexOf(";", e); + return ( + -1 == n && (n = document.cookie.length), + document.cookie.substring(e, n) + ); + } + } + return ""; + } + + setCookie(key: string, value: string, n: number) { + var o = new Date(); + o.setTime(o.getTime() + 24 * n * 60 * 60 * 1e3); + var i = "expires=" + o.toUTCString(); + document.cookie = key + "=" + value + ";" + i + ";path=/"; + } + + showNotice(message: string, type: any = "success") { + const html = `
${message}
`; + + document.querySelector("body")!.insertAdjacentHTML("beforeend", html); + document.querySelector(".notice--wrapper")!.classList.add("is-active"); + setTimeout(() => { + document.querySelector(".notice--wrapper")!.remove(); + }, 3000); + } +} diff --git a/themes/farallon/go.mod b/themes/farallon/go.mod deleted file mode 100644 index 0d4eab9..0000000 --- a/themes/farallon/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/bigfa/hugo-theme-farallon - -go 1.22.2 diff --git a/themes/farallon/layouts/_default/_markup/render-link.html b/themes/farallon/layouts/_default/_markup/render-link.html index 9b27ecd..4ee5d31 100644 --- a/themes/farallon/layouts/_default/_markup/render-link.html +++ b/themes/farallon/layouts/_default/_markup/render-link.html @@ -4,10 +4,9 @@ {{ $url :=index ($urls) 0 }} {{ $dbtype := replaceRE $regex "$1" $url }} {{ $dbid := replaceRE $regex "$2" $url }} -{{ $dbFetch := getJSON "https://node.wpista.com/v1/outer/" $dbtype "/" $dbid -"?token=2bfb9a8d037a7352c9d369b85d33ac83e39a" }} +{{ $dbFetch := getJSON "https://dbapi.wpista.com/" $dbtype "/" $dbid }} {{ if $dbFetch }} -{{ $subject := $dbFetch.data }} +{{ $subject := $dbFetch }} {{ $number := (float $subject.douban_score) }}
diff --git a/themes/farallon/layouts/_default/list.html b/themes/farallon/layouts/_default/list.html index 0eab881..083cffe 100644 --- a/themes/farallon/layouts/_default/list.html +++ b/themes/farallon/layouts/_default/list.html @@ -1,12 +1,12 @@ {{ define "main" }}
{{ range .Pages.ByPublishDate.Reverse.GroupByDate "2006" }} - {{ if (where .Pages "Section" "story") }} + {{ if (where .Pages "Section" "post") }}

{{ .Key }}

{{ range .Pages.ByPublishDate.Reverse.GroupByDate "January" }}

{{ .Key }}

    - {{ range ((where .Pages "Section" "story")) }} + {{ range ((where .Pages "Section" "post")) }}
  • diff --git a/themes/farallon/layouts/_default/single.html b/themes/farallon/layouts/_default/single.html index 5b94e61..5e440ac 100644 --- a/themes/farallon/layouts/_default/single.html +++ b/themes/farallon/layouts/_default/single.html @@ -1,6 +1,7 @@ {{ define "main" }}
    -
    +
    {{ .LinkTitle }} {{ end }} {{ end }} + {{ if .Site.Params.post_view }} + + + + + + {{ end }}

    {{ .Title }}

    {{ if .IsTranslated }} @@ -48,6 +58,23 @@
    {{ .Content }}
    + {{ if .Site.Params.post_like }} +
    + +
    + {{ end }}
    {{ range (.GetTerms "tags") }} {{ .LinkTitle }} @@ -73,26 +100,7 @@ {{ if .Params.story_id }} {{ partial "commentlist.html" . }} {{ end }} - -
    -

    评论

    -
      -
    -
    - - -
    + {{ partial "twikoo.html" . }}
    - - -
    - - -
    {{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }} {{ $paginator := .Paginate ($pages) }} @@ -409,7 +14,7 @@ function createDay(date, title, count, post) { {{ end }} {{ end }}
    - {{ $paginator := .Paginate (where .Pages "Type" "posts") }} + {{ $paginator := .Paginate (where .Pages "Type" "story") }} {{partial "pagination.html" .}} {{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/page/about.html b/themes/farallon/layouts/page/about.html new file mode 100644 index 0000000..47551ce --- /dev/null +++ b/themes/farallon/layouts/page/about.html @@ -0,0 +1,23 @@ +{{ define "main" }} + +
    +

    {{.Title}}

    + {{ if .IsTranslated }} +
    +

    {{ i18n "translations" }}

    + +
    + {{ end }} +
    + {{ .Content }} +
    +
    + +{{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/page/gears.html b/themes/farallon/layouts/page/gears.html new file mode 100644 index 0000000..4b5e689 --- /dev/null +++ b/themes/farallon/layouts/page/gears.html @@ -0,0 +1,24 @@ +{{ define "main" }} + +
    +

    {{.Title}}

    +

    {{ .Params.subtitle }}

    +
    + {{ range .Params.faves }} +
    +
    + +
    +
    +
    {{ .brand }} · {{ .cat }}
    + {{ .title }} +
    +
    + {{ end }} +
    +
    + {{ .Content }} +
    +
    + +{{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/page/links.html b/themes/farallon/layouts/page/links.html new file mode 100644 index 0000000..12cd496 --- /dev/null +++ b/themes/farallon/layouts/page/links.html @@ -0,0 +1,22 @@ +{{ define "main" }} + +
    +

    {{.Title}}

    +

    {{ .Params.subtitle }}

    +
    + +
    +
    + {{ .Content }} +
    +
    + +{{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/page/movies.html b/themes/farallon/layouts/page/movies.html new file mode 100644 index 0000000..7ed5d4a --- /dev/null +++ b/themes/farallon/layouts/page/movies.html @@ -0,0 +1,8 @@ +{{ define "main" }} + +
    +
    +
    +
    + +{{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/page/search.html b/themes/farallon/layouts/page/search.html new file mode 100644 index 0000000..df74b5a --- /dev/null +++ b/themes/farallon/layouts/page/search.html @@ -0,0 +1,79 @@ +{{ define "main" }} + +
    + +
    + +
    + + + +{{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/partials/footer.html b/themes/farallon/layouts/partials/footer.html index d6f33c4..493f57d 100644 --- a/themes/farallon/layouts/partials/footer.html +++ b/themes/farallon/layouts/partials/footer.html @@ -21,12 +21,6 @@
-
@@ -53,13 +47,13 @@ {{- $opts := dict "minify" hugo.IsProduction -}} {{- $replay := resources.Get "js/comment.min.js" | js.Build $opts -}} -{{- $db := resources.Get "ts/db.ts" | js.Build $opts -}} {{- $app := resources.Get "ts/app.ts" | js.Build $opts -}} -{{- $comment := resources.Get "ts/comment.ts" | js.Build $opts -}} -{{ $ts := slice $replay $db $app $comment | resources.Concat "ts/bundle.js" }} +{{ $ts := slice $replay $app | resources.Concat "ts/bundle.js" }} {{ range .Site.Params.customJS }} {{ if ( or ( hasPrefix . "http://" ) ( hasPrefix . "https://" ) ) }} diff --git a/themes/farallon/layouts/partials/head.html b/themes/farallon/layouts/partials/head.html index 1fa4281..eb3d539 100644 --- a/themes/farallon/layouts/partials/head.html +++ b/themes/farallon/layouts/partials/head.html @@ -17,11 +17,10 @@ {{ end }} {{ $favicon := resources.Get "images/favicon.png" }} - + {{ if .OutputFormats.Get "RSS" }} {{ with .OutputFormats.Get "RSS" }} {{ end }} -{{ end }} - \ No newline at end of file +{{ end }} \ No newline at end of file diff --git a/themes/farallon/layouts/partials/memo.html b/themes/farallon/layouts/partials/memo.html index 92bf3e9..714af0a 100644 --- a/themes/farallon/layouts/partials/memo.html +++ b/themes/farallon/layouts/partials/memo.html @@ -1,8 +1,7 @@
{{ if .Content }} diff --git a/themes/farallon/layouts/partials/twikoo.html b/themes/farallon/layouts/partials/twikoo.html new file mode 100644 index 0000000..3dc227b --- /dev/null +++ b/themes/farallon/layouts/partials/twikoo.html @@ -0,0 +1,9 @@ + +
+ + \ No newline at end of file