You are here

public function FileActionForm::buildForm in Ubercart 8.4

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

uc_file/src/Form/FileActionForm.php, line 52

Class

FileActionForm
Form builder for file products admin.

Namespace

Drupal\uc_file\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {

  //    $this->moduleHandler->loadInclude('uc_file', 'inc', 'uc_file.admin');

  //if ($form_state->get('step') == UC_FILE_FORM_ACTION) {

  //  return $form + \Drupal::formBuilder()->buildForm('Drupal\uc_file\Form\ActionForm', $form, $form_state);

  //}

  //else {

  // Refresh our file list before display.
  uc_file_refresh();

  // Rebuilds uc_file table from directory contents! I sure hope it's smart about it...
  // Render everything.
  //  return $form + \Drupal::formBuilder()->buildForm('Drupal\uc_file\Form\ShowForm', $form, $form_state);

  //}
  $form['#attached']['library'][] = 'uc_file/uc_file.styles';
  $form['help'] = [
    '#prefix' => '<p>',
    '#markup' => $this
      ->t('File downloads can be attached to any Ubercart product as a product feature. For security reasons the <a href=":download_url">file downloads directory</a> is separated from the Drupal <a href=":file_url">file system</a>. Below is the list of files (and their associated Ubercart products, if any) that can be used for file downloads.', [
      ':download_url' => Url::fromRoute('uc_product.settings', [], [
        'query' => [
          'destination' => 'admin/store/products/files',
        ],
      ])
        ->toString(),
      ':file_url' => Url::fromRoute('system.file_system_settings')
        ->toString(),
    ]),
    '#suffix' => '<p>',
  ];
  $form['uc_file_action'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('File options'),
  ];

  // Set our default actions.
  $file_actions = [
    'uc_file_upload' => $this
      ->t('Upload file(s)'),
    'uc_file_delete' => $this
      ->t('Delete file(s)'),
  ];

  // Check if any hook_uc_file_action('info', $args) are implemented.
  foreach ($this->moduleHandler
    ->getImplementations('uc_file_action') as $module) {
    $name = $module . '_uc_file_action';
    $result = $name('info', NULL);
    if (is_array($result)) {
      foreach ($result as $key => $action) {
        if ($key != 'uc_file_delete' && $key != 'uc_file_upload') {
          $file_actions[$key] = $action;
        }
      }
    }
  }
  $form['uc_file_action']['container'] = [
    '#type' => 'container',
    '#attributes' => [
      'class' => [
        'duration',
      ],
    ],
  ];
  $form['uc_file_action']['container']['action'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Action'),
    '#options' => $file_actions,
  ];
  $form['uc_file_actions']['container']['actions'] = [
    '#type' => 'actions',
  ];
  $form['uc_file_action']['container']['actions']['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Perform action'),
  ];
  return $form;
}