19 declare(strict_types=1);
77 $this->
lng->loadLanguageModule(
'content');
80 if ($this->
http->wrapper()->query()->has(
'backurl')) {
81 $this->backUrl = $this->
http->wrapper()->query()->retrieve(
83 $this->
refinery->kindlyTo()->string()
87 if ($this->backUrl !==
'') {
88 $this->
ctrl->setParameterByClass(ilContentPagePageGUI::class,
'backurl', rawurlencode($this->backUrl));
102 foreach ($this->updateListeners as $listener) {
109 $this->
ctrl->setParameterByClass(ilObjectContentStyleSettingsGUI::class, self::HTTP_PARAM_PAGE_EDITOR_STYLE_CONTEXT,
'1');
110 $this->
tabs->addTarget(
112 $this->
ctrl->getLinkTargetByClass(ilObjectContentStyleSettingsGUI::class),
113 'editStyleProperties',
114 strtolower(ilObjectContentStyleSettingsGUI::class)
116 $this->
ctrl->setParameterByClass(ilObjContentPageGUI::class, self::HTTP_PARAM_PAGE_EDITOR_STYLE_CONTEXT, null);
124 $this->parentObject->update();
129 $this->updateListeners[] = $updateListener;
134 $pageObjectGUI =
new ilContentPagePageGUI($this->parentObject->getId(), 0, $isEmbedded, $language);
135 $pageObjectGUI->setStyleId(
136 $this->content_style_domain->getEffectiveStyleId()
139 $pageObjectGUI->obj->addUpdateListener($this,
'updateContentPageOnPageUpdate', []);
141 return $pageObjectGUI;
153 $pageObject->setParentId($this->parentObject->getId());
154 $pageObject->setId($this->parentObject->getId());
155 $pageObject->setLanguage($language);
156 $pageObject->createFromXML();
162 $backUrl = $this->
ctrl->getLinkTargetByClass(ilContentPagePageGUI::class, self::UI_CMD_COPAGE_EDIT);
163 if ($this->backUrl !==
'') {
166 $script = basename($backUrlParts[
'path']);
168 $backUrl =
'./' . implode(
'?', [
169 $script, $backUrlParts[
'query']
178 $this->
tabs->clearTargets();
185 $pageObjectGUI->setEnabledTabs(
true);
187 $page = $pageObjectGUI->getPageObject();
188 $page->addUpdateListener($this,
'onPageUpdate', [
'page' => $page]);
190 $pageObjectGUI->setTabHook($this,
'addPageTabs');
192 return $pageObjectGUI;
200 $pageObjectGUI->setEnabledTabs(
false);
202 $pageObjectGUI->setStyleId(
203 $this->content_style_domain->getEffectiveStyleId()
206 return $pageObjectGUI;
215 $pageObjectGUI->setStyleId(
216 $this->content_style_domain->getEffectiveStyleId()
219 $pageObjectGUI->setTabHook($this,
'addPageTabs');
221 return $pageObjectGUI;
229 $pageObjectGUI->setEnabledTabs(
false);
231 $pageObjectGUI->setStyleId(
232 $this->content_style_domain->getEffectiveStyleId()
235 return $pageObjectGUI;
249 public function forward(
string $ctrlLink =
''): string
252 $language = $ot->getEffectiveContentLang($this->actor->getCurrentLanguage(), $this->parentObject->getType());
254 switch ($this->presentationMode) {
255 case self::PRESENTATION_MODE_EDITING:
258 return (
string) $this->
ctrl->forwardCommand($pageObjectGui);
260 case self::PRESENTATION_MODE_PREVIEW:
262 return $this->
ctrl->getHTML($pageObjectGui);
264 case self::PRESENTATION_MODE_PRESENTATION:
267 if (is_string($ctrlLink) && $ctrlLink !==
'') {
268 $pageObjectGUI->setFileDownloadLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_FILE);
269 $pageObjectGUI->setFullscreenLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DISPLAY_FULLSCREEN);
270 $pageObjectGUI->setSourcecodeDownloadScript($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_PARAGRAPH);
273 return $this->
ctrl->getHTML($pageObjectGUI);
275 case self::PRESENTATION_MODE_EMBEDDED_PRESENTATION:
278 if (is_string($ctrlLink) && $ctrlLink !==
'') {
279 $pageObjectGUI->setFileDownloadLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_FILE);
280 $pageObjectGUI->setFullscreenLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DISPLAY_FULLSCREEN);
281 $pageObjectGUI->setSourcecodeDownloadScript($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_PARAGRAPH);
284 return $pageObjectGUI->getHTML();
287 throw new ilException(
'Unknown presentation mode given');
Interface GlobalHttpState.
getPageObjectGUI(string $language, bool $isEmbedded=false)
buildEmbeddedPresentationPageObjectGUI(string $language)
ObjectFacade $content_style_domain
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
buildEditingPageObjectGUI(string $language)
updateContentPageOnPageUpdate(array $parameters)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
const PRESENTATION_MODE_EMBEDDED_PRESENTATION
presentation mode for embedded presentation, e.g.
External facade for object content styles.
setPresentationMode(string $presentationMode)
setIsMediaRequest(bool $isMediaRequest)
ilObjContentPage $parentObject
buildPreviewPageObjectGUI(string $language)
static http()
Fetches the global http state from ILIAS.
addUpdateListener(callable $updateListener)
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
const PRESENTATION_MODE_PREVIEW
static getInstance(int $obj_id)
const PRESENTATION_MODE_PRESENTATION
presentation mode for requesting
forward(string $ctrlLink='')
const PRESENTATION_MODE_EDITING
presentation mode for authoring
onPageUpdate(array $parameters)
__construct(GlobalHttpState $http, ilCtrlInterface $ctrl, ilTabsGUI $tabs, ilLanguage $lng, ilObjContentPage $parentObject, ilObjUser $actor, Refinery $refinery, ObjectFacade $content_style_domain)
doesPageExistsForLanguage(string $language)
buildPresentationPageObjectGUI(string $language)
ensurePageObjectExists(string $language)