19 declare(strict_types=1);
60 $this->
lng->loadLanguageModule(
'content');
63 if ($this->
http->wrapper()->query()->has(
'backurl')) {
64 $this->backUrl = $this->
http->wrapper()->query()->retrieve(
66 $this->
refinery->kindlyTo()->string()
70 if ($this->backUrl !==
'') {
71 $this->
ctrl->setParameterByClass(ilContentPagePageGUI::class,
'backurl', rawurlencode($this->backUrl));
85 foreach ($this->updateListeners as $listener) {
92 $this->
ctrl->setParameterByClass(ilObjectContentStyleSettingsGUI::class, self::HTTP_PARAM_PAGE_EDITOR_STYLE_CONTEXT,
'1');
93 $this->
tabs->addTarget(
95 $this->
ctrl->getLinkTargetByClass(ilObjectContentStyleSettingsGUI::class),
96 'editStyleProperties',
97 strtolower(ilObjectContentStyleSettingsGUI::class)
99 $this->
ctrl->setParameterByClass(ilObjContentPageGUI::class, self::HTTP_PARAM_PAGE_EDITOR_STYLE_CONTEXT,
null);
107 $this->parentObject->update();
112 $this->updateListeners[] = $updateListener;
117 $pageObjectGUI =
new ilContentPagePageGUI($this->parentObject->getId(), 0, $isEmbedded, $language);
118 $pageObjectGUI->setStyleId(
119 $this->content_style_domain->getEffectiveStyleId()
122 $pageObjectGUI->obj->addUpdateListener($this,
'updateContentPageOnPageUpdate', []);
124 return $pageObjectGUI;
136 $pageObject->setParentId($this->parentObject->getId());
137 $pageObject->setId($this->parentObject->getId());
138 $pageObject->setLanguage($language);
139 $pageObject->createFromXML();
145 $backUrl = $this->
ctrl->getLinkTargetByClass(ilContentPagePageGUI::class, self::UI_CMD_COPAGE_EDIT);
146 if ($this->backUrl !==
'') {
149 $script = basename($backUrlParts[
'path']);
151 $backUrl =
'./' . implode(
'?', [
152 $script, $backUrlParts[
'query']
161 $this->
tabs->clearTargets();
168 $pageObjectGUI->setEnabledTabs(
true);
170 $page = $pageObjectGUI->getPageObject();
171 $page->addUpdateListener($this,
'onPageUpdate', [
'page' => $page]);
173 $pageObjectGUI->setTabHook($this,
'addPageTabs');
175 return $pageObjectGUI;
183 $pageObjectGUI->setEnabledTabs(
false);
185 $pageObjectGUI->setStyleId(
186 $this->content_style_domain->getEffectiveStyleId()
189 return $pageObjectGUI;
198 $pageObjectGUI->setStyleId(
199 $this->content_style_domain->getEffectiveStyleId()
202 $pageObjectGUI->setTabHook($this,
'addPageTabs');
204 return $pageObjectGUI;
212 $pageObjectGUI->setEnabledTabs(
false);
214 $pageObjectGUI->setStyleId(
215 $this->content_style_domain->getEffectiveStyleId()
218 return $pageObjectGUI;
230 public function forward(
string $ctrlLink =
''): string
233 $language = $ot->getEffectiveContentLang($this->actor->getCurrentLanguage(), $this->parentObject->getType());
235 switch ($this->presentationMode) {
236 case self::PRESENTATION_MODE_EDITING:
239 return (
string) $this->
ctrl->forwardCommand($pageObjectGui);
241 case self::PRESENTATION_MODE_PREVIEW:
243 return $this->
ctrl->getHTML($pageObjectGui);
245 case self::PRESENTATION_MODE_PRESENTATION:
248 if (is_string($ctrlLink) && $ctrlLink !==
'') {
249 $pageObjectGUI->setFileDownloadLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_FILE);
250 $pageObjectGUI->setFullscreenLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DISPLAY_FULLSCREEN);
251 $pageObjectGUI->setSourcecodeDownloadScript($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_PARAGRAPH);
254 return $this->
ctrl->getHTML($pageObjectGUI);
256 case self::PRESENTATION_MODE_EMBEDDED_PRESENTATION:
259 if (is_string($ctrlLink) && $ctrlLink !==
'') {
260 $pageObjectGUI->setFileDownloadLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_FILE);
261 $pageObjectGUI->setFullscreenLink($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DISPLAY_FULLSCREEN);
262 $pageObjectGUI->setSourcecodeDownloadScript($ctrlLink .
'&cmd=' . self::UI_CMD_COPAGE_DOWNLOAD_PARAGRAPH);
265 return $pageObjectGUI->getHTML();
268 throw new ilException(
'Unknown presentation mode given');
getPageObjectGUI(string $language, bool $isEmbedded=false)
buildEmbeddedPresentationPageObjectGUI(string $language)
__construct(protected GlobalHttpState $http, protected ilCtrlInterface $ctrl, protected ilTabsGUI $tabs, protected ilLanguage $lng, protected ilObjContentPage $parentObject, protected ilObjUser $actor, protected Refinery $refinery, protected ObjectFacade $content_style_domain)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
final const PRESENTATION_MODE_PREVIEW
buildEditingPageObjectGUI(string $language)
updateContentPageOnPageUpdate(array $parameters)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
final const PRESENTATION_MODE_EMBEDDED_PRESENTATION
presentation mode for embedded presentation, e.g.
External facade for object content styles.
setPresentationMode(string $presentationMode)
setIsMediaRequest(bool $isMediaRequest)
buildPreviewPageObjectGUI(string $language)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
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.
static getInstance(int $obj_id)
final const PRESENTATION_MODE_EDITING
presentation mode for authoring
forward(string $ctrlLink='')
onPageUpdate(array $parameters)
doesPageExistsForLanguage(string $language)
buildPresentationPageObjectGUI(string $language)
final const PRESENTATION_MODE_PRESENTATION
presentation mode for requesting
ensurePageObjectExists(string $language)