function _webform_entity_print_webform_submission_links in Webform 6.x
Same name and namespace in other branches
- 8.5 modules/webform_entity_print/webform_entity_print.module \_webform_entity_print_webform_submission_links()
Build Webform Entity Print links.
Parameters
array &$build: A renderable array representing the entity content.
\Drupal\Core\Entity\EntityInterface $entity: The entity object being rendered.
\Drupal\Core\Entity\Display\EntityViewDisplayInterface $display: The entity view display holding the display options configured for the entity components.
1 call to _webform_entity_print_webform_submission_links()
- webform_entity_print_webform_submission_view_alter in modules/
webform_entity_print/ webform_entity_print.module - Implements hook_ENTITY_TYPE_view_alter() for webform_submission entities.
File
- modules/
webform_entity_print/ webform_entity_print.module, line 134 - Provides Entity Print (PDF) integration.
Code
function _webform_entity_print_webform_submission_links(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
$view_mode = $display
->getMode();
$export_types = \Drupal::service('plugin.manager.entity_print.export_type')
->getDefinitions();
$access_manager = \Drupal::accessManager();
/** @var \Drupal\webform\WebformThirdPartySettingsManagerInterface $third_party_settings_manager */
$third_party_settings_manager = \Drupal::service('webform.third_party_settings_manager');
$debug = $third_party_settings_manager
->getThirdPartySetting('webform_entity_print', 'debug');
$default_export_type_settings = $third_party_settings_manager
->getThirdPartySetting('webform_entity_print', 'export_types') ?: [];
$webform_export_type_settings = $entity
->getWebform()
->getThirdPartySetting('webform_entity_print', 'export_types') ?: [];
$print_links = [];
$debug_links = [];
foreach ($export_types as $export_type => $definition) {
// Set default export type settings.
$webform_export_type_settings += [
$export_type => [],
];
$default_export_type_settings += [
$export_type => [],
];
// Get settings from webform and global settings.
$export_settings = array_filter($webform_export_type_settings[$export_type]) + $default_export_type_settings[$export_type] + [
'link_text' => '',
'link_attributes' => [],
];
// Skip if export type is not enabled.
if (empty($export_settings['enabled']) || empty($export_settings['link_text'])) {
continue;
}
$key = 'webform_entity_print_view_' . $export_type;
$route_params = [
'entity_type' => $entity
->getEntityTypeId(),
'entity_id' => $entity
->id(),
'export_type' => trim($export_type, '_engine'),
];
$route_options = [
'query' => [
'view_mode' => $view_mode,
],
];
// Attach the URL's token query parameter used to grant view permission.
$token = \Drupal::request()
->get('token');
if ($token && $token === $entity
->getToken()) {
$route_options['query']['token'] = $token;
}
$link_attributes = $export_settings['link_attributes'];
$link_attributes += [
'class' => [],
];
$link_attributes['class'][] = 'webform-entity-print-link';
$link_attributes['class'][] = Html::getClass('webform-entity-print-link-' . $export_type);
$print_links[$key] = [
'#type' => 'link',
'#title' => $export_settings['link_text'],
'#export_type' => $export_type,
'#url' => Url::fromRoute('entity_print.view', $route_params, $route_options),
'#attributes' => $link_attributes,
'#access' => $access_manager
->checkNamedRoute('entity_print.view', $route_params, NULL, TRUE),
];
if ($debug) {
$debug_links[$key] = [
'#type' => 'link',
'#title' => $definition['label'],
'#export_type' => $export_type,
'#url' => Url::fromRoute('entity_print.view.debug', $route_params, $route_options),
'#access' => $access_manager
->checkNamedRoute('entity_print.view', $route_params, NULL, TRUE),
'#prefix' => $debug_links ? ' | ' : '',
];
}
}
if ($print_links) {
$build['webform_entity_print'] = [
'#type' => 'actions',
'#attributes' => [
'class' => [
'webform-entity-print-links',
],
],
] + $print_links;
}
if ($debug_links) {
$build['webform_entity_print_debug'] = [
'#suffix' => '<p>',
'#prefix' => '</p>',
'title' => [
'#markup' => '<strong>' . t('Debug') . '</strong>',
'#suffix' => ': ',
],
] + $debug_links;
}
}