@@ -107,6 +107,36 @@ public function form(array $form, FormStateInterface $form_state) {
107
107
],
108
108
];
109
109
110
+ $ form ['site_resolver ' ] = [
111
+ '#title ' => $ this ->t ('Plugin ' ),
112
+ '#description ' => $ this ->t ('Select a plugin to use for resolving the site for this entity type. ' ),
113
+ '#type ' => 'select ' ,
114
+ '#options ' => array_column ($ this ->siteResolverManager ->getDefinitions (), 'label ' , 'id ' ),
115
+ '#default_value ' => $ entity ->getSiteResolver () ? $ entity ->getSiteResolver ()->getId () : NULL ,
116
+ '#required ' => TRUE ,
117
+ '#limit_validation_errors ' => [['site_resolver ' ]],
118
+ '#submit ' => ['::submitSiteResolver ' ],
119
+ '#executes_submit_callback ' => TRUE ,
120
+ '#ajax ' => [
121
+ 'callback ' => '::ajaxReplaceSiteResolverSettingsForm ' ,
122
+ 'wrapper ' => 'site-resolver-settings ' ,
123
+ 'method ' => 'replace ' ,
124
+ ],
125
+ ];
126
+
127
+ $ form ['site_resolver_settings_container ' ] = [
128
+ '#type ' => 'container ' ,
129
+ '#prefix ' => '<div id="site-resolver-settings"> ' ,
130
+ '#suffix ' => '</div> ' ,
131
+ ];
132
+
133
+ $ site_resolver = $ entity ->getSiteResolver ();
134
+ if ($ site_resolver instanceof ConfigurableSiteResolverInterface) {
135
+ $ form ['configuration ' ] = [];
136
+ $ subform_state = SubformState::createForSubform ($ form ['configuration ' ], $ form , $ form_state );
137
+ $ form ['site_resolver_settings_container ' ]['configuration ' ] = $ site_resolver ->buildConfigurationForm ($ form ['configuration ' ], $ subform_state );
138
+ }
139
+
110
140
$ form ['settings_container ' ] = [
111
141
'#type ' => 'container ' ,
112
142
'#prefix ' => '<div id="settings-container"> ' ,
@@ -126,35 +156,21 @@ public function form(array $form, FormStateInterface $form_state) {
126
156
'#group ' => 'settings ' ,
127
157
];
128
158
129
- $ form ['preview_mode ' ]['site_resolver ' ] = [
130
- '#title ' => $ this ->t ('Plugin ' ),
131
- '#description ' => $ this ->t ('Select a plugin to use for resolving the preview site for this entity type. ' ),
132
- '#type ' => 'select ' ,
133
- '#options ' => array_merge (['' => $ this ->t ('None ' )], array_column ($ this ->siteResolverManager ->getDefinitions (), 'label ' , 'id ' )),
134
- '#default_value ' => $ entity ->getSiteResolver () ? $ entity ->getSiteResolver ()->getId () : NULL ,
135
- '#limit_validation_errors ' => [['site_resolver ' ]],
136
- '#submit ' => ['::submitSiteResolver ' ],
159
+ $ form ['preview_mode ' ]['preview_enabled ' ] = [
160
+ '#title ' => $ this ->t ('Enabled ' ),
161
+ '#description ' => $ this ->t ('Enable preview mode. ' ),
162
+ '#type ' => 'checkbox ' ,
163
+ '#default_value ' => $ entity ->isPreviewEnabled (),
164
+ '#limit_validation_errors ' => [['preview_enabled ' ]],
165
+ '#submit ' => ['::submitPreviewEnabled ' ],
137
166
'#executes_submit_callback ' => TRUE ,
138
167
'#ajax ' => [
139
- 'callback ' => '::ajaxReplaceSiteResolverSettingsForm ' ,
140
- 'wrapper ' => 'site-resolver- settings ' ,
168
+ 'callback ' => '::ajaxReplaceSettingsForm ' ,
169
+ 'wrapper ' => 'settings-container ' ,
141
170
'method ' => 'replace ' ,
142
171
],
143
172
];
144
173
145
- $ form ['preview_mode ' ]['site_resolver_settings_container ' ] = [
146
- '#type ' => 'container ' ,
147
- '#prefix ' => '<div id="site-resolver-settings"> ' ,
148
- '#suffix ' => '</div> ' ,
149
- ];
150
-
151
- $ site_resolver = $ entity ->getSiteResolver ();
152
- if ($ site_resolver instanceof ConfigurableSiteResolverInterface) {
153
- $ form ['configuration ' ] = [];
154
- $ subform_state = SubformState::createForSubform ($ form ['configuration ' ], $ form , $ form_state );
155
- $ form ['preview_mode ' ]['site_resolver_settings_container ' ]['configuration ' ] = $ site_resolver ->buildConfigurationForm ($ form ['configuration ' ], $ subform_state );
156
- }
157
-
158
174
$ form ['revalidation ' ] = [
159
175
'#title ' => $ this ->t ('On-demand Revalidation ' ),
160
176
'#description ' => $ this ->t ('Configure on-demand revalidation for the entity type. ' ),
@@ -204,6 +220,14 @@ public function submitId(array $form, FormStateInterface $form_state) {
204
220
$ form_state ->setRebuild ();
205
221
}
206
222
223
+ /**
224
+ * Handles submit call when preview mode is selected.
225
+ */
226
+ public function submitPreviewEnabled (array $ form , FormStateInterface $ form_state ) {
227
+ $ this ->entity = $ this ->buildEntity ($ form , $ form_state );
228
+ $ form_state ->setRebuild ();
229
+ }
230
+
207
231
/**
208
232
* Handles switching the id selector.
209
233
*/
@@ -223,7 +247,7 @@ public function submitSiteResolver(array $form, FormStateInterface $form_state)
223
247
* Handles switching the site resolver selector.
224
248
*/
225
249
public function ajaxReplaceSiteResolverSettingsForm ($ form , FormStateInterface $ form_state ) {
226
- return $ form ['preview_mode ' ][ ' site_resolver_settings_container ' ];
250
+ return $ form ['site_resolver_settings_container ' ];
227
251
}
228
252
229
253
/**
0 commit comments