public function BynderConfigurationForm::buildForm in Bynder 8.3
Same name and namespace in other branches
- 8 src/Form/BynderConfigurationForm.php \Drupal\bynder\Form\BynderConfigurationForm::buildForm()
- 8.2 src/Form/BynderConfigurationForm.php \Drupal\bynder\Form\BynderConfigurationForm::buildForm()
- 4.0.x src/Form/BynderConfigurationForm.php \Drupal\bynder\Form\BynderConfigurationForm::buildForm()
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 ConfigFormBase::buildForm
File
- src/
Form/ BynderConfigurationForm.php, line 106
Class
- BynderConfigurationForm
- Configure bynder to enable OAuth based access.
Namespace
Drupal\bynder\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->config('bynder.settings');
$form['consumer_key'] = [
'#required' => TRUE,
'#type' => 'textfield',
'#title' => $this
->t('Consumer key'),
'#parents' => [
'credentials',
'consumer_key',
],
'#default_value' => $config
->get('consumer_key'),
'#description' => $this
->t('Provide the consumer key. For more information check <a href="@url">Bynder knowlage base</a>.', [
'@url' => 'https://support.getbynder.com/hc/en-us/articles/208734785-Create-API-tokens-for-your-app',
]),
];
$form['consumer_secret'] = [
'#required' => TRUE,
'#type' => 'textfield',
'#title' => $this
->t('Consumer secret'),
'#parents' => [
'credentials',
'consumer_secret',
],
'#default_value' => $config
->get('consumer_secret'),
'#description' => $this
->t('Provide the consumer secret. For more information check <a href="@url">Bynder knowlage base</a>.', [
'@url' => 'https://support.getbynder.com/hc/en-us/articles/208734785-Create-API-tokens-for-your-app',
]),
];
$form['token'] = [
'#required' => TRUE,
'#type' => 'textfield',
'#title' => $this
->t('Token'),
'#parents' => [
'credentials',
'token',
],
'#default_value' => $config
->get('token'),
'#description' => $this
->t('Provide the token. For more information check <a href="@url">Bynder knowlage base</a>.', [
'@url' => 'https://support.getbynder.com/hc/en-us/articles/208734785-Create-API-tokens-for-your-app',
]),
];
$form['token_secret'] = [
'#required' => TRUE,
'#type' => 'textfield',
'#title' => $this
->t('Token secret'),
'#default_value' => $config
->get('token_secret'),
'#parents' => [
'credentials',
'token_secret',
],
'#description' => $this
->t('Provide the token secret. For more information check <a href="@url">Bynder knowlage base</a>.', [
'@url' => 'https://support.getbynder.com/hc/en-us/articles/208734785-Create-API-tokens-for-your-app',
]),
];
$form['account_domain'] = [
'#required' => TRUE,
'#type' => 'textfield',
'#title' => $this
->t('Account domain'),
'#default_value' => $config
->get('account_domain'),
'#parents' => [
'credentials',
'account_domain',
],
'#description' => $this
->t('Provide your Bynder account domain. It should be in the format "https://bynder-domain.extension". Change "bynder-domain.extension" with the domain provided by Bynder. For more information check <a href="@url">Bynder docs</a>.', [
'@url' => 'http://docs.bynder.apiary.io/#reference/',
]),
];
$form['debug'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Debug'),
'#description' => $this
->t('Check this setting if you want to have more verbose log messages.'),
'#default_value' => $config
->get('debug'),
];
$form['test'] = [
'#type' => 'fieldset',
'#title' => $this
->t('API connection test'),
'wrapper' => [
'#type' => 'html_tag',
'#tag' => 'div',
'#attributes' => [
'id' => 'connection-test',
],
'#attached' => [
'library' => [
'bynder/config_form',
],
],
],
'check' => [
'#type' => 'button',
'#limit_validation_errors' => [],
'#value' => $this
->t('Test connection'),
'#ajax' => [
'callback' => '::testConnectionAjaxCallback',
],
],
'test_connection' => [
'#type' => 'checkbox',
'#title' => $this
->t('Test connection before saving'),
'#description' => $this
->t("Uncheck to allow saving credentials even if connection to Bynder can't be established."),
'#default_value' => TRUE,
],
];
if ($derivatives = $this
->getDerivatives()) {
$form['derivatives'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Bynder image derivatives'),
'#description' => $this
->t('Bynder provides "mini", "webimage" and "thul" image sizes by default. Custom derivatives can be configured to better suit specific use-cases. Reload of derivatives can be triggered if any derivatives are missing from the list.'),
'derivatives_list' => [
'#theme' => 'item_list',
'#items' => array_merge([
'mini',
'webimage',
'thul',
], array_map(function ($item) {
return $item['prefix'];
}, $derivatives)),
],
'check' => [
'#type' => 'submit',
'#value' => $this
->t('Update cached information'),
'#submit' => [
[
static::class,
'submitReloadDerivatives',
],
],
],
];
}
if ($meta_properties = $this
->getMetaProperties()) {
$options = [];
foreach ($meta_properties as $key => $meta_property) {
if ($meta_property['options']) {
$options[$key] = bynder_get_applicable_label_translation($meta_property);
}
}
$form['usage_wrapper'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Usage restriction metadata'),
];
$form['usage_wrapper']['usage_metaproperty'] = [
'#type' => 'select',
'#options' => $options,
'#default_value' => $config
->get('usage_metaproperty'),
'#description' => $this
->t('Select metaproperty which is responsible for usage restriction. This is used to limit what assets can be used. If the information is not provided we assume royalty free.'),
'#empty_value' => 'none',
'#empty_option' => $this
->t('- None -'),
'#ajax' => [
'callback' => '::usageAjaxCallback',
'effect' => 'fade',
'event' => 'change',
'wrapper' => 'restrictions',
],
];
$options = [];
if ($form_state
->getValue('usage_metaproperty') !== NULL) {
foreach ($meta_properties[$form_state
->getValue('usage_metaproperty')]['options'] as $meta_property_option) {
$options[$meta_property_option['id']] = bynder_get_applicable_label_translation($meta_property_option);
}
}
elseif ($config
->get('usage_metaproperty') && $config
->get('usage_metaproperty') !== 'none') {
foreach ($meta_properties[$config
->get('usage_metaproperty')]['options'] as $meta_property_option) {
$options[$meta_property_option['id']] = bynder_get_applicable_label_translation($meta_property_option);
}
}
$form['usage_wrapper']['restrictions'] = [
'#type' => 'container',
'#attributes' => [
'id' => [
'restrictions',
],
],
'#tree' => TRUE,
];
if ($options) {
$form['usage_wrapper']['restrictions']['royalty_free'] = [
'#required' => TRUE,
'#title' => 'Royalty free restriction level',
'#type' => 'select',
'#options' => $options,
'#default_value' => $config
->get('restrictions.royalty_free'),
'#description' => $this
->t('Select metaproperty option for assets that can be used everywhere.'),
];
$form['usage_wrapper']['restrictions']['web_license'] = [
'#required' => TRUE,
'#title' => 'Web license restriction level',
'#type' => 'select',
'#options' => $options,
'#default_value' => $config
->get('restrictions.web_license'),
'#description' => $this
->t('Select metaproperty option for the assets that may be used only online.'),
];
$form['usage_wrapper']['restrictions']['print_license'] = [
'#required' => TRUE,
'#title' => 'Print license restriction level',
'#type' => 'select',
'#options' => $options,
'#default_value' => $config
->get('restrictions.print_license'),
'#description' => $this
->t('Select metaproperty option for the assets that may be used only for print.'),
];
}
}
else {
$form['usage_wrapper'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Usage restriction metadata'),
];
$form['usage_wrapper']['message'] = [
'#markup' => $this
->t('To set usage restriction metaproperty provide valid credentials first.'),
];
}
$form['metadata'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Local metadata'),
'#description' => $this
->t('Updates the Bynder media entities metadata information in a batch process.'),
];
$form['metadata']['update_frequency'] = [
'#type' => 'number',
'#step' => 1,
'#min' => 0,
'#title' => $this
->t('Metadata update frequency'),
'#default_value' => $config
->get('update_frequency'),
'#field_suffix' => $this
->t('seconds'),
'#description' => $this
->t('The update frequency to update local metadata information in seconds.'),
];
$form['metadata']['batch_update'] = [
'#type' => 'submit',
'#value' => $this
->t('Update local metadata'),
'#submit' => [
[
static::class,
'submitBatchMetadataUpdate',
],
],
];
$form['performance'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Performance settings'),
];
$form['performance']['cache_lifetime'] = [
'#type' => 'number',
'#step' => 1,
'#min' => 0,
'#title' => $this
->t('Cache life time'),
'#default_value' => $config
->get('cache_lifetime'),
'#description' => $this
->t('The maximum lifetime of cached media information in seconds.'),
];
$form['performance']['timeout'] = [
'#type' => 'number',
'#step' => 1,
'#min' => 1,
'#title' => $this
->t('Timeout'),
'#default_value' => $config
->get('timeout'),
'#description' => $this
->t('The timeout for all API requests to Bynder. Setting this too low might break uploading large files and other slow requests.'),
];
$form['performance']['use_remote_images'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Use remote image thumbnails of media and do not download them locally'),
'#description' => $this
->t('This can only be enabled if the <a href="@url">Remote Stream Wrapper module</a> is installed.', [
'@url' => 'https://www.drupal.org/project/remote_stream_wrapper',
]),
'#default_value' => $config
->get('use_remote_images'),
'#disabled' => !$this->moduleHandler
->moduleExists('remote_stream_wrapper'),
];
return parent::buildForm($form, $form_state);
}