Commit e0df8283 authored by Jacob Rockowitz's avatar Jacob Rockowitz
Browse files

Issue #2993327: Provide Default View to Override Submission Results Tab.

parent 5025e3b4
Loading
Loading
Loading
Loading
+22 −0
Changes for config/schema/webform.entity.webform.schema.yml: 22 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -149,6 +149,28 @@ webform.webform.*:
        submission_log:
          type: boolean
          label: 'Submission logging'
        submission_views:
          type: sequence
          label: 'Submission views'
          sequence:
            type: mapping
            label:  'Submission view'
            mapping:
              title:
                type: text
                label: 'Title'
              view:
                type: string
                label: 'View name / Display ID'
              routes:
                type: sequence
                label: 'Apply to'
                sequence:
                  type: string
                  label: 'Route'
        submission_views_replace:
          type: boolean
          label: 'Submission views replace default results table'
        submission_user_columns:
          type: sequence
          label: 'Submission user columns'
+7 −0
Changes for includes/webform.install.update.inc: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2514,3 +2514,10 @@ function webform_update_8139() {
  $help_manager = \Drupal::service('webform.help_manager');
  $help_manager->addNotification(__FUNCTION__, $build, 'warning');
}

/**
 * Issue #2993327: Provide Default View to Override Submission Results Tab.
 */
function webform_update_8140() {
  _webform_update_webform_settings();
}
+22 −3
Changes for src/Element/WebformSubmissionViews.php: 22 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ class WebformSubmissionViews extends WebformMultiple {
  public static function processWebformMultiple(&$element, FormStateInterface $form_state, &$complete_form) {
    $element['#key'] = 'name';
    $element['#header'] = TRUE;
    $element['#empty_items'] = 0;
    $element['#min_items'] = 1;

    // Get view options.
    $view_options = [];
@@ -54,16 +56,30 @@ class WebformSubmissionViews extends WebformMultiple {

    // Build element.
    $element['#element'] = [
      'name_title' => [
        '#type' => 'container',
        '#title' => t('Name / Title'),
        'name' => [
          '#type' => 'textfield',
          '#title' => t('Name'),
        '#size' => 12,
          '#title_display' => 'invisible',
          '#placeholder' => t('Enter name…'),
          '#size' => 20,
          '#pattern' => '^[a-z0-9_]+$',
          '#error_no_message' => TRUE,
        ],
        'title' => [
          '#type' => 'textfield',
          '#title' => t('Title'),
          '#title_display' => 'invisible',
          '#placeholder' => t('Enter title…'),
          '#size' => 20,
          '#error_no_message' => TRUE,
        ],
      ],
      'view' => [
        '#type' => 'select',
        '#title' => t('View name / display id'),
        '#title' => t('View name / Display id'),
        '#options' => $view_options,
        '#error_no_message' => TRUE,
      ],
@@ -86,7 +102,7 @@ class WebformSubmissionViews extends WebformMultiple {
    parent::validateWebformMultiple($element, $form_state, $complete_form);
    $items = NestedArray::getValue($form_state->getValues(), $element['#parents']);
    foreach ($items as $name => &$item) {
      $item['routes'] = array_filter($item['routes']);
      $item['routes'] = array_values(array_filter($item['routes']));

      // Remove empty view references.
      if ($name === '' && empty($item['view']) && empty($item['routes'])) {
@@ -97,6 +113,9 @@ class WebformSubmissionViews extends WebformMultiple {
      if ($name === '') {
        $form_state->setError($element, t('Name is required.'));
      }
      if (empty($item['title'])) {
        $form_state->setError($element, t('Title is required.'));
      }
      if (empty($item['view'])) {
        $form_state->setError($element, t('View name/display id is required.'));
      }
+2 −0
Changes for src/Entity/Webform.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -898,6 +898,8 @@ class Webform extends ConfigEntityBundleBase implements WebformInterface {
      'form_login_message' => '',
      'submission_label' => '',
      'submission_log' => FALSE,
      'submission_views' => [],
      'submission_views_replace' => FALSE,
      'submission_user_columns' => [],
      'submission_user_duplicate' => FALSE,
      'submission_login' => FALSE,
+20 −0
Changes for src/EntitySettings/WebformEntitySettingsSubmissionsForm.php: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@ class WebformEntitySettingsSubmissionsForm extends WebformEntitySettingsBaseForm
      '#type' => 'checkbox',
      '#title' => $this->t('Allow users to duplicate previous submissions'),
      '#description' => $this->t('If checked, users will be able to duplicate their previous submissions.'),
      '#return_value' => TRUE,
      '#default_value' => $settings['submission_user_duplicate'],
    ];
    $form['submission_user_settings']['submission_columns'] = [
@@ -529,6 +530,25 @@ class WebformEntitySettingsSubmissionsForm extends WebformEntitySettingsBaseForm
    ];
    $form['autofill_settings']['autofill_container']['token_tree_link'] = $this->tokenManager->buildTreeElement();

    // Submission views.
    $form['views_settings'] = [
      '#type' => 'details',
      '#title' => $this->t('Views settings'),
      '#open' => TRUE,
    ];
    $form['views_settings']['submission_views'] = [
      '#type' => 'webform_submission_views',
      '#title' => $this->t('Submission views'),
      '#title_display' => 'invisible',
      '#default_value' => $settings['submission_views'],
    ];
    $form['views_settings']['submission_views_replace'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Replace the default results table with views.'),
      '#description' => $this->t('If checked, when submission views are available, they will completely replace the default results table.'),
      '#return_value' => TRUE,
    ];

    $this->tokenManager->elementValidate($form);

    return parent::form($form, $form_state);