From c9d0cd29fbfffa90d9518a93c8856ceebf28f166 Mon Sep 17 00:00:00 2001
From: the_glitch <the_glitch@3377240.no-reply.drupal.org>
Date: Fri, 16 Oct 2020 16:18:15 -0600
Subject: [PATCH] Issue #3173381 by the_glitch, owenbush: Series Type Manage
 Form Display - Show/Hide 'Enable Wailing List' option

---
 .../recurring_events_registration.schema.yml  |  8 ++++
 .../FieldWidget/EventRegistrationWidget.php   | 45 ++++++++++++++++++-
 2 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/modules/recurring_events_registration/config/schema/recurring_events_registration.schema.yml b/modules/recurring_events_registration/config/schema/recurring_events_registration.schema.yml
index dfc0a0c4..a3f8b1d6 100644
--- a/modules/recurring_events_registration/config/schema/recurring_events_registration.schema.yml
+++ b/modules/recurring_events_registration/config/schema/recurring_events_registration.schema.yml
@@ -80,3 +80,11 @@ recurring_events_registration.registrant.config:
     series_modification_notification_body:
       type: string
       label: 'The email body for the series modification emails'
+
+field.widget.settings.event_registration:
+  type: mapping
+  label: 'Recurring Events Show Enable Waitlist'
+  mapping:
+    show_enable_waitlist:
+      type: boolean
+      label: 'Enable Waiting List'
diff --git a/modules/recurring_events_registration/src/Plugin/Field/FieldWidget/EventRegistrationWidget.php b/modules/recurring_events_registration/src/Plugin/Field/FieldWidget/EventRegistrationWidget.php
index a2d8f183..ef37e935 100644
--- a/modules/recurring_events_registration/src/Plugin/Field/FieldWidget/EventRegistrationWidget.php
+++ b/modules/recurring_events_registration/src/Plugin/Field/FieldWidget/EventRegistrationWidget.php
@@ -22,6 +22,45 @@ class EventRegistrationWidget extends DateRangeDefaultWidget {
 
   use StringTranslationTrait;
 
+  /**
+   * {@inheritdoc}
+   */
+  public static function defaultSettings() {
+    return [
+      'show_enable_waitlist' => TRUE,
+    ] + parent::defaultSettings();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsForm(array $form, FormStateInterface $form_state) {
+    $element['show_enable_waitlist'] = [
+      '#type' => 'radios',
+      '#options' => [
+        '1' => $this->t('Show'),
+        '0' => $this->t('Hide')
+      ],
+      '#title' => $this->t('Enable Waiting List'),
+      '#default_value' => $this->getSetting('show_enable_waitlist'),
+      '#description' => $this->t('This will show/hide the "Enable Waiting List" checkbox in the Add/Edit Series form')
+    ];
+
+    return $element;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function settingsSummary() {
+    $summary = [];
+
+    $enable_waitlist = $this->getSetting('show_enable_waitlist') ? $this->t('On') : $this->t('Off');
+    $summary[] = $this->t('Enable Waiting list is: @value', array('@value' => $enable_waitlist));
+
+    return $summary;
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -231,17 +270,21 @@ class EventRegistrationWidget extends DateRangeDefaultWidget {
       ],
     ];
 
+    $enable_waitlist = $this->getSetting('show_enable_waitlist');
+    $waitlist_default_value = $enable_waitlist ? ($items[$delta]->waitlist ?? FALSE) : FALSE;
+    $items[$delta]->waitlist = 1;
     $element['waitlist'] = [
       '#type' => 'checkbox',
       '#title' => $this->t('Enable Waiting List'),
       '#description' => $this->t('Enable a waiting list if the number of registrations reaches capacity.'),
       '#weight' => 6,
-      '#default_value' => $items[$delta]->waitlist ?: '',
+      '#default_value' => $waitlist_default_value,
       '#states' => [
         'visible' => [
           ':input[name="event_registration[0][registration]"]' => ['checked' => TRUE],
         ],
       ],
+      '#access' => $enable_waitlist ? TRUE : FALSE,
     ];
 
     return $element;
-- 
GitLab