33 protected \ILIAS\COPage\InternalGUIService
$gui;
36 protected \ILIAS\DI\UIServices
$ui;
37 protected \ilLanguage
$lng;
42 protected \ilDBInterface
$db;
49 $this->
ui = $DIC->ui();
50 $this->
lng = $DIC->language();
52 $this->
user = $DIC->user();
53 $this->
ctrl = $DIC->ctrl();
54 $this->db =
$DIC->database();
55 $this->component_factory =
$DIC[
"component.factory"];
56 $this->gui =
$DIC->copage()->internal()->gui();
59 $this->ui_wrapper =
new Server\UIWrapper($this->
ui, $this->
lng);
60 $this->pc_definition =
$DIC
73 switch ($query[
"action"]) {
77 case "component.edit.form":
80 throw new Exception(
"Unknown action " . $query[
"action"]);
86 $f = $this->
ui->factory();
87 $dd =
$f->dropdown()->standard([
88 $f->link()->standard(
"label",
"#")
90 $r = $this->
ui->renderer();
92 $dd_html = preg_replace(
'/\s*id="[^"]*"/',
'', $r->render($dd));
94 $o->dropdown = $dd_html;
113 count($this->
user->getPCClipboardContent()) > 0;
116 if ($this->pc_id !==
"") {
117 $type = $this->page_gui->getPageObject()->getContentObjectForPcId($this->pc_id)->getType();
118 $def = $this->pc_definition->getPCDefinitionByType($type);
119 $o->initialComponent = $def[
"name"];
122 $o->initialComponent =
"";
123 $o->initialPCId =
"";
126 return new Server\Response($o);
131 $config = new \stdClass();
132 $config->user = $this->
user->getLogin();
133 $config->content_css =
136 "./components/ILIAS/COPage/css/tiny_extra.css";
137 $config->text_formats = \ilPCParagraphGUI::_getTextCharacteristics($this->page_gui->getStyleId());
138 $config->text_block_formats = [];
139 foreach ([
"text_block",
"heading1",
"heading2",
"heading3"] as $type) {
140 $dummy_pc = new \ilPCParagraphGUI($this->page_gui->getPageObject(),
null,
"");
141 $dummy_pc->setStyleId($this->page_gui->getStyleId());
142 $dummy_pc->getCharacteristicsOfCurrentStyle([$type]);
143 foreach ($dummy_pc->getCharacteristics() as $char =>
$txt) {
144 $config->text_block_formats[$char] =
$txt;
147 $config->editPlaceholders = $this->page_gui->getPageConfig()->getEnablePCType(
"PlaceHolder");
148 $config->activatedProtection =
161 $config = $this->page_gui->getPageConfig();
162 foreach ($config->getEnabledTopPCTypes() as $def) {
163 $commands[$def[
"pc_type"]] =
$lng->
txt(
"cont_ed_insert_" . $def[
"pc_type"]);
167 if (count($this->page_gui->getPageObject()->getContentTemplates()) > 0) {
168 $commands[
"templ"] =
$lng->
txt(
"cont_ed_insert_templ");
172 foreach ($this->component_factory->getActivePluginsInSlot(
"pgcp") as
$plugin) {
173 if (
$plugin->isValidParentType($this->page_gui->getPageObject()->getParentType())) {
174 $commands[
"plug_" .
$plugin->getPluginName()] =
188 $tpl = new \ilTemplate(
"tpl.page_edit_help.html",
true,
true,
"components/ILIAS/COPage/Editor");
189 $tpl->setCurrentBlock(
"help");
190 $tpl->setVariable(
"TXT_ADD_EL",
$lng->
txt(
"cont_add_elements"));
191 $tpl->setVariable(
"PLUS", $this->gui->symbol()->glyph(
"add")->render());
192 $tpl->setVariable(
"DRAG_ARROW", $this->gui->symbol()->glyph(
"next")->render());
193 $tpl->setVariable(
"TXT_DRAG",
$lng->
txt(
"cont_drag_and_drop_elements"));
194 $tpl->setVariable(
"TXT_EDIT",
$lng->
txt(
"cont_click_edit"));
195 $tpl->setVariable(
"TXT_SEL",
$lng->
txt(
"cont_shift_click_to_select"));
196 $tpl->parseCurrentBlock();
208 $tpl = new \ilTemplate(
"tpl.page_edit_help.html",
true,
true,
"components/ILIAS/COPage/Editor");
209 $tpl->setCurrentBlock(
"multi-help");
210 $tpl->setVariable(
"TXT_SEL",
$lng->
txt(
"cont_click_multi_select"));
211 $tpl->parseCurrentBlock();
222 $tpl = new \ilTemplate(
"tpl.top_actions.html",
true,
true,
"components/ILIAS/COPage/Editor");
225 $tpl->setVariable(
"DROPDOWN",
$ui->renderer()->renderAsync($dd));
227 if ($this->page_gui->getPageObject()->getEffectiveEditLockTime() > 0) {
228 $mess = $this->page_gui->getBlockingInfoMessage();
229 $tpl->setVariable(
"MESSAGE", $mess);
230 $b =
$ui->factory()->button()->standard(
231 $lng->
txt(
"cont_finish_editing"),
235 $b =
$ui->factory()->button()->standard(
236 $lng->
txt(
"cont_finish_editing"),
241 $tpl->setVariable(
"QUIT_BUTTON",
$ui->renderer()->renderAsync(
$b));
243 $html = $this->ui_wrapper->getRenderedViewControl(
245 [
"Page",
"switch.single",
$lng->
txt(
"cont_edit_comp")],
246 [
"Page",
"switch.multi",
$lng->
txt(
"cont_edit_multi")]
249 $tpl->setVariable(
"SWITCH", $html);
259 $config = $this->page_gui->getPageConfig();
260 $page = $this->page_gui->getPageObject();
265 $sel_media_mode = (
$user->
getPref(
"ilPageEditor_MediaMode") !=
"disable");
266 $sel_html_mode = (
$user->
getPref(
"ilPageEditor_HTMLMode") !=
"disable");
270 if ($config->getEnableActivation()) {
271 $captions = $this->page_gui->getActivationCaptions();
273 if ($page->getActive()) {
274 $items[] =
$ui->factory()->link()->standard(
275 $captions[
"deactivatePage"],
279 $items[] =
$ui->factory()->link()->standard(
280 $captions[
"activatePage"],
287 if ($config->getUseAttachedContent()) {
288 $items[] =
$ui->factory()->link()->standard(
289 $lng->
txt(
"cont_initial_attached_content"),
302 if ($sel_media_mode) {
304 $items[] =
$ui->factory()->link()->standard(
305 $lng->
txt(
"cont_deactivate_media"),
310 $items[] =
$ui->factory()->link()->standard(
311 $lng->
txt(
"cont_activate_media"),
318 if (!$config->getPreventHTMLUnmasking()) {
319 if ($sel_html_mode) {
321 $items[] =
$ui->factory()->link()->standard(
322 $lng->
txt(
"cont_deactivate_html"),
327 $items[] =
$ui->factory()->link()->standard(
328 $lng->
txt(
"cont_activate_html"),
335 $lm_set = new \ilSetting(
"lm");
336 if ($this->page_gui->getEnableEditing() && $this->user->getId() !=
ANONYMOUS_USER_ID) {
338 if (
$lm_set->get(
"page_history", 1)) {
339 $items[] =
$ui->factory()->link()->standard(
345 if ($config->getEnableScheduledActivation()) {
346 $items[] =
$ui->factory()->link()->standard(
353 $items[] =
$ui->factory()->link()->standard(
358 if ($this->page_gui->getEnabledNews()) {
359 $items[] =
$ui->factory()->link()->standard(
365 if (($md_link = $this->page_gui->getMetaDataLink()) !==
"") {
366 $items[] =
$ui->factory()->link()->standard(
373 if ($this->page_gui->use_meta_data) {
374 $mdgui = new \ilObjectMetaDataGUI(
375 $this->page_gui->meta_data_rep_obj,
376 $this->page_gui->meta_data_type,
377 $this->page_gui->meta_data_sub_obj_id
379 $mdtab = $mdgui->getTab();
381 $items[] =
$ui->factory()->link()->standard(
389 if ($this->page_gui->getEnabledNews()) {
390 $items[] =
$ui->factory()->link()->standard(
398 foreach ($this->page_gui->getAdditionalPageActions() as $item) {
402 return $ui->factory()->dropdown()->standard($items);
410 $config = $this->page_gui->getPageConfig();
411 $page = $this->page_gui->getPageObject();
420 if ($config->getMultiLangSupport()) {
421 $ot = (
new TranslationsRepository(
423 ))->getFor($page->getParentId());
425 if ($ot->getContentTranslationActivated()) {
428 if ($page->getLanguage() !=
"-") {
429 $l = $ot->getBaseLanguage();
430 $items[] =
$ui->factory()->link()->standard(
431 $lng->
txt(
"cont_edit_language_version") .
": " .
437 foreach ($ot->getLanguages() as $al =>
$lang) {
438 if ($page->getLanguage() != $al &&
439 $al != $ot->getBaseLanguage()) {
441 $items[] =
$ui->factory()->link()->standard(
442 $lng->
txt(
"cont_edit_language_version") .
": " .
459 $config = $this->page_gui->getPageConfig();
460 $page = $this->page_gui->getPageObject();
465 if ($config->getMultiLangSupport()) {
466 $ot = (
new TranslationsRepository(
468 ))->getFor($page->getParentId());
470 if ($ot->getContentTranslationActivated()) {
473 $ml_gui = new \ilPageMultiLangGUI(
474 $page->getParentType(),
477 $info = $ml_gui->getMultiLangInfo($page->getLanguage());
478 $info =
$ui->renderer()->renderAsync(
$ui->factory()->messageBox()->info(
$info));
494 "all" =>
"select_all",
495 "none" =>
"cont_select_none",
498 "activate" =>
"cont_ed_enable",
499 "characteristic" =>
"cont_assign_characteristic"
503 return $this->ui_wrapper->getRenderedButtonGroups($groups);
513 $html = $this->ui_wrapper->getRenderedInfoBox(
$lng->
txt(
"cont_sel_el_use_paste"));
523 $html = $this->ui_wrapper->getRenderedFailureBox();
530 $html = $this->ui_wrapper->getRenderedModalFailureBox();
539 $tpl = new \ilTemplate(
"tpl.format_selection.html",
true,
true,
"components/ILIAS/COPage/Editor");
540 $tpl->setVariable(
"TXT_PAR",
$lng->
txt(
"cont_choose_characteristic_text"));
541 $tpl->setVariable(
"TXT_SECTION",
$lng->
txt(
"cont_choose_characteristic_section"));
542 $tpl->setVariable(
"TXT_MEDIA",
$lng->
txt(
"cont_media"));
545 $tpl->setVariable(
"PAR_SELECTOR",
$ui->renderer()->renderAsync($par_sel->getStyleSelector(
" ",
"format",
"format.paragraph",
"format")));
548 $tpl->setVariable(
"SEC_SELECTOR",
$ui->renderer()->renderAsync($sec_sel->getStyleSelector(
" ",
"format",
"format.section",
"format")));
551 $tpl->setVariable(
"MEDIA_SELECTOR",
$ui->renderer()->renderAsync($med_sel->getStyleSelector(
" ",
"format",
"format.media",
"format")));
555 $this->ui_wrapper->getRenderedButton(
563 $this->ui_wrapper->getRenderedButton(
578 return $this->page_gui->getPageObject()->getPCModel();
583 $pc_edit = $this->pc_definition->getPCEditorInstanceByName($query[
"cname"]);
585 if (!is_null($pc_edit)) {
586 $form = $pc_edit->getEditComponentForm(
588 $this->page_gui->getPageObject()->getParentType(),
590 $this->page_gui->getStyleId(),
594 $o = new \stdClass();
595 $o->editForm = $form;
596 return new Server\Response($o);
605 $config = $this->page_gui->getPageConfig();
606 foreach ($this->pc_definition->getPCDefinitions() as $def) {
607 $pc_edit = $this->pc_definition->getPCEditorInstanceByName($def[
"name"]);
608 if ($config->getEnablePCType($def[
"name"])) {
609 if (!is_null($pc_edit)) {
610 $ui[$def[
"name"]] = $pc_edit->getEditorElements(
612 $this->page_gui->getPageObject()->getParentType(),
614 $this->page_gui->getStyleId()
625 foreach ($this->pc_definition->getPCDefinitions() as $def) {
626 $pcdef[
"types"][$def[
"name"]] = $def[
"pc_type"];
627 $pcdef[
"names"][$def[
"pc_type"]] = $def[
"name"];
628 $pcdef[
"txt"][$def[
"pc_type"]] = $this->
lng->txt(
"cont_" .
"pc_" . $def[
"pc_type"]);
636 $modal =
$ui->factory()->modal()->roundtrip(
'#title#',
$ui->factory()->legacy()->content(
'#content#'))
637 ->withActionButtons([
638 $ui->factory()->button()->standard(
'#button_title#',
'#'),
640 $modalt[
"signal"] = $modal->getShowSignal()->getId();
641 $modalt[
"closeSignal"] = $modal->getCloseSignal()->getId();
642 $modalt[
"template"] =
$ui->renderer()->renderAsync($modal);
654 $confirmation =
$ui->factory()->messageBox()->confirmation(
"#text#");
656 return $ui->renderer()->renderAsync($confirmation);
664 $aset = new \ilSetting(
"adve");
665 return (
int) $aset->get(
"autosave");
getComponentsEditorUI()
Get components ui elements.
getComponentsDefinitions()
__construct(\ilPageObjectGUI $page_gui, string $pc_id="")
getAutoSaveInterval()
Get auto save interval.
ilComponentFactory $component_factory
getErrorMessage()
Confirmation screen for cut/paste step.
ILIAS COPage InternalGUIService $gui
componentEditFormResponse(array $query)
getMultiLangActions()
Add multi-language actions to menu.
ilPageObjectGUI $page_gui
getPasteMessage()
Confirmation screen for cut/paste step.
getConfirmationTemplate()
Get confirmation template.
getPageEditHelp()
Get page help (general)
ILIAS COPage PC PCDefinition $pc_definition
Server UIWrapper $ui_wrapper
getPCModel()
Get page component model.
getMultiEditHelp()
Get page help (multi editing)
getLinkTarget(object $a_gui_obj, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false, bool $has_xml_style=false)
@inheritDoc
setParameter(object $a_gui_obj, string $a_parameter, $a_value)
@inheritDoc
getLinkTargetByClass( $a_class, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false, bool $has_xml_style=false)
@inheritDoc
loadLanguageModule(string $a_module)
Load language module.
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...
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
getPref(string $a_keyword)
const SEC_PROTECT_PROTECTED
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static getStyleSheetLocation(string $mode="output", string $a_css_name="")
get full style sheet file name (path inclusive) of current user
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.