修复了一些问题
This commit is contained in:
@@ -22,6 +22,14 @@ function aksrt_normalize_message_view(string $view): string {
|
||||
return array_key_exists($view, aksrt_message_center_views()) ? $view : 'unread';
|
||||
}
|
||||
|
||||
function aksrt_get_message_center_paginate_type(): string {
|
||||
$settings = class_exists('\AKSRT\Settings\Settings')
|
||||
? \AKSRT\Settings\Settings::notification_settings()
|
||||
: [];
|
||||
$type = sanitize_key((string) ($settings['paginate_type'] ?? 'ajax_lists'));
|
||||
return in_array($type, ['ajax_lists', 'default'], true) ? $type : 'ajax_lists';
|
||||
}
|
||||
|
||||
function aksrt_message_category_for_type(string $type): string {
|
||||
$type = sanitize_key($type);
|
||||
if (str_starts_with($type, 'asset_')) {
|
||||
@@ -204,7 +212,10 @@ function aksrt_render_message_center_list(int $user_id, string $view, int $page
|
||||
$per_page = 20;
|
||||
$total_pages = max(1, (int) ceil(count($items) / $per_page));
|
||||
$page = max(1, min($total_pages, $page));
|
||||
$items = array_slice($items, ($page - 1) * $per_page, $per_page);
|
||||
$paginate_type = aksrt_get_message_center_paginate_type();
|
||||
$items = $paginate_type === 'ajax_lists'
|
||||
? array_slice($items, 0, $page * $per_page)
|
||||
: array_slice($items, ($page - 1) * $per_page, $per_page);
|
||||
|
||||
if (!$items) {
|
||||
?>
|
||||
@@ -217,11 +228,37 @@ function aksrt_render_message_center_list(int $user_id, string $view, int $page
|
||||
<?php foreach ($items as $item) { aksrt_render_message_item($item, $view); } ?>
|
||||
</div>
|
||||
<?php if ($total_pages > 1) : ?>
|
||||
<nav class="messages-pagination" aria-label="<?php esc_attr_e('消息分页', 'aksrt'); ?>">
|
||||
<?php for ($number = 1; $number <= $total_pages; $number++) : ?>
|
||||
<button type="button" class="profile-status-chip<?php echo $number === $page ? ' is-active' : ''; ?>" data-message-page="<?php echo esc_attr((string) $number); ?>" <?php disabled($number, $page); ?>><?php echo esc_html((string) $number); ?></button>
|
||||
<?php endfor; ?>
|
||||
</nav>
|
||||
<?php if ($paginate_type === 'ajax_lists' && $page < $total_pages) : ?>
|
||||
<nav class="messages-pagination messages-pagination--load-more" aria-label="<?php esc_attr_e('消息分页', 'aksrt'); ?>">
|
||||
<button type="button" class="messages-pagination__more" data-message-next-page="<?php echo esc_attr((string) ($page + 1)); ?>">
|
||||
<span><?php esc_html_e('加载更多消息', 'aksrt'); ?></span>
|
||||
<small><?php echo esc_html(sprintf(__('%1$d / %2$d 页', 'aksrt'), $page, $total_pages)); ?></small>
|
||||
</button>
|
||||
</nav>
|
||||
<?php elseif ($paginate_type === 'default') : ?>
|
||||
<?php
|
||||
$numbers = array_values(array_unique(array_filter([
|
||||
1,
|
||||
$page - 2,
|
||||
$page - 1,
|
||||
$page,
|
||||
$page + 1,
|
||||
$page + 2,
|
||||
$total_pages,
|
||||
], static fn(int $number): bool => $number >= 1 && $number <= $total_pages)));
|
||||
sort($numbers);
|
||||
$previous_number = 0;
|
||||
?>
|
||||
<nav class="messages-pagination messages-pagination--numbers" aria-label="<?php esc_attr_e('消息分页', 'aksrt'); ?>">
|
||||
<button type="button" class="messages-pagination__button messages-pagination__button--edge" data-message-page="<?php echo esc_attr((string) max(1, $page - 1)); ?>" aria-label="<?php esc_attr_e('上一页', 'aksrt'); ?>" <?php disabled($page, 1); ?>><i class="fa fas fa-angle-left" aria-hidden="true"></i></button>
|
||||
<?php foreach ($numbers as $number) : ?>
|
||||
<?php if ($previous_number > 0 && $number - $previous_number > 1) : ?><span class="messages-pagination__ellipsis" aria-hidden="true">…</span><?php endif; ?>
|
||||
<button type="button" class="messages-pagination__button<?php echo $number === $page ? ' is-current' : ''; ?>" data-message-page="<?php echo esc_attr((string) $number); ?>" <?php echo $number === $page ? 'aria-current="page"' : ''; ?> <?php disabled($number, $page); ?>><?php echo esc_html((string) $number); ?></button>
|
||||
<?php $previous_number = $number; ?>
|
||||
<?php endforeach; ?>
|
||||
<button type="button" class="messages-pagination__button messages-pagination__button--edge" data-message-page="<?php echo esc_attr((string) min($total_pages, $page + 1)); ?>" aria-label="<?php esc_attr_e('下一页', 'aksrt'); ?>" <?php disabled($page, $total_pages); ?>><i class="fa fas fa-angle-right" aria-hidden="true"></i></button>
|
||||
</nav>
|
||||
<?php endif; ?>
|
||||
<?php endif;
|
||||
}
|
||||
|
||||
@@ -279,11 +316,12 @@ add_action('wp_ajax_aksrt_load_message_center', function (): void {
|
||||
$content_html = (string) ob_get_clean();
|
||||
|
||||
wp_send_json_success([
|
||||
'view' => $view,
|
||||
'page' => $page,
|
||||
'detail' => $notification_id,
|
||||
'nav' => $nav_html,
|
||||
'content' => $content_html,
|
||||
'unread' => $counts['unread'],
|
||||
'view' => $view,
|
||||
'page' => $page,
|
||||
'detail' => $notification_id,
|
||||
'paginate_type' => aksrt_get_message_center_paginate_type(),
|
||||
'nav' => $nav_html,
|
||||
'content' => $content_html,
|
||||
'unread' => $counts['unread'],
|
||||
]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user