diff --git a/core/modules/contact/config/install/contact.settings.yml b/core/modules/contact/config/install/contact.settings.yml index f4ae0c2..fe8a59b 100644 --- a/core/modules/contact/config/install/contact.settings.yml +++ b/core/modules/contact/config/install/contact.settings.yml @@ -3,3 +3,4 @@ flood: limit: 5 interval: 3600 user_default_enabled: true +contact_default_scope: 0 diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module index 1f479f2..74a96c4 100644 --- a/core/modules/contact/contact.module +++ b/core/modules/contact/contact.module @@ -220,10 +220,24 @@ function contact_form_user_admin_settings_alter(&$form, FormStateInterface $form ); $form['contact']['contact_default_status'] = array( '#type' => 'checkbox', - '#title' => t('Enable the personal contact form by default for new users'), - '#description' => t('Changing this setting will not affect existing users.'), + '#title' => t('Enable the personal contact form by default.'), '#default_value' => \Drupal::configFactory()->getEditable('contact.settings')->get('user_default_enabled'), ); + $form['contact']['contact_default_scope'] = array( + '#type' => 'radios', + '#title' => '', + '#default_value' => \Drupal::configFactory()->getEditable('contact.settings')->get('contact_default_scope'), + '#options' => array( + t('For new users only.'), + t('For new and existing users.') + ), + '#states' => array( + 'visible' => array( + ':input[name="contact_default_status"]' => array('checked' => TRUE), + ), + ), + ); + // Add submit handler to save contact configuration. $form['#submit'][] = 'contact_form_user_admin_settings_submit'; } diff --git a/core/modules/contact/src/Access/ContactPageAccess.php b/core/modules/contact/src/Access/ContactPageAccess.php index 6b78784..f0e6904 100644 --- a/core/modules/contact/src/Access/ContactPageAccess.php +++ b/core/modules/contact/src/Access/ContactPageAccess.php @@ -94,7 +94,7 @@ public function access(UserInterface $user, AccountInterface $account) { // configured default is disabled. $contact_settings = $this->configFactory->get('contact.settings'); $access->cacheUntilConfigurationChanges($contact_settings); - if (!isset($account_data) && !$contact_settings->get('user_default_enabled')) { + if (!isset($account_data) && !$contact_settings->get('user_default_enabled') && $contact_settings->get('contact_default_scope')) { return $access; }