public function EntityLegalDocumentForm::form in Entity Legal 3.0.x
Same name and namespace in other branches
- 8.2 src/Form/EntityLegalDocumentForm.php \Drupal\entity_legal\Form\EntityLegalDocumentForm::form()
- 8 src/Form/EntityLegalDocumentForm.php \Drupal\entity_legal\Form\EntityLegalDocumentForm::form()
- 4.0.x src/Form/EntityLegalDocumentForm.php \Drupal\entity_legal\Form\EntityLegalDocumentForm::form()
Gets the actual form array to be built.
Overrides EntityForm::form
See also
\Drupal\Core\Entity\EntityForm::processForm()
\Drupal\Core\Entity\EntityForm::afterBuild()
File
- src/
Form/ EntityLegalDocumentForm.php, line 97
Class
- EntityLegalDocumentForm
- Base form for contact form edit forms.
Namespace
Drupal\entity_legal\FormCode
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
$form['label'] = [
'#title' => $this
->t('Administrative label'),
'#type' => 'textfield',
'#default_value' => $this->entity
->label(),
'#required' => TRUE,
];
$form['id'] = [
'#type' => 'machine_name',
'#title' => $this
->t('Machine-readable name'),
'#required' => TRUE,
'#default_value' => $this->entity
->id(),
'#machine_name' => [
'exists' => '\\Drupal\\entity_legal\\Entity\\EntityLegalDocument::load',
],
'#disabled' => !$this->entity
->isNew(),
'#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
];
if (!in_array($this->operation, [
'add',
'clone',
])) {
$versions = $this->entity
->getAllVersions();
if ($this->operation == 'edit' && empty($versions)) {
\Drupal::messenger()
->addWarning(t('No versions for this document have been found. <a href=":add_link">Add a version</a> to use this document.', [
':add_link' => Url::fromRoute('entity.entity_legal_document_version.add_form', [
'entity_legal_document' => $this->entity
->id(),
])
->toString(),
]));
}
$header = [
'title' => $this
->t('Title'),
'created' => $this
->t('Created'),
'changed' => $this
->t('Updated'),
'operations' => $this
->t('Operations'),
];
$options = [];
/** @var \Drupal\entity_legal\Entity\EntityLegalDocumentVersion $version */
$published_version = NULL;
foreach ($versions as $version) {
$route_parameters = [
'entity_legal_document' => $this->entity
->id(),
];
// Use the default uri if this version is the current published version.
if ($version
->isPublished()) {
$published_version = $version
->id();
$route_name = 'entity.entity_legal_document.canonical';
}
else {
$route_name = 'entity.entity_legal_document_version.canonical';
$route_parameters['entity_legal_document_version'] = $version
->id();
}
$links['edit'] = [
'title' => $this
->t('Edit'),
'url' => Url::fromRoute('entity.entity_legal_document_version.edit_form', [
'entity_legal_document_version' => $version
->id(),
]),
];
if ($version
->isTranslatable()) {
try {
$links['translate'] = [
'title' => $this
->t('Translate'),
'url' => $version
->toUrl('drupal:content-translation-overview'),
];
} catch (EntityMalformedException $e) {
}
}
$operations = [
'#type' => 'operations',
'#links' => $links,
];
$options[$version
->id()] = [
'title' => Link::createFromRoute($version
->label(), $route_name, $route_parameters),
'created' => $version
->getFormattedDate('created'),
'changed' => $version
->getFormattedDate('changed'),
'operations' => render($operations),
];
}
// By default just show a simple overview for all entities.
$form['versions'] = [
'#type' => 'details',
'#title' => $this
->t('Current version'),
'#description' => $this
->t('The current version users must agree to. If requiring existing users to accept, those users will be prompted if they have not accepted this particular version in the past.'),
'#open' => TRUE,
'#tree' => FALSE,
];
$form_state
->set('published_version', $published_version);
$form['versions']['published_version'] = [
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#empty' => $this
->t('Create a document version to set up a default'),
'#multiple' => FALSE,
'#default_value' => $published_version,
];
}
$form['settings'] = [
'#type' => 'vertical_tabs',
'#weight' => 27,
];
$form['new_users'] = [
'#title' => $this
->t('New users'),
'#description' => $this
->t('Visit the <a href=":permissions">permissions</a> page to ensure that users can view the document.', [
':permissions' => Url::fromRoute('user.admin_permissions')
->toString(),
]),
'#type' => 'details',
'#group' => 'settings',
'#parents' => [
'settings',
'new_users',
],
'#tree' => TRUE,
];
$form['new_users']['require'] = [
'#title' => $this
->t('Require new users to accept this agreement on signup'),
'#type' => 'checkbox',
'#default_value' => $this->entity
->get('require_signup'),
];
$form['new_users']['require_method'] = [
'#title' => $this
->t('Present to user as'),
'#type' => 'select',
'#options' => $this
->getAcceptanceDeliveryMethodOptions('new_users'),
'#default_value' => $this->entity
->getAcceptanceDeliveryMethod(TRUE),
'#states' => [
'visible' => [
':input[name="settings[new_users][require]"]' => [
'checked' => TRUE,
],
],
],
];
$form['existing_users'] = [
'#title' => $this
->t('Existing users'),
'#description' => $this
->t('Visit the <a href=":permissions">permissions</a> page to configure which existing users these settings apply to.', [
':permissions' => Url::fromRoute('user.admin_permissions')
->toString(),
]),
'#type' => 'details',
'#group' => 'settings',
'#parents' => [
'settings',
'existing_users',
],
'#tree' => TRUE,
];
$form['existing_users']['require'] = [
'#title' => $this
->t('Require existing users to accept this agreement'),
'#type' => 'checkbox',
'#default_value' => $this->entity
->get('require_existing'),
];
$form['existing_users']['require_method'] = [
'#title' => $this
->t('Present to user as'),
'#type' => 'select',
'#options' => $this
->getAcceptanceDeliveryMethodOptions('existing_users'),
'#default_value' => $this->entity
->getAcceptanceDeliveryMethod(),
'#states' => [
'visible' => [
':input[name="settings[existing_users][require]"]' => [
'checked' => TRUE,
],
],
],
];
$form['title_pattern'] = [
'#type' => 'details',
'#title' => $this
->t('Title pattern'),
'#description' => $this
->t("Customize how the legal document title appears on the document's main page. You can use tokens to build the title."),
'#group' => 'settings',
];
$form['title_pattern']['title_pattern'] = [
'#type' => 'textfield',
'#title' => $this
->t('Pattern'),
'#default_value' => $this->entity
->get('settings')['title_pattern'],
'#parents' => [
'settings',
'title_pattern',
],
'#required' => TRUE,
];
$form['title_pattern']['token_help'] = [
'#theme' => 'token_tree_link',
'#token_types' => [
'entity_legal_document',
],
];
$this
->formPathSettings($form);
return $form;
}