forked from OpenStackweb/openstack-org
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAddSpeakerForm.php
More file actions
118 lines (87 loc) · 2.77 KB
/
Copy pathAddSpeakerForm.php
File metadata and controls
118 lines (87 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
/**
* Copyright 2014 Openstack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
/**
* Class AddSpeakerForm
*/
class AddSpeakerForm extends HoneyPotForm
{
static $allowed_actions = array(
'done',
);
function __construct($controller, $name, $talkID)
{
// Email Address Field
$EmailAddressField = new TextField('Email', "Speaker's Email Address");
$formData = Session::get("FormInfo.Form_CallForSpeakersRegistrationForm.data");
if ($formData['Email']) {
$email = $formData['Email'];
} else {
$email = Member::currentUser()->Email;
}
$EmailAddressField->setValue($email);
// Talk ID
$TalkField = new HiddenField('TalkID', "TalkID", $talkID);
$fields = new FieldList(
$EmailAddressField,
$TalkField
);
$talk = NULL;
if ($talkID != NULL) {
// Look to see if the presentation has at least one speaker attached
$talkID = Convert::raw2sql($talkID);
$talk = Talk::get()->byID($talkID);
}
if ($talk && $talk->HasSpeaker()) {
$actions = new FieldList(
new FormAction('addAction', 'Add New Speaker'),
new FormAction('done', 'Done Editing Speakers')
);
} else {
$actions = new FieldList(
new FormAction('addAction', 'Add First Speaker')
);
}
parent::__construct($controller, $name, $fields, $actions);
}
function forTemplate()
{
return $this->renderWith(array(
$this->class,
'Form'
));
}
function addAction($data, $form)
{
if (!EmailUtils::validEmail($data['Email'])) {
//Set error message
$form->AddErrorMessage('Email', "That doesn't appear to be a valid email address.", 'bad');
//Set form data from submitted values
Session::set("FormInfo.Form_CallForSpeakersRegistrationForm.data", $data);
//Return back to form
return Controller::curr()->redirectBack();
}
// Set up session variables and forward to SpeakerDetails action
// Find and load the talkID from the hidden field
$TalkID = Convert::raw2sql($data['TalkID']);
if (is_numeric($TalkID)) {
Session::set('AddSpeakerProcess.TalkID', $TalkID);
}
Session::set('AddSpeakerProcess.Email', $data['Email']);
Controller::curr()->redirect($form->controller()->Link() . 'SpeakerDetails/');
}
function done($data, $form)
{
Controller::curr()->redirect($form->controller()->Link() . '?completed=1');
}
}