]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/Event/eventform.php
Localisation updates from http://translatewiki.net.
[quix0rs-gnu-social.git] / plugins / Event / eventform.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         $this->unli();
109
110         $this->li();
111
112         $today = new DateTime('now');
113         $today->setTimezone(new DateTimeZone(common_timezone()));
114
115         $this->out->input('event-startdate',
116                           // TRANS: Field label on event form.
117                           _m('LABEL','Start date'),
118                           $today->format('m/d/Y'),
119                           // TRANS: Field title on event form.
120                           _m('Date the event starts.'),
121                           'startdate');
122         $this->unli();
123
124         $this->li();
125
126         $times = EventTimeList::getTimes($today->format('m/d/Y 12:00') . ' am ' . $today->format('T'));
127         $start = EventTimeList::nearestHalfHour($today->format('c'));
128         $start->setTimezone(new DateTimeZone(common_timezone()));
129
130         $this->out->dropdown(
131             'event-starttime',
132             // TRANS: Field label on event form.
133             _m('LABEL','Start time'),
134             $times,
135             // TRANS: Field title on event form. %s is the abbreviated timezone
136             sprintf(_m("Time the event starts (%s)."), $today->format('T')),
137             false,
138             $start->format('g:ia')
139         );
140
141         // Need to keep JavaScript TZ in sync with PHP TZ
142         $this->out->hidden('tz', $today->format('T'));
143         $this->out->hidden('now', $today->format('F d, Y H:i:s T'));
144
145         $this->unli();
146
147         $this->li();
148         $this->out->input('event-enddate',
149                           // TRANS: Field label on event form.
150                           _m('LABEL','End date'),
151                           $today->format('m/d/Y'),
152                           // TRANS: Field title on event form.
153                           _m('Date the event ends.'),
154                           'enddate');
155         $this->unli();
156
157         $this->li();
158
159         $this->out->dropdown(
160             'event-endtime',
161             // TRANS: Field label on event form.
162             _m('LABEL','End time'),
163             EventTimeList::getTimes($start->format('c'), true),
164             // TRANS: Field title on event form.
165             _m('Time the event ends.'),
166             false,
167             null
168         );
169         $this->unli();
170
171         $this->li();
172         $this->out->input('event-location',
173                           // TRANS: Field label on event form.
174                           _m('LABEL','Where?'),
175                           null,
176                           // TRANS: Field title on event form.
177                           _m('Event location.'),
178                           'location');
179         $this->unli();
180
181         $this->li();
182         $this->out->input('event-url',
183                           // TRANS: Field label on event form.
184                           _m('LABEL','URL'),
185                           null,
186                           // TRANS: Field title on event form.
187                           _m('URL for more information.'),
188                           'url');
189         $this->unli();
190
191         $this->li();
192         $this->out->input('event-description',
193                           // TRANS: Field label on event form.
194                           _m('LABEL','Description'),
195                           null,
196                           // TRANS: Field title on event form.
197                           _m('Description of the event.'),
198                           'description');
199         $this->unli();
200
201         $this->out->elementEnd('ul');
202
203         $toWidget = new ToSelector($this->out,
204                                    common_current_user(),
205                                    null);
206         $toWidget->show();
207
208         $this->out->elementEnd('fieldset');
209     }
210
211     /**
212      * Action elements
213      *
214      * @return void
215      */
216     function formActions()
217     {
218         // TRANS: Button text to save an event..
219         $this->out->submit('event-submit', _m('BUTTON', 'Save'), 'submit', 'submit');
220     }
221 }