public function WebformProtectedDownloadsSettingsForm::buildForm in Webform Protected Downloads 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/ WebformProtectedDownloadsSettingsForm.php, line 66
Class
- WebformProtectedDownloadsSettingsForm
- Class WebformProtectedDownloadsSettingsForm.
Namespace
Drupal\webform_protected_downloads\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
// Get current webform .
$webform = $this->routeMatch
->getParameter('webform');
// Get form settings.
$webform_settings = $webform
->getThirdPartySettings('webform_protected_downloads');
$options = [
'404' => $this
->t('404 page'),
'homepage' => $this
->t('Homepage with error message'),
'page_reload' => $this
->t('Form page with error message'),
'custom' => $this
->t('Custom page'),
];
$form['fieldset'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Webform protected files settings'),
];
// Create the form.
$form['fieldset']['enabled_protected_files'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Enable serving protected files after webform submit - <b>Must be checked for other options to work</b>'),
'#default_value' => isset($webform_settings['enabled_protected_files']) ? $webform_settings['enabled_protected_files'] : FALSE,
];
$form['fieldset']['container'] = [
'#type' => 'container',
'#states' => [
'invisible' => [
'input[name="enabled_protected_files"]' => [
'checked' => FALSE,
],
],
],
];
$form['fieldset']['container']['expire_after'] = [
'#type' => 'number',
'#title' => $this
->t('Expire after X minutes'),
'#default_value' => isset($webform_settings['expire_after']) ? $webform_settings['expire_after'] : '',
];
$form['fieldset']['container']['enabled_onetime'] = [
'#type' => 'checkbox',
'#title' => $this
->t('One time visit link'),
'#default_value' => isset($webform_settings['enabled_onetime']) ? $webform_settings['enabled_onetime'] : FALSE,
];
$form['fieldset']['container']['expired_link_page'] = [
'#type' => 'radios',
'#title' => $this
->t('Link expired page'),
'#description' => t('Select a page to be routed when link expires.'),
'#options' => $options,
'#default_value' => isset($webform_settings['expired_link_page']) ? $webform_settings['expired_link_page'] : FALSE,
];
$form['fieldset']['container']['custom_link_page'] = array(
'#type' => 'textfield',
'#title' => $this
->t('Custom link page'),
'#states' => array(
'visible' => array(
':input[name="expired_link_page"]' => array(
'value' => 'custom',
),
),
),
'#default_value' => isset($webform_settings['custom_link_page']) ? $webform_settings['custom_link_page'] : '',
);
$defaultTokenText = 'Download file';
$form['fieldset']['container']['token_text'] = [
'#type' => 'textfield',
'#title' => $this
->t('Token text title.'),
'#description' => $this
->t('This title will be shown when token is replaced, default title is @default', [
'@default' => $defaultTokenText,
]),
'#default_value' => isset($webform_settings['token_text']) ? $webform_settings['token_text'] : $defaultTokenText,
];
$form['fieldset']['container']['error_message'] = array(
'#type' => 'textfield',
'#title' => $this
->t('Error message'),
'#description' => $this
->t('Error message to display.'),
'#default_value' => $this
->t('File not found'),
);
$form['fieldset']['container']['protected_file'] = [
'#name' => 'protected_file',
'#type' => 'managed_file',
'#title' => $this
->t('Choose a file for protected download'),
'#multiple' => FALSE,
'#theme_wrappers' => [],
'#upload_validators' => [
'file_validate_extensions' => isset($webform_settings['protected_file_extensions']) ? [
$webform_settings['protected_file_extensions'],
] : [
'gif png jpg jpeg',
],
],
'#error_no_message' => TRUE,
'#upload_location' => 'private://webform_protected_downloads/',
'#default_value' => isset($webform_settings['protected_file']) ? $webform_settings['protected_file'] : NULL,
];
$form['fieldset']['container']['protected_file_extensions'] = [
'#type' => 'textfield',
'#title' => $this
->t('Valid File extensions'),
'#description' => $this
->t("Seperate extensions with ,"),
'#default_value' => isset($webform_settings['protected_file_extensions']) ? $webform_settings['protected_file_extensions'] : '',
];
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Save'),
'#button_type' => 'primary',
];
// Print an error if private folder is not set.
$private_folder = $this->fileSystem
->realpath('private://');
if (!$private_folder) {
$this
->messenger()
->addError($this
->t('Private files folder is not set! Please setup private folder to use this module correctly.'));
}
return $form;
}