fix(ui): float VIP duplicates, hover cards, UC menu and light-theme contrast
This commit is contained in:
@@ -55,28 +55,51 @@ trait VipServiceModal {
|
||||
$name = (string) ($levels[$level]['name'] ?? ('VIP' . $level));
|
||||
$desc = (string) ($levels[$level]['desc'] ?? '');
|
||||
$equity = (string) ($levels[$level]['equity'] ?? '');
|
||||
$cls = $user_id > 0 ? 'pay-vip' : 'signin-loader';
|
||||
$html = '<div class="vip-card pointer level-' . $level . ' vip-theme' . $level . ' ' . esc_attr($cls) . '" vip-level="' . $level . '">';
|
||||
$html .= '<div class="abs-center vip-baicon"><i class="fas fa-gem" aria-hidden="true"></i></div>';
|
||||
$cls = $user_id > 0 ? ' pay-vip' : ' signin-loader';
|
||||
|
||||
$equity_html = '';
|
||||
$equity_raw = trim(wp_kses_post($equity));
|
||||
if ($equity_raw !== '') {
|
||||
if (preg_match('/<li[\s>]/i', $equity_raw)) {
|
||||
$inner = preg_replace('#</?(ul|ol)[^>]*>#i', '', $equity_raw) ?? $equity_raw;
|
||||
$equity_html = '<ul class="mb10 relative v-equity">' . $inner . '</ul>';
|
||||
} else {
|
||||
$parts = preg_split('/[\r\n]+|[;;,,||]+/u', wp_strip_all_tags($equity_raw)) ?: [];
|
||||
$parts = array_values(array_filter(array_map('trim', $parts)));
|
||||
if (count($parts) === 1 && mb_strlen($parts[0]) > 16) {
|
||||
$chunks = preg_split('/(?=(?:免费|会员|更高|专属|付费|下载|身份|权益|折扣|无限))/u', $parts[0], -1, PREG_SPLIT_NO_EMPTY) ?: [];
|
||||
$chunks = array_values(array_filter(array_map('trim', $chunks)));
|
||||
if (count($chunks) > 1) {
|
||||
$parts = $chunks;
|
||||
}
|
||||
}
|
||||
if ($parts) {
|
||||
$equity_html = '<ul class="mb10 relative v-equity">';
|
||||
foreach ($parts as $p) {
|
||||
$equity_html .= '<li>' . esc_html($p) . '</li>';
|
||||
}
|
||||
$equity_html .= '</ul>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$icon = '<i class="fas fa-gem" aria-hidden="true"></i>';
|
||||
$html = '<div class="vip-card pointer level-' . $level . ' vip-theme' . $level . $cls . '" vip-level="' . $level . '">';
|
||||
$html .= '<div class="abs-center vip-baicon">' . $icon . '</div>';
|
||||
$html .= '<div class="vip-img abs-right">' . $icon . '</div>';
|
||||
$html .= '<div class="relative">';
|
||||
$html .= '<div class="vip-name font-bold">' . esc_html($name) . '</div>';
|
||||
$html .= '<div class="vip-name mb10"><span class="mr6">' . $icon . '</span>' . esc_html($name) . '</div>';
|
||||
if ($desc !== '') {
|
||||
$html .= '<div class="muted-2-color em09 mb6">' . esc_html($desc) . '</div>';
|
||||
}
|
||||
if ($equity !== '') {
|
||||
$html .= '<ul class="mb10 relative em09 v-equity">' . $equity . '</ul>';
|
||||
$html .= '<div class="mb6 font-bold em09">' . esc_html($desc) . '</div>';
|
||||
}
|
||||
$html .= $equity_html;
|
||||
$html .= '<a class="but jb-blue radius payvip-button" href="javascript:;">'
|
||||
. esc_html(sprintf(__('开通%s', 'aksrt'), $name))
|
||||
. '</a>';
|
||||
. '<span class="ml6"><i class="fas fa-chevron-circle-right" aria-hidden="true"></i></span></a>';
|
||||
$html .= '</div></div>';
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string,mixed> $catalog
|
||||
* @param array<string,mixed> $vip
|
||||
*/
|
||||
private function render_modal_pay(int $user_id, array $catalog, array $vip, int $prefer_level): string {
|
||||
$user = get_userdata($user_id);
|
||||
$name = $user ? $user->display_name : '';
|
||||
|
||||
Reference in New Issue
Block a user