36 public const EDIT =
"edit";
41 protected \ILIAS\COPage\Page\PageManager
$pm;
42 protected \ILIAS\COPage\Link\LinkManager
$link;
43 protected \ILIAS\COPage\InternalGUIService
$gui;
45 protected \ILIAS\COPage\Xsl\XslManager
$xsl;
47 protected \ILIAS\Notes\Service
$notes;
114 protected \ILIAS\DI\UIServices
$ui;
143 protected \ILIAS\COPage\Compare\PageCompare
$compare;
153 string $a_parent_type,
156 bool $a_prevent_get_id =
false,
158 string $concrete_lang =
"" 163 $this->tpl = $DIC->ui()->mainTemplate();
164 $this->
ctrl = $DIC->ctrl();
165 $this->
lng = $DIC->language();
166 $this->tabs_gui = $DIC->tabs();
167 $this->
access = $DIC->access();
168 $this->
user = $DIC->user();
169 $this->
help = $DIC[
"ilHelp"];
170 $this->
ui = $DIC->ui();
171 $this->
toolbar = $DIC->toolbar();
172 $this->component_factory = $DIC[
"component.factory"];
174 $this->request = $DIC
181 $this->questioninfo = $DIC->testQuestionPool()->questionInfo();
183 $this->requested_old_nr = $this->request->getInt(
"old_nr");
184 $this->requested_transl = $this->request->getString(
"transl");
185 $this->requested_file_id = $this->request->getString(
"file_id");
186 $this->requested_ref_id = $this->request->getInt(
"ref_id");
187 $this->requested_pg_id = $this->request->getInt(
"pg_id");
192 if ($a_old_nr == 0 && !$a_prevent_get_id && $this->requested_old_nr > 0) {
197 if ($a_lang ==
"" && $this->requested_transl !=
'') {
212 $this->page_linker =
new ilPageLinker(get_class($this));
214 $this->output2template =
true;
216 $this->template_output_var =
"PAGE_CONTENT";
217 $this->change_comments =
false;
218 $this->page_back_title = $this->
lng->txt(
"page");
219 $this->
lng->loadLanguageModule(
"content");
220 $this->
lng->loadLanguageModule(
"copg");
222 $this->tool_context = $DIC->globalScreen()->tool()->context();
226 $this->
ctrl->saveParameter($this,
"transl");
229 $this->requested_user_id = $this->request->getInt(
"user");
230 $this->requested_q_id = $this->request->getInt(
"q_id");
231 $this->requested_history_mode = $this->request->getInt(
"history_mode");
237 $this->edit_repo = $int_service
242 $this->xsl = $int_service->domain()->xsl();
243 $this->compare = $int_service->domain()->compare();
244 $this->pc_definition = $DIC
250 $this->gui = $DIC->copage()->internal()->gui();
251 $this->
link = $DIC->copage()->internal()->domain()->link();
252 $this->pm = $DIC->copage()->internal()->domain()->page();
253 $this->editor_gui = $DIC->copage()->internal()->gui()->edit();
254 $this->notes = $DIC->notes();
259 $this->tpl = $main_tpl;
273 string $a_adv_subtype =
"-" 275 $this->adv_ref_id = $a_adv_ref_id;
276 $this->adv_type = $a_adv_type;
277 $this->adv_subtype = $a_adv_subtype;
285 if ($this->adv_type === null) {
302 $page->setConcreteLang($this->concrete_lang);
308 $this->parent_type = $a_val;
316 public function setId(
int $a_val): void
331 $this->old_nr = $a_val;
367 $this->page_config = $a_val;
377 $this->obj = $a_pg_obj;
389 string $a_mode = self::PRESENTATION
391 $this->output_mode = $a_mode;
401 $this->output2template = $a_output;
411 $this->presentation_title = $a_title;
431 $this->link_params = $l_params;
441 $this->link_frame = $l_frame;
471 $this->target_var = $a_variable;
486 $this->sourcecode_download_script = $script_name;
496 $this->tabs_gui = $a_tabs;
501 $this->page_back_title = $a_title;
506 $this->file_download_link = $a_download_link;
516 $this->fullscreen_link = $a_fullscreen_link;
526 $this->int_link_return = $a_return;
531 $this->change_comments = $a_enabled;
539 public function enableNotes(
bool $a_enabled,
int $a_parent_id): void
541 $this->notes_enabled = $a_enabled;
542 $this->notes_parent_id = $a_parent_id;
555 $this->offline_directory = $offdir;
569 $this->view_page_link = $a_link;
570 $this->view_page_target = $a_target;
585 return $this->
lng->txt(
"cont_presentation_view");
592 $this->act_obj = $a_obj;
593 $this->act_meth = $a_meth;
598 int $a_news_obj_id = 0,
599 string $a_news_obj_type =
"" 601 $this->enabled_news = $a_enabled;
602 $this->news_obj_id = $a_news_obj_id;
603 $this->news_obj_type = $a_news_obj_type;
615 $this->tab_hook = array(
"obj" => $a_object,
"func" => $a_function);
624 $this->editpreview = $a_editpreview;
634 $this->tabs_enabled = $a_enabledtabs;
644 $this->enabledpagefocus = $a_enabledpagefocus;
649 $this->open_place_holder = $a_val;
664 $this->prependinghtml = $a_prependinghtml;
674 $this->enableediting = $a_enableediting;
687 $this->rawpagecontent = $a_rawpagecontent;
697 $this->styleid = $a_styleid;
707 $this->compare_mode = $a_val;
722 $this->abstract_only = $a_val;
723 $this->abstract_pcid = $pcid;
733 $this->render_page_container = $a_val;
743 return $this->
lng->txt(
"inactive");
753 $this->enabled_href = $enable;
768 object $a_observer_obj = null,
769 string $a_observer_func =
"" 771 $this->use_meta_data =
true;
772 $this->meta_data_rep_obj = $a_rep_obj;
773 $this->meta_data_sub_obj_id = $a_sub_obj_id;
774 $this->meta_data_type = $a_type;
775 $this->meta_data_observer_obj = $a_observer_obj;
776 $this->meta_data_observer_func = $a_observer_func;
783 $file_download_link = $this->
ctrl->getLinkTarget($this,
"downloadFile");
792 $fullscreen_link = $this->
ctrl->getLinkTarget($this,
"displayMediaFullscreen",
"",
false,
false);
800 if ($this->sourcecode_download_script ==
"" && $this->
getOutputMode() !=
"offline") {
801 $l = $this->
ctrl->getLinkTarget($this,
"");
813 foreach ($this->component_factory->getActivePluginsInSlot(
"pgcp") as
$plugin) {
814 if (
$plugin->isValidParentType($this->getPageObject()->getParentType())) {
815 $xml .=
'<ComponentPlugin Name="' .
$plugin->getPluginName() .
821 $xml =
"<ComponentPlugins>" . $xml .
"</ComponentPlugins>";
833 $next_class = $this->
ctrl->getNextClass($this);
834 if ($next_class !==
"") {
835 $this->
ctrl->setReturn($this,
"edit");
837 $this->log->debug(
"next_class: " . $next_class);
838 if ($next_class ==
"" && $this->
ctrl->getCmd() ==
"edit") {
839 $this->tabs_gui->clearTargets();
845 switch ($next_class) {
846 case 'ilobjectmetadatagui':
848 $md_gui =
new ilObjectMetaDataGUI($this->meta_data_rep_obj, $this->meta_data_type, $this->meta_data_sub_obj_id);
849 if (is_object($this->meta_data_observer_obj)) {
850 $md_gui->addMDObserver(
851 $this->meta_data_observer_obj,
852 $this->meta_data_observer_func,
857 if ($this->adv_type !=
"") {
858 $md_gui->setAdvMdRecordObject($this->adv_ref_id, $this->adv_type, $this->adv_subtype);
860 $this->
ctrl->forwardCommand($md_gui);
863 case "ileditclipboardgui":
866 $clip_gui->setPageBackTitle($this->page_back_title);
867 $ret = $this->
ctrl->forwardCommand($clip_gui);
873 $html = $this->
edit();
874 $this->tabs_gui->setTabActive(
"edit");
877 case 'ilpublicuserprofilegui':
879 $ret = $this->
ctrl->forwardCommand($profile_gui);
882 case "ilpageeditorgui":
886 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"),
true);
887 $this->
ctrl->redirect($this,
"preview");
890 $page_editor->setHeader($this->
getHeader());
891 $page_editor->setPageBackTitle($this->page_back_title);
892 $page_editor->setIntLinkReturn($this->int_link_return);
894 $ret = $this->
ctrl->forwardCommand($page_editor);
897 case 'ilnewsitemgui':
899 $news_item_gui->setEnableEdit(
true);
900 $news_item_gui->setContextObjId($this->news_obj_id);
901 $news_item_gui->setContextObjType($this->news_obj_type);
902 $news_item_gui->setContextSubObjId($this->obj->getId());
903 $news_item_gui->setContextSubObjType(
"pg");
905 $ret = $this->
ctrl->forwardCommand($news_item_gui);
908 case "ilpropertyformgui":
910 $this->
ctrl->forwardCommand($form);
913 case "ilinternallinkgui":
914 $this->
lng->loadLanguageModule(
"content");
917 $link_gui->filterLinkType(
"PageObject_FAQ");
918 $link_gui->filterLinkType(
"GlossaryItem");
919 $link_gui->filterLinkType(
"Media_Media");
920 $link_gui->filterLinkType(
"Media_FAQ");
922 $link_gui->setFilterWhiteList(
true);
923 $this->
ctrl->forwardCommand($link_gui);
926 case "ilquestioneditgui":
930 $edit_gui->setSelfAssessmentEditingMode(
true);
931 $ret = $this->
ctrl->forwardCommand($edit_gui);
932 $this->tpl->setContent($ret);
935 case 'ilassquestionfeedbackeditinggui':
943 $this->
lng->loadLanguageModule(
"assessment");
947 $this->questioninfo->getQuestionType(
948 $this->requested_q_id
952 $questionGUI->object->setObjId(0);
953 $questionGUI->object->setSelfAssessmentEditingMode(
true);
954 $questionGUI->object->setPreventRteUsage($this->
getPageConfig()->getPreventRteUsage());
958 $this->
ctrl->forwardCommand($gui);
962 case 'ilLearninghistorygui':
968 $hist_gui->setUserId($user_id);
969 $this->
ctrl->forwardCommand($hist_gui);
973 $cmd = $this->
ctrl->getCmd(
"preview");
976 $this->tabs_gui->addNonTabbedLink(
983 $ret = $this->$cmd();
984 if ($this->
getOutputMode() == self::PREVIEW && $cmd ==
"preview") {
990 return (
string) $ret;
998 $this->tabs_gui->clearTargets();
1000 $this->tabs_gui->setBackTarget(
1001 $this->
lng->txt(
"back"),
1002 $this->
ctrl->getLinkTarget($this,
"edit")
1005 $this->
ctrl->setParameterByClass(
"ilquestioneditgui",
"q_id", $this->requested_q_id);
1006 $this->tabs_gui->addTab(
1008 $this->
lng->txt(
"question"),
1009 $this->
ctrl->getLinkTargetByClass(
"ilquestioneditgui",
"editQuestion")
1012 $this->
ctrl->setParameterByClass(
"ilAssQuestionFeedbackEditingGUI",
"q_id", $this->requested_q_id);
1013 $this->tabs_gui->addTab(
1015 $this->
lng->txt(
"feedback"),
1019 $this->tabs_gui->activateTab($a_active);
1032 $this->
ctrl->redirect($this,
"edit");
1041 $this->
ctrl->redirect($this,
"edit");
1052 $b = $ui->factory()->button()->standard(
1053 $lng->
txt(
"edit_page"),
1054 $this->
ctrl->getLinkTarget($this,
"edit")
1069 $paragraph_plugin_string =
'';
1070 $disable_auto_margins =
'';
1079 $main_tpl->addJavaScript(
"./Services/COPage/js/ilCOPagePres.js");
1082 ilOverlayGUI::initJavascript();
1095 $this->log->debug(
"ilPageObjectGUI, showPage() in edit mode.");
1097 $tpl =
new ilTemplate(
"tpl.page_edit_wysiwyg.html",
true,
true,
"Services/COPage");
1104 $tpl->
setVariable(
"TXT_ADD_COMMENT", $this->
lng->txt(
"cont_add_change_comment"));
1109 $tpl->
setVariable(
"PAGE_CONTAINER_CLASS",
"ilc_page_cont_PageContainer");
1114 $this->
ctrl->getFormActionByClass(
"ilpageeditorgui",
"",
"",
true)
1118 $sel_js_mode =
"enable";
1125 if ($sel_js_mode ==
"enable") {
1129 $this->
ctrl->getLinkTargetByClass(
1130 array(
"ilpageeditorgui",
"ilinternallinkgui"),
1139 $this->editor_gui->init()->initUI($main_tpl);
1144 $tpl =
new ilTemplate(
"tpl.page.html",
true,
true,
"Services/COPage");
1157 if ($c_old_nr > 0 || $this->
getCompareMode() || ($this->requested_history_mode == 1)) {
1162 $this->
ctrl->setParameter($this,
"history_mode",
"1");
1165 if (isset($hist_info[
"previous"])) {
1167 $tpl->
setVariable(
"TXT_PREV_REV", $this->
lng->txt(
"cont_previous_rev"));
1168 $this->
ctrl->setParameter($this,
"old_nr", $hist_info[
"previous"][
"nr"]);
1171 $this->
ctrl->getLinkTarget($this,
"preview")
1175 $tpl->
setVariable(
"TXT_PREV_REV", $this->
lng->txt(
"cont_previous_rev"));
1180 if ($c_old_nr > 0) {
1182 $tpl->
setVariable(
"TXT_NEXT_REV", $this->
lng->txt(
"cont_next_rev"));
1183 $this->
ctrl->setParameter($this,
"old_nr", $hist_info[
"next"][
"nr"] ?? 0);
1186 $this->
ctrl->getLinkTarget($this,
"preview")
1192 $tpl->
setVariable(
"TXT_LATEST_REV", $this->
lng->txt(
"cont_latest_rev"));
1193 $this->
ctrl->setParameter($this,
"old_nr",
"");
1196 $this->
ctrl->getLinkTarget($this,
"preview")
1201 $this->
ctrl->setParameter($this,
"history_mode",
"");
1206 $this->
ctrl->setParameter($this,
"old_nr", $c_old_nr);
1209 $this->
ctrl->getLinkTarget($this,
"rollbackConfirmation")
1211 $this->
ctrl->setParameter($this,
"old_nr",
"");
1214 $this->
lng->txt(
"cont_rollback")
1221 $tpl->
setVariable(
"TXT_REVISION", $this->
lng->txt(
"cont_revision"));
1223 "VAL_REVISION_DATE",
1237 $tpl->
setVariable(
"FORMACTION", $this->
ctrl->getFormActionByClass(
"ilpageeditorgui"));
1243 $this->obj->getParentType() .
":pg",
1244 $this->obj->getId(),
1245 $this->obj->getLanguage()
1247 $mob_links = array();
1248 foreach ($links as $link) {
1249 if ($link[
"type"] ==
"mob") {
1257 if (count($mob_links) > 0) {
1259 $tpl->
setVariable(
"TXT_LINKED_MOBS", $this->
lng->txt(
"cont_linked_mobs"));
1264 $tpl->
setVariable(
"TXT_EDIT_MEDIA", $this->
lng->txt(
"cont_edit_mob"));
1265 $tpl->
setVariable(
"TXT_COPY_TO_CLIPBOARD", $this->
lng->txt(
"cont_copy_to_clipboard"));
1276 if (count($snippets) > 0) {
1277 foreach ($snippets as $s) {
1281 $tpl->
setVariable(
"TXT_CONTENT_SNIPPETS_USED", $this->
lng->txt(
"cont_snippets_used"));
1286 $tpl->
setVariable(
"TXT_SHOW_INFO", $this->
lng->txt(
"cont_show_info"));
1295 $tpl->
setVariable(
"TXT_SCHEDULED_ACTIVATION", $this->
lng->txt(
"cont_scheduled_activation"));
1319 $builded = $this->obj->buildDom();
1324 if (!$this->obj->checkPCIds()) {
1325 $this->obj->insertPCIds();
1326 $this->obj->update(
true,
true);
1329 $this->obj->addFileSizes();
1330 $this->obj->addHierIDs();
1332 $this->obj->addFileSizes();
1339 if (!$this->link_xml_set) {
1351 $template_xml = $style->getTemplateXML();
1352 $disable_auto_margins =
"n";
1353 if ($style->lookupStyleSetting(
"disable_auto_margins")) {
1354 $disable_auto_margins =
"y";
1359 $append_footnotes =
"y";
1361 if (!$this->abstract_pcid) {
1362 $content =
"<dummy><PageObject><PageContent><Paragraph>" .
1363 $this->obj->getFirstParagraphText() . $link_xml .
1364 "</Paragraph></PageContent></PageObject></dummy>";
1366 $append_footnotes =
"n";
1367 $par = $this->obj->getParagraphForPCID($this->abstract_pcid);
1368 $content =
"<dummy><PageObject><PageContent><Paragraph Characteristic='" . $par->getCharacteristic() .
"'>" .
1369 $par->getText() . $link_xml .
1370 "</Paragraph></PageContent></PageObject>" . $this->obj->getMultimediaXML() .
"</dummy>";
1373 $content = $this->obj->getXMLFromDom(
1384 if ($builded !==
true) {
1389 $this->edit_repo->clearPageError();
1408 $enlarge_path =
"images/media/enlarge.svg";
1412 ?
"ilc_PrintPageTitle" 1417 $enable_split_new = ($this->obj->getParentType() ==
"lm")
1423 if (($this->obj->getParentType() ==
"lm") &&
1425 $this->obj->getParentId(),
1428 $enable_split_next =
"y";
1430 $enable_split_next =
"n";
1451 ? $this->
user->getPref(
"ilPageEditor_MediaMode")
1461 $current_ts = time();
1465 $enable_href =
false;
1469 $params = array(
'mode' => $this->
getOutputMode(),
'pg_title' => htmlentities($pg_title, ENT_QUOTES,
"UTF-8"),
1470 'enable_placeholder' => $cfg->getEnablePCType(
"PlaceHolder") ?
"y" :
"n",
1471 'pg_id' => $this->obj->getId(),
'pg_title_class' => $pg_title_class,
1472 'webspace_path' => $wb_path,
'enlarge_path' => $enlarge_path,
1473 'img_col' => $col_path,
1474 'img_row' => $row_path,
1475 'img_cell' => $cell_path,
1476 'img_item' => $item_path,
1477 'acc_save_url' =>
"./ilias.php?baseClass=ilaccordionpropertiesstoragegui&cmd=setOpenedTab" .
1478 "&user_id=" . $this->
user->getId(),
1479 'append_footnotes' => $append_footnotes,
1481 'enable_split_new' => $enable_split_new,
1482 'enable_split_next' => $enable_split_next,
1486 'img_path' => $img_path,
1487 'parent_id' => $this->obj->getParentId(),
1489 'encoded_download_script' => urlencode($this->sourcecode_download_script),
1490 'enable_rep_objects' => $cfg->getEnablePCType(
"Resources") ?
"y" :
"n",
1491 'enable_login_page' => $cfg->getEnablePCType(
"LoginPageElement") ?
"y" :
"n",
1493 'enable_tabs' => $cfg->getEnablePCType(
"Tabs") ?
"y" :
"n",
1494 'enable_sa_qst' => $cfg->getEnableSelfAssessment() ?
"y" :
"n",
1495 'enable_file_list' => $cfg->getEnablePCType(
"FileList") ?
"y" :
"n",
1496 'enable_content_includes' => $cfg->getEnablePCType(
"ContentInclude") ?
"y" :
"n",
1497 'enable_content_templates' => (count($this->
getPageObject()->getContentTemplates()) > 0) ?
"y" :
"n",
1498 'paste' => $paste ?
"y" :
"n",
1499 'media_mode' => $media_mode,
1500 'javascript' => $sel_js_mode,
1501 'paragraph_plugins' => $paragraph_plugin_string,
1502 'disable_auto_margins' => $disable_auto_margins,
1503 'page_toc' => $cfg->getEnablePageToc() ?
"y" :
"n",
1504 'enable_profile' => $cfg->getEnablePCType(
"Profile") ?
"y" :
"n",
1505 'enable_verification' => $cfg->getEnablePCType(
"Verification") ?
"y" :
"n",
1506 'enable_blog' => $cfg->getEnablePCType(
"Blog") ?
"y" :
"n",
1507 'enable_skills' => $cfg->getEnablePCType(
"Skills") ?
"y" :
"n",
1508 'enable_learning_history' => $cfg->getEnablePCType(
"LearningHistory") ?
"y" :
"n",
1509 'enable_qover' =>
"n",
1510 'enable_consultation_hours' => $cfg->getEnablePCType(
"ConsultationHours") ?
"y" :
"n",
1511 'enable_my_courses' => $cfg->getEnablePCType(
"MyCourses") ?
"y" :
"n",
1512 'enable_amd_page_list' => $cfg->getEnablePCType(
"AMDPageList") ?
"y" :
"n",
1513 'current_ts' => $current_ts,
1515 'flv_video_player' => $flv_video_player,
1517 'activated_protection' =>
1519 'protection_text' => $this->
lng->txt(
"cont_sec_protected_text"),
1520 'enable_href' => $enable_href
1522 if ($this->link_frame !=
"") {
1531 $params[
"incl_elements_date"] = $this->obj->getLastUpdateOfIncludedElements();
1537 $md5 = md5(serialize(
$params) . $link_xml . $template_xml . $md5_adds);
1547 $md5 == $this->obj->getRenderMd5() &&
1548 ($this->obj->getLastChange() < $this->obj->getRenderedTime()) &&
1549 $this->obj->getRenderedTime() !=
"" &&
1550 $this->obj->old_nr == 0) {
1552 $output = $this->obj->getRenderedContent();
1554 $this->log->debug(
"Calling XSLT, content: " . substr($content, 0, 100));
1556 $output = $this->xsl->process($content,
$params);
1560 $output =
"<pre>" . $e->getMessage() .
"<br>" . htmlentities($content) .
"</pre>";
1566 && $this->obj->old_nr == 0) {
1567 $this->obj->writeRenderedContent($output, $md5);
1574 $this->
user->getPref(
"ilPageEditor_HTMLMode") !=
"disable")
1576 $output = str_replace(
"<",
"<", $output);
1577 $output = str_replace(
">",
">", $output);
1579 $output = str_replace(
"&",
"&", $output);
1603 $output = str_replace(
"\n",
"", $output);
1610 $output =
'<div class="copg-disabled-page"><div class="ilCopgDisabledText">' . $this->
getDisabledText() .
'</div>' . $output .
'</div>';
1614 $defs = $this->pc_definition->getPCDefinitions();
1615 foreach ($defs as $def) {
1616 $pc_class = $def[
"pc_class"];
1636 $up_pc = $this->request->getString(
"updated_pc_id_str");
1643 echo $tpl->
get(
"edit_page");
1656 return $output . $edit_init;
1659 return $tpl->
get() . $edit_init;
1668 while (is_int($start = strpos($output,
"<!--ParStart-->")) &&
1669 is_int($end = strpos($output,
"<!--ParEnd-->", $start))) {
1670 $output = substr($output, 0, $start) .
1673 array(
"{",
"}"),
1674 substr($output, $start + 15, $end - ($start + 15))
1676 substr($output, $end + 13);
1690 return array(
"deactivatePage" => $this->
lng->txt(
"cont_deactivate_page"),
1691 "activatePage" => $this->
lng->txt(
"cont_activate_page"));
1699 $media_mode = $this->request->getString(
"media_mode");
1700 $html_mode = $this->request->getString(
"html_mode");
1701 $js_mode = $this->request->getString(
"js_mode");
1702 if ($media_mode !=
"") {
1703 if ($media_mode ==
"disable") {
1704 $this->
user->writePref(
"ilPageEditor_MediaMode",
"disable");
1706 $this->
user->writePref(
"ilPageEditor_MediaMode",
"");
1709 if ($html_mode !=
"") {
1710 if ($html_mode ==
"disable") {
1711 $this->
user->writePref(
"ilPageEditor_HTMLMode",
"disable");
1713 $this->
user->writePref(
"ilPageEditor_HTMLMode",
"");
1716 if ($js_mode !=
"") {
1717 if ($js_mode ==
"disable") {
1718 $this->
user->writePref(
"ilPageEditor_JavaScript",
"disable");
1720 $this->
user->writePref(
"ilPageEditor_JavaScript",
"");
1724 $this->
ctrl->redirect($this,
"edit");
1733 bool $a_int_links =
false,
1734 bool $a_wiki_links =
false,
1735 bool $a_keywords =
false,
1737 $a_paragraph_styles =
true,
1738 $a_save_return =
true,
1741 $a_user_links =
false,
1742 \
ILIAS\COPage\Editor\Server\UIWrapper $ui_wrapper = null
1746 $lng = $DIC->language();
1748 $ctrl = $DIC->ctrl();
1751 $style_service = $DIC->contentStyle()->internal();
1752 $style_access_manager = $style_service->domain()->access(
1754 $DIC->user()->getId()
1756 $char_manager = $style_service->domain()->characteristic(
1758 $style_access_manager
1763 $f =
static function (
string $type,
string $code) use ($char_manager, $lng):
string {
1764 $title = $char_manager->getPresentationTitle(
"text_inline", $type);
1765 if ($title === $type) {
1766 $title = $lng->
txt(
"cont_char_style_" . $code);
1773 if ($a_style_id === 0) {
1775 "Comment" => array(
"code" =>
"com",
"txt" =>
$f(
"Comment",
"com")),
1776 "Quotation" => array(
"code" =>
"quot",
"txt" =>
$f(
"Quotation",
"quot")),
1777 "Accent" => array(
"code" =>
"acc",
"txt" =>
$f(
"Accent",
"acc")),
1778 "Code" => array(
"code" =>
"code",
"txt" =>
$f(
"Code",
"code"))
1781 foreach (ilPCParagraphGUI::_getTextCharacteristics($a_style_id,
true) as
$c) {
1782 if (in_array($c, [
"Strong",
"Important",
"Emph"])) {
1785 if (!isset($chars[$c])) {
1786 $title = $char_manager->getPresentationTitle(
"text_inline", $c);
1789 $chars[
"Code"] = array(
"code" =>
"code",
"txt" =>
$f(
"Code",
"code"));
1792 $chars[
"Comment"] = array(
"code" =>
"com",
"txt" =>
$f(
"Comment",
"com"));
1795 $chars[
"Quotation"] = array(
"code" =>
"quot",
"txt" =>
$f(
"Quotation",
"quot"));
1798 $chars[
"Accent"] = array(
"code" =>
"acc",
"txt" =>
$f(
"Accent",
"acc"));
1801 $chars[
$c] = array(
"code" =>
"",
"txt" => $title);
1807 foreach ($chars as
$key => $char) {
1810 "active_" . $char[
"code"],
1816 case "Code": $tag =
"code";
1819 $html =
'<' . $tag .
' class="ilc_' . $t .
'_' .
$key .
'" style="font-size:90%; margin-top:2px; margin-bottom:2px; position:static;">' . $char[
"txt"] .
"</" . $tag .
">";
1820 $char_formats[] = [
"text" => $html,
"action" =>
"selection.format",
"data" => [
"format" =>
$key]];
1825 $numbered_list = $ui->renderer()->render(
1826 $ui->factory()->symbol()->glyph()->numberedlist(null)
1829 $bullet_list = $ui->renderer()->render(
1830 $ui->factory()->symbol()->glyph()->bulletlist(null)
1833 $indent = $ui->renderer()->render(
1834 $ui->factory()->symbol()->glyph()->listindent(null)
1837 $outdent = $ui->renderer()->render(
1838 $ui->factory()->symbol()->glyph()->listoutdent(null)
1845 if ($aset->get(
"use_physical")) {
1851 foreach ([
"str",
"emp",
"imp",
"sup",
"sub"] as $c) {
1859 $c_formats[] = [
"text" =>
'<span class="ilc_text_inline_Strong">' . $str .
'</span>',
1860 "action" =>
"selection.format",
1861 "data" => [
"format" =>
"Strong"],
1862 "aria-label" => $lng->
txt(
"cont_text_str")
1866 $c_formats[] = [
"text" =>
'<span class="ilc_text_inline_Emph">' . $emp .
'</span>',
1867 "action" =>
"selection.format",
1868 "data" => [
"format" =>
"Emph"],
1869 "aria-label" => $lng->
txt(
"cont_text_emp")
1873 $c_formats[] = [
"text" =>
'<span class="ilc_text_inline_Important">' . $imp .
'</span>',
1874 "action" =>
"selection.format",
1875 "data" => [
"format" =>
"Important"],
1876 "aria-label" => $lng->
txt(
"cont_text_imp")
1880 $c_formats[] = [
"text" =>
'x<sup>2</sup>',
1881 "action" =>
"selection.format",
1882 "data" => [
"format" =>
"Sup"],
1883 "aria-label" => $lng->
txt(
"cont_text_sup")
1887 $c_formats[] = [
"text" =>
'x<sub>2</sub>',
1888 "action" =>
"selection.format",
1889 "data" => [
"format" =>
"Sub"],
1890 "aria-label" => $lng->
txt(
"cont_text_sub")
1896 $c_formats[] = [
"text" =>
"<i>A</i>",
1897 "action" => $char_formats,
1898 "aria-label" => $lng->
txt(
"copg_more_character_formats")
1900 $c_formats[] = [
"text" =>
'<i><strong><u>T</u></strong><sub>x</sub></i>',
1901 "action" =>
"selection.removeFormat",
1903 "aria-label" => $lng->
txt(
"copg_remove_formats")
1906 "cont_char_format" => $c_formats,
1909 "text" => $bullet_list,
1910 "action" =>
"list.bullet",
1912 "aria-label" => $lng->
txt(
"cont_bullet_list")
1915 "text" => $numbered_list,
1916 "action" =>
"list.number",
1918 "aria-label" => $lng->
txt(
"cont_numbered_list")
1922 "action" =>
"list.outdent",
1924 "aria-label" => $lng->
txt(
"cont_list_outdent")
1928 "action" =>
"list.indent",
1930 "aria-label" => $lng->
txt(
"cont_list_indent")
1939 if (count($ulists) > 1) {
1941 foreach ($ulists as $c) {
1942 $la[] = [
"action" =>
"list.bulletStyle",
"text" =>
$c,
"data" => [
"format" =>
$c]];
1944 $menu[
"copg_list_styles"][] = [
"text" => $lng->
txt(
"copg_list_style"),
"action" => $la];
1946 if (count($olists) > 1) {
1948 foreach ($olists as $c) {
1949 $la[] = [
"action" =>
"list.numberStyle",
"text" =>
$c,
"data" => [
"format" =>
$c]];
1951 $menu[
"copg_list_styles"][] = [
"text" => $lng->
txt(
"copg_list_style"),
"action" => $la];
1953 if (count($ilists) > 1) {
1955 foreach ($ilists as $c) {
1956 $la[] = [
"action" =>
"list.itemStyle",
"text" =>
$c,
"data" => [
"format" =>
$c]];
1958 $menu[
"copg_list_styles"][] = [
"text" => $lng->
txt(
"copg_list_item_style"),
"action" => $la];
1965 if ($a_wiki_links) {
1966 $links[] = [
"text" => $lng->
txt(
"cont_wiki_link_dialog"),
"action" =>
"link.wikiSelection",
"data" => [
1968 $links[] = [
"text" =>
"[[" . $lng->
txt(
"cont_wiki_page") .
"]]",
"action" =>
"link.wiki",
"data" => []];
1971 $links[] = [
"text" => $lng->
txt(
"cont_text_iln_link"),
"action" =>
"link.internal",
"data" => []];
1978 $links[] = [
"text" => $lng->
txt(
"cont_text_xln"),
"action" =>
"link.external",
"data" => []];
1980 if ($a_user_links) {
1981 $links[] = [
"text" => $lng->
txt(
"cont_link_user"),
"action" =>
"link.user",
"data" => []];
1986 $menu[
"cont_more_functions"] = [];
1987 $menu[
"cont_more_functions"][] = [
"text" => $lng->
txt(
"cont_link") .
'<i class="mce-ico mce-i-link"></i>',
"action" => $links];
1990 $menu[
"cont_more_functions"][] = [
"text" => $lng->
txt(
"cont_keyword"),
"action" =>
"selection.keyword",
"data" => []];
1992 $mathJaxSetting =
new ilSetting(
"MathJax");
1998 if ($mathJaxSetting->get(
"enable") || defined(
"URL_TO_LATEX")) {
1999 $menu[
"cont_more_functions"][] = [
"text" =>
'Tex',
"action" =>
"selection.tex",
"data" => []];
2007 $menu[
"cont_more_functions"][] = [
"text" => $lng->
txt(
"cont_footnote"),
"action" =>
"selection.fn",
"data" => []];
2010 $menu[
"cont_more_functions"][] = [
"text" => $lng->
txt(
"cont_anchor"),
"action" =>
"selection.anchor",
"data" => []];
2013 $btpl =
new ilTemplate(
"tpl.tiny_menu.html",
true,
true,
"Services/COPage");
2015 foreach ($menu as $section_title => $section) {
2016 foreach ($section as $item) {
2017 if (is_array($item[
"action"])) {
2019 foreach ($item[
"action"] as $i) {
2020 $buttons[] = $ui_wrapper->getButton(
2027 $i[
"aria-label"] ??
"" 2030 $dd = $ui->factory()->dropdown()->standard($buttons)->withLabel($item[
"text"])
2031 ->withAriaLabel($item[
"aria-label"] ??
"");
2032 $btpl->setCurrentBlock(
"button");
2033 $btpl->setVariable(
"BUTTON", $ui->renderer()->renderAsync($dd));
2035 $b = $ui_wrapper->getRenderedButton(
2042 $item[
"aria-label"] ??
"" 2044 $btpl->setCurrentBlock(
"button");
2045 $btpl->setVariable(
"BUTTON",
$b);
2047 $btpl->parseCurrentBlock();
2049 $btpl->setCurrentBlock(
"section");
2050 $btpl->setVariable(
"TXT_SECTION", $lng->
txt($section_title));
2051 $btpl->parseCurrentBlock();
2055 if ($a_paragraph_styles) {
2056 $sel = new \ParagraphStyleSelector($ui_wrapper, $a_style_id);
2057 $dd = $sel->getStyleSelector(
" ");
2058 $btpl->setCurrentBlock(
"par_edit");
2059 $btpl->setVariable(
"TXT_PAR_FORMAT", $lng->
txt(
"cont_par_format"));
2061 $btpl->setVariable(
"STYLE_SELECTOR", $ui->renderer()->render($dd));
2063 $btpl->parseCurrentBlock();
2067 $sel = new \SectionStyleSelector($ui_wrapper, $a_style_id);
2068 $dd = $sel->getStyleSelector(
" ", $type =
"par-action", $action =
"sec.class", $attr =
"class",
true);
2069 $btpl->setVariable(
"TXT_BLOCK", $lng->
txt(
"cont_sur_block_format"));
2070 $btpl->setVariable(
"BLOCK_STYLE_SELECTOR", $ui->renderer()->render($dd));
2073 $btpl->setVariable(
"TINY_HEADER", $lng->
txt(
"cont_text_editing"));
2076 $ui_wrapper->getRenderedButton($lng->
txt(
"cont_quit_text_editing"),
"par-action",
"save.return")
2085 $btpl->setVariable(
"TXT_SAVING", $lng->
txt(
"cont_saving"));
2088 "ilAdvSelListAnchorElement_char_style_selection",
2089 $lng->
txt(
"cont_more_character_styles"),
2093 return $btpl->get();
2099 $this->page_linker->setOffline($this->
getOutputMode() == self::OFFLINE);
2100 $this->
setLinkXml($this->page_linker->getLinkXML($this->getPageObject()->getInternalLinks()));
2105 $this->link_xml = $xml;
2106 $this->link_xml_set =
true;
2112 if ($this->profile_back_url !=
"") {
2119 return $this->
ctrl->getLinkTargetByClass(strtolower(get_class($this)),
"preview");
2124 $this->profile_back_url =
$url;
2131 $cm = $this->pm->content($this->
getPageObject()->getDomDoc());
2134 $this->requested_file_id
2145 $tpl =
new ilGlobalTemplate(
"tpl.fullscreen.html",
true,
true,
"Modules/LearningModule");
2152 $link_xml = $this->page_linker->getLinkXML($med_links);
2155 if ($this->request->getPageType() ===
"mep") {
2160 $pg_obj->buildDom();
2163 if ($this->requested_pg_id > 0) {
2164 $xml .= $pg_obj->getMediaAliasElement($this->request->getMobId());
2173 if ($a_fullscreen) {
2174 $mode =
"fullscreen";
2181 $params = array(
'mode' => $mode,
'enlarge_path' => $enlarge_path,
2182 'link_params' =>
"ref_id=" . $this->requested_ref_id,
'fullscreen_link' =>
"",
2184 'ref_id' => $this->requested_ref_id,
'webspace_path' => $wb_path);
2185 $output = $this->xsl->process($xml,
$params);
2207 $pg_obj->buildDom();
2208 $pg_obj->sendParagraph(
2209 $this->request->getString(
"par_id"),
2210 $this->request->getString(
"downloadtitle")
2219 while (is_int($pos = strpos($a_output,
"ilPageTocH", $cpos))) {
2224 $page_heads = array();
2225 foreach ($offsets as $os) {
2226 $level = (
int) substr($a_output, $os + 10, 1);
2227 if (in_array($level, array(1,2,3))) {
2228 $anchor = str_replace(
2231 substr($a_output, $os, strpos($a_output,
"-->", $os) - $os)
2235 $tag_start = stripos($a_output,
"<h" . $level .
" ", $os);
2236 $tag_end = stripos($a_output,
"</h" . $level .
">", $tag_start);
2237 $head = substr($a_output, $tag_start, $tag_end - $tag_start);
2240 $text_start = stripos($head,
">") + 1;
2241 $text_end = strripos($head,
"<!--", $text_start);
2242 $text = substr($head, $text_start, $text_end - $text_start);
2243 $page_heads[] = array(
"level" => $level,
"text" => $text,
2244 "anchor" => $anchor);
2247 if (count($page_heads) > 1) {
2248 $listing = $this->gui->listing();
2256 $page_toc_ph =
"<!--PageTocPH-->";
2257 foreach ($page_heads as $ind => $h) {
2263 if ($h[
"level"] == 2 && $c_par[1] > 0) {
2266 if ($h[
"level"] == 3 && $c_par[2] > 0) {
2270 $h[
"text"] = str_replace($page_toc_ph,
"", $h[
"text"]);
2273 $this->
ui->factory()->legacy(
"<a href='#" . $h[
"anchor"] .
"' class='ilc_page_toc_PageTOCLink'>" . $h[
"text"] .
"</a>"),
2279 if ($h[
"level"] == 1) {
2283 if ($h[
"level"] == 2) {
2289 "tpl.page_toc.html",
2294 $tpl->
setVariable(
"PAGE_TOC", $listing->autoNumbers(
true)->render());
2295 $tpl->
setVariable(
"TXT_PAGE_TOC", $this->
lng->txt(
"cont_page_toc"));
2299 $a_output = str_replace(
2300 "{{{{{PageTOC}}}}}",
2304 $numbers = $listing->getNumbers();
2306 if (count($numbers) > 0) {
2307 foreach ($numbers as $n) {
2308 $a_output = (strpos($a_output, $page_toc_ph) !==
false)
2309 ? substr_replace($a_output, $n .
" ", strpos($a_output, $page_toc_ph), strlen($page_toc_ph))
2314 $a_output = str_replace(
2315 "{{{{{PageTOC}}}}}",
2342 $a_output = str_replace(
2343 "{{{{{LV_show_adv}}}}}",
2344 $this->
lng->txt(
"cont_show_adv"),
2347 $a_output = str_replace(
2348 "{{{{{LV_hide_adv}}}}}",
2349 $this->
lng->txt(
"cont_hide_adv"),
2353 $a_output = str_replace(
2354 "{{{{{LV_show_adv}}}}}",
2358 $a_output = str_replace(
2359 "{{{{{LV_hide_adv}}}}}",
2389 if ($this->requested_history_mode) {
2392 $this->tabs_gui->activateTab(
"cont_preview");
2403 $collection = $this->tool_context->current()->getAdditionalData();
2415 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"),
true);
2416 $this->
ctrl->redirect($this,
"preview");
2421 if ($ptype ==
"cont" && $this->requested_ref_id > 0) {
2425 $this->
help->setScreenId(
"edit_" . $ptype);
2435 $this->
lng->toJS(
"paste");
2436 $this->
lng->toJS(
"delete");
2437 $this->
lng->toJS(
"cont_delete_content");
2438 $this->
lng->toJS(
"copg_confirm_el_deletion");
2439 $this->
lng->toJS(
"cont_saving");
2440 $this->
lng->toJS(
"cont_ed_par");
2441 $this->
lng->toJS(
"cont_no_block");
2442 $this->
lng->toJS(
"copg_error");
2443 $this->
lng->toJS(
"cont_ed_click_to_add_pg");
2444 $this->
lng->toJS(
"cont_ed_new_item_after");
2445 $this->
lng->toJS(
"cont_ed_new_item_before");
2446 $this->
lng->toJS(
"cont_ed_item_up");
2447 $this->
lng->toJS(
"cont_ed_item_down");
2448 $this->
lng->toJS(
"cont_ed_delete_item");
2449 $this->
lng->toJS(
"copg_edit_iframe_title");
2450 $this->
lng->toJS(
"copg_par_format_selection");
2453 $this->tpl->addJavaScript(
"./Services/UIComponent/AdvancedSelectionList/js/AdvancedSelectionList.js");
2460 $info = $this->
lng->txt(
"content_no_edit_lock");
2462 $info .=
"</br>" . $this->
lng->txt(
"content_until") .
": " .
2464 $info .=
"</br>" . $this->
lng->txt(
"obj_usr") .
": " .
2467 $back_link = $this->
ui->factory()->link()->standard(
2468 $this->
lng->txt(
"back"),
2469 $this->
ctrl->getLinkTarget($this,
"finishEditing")
2472 $mbox = $this->
ui->factory()->messageBox()->info($info)
2473 ->withLinks([$back_link]);
2474 $rendered_mbox = $this->
ui->renderer()->render($mbox);
2476 if (!$this->
ctrl->isAsynch()) {
2477 $this->tpl->setContent($rendered_mbox);
2479 echo $rendered_mbox;
2501 $info = $this->
lng->txt(
"cont_got_lock_release");
2504 $mbox = $ui->factory()->messageBox()->info($info);
2506 return $ui->renderer()->render($mbox);
2511 $pl_pc_id = $this->request->getPlaceholderPCId();
2512 $this->obj->buildDom();
2513 $this->obj->addHierIDs();
2515 return $this->
edit();
2536 $this->tpl =
new ilGlobalTemplate(
"tpl.fullscreen.html",
true,
true,
"Services/COPage");
2537 $this->tpl->setCurrentBlock(
"ContentStyle");
2538 $this->tpl->setVariable(
"LOCATION_CONTENT_STYLESHEET", 0);
2539 $this->tpl->parseCurrentBlock();
2541 $this->tpl->setVariable(
2546 $this->tpl->setCurrentBlock(
"ilMedia");
2549 if ($this->requested_pg_id > 0) {
2551 $pg_obj->buildDom();
2556 $xml .= $pg_obj->getMediaAliasElement($this->request->getMobId());
2566 $mode =
"fullscreen";
2567 $params = array(
'mode' => $mode,
2569 'webspace_path' => $wb_path);
2570 $output = $this->xsl->process($xml,
$params);
2573 $this->tpl->setVariable(
"MEDIA_CONTENT", $output);
2583 if (is_array($a_error)) {
2584 $error_str =
"<strong>Error(s):</strong><br>";
2585 foreach ($a_error as $error) {
2586 $err_mess = implode(
" - ", $error);
2587 if (!is_int(strpos($err_mess,
":0:"))) {
2588 $error_str .= htmlentities($err_mess) .
"<br />";
2591 $this->tpl->setVariable(
"MESSAGE", $error_str);
2597 $this->tabs_gui->clearTargets();
2598 $this->tabs_gui->setBackTarget(
2599 $this->
lng->txt(
"back"),
2600 $this->
ctrl->getLinkTarget($this,
"edit")
2606 $this->tabs_gui->clearTargets();
2607 $this->tabs_gui->setBackTarget(
2608 $this->
lng->txt(
"back"),
2609 $this->
ctrl->getLinkTarget($this,
"history")
2624 $this->tpl->addJavaScript(
"./Services/COPage/js/page_history.js");
2627 $table_gui->setId(
"hist_table");
2634 'sortkey' => 999999,
2636 $table_gui->setData($entries);
2637 return $table_gui->getHTML();
2652 $this->
ctrl->setParameter($this,
"rollback_nr", $this->requested_old_nr);
2653 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"rollback"));
2654 $c_gui->setHeaderText($this->
lng->txt(
"cont_rollback_confirmation"));
2655 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"history");
2656 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"rollback");
2658 $hentry = $this->obj->getHistoryEntry($this->requested_old_nr);
2662 $this->requested_old_nr,
2666 $this->tpl->setContent($c_gui->getHTML());
2678 $hentry = $this->obj->getHistoryEntry(
2679 $this->request->getString(
"rollback_nr")
2682 if ($hentry[
"content"] !=
"") {
2683 $this->obj->setXMLContent($hentry[
"content"]);
2684 $this->obj->buildDom(
true);
2685 if ($this->obj->update()) {
2686 $this->
ctrl->redirect($this,
"history");
2689 $this->
ctrl->redirect($this,
"history");
2694 $this->
help->setScreenIdComponent(
"copg");
2700 if ($this->use_meta_data) {
2702 $this->meta_data_rep_obj,
2703 $this->meta_data_type,
2704 $this->meta_data_sub_obj_id
2706 $mdtab = $mdgui->getTab();
2708 $this->tabs_gui->addTarget(
2712 "ilobjectmetadatagui" 2716 return (
string) $mdtab;
2719 public function getTabs(
string $a_activate =
""): void
2732 $this->tabs_gui->addTarget(
"pg", $this->
ctrl->getLinkTarget($this,
"preview"), array(
"",
"preview"));
2734 $this->tabs_gui->addTarget(
"cont_preview", $this->
ctrl->getLinkTarget($this,
"preview"), array(
"",
"preview"));
2737 if ($this->use_meta_data) {
2739 $this->meta_data_rep_obj,
2740 $this->meta_data_type,
2741 $this->meta_data_sub_obj_id
2743 $mdtab = $mdgui->getTab();
2745 $this->tabs_gui->addTarget(
2749 "ilobjectmetadatagui" 2757 if (is_array($this->tab_hook)) {
2758 $func = $this->tab_hook[
"func"];
2759 $this->tab_hook[
"obj"]->$func();
2772 $tpl =
new ilTemplate(
"tpl.page_compare.html",
true,
true,
"Services/COPage");
2778 $compare = $this->compare->compare(
2785 $lpage = $compare[
"l_page"];
2787 $cfg->setPreventHTMLUnmasking(
true);
2796 $lhtml = str_replace(
"<br />",
"<br />", $lhtml);
2800 $rpage = $compare[
"r_page"];
2808 $rhtml = str_replace(
"<br />",
"<br />", $rhtml);
2812 $tpl->
setVariable(
"TXT_MODIFIED", $this->
lng->txt(
"cont_pc_modified"));
2813 $tpl->
setVariable(
"TXT_DELETED", $this->
lng->txt(
"cont_pc_deleted"));
2820 $a_html = str_replace(
"[ilDiffInsStart]",
'<span class="ilDiffIns">', $a_html);
2821 $a_html = str_replace(
"[ilDiffDelStart]",
'<span class="ilDiffDel">', $a_html);
2822 $a_html = str_replace(
"[ilDiffInsEnd]",
'</span>', $a_html);
2823 $a_html = str_replace(
"[ilDiffDelEnd]",
'</span>', $a_html);
2835 $atpl =
new ilTemplate(
"tpl.page_activation.php",
true,
true,
"Services/COPage");
2838 $atpl->setVariable(
"FORM", $this->
form->getHTML());
2839 $this->tpl->setContent($atpl->get());
2848 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
2849 $this->
form->setTitle($this->
lng->txt(
"cont_page_activation"));
2853 $rad_op1 =
new ilRadioOption($this->
lng->txt(
"cont_activated"),
"activated");
2855 $rad->addOption($rad_op1);
2856 $rad_op2 =
new ilRadioOption($this->
lng->txt(
"cont_deactivated"),
"deactivated");
2857 $rad->addOption($rad_op2);
2858 $rad_op3 =
new ilRadioOption($this->
lng->txt(
"cont_scheduled_activation"),
"scheduled");
2861 $dt_prop->setRequired(
true);
2862 $dt_prop->setShowTime(
true);
2866 $dt_prop2->setShowTime(
true);
2867 $rad_op3->addSubItem($dt_prop2);
2871 $cb->setInfo($this->
lng->txt(
"cont_show_activation_info_info"));
2872 $rad_op3->addSubItem($cb);
2875 $rad->addOption($rad_op3);
2877 $this->
form->addCommandButton(
"saveActivation", $this->
lng->txt(
"save"));
2879 $this->
form->addItem($rad);
2887 $activation =
"deactivated";
2889 $activation =
"activated";
2892 $dt_prop = $this->
form->getItemByPostVar(
"start");
2894 $activation =
"scheduled";
2900 $dt_prop = $this->
form->getItemByPostVar(
"end");
2902 $activation =
"scheduled";
2909 $this->
form->getItemByPostVar(
"activation")->setValue($activation);
2910 $this->
form->getItemByPostVar(
"show_activation_info")->setChecked($this->
getPageObject()->getShowActivationInfo());
2920 if ($this->
form->checkInput()) {
2925 $this->request->getString(
"show_activation_info")
2927 $activation = $this->request->getString(
"activation");
2928 if ($activation ==
"deactivated") {
2931 if ($activation ==
"scheduled") {
2941 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
2942 $this->
ctrl->redirect($this,
"editActivation");
2944 $this->
form->setValuesByPost();
2945 $this->tpl->setContent($this->
form->getHTML());
2952 object $a_content_object = null,
2953 bool $a_enable_private_notes =
true,
2954 bool $a_enable_public_notes =
false,
2955 bool $a_enable_notes_deletion =
false,
2956 callable $a_callback = null,
2957 bool $export =
false 2960 if (!$a_content_object) {
2961 throw new ilException(
"No content object given.");
2982 $comments_gui = $this->notes->gui()->getCommentsGUI(
2983 $a_content_object->getParentId(),
2984 $a_content_object->getId(),
2985 $a_content_object->getParentType()
2987 $comments_gui->setUseObjectTitleHeader(
false);
2990 if ($a_enable_private_notes) {
2991 $comments_gui->enablePrivateNotes();
2993 if ($a_enable_public_notes) {
2994 $comments_gui->enablePublicNotes();
2995 if ($a_enable_notes_deletion) {
2996 $comments_gui->enablePublicNotesDeletion(
true);
3000 $comments_gui->setExportMode();
3004 $comments_gui->addObserver($a_callback);
3007 $next_class = $this->
ctrl->getNextClass($this);
3008 if (in_array($next_class, [
"ilnotegui",
"ilcommentgui"])) {
3009 $html = $this->
ctrl->forwardCommand($comments_gui);
3011 $html = $comments_gui->getListHTML();
3022 $this->request->getString(
"type"),
3023 $this->request->getString(
"id"),
3024 $this->request->getString(
"answer")
3040 $this->tabs_gui->activateTab(
"edit");
3042 $this->tpl->setContent($form->
getHTML());
3052 $ac->setInternalLinkDefault(
"Media_Media", 0);
3053 $ac->setInternalLinkFilterTypes(array(
"PageObject_FAQ",
"GlossaryItem",
"Media_Media",
"Media_FAQ"));
3054 $val = $this->obj->getInitialOpenedContent();
3055 if (($val[
"id"] ??
'') !=
"" && ($val[
"type"] ??
'') !=
"") {
3056 $ac->setValue($val[
"type"] .
"|" . $val[
"id"] .
"|" . $val[
"target"]);
3063 $form->
setTitle($this->
lng->txt(
"cont_initial_attached_content"));
3071 $this->obj->saveInitialOpenedContent(
3072 $this->request->getString(
"opened_content_ajax_type"),
3073 $this->request->getInt(
"opened_content_ajax_id"),
3074 $this->request->getString(
"opened_content_ajax_target")
3077 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"));
3078 $this->
ctrl->redirect($this,
"edit");
3091 $l = $this->request->getString(
"totransl");
3097 $this->
ctrl->setParameter($this,
"transl", $l);
3098 $this->
ctrl->redirect($this,
"edit");
3112 $l = $this->request->getString(
"totransl");
3113 $this->
ctrl->setParameter($this,
"totransl", $l);
3114 $this->
lng->loadLanguageModule(
"meta");
3117 $cgui->setFormAction($this->
ctrl->getFormAction($this));
3118 $cgui->setHeaderText($this->
lng->txt(
"cont_page_translation_does_not_exist") .
": " .
3119 $this->
lng->txt(
"meta_l_" . $l));
3120 $cgui->setCancel($this->
lng->txt(
"cancel"),
"editMasterLanguage");
3121 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"createPageTranslation");
3122 $this->tpl->setContent($cgui->getHTML());
3130 $this->
ctrl->setParameter($this,
"transl",
"-");
3131 $this->
ctrl->redirect($this,
"edit");
3139 $l = $this->request->getString(
"totransl");
3148 $p->copyPageToTranslation($l);
3149 $this->
ctrl->setParameter($this,
"transl", $l);
3150 $this->
ctrl->redirect($this,
"edit");
3159 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"cont_page_lock_released"),
true);
3165 $this->
ctrl->redirect($this,
"preview");
3187 foreach ($collector->getJavascriptFiles() as $js) {
3191 foreach ($collector->getCssFiles() as $css) {
3195 foreach ($collector->getOnloadCode() as $code) {
printToStdout(string $part=self::DEFAULT_BLOCK, bool $has_tabs=true, bool $skip_main_menu=false)
static getWebspaceDir(string $mode="filesystem")
get webspace directory
string $template_output_var
setLinkFrame(string $l_frame="")
setEditPreview(bool $a_editpreview)
Set Display first Edit tab, then Preview tab, instead of Page and Edit.
history()
Get history table as HTML.
releasePageLock()
Release page lock.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getTinyMenu(string $a_par_type, bool $a_int_links=false, bool $a_wiki_links=false, bool $a_keywords=false, $a_style_id=0, $a_paragraph_styles=true, $a_save_return=true, $a_anchors=false, $a_save_new=true, $a_user_links=false, \ILIAS\COPage\Editor\Server\UIWrapper $ui_wrapper=null)
Get Tiny Menu.
string $exp_target_script
const SEC_PROTECT_PROTECTED
setOpenPlaceHolder(string $a_val)
static _getTargetsOfSource(string $a_source_type, int $a_source_id, string $a_source_lang="-")
Get all targets of a source object (e.g., a page)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static lookupSettingByParentType(string $a_par_type, string $a_name, string $a_default='0')
Lookup setting by parent type.
saveInitialOpenedContent()
setActivationListener(object $a_obj, string $a_meth)
string $open_place_holder
ILIAS COPage Page PageManager $pm
static getInitHTML(string $a_url)
Get initialisation HTML to use internal link editing.
rollbackConfirmation()
Rollback confirmation.
setEditorToolContext()
Set editor tool context.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
initActivationForm()
Init activation form.
getLinkTargetByClass( $a_class, string $a_cmd=null, string $a_anchor=null, bool $is_async=false, bool $has_xml_style=false)
postOutputProcessing(string $a_output)
Finalizing output processing.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Editing session repository.
string $meta_data_observer_func
editMasterLanguage()
Edit master language.
ILIAS COPage PageLinker $page_linker
static getLogger(string $a_component_id)
Get component logger.
static collectContentIncludes(ilPageObject $a_page, DOMDocument $a_domdoc)
get all content includes that are used within the page
enableNotes(bool $a_enabled, int $a_parent_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
setViewPageLink(string $a_link, string $a_target="")
set link for "view page" button
static initDateTimePicker()
setParentType(string $a_val)
ILIAS GlobalScreen ScreenContext ContextServices $tool_context
special template class to simplify handling of ITX/PEAR
setOutputMode(string $a_mode=self::PRESENTATION)
touchBlock(string $block)
overwrites ITX::touchBlock.
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
ilObject $meta_data_rep_obj
setPageBackTitle(string $a_title)
Class ChatMainBarProvider .
replaceCurlyBrackets(string $output)
setPageLinker(\ILIAS\COPage\PageLinker $page_linker)
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
compareVersion()
Compares two revisions of the page.
static initJS(ilGlobalTemplateInterface $a_main_tpl=null)
getAdvMdRecordObject()
Get adv md record type.
static _getListCharacteristics(int $a_style_id, string $type)
int $requested_history_mode
User Interface for NewsItem entities.
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false)
setLanguage(string $a_val)
setCompareMode(bool $a_val)
setTemplateTargetVar(string $a_variable)
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
confirmPageTranslationCreation()
Confirm page translation creation.
setPageConfig(ilPageConfig $a_val)
static lookupTitle(int $a_page_id)
setEnabledPageFocus(bool $a_enabledpagefocus)
ILIAS COPage InternalGUIService $gui
presentation(string $a_mode=self::PRESENTATION)
static _lookupOwner(int $obj_id)
Lookup owner user ID for object ID.
EditSessionRepository $edit_repo
loadLanguageModule(string $a_module)
Load language module.
setOfflineDirectory(string $offdir)
setHeader(string $a_title="")
setQEditTabs(string $a_active)
Set question editing tabs.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
showEditToolbar()
Show edit toolbar.
executeCommand()
execute command
getActivationFormValues()
Get values for activation form.
saveActivation()
Save Activation.
switchToLanguage()
Switch to language.
insertResources(string $a_output)
static getStyleSheetLocation(string $mode="output", string $a_css_name="", string $a_css_location="")
get full style sheet file name (path inclusive) of current user
static saveQuestionAnswer(string $a_type, int $a_id, string $a_answer)
static hasSuccessorPage(int $a_cont_obj_id, int $a_page_id)
checks if page has a successor page
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setStyleId(int $a_styleid)
replaceDiffTags(string $a_html)
static _getQuestionGUI(string $question_type='', int $question_id=-1)
Creates a question gui representation and returns the alias to the question gui.
const CMD_SHOW
command constants
previewHistory()
Preview history.
string $requested_file_id
setTabHook(object $a_object, string $a_function)
setTemplateOutput(bool $a_output=true)
isEnabledChangeComments()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static insertResourcesIntoPageContent(string $a_content)
Insert resources (see also ilContainerContentGUI::determinePageEmbeddedBlocks for presentation) ...
static addJavaScript(ilGlobalTemplate $main_tpl=null)
Add javascript files that are necessary to run accordion.
determineSourcecodeDownloadScript()
ILIAS TestQuestionPool QuestionInfoService $questioninfo
GUI class for public user profile presentation.
setAdvMdRecordObject(int $a_adv_ref_id, string $a_adv_type, string $a_adv_subtype="-")
Set object, that defines the adv md records being used.
addResourcesToTemplate(ilGlobalTemplateInterface $tpl)
Add resources to template.
determineFullscreenLink()
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
int $meta_data_sub_obj_id
string $presentation_title
static addCss()
Add required css.
static getNamePresentation( $a_user_id, bool $a_user_image=false, bool $a_profile_link=false, string $a_profile_back_link='', bool $a_force_first_lastname=false, bool $a_omit_login=false, bool $a_sortable=true, bool $a_return_data_array=false, $a_ctrl_path='ilpublicuserprofilegui')
Default behaviour is:
static _lookupTitle(int $obj_id)
__construct(string $a_parent_type, int $a_id, int $a_old_nr=0, bool $a_prevent_get_id=false, string $a_lang="", string $concrete_lang="")
setRenderPageContainer(bool $a_val)
setRawPageContent(bool $a_rawpagecontent)
Set Get raw page content only.
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
setEnabledHref(bool $enable)
getComponentPluginsXML()
Put information about activated plugins into XML.
ILIAS COPage Link LinkManager $link
ilGlobalTemplateInterface $tpl
getEnablePCType(string $a_pc_type)
object $meta_data_observer_obj
determineFileDownloadLink()
setPageObject(ilPageObject $a_pg_obj)
setAbstractOnly(bool $a_val, string $pcid="")
Get only abstract (first text paragraph)
Class ilPageObject Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)
ILIAS COPage Editor GUIService $editor_gui
enableChangeComments(bool $a_enabled)
download_paragraph()
download source code paragraph
ilComponentFactory $component_factory
static getBaseContentStylePath()
bool $enabledcontentincludes
static initjQueryUI(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery-UI JS-File to the global template (see included_components.txt for included components)
setFullscreenLink(string $a_fullscreen_link)
getTabs(string $a_activate="")
addJavaScript(string $a_js_file, bool $a_add_version_parameter=true, int $a_batch=2)
Add a javascript file that should be included in the header.
setSourcecodeDownloadScript(string $script_name)
setPresentationTitle(string $a_title="")
string $file_download_link
addOnLoadCode(string $a_code, int $a_batch=2)
Add on load code.
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
editActivation()
Edit activation (only, if scheduled page activation is activated in administration) ...
displayMedia(bool $a_fullscreen=false)
getActivationCaptions()
Get captions for activation action menu entries.
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
static isActivated()
Checks whether Map feature is activated.
setFileDownloadLink(string $a_download_link)
ILIAS Notes Service $notes
form( $class_path, string $cmd, string $submit_caption="")
bool $render_page_container
setQuestionHTML(array $question_html)
ILIAS COPage Compare PageCompare $compare
initialOpenedContent()
Initially opened content.
rollback()
Rollback to a previous version.
activateMetaDataEditor(ilObject $a_rep_obj, string $a_type, int $a_sub_obj_id, object $a_observer_obj=null, string $a_observer_func="")
Activate meda data editor.
static initjQuery(ilGlobalTemplateInterface $a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
static getInstance()
Singleton: get instance for use in ILIAS requests with a config loaded from the settings.
ilPageConfig $page_config
setTemplate(ilGlobalTemplateInterface $main_tpl)
setEditMode()
Set edit mode.
ILIAS COPage Xsl XslManager $xsl
onFeedbackEditingForwarding()
getAdditionalPageActions()
Get additional page actions.
string $offline_directory
static getFlashVideoPlayerFilename(bool $a_fullpath=false)
initPageObject()
Init page object.
showPage()
display content of page
link(string $caption, string $href, bool $new_viewport=false)
getNotesHTML(object $a_content_object=null, bool $a_enable_private_notes=true, bool $a_enable_public_notes=false, bool $a_enable_notes_deletion=false, callable $a_callback=null, bool $export=false)
Get html for public and/or private notes.
setIntLinkReturn(string $a_return)
Page component editing request.
insertPageToc(string $a_output)
getSourcecodeDownloadScript()
setOldNr(int $a_val)
Set old nr (historic page)
processAnswer()
Process answer.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
string $sourcecode_download_script
static _lookupType(int $id, bool $reference=false)
setProfileBackUrl(string $url)
setEnabledTabs(bool $a_enabledtabs)
setEnabledNews(bool $a_enabled, int $a_news_obj_id=0, string $a_news_obj_type="")
static getCacheTriggerString(ilPageObject $a_page)
Get page cache update trigger string.
setPrependingHtml(string $a_prependinghtml)
ILIAS COPage PC PCDefinition $pc_definition
isPageContainerToBeRendered()
createPageTranslation()
Create page translation.
showMediaFullscreen(int $a_style_id=0)
show fullscreen view of media object
static getInstance(string $a_parent_type, int $a_id=0, int $a_old_nr=0, string $a_lang="-")
Get page object instance.
setEnablePCType(string $a_pc_type, bool $a_val)
insertAdvTrigger(string $a_output)
Insert adv content trigger.
static initMediaElementJs(ilGlobalTemplateInterface $a_tpl=null)
Init mediaelement.js scripts.
checkLangPageAvailable(int $id, string $lang)
setLinkParams(string $l_params="")
setTabs(ilTabsGUI $a_tabs)
setEnableEditing(bool $a_enableediting)
displayValidationError($a_error)
display validation error
addCss(string $a_css_file, string $media="screen")
Add a css file that should be included in the header.