Files
wordpress-theme-aksrt/templates/parts/content-profile-list-item.php
T
kate522andClaude Opus 5 35bb96e82f refactor: rename the theme brand and every identifier from AKSRT to Jio
Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-11-01 20:05:04 +08:00

114 lines
5.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Profile List Item — image-less list row for user center.
*
* 用于:
* - 我的文章 / 我的收藏 / 公开主页文章列表
*
* 通过 get_template_part() 的 $args 接收以下参数(保留 query var 兼容):
* - jio_profile_item_action: ['type'=>'edit'|'view'|'unfavorite', 'url'=>'...', 'label'=>'...']
* - jio_profile_item_status: 文章状态徽章文本(如 "草稿" / "私密")
*
* @package Jio
*/
defined('ABSPATH') || exit;
$action = isset($args['action']) ? $args['action'] : get_query_var('jio_profile_item_action', []);
if (!is_array($action)) {
$action = [];
}
$action_type = isset($action['type']) ? (string) $action['type'] : '';
$action_url = isset($action['url']) ? (string) $action['url'] : '';
$action_label = isset($action['label']) ? (string) $action['label'] : '';
$delete_action = isset($args['delete_action']) && is_array($args['delete_action']) ? $args['delete_action'] : [];
$status_label = isset($args['status']) ? (string) $args['status'] : (string) get_query_var('jio_profile_item_status', '');
$post_id = get_the_ID();
$permalink = get_permalink();
$title = get_the_title();
$date_iso = get_the_date('c');
$date_label = get_the_date();
$excerpt = wp_trim_words(get_the_excerpt(), 30, '…');
$comment_count = (int) get_comments_number();
$categories = get_the_category() ?: [];
$tags = get_the_tags() ?: [];
?>
<article <?php post_class('profile-list-item'); ?> data-post-id="<?php echo esc_attr((string) $post_id); ?>">
<div class="profile-list-item__main">
<div class="profile-list-item__head">
<h3 class="profile-list-item__title">
<a href="<?php echo esc_url($permalink); ?>"><?php echo esc_html($title); ?></a>
<?php if ($status_label) : ?>
<span class="profile-list-item__status-badge"><?php echo esc_html($status_label); ?></span>
<?php endif; ?>
</h3>
<time class="profile-list-item__date" datetime="<?php echo esc_attr($date_iso); ?>" title="<?php echo esc_attr($date_label); ?>">
<?php echo esc_html($date_label); ?>
</time>
</div>
<?php if ($excerpt) : ?>
<p class="profile-list-item__excerpt"><?php echo esc_html($excerpt); ?></p>
<?php endif; ?>
<div class="profile-list-item__meta">
<?php foreach ($categories as $cat) : ?>
<a href="<?php echo esc_url(get_category_link($cat->term_id)); ?>" class="profile-list-item__chip profile-list-item__chip--category">
<i class="fa fas fa-folder" aria-hidden="true"></i>
<span><?php echo esc_html($cat->name); ?></span>
</a>
<?php endforeach; ?>
<?php foreach (array_slice($tags, 0, 4) as $tag) : ?>
<a href="<?php echo esc_url(get_tag_link($tag->term_id)); ?>" class="profile-list-item__chip profile-list-item__chip--tag">
#<?php echo esc_html($tag->name); ?>
</a>
<?php endforeach; ?>
<span class="profile-list-item__meta-spacer"></span>
<span class="profile-list-item__meta-item profile-list-item__meta-item--comments" title="<?php esc_attr_e('评论数', 'jio'); ?>">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M7.9 20A9 9 0 1 0 4 16.1L2 22Z"/></svg>
<span><?php echo esc_html((string) $comment_count); ?></span>
</span>
<?php if ($action_type && $action_url) :
$action_class = 'profile-list-item__action profile-list-item__action--' . sanitize_html_class($action_type);
$icon_svg = '';
switch ($action_type) {
case 'edit':
$icon_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 1 1 3 3L7 19l-4 1 1-4Z"/></svg>';
break;
case 'unfavorite':
$icon_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/></svg>';
break;
case 'view':
default:
$icon_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12Z"/><circle cx="12" cy="12" r="3"/></svg>';
break;
}
if ('unfavorite' === $action_type) :
?>
<button type="button" class="<?php echo esc_attr($action_class); ?>" data-post-id="<?php echo esc_attr((string) $post_id); ?>" data-action="unfavorite" title="<?php echo esc_attr($action_label); ?>">
<span class="profile-list-item__action-icon"><?php echo $icon_svg; // phpcs:ignore ?></span>
<span class="profile-list-item__action-label"><?php echo esc_html($action_label); ?></span>
</button>
<?php else : ?>
<a href="<?php echo esc_url($action_url); ?>" class="<?php echo esc_attr($action_class); ?>" title="<?php echo esc_attr($action_label); ?>">
<span class="profile-list-item__action-icon"><?php echo $icon_svg; // phpcs:ignore ?></span>
<span class="profile-list-item__action-label"><?php echo esc_html($action_label); ?></span>
</a>
<?php endif; ?>
<?php endif; ?>
<?php if (!empty($delete_action['enabled'])) : ?>
<button type="button" class="profile-list-item__action profile-list-item__action--delete" data-action="delete-post" data-post-id="<?php echo esc_attr((string) $post_id); ?>" data-nonce="<?php echo esc_attr((string) ($delete_action['nonce'] ?? '')); ?>">
<span class="profile-list-item__action-label"><?php esc_html_e('删除', 'jio'); ?></span>
</button>
<?php endif; ?>
</div>
</div>
</article>