You are here

public function BlockUploadForm::buildForm in Block Upload 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

src/Form/BlockUploadForm.php, line 29

Class

BlockUploadForm
Configure book settings for this site.

Namespace

Drupal\block_upload\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, $node = NULL, $buid = 0) {
  $submit = FALSE;
  $field_name = \Drupal::state()
    ->get('block_upload_' . $buid . '_field') ?: '';
  $type_name = explode('.', $field_name)[0];
  $field_name = explode('.', $field_name)[1];
  $field_limit = FieldStorageConfig::loadByName($type_name, $field_name);
  $fields_info = FieldConfig::loadByName($type_name, $node
    ->getType(), $field_name);
  if ($node
    ->get($field_name)) {
    $field_files_exists = count($node
      ->get($field_name));
  }
  else {
    $field_files_exists = 0;
  }
  if (\Drupal::currentUser()
    ->hasPermission('block remove') && $field_files_exists > 0) {
    $title_remove_form = $this
      ->t('Remove files');
    $form['remove_files_title'] = [
      '#markup' => '<h3>' . $title_remove_form . '</h3>',
    ];
    $form['remove_files'] = BlockUploadBuild::blockUploadRemoveForm($field_limit, $node, $field_name);
    $submit = TRUE;
  }
  if ($field_limit
    ->getCardinality() > $field_files_exists || $field_limit
    ->getCardinality() == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) {
    $title_upload_form = t('Upload file');
    $form['upload_files_title'] = [
      '#markup' => '<h3>' . $title_upload_form . '</h3>',
    ];
    $form['block_upload_file'] = [
      '#type' => 'managed_file',
      '#upload_location' => BlockUploadBuild::blockUploadGetUploadDestination($fields_info),
      '#upload_validators' => BlockUploadBuild::blockUploadGetValidators($field_name, $fields_info, $node),
    ];
    $submit = TRUE;
    $settings = \Drupal::state()
      ->get('block_upload_' . $buid . '_settings') ?: [];
    if (isset($settings['alt']) && $settings['alt']) {
      $form['block_upload_' . $buid . '_alt'] = [
        '#type' => 'textfield',
        '#title' => t('Alt'),
      ];
    }
    if (isset($settings['title']) && $settings['title']) {
      $form['block_upload_' . $buid . '_title'] = [
        '#type' => 'textfield',
        '#title' => t('Title'),
      ];
    }
    if (isset($settings['desc']) && $settings['desc']) {
      $form['block_upload_' . $buid . '_desc'] = [
        '#type' => 'textfield',
        '#title' => t('Description'),
      ];
    }
  }
  else {
    $form[] = [
      '#type' => 'item',
      '#description' => t('Exceeded limit of files'),
    ];
  }
  if ($submit) {
    $module_path = drupal_get_path('module', 'block_upload');
    $form['#attached']['library'][] = 'block_upload/table-file';
    $form['block_upload_nid'] = [
      '#type' => 'textfield',
      '#access' => FALSE,
      '#value' => $node
        ->get('nid')
        ->getValue()['0']['value'],
    ];
    $form['block_upload_node_type'] = [
      '#type' => 'textfield',
      '#access' => FALSE,
      '#value' => $node->getType,
    ];
    $form['buid'] = [
      '#type' => 'value',
      '#value' => $buid,
    ];
    $form['submit'] = [
      '#type' => 'submit',
      '#value' => t('Save'),
    ];
  }
  return $form;
}