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