广场祈福树下的投稿奖励条改为「谁的笔记上了广场」轮播(真实投稿优先,精选笔记补位)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-07 02:11:21 +00:00
parent c0c3522dd3
commit 346d548fed

View File

@@ -484,6 +484,19 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
/* 11-05 整合:投稿奖励一行(原在热门话题列表头)+ 选中标签后的热门话题 */ /* 11-05 整合:投稿奖励一行(原在热门话题列表头)+ 选中标签后的热门话题 */
.rww{margin:14px 12px 0} .rww{margin:14px 12px 0}
.rww .rwl{margin:0} .rww .rwl{margin:0}
/* 11-07 用户:祈福树下面「投稿被选中得 ¥30…」一条 → 改成轮播「哪些妈妈的笔记上了广场」:真实投稿(审核通过)排前,
不够时用广场里点赞高的笔记补;只说「上了广场 / 入选精选」,不写某人领了多少钱。右边「我也投稿」= 原来的规则弹层 */
.rwc{display:flex;align-items:center;gap:8px;height:40px;padding:0 6px 0 10px;border-radius:12px;background:linear-gradient(100deg,#FFF1E8,#FFE6E6)}
.rwc>.ic{flex:none;width:16px;height:16px;color:#F2553A}
.rwv{position:relative;flex:1;min-width:0;height:40px;overflow:hidden}
.rwi{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:6px;height:40px;border:0;background:none;padding:0;font:inherit;text-align:left;color:#8A4B36;font-size:12px;
transition:transform .4s ease,opacity .4s ease}
.rwi.in{transform:translateY(100%);opacity:0}.rwi.out{transform:translateY(-100%);opacity:0}
.rwi img{flex:none;width:20px;height:20px;border-radius:50%;object-fit:cover;background:#FFE3D3}
.rwi span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rwi span b{font-weight:800;color:#5A3226}
.rwi span em{font-style:normal;font-weight:800;color:#F2394A}
.rwb{flex:none;height:26px;padding:0 10px;border:0;border-radius:99px;background:linear-gradient(135deg,#FF8A65,#F2553A);color:#fff;font:inherit;font-size:11.5px;font-weight:800}
.gtp{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin:2px 14px 4px;padding:10px 12px;border-radius:14px;background:#fff;box-shadow:0 6px 16px -14px rgba(120,60,40,.35)} .gtp{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin:2px 14px 4px;padding:10px 12px;border-radius:14px;background:#fff;box-shadow:0 6px 16px -14px rgba(120,60,40,.35)}
.gtp[hidden]{display:none} .gtp[hidden]{display:none}
.gtp-h{font-size:11.5px;font-weight:800;color:#F2553A} .gtp-h{font-size:11.5px;font-weight:800;color:#F2553A}
@@ -1652,6 +1665,33 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff}
bx.hidden = !tl.length; bx.hidden = !tl.length;
bx.innerHTML = '<span class="gtp-h">热门话题</span>' + tl.map(function (x) { return '<button type="button" data-t="' + x.id + '">#' + esc(x.name) + '#</button>'; }).join(''); bx.innerHTML = '<span class="gtp-h">热门话题</span>' + tl.map(function (x) { return '<button type="button" data-t="' + x.id + '">#' + esc(x.name) + '#</button>'; }).join('');
} }
/* ---------- 「谁的笔记上了广场」轮播(11-07) ---------- */
var rwI = 0, rwT = null;
function rwList() {
var real = NOTES.filter(function (n) { return n.real; }).slice(0, 10);
var pick = NOTES.filter(function (n) { return !n.real && n.photo; }).sort(function (a, b) { return b.likes - a.likes; });
var seen = {}, mock = [];
pick.forEach(function (n) { if (mock.length < 12 && !seen[n.author]) { seen[n.author] = 1; mock.push(n); } });
return real.concat(mock);
}
function rwItem(k) {
var L = rwList(); if (!L.length) return '';
var n = L[k % L.length], tt = n.title.length > 14 ? n.title.slice(0, 13) + '…' : n.title;
return '<button type="button" class="rwi" data-id="' + esc(n.id) + '"><img src="' + esc(avOf(n)) + '" alt="" loading="lazy"><span><b>' + esc(n.author) + '</b> 的《' + esc(tt) + '》' +
(n.real ? '<em>投稿上了广场</em>' : '<em>入选精选</em>') + '</span></button>';
}
function rwRun() {
clearInterval(rwT); rwI = 0;
if (rwList().length < 2) return;
rwT = setInterval(function () {
var box = document.getElementById('rwv'); if (!box) { clearInterval(rwT); return; }
if (document.hidden || openId) return;
var old = box.firstElementChild; rwI++;
box.insertAdjacentHTML('beforeend', rwItem(rwI));
var nw = box.lastElementChild; nw.classList.add('in'); void nw.offsetWidth;
nw.classList.remove('in'); if (old) { old.classList.add('out'); setTimeout(function () { if (old.parentNode) old.remove(); }, 420); }
}, 3200);
}
function renderHead() { function renderHead() {
var t = TBY[cur], el = $('#head'), fh = $('#fh'); var t = TBY[cur], el = $('#head'), fh = $('#fh');
var fl0 = document.getElementById('luckFl'); if (fl0) fl0.classList.remove('on'); var fl0 = document.getElementById('luckFl'); if (fl0) fl0.classList.remove('on');
@@ -1661,7 +1701,8 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff}
标签作为唯一入口(末尾加「全部话题 ›」);选中标签时标签下露出这一类的 2~3 个热门话题(用户同意);投稿奖励一行挪到「大家在聊」上面。 标签作为唯一入口(末尾加「全部话题 ›」);选中标签时标签下露出这一类的 2~3 个热门话题(用户同意);投稿奖励一行挪到「大家在聊」上面。
话题本身不变:投稿选话题、帖子卡上的 #话题#、话题详情页照旧。分类视图(catF)仍是原来的热门话题列表。 */ 话题本身不变:投稿选话题、帖子卡上的 #话题#、话题详情页照旧。分类视图(catF)仍是原来的热门话题列表。 */
el.innerHTML = qifuHTML() + el.innerHTML = qifuHTML() +
'<div class="rww"><button type="button" class="rwl" data-rule="1"><svg class="ic"><use href="#i-gift"/></svg><span>投稿被选中得 ' + REWARD + '</span><b>怎么参与 ›</b></button></div>'; '<div class="rww"><div class="rwc"><svg class="ic"><use href="#i-gift"/></svg><div class="rwv" id="rwv">' + rwItem(0) + '</div><button type="button" class="rwb" data-rule="1">我也投稿</button></div></div>';
rwRun();
fh.className = 'shtg'; fh.className = 'shtg';
fh.innerHTML = '<div class="sh"><h2>大家在聊</h2><small>孕妈们的分享</small></div>' + fh.innerHTML = '<div class="sh"><h2>大家在聊</h2><small>孕妈们的分享</small></div>' +
'<div class="gtg"><button type="button" data-tag=""' + (tagF ? '' : ' class="on"') + '>全部</button>' + '<div class="gtg"><button type="button" data-tag=""' + (tagF ? '' : ' class="on"') + '>全部</button>' +
@@ -1903,6 +1944,7 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff}
var dc = e.target.closest('#csvGo'); if (dc) { csdRoll(dc); return; } var dc = e.target.closest('#csvGo'); if (dc) { csdRoll(dc); return; }
var j = e.target.closest('[data-join]'); if (j) { haptic(); openRule(j.dataset.join); return; } var j = e.target.closest('[data-join]'); if (j) { haptic(); openRule(j.dataset.join); return; }
if (e.target.closest('[data-rule]')) { openRule(''); return; } if (e.target.closest('[data-rule]')) { openRule(''); return; }
var rw = e.target.closest('.rwi[data-id]'); if (rw) { haptic(); openNote(rw.dataset.id, true); return; }
if (e.target.closest('[data-all]')) { openTopics(); return; } if (e.target.closest('[data-all]')) { openTopics(); return; }
var b = e.target.closest('[data-t]'); if (b) { haptic(); selectTopic(b.dataset.t); } var b = e.target.closest('[data-t]'); if (b) { haptic(); selectTopic(b.dataset.t); }
}); });