1<?php 2 3/** 4 * @file 5 * Simpletest mock module for Ajax forms testing. 6 */ 7 8use Drupal\Core\Ajax\AddCssCommand; 9use Drupal\Core\Ajax\AfterCommand; 10use Drupal\Core\Ajax\AjaxResponse; 11use Drupal\Core\Ajax\AlertCommand; 12use Drupal\Core\Ajax\AnnounceCommand; 13use Drupal\Core\Ajax\AppendCommand; 14use Drupal\Core\Ajax\BeforeCommand; 15use Drupal\Core\Ajax\ChangedCommand; 16use Drupal\Core\Ajax\CssCommand; 17use Drupal\Core\Ajax\DataCommand; 18use Drupal\Core\Ajax\HtmlCommand; 19use Drupal\Core\Ajax\InsertCommand; 20use Drupal\Core\Ajax\InvokeCommand; 21use Drupal\Core\Ajax\PrependCommand; 22use Drupal\Core\Ajax\RemoveCommand; 23use Drupal\Core\Ajax\RestripeCommand; 24use Drupal\Core\Ajax\SettingsCommand; 25use Drupal\Core\Form\FormStateInterface; 26 27/** 28 * Ajax form callback: Selects 'after'. 29 */ 30function ajax_forms_test_advanced_commands_after_callback($form, FormStateInterface $form_state) { 31 $selector = '#after_div'; 32 33 $response = new AjaxResponse(); 34 $response->addCommand(new AfterCommand($selector, "This will be placed after")); 35 return $response; 36} 37 38/** 39 * Ajax form callback: Selects 'alert'. 40 */ 41function ajax_forms_test_advanced_commands_alert_callback($form, FormStateInterface $form_state) { 42 $response = new AjaxResponse(); 43 $response->addCommand(new AlertCommand('Alert')); 44 return $response; 45} 46 47/** 48 * Ajax form callback: Selects 'announce' with no priority specified. 49 */ 50function ajax_forms_test_advanced_commands_announce_callback($form, FormStateInterface $form_state) { 51 return (new AjaxResponse())->addCommand(new AnnounceCommand('Default announcement.')); 52} 53 54/** 55 * Ajax form callback: Selects 'announce' with 'polite' priority. 56 */ 57function ajax_forms_test_advanced_commands_announce_polite_callback($form, FormStateInterface $form_state) { 58 return (new AjaxResponse())->addCommand(new AnnounceCommand('Polite announcement.', 'polite')); 59} 60 61/** 62 * Ajax form callback: Selects 'announce' with 'assertive' priority. 63 */ 64function ajax_forms_test_advanced_commands_announce_assertive_callback($form, FormStateInterface $form_state) { 65 return (new AjaxResponse())->addCommand(new AnnounceCommand('Assertive announcement.', 'assertive')); 66} 67 68/** 69 * Ajax form callback: Selects 'announce' with two announce commands returned. 70 */ 71function ajax_forms_test_advanced_commands_double_announce_callback($form, FormStateInterface $form_state) { 72 return (new AjaxResponse())->addCommand(new AnnounceCommand('Assertive announcement.', 'assertive')) 73 ->addCommand(new AnnounceCommand('Another announcement.')); 74} 75 76/** 77 * Ajax form callback: Selects 'append'. 78 */ 79function ajax_forms_test_advanced_commands_append_callback($form, FormStateInterface $form_state) { 80 $selector = '#append_div'; 81 $response = new AjaxResponse(); 82 $response->addCommand(new AppendCommand($selector, "Appended text")); 83 return $response; 84} 85 86/** 87 * Ajax form callback: Selects 'before'. 88 */ 89function ajax_forms_test_advanced_commands_before_callback($form, FormStateInterface $form_state) { 90 $selector = '#before_div'; 91 $response = new AjaxResponse(); 92 $response->addCommand(new BeforeCommand($selector, "Before text")); 93 return $response; 94} 95 96/** 97 * Ajax form callback: Selects 'changed'. 98 */ 99function ajax_forms_test_advanced_commands_changed_callback($form, FormStateInterface $form_state) { 100 $response = new AjaxResponse(); 101 $response->addCommand(new ChangedCommand('#changed_div')); 102 return $response; 103} 104 105/** 106 * Ajax form callback: Selects 'changed' with asterisk marking inner div. 107 */ 108function ajax_forms_test_advanced_commands_changed_asterisk_callback($form, FormStateInterface $form_state) { 109 $response = new AjaxResponse(); 110 $response->addCommand(new ChangedCommand('#changed_div', '#changed_div_mark_this')); 111 return $response; 112} 113 114/** 115 * Ajax form callback: Selects 'css'. 116 */ 117function ajax_forms_test_advanced_commands_css_callback($form, FormStateInterface $form_state) { 118 $selector = '#css_div'; 119 $color = 'blue'; 120 121 $response = new AjaxResponse(); 122 $response->addCommand(new CssCommand($selector, ['background-color' => $color])); 123 return $response; 124} 125 126/** 127 * Ajax form callback: Selects 'data'. 128 */ 129function ajax_forms_test_advanced_commands_data_callback($form, FormStateInterface $form_state) { 130 $selector = '#data_div'; 131 $response = new AjaxResponse(); 132 $response->addCommand(new DataCommand($selector, 'testkey', 'testvalue')); 133 return $response; 134} 135 136/** 137 * Ajax form callback: Selects 'invoke'. 138 */ 139function ajax_forms_test_advanced_commands_invoke_callback($form, FormStateInterface $form_state) { 140 $response = new AjaxResponse(); 141 $response->addCommand(new InvokeCommand('#invoke_div', 'addClass', ['error'])); 142 return $response; 143} 144 145/** 146 * Ajax form callback: Selects 'html'. 147 */ 148function ajax_forms_test_advanced_commands_html_callback($form, FormStateInterface $form_state) { 149 $response = new AjaxResponse(); 150 $response->addCommand(new HtmlCommand('#html_div', 'replacement text')); 151 return $response; 152} 153 154/** 155 * Ajax form callback: Selects 'insert'. 156 */ 157function ajax_forms_test_advanced_commands_insert_callback($form, FormStateInterface $form_state) { 158 $response = new AjaxResponse(); 159 $response->addCommand(new InsertCommand('#insert_div', 'insert replacement text')); 160 return $response; 161} 162 163/** 164 * Ajax form callback: Selects 'prepend'. 165 */ 166function ajax_forms_test_advanced_commands_prepend_callback($form, FormStateInterface $form_state) { 167 $response = new AjaxResponse(); 168 $response->addCommand(new PrependCommand('#prepend_div', "prepended text")); 169 return $response; 170} 171 172/** 173 * Ajax form callback: Selects 'remove'. 174 */ 175function ajax_forms_test_advanced_commands_remove_callback($form, FormStateInterface $form_state) { 176 $response = new AjaxResponse(); 177 $response->addCommand(new RemoveCommand('#remove_text')); 178 return $response; 179} 180 181/** 182 * Ajax form callback: Selects 'restripe'. 183 */ 184function ajax_forms_test_advanced_commands_restripe_callback($form, FormStateInterface $form_state) { 185 $response = new AjaxResponse(); 186 $response->addCommand(new RestripeCommand('#restripe_table')); 187 return $response; 188} 189 190/** 191 * Ajax form callback: Selects 'settings'. 192 */ 193function ajax_forms_test_advanced_commands_settings_callback($form, FormStateInterface $form_state) { 194 $setting['ajax_forms_test']['foo'] = 42; 195 $response = new AjaxResponse(); 196 $response->addCommand(new SettingsCommand($setting)); 197 return $response; 198} 199 200/** 201 * Ajax callback for 'add_css'. 202 */ 203function ajax_forms_test_advanced_commands_add_css_callback($form, FormStateInterface $form_state) { 204 $response = new AjaxResponse(); 205 $response->addCommand(new AddCssCommand('my/file.css')); 206 return $response; 207} 208 209/** 210 * Ajax form callback: Selects the 'drivertext' element of the validation form. 211 */ 212function ajax_forms_test_validation_form_callback($form, FormStateInterface $form_state) { 213 \Drupal::messenger()->addStatus("ajax_forms_test_validation_form_callback invoked"); 214 \Drupal::messenger()->addStatus(t("Callback: drivertext=%drivertext, spare_required_field=%spare_required_field", ['%drivertext' => $form_state->getValue('drivertext'), '%spare_required_field' => $form_state->getValue('spare_required_field')])); 215 return ['#markup' => '<div id="message_area">ajax_forms_test_validation_form_callback at ' . date('c') . '</div>']; 216} 217 218/** 219 * Ajax form callback: Selects the 'drivernumber' element of the validation form. 220 */ 221function ajax_forms_test_validation_number_form_callback($form, FormStateInterface $form_state) { 222 \Drupal::messenger()->addStatus("ajax_forms_test_validation_number_form_callback invoked"); 223 \Drupal::messenger()->addStatus(t("Callback: drivernumber=%drivernumber, spare_required_field=%spare_required_field", ['%drivernumber' => $form_state->getValue('drivernumber'), '%spare_required_field' => $form_state->getValue('spare_required_field')])); 224 return ['#markup' => '<div id="message_area_number">ajax_forms_test_validation_number_form_callback at ' . date('c') . '</div>']; 225} 226 227/** 228 * AJAX form callback: Selects for the ajax_forms_test_lazy_load_form() form. 229 */ 230function ajax_forms_test_lazy_load_form_ajax($form, FormStateInterface $form_state) { 231 $build = [ 232 '#markup' => 'new content', 233 ]; 234 235 if ($form_state->getValue('add_files')) { 236 $build['#attached']['library'][] = 'system/admin'; 237 $build['#attached']['library'][] = 'system/drupal.system'; 238 $build['#attached']['drupalSettings']['ajax_forms_test_lazy_load_form_submit'] = 'executed'; 239 } 240 241 return $build; 242} 243