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 
4 require_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  {
53  $form = new ilPropertyFormGUI();
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 
84  $form = new ilPropertyFormGUI();
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 }
getPeriodForm()
Returns period form.
This class represents an option in a radio group.
$auth
Definition: metadata.php:48
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
getSessionForm(array $sessions)
Returns session form with period set by given $sessions.
This class represents a selection list property in a property form.
getGeneralSettingsForm()
Returns general settings form.
This class represents a property form user interface.
global $DIC
Definition: saml.php:7
This class represents a section header in a property form.
This class represents a file property in a property form.
$session
$end
Definition: saml1-acs.php:18
This class represents a checkbox property in a property form.
const IL_CAL_UNIX
setInfo($a_info)
Set Info.
user()
Definition: user.php:4
Class ilChatroomFormFactory.
allowDecimals($a_value)
Toggle Decimals.
setInfo($a_info)
Set Information Text.
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
Definition: example_052.php:77
$section
Definition: Utf8Test.php:83
input GUI for a time span (start and end date)
if($format !==null) $name
Definition: metadata.php:146
This class represents a property in a property form.
setMinValue($a_minvalue, $a_display_always=false)
Set Minimum Value.
if(isset($_POST['submit'])) $form
This class represents a number property in a property form.
getFileUploadForm()
Prepares Fileupload form and returns it.
setValue($a_value)
Set Value.
This class represents a text property in a property form.
addCommandButton($a_cmd, $a_text, $a_id="")
Add Command button.
Date and time handling
getUserChatNameSelectionForm(array $name_options)
Returns chatname selection form.
$https
Definition: imgupload.php:19
Class ilChatroomAuthInputGUI.
setShowTime($a_showtime)
Set Show Time Information.
$http
Definition: raiseError.php:7
$txt
Definition: error.php:11
Create styles array
The data for the language used.
setStartText($a_txt)
Set text, which will be shown before the start date.
getCreationForm()
Instantiates and returns ilPropertyFormGUI containing ilTextInputGUI and ilTextAreaInputGUI.
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
This class represents a text area property in a property form.
static applyValues(ilPropertyFormGUI $form, array $values)
Applies given values to field in given form.
$key
Definition: croninfo.php:18
setValuesByArray($a_values, $a_restrict_to_value_keys=false)
Set form values from an array.
setRequired($a_required)
Set Required.
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
addDefaultBehaviour(ilPropertyFormGUI $form)
Adds &#39;create-save&#39; and &#39;cancel&#39; button to given $form and returns it.