diff --git a/assets/css/frontend/widget-batch5.css b/assets/css/frontend/widget-batch5.css index 4e20b93c..530b4817 100644 --- a/assets/css/frontend/widget-batch5.css +++ b/assets/css/frontend/widget-batch5.css @@ -2426,3 +2426,8 @@ a.main-color > .icon-cover-card:hover, .aksrt-ftab__panel[hidden] { display: none !important; } .aksrt-ftab__panel.is-ajax-loading { opacity: .65; pointer-events: none; } .aksrt-reviews__avatar.aksrt-lazy { object-fit: cover; border-radius: 50%; } + + +/* batch31-33 residual */ +.aksrt-fi__img.aksrt-lazy { width: 100%; height: 100%; object-fit: cover; display: block; position: absolute; inset: 0; } +.aksrt-fi__video { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; } diff --git a/src/AKSRT/Core/WidgetAjax.php b/src/AKSRT/Core/WidgetAjax.php index 8e60cbbf..d1daa471 100644 --- a/src/AKSRT/Core/WidgetAjax.php +++ b/src/AKSRT/Core/WidgetAjax.php @@ -129,15 +129,31 @@ class WidgetAjax { if (function_exists('aksrt_home_widget_render_post_grid')) { aksrt_home_widget_render_post_grid($query, $layout, $columns, $context); } elseif ($query->have_posts()) { - echo ''; + } else { + echo function_exists('aksrt_get_ajax_null') + ? aksrt_get_ajax_null(__('暂无文章', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('暂无文章', 'aksrt') . '

'; } wp_reset_postdata(); - return new \WP_REST_Response(['success' => true, 'html' => (string) ob_get_clean()], 200); + $html = (string) ob_get_clean(); + if ($html === '') { + $html = function_exists('aksrt_get_ajax_null') + ? aksrt_get_ajax_null(__('暂无文章', 'aksrt')) + : '

' . esc_html__('暂无文章', 'aksrt') . '

'; + } + return new \WP_REST_Response(['success' => true, 'html' => $html], 200); } public function rest_hot_posts(\WP_REST_Request $request) { diff --git a/src/AKSRT/Widgets/ButtonsWidget.php b/src/AKSRT/Widgets/ButtonsWidget.php index b28a6bb3..98ddbfc7 100644 --- a/src/AKSRT/Widgets/ButtonsWidget.php +++ b/src/AKSRT/Widgets/ButtonsWidget.php @@ -28,6 +28,16 @@ class ButtonsWidget extends \WP_Widget { if (!$buttons && isset($instance['items']) && is_array($instance['items'])) { $buttons = $instance['items']; } + if (!$buttons) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一个按钮', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一个按钮', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } + return; + } $align = sanitize_key((string) ($instance['align'] ?? 'center')); if (!in_array($align, ['left', 'center', 'right'], true)) { diff --git a/src/AKSRT/Widgets/IconCardsWidget.php b/src/AKSRT/Widgets/IconCardsWidget.php index c34988b2..8bfe13d0 100644 --- a/src/AKSRT/Widgets/IconCardsWidget.php +++ b/src/AKSRT/Widgets/IconCardsWidget.php @@ -25,6 +25,13 @@ class IconCardsWidget extends \WP_Widget { public function widget($args, $instance): void { $cards = $this->normalize($instance['cards'] ?? []); if (!$cards) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一张图标卡', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一张图标卡', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } diff --git a/src/AKSRT/Widgets/WidgetComboInfo.php b/src/AKSRT/Widgets/WidgetComboInfo.php index 07feca43..95fd4892 100644 --- a/src/AKSRT/Widgets/WidgetComboInfo.php +++ b/src/AKSRT/Widgets/WidgetComboInfo.php @@ -27,6 +27,13 @@ class WidgetComboInfo extends \WP_Widget { public function widget($args, $instance): void { $cards = $this->normalize_cards($instance['cards'] ?? []); if (!$cards) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一张组合信息卡', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一张组合信息卡', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } diff --git a/src/AKSRT/Widgets/WidgetCoverCards.php b/src/AKSRT/Widgets/WidgetCoverCards.php index 23937c9b..4898a319 100644 --- a/src/AKSRT/Widgets/WidgetCoverCards.php +++ b/src/AKSRT/Widgets/WidgetCoverCards.php @@ -27,6 +27,13 @@ class WidgetCoverCards extends \WP_Widget { $title = !empty($instance['title']) ? (string) $instance['title'] : ''; $items = $this->normalize($instance['items'] ?? []); if (!$items) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一张封面卡片', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一张封面卡片', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } diff --git a/src/AKSRT/Widgets/WidgetFeatureIntro.php b/src/AKSRT/Widgets/WidgetFeatureIntro.php index 97664480..5f718b6b 100644 --- a/src/AKSRT/Widgets/WidgetFeatureIntro.php +++ b/src/AKSRT/Widgets/WidgetFeatureIntro.php @@ -25,6 +25,13 @@ class WidgetFeatureIntro extends \WP_Widget { public function widget($args, $instance): void { $slides = $this->normalize_slides($instance['slides'] ?? []); if (!$slides) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一个功能介绍面板', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一个功能介绍面板', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } $heading = trim((string) ($instance['heading'] ?? '')); @@ -85,9 +92,14 @@ class WidgetFeatureIntro extends \WP_Widget { if ($s['media_type'] === 'video' && $s['video_url'] !== '') { $poster = $s['video_poster'] !== '' ? ' poster="' . esc_url($s['video_poster']) . '"' : ''; $auto = $i === 0 ? ' autoplay' : ''; - echo ''; + if ($i === 0) { + echo ''; + } else { + echo ''; + } } elseif ($s['image'] !== '') { - echo '' . esc_attr($s['tab_label']) . ''; + $ph = get_template_directory_uri() . '/assets/img/placeholder.svg'; + echo '' . esc_attr($s['tab_label']) . ''; } echo ''; } @@ -103,7 +115,7 @@ class WidgetFeatureIntro extends \WP_Widget { var panels=[].slice.call(root.querySelectorAll('.aksrt-fi__panel')); function go(i){ tabs.forEach(function(t,idx){t.classList.toggle('is-active',idx===i);}); - panels.forEach(function(p,idx){p.classList.toggle('is-active',idx===i);var v=p.querySelector('video');if(v){if(idx===i){v.play&&v.play().catch(function(){})}else{v.pause&&v.pause()}}}); + panels.forEach(function(p,idx){p.classList.toggle('is-active',idx===i);var v=p.querySelector('video');if(v){if(idx===i){if(!v.getAttribute('src')&&v.getAttribute('data-src')){v.setAttribute('src',v.getAttribute('data-src'));}v.play&&v.play().catch(function(){})}else{v.pause&&v.pause()}}}); } tabs.forEach(function(t){ t.addEventListener('click', function(){ go(parseInt(t.getAttribute('data-index')||'0',10)); }); }); })(); diff --git a/src/AKSRT/Widgets/WidgetHighlights.php b/src/AKSRT/Widgets/WidgetHighlights.php index a87999a4..00fd20d0 100644 --- a/src/AKSRT/Widgets/WidgetHighlights.php +++ b/src/AKSRT/Widgets/WidgetHighlights.php @@ -29,6 +29,13 @@ class WidgetHighlights extends \WP_Widget { public function widget($args, $instance): void { $cards = $this->normalize($instance['cards'] ?? []); if (!$cards) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一张亮点卡片', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一张亮点卡片', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } $go_link = !empty($instance['go_link']); diff --git a/src/AKSRT/Widgets/WidgetIconCoverCards.php b/src/AKSRT/Widgets/WidgetIconCoverCards.php index f00c221d..3c58fc45 100644 --- a/src/AKSRT/Widgets/WidgetIconCoverCards.php +++ b/src/AKSRT/Widgets/WidgetIconCoverCards.php @@ -29,6 +29,13 @@ class WidgetIconCoverCards extends \WP_Widget { public function widget($args, $instance): void { $cards = $this->normalize($instance['cards'] ?? []); if (!$cards) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请添加至少一张图标封面卡', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请添加至少一张图标封面卡', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } $pc_row = max(1, min(4, (int) ($instance['pc_row'] ?? 2))); diff --git a/src/AKSRT/Widgets/WidgetTiltCases.php b/src/AKSRT/Widgets/WidgetTiltCases.php index 7adfd3c0..84827e86 100644 --- a/src/AKSRT/Widgets/WidgetTiltCases.php +++ b/src/AKSRT/Widgets/WidgetTiltCases.php @@ -31,6 +31,13 @@ class WidgetTiltCases extends \WP_Widget { $buttons = $this->normalize_buttons($instance['intro_buttons'] ?? []); if ($title === '' && $subtitle === '' && !$images) { + if (current_user_can('manage_options')) { + echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请配置标题或案例图片', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '

' . esc_html__('请配置标题或案例图片', 'aksrt') . '

'; + echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + } return; } diff --git a/src/AKSRT/Widgets/WidgetVideoPlayer.php b/src/AKSRT/Widgets/WidgetVideoPlayer.php index fde4bf8c..4f72397c 100644 --- a/src/AKSRT/Widgets/WidgetVideoPlayer.php +++ b/src/AKSRT/Widgets/WidgetVideoPlayer.php @@ -36,8 +36,9 @@ class WidgetVideoPlayer extends \WP_Widget { if ($video_url === '') { if (current_user_can('manage_options')) { echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped - echo '
' . esc_html__('视频播放器:', 'aksrt') . '' . - esc_html__('请配置视频 URL 或移出该模块', 'aksrt') . '
'; + echo function_exists('aksrt_get_widget_null') + ? aksrt_get_widget_null(__('请配置视频 URL', 'aksrt')) // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped + : '
' . esc_html__('视频播放器:', 'aksrt') . '' . esc_html__('请配置视频 URL 或移出该模块', 'aksrt') . '
'; echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } return;