ercore-8.x-1.20/modules/ercore_collaboration/ercore_collaboration.module
modules/ercore_collaboration/ercore_collaboration.module
<?php
/**
* @file
* Hook implementations for the ERCore Collaborations module.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\CloseModalDialogCommand;
/**
* Implements hook_form_alter().
*/
function ercore_collaboration_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id === 'node_ercore_collaboration_edit_form' || $form_id === 'node_ercore_collaboration_form') {
$form['#validate'][] = 'ercore_collaboration_node_form_validate';
}
// If institution node form.
if ($form_id === 'node_ercore_institution_form') {
$modal = \Drupal::request()->get('modal');
// If Institution form is in modal.
if (isset($modal) && $modal === 'true') {
$form['actions']['submit']['#submit'][] = '_modal_form_institution_ajax_submit';
$form['actions']['submit']['#attributes']['class'][] = 'use-ajax-submit';
$form['#attached']['library'][] = 'ercore_collaboration/ercore-collaboration-modal.library';
}
}
}
/**
* Custom validation hook.
*/
function ercore_collaboration_node_form_validate(&$form, FormStateInterface $form_state) {
$value1 = $form_state->getValue('field_ercore_collaboration_start');
$value2 = $form_state->getValue('field_ercore_collaboration_end');
if (!empty($value2['0']['value']) && $value2['0']['value'] < $value1['0']['value']) {
$form_state->setErrorByName('field_ercore_collaboration_end', t('End date must be after start date.'));
}
}
/**
* Close the Institution Modal and leave use on page.
*
* @param array $form
* The form that will be altered.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* FormState Object.
*/
function _modal_form_institution_ajax_submit(array $form, FormStateInterface &$form_state) {
$response = new AjaxResponse();
$response->addCommand(new CloseModalDialogCommand());
$form_state->setResponse($response);
}
