function contact_storage_entity_type_alter in Contact Storage 8
Implements hook_entity_type_alter().
1 call to contact_storage_entity_type_alter()
- contact_storage_install in ./
contact_storage.install - Implements hook_install().
File
- ./
contact_storage.module, line 338 - Contains main module logic.
Code
function contact_storage_entity_type_alter(array &$entity_types) {
/* @var $entity_types \Drupal\Core\Entity\EntityTypeInterface[] */
// Set the controller class for nodes to an alternate implementation of the
// Drupal\Core\Entity\EntityStorageInterface interface.
$entity_types['contact_message']
->setStorageClass('\\Drupal\\Core\\Entity\\Sql\\SqlContentEntityStorage');
$keys = $entity_types['contact_message']
->getKeys();
$keys['id'] = 'id';
$keys['label'] = 'subject';
$entity_types['contact_message']
->set('entity_keys', $keys);
$entity_types['contact_message']
->set('base_table', 'contact_message');
// Add edit and delete forms.
$entity_types['contact_message']
->setFormClass('edit', '\\Drupal\\contact_storage\\MessageEditForm');
$entity_types['contact_message']
->setFormClass('delete', '\\Drupal\\Core\\Entity\\ContentEntityDeleteForm');
$entity_types['contact_message']
->setFormClass('delete-multiple-confirm', 'Drupal\\Core\\Entity\\Form\\DeleteMultipleForm');
// Add clone form for messages.
$entity_types['contact_form']
->setFormClass('clone', '\\Drupal\\contact_storage\\Form\\ContactFormCloneForm');
// Allow edit/delete links in list builder.
$entity_types['contact_message']
->setLinkTemplate('collection', '/admin/structure/contact/messages');
$entity_types['contact_message']
->setLinkTemplate('canonical', '/admin/structure/contact/messages/{contact_message}');
$entity_types['contact_message']
->setLinkTemplate('edit-form', '/admin/structure/contact/messages/{contact_message}/edit');
$entity_types['contact_message']
->setLinkTemplate('delete-form', '/admin/structure/contact/messages/{contact_message}/delete');
$entity_types['contact_message']
->setLinkTemplate('delete-multiple-form', '/admin/structure/contact/messages/delete');
// Add clone link for forms.
$entity_types['contact_form']
->setLinkTemplate('clone-form', '/admin/structure/contact/manage/{contact_form}/clone');
// Define the entity route provider.
$route_providers = $entity_types['contact_message']
->getRouteProviderClasses();
$route_providers['html'] = '\\Drupal\\contact_storage\\ContactRouteProvider';
$entity_types['contact_message']
->setHandlerClass('route_provider', $route_providers);
$entity_types['contact_form']
->setHandlerClass('route_provider', $route_providers);
// @todo Replace with access control handler when not enough.
$entity_types['contact_message']
->set('admin_permission', 'administer contact forms');
// Integrate with Views.
$entity_types['contact_message']
->setHandlerClass('views_data', '\\Drupal\\contact_storage\\MessageViewsData');
$entity_types['contact_message']
->setListBuilderClass('\\Drupal\\Core\\Entity\\EntityListBuilder');
$entity_types['contact_form']
->setViewBuilderClass('\\Drupal\\contact_storage\\ContactFormViewBuilder');
// If the body of the message should be sent as HTML.
if (\Drupal::config('contact_storage.settings')
->get('send_html')) {
$entity_types['contact_message']
->setViewBuilderClass('Drupal\\contact_storage\\ContactMessageViewBuilder');
}
$keys = $entity_types['contact_form']
->getKeys();
$keys['status'] = 'status';
$entity_types['contact_form']
->set('entity_keys', $keys);
// Handler classes and templates for the Enable and Disable options.
$entity_types['contact_form']
->setFormClass('disable', ContactFormDisableForm::class)
->setFormClass('enable', ContactFormEnableForm::class)
->setLinkTemplate('enable', '/admin/structure/contact/view/{contact_form}/enable')
->setLinkTemplate('disable', '/admin/structure/contact/view/{contact_form}/disable');
}