From f1bc01e01097b655184201364fdd248201f16889 Mon Sep 17 00:00:00 2001 From: JKingsnorth Date: Wed, 23 Dec 2015 13:51:13 +0000 Subject: [PATCH] CRM-17745 Make maximum additional participants configurable --- CRM/Event/Form/ManageEvent/Registration.php | 9 +++++++++ CRM/Event/Form/Registration/Register.php | 19 ++++++------------- .../Incremental/sql/4.8.alpha1.mysql.tpl | 11 +++++++++++ .../Event/Form/ManageEvent/Registration.hlp | 8 ++++++++ .../Event/Form/ManageEvent/Registration.tpl | 19 +++++++------------ xml/schema/Event/Event.xml | 8 ++++++++ 6 files changed, 49 insertions(+), 25 deletions(-) create mode 100644 CRM/Upgrade/Incremental/sql/4.8.alpha1.mysql.tpl diff --git a/CRM/Event/Form/ManageEvent/Registration.php b/CRM/Event/Form/ManageEvent/Registration.php index ef10c0b50c..8ad22bdc3c 100644 --- a/CRM/Event/Form/ManageEvent/Registration.php +++ b/CRM/Event/Form/ManageEvent/Registration.php @@ -134,6 +134,11 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent $this->assign('profilePostMultiple', CRM_Utils_Array::value('custom_post', $defaults)); + // CRM-17745: Make max additional participants configurable + if (empty($defaults['max_additional_participants'])) { + $defaults['max_additional_participants'] = 9; + } + if (!empty($defaults['is_multiple_registrations'])) { // CRM-4377: set additional participants’ profiles – set to ‘none’ if explicitly unset (non-active) @@ -264,6 +269,10 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent ts('Register multiple participants?') ); + // CRM-17745: Make maximum additional participants configurable + $numericOptions = CRM_Core_SelectValues::getNumericOptions(1, 9); + $this->add('select', 'max_additional_participants', ts('Maximum additional participants'), $numericOptions, FALSE, array('class' => 'required')); + $this->addElement('checkbox', 'allow_same_participant_emails', ts('Same email address?') diff --git a/CRM/Event/Form/Registration/Register.php b/CRM/Event/Form/Registration/Register.php index 9571508678..930345595f 100644 --- a/CRM/Event/Form/Registration/Register.php +++ b/CRM/Event/Form/Registration/Register.php @@ -310,20 +310,13 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { if ($this->_values['event']['is_multiple_registrations']) { // don't allow to add additional during confirmation if not preregistered. if (!$this->_allowConfirmation || $this->_additionalParticipantIds) { - // Hardcode maximum number of additional participants here for now. May need to make this configurable per event. + // CRM-17745: Make maximum additional participants configurable // Label is value + 1, since the code sees this is ADDITIONAL participants (in addition to "self") - $additionalOptions = array( - '' => '1', - 1 => '2', - 2 => '3', - 3 => '4', - 4 => '5', - 5 => '6', - 6 => '7', - 7 => '8', - 8 => '9', - 9 => '10', - ); + $additionalOptions = array(); + $additionalOptions[''] = 1; + for ($i=1; $i <= $this->_values['event']['max_additional_participants']; $i++) { + $additionalOptions[$i] = $i + 1; + } $this->add('select', 'additional_participants', ts('How many people are you registering?'), $additionalOptions, diff --git a/CRM/Upgrade/Incremental/sql/4.8.alpha1.mysql.tpl b/CRM/Upgrade/Incremental/sql/4.8.alpha1.mysql.tpl new file mode 100644 index 0000000000..f9c02f8e59 --- /dev/null +++ b/CRM/Upgrade/Incremental/sql/4.8.alpha1.mysql.tpl @@ -0,0 +1,11 @@ +{* file to handle db changes in 4.8.alpha1 during upgrade *} + +-- CRM-17745: Make maximum additional participants configurable +ALTER TABLE civicrm_event + ADD COLUMN max_additional_participants int(10) unsigned + DEFAULT 0 + COMMENT 'Maximum number of additional participants that can be registered on a single booking' + AFTER is_multiple_registrations; +UPDATE civicrm_event + SET max_additional_participants = 9 + WHERE is_multiple_registrations = 1; \ No newline at end of file diff --git a/templates/CRM/Event/Form/ManageEvent/Registration.hlp b/templates/CRM/Event/Form/ManageEvent/Registration.hlp index 42e438bbbc..cdcd12a6ba 100644 --- a/templates/CRM/Event/Form/ManageEvent/Registration.hlp +++ b/templates/CRM/Event/Form/ManageEvent/Registration.hlp @@ -67,6 +67,14 @@

{ts}You can use different profile for the person who is registering than for "Additional Participants". For example, you may want to require an email address from the person entering the registration while not requiring (or even requesting) emails for additional participants (i.e. their "guests").{/ts}

{/htxt} +{htxt id="id-max_additional-title"} + {ts}Maximum Additional Participants{/ts} +{/htxt} +{htxt id="id-max_additional"} +

{ts}Limit the number of additional participants that can be registered in a single booking.{/ts}

+

{ts}Eg: if you choose '2' then the lead booker can bring 2 guests; there would be a limit of 3 participants in total per booking.{/ts}

+{/htxt} + {htxt id="id-allow_same_email-title"} {ts}Allow Shared Email{/ts} {/htxt} diff --git a/templates/CRM/Event/Form/ManageEvent/Registration.tpl b/templates/CRM/Event/Form/ManageEvent/Registration.tpl index 02164b343a..e33d4753de 100644 --- a/templates/CRM/Event/Form/ManageEvent/Registration.tpl +++ b/templates/CRM/Event/Form/ManageEvent/Registration.tpl @@ -83,6 +83,10 @@ {$form.is_multiple_registrations.label} {$form.is_multiple_registrations.html} {help id="id-allow_multiple"} + + {$form.max_additional_participants.label} + {$form.max_additional_participants.html} {help id="id-max_additional"} + {$form.allow_same_participant_emails.label} {$form.allow_same_participant_emails.html} {help id="id-allow_same_email"} @@ -391,14 +395,6 @@ target_element_type ="block" field_type ="radio" invert = 0 } -{include file="CRM/common/showHideByFieldValue.tpl" -trigger_field_id ="is_multiple_registrations" -trigger_value ="" -target_element_id ="additional_profile_pre|additional_profile_post" -target_element_type ="table-row" -field_type ="radio" -invert = 0 -} {if $form.requires_approval} {include file="CRM/common/showHideByFieldValue.tpl" trigger_field_id ="requires_approval" @@ -473,18 +469,17 @@ $(function($) { var allow_multiple = $("#is_multiple_registrations"); if ( !allow_multiple.prop('checked') ) { - $('#additional_profile_pre,#additional_profile_post').hide(); + $('#additional_profile_pre,#additional_profile_post,#id-max-additional-participants').hide(); } allow_multiple.change( function( ) { if ( !$(this).prop('checked') ) { $("#additional_custom_pre_id,#additional_custom_post_id").val(''); $(".crm-event-manage-registration-form-block-additional_custom_post_multiple").hide(); - $('#additional_profile_pre,#additional_profile_post').hide(); + $('#additional_profile_pre,#additional_profile_post,#id-max-additional-participants').hide(); } else { $(".crm-event-manage-registration-form-block-additional_custom_post_multiple").show(); - $('#additional_profile_pre,#additional_profile_post').show(); + $('#additional_profile_pre,#additional_profile_post,#id-max-additional-participants').show(); } - }); var allow_selfCancel = $("#allow_selfcancelxfer"); diff --git a/xml/schema/Event/Event.xml b/xml/schema/Event/Event.xml index 25bd248e21..b6c8509d1e 100644 --- a/xml/schema/Event/Event.xml +++ b/xml/schema/Event/Event.xml @@ -614,6 +614,14 @@ CheckBox + + max_additional_participants + int unsigned + Maximum number of additional participants per registration + 0 + Maximum number of additional participants that can be registered on a single booking + 4.8 + allow_same_participant_emails boolean -- 2.25.1