You are here

function _webform_entity_print_form in Webform 6.x

Same name and namespace in other branches
  1. 8.5 modules/webform_entity_print/webform_entity_print.webform.inc \_webform_entity_print_form()

Build webform entity print form.

Parameters

array $element: The entity print element.

array $template_settings: Template settings.

array $export_type_settings: Export types settings.

array $default_template_settings: Default template settings.

array $default_export_type_settings: Default export types settings.

2 calls to _webform_entity_print_form()
webform_entity_print_webform_admin_third_party_settings_form_alter in modules/webform_entity_print/webform_entity_print.webform.inc
Implements hook_webform_admin_third_party_settings_form_alter().
webform_entity_print_webform_third_party_settings_form_alter in modules/webform_entity_print/webform_entity_print.webform.inc
Implements hook_webform_third_party_settings_form_alter().

File

modules/webform_entity_print/webform_entity_print.webform.inc, line 25
Integrates third party settings for the Webform Entity Print module.

Code

function _webform_entity_print_form(array &$element, array $template_settings, array $export_type_settings, array $default_template_settings = [], array $default_export_type_settings = []) {
  $element['webform_entity_print'] = [
    '#type' => 'details',
    '#title' => t('Entity print'),
    '#description' => t('Allows webform submissions to be converted to a PDF'),
  ];

  // Video.

  /** @var \Drupal\webform\WebformHelpManagerInterface $help_manager */
  $help_manager = \Drupal::service('webform.help_manager');
  $element['webform_entity_print']['help'] = [
    '#theme' => 'webform_help',
    '#info' => $help_manager
      ->getHelp('webform_entity_print'),
  ];

  // Template.
  $template_settings += [
    'header' => '',
    'footer' => '',
    'css' => '',
  ];
  $element['webform_entity_print']['template'] = [
    '#type' => 'details',
    '#title' => t('Template'),
  ];
  $element['webform_entity_print']['template']['header'] = [
    '#type' => 'webform_html_editor',
    '#title' => t('Header'),
    '#description' => $default_template_settings ? t('Enter custom header to be displayed above printed webform submissions.') : t('Enter custom header to be displayed above all printed webform submissions.'),
    '#default_value' => $template_settings['header'],
  ];
  $element['webform_entity_print']['template']['footer'] = [
    '#type' => 'webform_html_editor',
    '#title' => t('Footer'),
    '#default_value' => $template_settings['footer'],
    '#description' => $default_template_settings ? t('Enter custom footer to be displayed below printed webform submissions.') : t('Enter custom footer to be displayed below all printed webform submissions.'),
  ];
  $element['webform_entity_print']['template']['css'] = [
    '#type' => 'webform_codemirror',
    '#mode' => 'css',
    '#title' => t('CSS'),
    '#default_value' => $template_settings['css'],
    '#description' => $default_template_settings ? t('Enter custom print CSS to be attached to printed webform submissions.') : t('Enter custom print CSS to be attached to all printed webform submissions.'),
  ];

  /** @var \Drupal\webform\WebformTokenManagerInterface $token_manager */
  $token_manager = \Drupal::service('webform.token_manager');
  $element['webform_entity_print']['template']['token_tree_link'] = $token_manager
    ->buildTreeElement();

  // Export types.
  $export_types = _webform_entity_print_get_export_types();
  foreach ($export_types as $export_type => $definition) {
    $t_args = [
      '@label' => $definition['label'],
    ];
    $defaults = [
      'enabled' => FALSE,
      'link_text' => '',
      'link_attributes' => [],
    ];
    $default_settings = isset($default_export_type_settings[$export_type]) ? $default_export_type_settings[$export_type] : $defaults;
    $settings = isset($export_type_settings[$export_type]) ? $export_type_settings[$export_type] : [];
    $settings += $defaults;
    $states_trigger = '.js-webform_entity_print-' . $export_type;
    $element['webform_entity_print']['export_types'][$export_type] = [
      '#type' => 'details',
      '#title' => t('@label link', $t_args),
    ];
    $element['webform_entity_print']['export_types'][$export_type]['enabled'] = [
      '#type' => 'checkbox',
      '#title' => t('Enable @label link', $t_args),
      '#return_value' => TRUE,
      '#default_value' => $default_settings['enabled'] ? TRUE : $settings['enabled'],
      '#disabled' => $default_settings['enabled'],
      '#attributes' => [
        'class' => [
          'js-webform_entity_print-' . $export_type,
        ],
      ],
    ];
    $element['webform_entity_print']['export_types'][$export_type]['link_text'] = [
      '#type' => 'textfield',
      '#title' => t('@label link text', $t_args),
      '#description' => $default_settings['link_text'] ? t('Defaults to: %value', [
        '%value' => $default_settings['link_text'],
      ]) : '',
      '#default_value' => $settings['link_text'],
      '#states' => [
        'visible' => [
          $states_trigger => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
    if (empty($default_settings['link_text'])) {
      $element['webform_entity_print']['export_types'][$export_type]['link_text']['#states']['required'] = [
        $states_trigger => [
          'checked' => TRUE,
        ],
      ];
    }
    $element['webform_entity_print']['export_types'][$export_type]['link_attributes'] = [
      '#type' => 'webform_element_attributes',
      '#title' => t('@label link attributes', $t_args),
      '#default_value' => $settings['link_attributes'],
      '#states' => [
        'visible' => [
          $states_trigger => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
  }
}