fix(user): rebuild badge modal ajax flow
This commit is contained in:
1 parent
029df27b1d
commit
9c827ff493
14 files changed
+243
-591
No files matched your search
@@ -89,11 +89,15 @@ if (!function_exists('aksrt_get_modal_link')) {
|
||||
$data_class = (string) ($args['data_class'] ?? 'modal-mini full-sm');
|
||||
$height = isset($args['height']) ? (int) $args['height'] : 0;
|
||||
$mobile = !isset($args['mobile_bottom']) || !empty($args['mobile_bottom']);
|
||||
$cache = !isset($args['cache']) || !empty($args['cache']);
|
||||
|
||||
$attrs = ' class="' . esc_attr(trim($class . ' aksrt-modal-link')) . '"';
|
||||
$attrs .= ' data-aksrt-modal="remote"';
|
||||
$attrs .= ' data-aksrt-modal-url="' . esc_url($url) . '"';
|
||||
$attrs .= ' data-aksrt-modal-class="' . esc_attr($data_class) . '"';
|
||||
if (!$cache) {
|
||||
$attrs .= ' data-aksrt-modal-cache="false"';
|
||||
}
|
||||
if ($height > 0) {
|
||||
$attrs .= ' data-aksrt-modal-height="' . esc_attr((string) $height) . '"';
|
||||
}
|
||||
|
||||
@@ -269,6 +269,14 @@ if (!function_exists('aksrt_render_user_medal_entry')) {
|
||||
if (empty($data['enabled']) || ($context === 'user-home' && empty($data['public_display']))) {
|
||||
return '';
|
||||
}
|
||||
$count = max(0, (int) ($data['count'] ?? 0));
|
||||
$is_manager = \AKSRT\User\Badges::can_manually_set(get_current_user_id());
|
||||
if ($context === 'user-home' && $count === 0 && !$is_manager) {
|
||||
return '';
|
||||
}
|
||||
$action = $is_manager && $context === 'user-home' && $count === 0 ? 'aksrt_user_medal_manually_add_modal' : 'aksrt_user_medal_info_modal';
|
||||
$query = ['action' => $action, 'id' => $user_id];
|
||||
$url = add_query_arg($query, admin_url('admin-ajax.php'));
|
||||
|
||||
$limit = max(1, min(8, (int) ($medal['limit'] ?? 3)));
|
||||
$icons = [];
|
||||
@@ -289,14 +297,13 @@ if (!function_exists('aksrt_render_user_medal_entry')) {
|
||||
}
|
||||
}
|
||||
|
||||
$count = max(0, (int) ($data['count'] ?? 0));
|
||||
$label = $count > 0 ? sprintf(_n('%d枚徽章', '%d枚徽章', $count, 'aksrt'), $count) : __('获取徽章', 'aksrt');
|
||||
$label = $count > 0 ? sprintf(_n('%d枚徽章', '%d枚徽章', $count, 'aksrt'), $count) : ($is_manager && $context === 'user-home' ? __('授予徽章', 'aksrt') : __('获取徽章', 'aksrt'));
|
||||
$icons_html = implode('', $icons);
|
||||
if ($icons_html === '') {
|
||||
$icons_html = '<span class="aksrt-medal-entry__fallback" aria-hidden="true"><i class="fa fas fa-trophy"></i></span>';
|
||||
}
|
||||
$classes = 'aksrt-medal-entry aksrt-medal-entry--' . sanitize_html_class($context);
|
||||
return '<button type="button" class="' . esc_attr($classes) . '" data-aksrt-badges-open data-aksrt-badges-user-id="' . (int) $user_id . '" data-aksrt-badges-can-wear="' . ($can_wear ? '1' : '0') . '" aria-label="' . esc_attr($label) . '"><span class="aksrt-medal-entry__icons">' . $icons_html . '</span><span class="aksrt-medal-entry__count">' . esc_html($label) . '</span><i class="fa fas fa-angle-right aksrt-medal-entry__arrow" aria-hidden="true"></i></button>';
|
||||
return '<a class="' . esc_attr($classes . ' aksrt-modal-link') . '" data-aksrt-modal="remote" data-aksrt-modal-url="' . esc_url($url) . '" data-aksrt-modal-class="full-sm" data-aksrt-modal-mobile-bottom="true" data-aksrt-modal-cache="false" href="' . esc_url($url) . '" aria-label="' . esc_attr($label) . '"><span class="aksrt-medal-entry__icons">' . $icons_html . '</span><span class="aksrt-medal-entry__count">' . esc_html($label) . '</span><i class="fa fas fa-angle-right aksrt-medal-entry__arrow" aria-hidden="true"></i></a>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user