ercore-8.x-1.20/modules/ercore_publication/ercore_publication.module
modules/ercore_publication/ercore_publication.module
<?php
/**
* @file
* Module file for the ERCore Publication module.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Ajax\HtmlCommand;
/**
* Implements hook_form_alter().
*/
function ercore_publication_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id === 'node_ercore_publication_form' || $form_id === 'node_ercore_publication_edit_form') {
// Submitted Date field #states.
$form['field_ercore_pb_submit_date']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_status"]' => [
['value' => '0'],
['value' => '1'],
['value' => '2'],
],
],
];
// Published Date field #states.
$form['field_ercore_pb_date']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
],
];
$form['field_ercore_pb_date']['widget']['0']['value']['#states'] = [
'required' => [
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
],
];
// Published Date field #states.
$form['field_previous_federal_repo']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Conference Proceedings'],
],
],
];
$form['field_previous_federal_repo']['widget']['0']['value']['#states'] = [
'required' => [
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
],
];
// Published Date field #states.
$form['field_federal_repository']['#states'] = [
'visible' => [
':input[name="field_previous_federal_repo"]' => ['value' => 'Yes'],
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Conference Proceedings'],
],
],
];
$form['field_federal_repository']['widget']['0']['value']['#states'] = [
'required' => [
':input[name="field_previous_federal_repo"]' => ['value' => 'Yes'],
],
];
// NSF field #states.
//$form['field_ercore_nsf']['#states'] = [
// 'visible' => [
// ':input[name="field_ercore_pb_status"]' => ['value' => '0'],
// ],
// 'required' => [
// ':input[name="field_ercore_pb_status"]' => ['value' => '0'],
// ],
//];
// Body field #states.
$form['body']['#weight'] = '9';
$form['body']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
],
'required' => [
':input[name="field_ercore_pb_status"]' => ['value' => '0'],
],
];
$doiWeight = '-1';
$form['doiText'] = [
'#type' => 'textfield',
'#title' => t('DOI'),
'#maxlength' => 64,
'#size' => 64,
'#weight' => $doiWeight,
'#description' => ('<p>ex. "10.1186/s13059-019-1837-6"</p> <b>Warning: most fields will be overwritten</b>')
];
$form['#attached']['library'][] = "ercore_publication/ercore_publication-library";
// foreach (array_keys($form['actions']) as $action) {
// if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
// $form['actions'][$action]['#submit'][] = 'ercore_publication_form_submit';
// }
// }
$form['button'] = [
'#type' => 'button',
'#title' => t('Populate Form'),
'#value' => t('Populate Form'),
'#weight' => $doiWeight,
'#attributes' => [
'onclick' => 'return false;'
],
'#attached' => array(
'library' => array(
'ercore_publication/ercore_publication-library',
),
),
];
$form['field_ercore_pb_journal_name']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
'required' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Newspaper Article'],
],
],
];
// Volume field #states.
$form['field_ercore_pb_journal_volume']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// Publisher field #states.
$form['field_ercore_pb_publisher']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// Title of Series field #states.
$form['field_ercore_pb_coll_title']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// Pages field #states.
$form['field_ercore_pb_journal_pages']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// DOI field #states.
$form['field_ercore_pb_doi']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// ISSN/ISBN field #states.
$form['field_ercore_pb_issn']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// ARK field #states.
$form['field_ercore_pb_ark']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
// Data field #states.
$form['field_ercore_pb_archived']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_data"]' => ['value' => '1'],
],
];
$form['field_ercore_pb_arch_name']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_archived"]' => ['value' => '1'],
],
];
$form['field_ercore_pb_arch_name']['widget']['0']['value']['#states'] = [
'required' => [
':input[name="field_ercore_pb_archived"]' => ['value' => '1'],
],
];
// $form_state->setCached(TRUE);
}
}
/**
* Implements hook_field_group_build_pre_render_alter().
*/
function ercore_publication_field_group_build_pre_render_alter(&$element) {
$forms = [
'node_ercore_publication_form',
'node_ercore_publication_edit_form',
];
if (isset($element['#form_id']) && in_array($element['#form_id'], $forms) && isset($element['group_ercore_pb_info'])) {
$element['group_ercore_pb_info']['#states'] = [
'visible' => [
':input[name="field_ercore_pb_type"]' => [
['value' => 'Journal Article'],
['value' => 'Book'],
['value' => 'Conference Proceedings'],
['value' => 'Magazine Article'],
['value' => 'Technical Report'],
['value' => 'Newspaper Article'],
],
],
];
}
}
