You are here

function social_private_message_form_private_message_add_form_alter in Open Social 8

Same name and namespace in other branches
  1. 8.9 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  2. 8.2 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  3. 8.3 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  4. 8.4 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  5. 8.5 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  6. 8.6 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  7. 8.7 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  8. 8.8 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  9. 10.3.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  10. 10.0.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  11. 10.1.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
  12. 10.2.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()

Implements hook_form_FORMID_alter().

File

modules/social_features/social_private_message/social_private_message.module, line 57
The Social Privagte Message module.

Code

function social_private_message_form_private_message_add_form_alter(&$form, FormStateInterface $form_state, $form_id) {

  // Add CTRL/CMD + Enter is submit.
  $form['#attached']['library'][] = 'social_post/keycode-submit';
  $form['#attached']['library'][] = 'social_private_message/validator';
  $form['#attached']['drupalSettings']['social_private_message']['validator'] = t('Please select an item in the list.');

  // There's an alternative submit. We need to change its value.
  foreach ($form['actions'] as $key => &$actions) {

    // Must be pretty sure it's a submit button.
    if (is_array($actions) && isset($actions['#submit']) && is_array($actions['#submit'])) {

      // Key must have submit in it.
      if (strpos($key, 'submit-') !== FALSE) {
        $actions['#value'] = t('Send');
        $actions['#submit'][] = 'social_private_message_redirect';
        unset($actions['#ajax']);
      }
    }
  }

  // Alter the users widget.
  $form['members']['widget']['#required'] = TRUE;
  $form['members']['widget']['#description'] = '';

  // Add the required tag.
  $form['members']['widget']['#attributes']['required'] = 'required';

  // Unset the empty and anonymous option.
  unset($form['members']['widget']['#options']['0']);
  unset($form['members']['widget']['#options']['_none']);

  // Unset current user.
  unset($form['members']['widget']['#options'][Drupal::currentUser()
    ->id()]);

  // Alter the message widget.
  // Add the required tag.
  $form['message']['widget']['#attributes']['required'] = 'required';

  // Normal submit button shoud say 'Next'.
  $form['actions']['submit']['#value'] = t('Send');
  $form['actions']['submit']['#submit'][] = 'social_private_message_redirect';

  // Determine if the form is an PMT edit form.
  $form_is_edit_form = !is_null($form_state
    ->get('thread_members'));

  // Add form class based on form type (create/edit).
  $form_class = 'message__thread_edit';
  if ($form_is_edit_form) {
    $form_class = 'message__thread_create';
  }
  $form['#attributes']['class'][] = $form_class;
  if ($form_is_edit_form) {

    // In edit mode, remove the label from the message field.
    $form['message']['widget'][0]['#title'] = '';
  }
}