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>
627 lines
12 KiB
CSS
627 lines
12 KiB
CSS
/**
|
|
* legacy 9.0 article list/card contract.
|
|
* Source baseline: css/main.css (SHA-256 recorded in tests/visual).
|
|
*/
|
|
|
|
.posts-row {
|
|
margin-right: -8px;
|
|
margin-bottom: 15px;
|
|
margin-left: -8px;
|
|
}
|
|
|
|
.posts-row > *:not(.post_ajax_loader) {
|
|
margin-right: 8px !important;
|
|
margin-left: 8px !important;
|
|
}
|
|
|
|
/* 骨架与真实卡片同宽:.posts-row 以 -8px 抵消卡片边距,loader 被上面的
|
|
:not() 排除在补偿外,会宽出 16px;这里补上等同的水平边距。
|
|
补偿落在骨架内层的 .posts-item 上(与真实卡片同一元素),不落外层
|
|
.post_ajax_loader —— 否则内层 .posts-item.card 的 margin:8px 会与外层
|
|
补偿叠成 16px,小工具 card 骨架因此窄出 8px。 */
|
|
.posts-row > .post_ajax_loader .posts-item,
|
|
.posts-row > .post_ajax_loader .posts-mini {
|
|
margin-right: 8px;
|
|
margin-left: 8px;
|
|
}
|
|
|
|
.posts-item {
|
|
margin: 15px 0;
|
|
padding: 20px;
|
|
overflow: hidden;
|
|
background: var(--main-bg-color, #fff);
|
|
border-radius: var(--main-radius, 8px);
|
|
box-shadow: 0 0 10px var(--main-shadow, rgba(116, 116, 116, 0.08));
|
|
transition: 0.2s;
|
|
}
|
|
|
|
.posts-item.flex,
|
|
.posts-item .flex,
|
|
.posts-mini .flex {
|
|
display: flex;
|
|
}
|
|
|
|
.posts-item .flex.xx,
|
|
.posts-mini .flex.xx {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.posts-item .flex.ac,
|
|
.posts-mini .flex.ac {
|
|
align-items: center;
|
|
}
|
|
|
|
.posts-item .flex.jsb,
|
|
.posts-mini .flex.jsb {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.posts-item .flex1,
|
|
.posts-mini .flex1 {
|
|
flex: 1;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.posts-item .post-graphic:not(.order1) {
|
|
margin-right: 20px;
|
|
}
|
|
|
|
.posts-item .order1.post-graphic {
|
|
margin-right: 0;
|
|
margin-left: 20px;
|
|
}
|
|
|
|
.posts-item .item-thumbnail {
|
|
position: relative;
|
|
display: block;
|
|
width: 190px;
|
|
height: 0;
|
|
padding-bottom: var(--posts-list-scale, 70%);
|
|
overflow: hidden;
|
|
border-radius: var(--main-radius, 8px);
|
|
}
|
|
|
|
.item-thumbnail.contain img {
|
|
object-fit: contain;
|
|
}
|
|
|
|
.swiper-slide.gradient-bg .dplayer-poster img,
|
|
.swiper-slide.gradient-bg > * > img {
|
|
object-fit: contain !important;
|
|
border-radius: 0 !important;
|
|
}
|
|
|
|
.item-thumbnail .swiper-wrapper {
|
|
height: 100% !important;
|
|
}
|
|
|
|
.list .item-thumbnail .jio-slider,
|
|
.list .item-thumbnail.new-swiper {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
margin: 0 !important;
|
|
}
|
|
|
|
.item-thumbnail .swiper-wrapper,
|
|
.item-thumbnail img {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.item-thumbnail .swiper-pagination {
|
|
right: 0 !important;
|
|
bottom: 0 !important;
|
|
left: 0 !important;
|
|
padding: 0 2px !important;
|
|
text-align: center !important;
|
|
}
|
|
|
|
.posts-item .item-heading {
|
|
display: -webkit-box;
|
|
max-height: 2.8em;
|
|
margin-top: 0;
|
|
margin-bottom: 5px;
|
|
overflow: hidden;
|
|
font-size: 18px;
|
|
line-height: 1.4em;
|
|
white-space: normal;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 2;
|
|
}
|
|
|
|
.font-bold {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.list.style2 .item-thumbnail {
|
|
width: 130px;
|
|
}
|
|
|
|
.list.style2 .item-heading {
|
|
display: unset;
|
|
max-height: 1.4em;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.posts-item .item-heading > a {
|
|
color: var(--key-color, #333);
|
|
}
|
|
|
|
.posts-item .item-heading > a:hover {
|
|
color: var(--focus-color, #f04494);
|
|
}
|
|
|
|
.posts-item .item-excerpt {
|
|
margin: 0 0 6px;
|
|
overflow: hidden;
|
|
color: var(--muted-color, #777);
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.posts-item .item-meta item {
|
|
margin-right: 8px;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.posts-item .item-meta svg.icon,
|
|
.posts-mini .item-meta svg.icon {
|
|
display: inline-block;
|
|
width: 1em;
|
|
height: 1em;
|
|
margin-right: 2px;
|
|
fill: currentColor;
|
|
overflow: hidden;
|
|
vertical-align: -0.15em;
|
|
}
|
|
|
|
.posts-item .meta-right item:last-child {
|
|
margin-right: 0;
|
|
}
|
|
|
|
.item-meta .avatar-mini {
|
|
width: 20px;
|
|
height: 20px;
|
|
border-radius: 50%;
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.item-meta .meta-pay {
|
|
padding: 0 4px;
|
|
}
|
|
|
|
.posts-item .item-meta a,
|
|
.posts-mini .item-meta a {
|
|
color: inherit;
|
|
}
|
|
|
|
.posts-item .item-tags a {
|
|
margin-right: 5px;
|
|
padding: 2px 5px;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.posts-item .item-tags a .fa {
|
|
font-size: 1em;
|
|
}
|
|
|
|
.posts-item.card {
|
|
display: inline-block;
|
|
width: calc(33.333% - 16px);
|
|
margin: 8px;
|
|
padding: 10px;
|
|
vertical-align: top;
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.posts-item.card:last-child {
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.posts-item.card .item-body {
|
|
width: 100%;
|
|
margin: 10px 0 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.posts-item.card .item-meta item {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.posts-mini-con .item-heading,
|
|
.posts-item.card .item-heading {
|
|
font-size: 14px;
|
|
}
|
|
|
|
.posts-item.card .item-heading {
|
|
min-height: 2.8em;
|
|
}
|
|
|
|
.posts-item.card .item-tags {
|
|
min-height: 23px;
|
|
}
|
|
|
|
.posts-item.card .item-thumbnail {
|
|
width: 100%;
|
|
padding-bottom: var(--posts-card-scale, 70%);
|
|
}
|
|
|
|
.posts-item.card.style2 {
|
|
background: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.posts-item.card.style2:hover {
|
|
background: var(--main-bg-color, #fff);
|
|
box-shadow: 0 0 10px var(--main-shadow, rgba(116, 116, 116, 0.08));
|
|
}
|
|
|
|
.posts-item.card.style3 {
|
|
padding: 0;
|
|
}
|
|
|
|
.posts-item.card.style3 .item-thumbnail,
|
|
.posts-item.card.style3 .item-thumbnail img {
|
|
border-radius: var(--main-radius, 8px) var(--main-radius, 8px) 0 0;
|
|
}
|
|
|
|
.posts-item.card.style3 .item-body {
|
|
margin: 0;
|
|
padding: 10px;
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items {
|
|
margin: 0 -3px 6px;
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items > span {
|
|
position: relative;
|
|
display: inline-block;
|
|
width: calc(25% - 6px);
|
|
height: 0;
|
|
margin: 0 3px;
|
|
padding-bottom: calc(var(--posts-list-scale, 70%) / 4);
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items > span > img {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items.contain > span {
|
|
overflow: hidden;
|
|
background: var(--main-border-color, rgba(50, 50, 50, 0.06));
|
|
border-radius: var(--main-radius, 8px);
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items.contain > span > img {
|
|
object-fit: contain;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.posts-item.no_margin {
|
|
margin: 0;
|
|
border-radius: 0;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.posts-item.no-thumb .item-excerpt {
|
|
height: auto;
|
|
}
|
|
|
|
.posts-item.no-thumb .item-body {
|
|
width: 100%;
|
|
}
|
|
|
|
.posts-item + .pagenav {
|
|
margin-top: -15px;
|
|
}
|
|
|
|
.posts-item.card + .pagenav {
|
|
margin-top: -10px;
|
|
}
|
|
|
|
.no_margin:first-of-type {
|
|
margin-top: 10px;
|
|
border-radius: var(--main-radius, 8px) var(--main-radius, 8px) 0 0;
|
|
}
|
|
|
|
.no_margin:last-of-type {
|
|
margin-bottom: 15px;
|
|
border-radius: 0 0 var(--main-radius, 8px) var(--main-radius, 8px);
|
|
}
|
|
|
|
.posts-mini {
|
|
padding: 10px;
|
|
display: inline-flex;
|
|
width: 50%;
|
|
vertical-align: top;
|
|
}
|
|
|
|
.posts-mini-con {
|
|
flex: auto;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.posts-mini .item-thumbnail {
|
|
width: 96px;
|
|
height: 0;
|
|
padding-bottom: var(--posts-list-scale, 70%);
|
|
position: relative;
|
|
overflow: hidden;
|
|
border-radius: var(--main-radius, 8px);
|
|
}
|
|
|
|
.posts-mini .item-thumbnail img {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.posts-mini .item-heading {
|
|
margin: 0;
|
|
}
|
|
|
|
.posts-mini .item-heading.icon-circle {
|
|
margin-left: -5px;
|
|
}
|
|
|
|
.posts-mini .item-meta {
|
|
font-size: 12px;
|
|
}
|
|
|
|
.posts-mini-con .badg {
|
|
min-width: 18px;
|
|
}
|
|
|
|
.sidebar .posts-mini,
|
|
.mobile-nav-widget .posts-mini {
|
|
width: 100% !important;
|
|
}
|
|
|
|
.mobile-nav-widget .posts-mini {
|
|
padding-right: 0;
|
|
padding-left: 0;
|
|
}
|
|
|
|
.posts-mini:last-of-type {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.posts-mini-lists {
|
|
padding: 5px;
|
|
}
|
|
|
|
.posts-mini-lists .tab-nav-theme {
|
|
padding: 0 5px 2px;
|
|
}
|
|
|
|
.mobile-nav-widget .posts-mini-lists .tab-nav-theme {
|
|
margin: 0 -5px;
|
|
padding: 0;
|
|
}
|
|
|
|
.widget-main-post.style-list .widget-ajaxpager,
|
|
.widget-main-post.style-card .widget-ajaxpager,
|
|
.widget-tab-post.index-tab .tab-content > .tab-pane {
|
|
margin: -8px -8px 15px;
|
|
}
|
|
|
|
.widget-tab-post.style-list .tab-content > .tab-pane {
|
|
margin-bottom: 25px;
|
|
}
|
|
|
|
.widget-main-post.style-list .posts-item,
|
|
.widget-tab-post.style-list .posts-item {
|
|
margin-right: 8px;
|
|
margin-left: 8px;
|
|
}
|
|
|
|
/* 骨架与卡片同宽同轴:.widget-ajaxpager / .tab-pane 用负边距抵消卡片的水平
|
|
边距。补偿同样落在骨架内层的 .posts-item 上(与真实卡片同一元素),
|
|
不落外层 .post_ajax_loader —— 否则内层 .posts-item.card 自带的 margin:8px
|
|
会与外层补偿叠成 16px,card 骨架因此窄出 8px。 */
|
|
.widget-main-post.style-list .widget-ajaxpager > .post_ajax_loader .posts-item,
|
|
.widget-main-post.style-card .widget-ajaxpager > .post_ajax_loader .posts-item,
|
|
.widget-tab-post .tab-content > .tab-pane > .widget-ajaxpager > .post_ajax_loader .posts-item {
|
|
margin-right: 8px;
|
|
margin-left: 8px;
|
|
}
|
|
|
|
.posts-mini:hover img,
|
|
.posts-item:hover .item-thumbnail img,
|
|
.posts-item.mult-thumb .thumb-items > span > img:hover {
|
|
transform: scale(1.02);
|
|
}
|
|
|
|
.swiper-scroll .posts-item {
|
|
flex-shrink: 0;
|
|
margin: 0 16px 0 0 !important;
|
|
}
|
|
|
|
.swiper-scroll .posts-item.list {
|
|
width: calc(50% - 8px) !important;
|
|
min-width: 520px !important;
|
|
}
|
|
|
|
.swiper-scroll .posts-item.posts-mini {
|
|
width: 360px !important;
|
|
}
|
|
|
|
.swiper-scroll .posts-item.card {
|
|
width: calc(33.333% - 11px) !important;
|
|
}
|
|
|
|
/* img-badge 定位由 main.css 的参考主题规则拥有(.img-badge top:.6em /
|
|
* .img-badge.left left:0 / .hot-posts .img-badge left:-15px)。
|
|
* 此前这里存在 top:8px/left:8px 的全局覆盖,导致热榜 TOP 徽章与参考主题错位。 */
|
|
|
|
@media (min-width: 992px) {
|
|
.fluid-widget-wrap .posts-item.card,
|
|
.site-layout-1 .posts-item.card {
|
|
width: calc(25% - 16px);
|
|
}
|
|
|
|
.fluid-widget-wrap .posts-item:not(.card),
|
|
.site-layout-1 .posts-item:not(.card) {
|
|
display: inline-flex;
|
|
width: calc(50% - 16px);
|
|
margin: 8px;
|
|
}
|
|
|
|
.fluid-widget-wrap .posts-item.no_margin,
|
|
.site-layout-1 .posts-item.no_margin {
|
|
border-radius: var(--main-radius, 8px);
|
|
}
|
|
|
|
.fluid-widget-wrap .posts-mini,
|
|
.site-layout-1 .posts-mini {
|
|
width: 33.333%;
|
|
}
|
|
|
|
.sidebar .posts-item.card,
|
|
.sidebar .posts-item.list {
|
|
width: 100% !important;
|
|
min-width: 0 !important;
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 767px) {
|
|
.posts-row {
|
|
margin-right: -5px;
|
|
margin-left: -5px;
|
|
}
|
|
|
|
.posts-row > *:not(.post_ajax_loader) {
|
|
margin-right: 5px !important;
|
|
margin-left: 5px !important;
|
|
}
|
|
|
|
.posts-row > .post_ajax_loader .posts-item,
|
|
.posts-row > .post_ajax_loader .posts-mini {
|
|
margin-right: 5px;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.posts-item .item-thumbnail {
|
|
width: 138px;
|
|
}
|
|
|
|
.posts-mini .item-thumbnail,
|
|
.list.style2 .item-thumbnail {
|
|
width: 90px;
|
|
}
|
|
|
|
.posts-item .post-graphic:not(.order1) {
|
|
margin-right: 15px;
|
|
}
|
|
|
|
.posts-item .order1.post-graphic {
|
|
margin-left: 15px;
|
|
}
|
|
|
|
.posts-item .item-heading {
|
|
font-size: 15px;
|
|
}
|
|
|
|
.posts-item:not(.no-thumb) .item-excerpt {
|
|
display: none;
|
|
}
|
|
|
|
.posts-item.card {
|
|
width: calc(50% - 10px);
|
|
margin: 5px;
|
|
}
|
|
|
|
.widget-main-post.style-list .widget-ajaxpager,
|
|
.widget-main-post.style-card .widget-ajaxpager,
|
|
.widget-tab-post.index-tab .tab-content > .tab-pane {
|
|
margin: -5px -5px 20px;
|
|
}
|
|
|
|
.widget-tab-post.style-list .tab-content > .tab-pane,
|
|
.widget-main-post.style-list .widget-ajaxpager {
|
|
margin-top: -15px;
|
|
}
|
|
|
|
.widget-tab-post.style-list .posts-item {
|
|
margin-right: 5px;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.widget-main-post.style-list .widget-ajaxpager > .post_ajax_loader .posts-item,
|
|
.widget-main-post.style-card .widget-ajaxpager > .post_ajax_loader .posts-item,
|
|
.widget-tab-post .tab-content > .tab-pane > .widget-ajaxpager > .post_ajax_loader .posts-item {
|
|
margin-right: 5px;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.swiper-scroll .posts-item {
|
|
margin-right: 10px !important;
|
|
}
|
|
|
|
.posts-item.card:nth-child(odd) {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.posts-item.card:nth-child(even) {
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items > span {
|
|
width: calc(33.333% - 6px);
|
|
padding-bottom: calc(var(--posts-list-scale, 70%) / 3);
|
|
}
|
|
|
|
.posts-item.mult-thumb .thumb-items > span:nth-child(4) {
|
|
display: none;
|
|
}
|
|
|
|
.swiper-scroll .posts-item.card {
|
|
width: calc(50% - 5px) !important;
|
|
}
|
|
|
|
.swiper-scroll .posts-item.list {
|
|
width: 100% !important;
|
|
min-width: auto !important;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
.posts-item:not(.no-thumb) .meta-right item {
|
|
display: none;
|
|
}
|
|
|
|
.posts-mini {
|
|
width: 100%;
|
|
}
|
|
|
|
.posts-item {
|
|
margin: 10px 0;
|
|
padding: 10px;
|
|
}
|
|
|
|
.jio-panel .posts-item.no_margin {
|
|
padding: 10px 0;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.posts-item,
|
|
.posts-item img {
|
|
transition: none;
|
|
}
|
|
}
|