function social_private_message_form_private_message_add_form_alter in Open Social 8.9
Same name and namespace in other branches
- 8 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.2 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.3 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.4 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.5 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.6 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.7 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 8.8 modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 10.3.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 10.0.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 10.1.x modules/social_features/social_private_message/social_private_message.module \social_private_message_form_private_message_add_form_alter()
- 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 66 - The Social Privagte Message module.
Code
function social_private_message_form_private_message_add_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$form['members']['widget']['target_id']['#description'] = t('The member(s) of the private message thread. Add multiple members by seperating them with a comma.');
// 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.');
// Determine if the form is an PMT edit form.
$form_is_edit_form = $form_state
->has('thread_members');
// 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']))) {
continue;
}
// Key must have submit in it.
if (strpos($key, 'submit-') === FALSE) {
continue;
}
$actions['#value'] = t('Send');
$actions['#submit'][] = 'social_private_message_redirect';
unset($actions['#ajax']);
if (!($form_is_edit_form && \Drupal::routeMatch()
->getRouteName() == 'entity.private_message_thread.canonical' && \Drupal::routeMatch()
->getParameter('private_message_thread')
->get('members')
->count() != count($form_state
->get('thread_members')))) {
continue;
}
$callbacks = $actions['#submit'];
$actions['#submit'] = [];
foreach ($callbacks as $callback) {
if ($callback == '::save') {
$actions['#submit'][] = '_social_private_message_members';
}
$actions['#submit'][] = $callback;
}
}
// 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';
// Add form class based on form type (create/edit).
if ($form_is_edit_form) {
$form_class = 'message__thread_create';
// In edit mode, remove the label from the message field.
$form['message']['widget'][0]['#title'] = '';
}
else {
$form_class = 'message__thread_edit';
}
$form['#attributes']['class'][] = $form_class;
}