Merge pull request 'chore(admin): stop tracking SPA build; add native product meta box' (#144) from worktree-zibll-native-admin-menus into main
Reviewed-on: CYL/wordpress-theme-aksrt#144
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-attach__summary[data-v-a728445f]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-attach__summary strong[data-v-a728445f]{display:block;font-size:13px;color:#1a1a2e}.aksrt-attach__summary p[data-v-a728445f]{margin:2px 0 0;font-size:12px;color:#8a909c}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-inline-setting[data-v-ef7a491f]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.aksrt-inline-setting__hint[data-v-ef7a491f]{color:#7a7f8a;font-size:13px}.aksrt-inline-setting__actions[data-v-ef7a491f]{display:flex;justify-content:flex-end}.aksrt-modal-preview[data-v-ef7a491f]{margin:-8px 0 18px;border-radius:8px;overflow:hidden;border:1px solid #eef1f6}.aksrt-modal-grid[data-v-ef7a491f]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}.aksrt-modal-footer[data-v-ef7a491f]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.aksrt-modal-grid[data-v-ef7a491f]{grid-template-columns:1fr}}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{o as M,X as N,a4 as t,a3 as n,r as C,a1 as r,e as E,_ as R,W as V,f as m,Y as u,Z as f}from"./vendor-vue.Bykizn0M.js";import{a as y}from"./shared-api.D5_fnN32.js";import{P as A}from"./PageHeader.Di3JTPjc.js";import{u as U}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const $={class:"aksrt-page-container"},H={class:"aksrt-form-actions"},z={__name:"CommentPermissions",setup(K){const q=R(),g=U(),b=C(!0),v=C(!1),s=E({comment_require_login:!1,comment_allow_reply:!0}),a=E({commentCaptchaEnabled:!1,moderationEnabled:!1,rateLimitEnabled:!1,keywordRuleCount:0});function w(o){q.push(o)}function P(o){return String(o||"").split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}async function S(){b.value=!0;try{const[o,e,i]=await Promise.all([y.getSchemaPage("post_list","comment"),y.getPermissionsLoginSettings(),y.getPermissionsModerationSettings()]),c=(o==null?void 0:o.data)??o??{},l=(e==null?void 0:e.data)??e??{},d=(i==null?void 0:i.data)??i??{},p=Array.isArray(l.disabled_scenarios)?l.disabled_scenarios:[];s.comment_require_login=!!c.comment_require_login,s.comment_allow_reply=c.comment_allow_reply!==!1,a.commentCaptchaEnabled=!!l.enabled&&!!l.active_provider&&!p.includes("comment"),a.moderationEnabled=!!d.enabled,a.rateLimitEnabled=!!d.rate_limit_enabled,a.keywordRuleCount=P(d.blocked_keywords).length}catch(o){g.error(o.message||"加载评论权限失败")}finally{b.value=!1}}async function x(){v.value=!0;try{await y.saveSchemaPage("post_list","comment",{comment_require_login:s.comment_require_login,comment_allow_reply:s.comment_allow_reply}),g.success("评论权限已保存")}catch(o){g.error(o.message||"保存失败")}finally{v.value=!1}}return M(S),(o,e)=>{const i=r("n-button"),c=r("n-space"),l=r("n-tag"),d=r("n-card"),p=r("n-switch"),k=r("n-form-item"),h=r("n-form"),L=r("n-alert"),B=r("n-spin");return V(),N("div",$,[t(A,{title:"评论权限",desc:"管理评论入口的登录要求与回复权限,并查看当前验证码与审核策略状态。"},{actions:n(()=>[t(c,null,{default:n(()=>[t(i,{quaternary:"",onClick:e[0]||(e[0]=_=>w("/permissions/login"))},{default:n(()=>[...e[4]||(e[4]=[m("人机验证",-1)])]),_:1}),t(i,{quaternary:"",onClick:e[1]||(e[1]=_=>w("/permissions/moderation"))},{default:n(()=>[...e[5]||(e[5]=[m("审核策略",-1)])]),_:1})]),_:1})]),_:1}),t(B,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(d,{class:"aksrt-section-card"},{default:n(()=>[e[6]||(e[6]=u("div",{class:"aksrt-section-header"},[u("h3",null,"当前联动状态")],-1)),t(c,null,{default:n(()=>[t(l,{type:a.commentCaptchaEnabled?"success":"default",round:""},{default:n(()=>[m(" 评论验证码:"+f(a.commentCaptchaEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.moderationEnabled?"warning":"default",round:""},{default:n(()=>[m(" 审核链路:"+f(a.moderationEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.rateLimitEnabled?"warning":"default",round:""},{default:n(()=>[m(" 评论限流:"+f(a.rateLimitEnabled?"已启用":"未启用"),1)]),_:1},8,["type"]),t(l,{type:a.keywordRuleCount>0?"error":"default",round:""},{default:n(()=>[m(" 敏感词:"+f(a.keywordRuleCount)+" 条 ",1)]),_:1},8,["type"])]),_:1})]),_:1}),t(d,{class:"aksrt-section-card"},{default:n(()=>[e[9]||(e[9]=u("div",{class:"aksrt-section-header"},[u("h3",null,"评论准入")],-1)),t(h,{model:s,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(k,{label:"评论需要登录"},{feedback:n(()=>[...e[7]||(e[7]=[u("span",{class:"aksrt-hint-text"},"开启后,游客只能浏览评论,不能直接提交评论。",-1)])]),default:n(()=>[t(p,{value:s.comment_require_login,"onUpdate:value":e[2]||(e[2]=_=>s.comment_require_login=_)},null,8,["value"])]),_:1}),t(k,{label:"允许楼中回复"},{feedback:n(()=>[...e[8]||(e[8]=[u("span",{class:"aksrt-hint-text"},"关闭后,前台评论列表将不再展示回复按钮。",-1)])]),default:n(()=>[t(p,{value:s.comment_allow_reply,"onUpdate:value":e[3]||(e[3]=_=>s.comment_allow_reply=_)},null,8,["value"])]),_:1})]),_:1},8,["model"])]),_:1}),t(d,{class:"aksrt-section-card"},{default:n(()=>[t(L,{type:"info","show-icon":!1},{default:n(()=>[...e[10]||(e[10]=[m(" 评论排序、分页方式、头像大小和空状态文案继续在“文章&列表 -> 评论设置”中维护;本页只负责准入与治理联动。 ",-1)])]),_:1})]),_:1}),u("div",H,[t(i,{type:"primary",loading:v.value,onClick:x},{default:n(()=>[...e[11]||(e[11]=[m("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{z as default};
|
||||
@@ -1 +0,0 @@
|
||||
import t from"./SchemaPage.CSkx936u.js";import{a2 as o,W as m}from"./vendor-vue.Bykizn0M.js";import"./shared-api.B7o7Pzvu.js";import"./FaIcon.CX_hGmM4.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";import"./shared-api.D5_fnN32.js";const u={__name:"CommentSettings",setup(r){return(e,p)=>(m(),o(t,{domain:"post_list",section:"comment"}))}};export{u as default};
|
||||
@@ -1 +0,0 @@
|
||||
import{X as n,Y as r,a4 as u,Z as l,a3 as c,a2 as y,a5 as f,F as h,R as P,c as o,a1 as V,$ as b,W as a,f as _}from"./vendor-vue.Bykizn0M.js";import{_ as S}from"./FaIcon.CX_hGmM4.js";import{_ as C}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const F={class:"aksrt-deferred-page"},R={class:"aksrt-deferred-page__icon"},w={class:"aksrt-deferred-page__title"},A={class:"aksrt-deferred-page__desc"},I={class:"aksrt-deferred-page__meta"},T={key:0,class:"aksrt-deferred-page__depends"},$={class:"aksrt-deferred-page__depends-list"},E={key:1,class:"aksrt-deferred-page__reason"},L={key:2,class:"aksrt-deferred-page__features"},W={class:"aksrt-deferred-page__badge"},X={__name:"DeferredPage",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},features:{type:Array,default:()=>[]},status:{type:String,default:""},phase:{type:String,default:""},dependsOn:{type:Array,default:()=>[]},reason:{type:String,default:""}},setup(z){const t=z,d=b(),O=o(()=>{var s,e;return t.title||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.title)||"功能开发中"}),x=o(()=>{var s,e;return t.description||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.description)||"此功能正在规划开发中,将在后续版本上线。"}),D=o(()=>{var s,e;return t.icon||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.icon)||"fas fa-rocket"}),B=o(()=>{var s,e;return t.status||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.status)||"deferred"}),g=o(()=>{var s,e;return t.phase||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.phase)||""}),m=o(()=>{var s,e;return t.dependsOn&&t.dependsOn.length?t.dependsOn:((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.dependsOn)||[]}),k=o(()=>{var s,e;return t.reason||((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.reason)||""}),v=o(()=>{var s,e;return t.features&&t.features.length?t.features:((e=(s=d.meta)==null?void 0:s.deferredProps)==null?void 0:e.features)||[]});return(s,e)=>{const p=V("n-tag");return a(),n("div",F,[r("div",R,[u(S,{icon:D.value,size:48},null,8,["icon"])]),r("h2",w,l(O.value),1),r("p",A,l(x.value),1),r("div",I,[u(p,{size:"small",type:"info"},{default:c(()=>[_(l(B.value),1)]),_:1}),g.value?(a(),y(p,{key:0,size:"small",type:"warning"},{default:c(()=>[_("Phase "+l(g.value),1)]),_:1})):f("",!0)]),m.value.length?(a(),n("div",T,[e[0]||(e[0]=r("span",{class:"aksrt-deferred-page__label"},"依赖",-1)),r("div",$,[(a(!0),n(h,null,P(m.value,i=>(a(),y(p,{key:i,size:"small",type:"default"},{default:c(()=>[_(l(i),1)]),_:2},1024))),128))])])):f("",!0),k.value?(a(),n("div",E,[e[1]||(e[1]=r("span",{class:"aksrt-deferred-page__label"},"原因",-1)),r("p",null,l(k.value),1)])):f("",!0),v.value&&v.value.length?(a(),n("div",L,[(a(!0),n(h,null,P(v.value,(i,N)=>(a(),n("div",{key:N,class:"aksrt-deferred-page__feature"},[u(S,{icon:"fas fa-check-circle",size:14}),r("span",null,l(i),1)]))),128))])):f("",!0),r("div",W,[u(p,{type:"info",size:"small"},{default:c(()=>[...e[2]||(e[2]=[_("即将推出",-1)])]),_:1})])])}}},H=C(X,[["__scopeId","data-v-e3307067"]]);export{H as default};
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-deferred-page[data-v-e3307067]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center;padding:40px 20px}.aksrt-deferred-page__icon[data-v-e3307067]{color:#c0c4cc;margin-bottom:20px}.aksrt-deferred-page__title[data-v-e3307067]{margin:0 0 10px;font-size:20px;font-weight:600;color:#1a1a2e}.aksrt-deferred-page__desc[data-v-e3307067]{margin:0 0 20px;font-size:14px;color:#8a909c;max-width:400px;line-height:1.6}.aksrt-deferred-page__meta[data-v-e3307067]{display:flex;gap:10px;margin-bottom:18px}.aksrt-deferred-page__depends[data-v-e3307067],.aksrt-deferred-page__reason[data-v-e3307067]{width:min(520px,100%);margin-bottom:18px;text-align:left}.aksrt-deferred-page__label[data-v-e3307067]{display:inline-block;margin-bottom:8px;font-size:12px;font-weight:600;color:#4b5563}.aksrt-deferred-page__depends-list[data-v-e3307067]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-deferred-page__reason p[data-v-e3307067]{margin:0;color:#666;line-height:1.7}.aksrt-deferred-page__features[data-v-e3307067]{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.aksrt-deferred-page__feature[data-v-e3307067]{display:flex;align-items:center;gap:8px;font-size:13px;color:#666}.aksrt-deferred-page__feature[data-v-e3307067] i{color:#52c41a}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-docs__mode-status[data-v-ec6dbd74]{display:flex;align-items:center;justify-content:space-between;gap:16px}.aksrt-docs__mode-info[data-v-ec6dbd74]{display:flex;align-items:center;gap:12px}.aksrt-docs__mode-info strong[data-v-ec6dbd74]{display:block;font-size:14px;color:#1a1a2e}.aksrt-docs__mode-info p[data-v-ec6dbd74]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-docs__mode-link[data-v-ec6dbd74]{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:6px;background:#f5f7fa;color:#1890ff;text-decoration:none;font-size:13px;transition:background .2s}.aksrt-docs__mode-link[data-v-ec6dbd74]:hover{background:#e6f4ff}.aksrt-docs__stat[data-v-ec6dbd74]{display:flex;align-items:center;gap:10px;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__stat strong[data-v-ec6dbd74]{display:block;font-size:20px;color:#1a1a2e}.aksrt-docs__stat p[data-v-ec6dbd74]{margin:0;font-size:12px;color:#8a909c}.aksrt-docs__grid[data-v-ec6dbd74]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-bottom:16px}.aksrt-docs__card[data-v-ec6dbd74]{cursor:pointer;transition:box-shadow .2s}.aksrt-docs__card[data-v-ec6dbd74]:hover{box-shadow:0 2px 12px #00000014}.aksrt-docs__card-inner[data-v-ec6dbd74]{display:flex;align-items:center;gap:12px}.aksrt-docs__card-icon[data-v-ec6dbd74]{flex-shrink:0;width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center}.aksrt-docs__card-body[data-v-ec6dbd74]{flex:1;min-width:0}.aksrt-docs__card-title[data-v-ec6dbd74]{margin:0 0 2px;font-size:14px;font-weight:600;color:#1a1a2e}.aksrt-docs__card-desc[data-v-ec6dbd74]{margin:0;font-size:12px;color:#8a909c;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aksrt-docs__card-arrow[data-v-ec6dbd74]{flex-shrink:0;color:#c0c4cc}.aksrt-docs__section[data-v-ec6dbd74]{margin-bottom:16px}.aksrt-docs__action[data-v-ec6dbd74]{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:6px;background:#fafafa}.aksrt-docs__action i[data-v-ec6dbd74]{color:#1890ff;margin-top:2px}.aksrt-docs__action strong[data-v-ec6dbd74]{display:block;font-size:14px;color:#1a1a2e;margin-bottom:2px}.aksrt-docs__action p[data-v-ec6dbd74]{margin:0 0 4px;font-size:12px;color:#8a909c}.aksrt-docs__action a[data-v-ec6dbd74]{font-size:12px;color:#1890ff;text-decoration:none}.aksrt-docs__action a[data-v-ec6dbd74]:hover{text-decoration:underline}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-ai__status[data-v-800595b0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-ai__status-card[data-v-800595b0]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-ai__status-icon[data-v-800595b0]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.aksrt-ai__status-icon--ok[data-v-800595b0]{background:#d4edda;color:#155724}.aksrt-ai__status-icon--warn[data-v-800595b0]{background:#fff3cd;color:#856404}.aksrt-ai__status-icon--off[data-v-800595b0]{background:#f8d7da;color:#721c24}.aksrt-ai__status-icon--info[data-v-800595b0]{background:#d1ecf1;color:#0c5460}.aksrt-ai__status-value[data-v-800595b0]{font-size:18px;font-weight:600;color:#1a1a2e}.aksrt-ai__status-label[data-v-800595b0]{font-size:12px;color:#888}.aksrt-ai__form-card[data-v-800595b0]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-ai__form-card h3[data-v-800595b0]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-800595b0]{font-size:12px;color:#888;margin-top:4px}.aksrt-ai__load-error[data-v-800595b0]{background:#fdecea;border-color:#f5c2c0;color:#842029;margin-bottom:16px}.aksrt-ai__notice[data-v-800595b0]{background:#fff8e1;border-color:#ffe082}.aksrt-ai__notice h3[data-v-800595b0]{color:#e65100}.aksrt-ai__notice ul[data-v-800595b0]{margin:0;padding-left:20px}.aksrt-ai__notice li[data-v-800595b0]{margin-bottom:8px;font-size:14px}.aksrt-ai__notice code[data-v-800595b0]{background:#0000000f;padding:2px 6px;border-radius:3px;font-size:13px}.aksrt-badge[data-v-800595b0]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.aksrt-badge--success[data-v-800595b0]{background:#d4edda;color:#155724}.aksrt-badge--warning[data-v-800595b0]{background:#fff3cd;color:#856404}.aksrt-table[data-v-800595b0]{width:100%;border-collapse:collapse}.aksrt-table th[data-v-800595b0],.aksrt-table td[data-v-800595b0]{border-bottom:1px solid #eee;padding:10px 8px;text-align:left}.aksrt-form-group[data-v-800595b0]{margin-bottom:14px}.aksrt-input[data-v-800595b0],.aksrt-select[data-v-800595b0]{width:100%;max-width:480px;padding:8px 10px}.aksrt-button[data-v-800595b0]{padding:8px 16px;border:0;border-radius:6px;cursor:pointer}.aksrt-button--primary[data-v-800595b0]{background:#1677ff;color:#fff}.aksrt-button[data-v-800595b0]:disabled{opacity:.6;cursor:not-allowed}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-security__section[data-v-1628ae71]{margin-bottom:16px}.aksrt-security__overview-card[data-v-1628ae71]{display:flex;align-items:center;gap:10px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.aksrt-security__overview-card strong[data-v-1628ae71]{display:block;font-size:14px;color:#1a1a2e}.aksrt-security__overview-card p[data-v-1628ae71]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-security__config-link[data-v-1628ae71]{font-size:12px;color:#1890ff;text-decoration:none;white-space:nowrap}.aksrt-security__config-link[data-v-1628ae71]:hover{text-decoration:underline}.aksrt-security__output[data-v-1628ae71]{margin:12px 0 0;padding:12px 14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-tools__section[data-v-dc044b00]{margin-bottom:16px}.aksrt-tools__health-card[data-v-dc044b00]{display:flex;align-items:center;gap:10px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0}.aksrt-tools__health-card strong[data-v-dc044b00]{display:block;font-size:14px;color:#1a1a2e}.aksrt-tools__health-card p[data-v-dc044b00]{margin:2px 0 0;font-size:12px;color:#8a909c}.aksrt-tools__health-card--warn[data-v-dc044b00]{border-color:#faad14;background:#fffbe6}.aksrt-tools__tool-card[data-v-dc044b00]{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;background:#fafafa;border:1px solid #f0f0f0;cursor:pointer;transition:all .2s}.aksrt-tools__tool-card[data-v-dc044b00]:hover{border-color:#1890ff;box-shadow:0 2px 8px #1890ff1a}.aksrt-tools__tool-icon[data-v-dc044b00]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.aksrt-tools__tool-body[data-v-dc044b00]{flex:1;min-width:0}.aksrt-tools__tool-body strong[data-v-dc044b00]{display:block;font-size:14px;color:#1a1a2e}.aksrt-tools__tool-body p[data-v-dc044b00]{margin:2px 0 0;font-size:12px;color:#8a909c}
|
||||
@@ -1 +0,0 @@
|
||||
import{W as r,X as p,I as u,L as f,c as a}from"./vendor-vue.Bykizn0M.js";const c={__name:"FaIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:null},fw:{type:Boolean,default:!1},spin:{type:Boolean,default:!1},pulse:{type:Boolean,default:!1},rotate:{type:[Number,String],default:null},flip:{type:String,default:null},extraClass:{type:String,default:""}},setup(l){const e=l,i=a(()=>{const t=[],s=e.icon.trim();return s.startsWith("fa-")?t.push("fas",s):t.push(...s.split(/\s+/)),e.fw&&t.push("fa-fw"),e.spin&&t.push("fa-spin"),e.pulse&&t.push("fa-pulse"),e.rotate&&t.push(`fa-rotate-${e.rotate}`),e.flip&&t.push(`fa-flip-${e.flip}`),e.extraClass&&t.push(e.extraClass),t.join(" ")}),n=a(()=>e.size?{fontSize:typeof e.size=="number"?`${e.size}px`:e.size}:{});return(t,s)=>(r(),p("i",{class:f(i.value),style:u(n.value),"aria-hidden":"true"},null,6))}};export{c as _};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.icon-preview-row[data-v-3f29cff8]{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:13px}.theme-icon-preview[data-v-3f29cff8]{display:flex;flex-direction:column;gap:6px;color:var(--n-text-color-3);font-size:13px}.theme-icon-preview span[data-v-3f29cff8],.theme-icon-preview-inline[data-v-3f29cff8]{display:inline-flex;align-items:center;gap:6px}.icon-preview-row a[data-v-3f29cff8]{color:var(--n-primary-color);text-decoration:none}.icon-preview-row a[data-v-3f29cff8]:hover{text-decoration:underline}.muted-text[data-v-3f29cff8]{color:#999;font-size:12px}.aksrt-modal-footer[data-v-3f29cff8]{display:flex;justify-content:flex-end;gap:10px}.section-desc[data-v-3f29cff8]{color:var(--n-text-color-3);font-size:13px;margin:0 0 16px}.float-btn-sort[data-v-3f29cff8]{display:flex;flex-direction:column;gap:12px}.float-btn-sort__item[data-v-3f29cff8]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--n-border-color);border-radius:14px;background:var(--n-card-color)}.float-btn-sort__main[data-v-3f29cff8]{display:flex;align-items:center;gap:12px;min-width:0;flex:1}.float-btn-sort__handle[data-v-3f29cff8]{width:30px;height:30px;border:0;background:transparent;color:var(--n-text-color-3);cursor:grab}.float-btn-sort__handle[data-v-3f29cff8]:active{cursor:grabbing}.float-btn-sort__icon[data-v-3f29cff8]{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:#88abda1f;color:var(--n-text-color-2)}.float-btn-sort__meta[data-v-3f29cff8]{min-width:0;flex:1}.float-btn-sort__title-row[data-v-3f29cff8]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}.float-btn-sort__desc[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.float-btn-sort__actions[data-v-3f29cff8]{display:flex;gap:8px;flex-shrink:0}.float-btn-sort__ghost[data-v-3f29cff8]{opacity:.45}.add-items-editor[data-v-3f29cff8]{margin-bottom:16px}.add-items-editor__head[data-v-3f29cff8]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.add-items-editor__head-actions[data-v-3f29cff8]{display:flex;gap:8px}.add-items-editor__list[data-v-3f29cff8]{display:flex;flex-direction:column;gap:10px}.add-items-editor__row[data-v-3f29cff8]{display:grid;grid-template-columns:auto 1fr 1fr 1.4fr auto;gap:10px;align-items:center}.add-items-editor__drag[data-v-3f29cff8]{width:32px;height:32px;border:0;border-radius:8px;background:#88abda1f;color:var(--n-text-color-3);cursor:grab}.add-items-editor__drag[data-v-3f29cff8]:active{cursor:grabbing}.add-items-editor__ghost[data-v-3f29cff8]{opacity:.45}.add-items-preview[data-v-3f29cff8]{margin-top:14px;padding:14px;border:1px dashed var(--n-border-color);border-radius:14px;background:#88abda0a}.add-items-preview__title[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);margin-bottom:10px}.add-items-preview__panel[data-v-3f29cff8]{display:flex;align-items:center;gap:12px;margin-top:12px}.add-items-preview__panel[data-v-3f29cff8]:first-of-type{margin-top:0}.add-items-preview__mode[data-v-3f29cff8]{width:40px;flex-shrink:0;font-size:12px;color:var(--n-text-color-3)}.add-items-preview__trigger[data-v-3f29cff8]{width:42px;height:42px;border-radius:12px;background:#fff;border:1px solid var(--n-border-color);display:inline-flex;align-items:center;justify-content:center;color:var(--n-text-color-2);box-shadow:0 8px 20px #11182714}.add-items-preview__trigger--dark[data-v-3f29cff8]{background:#232734;border-color:#ffffff14;color:#d8dee9;box-shadow:0 12px 28px #00000047}.add-items-preview__menu[data-v-3f29cff8]{flex:1;min-width:0;padding:10px;border-radius:14px;background:#fff;border:1px solid var(--n-border-color)}.add-items-preview__menu--dark[data-v-3f29cff8]{background:#232734;border-color:#ffffff14}.add-items-preview__list[data-v-3f29cff8]{display:flex;flex-direction:column;gap:6px}.add-items-preview__item[data-v-3f29cff8]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:#88abda0f;color:var(--n-text-color-2);text-decoration:none}.add-items-preview__item i[data-v-3f29cff8]{width:18px;text-align:center;color:var(--n-primary-color)}.add-items-preview__item--dark[data-v-3f29cff8]{background:#ffffff0d;color:#e5e7eb}.add-items-preview__item--dark i[data-v-3f29cff8]{color:#9fc0ec}.add-items-preview__empty[data-v-3f29cff8]{font-size:13px;color:var(--n-text-color-3);padding:10px 12px}.add-items-preview__empty--dark[data-v-3f29cff8]{color:#e5e7ebb8}
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-modal-footer[data-v-75e6f4e1]{display:flex;justify-content:flex-end;gap:10px}.aksrt-media-row[data-v-75e6f4e1]{display:flex;align-items:center;gap:8px;width:100%}.aksrt-media-preview[data-v-75e6f4e1]{display:block;max-width:200px;max-height:80px;margin-top:8px;border-radius:6px;border:1px solid var(--n-border-color, #e0e0e6);object-fit:contain}.aksrt-media-preview--sm[data-v-75e6f4e1]{max-width:64px;max-height:64px}.aksrt-mini-img-row[data-v-75e6f4e1]{padding:10px 0;border-bottom:1px solid var(--n-border-color, #e0e0e6)}.aksrt-mini-img-row[data-v-75e6f4e1]:last-child{border-bottom:none}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.icon-preview-row[data-v-13ae8f9c]{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:13px}.icon-preview-row a[data-v-13ae8f9c]{color:var(--n-primary-color);text-decoration:none}.icon-preview-row a[data-v-13ae8f9c]:hover{text-decoration:underline}.muted-text[data-v-13ae8f9c]{color:#999;font-size:12px}.aksrt-modal-footer[data-v-13ae8f9c]{display:flex;justify-content:flex-end;gap:10px}.section-desc[data-v-13ae8f9c]{color:var(--n-text-color-3);font-size:13px;margin:0 0 16px}.section-desc--tight[data-v-13ae8f9c]{margin-top:-6px}.add-items-editor[data-v-13ae8f9c]{margin-bottom:16px}.add-items-editor__head[data-v-13ae8f9c]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.add-items-editor__presets[data-v-13ae8f9c]{display:flex;align-items:center;gap:6px;margin-bottom:12px;flex-wrap:wrap}.add-items-editor__presets-label[data-v-13ae8f9c]{font-size:12px;color:var(--n-text-color-3, #999)}.add-items-editor__list[data-v-13ae8f9c]{display:flex;flex-direction:column;gap:10px}.add-items-editor__row[data-v-13ae8f9c]{display:grid;grid-template-columns:32px 1fr 1fr 1.2fr 40px;gap:8px;align-items:center}.add-items-editor__drag[data-v-13ae8f9c]{width:32px;height:32px;border:0;border-radius:10px;background:#f3f5f7;color:#6b7280;cursor:grab}.add-items-editor__ghost[data-v-13ae8f9c]{opacity:.5}.tabbar-sort[data-v-13ae8f9c]{display:flex;flex-direction:column;gap:12px}.tabbar-sort__item[data-v-13ae8f9c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:1px solid var(--n-border-color);border-radius:14px;background:#fff}.tabbar-sort__main[data-v-13ae8f9c]{min-width:0;display:flex;align-items:center;gap:12px;flex:1}.tabbar-sort__handle[data-v-13ae8f9c]{width:32px;height:32px;border:0;border-radius:10px;background:#f3f5f7;color:#6b7280;cursor:grab}.tabbar-sort__icon[data-v-13ae8f9c]{width:38px;height:38px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:#18a0581f;color:#18a058;font-size:18px;flex:0 0 auto}.tabbar-sort__meta[data-v-13ae8f9c]{min-width:0;flex:1}.tabbar-sort__title-row[data-v-13ae8f9c]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:4px}.tabbar-sort__desc[data-v-13ae8f9c]{color:var(--n-text-color-3);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabbar-sort__actions[data-v-13ae8f9c]{display:flex;gap:6px;flex:0 0 auto}.tabbar-sort__ghost[data-v-13ae8f9c]{opacity:.5}@media(max-width:1023px){.tabbar-sort__item[data-v-13ae8f9c]{flex-direction:column;align-items:stretch}.tabbar-sort__actions[data-v-13ae8f9c]{justify-content:flex-end}.add-items-editor__row[data-v-13ae8f9c]{grid-template-columns:32px 1fr}}
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-inline-setting[data-v-2bdc0f38]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.aksrt-inline-setting__hint[data-v-2bdc0f38]{color:#7a7f8a;font-size:13px}.aksrt-inline-setting__actions[data-v-2bdc0f38]{display:flex;justify-content:flex-end}.aksrt-modal-preview[data-v-2bdc0f38]{margin:-8px 0 18px;border-radius:8px;overflow:hidden;border:1px solid #eef1f6}.aksrt-modal-grid[data-v-2bdc0f38]{display:grid;grid-template-columns:1fr 1fr;gap:14px}.aksrt-layer-item[data-v-2bdc0f38]{border:1px solid #eef1f6;border-radius:8px;padding:14px;margin-bottom:10px;background:#fafbfc}.aksrt-layer-item__header[data-v-2bdc0f38]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.aksrt-modal-footer[data-v-2bdc0f38]{display:flex;justify-content:flex-end;gap:10px}@media(max-width:768px){.aksrt-modal-grid[data-v-2bdc0f38]{grid-template-columns:1fr}}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.homepage-settings__empty-tabs[data-v-ae4c5b65]{padding:24px;text-align:center;border:1px dashed var(--n-border-color);border-radius:4px;margin-bottom:12px}.homepage-settings__tab-row[data-v-ae4c5b65]{margin-bottom:8px}.homepage-settings__tab-fields[data-v-ae4c5b65]{display:flex;gap:8px;align-items:center}.aksrt-form-actions[data-v-ae4c5b65]{margin-top:16px;text-align:right}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{o as d,X as a,Y as o,Z as u,c as l,$ as _,W as r}from"./vendor-vue.Bykizn0M.js";import{_ as m}from"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const v={class:"aks-native-ops-redirect"},f={key:0},h=["href"],k={key:1,class:"desc"},b={__name:"NativeOpsRedirect",setup(w){const n=_(),p=l(()=>{var e;return((e=n.meta)==null?void 0:e.title)||"运营功能已迁移"}),t=l(()=>{var i,c;const e=((i=n.meta)==null?void 0:i.nativeAdminPath)||"";return e?(((c=window.aksrtAdminData)==null?void 0:c.adminUrl)||"/wp-admin/").replace(/\/?$/,"/")+e.replace(/^\//,""):""});return d(()=>{t.value&&window.location.replace(t.value)}),(e,s)=>(r(),a("div",v,[o("h2",null,u(p.value),1),s[0]||(s[0]=o("p",{class:"desc"}," 此运营功能已迁移到 WordPress 原生后台侧栏(对齐 zibll)。正在跳转… ",-1)),t.value?(r(),a("p",f,[o("a",{class:"button button-primary",href:t.value},"立即打开原生页面",8,h)])):(r(),a("p",k,"未配置原生跳转地址,请从左侧 WP 菜单进入。"))]))}},P=m(b,[["__scopeId","data-v-da26f551"]]);export{P as default};
|
||||
@@ -1 +0,0 @@
|
||||
.aks-native-ops-redirect[data-v-da26f551]{max-width:640px;margin:48px auto;padding:24px;background:var(--aks-surface, #fff);border-radius:8px;border:1px solid var(--aks-border, #e5e7eb)}.desc[data-v-da26f551]{color:#646970;line-height:1.6}.button[data-v-da26f551]{display:inline-block;margin-top:8px;padding:8px 14px;background:#2271b1;color:#fff;border-radius:4px;text-decoration:none}
|
||||
@@ -1 +0,0 @@
|
||||
import{_ as n}from"./index.js";import{X as s,Y as d,Z as o,l as r,a5 as c,W as t,f as i}from"./vendor-vue.Bykizn0M.js";const _={class:"aksrt-page-header"},l={class:"aksrt-page-header__main"},h={class:"aksrt-page-header__title"},p={key:0,class:"aksrt-page-header__desc"},u={key:1,class:"aksrt-page-header__desc"},g={key:0,class:"aksrt-page-header__actions"},k={__name:"PageHeader",props:{title:{type:String,required:!0},desc:{type:String,default:""}},setup(a){return(e,m)=>(t(),s("header",_,[d("div",l,[d("h2",h,o(a.title),1),a.desc?(t(),s("p",p,[r(e.$slots,"desc",{},()=>[i(o(a.desc),1)],!0)])):e.$slots.desc?(t(),s("div",u,[r(e.$slots,"desc",{},void 0,!0)])):c("",!0)]),e.$slots.actions?(t(),s("div",g,[r(e.$slots,"actions",{},void 0,!0)])):c("",!0)]))}},$=n(k,[["__scopeId","data-v-8ce32c14"]]);export{$ as P};
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-page-header[data-v-8ce32c14]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.aksrt-page-header__main[data-v-8ce32c14]{flex:1 1 auto;min-width:0}.aksrt-page-header__title[data-v-8ce32c14]{margin:0 0 6px;color:#1a1a2e;font-size:22px;font-weight:700;letter-spacing:-.02em;line-height:1.3}.aksrt-page-header__desc[data-v-8ce32c14]{margin:0;color:#7a7f8a;font-size:13px;line-height:1.65}.aksrt-page-header__actions[data-v-8ce32c14]{flex:0 0 auto;display:flex;align-items:center;gap:8px}@media(max-width:768px){.aksrt-page-header[data-v-8ce32c14]{margin-bottom:14px;gap:10px}.aksrt-page-header__title[data-v-8ce32c14]{font-size:18px}.aksrt-page-header__desc[data-v-8ce32c14]{font-size:12px}.aksrt-page-header__actions[data-v-8ce32c14]{width:100%}}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-gateway__card[data-v-fe319791]{display:flex;align-items:center;gap:12px;padding:14px;border-radius:8px;background:var(--surface-2, #fafafa);border:1px solid var(--color-line, #f0f0f0)}.aksrt-gateway__icon[data-v-fe319791]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--surface-3, #f0f0f0);color:var(--color-ink-4, #8a909c);font-size:16px}.aksrt-gateway__icon--active[data-v-fe319791]{background:var(--color-primary-soft, #f0f5ff);color:var(--color-primary, #1890ff)}.aksrt-gateway__card strong[data-v-fe319791]{display:block;font-size:14px;color:var(--color-ink, #1a1a2e)}.aksrt-gateway__card p[data-v-fe319791]{margin:2px 0 0;font-size:12px;color:var(--color-ink-4, #8a909c)}.aksrt-gateway__stat[data-v-fe319791]{text-align:center;padding:16px;border-radius:8px;background:var(--surface-2, #fafafa)}.aksrt-gateway__stat strong[data-v-fe319791]{display:block;font-size:18px;font-weight:600;color:var(--color-ink, #1a1a2e)}.aksrt-gateway__stat p[data-v-fe319791]{margin:4px 0 0;font-size:12px;color:var(--color-ink-4, #8a909c)}.aksrt-text-warning[data-v-fe319791]{color:var(--color-warning, #f59e0b)}.aksrt-text-info[data-v-fe319791]{color:var(--color-info, #3b82f6)}
|
||||
@@ -1 +0,0 @@
|
||||
import{a as V}from"./shared-api.D5_fnN32.js";import{P as R}from"./PageHeader.Di3JTPjc.js";import{_ as T}from"./index.js";import{u as U,b as C,e as q,f as H}from"./vendor-naive.BuHWlEgf.js";import{o as L,X as j,a4 as l,a3 as o,r as _,e as B,a1 as f,W as h,f as m,a2 as P,Y as c,N as S,Z as v,a5 as W,F as X,R as Y,k as r}from"./vendor-vue.Bykizn0M.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},A={class:"aksrt-cap-matrix__header"},G={class:"aksrt-cap-matrix__title"},I={class:"aksrt-cap-matrix__desc"},K={class:"aksrt-form-actions"},Q={__name:"PermissionsCapabilities",setup($){const y=U(),g=_(!0),k=_(!1),b=_([]),N=_({}),u=B({cap_count:0,group_count:0,column_count:0}),i=B({}),x=_({});L(w);async function w(){g.value=!0;try{const e=await V.getCapabilities(),a=(e==null?void 0:e.data)||{};N.value=a.columns||{},b.value=a.groups||[],Object.assign(u,a.summary||{cap_count:0,group_count:0,column_count:0});const s={};for(const t of b.value)for(const n of t.items||[])s[n.cap_id]={...n.values||{}};O(i,s),x.value=JSON.parse(JSON.stringify(s))}catch(e){y.error((e==null?void 0:e.message)||"加载能力矩阵失败")}finally{g.value=!1}}function O(e,a){Object.keys(e).forEach(s=>delete e[s]),Object.entries(a).forEach(([s,t])=>{e[s]={...t}})}function z(e){const a=[{title:"能力项",key:"label",fixed:"left",width:280,render:t=>r("div",{class:"aksrt-cap-matrix__cap"},[r("strong",t.label),r("code",t.cap_id)])}],s=new Set;for(const t of e.items||[])for(const n of t.visible_columns||[])s.add(n);for(const t of Object.keys(N.value||{}))s.has(t)&&a.push({title:N.value[t],key:t,width:t==="level"||t==="vip"?110:100,render:n=>E(n,t)});return a}function E(e,a){var t,n;return(e.visible_columns||[]).includes(a)?(i[e.cap_id]||(i[e.cap_id]={...e.values||{}}),a==="level"||a==="vip"?r(q,{value:((t=i[e.cap_id])==null?void 0:t[a])??-1,min:-1,max:a==="level"?10:2,step:1,size:"small",style:"width: 90px",onUpdateValue:d=>J(e.cap_id,a,d??-1)}):r(H,{value:!!((n=i[e.cap_id])!=null&&n[a]),size:"small",onUpdateValue:d=>J(e.cap_id,a,d)})):r("span",{class:"aksrt-cap-matrix__empty"},"—")}function J(e,a,s){i[e]||(i[e]={}),i[e][a]=s}function M(){O(i,JSON.parse(JSON.stringify(x.value||{}))),y.info("已恢复默认矩阵")}async function D(){k.value=!0;try{await V.saveCapabilities(JSON.parse(JSON.stringify(i))),x.value=JSON.parse(JSON.stringify(i)),y.success("能力矩阵已保存")}catch(e){y.error((e==null?void 0:e.message)||"保存能力矩阵失败")}finally{k.value=!1}}return(e,a)=>{const s=f("n-button"),t=f("n-space"),n=f("n-card"),d=f("n-data-table"),F=f("n-spin");return h(),j("div",Z,[l(R,{title:"基本权限 / 能力矩阵",desc:"统一管理用户治理、投稿和评论的角色能力矩阵。"},{actions:o(()=>[l(t,null,{default:o(()=>[l(s,{quaternary:"",onClick:M},{default:o(()=>[...a[0]||(a[0]=[m("恢复默认",-1)])]),_:1})]),_:1})]),_:1}),l(F,{show:g.value,style:{width:"100%","min-height":"240px"}},{default:o(()=>[u.cap_count?(h(),P(n,{key:0,class:"aksrt-section-card"},{default:o(()=>[a[1]||(a[1]=c("div",{class:"aksrt-section-header"},[c("h3",null,"矩阵概览")],-1)),l(t,null,{default:o(()=>[l(S(C),{round:"",type:"info"},{default:o(()=>[m("能力项:"+v(u.cap_count),1)]),_:1}),l(S(C),{round:"",type:"info"},{default:o(()=>[m("分组:"+v(u.group_count),1)]),_:1}),l(S(C),{round:"",type:"info"},{default:o(()=>[m("角色列:"+v(u.column_count),1)]),_:1})]),_:1})]),_:1})):W("",!0),(h(!0),j(X,null,Y(b.value,p=>(h(),P(n,{key:p.key,class:"aksrt-section-card"},{header:o(()=>[c("div",A,[c("div",null,[c("h3",G,v(p.title),1),c("p",I,"共 "+v(p.items.length)+" 项能力",1)])])]),default:o(()=>[l(d,{columns:z(p),data:p.items,bordered:!0,size:"small","single-line":!1,"scroll-x":1200},null,8,["columns","data"])]),_:2},1024))),128)),c("div",K,[l(s,{type:"primary",loading:k.value,onClick:D},{default:o(()=>[...a[2]||(a[2]=[m("保存能力矩阵",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}},ie=T(Q,[["__scopeId","data-v-34bd6923"]]);export{ie as default};
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-cap-matrix__header[data-v-34bd6923]{display:flex;align-items:center;justify-content:space-between}.aksrt-cap-matrix__title[data-v-34bd6923]{margin:0;font-size:15px;font-weight:600}.aksrt-cap-matrix__desc[data-v-34bd6923]{margin:4px 0 0;font-size:12px;color:#8a909c}.aksrt-cap-matrix__cap[data-v-34bd6923]{display:flex;flex-direction:column;gap:4px}.aksrt-cap-matrix__cap code[data-v-34bd6923]{font-size:11px;color:#667085}.aksrt-cap-matrix__empty[data-v-34bd6923]{color:#c0c4cc}.aksrt-form-actions[data-v-34bd6923]{display:flex;justify-content:flex-end;margin-top:16px}
|
||||
@@ -1 +0,0 @@
|
||||
import t from"./SchemaPage.CSkx936u.js";import{a2 as o,W as r}from"./vendor-vue.Bykizn0M.js";import"./shared-api.B7o7Pzvu.js";import"./FaIcon.CX_hGmM4.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";import"./shared-api.D5_fnN32.js";const l={__name:"PostPageSettings",setup(e){return(p,a)=>(r(),o(t,{domain:"post_list",section:"page"}))}};export{l as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-schema-page[data-v-a4bec770]{max-width:1100px;margin:0 auto}.aksrt-schema-page__tool-actions[data-v-a4bec770]{display:flex;justify-content:flex-end;margin-top:16px}.aksrt-schema-page__field-hint[data-v-a4bec770]{margin:8px 0 0;font-size:12px;color:#8a909c}.captcha-test-overlay[data-v-a4bec770]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:9999}.captcha-test-panel[data-v-a4bec770]{background:#fff;border-radius:12px;width:420px;max-width:90%;box-shadow:0 8px 32px #0000002e}.captcha-test-header[data-v-a4bec770]{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid #e8e8ec;font-size:16px;font-weight:600}.captcha-test-close[data-v-a4bec770]{background:none;border:none;font-size:24px;cursor:pointer;color:#999;padding:0;line-height:1}.captcha-test-close[data-v-a4bec770]:hover{color:#333}.captcha-test-body[data-v-a4bec770]{padding:24px;min-height:180px;display:flex;justify-content:center;align-items:center}
|
||||
@@ -1 +0,0 @@
|
||||
import{X as k,a4 as n,a3 as o,a1 as s,_ as c,W as x,f as e}from"./vendor-vue.Bykizn0M.js";import{P as C}from"./PageHeader.Di3JTPjc.js";import"./index.js";import"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const b={class:"aksrt-page-container"},q={__name:"ThemeAuthorizationPage",setup(g){const d=c();function r(a){d.push(a)}return(a,t)=>{const i=s("n-button"),p=s("n-space"),_=s("n-alert"),u=s("n-card"),l=s("n-list-item"),m=s("n-list");return x(),k("div",b,[n(C,{title:"主题授权",desc:"当前版本按产品决策不实现在线授权/撤销授权,仅保留主题信息与更新能力。"},{actions:o(()=>[n(p,null,{default:o(()=>[n(i,{quaternary:"",onClick:t[0]||(t[0]=f=>r("/tools/import-export"))},{default:o(()=>[...t[2]||(t[2]=[e("兼容&工具",-1)])]),_:1}),n(i,{quaternary:"",onClick:t[1]||(t[1]=f=>r("/tools/update"))},{default:o(()=>[...t[3]||(t[3]=[e("更新中心",-1)])]),_:1})]),_:1})]),_:1}),n(u,{class:"aksrt-section-card"},{default:o(()=>[n(_,{type:"info",title:"按设计省略","show-icon":!0},{default:o(()=>[...t[4]||(t[4]=[e(" 本主题当前不实现 zibll 风格的授权码校验、域名绑定、撤销授权、本地免授权等机制。 `AKSRT_Update_Checker` 仅负责匿名版本检测与更新提示,不与授权系统耦合。 ",-1)])]),_:1})]),_:1}),n(u,{class:"aksrt-section-card",title:"当前策略",size:"small"},{default:o(()=>[n(m,{bordered:""},{default:o(()=>[n(l,null,{default:o(()=>[...t[5]||(t[5]=[e("不提供授权码输入框或“立即授权”按钮",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[6]||(t[6]=[e("不提供“已授权 / 未授权 / 本地免授权”三态逻辑",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[7]||(t[7]=[e("更新能力统一收口到“更新中心”与“主题信息”页",-1)])]),_:1}),n(l,null,{default:o(()=>[...t[8]||(t[8]=[e("若未来恢复授权体系,应单独立项,不与现有更新检测器混接",-1)])]),_:1})]),_:1})]),_:1})])}}};export{q as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-theme-info__loading[data-v-ded10315]{display:flex;justify-content:center;padding:60px 0}.aksrt-theme-info__card[data-v-ded10315]{margin-bottom:16px}.aksrt-theme-info__modules[data-v-ded10315]{display:flex;flex-wrap:wrap;gap:8px}.aksrt-theme-info__module-tag[data-v-ded10315]{display:inline-flex;align-items:center;gap:5px}.aksrt-theme-info__links[data-v-ded10315]{display:flex;flex-wrap:wrap;gap:12px}.aksrt-theme-info__link[data-v-ded10315]{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;background:#f5f7fa;color:#333;text-decoration:none;font-size:13px;transition:background .2s}.aksrt-theme-info__link[data-v-ded10315]:hover{background:#e8eaed}
|
||||
@@ -1 +0,0 @@
|
||||
import{o as N,X as u,a4 as o,a3 as s,r as _,a1 as n,_ as T,W as r,f as d,Y as l,Z as i,F as V,R as q,a2 as z}from"./vendor-vue.Bykizn0M.js";import{a as y}from"./shared-api.D5_fnN32.js";import{P as A}from"./PageHeader.Di3JTPjc.js";import{_ as D}from"./index.js";import{u as F}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const P={class:"aksrt-page-container"},$={class:"aksrt-section-header"},H={key:0,class:"aksrt-rollback-list"},I={style:{margin:"6px 0 0",color:"#4b5565"}},L={style:{margin:"6px 0 0",color:"#7a7f8a","font-size":"12px"}},S={__name:"ToolsEmailRollback",setup(U){const h=T(),c=F(),m=_(!0),p=_(0),f=_([]),v=_(0);function x(t){h.push(t)}function b(t){return(t==null?void 0:t.data)??t??{}}async function g(){m.value=!0;try{const t=b(await y.getEmailRollbackUsers());f.value=Array.isArray(t.items)?t.items:[],v.value=Number(t.total||0)}catch(t){c.error(t.message||"加载邮件回滚列表失败")}finally{m.value=!1}}async function w(t){p.value=t;try{const a=await y.executeEmailRollback(t);a.code==="success"?(c.success(a.message||"回滚成功"),await g()):c.error(a.message||"回滚失败")}catch(a){c.error(a.message||"回滚失败")}finally{p.value=0}}return N(g),(t,a)=>{const k=n("n-button"),R=n("n-space"),C=n("n-tag"),E=n("n-empty"),B=n("n-card"),M=n("n-spin");return r(),u("div",P,[o(A,{title:"邮件回滚",desc:"查看 14 天邮箱变更窗口内的账号,并在必要时执行回滚。"},{actions:s(()=>[o(R,null,{default:s(()=>[o(k,{quaternary:"",onClick:a[0]||(a[0]=e=>x("/tools/health"))},{default:s(()=>[...a[1]||(a[1]=[d("健康检查",-1)])]),_:1}),o(k,{quaternary:"",onClick:g},{default:s(()=>[...a[2]||(a[2]=[d("刷新列表",-1)])]),_:1})]),_:1})]),_:1}),o(M,{show:m.value,style:{width:"100%","min-height":"200px"}},{default:s(()=>[o(B,{class:"aksrt-section-card"},{default:s(()=>[l("div",$,[a[3]||(a[3]=l("h3",null,"待处理账号",-1)),o(C,{round:"",type:"info"},{default:s(()=>[d("总计 "+i(v.value),1)]),_:1})]),f.value.length?(r(),u("div",H,[(r(!0),u(V,null,q(f.value,e=>(r(),u("div",{key:e.user_id,class:"aksrt-rollback-list__item"},[l("div",null,[l("strong",null,i(e.display_name||e.login),1),l("p",I,i(e.current_email)+" → "+i(e.previous_email),1),l("p",L," 剩余窗口:"+i(Math.max(0,Math.floor((e.expires_in||0)/3600)))+" 小时 ",1)]),o(k,{size:"small",loading:p.value===e.user_id,onClick:W=>w(e.user_id)},{default:s(()=>[...a[4]||(a[4]=[d(" 执行回滚 ",-1)])]),_:1},8,["loading","onClick"])]))),128))])):(r(),z(E,{key:1,description:"当前没有可回滚的邮箱变更记录"}))]),_:1})]),_:1},8,["show"])])}}},K=D(S,[["__scopeId","data-v-775b42f3"]]);export{K as default};
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-rollback-list[data-v-775b42f3]{display:grid;gap:12px}.aksrt-rollback-list__item[data-v-775b42f3]{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 16px;border:1px solid #e7ebf3;border-radius:14px}@media(max-width:768px){.aksrt-rollback-list__item[data-v-775b42f3]{align-items:flex-start;flex-direction:column}}
|
||||
@@ -1 +0,0 @@
|
||||
import{o as B,X as y,a4 as n,a3 as a,r as _,a1 as i,_ as V,W as f,f as r,Y as l,Z as u,F as D,R as E,a2 as N,c as P}from"./vendor-vue.Bykizn0M.js";import{a as b}from"./shared-api.D5_fnN32.js";import{P as q}from"./PageHeader.Di3JTPjc.js";import{_ as F}from"./index.js";import{u as I}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const M={class:"aksrt-page-container"},S={class:"aksrt-health-grid"},$={class:"aksrt-section-header"},j={style:{margin:"0",color:"#4b5565"}},L={__name:"ToolsHealth",setup(O){const w=V(),x=I(),d=_(!0),p=_({}),o=_({feature_enabled:!1,pending_users:0,rest_blocking_active:!1}),H=P(()=>Object.entries(p.value||{}).map(([e,t])=>({key:e,...t||{}})));function m(e){w.push(e)}function g(e){return(e==null?void 0:e.data)??e??{}}function T(e){return e==="ok"?"success":e==="warning"?"warning":e==="error"?"error":"info"}async function C(){d.value=!0;try{const[e,t]=await Promise.all([b.getHealthCheck(),b.getHealthEmailVerification()]);p.value=g(e).checks||{},o.value=g(t)}catch(e){x.error(e.message||"加载健康检查失败")}finally{d.value=!1}}return B(C),(e,t)=>{const v=i("n-button"),h=i("n-space"),c=i("n-tag"),k=i("n-card"),R=i("n-spin");return f(),y("div",M,[n(q,{title:"健康检查",desc:"集中查看运行环境、数据库表、邮箱验证迁移和系统诊断状态。"},{actions:a(()=>[n(h,null,{default:a(()=>[n(v,{quaternary:"",onClick:t[0]||(t[0]=s=>m("/tools/import-export"))},{default:a(()=>[...t[2]||(t[2]=[r("导入导出",-1)])]),_:1}),n(v,{quaternary:"",onClick:t[1]||(t[1]=s=>m("/tools/email-rollback"))},{default:a(()=>[...t[3]||(t[3]=[r("邮件回滚",-1)])]),_:1})]),_:1})]),_:1}),n(R,{show:d.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[n(k,{class:"aksrt-section-card"},{default:a(()=>[t[4]||(t[4]=l("div",{class:"aksrt-section-header"},[l("h3",null,"邮箱验证状态")],-1)),n(h,null,{default:a(()=>[n(c,{round:"",type:o.value.feature_enabled?"success":"default"},{default:a(()=>[r(" 功能开关:"+u(o.value.feature_enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),n(c,{round:"",type:o.value.rest_blocking_active?"warning":"default"},{default:a(()=>[r(" REST 阻断:"+u(o.value.rest_blocking_active?"已开启":"仅记录/关闭"),1)]),_:1},8,["type"]),n(c,{round:"",type:"info"},{default:a(()=>[r(" 待验证用户:"+u(o.value.pending_users),1)]),_:1})]),_:1})]),_:1}),l("div",S,[(f(!0),y(D,null,E(H.value,s=>(f(),N(k,{key:s.key,class:"aksrt-section-card"},{default:a(()=>[l("div",$,[l("h3",null,u(s.label),1),n(c,{round:"",type:T(s.status)},{default:a(()=>[r(u(s.status),1)]),_:2},1032,["type"])]),l("p",j,u(s.value),1)]),_:2},1024))),128))])]),_:1},8,["show"])])}}},G=F(L,[["__scopeId","data-v-485f9fd2"]]);export{G as default};
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-health-grid[data-v-485f9fd2]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
|
||||
@@ -1,3 +0,0 @@
|
||||
import{X as $,a4 as a,a3 as l,a1 as c,_ as A,W as B,f as r,Y as n,Z as P,r as u}from"./vendor-vue.Bykizn0M.js";import{a as f}from"./shared-api.D5_fnN32.js";import{P as V}from"./PageHeader.Di3JTPjc.js";import{_ as q}from"./index.js";import{u as U}from"./vendor-naive.BuHWlEgf.js";import"./vendor-misc.1adHN6i_.js";const z={class:"aksrt-page-container"},H={class:"aksrt-tools-output"},M={__name:"ToolsImportExport",setup(W){const b=A(),s=U(),m=u(!1),i=u(!1),y=u(!1),g=u(!1),v=u(""),d=u(""),k=u("global"),N=[{label:"全局&功能",value:"global"},{label:"页面&显示",value:"page_display"},{label:"文章&列表",value:"post_list"},{label:"用户&互动",value:"users"},{label:"支付&付费",value:"payment"}];function w(e){b.push(e)}function C(e){return(e==null?void 0:e.data)??e??{}}function S(){try{return JSON.parse(v.value||"{}")}catch{throw new Error("导入 JSON 格式无效")}}async function O(){m.value=!0;try{const e=C(await f.exportSettings());v.value=JSON.stringify(e,null,2),d.value=`导出完成
|
||||
版本: ${e.version||"unknown"}
|
||||
时间: ${e.exported||"unknown"}`,s.success("导出成功")}catch(e){s.error(e.message||"导出失败")}finally{m.value=!1}}async function J(){i.value=!0;try{const e=S(),t=await f.importSettings({...e,dry_run:!0});d.value=JSON.stringify(t,null,2),s.success("Dry Run 校验完成")}catch(e){s.error(e.message||"校验失败")}finally{i.value=!1}}async function R(){i.value=!0;try{const e=S(),t=await f.importSettings(e);d.value=JSON.stringify(t,null,2),s.success("导入完成")}catch(e){s.error(e.message||"导入失败")}finally{i.value=!1}}async function D(){y.value=!0;try{const e=await f.resetDomain(k.value);d.value=JSON.stringify(e,null,2),s.success("域设置已重置")}catch(e){s.error(e.message||"重置失败")}finally{y.value=!1}}async function E(){if(window.confirm("确认重置全部 schema 托管设置吗?系统会先自动创建一份“重置全部前快照”。")){g.value=!0;try{const e=await f.resetAllSettings();d.value=JSON.stringify(e,null,2),s.success("全部设置已重置")}catch(e){s.error(e.message||"重置全部失败")}finally{g.value=!1}}}return(e,t)=>{const o=c("n-button"),x=c("n-space"),T=c("n-input"),_=c("n-card"),I=c("n-select");return B(),$("div",z,[a(V,{title:"导入导出",desc:"导出当前设置快照、执行 dry-run 导入校验,并支持按域重置到 schema 默认值。"},{actions:l(()=>[a(x,null,{default:l(()=>[a(o,{quaternary:"",onClick:t[0]||(t[0]=p=>w("/tools/backup"))},{default:l(()=>[...t[4]||(t[4]=[r("数据备份",-1)])]),_:1}),a(o,{quaternary:"",onClick:t[1]||(t[1]=p=>w("/tools/health"))},{default:l(()=>[...t[5]||(t[5]=[r("健康检查",-1)])]),_:1})]),_:1})]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[9]||(t[9]=n("div",{class:"aksrt-section-header"},[n("h3",null,"导出与导入")],-1)),a(x,{style:{"margin-bottom":"16px"}},{default:l(()=>[a(o,{loading:m.value,onClick:O},{default:l(()=>[...t[6]||(t[6]=[r("导出当前配置",-1)])]),_:1},8,["loading"]),a(o,{loading:i.value,onClick:J},{default:l(()=>[...t[7]||(t[7]=[r("Dry Run 校验",-1)])]),_:1},8,["loading"]),a(o,{type:"primary",loading:i.value,onClick:R},{default:l(()=>[...t[8]||(t[8]=[r("执行导入",-1)])]),_:1},8,["loading"])]),_:1}),a(T,{value:v.value,"onUpdate:value":t[2]||(t[2]=p=>v.value=p),type:"textarea",autosize:{minRows:12,maxRows:20},placeholder:"导出的 JSON 会出现在这里,也可以直接粘贴导入。"},null,8,["value"]),t[10]||(t[10]=n("p",{class:"aksrt-tools-hint"}," 正式导入前会自动创建一份“导入前自动快照”,与“数据备份”页的快照体系共用,便于回滚。 ",-1))]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[13]||(t[13]=n("div",{class:"aksrt-section-header"},[n("h3",null,"按域重置")],-1)),a(x,{align:"center",wrap:""},{default:l(()=>[a(I,{value:k.value,"onUpdate:value":t[3]||(t[3]=p=>k.value=p),options:N,style:{width:"220px"}},null,8,["value"]),a(o,{loading:y.value,onClick:D},{default:l(()=>[...t[11]||(t[11]=[r("重置所选域",-1)])]),_:1},8,["loading"]),a(o,{type:"error",tertiary:"",loading:g.value,onClick:E},{default:l(()=>[...t[12]||(t[12]=[r("重置全部",-1)])]),_:1},8,["loading"])]),_:1}),t[14]||(t[14]=n("p",{class:"aksrt-tools-hint"},"仅支持重置 schema 托管的业务域。健康检查、迁移状态和邮件回滚属于运维面板,不参与按域回滚。",-1))]),_:1}),a(_,{class:"aksrt-section-card"},{default:l(()=>[t[15]||(t[15]=n("div",{class:"aksrt-section-header"},[n("h3",null,"最近结果")],-1)),n("pre",H,P(d.value||"尚未执行操作。"),1)]),_:1})])}}},G=q(M,[["__scopeId","data-v-9ee419ed"]]);export{G as default};
|
||||
@@ -1 +0,0 @@
|
||||
.aksrt-tools-output[data-v-9ee419ed]{margin:0;padding:14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.aksrt-tools-hint[data-v-9ee419ed]{margin:12px 0 0;color:#667085;font-size:12px;line-height:1.7}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-update__changelog[data-v-8fad1124]{margin-top:16px}.aksrt-update__changelog pre[data-v-8fad1124]{margin:8px 0 0;padding:12px 14px;border-radius:12px;background:#101828;color:#d0d7e2;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.aksrt-update__grid[data-v-8fad1124]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.aksrt-update__guide[data-v-8fad1124]{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #eef1f6;border-radius:12px;text-decoration:none;color:inherit;background:#fafafa}.aksrt-update__guide[data-v-8fad1124]:hover{border-color:#1890ff;background:#f5faff}.aksrt-update__guide span[data-v-8fad1124]{font-size:12px;color:#667085}
|
||||
@@ -1,4 +0,0 @@
|
||||
import{o as E,X as H,a4 as t,a3 as n,r as N,a1 as l,e as S,_ as T,W as v,f as d,Y as u,Z as _,a2 as P,a5 as R,c as W}from"./vendor-vue.Bykizn0M.js";import{a as k}from"./shared-api.D5_fnN32.js";import{P as X}from"./PageHeader.Di3JTPjc.js";import{u as Y}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},j={class:"aksrt-form-actions"},O={__name:"UsersBadge",setup(A){const U=T(),m=Y(),g=N(!0),p=N(!1),a=S({user_badge_enabled:!1,user_badge_public_display:!0,user_badge_limit:3,user_badge_dictionary:`founder|创始成员|warning
|
||||
staff|站务团队|info`}),y=S({dynamicBadge:!1}),h=W(()=>String(a.user_badge_dictionary||"").split(/\r?\n/).map(s=>s.trim()).filter(Boolean).length);function w(s){U.push(s)}function x(s){return(s==null?void 0:s.data)??s??{}}async function D(){g.value=!0;try{const[s,e]=await Promise.all([k.getSchemaPage("users","badge"),k.getNotificationSettings()]),o=x(s),c=x(e);a.user_badge_enabled=!!o.user_badge_enabled,a.user_badge_public_display=o.user_badge_public_display!==!1,a.user_badge_limit=Number(o.user_badge_limit||3),a.user_badge_dictionary=o.user_badge_dictionary||`founder|创始成员|warning
|
||||
staff|站务团队|info`,y.dynamicBadge=!!c.user_badge_enabled}catch(s){m.error(s.message||"加载用户徽章配置失败")}finally{g.value=!1}}async function V(){p.value=!0;try{await k.saveSchemaPage("users","badge",{user_badge_enabled:a.user_badge_enabled,user_badge_public_display:a.user_badge_public_display,user_badge_limit:Number(a.user_badge_limit||3),user_badge_dictionary:a.user_badge_dictionary}),m.success("用户徽章配置已保存")}catch(s){m.error(s.message||"保存失败")}finally{p.value=!1}}return E(D),(s,e)=>{const o=l("n-button"),c=l("n-space"),i=l("n-tag"),b=l("n-card"),B=l("n-switch"),f=l("n-form-item"),q=l("n-input-number"),C=l("n-form"),M=l("n-input"),$=l("n-alert"),z=l("n-spin");return v(),H("div",Z,[t(X,{title:"用户徽章",desc:"维护公开徽章字典、展示数量和前台展示位。具体授予逻辑可以后续再接业务,但字段和展示契约已经固定。"},{actions:n(()=>[t(c,null,{default:n(()=>[t(o,{quaternary:"",onClick:e[0]||(e[0]=r=>w("/users/notifications"))},{default:n(()=>[...e[6]||(e[6]=[d("消息通知",-1)])]),_:1}),t(o,{quaternary:"",onClick:e[1]||(e[1]=r=>w("/users/level"))},{default:n(()=>[...e[7]||(e[7]=[d("用户等级",-1)])]),_:1})]),_:1})]),_:1}),t(z,{show:g.value,style:{width:"100%","min-height":"200px"}},{default:n(()=>[t(b,{class:"aksrt-section-card"},{default:n(()=>[e[8]||(e[8]=u("div",{class:"aksrt-section-header"},[u("h3",null,"当前联动摘要")],-1)),t(c,null,{default:n(()=>[t(i,{round:"",type:a.user_badge_enabled?"success":"default"},{default:n(()=>[d(" 徽章系统:"+_(a.user_badge_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:a.user_badge_public_display?"info":"default"},{default:n(()=>[d(" 公开展示:"+_(a.user_badge_public_display?"开启":"关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:"info"},{default:n(()=>[d(" 最多显示:"+_(a.user_badge_limit)+" 枚 ",1)]),_:1}),t(i,{round:"",type:y.dynamicBadge?"success":"default"},{default:n(()=>[d(" 通知红点联动:"+_(y.dynamicBadge?"启用":"关闭"),1)]),_:1},8,["type"]),t(i,{round:"",type:"info"},{default:n(()=>[d(" 字典条目:"+_(h.value),1)]),_:1})]),_:1})]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[e[9]||(e[9]=u("div",{class:"aksrt-section-header"},[u("h3",null,"徽章展示")],-1)),t(C,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(f,{label:"启用徽章系统"},{default:n(()=>[t(B,{value:a.user_badge_enabled,"onUpdate:value":e[2]||(e[2]=r=>a.user_badge_enabled=r)},null,8,["value"])]),_:1}),a.user_badge_enabled?(v(),P(f,{key:0,label:"公开页显示徽章"},{default:n(()=>[t(B,{value:a.user_badge_public_display,"onUpdate:value":e[3]||(e[3]=r=>a.user_badge_public_display=r)},null,8,["value"])]),_:1})):R("",!0),a.user_badge_enabled?(v(),P(f,{key:1,label:"最多显示数量"},{default:n(()=>[t(q,{value:a.user_badge_limit,"onUpdate:value":e[4]||(e[4]=r=>a.user_badge_limit=r),min:1,max:8,style:{width:"180px"}},null,8,["value"])]),_:1})):R("",!0)]),_:1},8,["model"])]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[e[11]||(e[11]=u("div",{class:"aksrt-section-header"},[u("h3",null,"徽章字典")],-1)),t(C,{model:a,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:n(()=>[t(f,{label:"徽章列表"},{feedback:n(()=>[...e[10]||(e[10]=[u("span",{class:"aksrt-hint-text"},"每行一个徽章,格式 `slug|显示文案|色调`,色调支持 `neutral / info / success / warning / brand`。",-1)])]),default:n(()=>[t(M,{value:a.user_badge_dictionary,"onUpdate:value":e[5]||(e[5]=r=>a.user_badge_dictionary=r),type:"textarea",autosize:{minRows:5,maxRows:10},placeholder:`founder|创始成员|warning
|
||||
staff|站务团队|info`,disabled:!a.user_badge_enabled},null,8,["value","disabled"])]),_:1})]),_:1},8,["model"])]),_:1}),t(b,{class:"aksrt-section-card"},{default:n(()=>[t($,{type:"info","show-icon":!1},{default:n(()=>[...e[12]||(e[12]=[d(" 前台从 `aksrt_user_badges` user meta 读取已授予徽章列表,并在公开主页和本人中心头部展示。这里只负责定义合法徽章字典和展示上限。 ",-1)])]),_:1})]),_:1}),u("div",j,[t(o,{type:"primary",loading:p.value,onClick:V},{default:n(()=>[...e[13]||(e[13]=[d("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{O as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
import{o as E,X as H,a4 as s,a3 as a,r as U,a1 as r,e as B,_ as T,W as g,f as u,Y as _,Z as p,a2 as M,a5 as P,c as W}from"./vendor-vue.Bykizn0M.js";import{a as k}from"./shared-api.D5_fnN32.js";import{P as X}from"./PageHeader.Di3JTPjc.js";import{u as Y}from"./vendor-naive.BuHWlEgf.js";import"./index.js";import"./vendor-misc.1adHN6i_.js";const Z={class:"aksrt-page-container"},j={class:"aksrt-form-actions"},Q={__name:"UsersLevel",setup(A){const R=T(),m=Y(),b=U(!0),y=U(!1),l=B({user_level_enabled:!1,user_level_public_display:!0,user_level_source:"credits_balance",user_level_prefix:"Lv.",user_level_thresholds:`1|0
|
||||
2|30
|
||||
3|100
|
||||
4|300`}),i=B({enabled:!0,currencyName:"积分"}),D=W(()=>String(l.user_level_thresholds||"").split(/\r?\n/).map(t=>t.trim()).filter(Boolean).length);function h(t){R.push(t)}function x(t){return(t==null?void 0:t.data)??t??{}}async function L(){b.value=!0;try{const[t,e]=await Promise.all([k.getSchemaPage("users","level"),k.getCreditSettings()]),o=x(t),d=x(e);l.user_level_enabled=!!o.user_level_enabled,l.user_level_public_display=o.user_level_public_display!==!1,l.user_level_source=o.user_level_source||"credits_balance",l.user_level_prefix=o.user_level_prefix||"Lv.",l.user_level_thresholds=o.user_level_thresholds||`1|0
|
||||
2|30
|
||||
3|100
|
||||
4|300`,i.enabled=d.enabled!==!1,i.currencyName=d.currency_name||"积分"}catch(t){m.error(t.message||"加载用户等级配置失败")}finally{b.value=!1}}async function V(){y.value=!0;try{await k.saveSchemaPage("users","level",{user_level_enabled:l.user_level_enabled,user_level_public_display:l.user_level_public_display,user_level_source:l.user_level_source,user_level_prefix:l.user_level_prefix,user_level_thresholds:l.user_level_thresholds}),m.success("用户等级配置已保存")}catch(t){m.error(t.message||"保存失败")}finally{y.value=!1}}return E(L),(t,e)=>{const o=r("n-button"),d=r("n-space"),v=r("n-tag"),f=r("n-card"),w=r("n-switch"),c=r("n-form-item"),C=r("n-input"),N=r("n-form"),S=r("n-radio"),q=r("n-radio-group"),z=r("n-alert"),$=r("n-spin");return g(),H("div",Z,[s(X,{title:"用户等级",desc:"配置等级来源、展示前缀和阈值规则。前台公开主页会按照这里的规则输出等级身份芯片。"},{actions:a(()=>[s(d,null,{default:a(()=>[s(o,{quaternary:"",onClick:e[0]||(e[0]=n=>h("/users/credits"))},{default:a(()=>[...e[7]||(e[7]=[u("用户积分",-1)])]),_:1}),s(o,{quaternary:"",onClick:e[1]||(e[1]=n=>h("/users/badge"))},{default:a(()=>[...e[8]||(e[8]=[u("用户徽章",-1)])]),_:1})]),_:1})]),_:1}),s($,{show:b.value,style:{width:"100%","min-height":"200px"}},{default:a(()=>[s(f,{class:"aksrt-section-card"},{default:a(()=>[e[9]||(e[9]=_("div",{class:"aksrt-section-header"},[_("h3",null,"当前联动摘要")],-1)),s(d,null,{default:a(()=>[s(v,{round:"",type:l.user_level_enabled?"success":"default"},{default:a(()=>[u(" 等级系统:"+p(l.user_level_enabled?"已启用":"已关闭"),1)]),_:1},8,["type"]),s(v,{round:"",type:i.enabled?"info":"warning"},{default:a(()=>[u(" 积分系统:"+p(i.enabled?"已启用":"未启用"),1)]),_:1},8,["type"]),s(v,{round:"",type:"info"},{default:a(()=>[u(" 当前货币:"+p(i.currencyName),1)]),_:1}),s(v,{round:"",type:l.user_level_source==="credits_balance"?"success":"warning"},{default:a(()=>[u(" 来源:"+p(l.user_level_source==="credits_balance"?"积分余额":"手动 Meta"),1)]),_:1},8,["type"]),s(v,{round:"",type:"info"},{default:a(()=>[u(" 阈值条目:"+p(D.value),1)]),_:1})]),_:1})]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[10]||(e[10]=_("div",{class:"aksrt-section-header"},[_("h3",null,"等级显示")],-1)),s(N,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:a(()=>[s(c,{label:"启用等级系统"},{default:a(()=>[s(w,{value:l.user_level_enabled,"onUpdate:value":e[2]||(e[2]=n=>l.user_level_enabled=n)},null,8,["value"])]),_:1}),l.user_level_enabled?(g(),M(c,{key:0,label:"公开页显示等级"},{default:a(()=>[s(w,{value:l.user_level_public_display,"onUpdate:value":e[3]||(e[3]=n=>l.user_level_public_display=n)},null,8,["value"])]),_:1})):P("",!0),l.user_level_enabled?(g(),M(c,{key:1,label:"等级前缀"},{default:a(()=>[s(C,{value:l.user_level_prefix,"onUpdate:value":e[4]||(e[4]=n=>l.user_level_prefix=n),maxlength:"12",placeholder:"Lv."},null,8,["value"])]),_:1})):P("",!0)]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[e[14]||(e[14]=_("div",{class:"aksrt-section-header"},[_("h3",null,"等级规则")],-1)),s(N,{model:l,"label-placement":"left","label-width":"180",class:"aksrt-form"},{default:a(()=>[s(c,{label:"等级来源"},{default:a(()=>[s(q,{value:l.user_level_source,"onUpdate:value":e[5]||(e[5]=n=>l.user_level_source=n),disabled:!l.user_level_enabled},{default:a(()=>[s(d,{size:"large"},{default:a(()=>[s(S,{value:"credits_balance"},{default:a(()=>[...e[11]||(e[11]=[u("积分余额",-1)])]),_:1}),s(S,{value:"manual_meta"},{default:a(()=>[...e[12]||(e[12]=[u("手动 Meta",-1)])]),_:1})]),_:1})]),_:1},8,["value","disabled"])]),_:1}),s(c,{label:"等级阈值"},{feedback:a(()=>[...e[13]||(e[13]=[_("span",{class:"aksrt-hint-text"},"每行一个等级,格式 `等级|所需积分`。手动 Meta 模式下仍建议保留完整字典,方便后续切换回自动计算。",-1)])]),default:a(()=>[s(C,{value:l.user_level_thresholds,"onUpdate:value":e[6]||(e[6]=n=>l.user_level_thresholds=n),type:"textarea",autosize:{minRows:5,maxRows:10},placeholder:`1|0
|
||||
2|30
|
||||
3|100
|
||||
4|300`,disabled:!l.user_level_enabled},null,8,["value","disabled"])]),_:1})]),_:1},8,["model"])]),_:1}),s(f,{class:"aksrt-section-card"},{default:a(()=>[s(z,{type:"info","show-icon":!1},{default:a(()=>[...e[15]||(e[15]=[u(" 手动模式读取 `aksrt_user_level` user meta;自动模式则根据当前积分余额和上方阈值表实时计算等级,不需要单独写库。 ",-1)])]),_:1})]),_:1}),_("div",j,[s(o,{type:"primary",loading:y.value,onClick:V},{default:a(()=>[...e[16]||(e[16]=[u("保存配置",-1)])]),_:1},8,["loading"])])]),_:1},8,["show"])])}}};export{Q as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-verify-drawer__section[data-v-84e367b4]{margin-top:20px}.aksrt-verify-drawer__title[data-v-84e367b4]{margin-bottom:10px;font-size:14px;font-weight:600;color:#1f2937}.aksrt-verify-drawer__timeline[data-v-84e367b4]{display:grid;gap:12px}.aksrt-verify-drawer__timeline-item[data-v-84e367b4]{padding:12px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.aksrt-verify-drawer__timeline-head[data-v-84e367b4]{display:flex;justify-content:space-between;gap:12px;margin-bottom:6px}.aksrt-verify-drawer__timeline-item p[data-v-84e367b4]{margin:0 0 6px;color:#111827;white-space:pre-wrap}.aksrt-verify-drawer__timeline-item small[data-v-84e367b4]{color:#6b7280}.aksrt-verify-page__card[data-v-96c64f9f]{margin-top:16px}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
.aksrt-wechat__status[data-v-cb377b9c]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.aksrt-wechat__status-card[data-v-cb377b9c]{display:flex;align-items:center;gap:12px;padding:16px;background:#fff;border-radius:8px;border:1px solid #e8e8e8}.aksrt-wechat__status-icon[data-v-cb377b9c]{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}.aksrt-wechat__status-icon--ok[data-v-cb377b9c]{background:#d4edda;color:#155724}.aksrt-wechat__status-icon--warn[data-v-cb377b9c]{background:#fff3cd;color:#856404}.aksrt-wechat__status-icon--info[data-v-cb377b9c]{background:#d1ecf1;color:#0c5460}.aksrt-wechat__status-value[data-v-cb377b9c]{font-size:18px;font-weight:600;color:#1a1a2e}.aksrt-wechat__status-label[data-v-cb377b9c]{font-size:12px;color:#888}.aksrt-wechat__form-card[data-v-cb377b9c]{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:24px;margin-bottom:16px}.aksrt-wechat__form-card h3[data-v-cb377b9c]{margin:0 0 16px;font-size:16px;font-weight:600}.aksrt-form-hint[data-v-cb377b9c]{font-size:12px;color:#888;margin-top:4px}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,16 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>AKSRT 主题设置</title>
|
||||
<script type="module" crossorigin src="./index.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="./vendor-vue.Bykizn0M.js">
|
||||
<link rel="modulepreload" crossorigin href="./vendor-misc.1adHN6i_.js">
|
||||
<link rel="modulepreload" crossorigin href="./vendor-naive.BuHWlEgf.js">
|
||||
<link rel="stylesheet" crossorigin href="./index.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="aksrt-admin-app"></div>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
function c(n={}){var r;const o=(r=window.wp)==null?void 0:r.media;if(!o)throw new Error("当前后台未加载 WordPress 媒体库。");const e=o({title:n.title||"选择图片",button:{text:n.buttonText||"使用此图片"},library:{type:n.type||"image"},multiple:!1});return new Promise((i,s)=>{e.on("select",()=>{var l;const t=(l=e.state().get("selection").first())==null?void 0:l.toJSON();if(!(t!=null&&t.url)){s(new Error("未选择有效的媒体资源。"));return}i(t)}),e.on("close",()=>{e.state().get("selection").length>0||i(null)}),e.open()})}export{c as o};
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -294,6 +294,11 @@ if (is_admin() && class_exists('AKSRT_Admin_Shop_Controller')) {
|
||||
AKSRT_Admin_Shop_Controller::get_instance()->init_product_admin_columns();
|
||||
}
|
||||
|
||||
// 商品原生编辑 meta box(价格/库存/发货售后)
|
||||
if (is_admin() && class_exists('AKSRT_Product_Meta_Box')) {
|
||||
AKSRT_Product_Meta_Box::get_instance()->init();
|
||||
}
|
||||
|
||||
// 商品评价/评分系统
|
||||
if (class_exists('AKSRT_Product_Review')) {
|
||||
AKSRT_Product_Review::get_instance()->init();
|
||||
|
||||
@@ -320,6 +320,7 @@ require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-cart-service.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-checkout-service.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-address-service.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-shop-product-service.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/class-aksrt-product-meta-box.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/shop-traits/trait-aksrt-shop-part-1.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/shop-traits/trait-aksrt-shop-part-2.php';
|
||||
require_once AKSRT_DIR . '/inc/classes/shop/shop-traits/trait-aksrt-shop-part-3.php';
|
||||
|
||||
@@ -0,0 +1,252 @@
|
||||
<?php
|
||||
/**
|
||||
* Native product edit meta box for aksrt_product (SPA ProductEditorDrawer parity).
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
class AKSRT_Product_Meta_Box {
|
||||
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance(): self {
|
||||
if (null === self::$instance) {
|
||||
self::$instance = new self();
|
||||
}
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public function init(): void {
|
||||
if (!is_admin()) {
|
||||
return;
|
||||
}
|
||||
add_action('add_meta_boxes', [$this, 'register_meta_box']);
|
||||
add_action('save_post_aksrt_product', [$this, 'save'], 10, 2);
|
||||
}
|
||||
|
||||
public function register_meta_box(): void {
|
||||
add_meta_box(
|
||||
'aksrt_product_commerce',
|
||||
__('商品商业设置', 'aksrt'),
|
||||
[$this, 'render'],
|
||||
'aksrt_product',
|
||||
'normal',
|
||||
'high'
|
||||
);
|
||||
}
|
||||
|
||||
public function render(WP_Post $post): void {
|
||||
wp_nonce_field('aksrt_product_meta_save', 'aksrt_product_meta_nonce');
|
||||
|
||||
$price = (float) get_post_meta($post->ID, '_aksrt_price', true);
|
||||
$stock = (int) get_post_meta($post->ID, '_aksrt_stock', true);
|
||||
$image = (string) get_post_meta($post->ID, '_aksrt_product_image', true);
|
||||
$gallery = get_post_meta($post->ID, '_aksrt_product_gallery', true);
|
||||
$gallery = is_array($gallery) ? $gallery : [];
|
||||
$shipping_mode = (string) get_post_meta($post->ID, '_aksrt_shipping_mode', true);
|
||||
$shipping_fee = (float) get_post_meta($post->ID, '_aksrt_shipping_fee', true);
|
||||
$after_sale_policy = (string) get_post_meta($post->ID, '_aksrt_after_sale_policy', true);
|
||||
$support_refund = get_post_meta($post->ID, '_aksrt_support_refund', true);
|
||||
$support_refund = $support_refund === '' ? '1' : (string) $support_refund;
|
||||
$limit_buy = get_post_meta($post->ID, '_aksrt_limit_buy', true);
|
||||
$limit_buy = $limit_buy === '' ? -1 : (int) $limit_buy;
|
||||
$stock_type = (string) (get_post_meta($post->ID, '_aksrt_stock_type', true) ?: 'all');
|
||||
$pay_modo = (string) (get_post_meta($post->ID, '_aksrt_pay_modo', true) ?: '0');
|
||||
$start_price = (float) get_post_meta($post->ID, '_aksrt_start_price', true);
|
||||
$delivery_note = (string) get_post_meta($post->ID, '_aksrt_delivery_note', true);
|
||||
$marketing = (string) get_post_meta($post->ID, '_aksrt_marketing_headline', true);
|
||||
|
||||
$shipping_modes = [
|
||||
'' => __('默认(继承设置)', 'aksrt'),
|
||||
'express' => __('快递物流', 'aksrt'),
|
||||
'auto' => __('自动发货', 'aksrt'),
|
||||
'manual' => __('手动发货', 'aksrt'),
|
||||
'virtual' => __('虚拟商品', 'aksrt'),
|
||||
];
|
||||
$stock_types = [
|
||||
'all' => __('统一库存', 'aksrt'),
|
||||
'opts' => __('按选项/变体', 'aksrt'),
|
||||
];
|
||||
?>
|
||||
<style>
|
||||
.aksrt-pmb-product .row { display:grid; grid-template-columns: 140px 1fr; gap: 10px 14px; margin: 0 0 12px; align-items:start; }
|
||||
.aksrt-pmb-product .row label { font-weight:600; padding-top:6px; }
|
||||
.aksrt-pmb-product input[type="text"],
|
||||
.aksrt-pmb-product input[type="number"],
|
||||
.aksrt-pmb-product input[type="url"],
|
||||
.aksrt-pmb-product select,
|
||||
.aksrt-pmb-product textarea { width:100%; max-width:560px; }
|
||||
.aksrt-pmb-product .hint { color:#646970; font-size:12px; margin:4px 0 0; }
|
||||
.aksrt-pmb-product .grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; max-width:720px; }
|
||||
.aksrt-pmb-product h4 { margin:18px 0 10px; padding-top:12px; border-top:1px solid #dcdcde; }
|
||||
</style>
|
||||
<div class="aksrt-pmb-product">
|
||||
<h4><?php esc_html_e('价格与库存', 'aksrt'); ?></h4>
|
||||
<div class="grid-2">
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_price"><?php esc_html_e('价格(元)', 'aksrt'); ?></label>
|
||||
<input type="number" id="aksrt_price" name="aksrt_price" min="0" step="0.01" value="<?php echo esc_attr((string) $price); ?>">
|
||||
</div>
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_stock"><?php esc_html_e('库存', 'aksrt'); ?></label>
|
||||
<input type="number" id="aksrt_stock" name="aksrt_stock" min="-1" step="1" value="<?php echo esc_attr((string) $stock); ?>">
|
||||
<p class="hint"><?php esc_html_e('-1 表示无限库存。', 'aksrt'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-2">
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_pay_modo"><?php esc_html_e('支付方式', 'aksrt'); ?></label>
|
||||
<select id="aksrt_pay_modo" name="aksrt_pay_modo">
|
||||
<option value="0" <?php selected($pay_modo, '0'); ?>><?php esc_html_e('现金', 'aksrt'); ?></option>
|
||||
<option value="points" <?php selected($pay_modo, 'points'); ?>><?php esc_html_e('积分', 'aksrt'); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_start_price"><?php esc_html_e('划线价 / 起售价', 'aksrt'); ?></label>
|
||||
<input type="number" id="aksrt_start_price" name="aksrt_start_price" min="0" step="0.01" value="<?php echo esc_attr((string) $start_price); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-2">
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_stock_type"><?php esc_html_e('库存类型', 'aksrt'); ?></label>
|
||||
<select id="aksrt_stock_type" name="aksrt_stock_type">
|
||||
<?php foreach ($stock_types as $key => $label) : ?>
|
||||
<option value="<?php echo esc_attr($key); ?>" <?php selected($stock_type, $key); ?>><?php echo esc_html($label); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_limit_buy"><?php esc_html_e('限购数量', 'aksrt'); ?></label>
|
||||
<input type="number" id="aksrt_limit_buy" name="aksrt_limit_buy" min="-1" step="1" value="<?php echo esc_attr((string) $limit_buy); ?>">
|
||||
<p class="hint"><?php esc_html_e('-1 不限购。', 'aksrt'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4><?php esc_html_e('素材', 'aksrt'); ?></h4>
|
||||
<div class="row">
|
||||
<label for="aksrt_product_image"><?php esc_html_e('主图 URL', 'aksrt'); ?></label>
|
||||
<div>
|
||||
<input type="url" id="aksrt_product_image" name="aksrt_product_image" value="<?php echo esc_attr($image); ?>" placeholder="https://">
|
||||
<p class="hint"><?php esc_html_e('也可使用特色图片;此处优先作为商品主图。', 'aksrt'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="aksrt_product_gallery"><?php esc_html_e('图集 URL', 'aksrt'); ?></label>
|
||||
<div>
|
||||
<textarea id="aksrt_product_gallery" name="aksrt_product_gallery" rows="4" placeholder="<?php esc_attr_e('每行一个图片 URL', 'aksrt'); ?>"><?php echo esc_textarea(implode("\n", $gallery)); ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4><?php esc_html_e('发货与售后', 'aksrt'); ?></h4>
|
||||
<div class="grid-2">
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_shipping_mode"><?php esc_html_e('发货方式', 'aksrt'); ?></label>
|
||||
<select id="aksrt_shipping_mode" name="aksrt_shipping_mode">
|
||||
<?php foreach ($shipping_modes as $key => $label) : ?>
|
||||
<option value="<?php echo esc_attr($key); ?>" <?php selected($shipping_mode, $key); ?>><?php echo esc_html($label); ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row" style="grid-template-columns:1fr;">
|
||||
<label for="aksrt_shipping_fee"><?php esc_html_e('额外运费(元)', 'aksrt'); ?></label>
|
||||
<input type="number" id="aksrt_shipping_fee" name="aksrt_shipping_fee" min="0" step="0.01" value="<?php echo esc_attr((string) $shipping_fee); ?>">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="aksrt_after_sale_policy"><?php esc_html_e('售后说明', 'aksrt'); ?></label>
|
||||
<textarea id="aksrt_after_sale_policy" name="aksrt_after_sale_policy" rows="3"><?php echo esc_textarea($after_sale_policy); ?></textarea>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="aksrt_support_refund"><?php esc_html_e('支持退款', 'aksrt'); ?></label>
|
||||
<div>
|
||||
<label>
|
||||
<input type="checkbox" id="aksrt_support_refund" name="aksrt_support_refund" value="1" <?php checked($support_refund, '1'); ?>>
|
||||
<?php esc_html_e('允许申请退款/售后', 'aksrt'); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="aksrt_delivery_note"><?php esc_html_e('发货备注', 'aksrt'); ?></label>
|
||||
<input type="text" id="aksrt_delivery_note" name="aksrt_delivery_note" value="<?php echo esc_attr($delivery_note); ?>">
|
||||
</div>
|
||||
<div class="row">
|
||||
<label for="aksrt_marketing_headline"><?php esc_html_e('营销标题', 'aksrt'); ?></label>
|
||||
<input type="text" id="aksrt_marketing_headline" name="aksrt_marketing_headline" value="<?php echo esc_attr($marketing); ?>">
|
||||
</div>
|
||||
<p class="hint">
|
||||
<?php esc_html_e('SKU 变体可在后续版本通过变体表管理;当前列表列已显示价格/库存/销量。', 'aksrt'); ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
public function save(int $post_id, WP_Post $post): void {
|
||||
if (!isset($_POST['aksrt_product_meta_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash((string) $_POST['aksrt_product_meta_nonce'])), 'aksrt_product_meta_save')) {
|
||||
return;
|
||||
}
|
||||
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
|
||||
return;
|
||||
}
|
||||
if ($post->post_type !== 'aksrt_product') {
|
||||
return;
|
||||
}
|
||||
if (!current_user_can('edit_post', $post_id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$price = isset($_POST['aksrt_price']) ? max(0, (float) wp_unslash($_POST['aksrt_price'])) : 0;
|
||||
$stock = isset($_POST['aksrt_stock']) ? (int) wp_unslash($_POST['aksrt_stock']) : 0;
|
||||
if ($stock < -1) {
|
||||
$stock = -1;
|
||||
}
|
||||
|
||||
$image = isset($_POST['aksrt_product_image']) ? esc_url_raw((string) wp_unslash($_POST['aksrt_product_image'])) : '';
|
||||
$gallery_raw = isset($_POST['aksrt_product_gallery']) ? (string) wp_unslash($_POST['aksrt_product_gallery']) : '';
|
||||
$gallery = array_values(array_filter(array_map(
|
||||
static function ($line) {
|
||||
return esc_url_raw(trim((string) $line));
|
||||
},
|
||||
preg_split('/\r\n|\r|\n/', $gallery_raw) ?: []
|
||||
)));
|
||||
|
||||
$shipping_mode = isset($_POST['aksrt_shipping_mode']) ? sanitize_key((string) wp_unslash($_POST['aksrt_shipping_mode'])) : '';
|
||||
$shipping_fee = isset($_POST['aksrt_shipping_fee']) ? max(0, (float) wp_unslash($_POST['aksrt_shipping_fee'])) : 0;
|
||||
$policy = isset($_POST['aksrt_after_sale_policy']) ? sanitize_textarea_field((string) wp_unslash($_POST['aksrt_after_sale_policy'])) : '';
|
||||
$support_refund = !empty($_POST['aksrt_support_refund']) ? '1' : '0';
|
||||
$limit_buy = isset($_POST['aksrt_limit_buy']) ? max(-1, min(9999, (int) wp_unslash($_POST['aksrt_limit_buy']))) : -1;
|
||||
$stock_type = isset($_POST['aksrt_stock_type']) ? sanitize_key((string) wp_unslash($_POST['aksrt_stock_type'])) : 'all';
|
||||
if (!in_array($stock_type, ['all', 'opts'], true)) {
|
||||
$stock_type = 'all';
|
||||
}
|
||||
$pay_modo = isset($_POST['aksrt_pay_modo']) ? sanitize_key((string) wp_unslash($_POST['aksrt_pay_modo'])) : '0';
|
||||
if (!in_array($pay_modo, ['0', 'points'], true)) {
|
||||
$pay_modo = '0';
|
||||
}
|
||||
$start_price = isset($_POST['aksrt_start_price']) ? max(0, (float) wp_unslash($_POST['aksrt_start_price'])) : 0;
|
||||
$delivery_note = isset($_POST['aksrt_delivery_note']) ? sanitize_text_field((string) wp_unslash($_POST['aksrt_delivery_note'])) : '';
|
||||
$marketing = isset($_POST['aksrt_marketing_headline']) ? sanitize_text_field((string) wp_unslash($_POST['aksrt_marketing_headline'])) : '';
|
||||
|
||||
update_post_meta($post_id, '_aksrt_price', $price);
|
||||
update_post_meta($post_id, '_aksrt_stock', $stock);
|
||||
update_post_meta($post_id, '_aksrt_product_image', $image);
|
||||
update_post_meta($post_id, '_aksrt_product_gallery', $gallery);
|
||||
update_post_meta($post_id, '_aksrt_shipping_mode', $shipping_mode);
|
||||
update_post_meta($post_id, '_aksrt_shipping_type', $shipping_mode);
|
||||
update_post_meta($post_id, '_aksrt_shipping_fee', $shipping_fee);
|
||||
update_post_meta($post_id, '_aksrt_after_sale_policy', $policy);
|
||||
update_post_meta($post_id, '_aksrt_support_refund', $support_refund);
|
||||
update_post_meta($post_id, '_aksrt_limit_buy', $limit_buy);
|
||||
update_post_meta($post_id, '_aksrt_stock_type', $stock_type);
|
||||
update_post_meta($post_id, '_aksrt_pay_modo', $pay_modo);
|
||||
update_post_meta($post_id, '_aksrt_start_price', $start_price);
|
||||
update_post_meta($post_id, '_aksrt_delivery_note', $delivery_note);
|
||||
update_post_meta($post_id, '_aksrt_marketing_headline', $marketing);
|
||||
|
||||
// Keep sales counter present for list columns.
|
||||
if (get_post_meta($post_id, '_aksrt_sales', true) === '') {
|
||||
update_post_meta($post_id, '_aksrt_sales', 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user