2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
(function(i,P){if(typeof module=="object"&&module.exports){module.exports=P(i);return}i.ArticlePages=P(i),i.document&&i.document.addEventListener("DOMContentLoaded",function(){i.ArticlePages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(i){"use strict";function P(e){return i.ProfileUI&&typeof i.ProfileUI.confirmAction=="function"?i.ProfileUI.confirmAction(e):Promise.resolve(!i.confirm||i.confirm(e))}var N=i.MediaDisplay||(typeof require=="function"?require("./media-display.js"):null),y=i.document,T=Object.create(null),w=!1,A=!1;function U(){return i.GenealogyApi&&i.GenealogyApi.defaultClient}function l(e,r){return y?(r||y).querySelector(e):null}function L(e,r){return y?Array.prototype.slice.call((r||y).querySelectorAll(e)):[]}function d(e){return e==null?"":String(e)}function q(e){var r=d(e).trim();return r||void 0}function z(e,r){return new URLSearchParams(d(e).replace(/^\?/,"")).get(r)||""}function o(e){return e==null||e===""||typeof e=="number"&&!Number.isSafeInteger(e)?"":/^[1-9][0-9]*$/.test(String(e))?String(e):""}function G(e){return e==null||e===""?"":o(e)}function M(e){var r=e===void 0&&i.location?i.location.search:e,t;return e===void 0&&i.ProfileUI&&i.ProfileUI.getGenealogyId&&(t=i.ProfileUI.getGenealogyId(),t)?o(t):o(z(r,"genealogyId"))}function R(e){var r=e===void 0&&i.location?i.location.search:e;return o(z(r,"articleId"))}function x(e){var r;if(!(e==null||e===""))return r=Number(e),Number.isSafeInteger(r)?r:void 0}function H(e){var r=e||{},t={articleTitle:d(r.articleTitle).trim(),articleContent:d(r.articleContent).trim(),status:"0"},n=q(r.articleSummary),a=G(r.coverOssId),v=q(r.authorName),p=x(r.sortOrder);return n!==void 0&&(t.articleSummary=n),r.coverOssId!==void 0&&r.coverOssId!==null&&r.coverOssId!==""&&(a?t.coverOssId=a:t.invalidCoverOssId=!0),v!==void 0&&(t.authorName=v),r.sortOrder!==void 0&&r.sortOrder!==null&&r.sortOrder!==""&&(p!==void 0?t.sortOrder=p:t.invalidSortOrder=!0),t}function V(e){return!e||!e.articleTitle?"请填写谱文标题":e.articleContent?e.invalidCoverOssId?"封面文件编号无效,请重新选择文件":e.invalidSortOrder?"排序值必须是安全整数":e.status==="1"?"当前 PC 无法重新读取停用谱文,暂不开放停用":e.status!=="0"?"谱文状态只能是 0":"":"请填写谱文正文"}function O(e){var r=o(e&&e.articleId),t=o(e&&e.genealogyId),n=G(e&&e.categoryId),a=N&&N.normalizeFileAccess(e&&e.coverFile),v=d(e&&e.articleTitle).trim(),p=d(e&&e.articleContent).trim(),C=x(e&&e.viewCount),g=x(e&&e.sortOrder),I=d(e&&e.status),S;return!r||!t||!v||!p||e.categoryId!==void 0&&e.categoryId!==null&&e.categoryId!==""&&!n||e.coverFile!==void 0&&e.coverFile!==null&&!a||e.viewCount!==void 0&&e.viewCount!==null&&e.viewCount!==""&&C===void 0||e.sortOrder!==void 0&&e.sortOrder!==null&&e.sortOrder!==""&&g===void 0||I!=="0"&&I!=="1"?null:(S={articleId:r,genealogyId:t,genealogyNo:d(e.genealogyNo),genealogyName:d(e.genealogyName),surname:d(e.surname),categoryName:d(e.categoryName),categoryCode:d(e.categoryCode),articleTitle:v,articleSummary:d(e.articleSummary),articleContent:p,authorName:d(e.authorName),publishTime:d(e.publishTime),status:I,remark:d(e.remark)},n&&(S.categoryId=n),a&&(S.coverFile=a),C!==void 0&&(S.viewCount=C),g!==void 0&&(S.sortOrder=g),S)}function j(e){var r;return Array.isArray(e)?(r=e.map(O),r.some(function(t){return!t})?[]:r):[]}function W(e,r){var t=O(e);return!!(t&&t.articleId===o(r))}function c(e){return d(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function re(e,r){var t="profile-article.html?genealogyId="+encodeURIComponent(e);return r?t+"&articleId="+encodeURIComponent(r):t}function $(e,r){var t="profile-article-edit.html?genealogyId="+encodeURIComponent(e);return r?t+"&articleId="+encodeURIComponent(r):t}function J(e){return!!(e&&(e.canEditContent===!0||e.canManage===!0))}function m(e,r){return"<p><span>"+c(e)+"</span><b>"+c(r||"未提供")+"</b></p>"}function K(e){var r="";return e?(A&&(r='<div class="bottom-actions"><a class="btn ghost" href="'+c($(e.genealogyId,e.articleId))+'">编辑谱文</a><button class="btn danger" type="button" data-article-delete-id="'+c(e.articleId)+'">删除谱文</button></div>'),(N?N.renderImage(e.coverFile,{alt:e.articleTitle+"封面",className:"article-cover-media"}):"")+'<div class="form-like article-detail">'+m("标题",e.articleTitle)+m("摘要",e.articleSummary)+m("正文",e.articleContent)+m("作者",e.authorName)+m("分类",e.categoryName)+m("发布时间",e.publishTime)+m("浏览量",e.viewCount===void 0?"":e.viewCount)+m("备注",e.remark)+"</div>"+r):X("empty","请选择一篇谱文查看详情")}function te(e){var r='<button class="pill" type="button" data-article-detail-id="'+c(e.articleId)+'">查看详情</button>';return A&&(r+='<a class="pill" href="'+c($(e.genealogyId,e.articleId))+'">编辑</a><button class="pill is-danger" type="button" data-article-delete-id="'+c(e.articleId)+'">删除</button>'),'<article class="module-row article-row"><div><h3>'+c(e.articleTitle)+"</h3><p>"+c(e.articleSummary||e.authorName||e.publishTime||"暂无摘要")+'</p></div><div class="row-actions">'+r+"</div></article>"}function Q(e,r){var t=r&&(r.status||r.code);return!e||!e.getToken||!e.getToken()||Number(t)===401}function u(e){return Number(e&&(e.status||e.code))===403}function f(e,r){return Q(e,r)?(e&&e.clearToken&&e.clearToken(),i.NavigationUtil.open("login.html"),!0):!1}function D(e){i.layui&&i.layui.layer?i.layui.layer.msg(e):i.alert&&i.alert(e)}function X(e,r){return i.ProfileUI&&i.ProfileUI.renderApiState?i.ProfileUI.renderApiState(e,r):'<div class="api-state api-state--'+e+'" role="'+(e==="error"||e==="forbidden"?"alert":"status")+'" aria-live="polite">'+c(r)+"</div>"}function s(e,r,t){if(e){if(i.ProfileUI&&i.ProfileUI.setApiState){i.ProfileUI.setApiState(e,r,t);return}e.innerHTML=X(r,t)}}function ie(e){return e.indexOf("无权")>=0?"forbidden":/失败|缺少/.test(e)?"error":/正在|读取中|加载中/.test(e)?"loading":"empty"}function Y(){i.ProfileUI&&i.ProfileUI.syncGenealogyContextLinks&&i.ProfileUI.syncGenealogyContextLinks()}function h(e,r){var t=l("[data-article-form-status]");if(t){if(!e){t.innerHTML="";return}if(r&&i.ProfileUI&&i.ProfileUI.setApiState){i.ProfileUI.setApiState(t,r,e);return}t.textContent=e}}function F(e,r,t){var n=l("[data-article-editor-placeholder]");L("[data-article-editor], [data-article-editor-action]").forEach(function(a){a.hidden=!e}),n&&(n.hidden=!!e,r&&s(n,t||ie(r),r))}function k(e,r){var t=l('[data-article-form] [type="submit"]');w=!!e,L("[data-article-form] button, [data-article-form] input, [data-article-form] textarea, [data-article-delete-id]").forEach(function(n){n.disabled=w}),t&&(t.dataset.defaultLabel||(t.dataset.defaultLabel=t.textContent),t.textContent=w&&r?r:t.dataset.defaultLabel,t.setAttribute("aria-busy",w?"true":"false"))}function ne(){var e="请先选择家谱,再查看或维护谱文。",r=l("[data-article-list]"),t=l("[data-article-detail]");s(r,"empty",e),s(t,"empty","当前没有家谱上下文。"),F(!1,e,"empty"),h(e,"empty")}function E(){var e=M();return e||ne(),e}async function Z(e,r){var t=await e.genealogyDetail(r);return A=J(t),L("[data-article-create-link], [data-article-editor-action]").forEach(function(n){n.hidden=!A}),t}function ae(e){var r=l("[data-article-list]"),t=j(e);return T=Object.create(null),t.forEach(function(n){T[n.articleId]=n}),r?!Array.isArray(e)||e.length&&!t.length?(s(r,"error","谱文响应缺少稳定 ArticleVo 字段,请联系后端核对。"),[]):t.length?(r.innerHTML=t.map(te).join(""),t):(s(r,"empty","暂无谱文"),[]):t}function _(e){var r=l("[data-article-detail]");r&&(r.innerHTML=K(e))}async function B(e){var r=U(),t=E(),n;if(!t||!o(e)||f(r))return null;s(l("[data-article-detail]"),"loading","正在加载谱文详情…");try{if(n=O(await r.articleDetail(t,e)),!n||n.articleId!==o(e))throw new Error("谱文详情响应缺少稳定 ArticleVo 字段");return T[n.articleId]=n,_(n),n}catch(a){return f(r,a)||(s(l("[data-article-detail]"),u(a)?"forbidden":"error",u(a)?"当前账号无权查看该谱文。":"谱文详情加载失败,请稍后重试。"),D(u(a)?"当前账号无权查看该谱文。":a.message||"谱文详情加载失败")),null}}async function ee(){var e=U(),r,t,n;if(!f(e)&&(r=E(),!!r)){Y(),s(l("[data-article-list]"),"loading","正在加载谱文…");try{await Z(e,r),t=ae(await e.articles(r)),n=R(),n&&T[n]?await B(n):t.length?await B(t[0].articleId):_(null)}catch(a){if(f(e,a))return;s(l("[data-article-list]"),u(a)?"forbidden":"error",u(a)?"当前账号无权查看该家谱的谱文。":"谱文加载失败,请稍后重试。"),D(u(a)?"当前账号无权查看该家谱的谱文。":a.message||"谱文加载失败")}}}function le(e){var r={};return L("[name]",e).forEach(function(t){r[t.name]=t.value}),r}function b(e,r){var t=l('[data-article-form] [name="'+e+'"]');t&&(t.value=r==null?"":String(r))}function de(e){var r,t;if(!e||e.status!=="0")throw new Error("停用谱文无法通过当前 PC 接口重新读取或编辑");b("articleTitle",e.articleTitle),b("articleSummary",e.articleSummary),b("coverOssId",e.coverOssId),b("articleContent",e.articleContent),b("authorName",e.authorName),b("sortOrder",e.sortOrder),b("status","0"),r=l('[name="articleContent"]'),i.AppRichEditor&&i.AppRichEditor.init&&r&&(t=i.AppRichEditor.init(r),t&&t.editor&&t.editor.setHtml&&(t.editor.setHtml(e.articleContent),t.sync()))}async function ue(){var e=U(),r,t,n;if(!f(e)&&(r=E(),!!r)){t=R(),Y(),F(!1,"正在加载谱文编辑信息…","loading"),h("正在读取家谱权限…","loading");try{if(await Z(e,r),!A)throw{status:403,message:"当前账号无权维护该家谱的谱文。"};if(t){if(n=O(await e.articleDetail(r,t)),!n||n.articleId!==t)throw new Error("谱文详情响应缺少稳定 ArticleVo 字段");de(n),l("[data-article-editor-title]")&&(l("[data-article-editor-title]").textContent="编辑谱文")}F(!0),h("")}catch(a){if(f(e,a))return;F(!1,u(a)?"当前账号无权维护该家谱的谱文。":a.message||"谱文编辑信息加载失败",u(a)?"forbidden":"error"),h(u(a)?"当前账号无权维护该家谱的谱文。":a.message||"谱文编辑信息加载失败",u(a)?"forbidden":"error")}}}async function oe(e){var r=U(),t=E(),n=R(),a,v,p,C,g;if(!(w||!A||!t||f(r))){if(i.AppRichEditor&&i.AppRichEditor.syncAll&&i.AppRichEditor.syncAll(),a=H(le(e)),v=V(a),v){h(v,"error");return}delete a.invalidCoverOssId,delete a.invalidSortOrder,k(!0,"正在保存…"),h("正在保存谱文…","loading");try{if(p=n?await r.updateArticle(t,n,a):await r.createArticle(t,a),C=O(p),g=n||C&&C.articleId,!g)throw new Error("保存响应缺少 articleId");if(!W(await r.articleDetail(t,g),g))throw new Error("保存后重读未返回同一篇谱文");i.NavigationUtil.open(re(t,g))}catch(I){if(f(r,I))return;h(u(I)?"当前账号无权保存该谱文。":I.message||"谱文保存失败",u(I)?"forbidden":"error")}finally{k(!1)}}}async function ce(e){var r=U(),t=E(),n=T[e];if(!(w||!A||!t||!o(e)||f(r))&&await P("确认删除“"+(n?n.articleTitle:"该谱文")+"”吗?删除后不可恢复。")){k(!0);try{await r.deleteArticle(t,e),await ee(),D("谱文已删除")}catch(a){if(f(r,a))return;D(u(a)?"当前账号无权删除该谱文。":a.message||"谱文删除失败")}finally{k(!1)}}}function fe(){y&&(y.addEventListener("click",function(e){var r=e.target.closest("[data-article-detail-id]"),t=e.target.closest("[data-article-delete-id]");if(r){e.preventDefault(),B(r.getAttribute("data-article-detail-id"));return}t&&(e.preventDefault(),ce(t.getAttribute("data-article-delete-id")))}),y.addEventListener("submit",function(e){var r=e.target.closest("[data-article-form]");r&&(e.preventDefault(),oe(r))}))}function se(){y&&(fe(),l("[data-article-page]")&&ee(),l("[data-article-edit-page]")&&ue())}return{getCurrentGenealogyId:M,getCurrentArticleId:R,buildArticleBody:H,validateArticleBody:V,normalizeArticle:O,canEditArticles:J,normalizeArticles:j,matchesSavedArticle:W,renderArticleDetail:K,shouldRedirectToLogin:Q,isForbidden:u,init:se}});
|