ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
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
4require_once 'Services/Object/classes/class.ilObjectGUI.php';
5
15{
20 public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
21 {
22 $this->type = 'frma';
23 parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
24 $this->lng->loadLanguageModule('forum');
25 }
26
30 public function executeCommand()
31 {
32 $next_class = $this->ctrl->getNextClass($this);
33 $cmd = $this->ctrl->getCmd();
34
35 $this->prepareOutput();
36
37 switch($next_class)
38 {
39 case 'ilpermissiongui':
40 $this->tabs_gui->setTabActive('perm_settings');
41 require_once 'Services/AccessControl/classes/class.ilPermissionGUI.php';
42 $this->ctrl->forwardCommand(new ilPermissionGUI($this));
43 break;
44
45 default:
46 if(!$cmd || $cmd == 'view')
47 {
48 $cmd = 'editSettings';
49 }
50
51 $this->$cmd();
52 break;
53 }
54 return true;
55 }
56
60 public function getAdminTabs()
61 {
65 global $rbacsystem;
66
67 if($rbacsystem->checkAccess('visible,read', $this->object->getRefId()))
68 {
69 $this->tabs_gui->addTarget('settings',
70 $this->ctrl->getLinkTarget($this, 'editSettings'),
71 array('editSettings', 'view'));
72 }
73
74 if($rbacsystem->checkAccess('edit_permission', $this->object->getRefId()))
75 {
76 $this->tabs_gui->addTarget('perm_settings',
77 $this->ctrl->getLinkTargetByClass('ilpermissiongui', 'perm'),
78 array(), 'ilpermissiongui');
79 }
80 }
81
85 public function editSettings(ilPropertyFormGUI $form = null)
86 {
87 $this->tabs_gui->setTabActive('settings');
88
89 if(!$form)
90 {
91 $form = $this->getSettingsForm();
92 $this->populateForm($form);
93 }
94
95 $this->tpl->setContent($form->getHtml());
96 }
97
101 public function saveSettings()
102 {
106 global $ilSetting;
107
108 $this->checkPermission("write");
109
110 $form = $this->getSettingsForm();
111 if(!$form->checkInput())
112 {
113 $form->setValuesByPost();
114 $this->editSettings($form);
115 return;
116 }
117
118 $frma_set = new ilSetting('frma');
119 $frma_set->set('forum_overview', $form->getInput('forum_overview'));
120
121 $ilSetting->set('enable_fora_statistics', (int)$form->getInput('fora_statistics'));
122 $ilSetting->set('enable_anonymous_fora', (int)$form->getInput('anonymous_fora'));
123
124 require_once 'Services/Cron/classes/class.ilCronManager.php';
125 if(!ilCronManager::isJobActive('frm_notification'))
126 {
127 $ilSetting->set('forum_notification', (int)$form->getInput('forum_notification'));
128 }
129
130 require_once 'Services/Captcha/classes/class.ilCaptchaUtil.php';
131 ilCaptchaUtil::setActiveForForum((bool)$form->getInput('activate_captcha_anonym'));
132
133 ilUtil::sendSuccess($this->lng->txt('settings_saved'));
134 $form->setValuesByPost();
135 $this->editSettings($form);
136 }
137
141 protected function populateForm(ilPropertyFormGUI $form)
142 {
146 global $ilSetting;
147
148 require_once 'Services/Captcha/classes/class.ilCaptchaUtil.php';
149
150 $frma_set = new ilSetting('frma');
151
152 $form->setValuesByArray(array(
153 'forum_overview' => (bool)$frma_set->get('forum_overview', false),
154 'fora_statistics' => (bool)$ilSetting->get('enable_fora_statistics', false),
155 'anonymous_fora' => (bool)$ilSetting->get('enable_anonymous_fora', false),
156 'forum_notification' => (int)$ilSetting->get('forum_notification') === 1 ? true : false,
157 'activate_captcha_anonym' => ilCaptchaUtil::isActiveForForum()
158 ));
159 }
160
164 protected function getSettingsForm()
165 {
166 require_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
167 $form = new ilPropertyFormGUI();
168 $form->setFormAction($this->ctrl->getFormAction($this, 'saveSettings'));
169 $form->setTitle($this->lng->txt('settings'));
170
171 $frm_radio = new ilRadioGroupInputGUI($this->lng->txt('frm_displayed_infos'), 'forum_overview');
172 $frm_radio->addOption(new ilRadioOption($this->lng->txt('new') . ', ' . $this->lng->txt('is_read') . ', ' . $this->lng->txt('unread'), '0'));
173 $frm_radio->addOption(new ilRadioOption($this->lng->txt('is_read') . ', ' . $this->lng->txt('unread'), '1'));
174 $frm_radio->setInfo($this->lng->txt('frm_disp_info_desc'));
175 $form->addItem($frm_radio);
176
177 $check = new ilCheckboxInputGui($this->lng->txt('enable_fora_statistics'), 'fora_statistics');
178 $check->setInfo($this->lng->txt('enable_fora_statistics_desc'));
179 $form->addItem($check);
180
181 $check = new ilCheckboxInputGui($this->lng->txt('enable_anonymous_fora'), 'anonymous_fora');
182 $check->setInfo($this->lng->txt('enable_anonymous_fora_desc'));
183 $form->addItem($check);
184
185 require_once 'Services/Cron/classes/class.ilCronManager.php';
186 if(ilCronManager::isJobActive('frm_notification'))
187 {
188 require_once 'Services/Administration/classes/class.ilAdministrationSettingsFormHandler.php';
191 $form,
192 $this
193 );
194 }
195 else
196 {
197 $notifications = new ilCheckboxInputGui($this->lng->txt('cron_forum_notification'), 'forum_notification');
198 $notifications->setInfo($this->lng->txt('cron_forum_notification_desc'));
199 $notifications->setValue(1);
200 $form->addItem($notifications);
201 }
202
203 require_once 'Services/Captcha/classes/class.ilCaptchaUtil.php';
204 $cap = new ilCheckboxInputGUI($this->lng->txt('adm_captcha_anonymous_short'), 'activate_captcha_anonym');
205 $cap->setInfo($this->lng->txt('adm_captcha_anonymous_frm'));
206 $cap->setValue(1);
208 {
209 $cap->setAlert(ilCaptchaUtil::getPreconditionsMessage());
210 }
211 $form->addItem($cap);
212
213 $form->addCommandButton('saveSettings', $this->lng->txt('save'));
214 $form->addCommandButton('editSettings', $this->lng->txt('cancel'));
215
216 return $form;
217 }
218
223 public function addToExternalSettingsForm($a_form_id)
224 {
228 global $ilSetting;
229
230 switch($a_form_id)
231 {
233
234 $fields = array(
235 'enable_fora_statistics' => array($ilSetting->get('enable_fora_statistics', false), ilAdministrationSettingsFormHandler::VALUE_BOOL),
236 'enable_anonymous_fora' => array($ilSetting->get('enable_anonymous_fora', false), ilAdministrationSettingsFormHandler::VALUE_BOOL)
237 );
238
239 return array(array("editSettings", $fields));
240
242 require_once 'Services/Captcha/classes/class.ilCaptchaUtil.php';
243 $fields = array(
244 'adm_captcha_anonymous_short' => array(ilCaptchaUtil::isActiveForForum(), ilAdministrationSettingsFormHandler::VALUE_BOOL)
245 );
246
247 return array('obj_frma' => array('editSettings', $fields));
248 }
249 }
250}
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.
setFormAction($a_formaction)
Set FormAction.
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()
prepare output
getAdminTabs(&$tabs_gui)
administration tabs show only permissions and trash folder
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
addItem($a_item)
Add Item (Property, SectionHeader).
setValuesByArray($a_values, $a_restrict_to_value_keys=false)
Set form values from an array.
addCommandButton($a_cmd, $a_text)
Add Command button.
setTitle($a_title)
Set Title.
This class represents a property in a property form.
This class represents an option in a radio group.
ILIAS Setting Class.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
global $ilSetting
Definition: privfeed.php:40
$cmd
Definition: sahs_server.php:35