评论等级改为后端计算(artalk-cf 下发官方 badge)

主题原来的九品官阶用 localStorage 累计——只统计当前浏览器
渲染过的评论,换设备/清缓存就失真,别人看到的也不准。
现在后端按全站真实评论数算好,随评论 API 下发
badge_name/badge_color,官方前端原生渲染,跨设备一致。
本文件移除本地注入逻辑,友链/友圈徽章保留。
This commit is contained in:
QunLIn committed 2026-10-03 01:11:43 +08:00
1 parent 87cfa01b3d
commit be5abce16a
1 file changed
+5 -53
+5 -53
View File
@@ -624,34 +624,10 @@ var getPageKey = function() {
var processBadges = function() { var processBadges = function() {
if (!linkMap && !feedMap) return; if (!linkMap && !feedMap) return;
var data = loadUserCounts(); // 评论等级(九品官阶)已迁到评论后端:artalk-cf 按全站真实评论数
var pageKey = getPageKey(); // 计算并直接下发 badge_name/badge_color(官方 badge 槽渲染)。
var pages = data._pages || {}; // 原 localStorage 累计方案只统计当前浏览器见过的评论,跨设备/清缓存
var isNewPage = !pages[pageKey]; // 就失真,已废弃(RANK_TABLE 保留仅作历史参考,不再注入)。
// Count per-user comments on current page
var pageCounts = {};
document.querySelectorAll('.atk-comment-wrap').forEach(function(wrap) {
var nickEl = wrap.querySelector('.atk-nick');
if (!nickEl) return;
var name = (nickEl.textContent || '').trim();
if (name) pageCounts[name] = (pageCounts[name] || 0) + 1;
});
// Accumulate: only add counts if this page hasn't been processed before
var userCounts = {};
for (var name in pageCounts) {
var prev = data[name] || 0;
if (isNewPage) {
data[name] = prev + pageCounts[name];
}
userCounts[name] = data[name];
}
if (isNewPage) {
pages[pageKey] = true;
data._pages = pages;
}
saveUserCounts(data);
document.querySelectorAll('.atk-comment-wrap').forEach(function(wrap) { document.querySelectorAll('.atk-comment-wrap').forEach(function(wrap) {
var nickEl = wrap.querySelector('.atk-nick'); var nickEl = wrap.querySelector('.atk-nick');
@@ -700,31 +676,7 @@ var processBadges = function() {
} }
} }
// 3. Comment rank badge — inline next to name // 3. 评论等级徽章已由后端下发(badge_name/badge_color 官方槽渲染),不再本地注入
if (!nickEl.querySelector('.atk-rank-badge')) {
var count = userCounts[nickText] || 0;
var rank = getRank(count);
var rb = document.createElement('span');
rb.className = 'atk-rank-badge';
rb.textContent = rank.short;
rb.title = rank.title + ' (' + count + '条评论)';
rb.style.color = rank.color;
rb.style.backgroundColor = rank.bg;
rb.style.borderColor = rank.bg.replace(/[\d.]+\)$/, function(m) {
var v = parseFloat(m) + 0.06;
return Math.min(v, 0.26).toFixed(2) + ')';
});
var idx = RANK_TABLE.indexOf(rank);
if (idx > 0) {
var next = RANK_TABLE[idx - 1];
var diff = next.min - count;
if (diff > 0) {
var progress = Math.round((count - rank.min) / (next.min - rank.min) * 100);
rb.title += ' — 距' + next.short + '还差' + diff + '条 (' + progress + '%)';
}
}
nickEl.appendChild(rb);
}
}); });
}; };