diff --git a/assets/css/routes/user-center/credits.css b/assets/css/routes/user-center/credits.css index 07ddc9f7..216a39ce 100644 --- a/assets/css/routes/user-center/credits.css +++ b/assets/css/routes/user-center/credits.css @@ -965,4 +965,24 @@ body.uc-modal-open { cursor: pointer; padding: 0; } +.uc-points-tasks__meta { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 2px; +} +.uc-points-tasks__action { + display: inline-flex; + align-items: center; + text-decoration: none; + color: var(--muted-color, #8b9198); + background: none; + border: 0; + cursor: pointer; + padding: 0; + line-height: 1.4; +} +.uc-points-tasks__action:hover { + color: var(--focus-color, #f04494); +} .focus-color { color: var(--focus-color, #f59e0b); } diff --git a/assets/js/credits.js b/assets/js/credits.js index efbe0433..dd9afcec 100644 --- a/assets/js/credits.js +++ b/assets/js/credits.js @@ -180,6 +180,28 @@ refresh(); } + // Task-list "去签到" → scroll + click the real asset-card sign-in button. + function initSigninGoto() { + document.querySelectorAll('[data-aksrt-signin-goto]').forEach(function (el) { + el.addEventListener('click', function (e) { + e.preventDefault(); + var root = document.querySelector('[data-aksrt-signin]'); + var btn = root ? root.querySelector('[data-signin-btn]') : null; + if (!btn) return; + try { + if (root && typeof root.scrollIntoView === 'function') { + root.scrollIntoView({ behavior: 'smooth', block: 'center' }); + } + } catch (_) {} + if (!btn.disabled) { + btn.click(); + } else { + btn.focus(); + } + }); + }); + } + // ===== 邀请 ===== function initInvite() { var root = document.querySelector('[data-aksrt-invite]'); @@ -944,6 +966,7 @@ function bootAssets() { initSignin(); + initSigninGoto(); initInvite(); initVipShop(); initVipPointsExchange(); diff --git a/inc/helpers/user-center-renderers/credits-points-tasks.php b/inc/helpers/user-center-renderers/credits-points-tasks.php index e76d9de5..63789319 100644 --- a/inc/helpers/user-center-renderers/credits-points-tasks.php +++ b/inc/helpers/user-center-renderers/credits-points-tasks.php @@ -11,6 +11,94 @@ if (!class_exists('AKSRT_Points_Free') || !AKSRT_Points_Free::enabled()) { return; } +/** + * Resolve a "go complete" action for a free-points task row. + * + * @return array{type:string,label:string,href?:string} + */ +$aksrt_points_task_action = static function (string $key): array { + $home = home_url('/'); + $submit = ''; + if (function_exists('aksrt_get_page_url_by_template')) { + $submit = (string) aksrt_get_page_url_by_template('templates/pages/page-submit.php'); + } + + $forum_on = false; + $forum_home = ''; + $forum_compose = ''; + if (class_exists('AKSRT_Settings') && method_exists('AKSRT_Settings', 'get_forum_settings')) { + $f = AKSRT_Settings::get_forum_settings(); + $forum_on = !empty($f['enabled']); + } + if ($forum_on) { + if (function_exists('aksrt_get_forum_home_url')) { + $forum_home = (string) aksrt_get_forum_home_url(); + } + if (function_exists('aksrt_get_forum_compose_url')) { + $forum_compose = (string) aksrt_get_forum_compose_url(); + } + } + + switch ($key) { + case 'sign_in': + return [ + 'type' => 'signin', + 'label' => __('去签到', 'aksrt'), + ]; + case 'post_new': + return [ + 'type' => 'link', + 'label' => __('去完成', 'aksrt'), + 'href' => $submit !== '' ? $submit : $home, + ]; + case 'comment_new': + return [ + 'type' => 'link', + 'label' => __('去完成', 'aksrt'), + 'href' => $home, + ]; + case 'login': + case 'post_like': + case 'post_favorite': + case 'followed': + case 'comment_like': + return [ + 'type' => 'link', + 'label' => __('去看看', 'aksrt'), + 'href' => $home, + ]; + case 'bbs_posts_new': + case 'bbs_reply': + if (!$forum_on) { + return ['type' => 'none', 'label' => '']; + } + $href = $forum_compose !== '' ? $forum_compose : $forum_home; + if ($href === '') { + return ['type' => 'none', 'label' => '']; + } + return [ + 'type' => 'link', + 'label' => __('去完成', 'aksrt'), + 'href' => $href, + ]; + case 'bbs_essence': + case 'bbs_adopt': + case 'bbs_posts_hot': + case 'bbs_comment_hot': + case 'bbs_score_extra': + if (!$forum_on || $forum_home === '') { + return ['type' => 'none', 'label' => '']; + } + return [ + 'type' => 'link', + 'label' => __('去看看', 'aksrt'), + 'href' => $forum_home, + ]; + default: + return ['type' => 'none', 'label' => '']; + } +}; + $user_id = (int) ($user_id ?? get_current_user_id()); $today = AKSRT_Points_Free::today_total($user_id); $day_max = (int) AKSRT_Points_Free::settings()['day_max']; @@ -76,15 +164,30 @@ $pane = isset($points_tasks_pane) ? sanitize_key((string) $points_tasks_pane) -
+ +
- - + - +
+
+ + +
+ + + + + + + +