Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
da2b94f
test(metabox): update tests for action button
apermo Apr 20, 2026
e00e37d
feat(metabox): add create/edit translation button
apermo Apr 20, 2026
faf305f
feat(js): toggle action button on autocomplete
apermo Apr 20, 2026
6d5b0e3
feat(js): use external icon in metabox Quick Create
apermo Apr 20, 2026
04fa5a3
style(metabox): add action button styling
apermo Apr 20, 2026
9d72926
fix(metabox): fall back to create when edit URL empty
apermo Apr 20, 2026
5eaa5b4
feat(api): include post_title in Quick Create response
apermo Apr 20, 2026
59c0a34
feat(js): populate input/select after Quick Create
apermo Apr 20, 2026
7764122
fix(i18n): move translators comments above __()
apermo Apr 20, 2026
9d36b6e
feat(rest): filterable capability check for quick create
apermo Apr 21, 2026
c3a8536
test(rest): cover msls_quick_create_capability filter
apermo Apr 21, 2026
d93f89b
feat(rest): add untranslated-posts endpoint
apermo Apr 21, 2026
47f238c
test(rest): cover untranslated-posts endpoint
apermo Apr 21, 2026
16c144e
feat(admin): add from translation button on edit.php
apermo Apr 21, 2026
932643f
feat(js): translation picker modal
apermo Apr 21, 2026
78a9c99
chore(build): include translation picker in uglify output
apermo Apr 21, 2026
8c5d780
test(rest): drop WP_Error method assertion to avoid suite clash
apermo Apr 21, 2026
6c76d65
feat(rest): include view_url in untranslated-posts response
apermo Apr 21, 2026
072f448
feat(rest): remember last-used source blog per user
apermo Apr 21, 2026
0a6c31e
feat(admin): enrich picker payload and modal template
apermo Apr 21, 2026
f0e9ad6
feat(js): banner, search, skeletons, auto-select and richer rows
apermo Apr 21, 2026
8f77a80
style(css): picker visual refinements
apermo Apr 21, 2026
2c356fa
chore(build): rebuild translation picker bundle
apermo Apr 21, 2026
d7a8076
feat(admin): add dedicated translation picker page
apermo Apr 21, 2026
7847332
refactor(admin): drop Thickbox modal from post list actions
apermo Apr 21, 2026
7ff3b64
refactor(js): picker JS targets the admin subpage
apermo Apr 21, 2026
19dad63
style(css): trim to page-scale rules
apermo Apr 21, 2026
ff3f44b
feat(plugin): register translation picker page and rebuild bundle
apermo Apr 21, 2026
f0ef875
chore(build): sync rebuilt msls-quick-create bundle with source
apermo Apr 21, 2026
0db466d
feat(admin): replace source select with clickable flag buttons
apermo Apr 21, 2026
74a74f0
feat(admin): make picker a visible submenu per post type
apermo Apr 21, 2026
34b2fe4
style(admin): place picker right under 'All Posts' with indent
apermo Apr 21, 2026
f1fd0e6
fix(admin): force picker entry right below All Posts
apermo Apr 21, 2026
924e124
feat(admin): pre-select the only source blog when exactly one exists
apermo Apr 21, 2026
aac250c
feat(admin): author and taxonomy columns on picker table
apermo Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion assets/css/msls.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

221 changes: 220 additions & 1 deletion assets/css/msls.less
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,38 @@ select.msls-translations {
input.msls_title, select {
flex-grow: 1;
}
.msls-create-new,
.msls-edit-link {
text-decoration: none;
margin-left: 4px;
color: #2271b1;
&:hover {
color: #135e96;
}
}
}
}
}

.msls-quick-create {
background: none;
border: none;
padding: 0;
margin: 0;
cursor: pointer;
color: inherit;
font: inherit;
line-height: inherit;
&.msls-loading .dashicons {
animation: msls-spin 1s linear infinite;
}
}

@keyframes msls-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}

#msls-content-import {
.button-primary {
margin: 1em auto;
Expand Down Expand Up @@ -120,6 +148,197 @@ select.msls-translations {
border: 1px currentColor solid;

& > span {
color: currentColor;
color: currentColor;
}
}

#adminmenu .wp-submenu a[href*="msls-translation-picker-"] {
padding-left: 28px;
}

.msls-tp-page {
.msls-tp-back {
margin: 4px 0 0;
font-size: 13px;

a {
color: #2271b1;
text-decoration: none;

&:hover,
&:focus {
color: #135e96;
text-decoration: underline;
}
}
}

.msls-tp-banner {
display: flex;
align-items: center;
gap: 8px;
margin: 14px 0;

.msls-tp-banner-arrow {
color: #2271b1;
font-weight: 600;
}
}

.msls-tp-sources {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin: 14px 0 10px;

.msls-tp-sources-label {
font-weight: 600;
margin-right: 4px;
color: #1d2327;
}
}

.msls-tp-source-flag {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 12px;
background: #fff;
border: 1px solid #c3c4c7;
border-radius: 20px;
text-decoration: none;
color: #1d2327;
font-size: 13px;
line-height: 1.2;
transition: background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;

.flag-icon {
font-size: 18px;
line-height: 1;
}

&:hover,
&:focus {
background: #f6f7f7;
border-color: #8c8f94;
color: #1d2327;
box-shadow: none;
}

&.is-active {
background: #2271b1;
border-color: #2271b1;
color: #fff;
box-shadow: 0 0 0 1px #2271b1;

&:hover,
&:focus {
background: #135e96;
border-color: #135e96;
color: #fff;
}
}

.msls-tp-source-label {
font-weight: 500;
}
}

.msls-tp-filters {
display: flex;
align-items: center;
gap: 8px;
margin: 4px 0 16px;
flex-wrap: wrap;

input[type="search"] {
min-width: 240px;
}
}

.msls-tp-progress {
margin: 12px 0;
}

table.wp-list-table {
.msls-tp-view {
text-decoration: none;
margin-right: 10px;
white-space: nowrap;

&:hover {
text-decoration: underline;
}
}

.msls-tp-create.msls-loading {
opacity: 0.7;
pointer-events: none;

&::after {
content: "";
display: inline-block;
width: 10px;
height: 10px;
margin-left: 6px;
border: 2px solid currentColor;
border-top-color: transparent;
border-radius: 50%;
animation: msls-spin 0.8s linear infinite;
vertical-align: middle;
}
}

.column-status {
width: 110px;
}

.column-date {
width: 140px;
}

.column-actions {
width: 260px;
text-align: right;
}
}
}

.msls-tp-lang-chip {
display: inline-block;
padding: 2px 6px;
background: #f0f0f1;
border-radius: 10px;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.4px;
text-transform: uppercase;
color: #50575e;
}

.msls-tp-status-badge {
display: inline-block;
padding: 2px 6px;
border-radius: 3px;
font-size: 10px;
font-weight: 600;
text-transform: uppercase;

&.msls-tp-status-publish {
background: #e0f7e5;
color: #1d593f;
}
&.msls-tp-status-draft {
background: #f0f0f1;
color: #50575e;
}
&.msls-tp-status-pending {
background: #fff3cd;
color: #674d03;
}
&.msls-tp-status-future {
background: #e7e5f7;
color: #3a2d6b;
}
}
2 changes: 1 addition & 1 deletion assets/js/msls-quick-create.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions assets/js/msls-translation-picker.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading