19 declare(strict_types=1);
36 protected int $obj_id,
39 $this->global_settings = $this->domain->settings();
44 $ctrl = $this->gui->ctrl();
45 $next_class = $ctrl->getNextClass($this);
46 $cmd = $ctrl->getCmd(
"edit");
48 switch ($next_class) {
50 if (in_array($cmd, [
"edit",
"save"])) {
56 protected function edit(): void
58 $mt = $this->gui->ui()->mainTemplate();
60 $mt->setContent($form->render());
65 $settings = $this->domain->wikiSettings()->getById($this->obj_id);
66 $start_page_options = $this->domain->wikiSettings()->getStartPageOptions($this->ref_id);
67 $start_page_id = $this->domain->wikiSettings()->getStartPageId($settings);
69 $lng = $this->domain->lng();
70 $lng->loadLanguageModule(
"rating");
73 ->form(self::class,
"save")
74 ->section(
"general",
$lng->txt(
"wiki_settings"))
78 $lng->txt(
"wiki_introduction"),
80 (string) $settings->getIntroduction()
84 $lng->txt(
"wiki_start_page"),
87 $start_page_id ? (string) $start_page_id :
null 89 ->section(
"avail",
$lng->txt(
"rep_activation_availability"))
91 ->addStdAvailability($this->ref_id)
92 ->section(
"presentation",
$lng->txt(
"obj_presentation"))
96 $lng->txt(
"wiki_page_toc"),
97 $lng->txt(
"wiki_page_toc_info"),
98 (bool) $settings->getPageToc()
108 $lng->txt(
"rating_activate_rating"),
109 $lng->txt(
"rating_activate_rating_info"),
110 (bool) $settings->getRatingOverall()
114 $lng->txt(
"wiki_activate_rating"),
116 (bool) $settings->getRating()
120 $lng->txt(
"wiki_activate_new_page_rating"),
122 (bool) $settings->getRatingForNewPages()
126 $lng->txt(
"wiki_activate_extended_rating"),
128 (bool) $settings->getRatingCategories()
132 if(!$this->global_settings->get(
"disable_comments")) {
136 $lng->txt(
"wiki_public_comments"),
138 (bool) $settings->getPublicNotes()
145 protected function save(): void
147 $mt = $this->gui->ui()->mainTemplate();
149 $ctrl = $this->gui->ctrl();
150 $lng = $this->domain->lng();
152 $old_settings = $this->domain->wikiSettings()->getById($this->obj_id);
154 if ($form->isValid()) {
156 $form->saveStdTitleAndDescription($this->obj_id,
"wiki");
157 $form->saveStdTile($this->obj_id,
"wiki");
158 $form->saveOnline($this->obj_id,
"wiki");
159 $form->saveStdAvailability($this->ref_id);
160 $form->saveAdditionalFeatures(
168 $settings = $this->data->settings(
171 $old_settings->getShortTitle(),
172 (bool) $form->getData(
"rating_overall"),
173 (bool) $form->getData(
"rating"),
174 $old_settings->getRatingAsBlock(),
175 (bool) $form->getData(
"rating_new"),
176 (bool) $form->getData(
"rating_ext"),
177 (bool) $form->getData(
"public_notes"),
178 $form->getData(
"introduction"),
179 (bool) $form->getData(
"page_toc"),
180 $old_settings->getLinkMetadataValues(),
181 $old_settings->getEmptyPageTemplate()
183 $this->domain->wikiSettings()->update($settings);
185 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
186 $ctrl->redirectByClass(self::class,
"edit");
188 $mt = $this->gui->ui()->mainTemplate();
189 $mt->setContent($form->render());
Wiki internal data service.
__construct(protected InternalDataService $data, protected InternalDomainService $domain, protected InternalGUIService $gui, protected int $obj_id, protected int $ref_id)
static lookupTitle(int $a_page_id, string $lang="-")
ilSetting $global_settings
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null