]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/Event/forms/event.php
Merge remote-tracking branch 'upstream/master'
[quix0rs-gnu-social.git] / plugins / Event / forms / event.php
1 <?php
2 /**
3  * StatusNet - the distributed open-source microblogging tool
4  * Copyright (C) 2011, StatusNet, Inc.
5  *
6  * Form for entering an event
7  *
8  * PHP version 5
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Affero General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Affero General Public License for more details.
19  *
20  * You should have received a copy of the GNU Affero General Public License
21  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22  *
23  * @category  Event
24  * @package   StatusNet
25  * @author    Evan Prodromou <evan@status.net>
26  * @copyright 2011 StatusNet, Inc.
27  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
28  * @link      http://status.net/
29  */
30
31 if (!defined('STATUSNET')) {
32     // This check helps protect against security problems;
33     // your code file can't be executed directly from the web.
34     exit(1);
35 }
36
37 /**
38  * Form for adding an event
39  *
40  * @category  Event
41  * @package   StatusNet
42  * @author    Evan Prodromou <evan@status.net>
43  * @copyright 2011 StatusNet, Inc.
44  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
45  * @link      http://status.net/
46  */
47 class EventForm extends Form
48 {
49     /**
50      * ID of the form
51      *
52      * @return int ID of the form
53      */
54     function id()
55     {
56         return 'form_new_event';
57     }
58
59     /**
60      * class of the form
61      *
62      * @return string class of the form
63      */
64     function formClass()
65     {
66         return 'form_settings ajax-notice';
67     }
68
69     /**
70      * Action of the form
71      *
72      * @return string URL of the action
73      */
74     function action()
75     {
76         return common_local_url('newevent');
77     }
78
79     /**
80      * Data elements of the form
81      *
82      * @return void
83      */
84     function formData()
85     {
86         $this->out->elementStart('fieldset', array('id' => 'new_event_data'));
87
88         // Passing in the URL of the Ajax action that the .js for this form hits
89         // when selecting event start and end times. JavaScript will try to
90         // use a relative path, unless explicitely told where an action is,
91         // and that's a bit difficult to calculate since the event form is on
92         // so many pages with different paths. It might be worth solving this
93         // globally by putting the base site path in the Identifier-URL meta tag
94         // or something similar, so it would be easy to calculate the exact path
95         // for actions and other things in JavaScripts. -z
96         $this->out->hidden('timelist_action_url', common_local_url('timelist'));
97
98         $this->out->elementStart('ul', 'form_data');
99
100         $this->li();
101         $this->out->input('event-title',
102                           // TRANS: Field label on event form.
103                           _m('LABEL','Title'),
104                           null,
105                           // TRANS: Field title on event form.
106                           _m('Title of the event.'),
107                           'title',
108                           true);    // HTML5 "required" attribute
109         $this->unli();
110
111         $this->li();
112
113         $today = new DateTime('now');
114         $today->setTimezone(new DateTimeZone(common_timezone()));
115
116         $this->out->input('event-startdate',
117                           // TRANS: Field label on event form.
118                           _m('LABEL','Start date'),
119                           $today->format('m/d/Y'),
120                           // TRANS: Field title on event form.
121                           _m('Date the event starts.'),
122                           'startdate');
123         $this->unli();
124
125         $this->li();
126
127         $times = EventTimeList::getTimes($today->format('m/d/Y 12:00') . ' am ' . $today->format('T'));
128         $start = EventTimeList::nearestHalfHour($today->format('c'));
129         $start->setTimezone(new DateTimeZone(common_timezone()));
130
131         $this->out->dropdown(
132             'event-starttime',
133             // TRANS: Field label on event form.
134             _m('LABEL','Start time'),
135             $times,
136             // TRANS: Field title on event form. %s is the abbreviated timezone
137             sprintf(_m("Time the event starts (%s)."), $today->format('T')),
138             false,
139             $start->format('g:ia')
140         );
141
142         // Need to keep JavaScript TZ in sync with PHP TZ
143         $this->out->hidden('tz', $today->format('T'));
144         $this->out->hidden('now', $today->format('F d, Y H:i:s T'));
145
146         $this->unli();
147
148         $this->li();
149         $this->out->input('event-enddate',
150                           // TRANS: Field label on event form.
151                           _m('LABEL','End date'),
152                           $today->format('m/d/Y'),
153                           // TRANS: Field title on event form.
154                           _m('Date the event ends.'),
155                           'enddate');
156         $this->unli();
157
158         $this->li();
159
160         $this->out->dropdown(
161             'event-endtime',
162             // TRANS: Field label on event form.
163             _m('LABEL','End time'),
164             EventTimeList::getTimes($start->format('c'), true),
165             // TRANS: Field title on event form.
166             _m('Time the event ends.'),
167             false,
168             null
169         );
170         $this->unli();
171
172         $this->li();
173         $this->out->input('event-location',
174                           // TRANS: Field label on event form.
175                           _m('LABEL','Where?'),
176                           null,
177                           // TRANS: Field title on event form.
178                           _m('Event location.'),
179                           'location');
180         $this->unli();
181
182         $this->li();
183         $this->out->input('event-url',
184                           // TRANS: Field label on event form.
185                           _m('LABEL','URL'),
186                           null,
187                           // TRANS: Field title on event form.
188                           _m('URL for more information.'),
189                           'url');
190         $this->unli();
191
192         $this->li();
193         $this->out->input('event-description',
194                           // TRANS: Field label on event form.
195                           _m('LABEL','Description'),
196                           null,
197                           // TRANS: Field title on event form.
198                           _m('Description of the event.'),
199                           'description',
200                           true);    // HTML5 "required" attribute
201         $this->unli();
202
203         $this->out->elementEnd('ul');
204
205         $toWidget = new ToSelector($this->out,
206                                    common_current_user(),
207                                    null);
208         $toWidget->show();
209
210         $this->out->elementEnd('fieldset');
211     }
212
213     /**
214      * Action elements
215      *
216      * @return void
217      */
218     function formActions()
219     {
220         // TRANS: Button text to save an event..
221         $this->out->submit('event-submit', _m('BUTTON', 'Save'), 'submit', 'submit');
222     }
223 }