Skip to content

Commit 831a020

Browse files
committed
update: site selection for disabled/unreachable sites
1 parent d72fcbd commit 831a020

File tree

2 files changed

+61
-38
lines changed

2 files changed

+61
-38
lines changed

assets/src/admin/templates/components/SiteSelection.js

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,6 @@ const SiteSelection = ( {
4242
selectedTemplates,
4343
sitesHealthCheckResult,
4444
} ) => {
45-
const handleSiteSelection = ( siteId ) => {
46-
setSelectedSites( ( prevSelected ) => {
47-
if ( prevSelected.includes( siteId ) ) {
48-
return prevSelected.filter( ( id ) => id !== siteId );
49-
}
50-
return [ ...prevSelected, siteId ];
51-
} );
52-
};
53-
5445
// Helper function to check if all templates are already present
5546
const areAllTemplatesPresent = ( siteId ) => {
5647
if ( selectedTemplates.length === 0 || brandSiteTemplates[ siteId ] === undefined ) {
@@ -64,10 +55,34 @@ const SiteSelection = ( {
6455
return selectedTemplates.every( ( templateId ) => availableTemplateIds.includes( templateId ) );
6556
};
6657

58+
// Helper function to check if a site is unreachable
59+
const isSiteUnreachable = ( siteId ) => {
60+
return sitesHealthCheckResult[ siteId ] && ! sitesHealthCheckResult[ siteId ]?.success;
61+
};
62+
63+
// Helper function to check if a site should be disabled
64+
const isSiteDisabled = ( siteId ) => {
65+
return areAllTemplatesPresent( siteId ) || isSiteUnreachable( siteId );
66+
};
67+
68+
const handleSiteSelection = ( siteId ) => {
69+
// Prevent selection/deselection of disabled sites
70+
if ( isSiteDisabled( siteId ) ) {
71+
return;
72+
}
73+
74+
setSelectedSites( ( prevSelected ) => {
75+
if ( prevSelected.includes( siteId ) ) {
76+
return prevSelected.filter( ( id ) => id !== siteId );
77+
}
78+
return [ ...prevSelected, siteId ];
79+
} );
80+
};
81+
6782
const selectAllSites = () => {
68-
// Get IDs of sites that don't already have all templates (not disabled)
83+
// Get IDs of sites that are selectable (not disabled)
6984
const selectableSiteIds = siteInfo
70-
.filter( ( site ) => ! areAllTemplatesPresent( site.id ) )
85+
.filter( ( site ) => ! isSiteDisabled( site.id ) )
7186
.map( ( site ) => site.id );
7287

7388
setSelectedSites( selectableSiteIds );
@@ -79,9 +94,11 @@ const SiteSelection = ( {
7994

8095
const totalCount = siteInfo.length;
8196

82-
// Calculate the number of sites that don't have all templates already
83-
const selectableSites = siteInfo.filter( ( site ) => ! areAllTemplatesPresent( site.id ) );
97+
// Calculate the number of selectable sites
98+
const selectableSites = siteInfo.filter( ( site ) => ! isSiteDisabled( site.id ) );
8499
const selectableSiteCount = selectableSites.length;
100+
101+
// Count only selected sites that are still selectable
85102
const selectedSelectableSiteCount = selectedSites.filter( ( siteId ) =>
86103
selectableSites.some( ( site ) => site.id === siteId ),
87104
).length;
@@ -172,9 +189,9 @@ const SiteSelection = ( {
172189
<p>
173190
<span className="dashicons dashicons-info"></span>
174191
{ sprintf(
175-
/* translators: %1$d: Number of sites that already have all selected templates. %2$d: Total number of sites. */
192+
/* translators: %1$d: Number of sites that already have all selected templates or are unreachable. %2$d: Total number of sites. */
176193
__(
177-
'%1$d of %2$d sites already have all selected templates and are disabled.',
194+
'%1$d of %2$d sites are disabled (already have all templates or unreachable).',
178195
'onedesign',
179196
),
180197
totalCount - selectableSiteCount,
@@ -187,7 +204,7 @@ const SiteSelection = ( {
187204
<div className="od-sites-list od-sites-grid">
188205
{ siteInfo.map( ( { id, name, url, logo } ) => {
189206
const isSelected = selectedSites.includes( id );
190-
const isDisabled = ( ( areAllTemplatesPresent( id ) && ! isSelected ) || ( sitesHealthCheckResult[ id ] && ! sitesHealthCheckResult[ id ].success ) );
207+
const isDisabled = isSiteDisabled( id );
191208

192209
return (
193210
<div
@@ -215,10 +232,11 @@ const SiteSelection = ( {
215232
{ isDisabled && ! isSelected && (
216233
<div
217234
className="od-site-disabled-indicator"
218-
title={ __(
219-
'This site already has all selected templates',
220-
'onedesign',
221-
) }
235+
title={
236+
isSiteUnreachable( id )
237+
? __( 'This site is unreachable', 'onedesign' )
238+
: __( 'This site already has all selected templates', 'onedesign' )
239+
}
222240
>
223241
{ renderIcon( { sitesHealthCheckResult, id } ) }
224242
</div>

languages/onedesign.pot

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ msgstr ""
99
"MIME-Version: 1.0\n"
1010
"Content-Type: text/plain; charset=UTF-8\n"
1111
"Content-Transfer-Encoding: 8bit\n"
12-
"POT-Creation-Date: 2025-10-15T08:24:47+00:00\n"
12+
"POT-Creation-Date: 2025-10-15T08:55:01+00:00\n"
1313
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1414
"X-Generator: WP-CLI 2.12.0\n"
1515

@@ -507,15 +507,15 @@ msgstr ""
507507
#: assets/build/js/patterns-library.js:1
508508
#: assets/build/js/templates-library.js:1
509509
#: assets/src/admin/patterns/components/SiteSelection.js:216
510-
#: assets/src/admin/templates/components/SiteSelection.js:125
510+
#: assets/src/admin/templates/components/SiteSelection.js:142
511511
msgid "Select Brand Sites"
512512
msgstr ""
513513

514514
#. translators: %1$d: Number of selected sites, %2$d: Total number of sites.
515515
#: assets/build/js/patterns-library.js:2
516516
#: assets/build/js/templates-library.js:2
517517
#: assets/src/admin/patterns/components/SiteSelection.js:221
518-
#: assets/src/admin/templates/components/SiteSelection.js:130
518+
#: assets/src/admin/templates/components/SiteSelection.js:147
519519
#, js-format
520520
msgid "%1$d of %2$d selected"
521521
msgstr ""
@@ -524,22 +524,22 @@ msgstr ""
524524
#: assets/build/js/patterns-library.js:3
525525
#: assets/build/js/templates-library.js:3
526526
#: assets/src/admin/patterns/components/SiteSelection.js:227
527-
#: assets/src/admin/templates/components/SiteSelection.js:136
527+
#: assets/src/admin/templates/components/SiteSelection.js:153
528528
#, js-format
529529
msgid "%1$d of %2$d sites available"
530530
msgstr ""
531531

532532
#: assets/build/js/patterns-library.js:3
533533
#: assets/build/js/templates-library.js:3
534534
#: assets/src/admin/patterns/components/SiteSelection.js:245
535-
#: assets/src/admin/templates/components/SiteSelection.js:154
535+
#: assets/src/admin/templates/components/SiteSelection.js:171
536536
msgid "Select All"
537537
msgstr ""
538538

539539
#: assets/build/js/patterns-library.js:3
540540
#: assets/build/js/templates-library.js:3
541541
#: assets/src/admin/patterns/components/SiteSelection.js:254
542-
#: assets/src/admin/templates/components/SiteSelection.js:163
542+
#: assets/src/admin/templates/components/SiteSelection.js:180
543543
msgid "Deselect All"
544544
msgstr ""
545545

@@ -670,7 +670,7 @@ msgstr ""
670670
#: assets/src/admin/patterns/components/BasePatternsTab.js:243
671671
#: assets/src/admin/templates/components/BrandSiteTemplates.js:197
672672
#: assets/src/admin/templates/components/BrandSiteTemplates.js:199
673-
#: assets/src/admin/templates/components/SiteSelection.js:302
673+
#: assets/src/admin/templates/components/SiteSelection.js:320
674674
#: assets/src/components/SiteModal.js:41
675675
#: assets/src/components/SiteSettings.js:266
676676
#: assets/src/components/SiteTable.js:148
@@ -701,7 +701,7 @@ msgstr ""
701701
#: assets/build/js/patterns-library.js:4
702702
#: assets/build/js/templates-library.js:5
703703
#: assets/src/admin/patterns/components/BasePatternsTab.js:261
704-
#: assets/src/admin/templates/components/SiteSelection.js:313
704+
#: assets/src/admin/templates/components/SiteSelection.js:331
705705
msgid "Applying…"
706706
msgstr ""
707707

@@ -1211,46 +1211,51 @@ msgid "No templates found."
12111211
msgstr ""
12121212

12131213
#: assets/build/js/templates-library.js:1
1214-
#: assets/src/admin/templates/components/SiteSelection.js:95
1214+
#: assets/src/admin/templates/components/SiteSelection.js:112
12151215
msgid "No connected sites found."
12161216
msgstr ""
12171217

12181218
#: assets/build/js/templates-library.js:1
1219-
#: assets/src/admin/templates/components/SiteSelection.js:97
1219+
#: assets/src/admin/templates/components/SiteSelection.js:114
12201220
msgid "Please configure brand sites first to apply templates."
12211221
msgstr ""
12221222

1223-
#. translators: %1$d: Number of sites that already have all selected templates. %2$d: Total number of sites.
1223+
#. translators: %1$d: Number of sites that already have all selected templates or are unreachable. %2$d: Total number of sites.
12241224
#: assets/build/js/templates-library.js:4
1225-
#: assets/src/admin/templates/components/SiteSelection.js:176
1225+
#: assets/src/admin/templates/components/SiteSelection.js:193
12261226
#, js-format
1227-
msgid "%1$d of %2$d sites already have all selected templates and are disabled."
1227+
msgid "%1$d of %2$d sites are disabled (already have all templates or unreachable)."
12281228
msgstr ""
12291229

12301230
#: assets/build/js/templates-library.js:4
1231-
#: assets/src/admin/templates/components/SiteSelection.js:218
1231+
#: assets/src/admin/templates/components/SiteSelection.js:237
1232+
msgid "This site is unreachable"
1233+
msgstr ""
1234+
1235+
#: assets/build/js/templates-library.js:4
1236+
#: assets/src/admin/templates/components/SiteSelection.js:238
12321237
msgid "This site already has all selected templates"
12331238
msgstr ""
12341239

12351240
#: assets/build/js/templates-library.js:4
1236-
#: assets/src/admin/templates/components/SiteSelection.js:255
1241+
#: assets/src/admin/templates/components/SiteSelection.js:273
12371242
msgid "All templates will be synced"
12381243
msgstr ""
12391244

12401245
#: assets/build/js/templates-library.js:4
1241-
#: assets/src/admin/templates/components/SiteSelection.js:263
1246+
#: assets/src/admin/templates/components/SiteSelection.js:281
12421247
msgid "All selected templates are already present"
12431248
msgstr ""
12441249

12451250
#. translators: %1$d: Number of selected templates already present. %2$d: Total number of selected templates.
12461251
#: assets/build/js/templates-library.js:5
1247-
#: assets/src/admin/templates/components/SiteSelection.js:276
1252+
#: assets/src/admin/templates/components/SiteSelection.js:294
12481253
#, js-format
12491254
msgid "%1$d of %2$d selected templates are already present"
12501255
msgstr ""
12511256

12521257
#: assets/build/js/templates-library.js:5
1253-
#: assets/src/admin/templates/components/SiteSelection.js:313
1258+
#: assets/src/admin/templates/components/SiteSelection.js:331
12541259
msgid "Apply Templates"
12551260
msgstr ""
12561261

0 commit comments

Comments
 (0)