ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.SettingsGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\Blog\Settings;
22
27
29{
30 protected \ILIAS\Blog\ReadingTime\BlogSettingsGUI $reading_time_gui;
31 protected \ilSetting $global_settings;
32 protected \ILIAS\Notes\DomainService $notes;
33
34 public function __construct(
35 protected InternalDataService $data,
36 protected InternalDomainService $domain,
37 protected InternalGUIService $gui,
38 protected int $obj_id,
39 protected bool $in_repository
40 ) {
41 $this->notes = $domain->notes();
42 $this->global_settings = $domain->settings();
43 $this->reading_time_gui = $gui->readingTime()->settingsGUI($obj_id);
44 }
45
46 public function executeCommand(): void
47 {
48 $ctrl = $this->gui->ctrl();
49 $next_class = $ctrl->getNextClass($this);
50 $cmd = $ctrl->getCmd("edit");
51
52 switch ($next_class) {
53 default:
54 if (in_array($cmd, ["edit", "save"])) {
55 $this->$cmd();
56 }
57 }
58 }
59
60 protected function edit(): void
61 {
62 $mt = $this->gui->ui()->mainTemplate();
63 $form = $this->getEditForm();
64 $mt->setContent($form->render());
65 }
66
67 protected function getEditForm(): FormAdapterGUI
68 {
69 $settings = $this->domain->blogSettings()->getByObjId($this->obj_id);
70
71 $lng = $this->domain->lng();
72 $form = $this->gui->form(self::class, "save")
73 ->section("general", $lng->txt("blog_edit"))
74 ->addStdTitleAndDescription(
75 $this->obj_id,
76 "blog"
77 );
78
79 if ($this->in_repository) {
80 $form = $form->checkbox(
81 "approval",
82 $lng->txt("blog_enable_approval"),
83 $lng->txt("blog_enable_approval_info"),
84 $settings->getApproval()
85 );
86 }
87
88 $form = $form->checkbox(
89 "notes",
90 $lng->txt("blog_enable_notes"),
91 "",
92 $this->notes->commentsActive($this->obj_id)
93 );
94
95 if ($this->global_settings->get('enable_global_profiles')) {
96 $form = $form->checkbox(
97 "rss",
98 $lng->txt("blog_enable_rss"),
99 "blog_enable_rss_info",
100 $settings->getRss()
101 );
102 }
103
104 $form = $form->section("availibility", $lng->txt("rep_activation_availability"))
105 ->addOnline($this->obj_id, "blog");
106
107 $form = $form->section("nav", $lng->txt("blog_settings_navigation"))
108 ->switch("nav_mode", $lng->txt("blog_nav_mode"), "", (string) $settings->getNavMode())
109 ->group(
110 (string) \ilObjBlog::NAV_MODE_LIST,
111 $lng->txt("blog_nav_mode_month_list"),
112 $lng->txt("blog_nav_mode_month_list_info")
113 )
114 ->number(
115 "nav_list_mon",
116 $lng->txt("blog_nav_mode_month_list_num_month"),
117 $lng->txt("blog_nav_mode_month_list_num_month_info"),
118 (int) $settings->getNavModeListMonths(),
119 1
120 )
121 ->number(
122 "nav_list_mon_with_post",
123 $lng->txt("blog_nav_mode_month_list_num_month_with_post"),
124 $lng->txt("blog_nav_mode_month_list_num_month_with_post_info"),
125 (int) $settings->getNavModeListMonthsWithPostings()
126 )
127 ->group(
129 $lng->txt("blog_nav_mode_month_single"),
130 $lng->txt("blog_nav_mode_month_single_info")
131 )
132 ->end();
133
134 if ($this->in_repository) {
135 $form = $form->checkbox(
136 "nav_authors",
137 $lng->txt("blog_enable_nav_authors"),
138 $lng->txt("blog_enable_nav_authors_info"),
139 $settings->getAuthors()
140 );
141 }
142
143 $form = $form
144 ->checkbox(
145 "keywords",
146 $lng->txt("blog_enable_keywords"),
147 $lng->txt("blog_enable_keywords_info"),
148 $settings->getKeywords()
149 )
150 ->section("presentation", $lng->txt("blog_presentation_frame"));
151
152 if ($this->in_repository) {
153 $form = $form->addStdTile(
154 $this->obj_id,
155 "blog"
156 );
157 }
158
159 $info = ($this->in_repository)
160 ? $lng->txt("blog_profile_picture_repository_info")
161 : "";
162
163 $form = $form->checkbox(
164 "ppic",
165 $lng->txt("blog_profile_picture"),
166 $info,
167 $settings->getProfilePicture()
168 );
169
170 $form = $this->reading_time_gui->addSettingToFormAdapter($form);
171
172 $form = $form
173 ->section("pres_overview", $lng->txt("blog_presentation_overview"))
174 ->number(
175 "ov_list_post_num",
176 $lng->txt("blog_list_num_postings"),
177 $lng->txt("blog_list_num_postings_info"),
178 (int) $settings->getOverviewPostings()
179 )
180 ->optional(
181 "abss",
182 $lng->txt("blog_abstract_shorten"),
183 "",
184 $settings->getAbstractShorten()
185 )
186 ->number(
187 "abssl",
188 $lng->txt("blog_abstract_shorten_length"),
189 $lng->txt("blog_abstract_shorten_characters"),
190 $settings->getAbstractShortenLength()
191 )->required()
192 ->end()
193 ->optional(
194 "absi",
195 $lng->txt("blog_abstract_image"),
196 $lng->txt("blog_abstract_image_info"),
197 $settings->getAbstractImage()
198 )
199 ->number(
200 "absiw",
201 $lng->txt("blog_abstract_image_width"),
202 $lng->txt("blog_abstract_image_pixels"),
203 $settings->getAbstractImageWidth(),
204 32
205 )->required()
206 ->number(
207 "absih",
208 $lng->txt("blog_abstract_image_height"),
209 $lng->txt("blog_abstract_image_pixels"),
210 $settings->getAbstractImageHeight(),
211 32
212 )->required()
213 ->end();
214
215 return $form;
216 }
217
218 protected function save(): void
219 {
220 $mt = $this->gui->ui()->mainTemplate();
221 $form = $this->getEditForm();
222 $ctrl = $this->gui->ctrl();
223 $lng = $this->domain->lng();
224
225 $old_settings = $this->domain->blogSettings()->getByObjId($this->obj_id);
226
227 if ($form->isValid()) {
228 $form->saveStdTitleAndDescription(
229 $this->obj_id,
230 "blog"
231 );
232 $form->saveStdTile(
233 $this->obj_id,
234 "blog"
235 );
236 $form->saveOnline(
237 $this->obj_id,
238 "blog"
239 );
240
241 $this->notes->activateComments($this->obj_id, (bool) $form->getData("notes"));
242
243 $this->reading_time_gui->saveSettingFromFormAdapter($form);
244
245 $settings = $this->data->settings(
246 $this->obj_id,
247 (bool) $form->getData("ppic"),
248 "",
249 "",
250 $this->global_settings->get('enable_global_profiles')
251 ? (bool) $form->getData("ppic")
252 : false,
253 $this->in_repository
254 ? (bool) $form->getData("approval")
255 : false,
256 (bool) $form->getData("abss"),
257 (bool) $form->getData("abss")
258 ? (int) $form->getData("abssl")
259 : 0,
260 (bool) $form->getData("absi"),
261 (bool) $form->getData("absi")
262 ? (int) $form->getData("absiw")
263 : 0,
264 (bool) $form->getData("absi")
265 ? (int) $form->getData("absih")
266 : 0,
267 (bool) $form->getData("keywords"),
268 $this->in_repository
269 ? (bool) $form->getData("nav_authors")
270 : false,
271 (int) $form->getData("nav_mode"),
272 (int) $form->getData("nav_mode") === \ilObjBlog::NAV_MODE_LIST
273 ? (int) $form->getData("nav_list_mon_with_post")
274 : 0,
275 (int) $form->getData("nav_mode") === \ilObjBlog::NAV_MODE_LIST
276 ? (int) $form->getData("nav_list_mon")
277 : 0,
278 (int) $form->getData("ov_list_post_num"),
279 $old_settings->getOrder()
280 );
281
282 $this->domain->blogSettings()->update($settings);
283
284 $mt->setOnScreenMessage("success", $lng->txt("msg_obj_modified"), true);
285 $ctrl->redirectByClass(self::class, "edit");
286 } else {
287 $mt = $this->gui->ui()->mainTemplate();
288 $mt->setContent($form->render());
289 }
290 }
291}
ILIAS Blog ReadingTime BlogSettingsGUI $reading_time_gui
__construct(protected InternalDataService $data, protected InternalDomainService $domain, protected InternalGUIService $gui, protected int $obj_id, protected bool $in_repository)
ILIAS Notes DomainService $notes
const NAV_MODE_MONTH
const NAV_MODE_LIST
$info
Definition: entry_point.php:21
global $lng
Definition: privfeed.php:31