public function SettingsForm::buildForm in AJAX Comments 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 ConfigFormBase::buildForm
File
- src/
Form/ SettingsForm.php, line 91
Class
- SettingsForm
- Configure 'ajax comments' settings for this site.
Namespace
Drupal\ajax_comments\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->config('ajax_comments.settings');
$field_list = $this->entityTypeManager
->getStorage('field_storage_config')
->loadMultiple();
$field_ui_exists = $this->moduleHandler
->moduleExists('field_ui');
$description = $field_ui_exists ? $this
->t('These entity types and bundles have comment fields. You can enable or disable Ajax Comments on the field display settings. Click the links to visit the field display settings edit forms. Ajax Comments is enabled by default on all comment fields.') : $this
->t('These entity types and bundles have comment fields. You can enable or disable Ajax Comments on the field display settings. Enable the Field UI module to edit the field display settings. Ajax Comments is enabled by default on all comment fields.');
$form['entity_bundles'] = [
'#type' => 'fieldset',
'#title' => t("Enable Ajax Comments on the comment fields' display settings"),
'#description' => $description,
];
$links = [];
foreach ($field_list as $field_storage_config) {
if ($field_storage_config
->getType() === 'comment') {
$entity_type_id = $field_storage_config
->getTargetEntityTypeId();
/** @var \Drupal\Core\Entity\ContentEntityTypeInterface $entity_type */
$entity_type = $this->entityTypeManager
->getDefinition($entity_type_id);
// Load label info for the bundles of entity type $entity_type_id.
$bundle_info = $this->entityTypeBundleInfo
->getBundleInfo($entity_type_id);
// Load a list of bundles that use the current field configuration.
$bundles = $field_storage_config
->getBundles();
foreach ($bundles as $bundle) {
// Create the link label.
$bundle_label = $bundle_info[$bundle]['label'];
$entity_type_label = $entity_type
->getLabel()
->render();
$label = $entity_type_label . ': ' . $bundle_label;
// Create the render array for the link to edit the display mode.
if ($field_ui_exists) {
$links[$entity_type_id . '.' . $bundle] = [
'#type' => 'link',
'#title' => $label,
'#url' => Url::fromRoute('entity.entity_view_display.' . $entity_type_id . '.default', FieldUI::getRouteBundleParameter($entity_type, $bundle)),
];
}
else {
$links[$entity_type_id . '.' . $bundle] = [
'#markup' => $label,
];
}
}
}
}
$form['entity_bundles']['links'] = [
'#theme' => 'item_list',
'#list_type' => 'ul',
'#items' => $links,
];
$form['notify'] = [
'#title' => $this
->t('Add notification message when comment posted'),
'#type' => 'checkbox',
'#default_value' => $config
->get('notify'),
];
$form['enable_scroll'] = [
'#title' => $this
->t('Enable scrolling events'),
'#type' => 'checkbox',
'#default_value' => $config
->get('enable_scroll'),
];
$form['reply_autoclose'] = [
'#title' => t('Autoclose any opened reply forms'),
'#type' => 'checkbox',
'#default_value' => $config
->get('reply_autoclose'),
];
return parent::buildForm($form, $form_state);
}