fix(submit): keep sidebar visible on front submit page

This commit is contained in:
2026-09-05 21:50:40 +08:00
parent 49ffdc6ab2
commit 51dd38163d
7 changed files with 20 additions and 654 deletions
+5
View File
@@ -1,4 +1,9 @@
/* Front-end article editor — follows the reference theme's newposts page. */
/* The form wraps both float columns; flow-root keeps it from collapsing. */
#aksrt-submit-form {
display: flow-root;
}
#aksrt-submit-form .zib-widget {
margin-bottom: 15px;
padding: 15px;
-622
View File
@@ -1,622 +0,0 @@
.mce-top-part.affix {
position: fixed;
}
.mce-top-part.affix-bottom {
position: absolute;
}
.wp-editor-container {
border: none;
border-radius: 0;
overflow: hidden;
}
.mce-toolbar-grp {
border-bottom: none;
background: 0 0;
}
.mce-flow-layout {
white-space: unset;
padding: 0;
opacity: 0.8;
overflow-x: auto;
transition: 0.2s;
}
.mce-flow-layout:hover {
opacity: 0.9;
}
div.mce-statusbar {
border-top: 1px solid var(--main-border-color);
border-top-width: 1px;
}
.mce-statusbar .mce-container-body {
padding: 3px 8px;
overflow: hidden;
}
.mce-toolbar .mce-btn-group .mce-btn,
.qt-dfw {
border-color: transparent !important;
border-radius: 4px;
transition: .2s;
margin: 4px;
}
div.mce-toolbar-grp {
border-bottom: none;
background: #fff;
}
div.mce-toolbar-grp.mce-inline-toolbar-grp {
--toolbar-bg: #fff;
border: none;
background: var(--toolbar-bg);
border-radius: 4px;
box-shadow: 0 1px 10px rgba(0, 0, 0, .2);
}
.dark-theme div.mce-toolbar-grp.mce-inline-toolbar-grp {
--toolbar-bg: #242528;
}
div.mce-inline-toolbar-grp.mce-arrow-down::after {
border-top-color: var(--toolbar-bg);
}
div.mce-inline-toolbar-grp.mce-arrow-up::after {
border-bottom-color: var(--toolbar-bg);
}
div.mce-inline-toolbar-grp.mce-arrow-up::before {
border-bottom-color: var(--main-border-color);
}
div.mce-inline-toolbar-grp.mce-arrow-down::before {
border-top-color: var(--main-border-color);
}
.mce-menu-item {
transition: .2s;
border-radius: 4px;
margin: 2px 4px;
}
i.mce-i-wp_adv::before {
content: "\f347";
}
.mce-i-wp_adv {
transition: .2s;
}
.mce-active .mce-i-wp_adv {
transform: scaleY(-100%);
}
div.mce-menu-item {
transition: .1s;
}
.mce-menu .mce-menu-item.mce-active.mce-menu-item-normal,
.mce-menu .mce-menu-item.mce-active.mce-menu-item-preview,
.mce-menu .mce-menu-item.mce-selected,
.mce-menu .mce-menu-item:focus,
.mce-menu .mce-menu-item:hover,
.mce-menu .mce-menu-item.mce-selected {
background: var(--focus-color-opacity1);
color: var(--focus-color);
}
.mce-menu-item.mce-active.mce-menu-item-normal .mce-text,
.mce-menu-item.mce-active.mce-menu-item-normal .mce-ico {
color: inherit;
}
.mce-menu-item.mce-menu-item-preview.mce-active {
border-left: none
}
.mce-primary button {
color: #fff !important;
}
.mce-toolbar .mce-btn-group .mce-btn.mce-btn-has-text,
.mce-toolbar .mce-btn-group .mce-btn.mce-listbox {
box-shadow: none;
border-color: var(--main-border-color) !important;
background: transparent;
}
.mce-toolbar .mce-btn.mce-active .mce-open,
.mce-toolbar .mce-btn:focus .mce-open,
.mce-toolbar .mce-btn:hover .mce-open {
border-left-color: var(--main-border-color);
}
.mce-grid td.mce-grid-cell div {
width: 22px;
height: 22px;
border-color: var(--main-border-color);
}
.mce-toolbar .mce-colorbutton .mce-preview {
bottom: 2px;
left: 3px;
}
.mce-menubtn.mce-fixed-width span {
width: 65px;
}
.mce-toolbar .mce-btn-group .mce-btn.mce-listbox {
border-radius: 4px;
}
.mce-toolbar .mce-btn-group .mce-btn:focus,
.mce-toolbar .mce-btn-group .mce-btn:hover,
.qt-dfw:focus,
.qt-dfw:hover {
border-color: transparent;
border-radius: 4px;
background: var(--main-border-color);
color: var(--focus-color);
box-shadow: none;
opacity: 1;
}
.mce-toolbar .mce-btn-group .mce-btn.mce-active,
.mce-toolbar .mce-btn-group .mce-btn:active,
.qt-dfw.active {
opacity: 1;
background: var(--main-border-color);
box-shadow: inset 0 0 0 1px var(--focus-color);
}
.mce-btn-flat:hover,
.mce-btn-flat.mce-active,
.mce-btn-flat:focus,
.mce-btn-flat:active,
.mce-window .mce-btn,
.mce-textbox {
background: var(--main-border-color)
}
.mce-window .mce-btn.mce-primary,
.mce-window .mce-btn {
box-shadow: none !important;
border-color: transparent !important;
}
.mce-window .mce-btn:focus,
.mce-window .mce-btn:hover {
background: var(--main-border-color);
border-color: var(--main-border-color);
color: var(--main-color);
opacity: .8;
}
.mce-panel .mce-btn i.mce-caret {
border-color: transparent;
border-top-color: var(--muted-color) !important;
border-bottom-color: var(--muted-color) !important;
}
.mce-menu-item .mce-caret {
border-left-color: var(--muted-color) !important;
border-color: transparent;
}
div.wp-link-preview a.wplink-url-error {
color: #2b92f7;
}
.mce-window .mce-window-head,
#wp-link .query-notice,
#wp-link-wrap,
#link-modal-title,
#wp-link .submitbox {
color: var(--main-color);
background: var(--main-bg-color);
border-color: var(--main-border-color);
}
#wp-link li {
background-color: var(--muted-bg-color);
color: var(--muted-2-color);
border-color: var(--muted-border-color);
}
#wp-link li:hover {
background: var(--main-bg-color);
color: var(--main-color);
}
#wp-link li.selected {
background: var(--main-bg-color);
color: var(--focus-color);
}
#wp-link .query-results,
.mce-checkbox i.mce-i-checkbox,
.mce-textbox {
background-color: var(--muted-bg-color);
color: var(--muted-color);
border-color: var(--main-border-color);
border-radius: 3px;
}
.mce-label {
text-shadow: none;
}
.mce-window .mce-window-head .mce-title,
.mce-container,
.mce-container *,
.mce-widget,
.mce-widget * {
color: var(--main-color);
}
.mce-toolbar .mce-btn .mce-ico {
line-height: 20px;
}
.mce-top-part::before {
box-shadow: 0 1px 0 var(--main-border-color);
}
.mce-toolbar .mce-btn button,
.qt-dfw {
padding: 3px;
}
.mce-toolbar .mce-btn-group {
padding: 0;
}
.wp-core-ui .button,
.wp-core-ui .button-secondary {
border: none !important;
margin: 3px !important;
outline: 0 !important;
border-radius: 4px !important;
background: rgba(51, 155, 248, 0.1) !important;
color: #2f99f7 !important;
box-shadow: none !important;
padding: 4px 16px !important;
line-height: 1.6;
}
.dark-theme .mce-container,
.dark-theme .mce-widget,
.dark-theme .mce-widget *,
.dark-theme .media-modal,
.mce-container,
.mce-container *,
.mce-widget,
.mce-widget *,
.media-modal,
.mce-toolbar .mce-ico {
color: var(--main-color);
border-color: var(--main-border-color);
}
div.mce-fullscreen .mce-top-part.affix {
top: 0 !important;
position: relative !important;
}
div.mce-fullscreen .mce-top-part.affix+* {
margin-top: 0 !important;
}
.mce-primary button .mce-txt,
.mce-widget.mce-tooltip * {
color: #fff;
}
.ui-autocomplete.wplink-autocomplete {
color: #2f99f7;
}
#wp-link-wrap input {
padding: 3px 12px;
color: var(--muted-color);
background-color: var(--main-shadow);
background-image: none;
border: 1px solid var(--main-border-color);
border-radius: 4px;
font-weight: normal;
}
input {
transition: .2s;
}
#wp-link .query-results:focus,
.mce-checkbox:focus i.mce-i-checkbox,
.mce-textbox.mce-focus,
.mce-textbox:focus,
#wp-link-wrap input:focus {
border-color: var(--focus-color);
box-shadow: 0 0 2px 2px var(--focus-shadow-color);
}
#wp-link .query-results:hover,
.mce-checkbox:hover i.mce-i-checkbox,
.mce-textbox:hover,
#wp-link-wrap input:hover {
border-color: var(--focus-color);
}
#wp-link-wrap input[type="checkbox"]:checked {
background: var(--focus-color);
border-color: var(--focus-color);
box-shadow: none;
}
.mce-window.mce-container,
#wp-link-wrap {
border-radius: var(--main-radius);
overflow: hidden;
}
.mce-window .mce-window-head .mce-title {
font-size: 16px;
}
.screen-reader-text {
display: none;
}
.media-modal-content {
border-radius: var(--main-radius);
}
.new-title {
font-size: 20px;
font-weight: bold;
padding: 8px 5px;
}
.newposts-sign {
padding-top: 220px;
padding-bottom: 250px;
}
.content-layout .mce-flow-layout::-webkit-scrollbar {
width: 3px;
height: 3px;
}
.content-layout .mce-flow-layout::-webkit-scrollbar-track {
border-radius: 10px;
}
.content-layout .mce-flow-layout::-webkit-scrollbar-thumb {
border-radius: 10px;
background: rgba(0, 0, 0, 0);
}
.content-layout .mce-flow-layout:hover::-webkit-scrollbar-thumb {
background: rgba(146, 146, 146, 0.3);
}
.content-layout .mce-flow-layout::-webkit-scrollbar-thumb:hover {
background: rgba(145, 145, 145, 0.7);
}
.content-layout .mce-flow-layout::-webkit-scrollbar-thumb:window-inactive {
background: rgba(146, 146, 146, 0.1);
}
/****************特色封面编辑********************/
.featured-edit {
position: relative;
overflow: hidden;
border-radius: var(--main-radius);
}
.featured-edit .btns-full {
border-radius: var(--main-radius);
border: 2px dashed var(--main-border-color);
height: 150px;
background: var(--muted-border-color);
}
.featured-edit .btns-full .but {
font-size: 2em;
margin: 10px;
}
.featured-edit .btns-full .but>* {
font-size: .7em;
}
.featured-loaded .btns-full {
position: absolute;
right: 0;
border: none;
top: 0;
z-index: 11;
padding: 3px 5px;
background: rgba(0, 0, 0, .5);
border-radius: 0 0 0 22px;
height: auto;
}
.featured-loaded .btns-full .but {
font-size: 2em;
margin: 10px;
font-size: 1.2em;
margin: 4px;
--this-color: #fff;
--this-bg: rgba(255, 255, 255, 0.12);
}
.featured-loaded.image .btns-full .btn-video,
.featured-loaded.slide .btns-full .btn-video,
.featured-loaded.video .btns-full .btn-image,
.featured-edit .btns-full .btn-video-pic,
.featured-edit .btns-full .btn-delete {
display: none;
}
.featured-loaded .btns-full .btn-delete {
display: inline-flex;
}
.featured-loaded.video .btns-full .btn-video-pic {
display: inline-flex;
}
.editor-main-box .featured-loaded {
margin: -15px -15px 20px -15px;
}
.editor-main-box .featured-loaded,
.editor-main-box .featured-loaded video,
.editor-main-box .featured-loaded .graphic,
.editor-main-box .featured-loaded .swiper-slide img {
border-radius: var(--main-radius) var(--main-radius) 0 0;
}
/****************特色封面编辑****************结束****/
/****************付费下载********************/
.pay-dawnload-edit .lists-box {
background: var(--muted-border-color);
border-radius: var(--main-radius);
}
.pay-dawnload-edit .lists-box .lists-item {
padding: 4px 12px;
word-break: break-all;
}
.pay-dawnload-edit .lists-box .lists-item+.lists-item {
border-top: 1px solid var(--main-border-color);
}
.pay-dawnload-edit-content .class-choice {
width: 29px;
height: 22px;
margin: 2px;
border: 2px solid var(--main-bg-color);
}
.pay-dawnload-edit-content .class-choice.is-active {
box-shadow: 0 0 0 2px var(--muted-2-color);
}
body.mce-fullscreen .modal {
z-index: 100050 !important;
}
body.mce-fullscreen .modal-backdrop {
z-index: 100040;
}
#tinymce,
div.mce-panel,
div.mce-toolbar-grp,
.mce-floatpanel.mce-popover {
background: var(--main-bg-color);
}
.wp-editor-container textarea.wp-editor-area {
opacity: 0;
}
div .wp-editor-tabs>button {
border: none;
margin: 0;
background: var(--muted-border-color);
color: var(--muted-color);
margin-bottom: 5px;
box-shadow: none !important
}
div .wp-editor-tabs>button:active {
border: none;
background: var(--muted-border-color);
color: var(--muted-color);
}
div .html-active .switch-html,
div .tmce-active .switch-tmce {
background: var(--focus-color-opacity1);
color: var(--focus-color);
}
.mce-toolbar .mce-btn-group .wp-link-input+.mce-primary {
background: transparent;
box-shadow: none;
margin: 4px 2px;
}
.mce-toolbar .mce-btn-group .wp-link-input+.mce-primary:hover {
background: var(--main-border-color);
box-shadow: none;
}
.mce-toolbar .mce-btn-group .wp-link-input+.mce-primary .mce-ico {
color: var(--main-color);
}
.ui-autocomplete.wplink-autocomplete {
background: var(--main-bg-color);
}
@media (max-width: 991px) {
body .newposts-wrap {
float: none;
}
.newposts-sign {
padding-top: 30px;
padding-bottom: 40px;
}
}
@media (max-width: 767px) {
.mce-toolbar .mce-btn-group .mce-btn,
.qt-dfw {
margin: 2px;
}
#wp-link-wrap {
margin-top: -250px;
}
.mce-toolbar .mce-btn-group .wp-link-input+.mce-primary button {
padding: 2px;
}
div.wp-link-input,
div.wp-link-preview {
max-width: 220px;
margin-right: 8px;
}
.editor-main-box .featured-loaded,
.editor-main-box .featured-loaded video,
.editor-main-box .featured-loaded .graphic,
.editor-main-box .featured-loaded .swiper-slide img {
border-radius: 0;
}
}
@media (max-width: 480px) {}
-1
View File
File diff suppressed because one or more lines are too long
+7 -1
View File
@@ -151,8 +151,14 @@ function aksrt_is_show_sidebar_filter(): bool {
return false;
}
// The submit page owns functional sidebar controls even without assigned
// widgets, so its column must remain available when the sidebar is enabled.
if (is_page_template('templates/pages/page-submit.php')) {
return true;
}
// An empty widget stack would leave the reserved column as a bare gutter,
// so every scene (not only singles) collapses to no-sidebar.
// so every other scene collapses to no-sidebar.
if (!aksrt_has_current_sidebar_widgets()) {
return false;
}
-15
View File
@@ -43,8 +43,6 @@ class FrontSubmit {
add_filter('body_class', [$this, 'body_class']);
add_filter('wp_robots', [$this, 'robots_noindex']);
add_filter('aksrt_floating_buttons_enabled', [$this, 'disable_chrome_on_submit']);
add_filter('aksrt_footer_tabbar_enabled', [$this, 'disable_chrome_on_submit']);
}
public function register_rest_routes(): void {
@@ -515,8 +513,6 @@ class FrontSubmit {
public function body_class(array $classes): array {
if ($this->is_submit_template()) {
$classes[] = 'aksrt-page-submit';
$classes[] = 'aksrt-hide-float';
$classes[] = 'aksrt-hide-tabbar';
}
return $classes;
}
@@ -533,17 +529,6 @@ class FrontSubmit {
return $robots;
}
/**
* @param mixed $enabled
* @return mixed
*/
public function disable_chrome_on_submit($enabled) {
if ($this->is_submit_template()) {
return false;
}
return $enabled;
}
public function is_submit_template(): bool {
return is_page_template('templates/pages/page-submit.php');
}
+1 -15
View File
@@ -5,16 +5,14 @@
* @param WP_Term[] $terms
* @param int[] $checked
* @param string $name
* @param string $taxonomy
* @param int $parent
* @param int $depth
*/
defined('ABSPATH') || exit;
if (!function_exists('aksrt_submit_render_term_checks')) :
function aksrt_submit_render_term_checks(array $terms, array $checked, string $name, string $taxonomy = 'category', int $parent = 0, int $depth = 0): void {
function aksrt_submit_render_term_checks(array $terms, array $checked, string $name, int $parent = 0, int $depth = 0): void {
$children_map = [];
$roots = [];
foreach ($terms as $term) {
if (!$term instanceof WP_Term) {
continue;
@@ -55,17 +53,5 @@ if (!function_exists('aksrt_submit_render_term_checks')) :
}
$render($parent, $depth);
// Orphans (included children without parent in set).
$seen_parents = array_keys($children_map);
foreach ($terms as $term) {
if (!$term instanceof WP_Term) {
continue;
}
$pid = (int) $term->parent;
if ($pid > 0 && !isset($children_map[$pid]) && !isset($children_map[0])) {
// already handled if parent missing — skip double.
}
}
}
endif;
@@ -40,11 +40,13 @@ test('front submit follows the reference newposts shell and cards', () => {
const submitCss = read('assets/css/frontend/pages/submit.css');
const publicCss = read('assets/css/build/public.min.css');
const mainCss = read('assets/css/main.css');
const layout = read('inc/helpers/template-tags/site-layout.php');
const mobileSubmitCss = submitCss.slice(submitCss.indexOf('@media (max-width: 991px)'));
assert.match(page, /content-wrap newposts-wrap/);
assert.match(page, /class="content-layout"/);
assert.match(page, /<\/div>\s*<\/div>\s*<div class="sidebar show-sidebar">/);
assert.match(layout, /if \(is_page_template\('templates\/pages\/page-submit\.php'\)\) \{\s*return true;/);
assert.equal((page.match(/class="sidebar show-sidebar"/g) || []).length, 1);
assert.match(page, /'aksrt-submit',[\s\S]*?\['aksrt-public'\]/);
assert.match(main, /zib-widget full-widget-sm editor-main-box/);
@@ -70,6 +72,11 @@ test('front submit follows the reference newposts shell and cards', () => {
assert.match(mobileSubmitCss, /body \.sidebar\.show-sidebar\s*{[^}]*display:\s*unset;[^}]*width:\s*100%;[^}]*margin-left:\s*0;/);
assert.doesNotMatch(submitCss, /\.newposts-wrap\s*>\s*\.(?:content-layout|sidebar)/);
assert.doesNotMatch(submitCss, /\.newposts-wrap \.new-posts-submit/);
// The form wraps both float columns; flow-root is its only layout job.
assert.match(submitCss, /#aksrt-submit-form\s*{[^}]*display:\s*flow-root;/);
assert.doesNotMatch(submitCss, /#aksrt-submit-form\s*{[^}]*display:\s*(?:grid|flex);/);
// Submit chrome gating lives in footer.php; no dead filter/body-class duplicates.
assert.doesNotMatch(read('src/Core/FrontSubmit.php'), /aksrt_floating_buttons_enabled|aksrt_footer_tabbar_enabled|aksrt-hide-float|aksrt-hide-tabbar|disable_chrome_on_submit/);
});
test('front submit paid resources use the reference modal editor and compact list', () => {