Files
jiapu/dist/public/js/site-news-pages.js
T

2 lines
5.0 KiB
JavaScript

(function(i,f){if(typeof module=="object"&&module.exports){module.exports=f(i);return}i.SiteNewsPages=f(i),i.document&&i.document.addEventListener("DOMContentLoaded",function(){i.SiteNewsPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(i){"use strict";var f={news:"新闻",notice:"公告",download:"下载"};function c(e){return String(e==null?"":e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function d(e){return e==null?"":String(e).trim()}function v(e){var r;return typeof e=="number"&&!Number.isSafeInteger(e)||e==null?"":(r=String(e).trim(),/^[1-9][0-9]*$/.test(r)?r:"")}function h(e){var r=d(e);return Object.prototype.hasOwnProperty.call(f,r)?r:""}function I(e){var r=d(e),t;if(!r)return"";try{t=new URL(r)}catch(n){return""}return t.protocol==="http:"||t.protocol==="https:"?t.href:""}function A(e){var r=e||{},t=v(r.articleId),n=h(r.articleType),s=d(r.articleTitle);return!t||!n||!s||String(r.status)!=="0"?null:{articleId:t,articleType:n,articleTitle:s,articleSummary:d(r.articleSummary),articleContent:d(r.articleContent),externalUrl:I(r.externalUrl),publishTime:d(r.publishTime)}}function S(e){var r;return Array.isArray(e)?(r=e.map(A),r.some(function(t){return!t})?[]:r):[]}function z(e){return e.map(function(r){return'<a class="site-info-item" href="article-detail.html?articleId='+encodeURIComponent(r.articleId)+'"><small>'+c(f[r.articleType])+"</small><h2>"+c(r.articleTitle)+"</h2><p>"+c(r.articleSummary)+"</p><span>"+c(r.publishTime)+"</span></a>"}).join("")}function P(e){return z(S(e))}function L(e){var r=e.externalUrl?'<a class="btn ghost" data-external-link href="'+c(e.externalUrl)+'" target="_blank" rel="noopener noreferrer">查看外部内容</a>':"",t=c(e.articleContent).replace(/\r?\n/g,"<br />");return'<section class="inner-hero article-hero"><div class="container"><div class="hero-copy"><div class="eyebrow">'+c(f[e.articleType])+"</div><h1>"+c(e.articleTitle)+'</h1><p class="lead">'+c(e.articleSummary)+'</p><div class="article-meta"><span>'+c(e.publishTime)+'</span></div></div><div class="hero-card article-cover-detail tilt-card"><span>闻</span><p>'+c(e.articleSummary)+'</p></div></div></section><section class="section alt"><div class="container article-layout"><article class="article-content tilt-card"><p>'+t+"</p>"+r+'</article><aside class="article-side tilt-card"><h3>相关入口</h3><a href="news.html">返回新闻资讯</a><a href="genealogy.html">了解数字家谱</a><a href="create-genealogy.html">创建一本家谱</a></aside></div></section>'}function C(e){var r=A(e);return r?L(r):""}function x(e,r){var t=new URLSearchParams(String(e||"").replace(/^\?/,""));return d(t.get(r))}function E(e){return v(x(e,"articleId"))}async function w(e,r){var t=d(r),n=h(t),s={limit:100},a,l;if(!e||typeof e.siteArticles!="function")throw new Error("资讯接口不可用");if(t&&!n)throw new Error("资讯分类无效");if(n&&(s.articleType=n),a=await e.siteArticles(s),l=S(a),!Array.isArray(a)||l.length!==a.length)throw new Error("资讯列表响应无效");return l}async function U(e,r){var t=v(r),n,s;if(!t)throw new Error("资讯编号无效");if(n=await w(e,""),s=n.find(function(a){return a.articleId===t}),!s)throw new Error("资讯不存在或已下线");return s}function y(e){return Number(e&&(e.status||e.code))===403}function T(e){return e&&e.message==="资讯不存在或已下线"}function u(e,r,t){if(e){if(i.ProfileUI&&i.ProfileUI.setApiState){i.ProfileUI.setApiState(e,r,t);return}e.textContent=t}}function p(e,r){e&&(e.textContent=r||"")}async function D(){var e=i.document,r=i.GenealogyApi&&i.GenealogyApi.defaultClient,t=i.location&&i.location.search||"",n=e&&e.querySelector("[data-site-news-page]"),s=e&&e.querySelector("[data-site-article-page]"),a,l,g,m,b;if(n){if(a=e.querySelector("[data-site-news-list]"),l=e.querySelector("[data-site-news-status]"),g=x(t,"articleType"),!a)return;if(g&&!h(g)){u(a,"error","资讯分类无效。"),p(l,"资讯分类无效。");return}u(a,"loading","正在读取资讯…");try{var q=await w(r,g);q.length?a.innerHTML=z(q):u(a,"empty","当前暂无资讯。"),p(l,"")}catch(o){u(a,y(o)?"forbidden":"error",y(o)?"当前账号无权查看资讯。":"资讯读取失败,请稍后重试。"),p(l,o.message||"资讯读取失败,请稍后重试。")}return}if(s){if(m=e.querySelector("[data-site-article-detail]"),l=e.querySelector("[data-site-article-status]"),b=E(t),!m)return;if(!b){u(m,"error","资讯编号无效。"),p(l,"资讯编号无效。");return}u(m,"loading","正在读取资讯详情…");try{m.innerHTML=L(await U(r,b)),p(l,"")}catch(o){u(m,y(o)?"forbidden":T(o)?"empty":"error",y(o)?"当前账号无权查看该资讯。":T(o)?"资讯不存在或已下线。":"资讯详情读取失败,请稍后重试。"),p(l,o.message||"资讯详情读取失败,请稍后重试。")}}}return{normalizeArticle:A,normalizeArticleList:S,normalizeArticleType:h,normalizeExternalUrl:I,readArticleId:E,renderArticleList:P,renderArticleDetail:C,loadArticles:w,loadArticleDetail:U,isForbidden:y,isMissingArticleError:T,setSiteState:u,init:D}});