Skip to content
This repository was archived by the owner on Oct 29, 2020. It is now read-only.

Commit 7a7b258

Browse files
Merge pull request #2168 from aaronschachter/sms_form
SMS Game Signup form
2 parents 6b5c266 + 02b0baa commit 7a7b258

File tree

4 files changed

+120
-11
lines changed

4 files changed

+120
-11
lines changed

lib/modules/dosomething/dosomething_campaign/dosomething_campaign.module

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,18 @@ function dosomething_campaign_reportback_confirmation_page_access($node) {
166166
if (module_exists('dosomething_user') && dosomething_user_is_staff()) {
167167
return TRUE;
168168
}
169+
170+
// If this a SMS Game, allow access to anybody, including anonymous users.
171+
if (dosomething_campaign_get_campaign_type($node) == 'sms_game') {
172+
return TRUE;
173+
}
174+
169175
// Else only grant if the user has reported back on this campaign.
170-
elseif (module_exists('dosomething_reportback') && dosomething_reportback_exists($node->nid)) {
176+
if (user_is_logged_in() && module_exists('dosomething_reportback') && dosomething_reportback_exists($node->nid)) {
171177
return TRUE;
172178
}
179+
180+
// Return FALSE as default.
173181
return FALSE;
174182
}
175183

@@ -240,7 +248,7 @@ function dosomething_campaign_node_view($node, $view_mode, $langcode) {
240248

241249
// Check if SMS Game:
242250
if (dosomething_campaign_get_campaign_type($node) == 'sms_game') {
243-
$node->content['signup_form'] = drupal_get_form('dosomething_signup_sms_game_form');
251+
$node->content['signup_form'] = drupal_get_form('dosomething_signup_alpha_beta_form', $node);
244252
return;
245253
}
246254

lib/modules/dosomething/dosomething_campaign/dosomething_campaign.theme.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ function dosomething_campaign_preprocess_common_vars(&$vars, &$wrapper) {
104104
$vars['faq'] = dosomething_helpers_get_field_collection_values($wrapper, 'field_faq');
105105
dosomething_campaign_preprocess_facts_vars($vars, $wrapper);
106106
dosomething_campaign_preprocess_media_vars($vars, $wrapper);
107+
$vars['starter'] = $wrapper->field_starter_statement->value();
107108
$vars['official_rules'] = $wrapper->field_official_rules->value();
108109
$vars['official_rules_src'] = file_create_url($vars['official_rules']['uri']);
109110
// Zendesk Support Ticket form.
@@ -178,7 +179,6 @@ function dosomething_campaign_preprocess_action_page(&$vars, &$wrapper) {
178179
}
179180

180181
// Plan.
181-
$vars['starter'] = $wrapper->field_starter_statement->value();
182182
$vars['time'] = $wrapper->field_time_and_place->value();
183183
$vars['vips'] = $wrapper->field_vips->value();
184184
$vars['hype'] = $wrapper->field_promoting_tips->value();

lib/modules/dosomething/dosomething_signup/dosomething_signup.forms.inc

Lines changed: 106 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,53 @@
66
*/
77

88
/**
9-
* Form constructor for the SMS Game form.
9+
* Form constructor for an Alpha/Beta signup form.
10+
*
11+
* @param int $nid
12+
* Loaded $node that the form is being rendered on.
13+
* @param int $num_betas
14+
* Number of inputs to provide for beta numbers.
1015
*/
11-
function dosomething_signup_sms_game_form($form, &$form_state) {
12-
global $user;
13-
// Load user to get relevant field values as form default_values.
14-
$account = user_load($user->uid);
15-
$form['user_first_name'] = array(
16+
function dosomething_signup_alpha_beta_form($form, &$form_state, $node, $num_betas = 3) {
17+
$form['nid'] = array(
18+
'#type' => 'hidden',
19+
'#default_value' => $node->nid,
20+
'#access' => FALSE,
21+
);
22+
$form['num_betas'] = array(
23+
'#type' => 'hidden',
24+
'#default_value' => $num_betas,
25+
'#access' => FALSE,
26+
);
27+
$form['alpha_first_name'] = array(
1628
'#type' => 'textfield',
1729
'#required' => TRUE,
18-
'#title' => t('First Name'),
19-
'#default_value' => isset($account->field_first_name[LANGUAGE_NONE][0]['value']) ? $account->field_first_name[LANGUAGE_NONE][0]['value'] : '',
30+
'#default_value' => dosomething_user_get_field('field_first_name'),
2031
'#attributes' => array(
2132
'data-validate' => 'fname',
2233
'data-validate-required' => '',
34+
'placeholder' => t('First Name'),
35+
),
36+
);
37+
$form['alpha_mobile'] = array(
38+
'#type' => 'textfield',
39+
'#required' => TRUE,
40+
'#default_value' => dosomething_user_get_mobile(),
41+
'#attributes' => array(
42+
'data-validate' => 'phone',
43+
'data-validate-required' => '',
44+
'placeholder' => t('Enter your mobile number'),
2345
),
2446
);
47+
for ($i = 0; $i < $num_betas; $i++) {
48+
$form['beta_mobile_' .$i] = array(
49+
'#type' => 'textfield',
50+
'#attributes' => array(
51+
'data-validate' => 'phone',
52+
'placeholder' => t('Enter someone else\'s number'),
53+
),
54+
);
55+
}
2556
$form['actions'] = array(
2657
'#type' => 'actions',
2758
'submit' => array(
@@ -31,3 +62,70 @@ function dosomething_signup_sms_game_form($form, &$form_state) {
3162
);
3263
return $form;
3364
}
65+
66+
/**
67+
* Form validation handler for dosomething_signup_alpha_beta_form().
68+
*
69+
* Provides server-side checks for valid and duplicate numbers, cleans input format.
70+
*/
71+
function dosomething_signup_alpha_beta_form_validate($form, &$form_state) {
72+
$values = $form_state['values'];
73+
// Text to display for invalid number format.
74+
$invalid_format_msg = t("Please provide a valid telephone number.");
75+
// Initialize array to store all inputted numbers, to check for duplicates.
76+
$numbers = array();
77+
78+
// Check if alpha is a valid number:
79+
$alpha_value = dosomething_user_clean_mobile_number($values['alpha_mobile']);
80+
if (!$alpha_value) {
81+
form_set_error('alpha_mobile', $invalid_format_msg);
82+
}
83+
else {
84+
// Add to numbers inputted.
85+
$numbers[] = $alpha_value;
86+
// Update form_state value with the clean format.
87+
$form_state['values']['alpha_mobile'] = $alpha_value;
88+
}
89+
90+
// Loop through beta form values.
91+
for ($i = 0; $i < $values['num_betas']; $i++) {
92+
$beta = 'beta_mobile_' . $i;
93+
// If a value exists:
94+
if (!empty($values[$beta])) {
95+
96+
// Check if valid number.
97+
$beta_value = dosomething_user_clean_mobile_number($values[$beta]);
98+
if (!$beta_value) {
99+
form_set_error($beta, $invalid_format_msg);
100+
}
101+
// Check if the number is a duplicate value.
102+
elseif (in_array($beta_value, $numbers)) {
103+
form_set_error($beta, t("Hey, you entered this number already!"));
104+
}
105+
// Else store as an inputted number to check against later.
106+
else {
107+
$numbers[] = $beta_value;
108+
// Update form_state value with the clean format.
109+
$form_state['values'][$beta] = $beta_value;
110+
}
111+
112+
}
113+
}
114+
}
115+
116+
/**
117+
* Form submission handler for dosomething_signup_alpha_beta_form().
118+
*
119+
* Redirects user to the reportback confirmation page for given node.
120+
*/
121+
function dosomething_signup_alpha_beta_form_submit($form, &$form_state) {
122+
$values = $form_state['values'];
123+
$nid = $values['nid'];
124+
if (user_is_logged_in()) {
125+
// Create a signup.
126+
dosomething_signup_create($nid);
127+
}
128+
// Redirect to the reportback confirmation page.
129+
$confirmation_path = 'node/' . $values['nid'] . '/confirmation';
130+
$form_state['redirect'] = $confirmation_path;
131+
}

lib/themes/dosomething/paraneue_dosomething/templates/campaign/node--campaign--sms-game.tpl.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@
9090

9191
<h2 id="plan" class="banner"><span>Step 2: Share It</span></h2>
9292
<section>
93+
<?php if (isset($starter)) : ?>
94+
<div class="intro"><?php print $starter['safe_value']; ?></div>
95+
<?php endif; ?>
9396
<div>
9497
<?php print render($signup_form); ?>
9598
</div>

0 commit comments

Comments
 (0)