ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilObjForumAdministrationGUI.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
14{
15 private $rbac;
16
21 public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
22 {
23 global $DIC;
24 $this->rbac = $DIC->rbac();
25
26 $this->type = 'frma';
27 parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
28 $this->lng->loadLanguageModule('forum');
29 }
30
34 public function executeCommand()
35 {
36 $next_class = $this->ctrl->getNextClass($this);
37 $cmd = $this->ctrl->getCmd();
38
39 $this->prepareOutput();
40
41 switch ($next_class) {
42 case 'ilpermissiongui':
43 $this->tabs_gui->setTabActive('perm_settings');
44 $this->ctrl->forwardCommand(new ilPermissionGUI($this));
45 break;
46
47 default:
48 if (!$cmd || $cmd == 'view') {
49 $cmd = 'editSettings';
50 }
51
52 $this->$cmd();
53 break;
54 }
55 return true;
56 }
57
61 public function getAdminTabs()
62 {
63 if ($this->rbac->system()->checkAccess('visible,read', $this->object->getRefId())) {
64 $this->tabs_gui->addTarget(
65 'settings',
66 $this->ctrl->getLinkTarget($this, 'editSettings'),
67 array('editSettings', 'view')
68 );
69 }
70
71 if ($this->rbac->system()->checkAccess('edit_permission', $this->object->getRefId())) {
72 $this->tabs_gui->addTarget(
73 'perm_settings',
74 $this->ctrl->getLinkTargetByClass('ilpermissiongui', 'perm'),
75 array(),
76 'ilpermissiongui'
77 );
78 }
79 }
80
84 public function editSettings(ilPropertyFormGUI $form = null)
85 {
86 $this->tabs_gui->activateTab('settings');
87
88 if (!$form) {
89 $form = $this->getSettingsForm();
90 $this->populateForm($form);
91 }
92
93 $this->tpl->setContent($form->getHtml());
94 }
95
99 public function saveSettings()
100 {
101 $this->checkPermission("write");
102
103 $form = $this->getSettingsForm();
104 if (!$form->checkInput()) {
105 $form->setValuesByPost();
106 $this->editSettings($form);
107 return;
108 }
109
110 $frma_set = new ilSetting('frma');
111 $frma_set->set('forum_overview', $form->getInput('forum_overview'));
112 $this->settings->set('file_upload_allowed_fora', (int) $form->getInput('file_upload_allowed_fora'));
113 $this->settings->set('send_attachments_by_mail', (int) $form->getInput('send_attachments_by_mail'));
114 $this->settings->set('enable_fora_statistics', (int) $form->getInput('fora_statistics'));
115 $this->settings->set('enable_anonymous_fora', (int) $form->getInput('anonymous_fora'));
116
117 if (!ilCronManager::isJobActive('frm_notification')) {
118 $this->settings->set('forum_notification', (int) $form->getInput('forum_notification'));
119 }
120
121 ilCaptchaUtil::setActiveForForum((bool) $form->getInput('activate_captcha_anonym'));
122
123 $this->settings->set('save_post_drafts', (int) $form->getInput('save_post_drafts'));
124 $this->settings->set('autosave_drafts', (int) $form->getInput('autosave_drafts'));
125 $this->settings->set('autosave_drafts_ival', (int) $form->getInput('autosave_drafts_ival'));
126
127 ilUtil::sendSuccess($this->lng->txt('settings_saved'));
128 $form->setValuesByPost();
129 $this->editSettings($form);
130 }
131
136 {
137 $frma_set = new ilSetting('frma');
138
139 $form->setValuesByArray(array(
140 'forum_overview' => (bool) $frma_set->get('forum_overview', false),
141 'fora_statistics' => (bool) $this->settings->get('enable_fora_statistics', false),
142 'anonymous_fora' => (bool) $this->settings->get('enable_anonymous_fora', false),
143 'forum_notification' => (int) $this->settings->get('forum_notification') === 1 ? true : false,
144 'activate_captcha_anonym' => ilCaptchaUtil::isActiveForForum(),
145 'file_upload_allowed_fora' => (int) $this->settings->get('file_upload_allowed_fora', ilForumProperties::FILE_UPLOAD_GLOBALLY_ALLOWED),
146 'save_post_drafts' => (int) $this->settings->get('save_post_drafts', 0),
147 'autosave_drafts' => (int) $this->settings->get('autosave_drafts', 0),
148 'autosave_drafts_ival' => (int) $this->settings->get('autosave_drafts_ival', 30),
149 'send_attachments_by_mail' => (bool) $this->settings->get('send_attachments_by_mail', false)
150 ));
151 }
152
156 protected function getSettingsForm()
157 {
158 $form = new ilPropertyFormGUI();
159 $form->setFormAction($this->ctrl->getFormAction($this, 'saveSettings'));
160 $form->setTitle($this->lng->txt('settings'));
161
162 $frm_radio = new ilRadioGroupInputGUI($this->lng->txt('frm_displayed_infos'), 'forum_overview');
163 $frm_radio->addOption(new ilRadioOption($this->lng->txt('new') . ', ' . $this->lng->txt('is_read') . ', ' . $this->lng->txt('unread'), '0'));
164 $frm_radio->addOption(new ilRadioOption($this->lng->txt('is_read') . ', ' . $this->lng->txt('unread'), '1'));
165 $frm_radio->setInfo($this->lng->txt('frm_disp_info_desc'));
166 $form->addItem($frm_radio);
167
168 $check = new ilCheckboxInputGui($this->lng->txt('enable_fora_statistics'), 'fora_statistics');
169 $check->setInfo($this->lng->txt('enable_fora_statistics_desc'));
170 $form->addItem($check);
171
172 $check = new ilCheckboxInputGui($this->lng->txt('enable_anonymous_fora'), 'anonymous_fora');
173 $check->setInfo($this->lng->txt('enable_anonymous_fora_desc'));
174 $form->addItem($check);
175
176 $file_upload = new ilRadioGroupInputGUI($this->lng->txt('file_upload_allowed_fora'), 'file_upload_allowed_fora');
177 $file_upload->addOption(new ilRadioOption($this->lng->txt('file_upload_option_allow'), ilForumProperties::FILE_UPLOAD_GLOBALLY_ALLOWED));
178 $file_upload->addOption(new ilRadioOption($this->lng->txt('file_upload_option_disallow'), ilForumProperties::FILE_UPLOAD_INDIVIDUAL));
179 $file_upload->setInfo($this->lng->txt('file_upload_allowed_fora_desc'));
180 $form->addItem($file_upload);
181
182 if (ilCronManager::isJobActive('frm_notification')) {
185 $form,
186 $this
187 );
188 } else {
189 $notifications = new ilCheckboxInputGui($this->lng->txt('cron_forum_notification'), 'forum_notification');
190 $notifications->setInfo($this->lng->txt('cron_forum_notification_desc'));
191 $notifications->setValue(1);
192 $form->addItem($notifications);
193 }
194
195 $check = new ilCheckboxInputGui($this->lng->txt('enable_send_attachments'), 'send_attachments_by_mail');
196 $check->setInfo($this->lng->txt('enable_send_attachments_desc'));
197 $check->setValue(1);
198 $form->addItem($check);
199
200 $cap = new ilCheckboxInputGUI($this->lng->txt('adm_captcha_anonymous_short'), 'activate_captcha_anonym');
201 $cap->setInfo($this->lng->txt('adm_captcha_anonymous_frm'));
202 $cap->setValue(1);
204 $cap->setAlert(ilCaptchaUtil::getPreconditionsMessage());
205 }
206 $form->addItem($cap);
207
208 $drafts = new ilCheckboxInputGUI($this->lng->txt('adm_save_drafts'), 'save_post_drafts');
209 $drafts->setInfo($this->lng->txt('adm_save_drafts_desc'));
210 $drafts->setValue(1);
211
212 $autosave_drafts = new ilCheckboxInputGUI($this->lng->txt('adm_autosave_drafts'), 'autosave_drafts');
213 $autosave_drafts->setInfo($this->lng->txt('adm_autosave_drafts_desc'));
214 $autosave_drafts->setValue(1);
215
216 $autosave_interval = new ilNumberInputGUI($this->lng->txt('adm_autosave_ival'), 'autosave_drafts_ival');
217 $autosave_interval->allowDecimals(false);
218 $autosave_interval->setMinValue(30);
219 $autosave_interval->setMaxValue(60 * 60);
220 $autosave_interval->setSize(10);
221 $autosave_interval->setSuffix($this->lng->txt('seconds'));
222 $autosave_drafts->addSubItem($autosave_interval);
223 $drafts->addSubItem($autosave_drafts);
224 $form->addItem($drafts);
225
226 if ($this->checkPermissionBool("write")) {
227 $form->addCommandButton('saveSettings', $this->lng->txt('save'));
228 }
229
230 return $form;
231 }
232
237 public function addToExternalSettingsForm($a_form_id)
238 {
239 switch ($a_form_id) {
241
242 $fields = array(
243 'enable_fora_statistics' => array($this->settings->get('enable_fora_statistics', false), ilAdministrationSettingsFormHandler::VALUE_BOOL),
244 'enable_anonymous_fora' => array($this->settings->get('enable_anonymous_fora', false), ilAdministrationSettingsFormHandler::VALUE_BOOL)
245 );
246
247 return array(array("editSettings", $fields));
248
250 $fields = array(
251 'adm_captcha_anonymous_short' => array(ilCaptchaUtil::isActiveForForum(), ilAdministrationSettingsFormHandler::VALUE_BOOL)
252 );
253
254 return array('obj_frma' => array('editSettings', $fields));
255 }
256 }
257}
An exception for terminatinating execution or to throw for unit testing.
static addFieldsToForm($a_form_id, ilPropertyFormGUI $a_form, ilObjectGUI $a_parent_gui)
static checkFreetype()
Check whether captcha support is active.
This class represents a checkbox property in a property form.
static isJobActive($a_job_id)
Check if given job is currently active.
This class represents a number property in a property form.
getAdminTabs()
administration tabs show only permissions and trash folder
editSettings(ilPropertyFormGUI $form=null)
__construct($a_data, $a_id, $a_call_by_reference=true, $a_prepare_output=true)
Contructor @access public.
Class ilObjectGUI Basic methods of all Output classes.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission and redirect on error.
prepareOutput($a_show_subobjects=true)
prepare output
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
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.
ILIAS Setting Class.
if(isset($_POST['submit'])) $form
global $DIC
Definition: saml.php:7
settings()
Definition: settings.php:2