fix(ui): nav CTA icon alignment and always show UC VIP menu
This commit is contained in:
@@ -65,7 +65,8 @@ if (!function_exists('aksrt_get_new_add_actions')) :
|
||||
'type' => 'post',
|
||||
'url' => $url,
|
||||
'label' => __('写文章', 'aksrt'),
|
||||
'icon' => 'fa fa-file-text-o',
|
||||
// FA5 free solid names (avoid FA4 aliases like file-text-o).
|
||||
'icon' => 'fas fa-file-alt',
|
||||
];
|
||||
} elseif ($type === 'topic') {
|
||||
$url = function_exists('aksrt_get_forum_compose_url') ? aksrt_get_forum_compose_url() : '';
|
||||
@@ -76,25 +77,21 @@ if (!function_exists('aksrt_get_new_add_actions')) :
|
||||
'type' => 'topic',
|
||||
'url' => $url,
|
||||
'label' => __('发帖', 'aksrt'),
|
||||
'icon' => 'fa fa-comments-o',
|
||||
'icon' => 'fas fa-comments',
|
||||
];
|
||||
} elseif ($type === 'product') {
|
||||
// Prefer front product edit page when registered.
|
||||
$url = '';
|
||||
if (function_exists('aksrt_get_product_edit_url')) {
|
||||
$url = (string) aksrt_get_product_edit_url();
|
||||
}
|
||||
if ($url === '') {
|
||||
// Fallback: product-edit page template lookup is optional.
|
||||
$url = home_url('/?page_id=0');
|
||||
// Use admin product CPT if available.
|
||||
$url = admin_url('post-new.php?post_type=aksrt_product');
|
||||
}
|
||||
$out[] = [
|
||||
'type' => 'product',
|
||||
'url' => $url,
|
||||
'label' => __('发布商品', 'aksrt'),
|
||||
'icon' => 'fa fa-shopping-bag',
|
||||
'icon' => 'fas fa-shopping-bag',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -102,6 +99,49 @@ if (!function_exists('aksrt_get_new_add_actions')) :
|
||||
}
|
||||
endif;
|
||||
|
||||
if (!function_exists('aksrt_normalize_header_cta_label')) :
|
||||
/**
|
||||
* Normalize CTA label HTML: map FA4 classes and keep a single leading icon.
|
||||
*/
|
||||
function aksrt_normalize_header_cta_label(string $label, string $fallback_icon = 'fas fa-pen'): string {
|
||||
$label = trim($label);
|
||||
if ($label === '') {
|
||||
return '<i class="' . esc_attr($fallback_icon) . '" aria-hidden="true"></i> ' . esc_html__('发布', 'aksrt');
|
||||
}
|
||||
|
||||
// Common FA4 → FA5 renames used in admin defaults.
|
||||
$replacements = [
|
||||
'fa-file-text-o' => 'fa-file-alt',
|
||||
'fa-file-text' => 'fa-file-alt',
|
||||
'fa-pencil-square-o' => 'fa-edit',
|
||||
'fa-pencil' => 'fa-pen',
|
||||
'fa-comments-o' => 'fa-comments',
|
||||
'fa-clock-o' => 'fa-clock',
|
||||
'fa-calendar-check-o'=> 'fa-calendar-check',
|
||||
'fa-diamond' => 'fa-gem',
|
||||
];
|
||||
$label = strtr($label, $replacements);
|
||||
|
||||
// Ensure icon uses fas (FA5 solid) when only bare "fa " is present.
|
||||
$label = preg_replace('/\bclass=(["\'])fa\s+/', 'class=$1fas ', $label) ?? $label;
|
||||
$label = preg_replace('/<i\s+class=(["\'])(?!fas\b|far\b|fab\b)/', '<i class=$1fas ', $label) ?? $label;
|
||||
|
||||
// If label is plain text without icon markup, prefix default icon.
|
||||
if (stripos($label, '<i') === false) {
|
||||
$label = '<i class="' . esc_attr($fallback_icon) . '" aria-hidden="true"></i> <span class="navbar-cta-text">' . esc_html(wp_strip_all_tags($label)) . '</span>';
|
||||
} else {
|
||||
// Wrap remaining text nodes for flex alignment without raw text siblings.
|
||||
$label = preg_replace(
|
||||
'/(<\/i>)\s*([^<].*)$/u',
|
||||
'$1 <span class="navbar-cta-text">$2</span>',
|
||||
$label
|
||||
) ?? $label;
|
||||
}
|
||||
|
||||
return $label;
|
||||
}
|
||||
endif;
|
||||
|
||||
if (!function_exists('aksrt_render_new_add_btns')) :
|
||||
/**
|
||||
* Multi-type publish button (zibll newadd-btns).
|
||||
@@ -116,22 +156,26 @@ if (!function_exists('aksrt_render_new_add_btns')) :
|
||||
if ($label === '') {
|
||||
$label = __('发布', 'aksrt');
|
||||
}
|
||||
$label_html = aksrt_normalize_header_cta_label((string) $label, 'fas fa-pen');
|
||||
$class = trim('newadd-btns ' . $class);
|
||||
|
||||
if (count($actions) === 1) {
|
||||
$a = $actions[0];
|
||||
return '<a rel="nofollow" class="' . esc_attr(trim($class . ' but')) . '" href="' . esc_url($a['url']) . '">'
|
||||
. '<i class="' . esc_attr($a['icon']) . '" aria-hidden="true"></i> '
|
||||
. wp_kses_post($label)
|
||||
// Prefer configured label; icon already embedded after normalize.
|
||||
return '<a rel="nofollow" class="' . esc_attr(trim($class . ' but navbar-cta')) . '" href="' . esc_url($a['url']) . '">'
|
||||
. $label_html
|
||||
. '</a>';
|
||||
}
|
||||
|
||||
$html = '<span class="' . esc_attr($class) . ' hover-show">';
|
||||
$html .= '<a href="javascript:;" class="but newadd-btns__toggle" rel="nofollow">' . wp_kses_post($label) . ' <i class="fa fa-caret-down" aria-hidden="true"></i></a>';
|
||||
$html = '<span class="' . esc_attr($class . ' hover-show') . '">';
|
||||
$html .= '<a href="javascript:;" class="but newadd-btns__toggle navbar-cta" rel="nofollow">'
|
||||
. $label_html
|
||||
. ' <i class="fas fa-caret-down" aria-hidden="true"></i></a>';
|
||||
$html .= '<div class="hover-show-con dropdown-menu drop-newadd">';
|
||||
foreach ($actions as $a) {
|
||||
$html .= '<a rel="nofollow" class="newadd-btns__item" href="' . esc_url($a['url']) . '">';
|
||||
$html .= '<i class="' . esc_attr($a['icon']) . '" aria-hidden="true"></i> ' . esc_html($a['label']);
|
||||
$html .= '<i class="' . esc_attr($a['icon']) . '" aria-hidden="true"></i> '
|
||||
. '<span>' . esc_html($a['label']) . '</span>';
|
||||
$html .= '</a>';
|
||||
}
|
||||
$html .= '</div></span>';
|
||||
@@ -152,12 +196,12 @@ if (!function_exists('aksrt_render_header_menu_buttons')) :
|
||||
$class .= ' ' . $cfg['class'];
|
||||
}
|
||||
$radius = (int) ($cfg['radius'] ?? 20);
|
||||
$style = $radius > 0 ? ' style="border-radius:' . $radius . 'px"' : '';
|
||||
// Radius applied via CSS class variable to avoid style attribute overriding flex.
|
||||
$radius_attr = $radius > 0 ? ' data-radius="' . esc_attr((string) $radius) . '" style="--navbar-cta-radius:' . $radius . 'px"' : '';
|
||||
$label = (string) ($cfg['text'] ?? __('发布', 'aksrt'));
|
||||
// Strip outer <i> if present in settings HTML text — keep simple.
|
||||
$btn = aksrt_render_new_add_btns($cfg['types'] ?? ['post'], $class, $label);
|
||||
if ($btn !== '') {
|
||||
$html .= '<div class="navbar-form navbar-right navbar-but"' . $style . '>' . $btn . '</div>';
|
||||
$html .= '<div class="navbar-form navbar-right navbar-but"' . $radius_attr . '>' . $btn . '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,10 +230,14 @@ if (!function_exists('aksrt_render_header_menu_buttons')) :
|
||||
}
|
||||
}
|
||||
$html .= '<div class="navbar-form navbar-right navbar-vip hover-show inline-block">';
|
||||
$html .= '<a class="but jb-red radius payvip-icon ml10 ' . esc_attr($cls) . '" href="javascript:;"' . ($user_id > 0 ? ' vip-level="1"' : '') . '>';
|
||||
$html .= '<i class="fa fa-diamond em12 mr3" aria-hidden="true"></i>' . esc_html__('开通会员', 'aksrt');
|
||||
// FA5: diamond → gem. Keep label in span for flex alignment.
|
||||
$html .= '<a class="but jb-red radius payvip-icon navbar-cta ml10 ' . esc_attr($cls) . '" href="javascript:;"'
|
||||
. ($user_id > 0 ? ' vip-level="1"' : '') . '>';
|
||||
$html .= '<i class="fas fa-gem" aria-hidden="true"></i>'
|
||||
. '<span class="navbar-cta-text">' . esc_html__('开通会员', 'aksrt') . '</span>';
|
||||
$html .= '</a>' . $hover . '</div>';
|
||||
} }
|
||||
}
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
@@ -54,14 +54,14 @@ if (!function_exists('aksrt_header_user_checkin_btn')) :
|
||||
|
||||
if ($signed) {
|
||||
return '<button type="button" class="but block c-yellow aksrt-header-checkin is-done" disabled>'
|
||||
. '<i class="fa fa-calendar-check-o" aria-hidden="true"></i> '
|
||||
. '<i class="fas fa-calendar-check" aria-hidden="true"></i> '
|
||||
. esc_html__('今日已签到', 'aksrt')
|
||||
. '</button>'
|
||||
. $details;
|
||||
}
|
||||
|
||||
return '<button type="button" class="but block c-yellow aksrt-header-checkin" data-aksrt-checkin="1">'
|
||||
. '<i class="fa fa-calendar-check-o" aria-hidden="true"></i> '
|
||||
. '<i class="fas fa-calendar-check" aria-hidden="true"></i> '
|
||||
. esc_html__('签到领取今日奖励', 'aksrt')
|
||||
. '</button>'
|
||||
. $details;
|
||||
@@ -142,10 +142,10 @@ if (!function_exists('aksrt_header_payvip_bar')) :
|
||||
}
|
||||
$html = '<div class="mt10 em09 aksrt-header-payvip">';
|
||||
$html .= '<span class="radius4 payvip-icon btn-block text-center vipbg-v2 level-' . (int) $level . '">';
|
||||
$html .= '<i class="fa fa-diamond em12 mr6" aria-hidden="true"></i>';
|
||||
$html .= '<i class="fas fa-gem" aria-hidden="true"></i>';
|
||||
$html .= '<span>' . esc_html($name) . '</span>';
|
||||
if ($exp_label !== '') {
|
||||
$html .= '<span class="ml10 badg jb-yellow vip-expdate-tag"><i class="fa fa-clock-o mr3" aria-hidden="true"></i>'
|
||||
$html .= '<span class="ml10 badg jb-yellow vip-expdate-tag"><i class="fas fa-clock" aria-hidden="true"></i>'
|
||||
. esc_html($exp_label) . '</span>';
|
||||
}
|
||||
$html .= '</span></div>';
|
||||
@@ -153,8 +153,8 @@ if (!function_exists('aksrt_header_payvip_bar')) :
|
||||
}
|
||||
|
||||
return '<div class="mt10 em09 aksrt-header-payvip">'
|
||||
. '<a class="pay-vip but radius4 payvip-icon btn-block" href="javascript:;" vip-level="1">'
|
||||
. '<i class="fa fa-diamond mr6" aria-hidden="true"></i>'
|
||||
. '<a class="pay-vip but radius4 payvip-icon btn-block navbar-cta" href="javascript:;" vip-level="1">'
|
||||
. '<i class="fas fa-gem" aria-hidden="true"></i>'
|
||||
. esc_html__('开通会员 尊享会员权益', 'aksrt')
|
||||
. '</a></div>';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user