@@ -107,6 +107,36 @@ public function form(array $form, FormStateInterface $form_state) {
107107 ],
108108 ];
109109
110+ $ form ['site_resolver ' ] = [
111+ '#title ' => $ this ->t ('Plugin ' ),
112+ '#description ' => $ this ->t ('Select a plugin to use when validating the draft url 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+
110140 $ form ['settings_container ' ] = [
111141 '#type ' => 'container ' ,
112142 '#prefix ' => '<div id="settings-container"> ' ,
@@ -126,35 +156,21 @@ public function form(array $form, FormStateInterface $form_state) {
126156 '#group ' => 'settings ' ,
127157 ];
128158
129- $ form ['draft_mode ' ]['site_resolver ' ] = [
130- '#title ' => $ this ->t ('Plugin ' ),
131- '#description ' => $ this ->t ('Select a plugin to use when validating the draft url 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 ['draft_mode ' ]['preview_enabled ' ] = [
160+ '#title ' => $ this ->t ('Enabled ' ),
161+ '#description ' => $ this ->t ('Enable draft mode. ' ),
162+ '#type ' => 'checkbox ' ,
163+ '#default_value ' => $ entity ->isPreviewEnabled (),
164+ '#limit_validation_errors ' => [['preview_enabled ' ]],
165+ '#submit ' => ['::submitPreviewEnabled ' ],
137166 '#executes_submit_callback ' => TRUE ,
138167 '#ajax ' => [
139- 'callback ' => '::ajaxReplaceSiteResolverSettingsForm ' ,
140- 'wrapper ' => 'site-resolver- settings ' ,
168+ 'callback ' => '::ajaxReplaceSettingsForm ' ,
169+ 'wrapper ' => 'settings-container ' ,
141170 'method ' => 'replace ' ,
142171 ],
143172 ];
144173
145- $ form ['draft_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 ['draft_mode ' ]['site_resolver_settings_container ' ]['configuration ' ] = $ site_resolver ->buildConfigurationForm ($ form ['configuration ' ], $ subform_state );
156- }
157-
158174 $ form ['revalidation ' ] = [
159175 '#title ' => $ this ->t ('On-demand Revalidation ' ),
160176 '#description ' => $ this ->t ('Configure on-demand revalidation for the entity type. ' ),
@@ -204,6 +220,14 @@ public function submitId(array $form, FormStateInterface $form_state) {
204220 $ form_state ->setRebuild ();
205221 }
206222
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+
207231 /**
208232 * Handles switching the id selector.
209233 */
0 commit comments