ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilChatroomFormFactory.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
5
13{
17 protected $lng;
18
22 protected $user;
23
27 public function __construct()
28 {
29 global $DIC;
30
31 $this->lng = $DIC->language();
32 $this->user = $DIC->user();
33 }
34
40 public static function applyValues(ilPropertyFormGUI $form, array $values)
41 {
42 $form->setValuesByArray($values);
43 }
44
51 public function getCreationForm()
52 {
54 $title = new ilTextInputGUI($this->lng->txt('title'), 'title');
55 $title->setRequired(true);
56 $form->addItem($title);
57
58 $description = new ilTextAreaInputGUI($this->lng->txt('description'), 'desc');
59 $form->addItem($description);
60
61 return $this->addDefaultBehaviour($form);
62 }
63
70 {
71 $form->addCommandButton('create-save', $this->lng->txt('create'));
72 $form->addCommandButton('cancel', $this->lng->txt('cancel'));
73
74 return $form;
75 }
76
80 public function getSettingsForm()
81 {
82 $this->lng->loadLanguageModule('rep');
83
85 $title = new ilTextInputGUI($this->lng->txt('title'), 'title');
86 $title->setRequired(true);
87 $form->addItem($title);
88
89 $description = new ilTextAreaInputGUI($this->lng->txt('description'), 'desc');
90 $form->addItem($description);
91
92 $cb = new ilCheckboxInputGUI($this->lng->txt('allow_anonymous'), 'allow_anonymous');
93 $cb->setInfo($this->lng->txt('anonymous_hint'));
94
95 $txt = new ilTextInputGUI($this->lng->txt('autogen_usernames'), 'autogen_usernames');
96 $txt->setRequired(true);
97 $txt->setInfo($this->lng->txt('autogen_usernames_info'));
98 $cb->addSubItem($txt);
99 $form->addItem($cb);
100
101 $cb = new ilCheckboxInputGUI($this->lng->txt('allow_custom_usernames'), 'allow_custom_usernames');
102 $form->addItem($cb);
103
104 $cb_history = new ilCheckboxInputGUI($this->lng->txt('enable_history'), 'enable_history');
105 $form->addItem($cb_history);
106
107 $num_msg_history = new ilNumberInputGUI($this->lng->txt('display_past_msgs'), 'display_past_msgs');
108 $num_msg_history->setInfo($this->lng->txt('hint_display_past_msgs'));
109 $num_msg_history->setMinValue(0);
110 $num_msg_history->setMaxValue(100);
111 $form->addItem($num_msg_history);
112
113 $cb = new ilCheckboxInputGUI($this->lng->txt('private_rooms_enabled'), 'private_rooms_enabled');
114 $cb->setInfo($this->lng->txt('private_rooms_enabled_info'));
115 $form->addItem($cb);
116
118 $section->setTitle($this->lng->txt('rep_activation_availability'));
119 $form->addItem($section);
120
121 $online = new ilCheckboxInputGUI($this->lng->txt('rep_activation_online'), 'online_status');
122 $online->setInfo($this->lng->txt('chtr_activation_online_info'));
123 $form->addItem($online);
124
125 require_once 'Services/Form/classes/class.ilDateDurationInputGUI.php';
126 $dur = new ilDateDurationInputGUI($this->lng->txt('rep_time_period'), 'access_period');
127 $dur->setShowTime(true);
128 $form->addItem($dur);
129
130 $visible = new ilCheckboxInputGUI($this->lng->txt('rep_activation_limited_visibility'), 'access_visibility');
131 $visible->setValue(1);
132 $visible->setInfo($this->lng->txt('chtr_activation_limited_visibility_info'));
133 $dur->addSubItem($visible);
134
135 return $form;
136 }
137
142 public function getFileUploadForm()
143 {
144 $form = new ilPropertyFormGUI();
145 $file_input = new ilFileInputGUI();
146
147 $file_input->setPostVar('file_to_upload');
148 $file_input->setTitle($this->lng->txt('upload'));
149 $form->addItem($file_input);
150 $form->addCommandButton('UploadFile-uploadFile', $this->lng->txt('submit'));
151
152 $form->setTarget('_blank');
153
154 return $form;
155 }
156
161 public function getPeriodForm()
162 {
163 $form = new ilPropertyFormGUI();
164 $form->setPreventDoubleSubmission(false);
165
166 require_once 'Services/Form/classes/class.ilDateDurationInputGUI.php';
167 $duration = new ilDateDurationInputGUI($this->lng->txt('period'), 'timeperiod');
168
169 $duration->setStartText($this->lng->txt('duration_from'));
170 $duration->setEndText($this->lng->txt('duration_to'));
171 $duration->setShowTime(true);
172 $duration->setRequired(true);
173 $form->addItem($duration);
174
175 return $form;
176 }
177
183 public function getUserChatNameSelectionForm(array $name_options)
184 {
185 $form = new ilPropertyFormGUI();
186
187 $radio = new ilRadioGroupInputGUI($this->lng->txt('select_custom_username'), 'custom_username_radio');
188
189 foreach ($name_options as $key => $option) {
190 $opt = new ilRadioOption($option, $key);
191 $radio->addOption($opt);
192 }
193
194 $custom_opt = new ilRadioOption($this->lng->txt('custom_username'), 'custom_username');
195 $radio->addOption($custom_opt);
196
197 $txt = new ilTextInputGUI($this->lng->txt('custom_username'), 'custom_username_text');
198 $custom_opt->addSubItem($txt);
199 $form->addItem($radio);
200
201 if ($this->user->isAnonymous()) {
202 $radio->setValue('anonymousName');
203 } else {
204 $radio->setValue('fullname');
205 }
206
207 return $form;
208 }
209
215 public function getSessionForm(array $sessions)
216 {
217 $form = new ilPropertyFormGUI();
218 $form->setPreventDoubleSubmission(false);
219 $list = new ilSelectInputGUI($this->lng->txt('session'), 'session');
220
221 $options = array();
222
223 foreach ($sessions as $session) {
224 $start = new ilDateTime($session['connected'], IL_CAL_UNIX);
225 $end = new ilDateTime($session['disconnected'], IL_CAL_UNIX);
226
227 $options[$session['connected'] . ',' .
228 $session['disconnected']] = ilDatePresentation::formatPeriod($start, $end);
229 }
230
231 $list->setOptions($options);
232 $list->setRequired(true);
233
234 $form->addItem($list);
235
236 return $form;
237 }
238
243 public function getGeneralSettingsForm()
244 {
245 $form = new ilPropertyFormGUI();
246
247 $address = new ilTextInputGUI($this->lng->txt('chatserver_address'), 'address');
248 $address->setRequired(true);
249 $form->addItem($address);
250
251 $port = new ilNumberInputGUI($this->lng->txt('chatserver_port'), 'port');
252 $port->setMinValue(1);
253 $port->setMaxValue(65535);
254 $port->setRequired(true);
255 $port->setInfo($this->lng->txt('port_info'));
256 $port->setSize(6);
257 $form->addItem($port);
258
259 $subDirectory = new ilTextInputGUI($this->lng->txt('chat_osc_no_sub_directory'), 'sub_directory');
260 $subDirectory->setRequired(false);
261 $subDirectory->setInfo($this->lng->txt('chat_osc_no_sub_directory_info'));
262 $form->addItem($subDirectory);
263
264 $protocol = new ilRadioGroupInputGUI($this->lng->txt('protocol'), 'protocol');
265 $form->addItem($protocol);
266
267 $http = new ilRadioOption($this->lng->txt('http'), 'http');
268 $protocol->addOption($http);
269
270 $https = new ilRadioOption($this->lng->txt('https'), 'https');
271 $protocol->addOption($https);
272
273 $certificate = new ilTextInputGUI($this->lng->txt('certificate'), 'cert');
274 $certificate->setInfo($this->lng->txt('chat_https_cert_info'));
275 $certificate->setRequired(true);
276 $https->addSubItem($certificate);
277
278 $key = new ilTextInputGUI($this->lng->txt('key'), 'key');
279 $key->setInfo($this->lng->txt('chat_https_key_info'));
280 $key->setRequired(true);
281 $https->addSubItem($key);
282
283 $dhparam = new ilTextInputGUI($this->lng->txt('dhparam'), 'dhparam');
284 $dhparam->setInfo($this->lng->txt('chat_https_dhparam_info'));
285 $dhparam->setRequired(true);
286 $https->addSubItem($dhparam);
287
288 $chatLog = new ilTextInputGUI($this->lng->txt('log'), 'log');
289 $chatLog->setInfo($this->lng->txt('chat_log_info'));
290 $chatLog->setRequired(false);
291 $form->addItem($chatLog);
292
293 $chatErrorLog = new ilTextInputGUI($this->lng->txt('error_log'), 'error_log');
294 $chatErrorLog->setInfo($this->lng->txt('chat_error_log_info'));
295 $chatErrorLog->setRequired(false);
296 $form->addItem($chatErrorLog);
297
298 $iliasSection = new ilFormSectionHeaderGUI();
299 $iliasSection->setTitle($this->lng->txt('ilias_chatserver_connection'));
300 $form->addItem($iliasSection);
301
302 $iliasProxy = new ilCheckboxInputGUI($this->lng->txt('proxy'), 'ilias_proxy');
303 $iliasProxy->setRequired(false);
304 $iliasProxy->setInfo($this->lng->txt('ilias_proxy_info'));
305 $form->addItem($iliasProxy);
306
307 $chatServerILIASUrl = new ilTextInputGUI($this->lng->txt('url'), 'ilias_url');
308 $chatServerILIASUrl->setRequired(true);
309 $chatServerILIASUrl->setInfo($this->lng->txt('connection_url_info'));
310 $iliasProxy->addSubItem($chatServerILIASUrl);
311
312 $clientSection = new ilFormSectionHeaderGUI();
313 $clientSection->setTitle($this->lng->txt('client_chatserver_connection'));
314 $form->addItem($clientSection);
315
316 $clientProxy = new ilCheckboxInputGUI($this->lng->txt('proxy'), 'client_proxy');
317 $clientProxy->setRequired(false);
318 $clientProxy->setInfo($this->lng->txt('client_proxy_info'));
319 $form->addItem($clientProxy);
320
321 $chatServerClientUrl = new ilTextInputGUI($this->lng->txt('url'), 'client_url');
322 $chatServerClientUrl->setRequired(true);
323 $chatServerClientUrl->setInfo($this->lng->txt('connection_url_info'));
324 $clientProxy->addSubItem($chatServerClientUrl);
325
326 $deletion_section = new ilFormSectionHeaderGUI();
327 $deletion_section->setTitle($this->lng->txt('chat_deletion_section_head'));
328 $form->addItem($deletion_section);
329
330 $deletion_options = new ilRadioGroupInputGUI($this->lng->txt('chat_deletion_section_head'), 'deletion_mode');
331
332 $deletion_mode_deactivated = new ilRadioOption($this->lng->txt('chat_deletion_disabled'), 0);
333 $deletion_options->addOption($deletion_mode_deactivated);
334
335 $chat_deletion_interval = new ilRadioOption($this->lng->txt('chat_deletion_interval'), 1);
336 $chat_deletion_interval->setInfo($this->lng->txt('chat_deletion_interval_info'));
337 $interval_unit = new ilSelectInputGUI($this->lng->txt('chat_deletion_interval_unit'), 'deletion_unit');
338 $interval_unit->setRequired(true);
339 $interval_unit->setOptions(array(
340 'days' => $this->lng->txt('days'),
341 'weeks' => $this->lng->txt('weeks'),
342 'months' => $this->lng->txt('months'),
343 'years' => $this->lng->txt('years'),
344 ));
345 $chat_deletion_interval->addSubItem($interval_unit);
346
347 require_once 'Modules/Chatroom/classes/form/class.ilChatroomMessageDeletionThresholdInputGUI.php';
348 $interval_value = new ilChatroomMessageDeletionThresholdInputGUI($this->lng->txt('chat_deletion_interval_value'), 'deletion_value', $interval_unit);
349 $interval_value->allowDecimals(false);
350 $interval_value->setMinValue(1);
351 $interval_value->setRequired(true);
352 $chat_deletion_interval->addSubItem($interval_value);
353
354 $runAtTime = new ilTextInputGUI($this->lng->txt('chat_deletion_interval_run_at'), 'deletion_time');
355 $runAtTime->setInfo($this->lng->txt('chat_deletion_interval_run_at_info'));
356 $runAtTime->setRequired(true);
357 $runAtTime->setValidationRegexp('/([01][0-9]|[2][0-3]):[0-5][0-9]/');
358 $chat_deletion_interval->addSubItem($runAtTime);
359
360 $deletion_options->addOption($chat_deletion_interval);
361
362 $form->addItem($deletion_options);
363
364 return $form;
365 }
366
370 public function getClientSettingsForm()
371 {
372 $form = new ilPropertyFormGUI();
373
374 $enable_chat = new ilCheckboxInputGUI($this->lng->txt('chat_enabled'), 'chat_enabled');
375 $form->addItem($enable_chat);
376
377 $enable_osc = new ilCheckboxInputGUI($this->lng->txt('chatroom_enable_osc'), 'enable_osc');
378 $enable_osc->setInfo($this->lng->txt('chatroom_enable_osc_info'));
379 $enable_chat->addSubItem($enable_osc);
380
381 $osd = new ilCheckboxInputGUI($this->lng->txt('enable_osd'), 'enable_osd');
382 $osd->setInfo($this->lng->txt('hint_osd'));
383 $enable_chat->addSubItem($osd);
384
385 $interval = new ilNumberInputGUI($this->lng->txt('osd_intervall'), 'osd_intervall');
386 $interval->setMinValue(1);
387 $interval->setRequired(true);
388 $interval->setInfo($this->lng->txt('hint_osd_interval'));
389 $osd->addSubItem($interval);
390
391 $play_sound = new ilCheckboxInputGUI($this->lng->txt('play_invitation_sound'), 'play_invitation_sound');
392 $play_sound->setInfo($this->lng->txt('play_invitation_sound_info'));
393 $osd->addSubItem($play_sound);
394
395 $enable_smilies = new ilCheckboxInputGUI($this->lng->txt('enable_smilies'), 'enable_smilies');
396 $enable_smilies->setInfo($this->lng->txt('hint_enable_smilies'));
397 $enable_chat->addSubItem($enable_smilies);
398
399 $name = new \ilTextInputGUI($this->lng->txt('chatroom_client_name'), 'client_name');
400 $name->setInfo($this->lng->txt('chatroom_client_name_info'));
401 $name->setRequired(true);
402 $name->setMaxLength(100);
403 $enable_chat->addSubItem($name);
404
405 require_once 'Modules/Chatroom/classes/class.ilChatroomAuthInputGUI.php';
406 $auth = new ilChatroomAuthInputGUI($this->lng->txt('chatroom_auth'), 'auth');
407 $auth->setInfo($this->lng->txt('chat_auth_token_info'));
408 $auth->setCtrlPath(array('iladministrationgui', 'ilobjchatroomgui', 'ilpropertyformgui', 'ilformpropertydispatchgui', 'ilchatroomauthinputgui'));
409 $auth->setRequired(true);
410 $enable_chat->addSubItem($auth);
411
412 return $form;
413 }
414}
user()
Definition: user.php:4
$auth
Definition: metadata.php:48
$section
Definition: Utf8Test.php:83
if(!isset( $_REQUEST[ 'ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_UNIX
Class ilChatroomAuthInputGUI.
Class ilChatroomFormFactory.
static applyValues(ilPropertyFormGUI $form, array $values)
Applies given values to field in given form.
getSessionForm(array $sessions)
Returns session form with period set by given $sessions.
getPeriodForm()
Returns period form.
getFileUploadForm()
Prepares Fileupload form and returns it.
addDefaultBehaviour(ilPropertyFormGUI $form)
Adds 'create-save' and 'cancel' button to given $form and returns it.
getGeneralSettingsForm()
Returns general settings form.
getUserChatNameSelectionForm(array $name_options)
Returns chatname selection form.
getCreationForm()
Instantiates and returns ilPropertyFormGUI containing ilTextInputGUI and ilTextAreaInputGUI.
This class represents a checkbox property in a property form.
input GUI for a time span (start and end date)
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
@classDescription Date and time handling
This class represents a file property in a property form.
This class represents a section header in a property form.
This class represents a number property in a property form.
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
This class represents a selection list property in a property form.
This class represents a text area property in a property form.
This class represents a text property in a property form.
$key
Definition: croninfo.php:18
$txt
Definition: error.php:11
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
Definition: example_052.php:77
if($format !==null) $name
Definition: metadata.php:146
$end
Definition: saml1-acs.php:18
$session
$http
Definition: raiseError.php:7
if(isset($_POST['submit'])) $form
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
global $DIC
Definition: saml.php:7
$https
Definition: imgupload.php:19