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\FormCode
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;
}