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'],
        ],
      ],
    ];
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc