19declare(strict_types=1);
35 protected \ILIAS\Help\GuidedTour\UserFinished\UserFinishedManager
$finish_manager;
36 protected \ILIAS\Help\GuidedTour\Tour\TourManager
$tm;
39 protected \
ILIAS\Help\GuidedTour\InternalDataService
$data,
40 protected \
ILIAS\Help\GuidedTour\InternalDomainService $domain,
41 protected \
ILIAS\Help\GuidedTour\InternalGUIService $gui
43 $ctrl = $this->gui->ctrl();
44 $this->tm = $domain->tour();
45 $ctrl->saveParameterByClass(self::class,
"tour_id");
46 $this->step_manager = $domain->step();
47 $this->finish_manager = $domain->userFinished();
52 $ctrl = $this->gui->ctrl();
53 $mt = $this->gui->ui()->mainTemplate();
55 $next_class = $ctrl->getNextClass($this);
56 $cmd = $ctrl->getCmd(
"listTours");
58 switch ($next_class) {
59 case strtolower(ilExportGUI::class):
62 $tour_id = $this->gui->standardRequest()->getTourId();
63 $exp_gui =
new ilExportGUI($this->gui->objectGUI($tour_id));
64 $exp_gui->addFormat(
"xml");
65 $ctrl->forwardCommand($exp_gui);
68 case strtolower(ilGuidedTourPageGUI::class):
69 $mt = $this->gui->mainTemplate();
70 $lng = $this->domain->lng();
72 $mt->setOnScreenMessage(
"info",
$lng->txt(
"gdtr_edit_page_info"));
73 $ctrl->setReturnByClass(self::class,
"listSteps");
74 $ctrl->saveParameterByClass(self::class,
"step_id");
76 $mt->setContent($ret);
79 case strtolower(ilRepoStandardUploadHandlerGUI::class):
81 $gui = $form->getRepoStandardUploadHandlerGUI(
"import");
82 $ctrl->forwardCommand($gui);
102 "confirmStepDeletion",
115 $tabs = $this->gui->tabs();
116 $lng = $this->domain->lng();
117 $ctrl = $this->gui->ctrl();
118 $tabs->clearTargets();
119 $this->gui->help()->setScreenIdComponent(
"hlps_gdtr");
120 $tabs->setBackTarget(
121 $lng->txt(
"gdtr_guided_tours"),
122 $ctrl->getLinkTargetByClass(self::class,
"listTours")
124 $ctrl->saveParameterByClass(self::class,
"tour_id");
127 $lng->txt(
"gdtr_tour_steps"),
128 $ctrl->getLinkTargetByClass(self::class,
"listSteps")
132 $lng->txt(
"settings"),
133 $ctrl->getLinkTargetByClass(self::class,
"editSettings")
138 $ctrl->getLinkTargetByClass(ilexportGUI::class,
"export",
""),
140 $tabs->activateTab($active);
145 $tabs = $this->gui->tabs();
146 $lng = $this->domain->lng();
147 $ctrl = $this->gui->ctrl();
148 $step_id = $this->gui->standardRequest()->getStepId();
149 $tour_id = $this->gui->standardRequest()->getTourId();
151 $tabs->clearTargets();
153 $tabs->setBackTarget(
155 $ctrl->getLinkTargetByClass(ilGuidedTourPageGUI::class,
"edit")
163 $new_page_object->setParentId($tour_id);
164 $new_page_object->setId($step_id);
165 $new_page_object->createFromXML();
173 $page_gui->setTemplateTargetVar(
"ADM_CONTENT");
174 $page_gui->setFileDownloadLink(
"");
175 $page_gui->setPresentationTitle(
"");
176 $page_gui->setTemplateOutput(
false);
181 return $ctrl->forwardCommand($page_gui);
187 $mt = $this->gui->ui()->mainTemplate();
188 $f = $this->gui->ui()->factory();
189 $r = $this->gui->ui()->renderer();
191 $ctrl = $this->gui->ctrl();
192 $lng = $this->domain->lng();
194 $mt->setOnScreenMessage(
"info",
$lng->txt(
"gdtr_list_tours_mess"));
196 $b =
$f->button()->standard(
197 $lng->txt(
"gdtr_add_tour"),
198 $ctrl->getLinkTarget($this,
"addTour")
200 $this->gui->toolbar()->addComponent(
$b);
201 $b =
$f->button()->standard(
202 $lng->txt(
"gdtr_import_tour"),
203 $ctrl->getLinkTarget($this,
"importTourForm")
205 $this->gui->toolbar()->addComponent(
$b);
209 foreach ($this->tm->getAll() as $tour) {
210 $ctrl->setParameterByClass(self::class,
"tour_id", $tour->getId());
212 $actions[] =
$f->link()->standard(
213 $lng->txt(
"gdtr_edit_steps"),
214 $ctrl->getLinkTargetByClass(self::class,
"listSteps")
216 $actions[] =
$f->link()->standard(
217 $lng->txt(
"gdtr_tour_settings"),
218 $ctrl->getLinkTargetByClass(self::class,
"editSettings")
221 $actions[] =
$f->button()->shy(
222 $lng->txt(
"gdtr_reset_tour"),
224 )->withOnClick($reset_modal->getShowSignal());
225 $ui_items[] = $reset_modal;
227 $actions[] =
$f->button()->shy(
228 $lng->txt(
"gdtr_delete_tour"),
230 )->withOnClick($delete_modal->getShowSignal());
231 $ui_items[] = $delete_modal;
233 $settings = $this->domain->tourSettings()->getByObjId($tour->getId());
234 $properties[
$lng->txt(
"active")] = $settings?->isActive()
237 $items[] =
$f->item()->standard($tour->getTitle())
238 ->withActions(
$f->dropdown()->standard($actions))
239 ->withProperties($properties);
241 if (count($items) > 0) {
242 $grp =
$f->item()->group(
"", $items);
243 $panel =
$f->panel()->listing()->standard(
244 $lng->txt(
"gdtr_guided_tours"),
247 $ui_items[] = $panel;
248 $mt->setContent($r->render($ui_items));
254 $tour = $this->tm->getByObjId($tour_id);
255 $f = $this->gui->ui()->factory();
256 $r = $this->gui->ui()->renderer();
257 $lng = $this->domain->lng();
258 $ctrl = $this->gui->ctrl();
260 $res_items[] =
$f->modal()->interruptiveItem()->keyValue(
265 $ctrl->setParameterByClass(self::class,
"tour_id", $tour_id);
266 $action = $ctrl->getLinkTargetByClass(self::class,
"resetTour");
268 return $f->modal()->interruptive(
269 $lng->txt(
"gdtr_reset_tour"),
270 $lng->txt(
"gdtr_reset_tour_mess"),
272 )->withAffectedItems($res_items)
273 ->withActionButtonLabel(
$lng->txt(
"gdtr_reset_tour"));
278 $mt = $this->gui->ui()->mainTemplate();
279 $lng = $this->domain->lng();
280 $ctrl = $this->gui->ctrl();
281 $tour_id = $this->gui->standardRequest()->getTourId();
282 $this->finish_manager->resetTour($tour_id);
283 $mt->setOnScreenMessage(
"success",
$lng->txt(
"gdtr_tour_has_been_reset"),
true);
284 $ctrl->redirectByClass(self::class,
"listTours");
289 $tour = $this->tm->getByObjId($tour_id);
290 $f = $this->gui->ui()->factory();
291 $r = $this->gui->ui()->renderer();
292 $lng = $this->domain->lng();
293 $ctrl = $this->gui->ctrl();
295 $del_items[] =
$f->modal()->interruptiveItem()->keyValue(
300 $ctrl->setParameterByClass(self::class,
"tour_id", $tour_id);
301 $action = $ctrl->getLinkTargetByClass(self::class,
"deleteTour");
303 return $f->modal()->interruptive(
304 $lng->txt(
"gdtr_delete_tour"),
305 $lng->txt(
"gdtr_delete_tour_mess"),
307 )->withAffectedItems($del_items);
312 $mt = $this->gui->ui()->mainTemplate();
313 $lng = $this->domain->lng();
314 $ctrl = $this->gui->ctrl();
315 $tour_id = $this->gui->standardRequest()->getTourId();
316 $this->tm->deleteTour($tour_id);
317 $mt->setOnScreenMessage(
"success",
$lng->txt(
"gdtr_deleted_tour"),
true);
318 $ctrl->redirectByClass(self::class,
"listTours");
323 $lng = $this->domain->lng();
324 return $this->gui->form([self::class],
"saveTour")
325 ->section(
"sec",
$lng->txt(
"gdtr_add_tour"))
326 ->addStdTitleAndDescription(0,
"gdtr");
331 $mt = $this->gui->ui()->mainTemplate();
337 $mt = $this->gui->ui()->mainTemplate();
338 $lng = $this->domain->lng();
339 $ctrl = $this->gui->ctrl();
341 if ($form->isValid()) {
342 $obj_id = $this->tm->createTour(
"dummy",
"");
343 $form->saveStdTitleAndDescription($obj_id,
"gdtr");
344 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
345 $ctrl->redirectByClass(self::class,
"listTours");
347 $mt->setContent($form->render());
355 $mt = $this->gui->ui()->mainTemplate();
361 $tour_id = $this->gui->standardRequest()->getTourId();
362 $lng = $this->domain->lng();
363 $settings = $this->domain->tourSettings()->getByObjId($tour_id);
364 $perm_val = (string) $settings?->getPermission()->value;
365 if ($perm_val ===
"0") {
369 $lang_vals = $this->domain->tourSettings()->getLangOptions($lang_val);
370 if ($perm_val ===
"0") {
375 ->form([self::class],
"saveSettings")
376 ->section(
"sec",
$lng->txt(
"settings"))
380 $lng->txt(
"gdtr_active"),
382 $settings?->isActive()
384 ->section(
"sec2",
$lng->txt(
"gdtr_presentation_limitation"))
387 $lng->txt(
"gdtr_screen_ids"),
388 $lng->txt(
"gdtr_screen_ids_info"),
389 $settings?->getScreenIds()
393 $lng->txt(
"gdtr_permission"),
395 (string) PermissionType::Read->value =>
$lng->txt(
"read"),
396 (string) PermissionType::Write->value =>
$lng->txt(
"write"),
399 $lng->txt(
"gdtr_permission_info"),
404 $lng->txt(
"gdtr_language"),
406 $lng->txt(
"gdtr_language_info"),
414 $mt = $this->gui->ui()->mainTemplate();
416 $tour_id = $this->gui->standardRequest()->getTourId();
417 $lng = $this->domain->lng();
418 $ctrl = $this->gui->ctrl();
420 $tour_settings = $this->domain->tourSettings();
421 if ($form->isValid()) {
422 $form->saveStdTitleAndDescription($tour_id,
"gdtr");
423 $tour_settings->save($this->data->settings(
425 (
bool) $form->getData(
"active"),
426 $form->getData(
"screen_ids"),
428 $form->getData(
"lang")
430 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
431 $ctrl->redirectByClass(self::class,
"editSettings");
433 $mt->setContent($form->render());
440 $tabs = $this->gui->tabs();
441 $lng = $this->domain->lng();
442 $mt = $this->gui->ui()->mainTemplate();
443 $ctrl = $this->gui->ctrl();
444 $tour = $this->tm->getByObjId($this->gui->standardRequest()->getTourId());
445 $mt->setTitle(
$lng->txt(
"guided_tour") .
": " . $tour?->getTitle());
446 $mt->setDescription($tour?->getDescription());
447 $tabs->clearTargets();
448 $tabs->setBackTarget(
450 $ctrl->getLinkTargetByClass(self::class,
"listTours")
457 $tabs = $this->gui->tabs();
458 $lng = $this->domain->lng();
459 $ctrl = $this->gui->ctrl();
460 $tabs->setBackTarget(
462 $ctrl->getLinkTargetByClass(self::class,
"listSteps")
468 $mt = $this->gui->ui()->mainTemplate();
469 $f = $this->gui->ui()->factory();
470 $ctrl = $this->gui->ctrl();
471 $lng = $this->domain->lng();
474 if ($table->handleCommand()) {
481 $b =
$f->button()->standard(
482 $lng->txt(
"gdtr_add_step"),
483 $ctrl->getLinkTarget($this,
"addStep")
485 $this->gui->toolbar()->addComponent(
$b);
487 $mt->setContent($table->render());
492 return $this->gui->stepTableGUI(
493 $this->gui->standardRequest()->getTourId(),
509 $mt = $this->gui->ui()->mainTemplate();
510 $lng = $this->domain->lng();
511 $mt->setOnScreenMessage(
"info",
$lng->txt(
"gdtr_edit_step_info"));
517 $lng = $this->domain->lng();
518 $type_val = (string) $step?->getType()->value;
519 $mb_element_id = $step?->getType()->value === StepType::Mainbar->value
520 ? $step?->getElementId()
522 $mt_element_id = $step?->getType()->value === StepType::Metabar->value
523 ? $step?->getElementId()
525 $tab_element_id = $step?->getType()->value === StepType::Tab->value
526 ? $step?->getElementId()
528 return $this->gui->form([self::class],
"saveStep")
529 ->section(
"sec",
$lng->txt(
"gdtr_step"))
530 ->
switch(
"type",
$lng->txt(
"gdtr_step_type"),
"", $type_val)
531 ->group((
string) StepType::Mainbar->value,
$lng->txt(
"gdtr_mainbar"),
$lng->txt(
"gdtr_mainbar_info"))
532 ->text(
"mb_element_id",
$lng->txt(
"gdtr_element_id"),
"", $mb_element_id)
533 ->group((
string) StepType::Metabar->value,
$lng->txt(
"gdtr_metabar"),
$lng->txt(
"gdtr_metabar_info"))
534 ->text(
"mt_element_id",
$lng->txt(
"gdtr_element_id"),
"", $mt_element_id)
535 ->group((
string) StepType::Tab->value,
$lng->txt(
"gdtr_tabs"),
$lng->txt(
"gdtr_tabs_info"))
536 ->text(
"tab_element_id",
$lng->txt(
"gdtr_element_id"),
"", $tab_element_id)
537 ->group((
string) StepType::Form->value,
$lng->txt(
"gdtr_form"),
$lng->txt(
"gdtr_form_info"))
538 ->group((
string) StepType::Table->value,
$lng->txt(
"gdtr_table"),
$lng->txt(
"gdtr_table_info"))
539 ->group((
string) StepType::Toolbar->value,
$lng->txt(
"gdtr_toolbar"),
$lng->txt(
"gdtr_toolbar_info"))
546 $ctrl = $this->gui->ctrl();
547 $mt = $this->gui->ui()->mainTemplate();
549 if (($step_id = $this->gui->standardRequest()->getStepId()) > 0) {
550 $step = $this->step_manager->getById($step_id);
551 $oder_nr = $step->getOrderNr();
554 if ($form->isValid()) {
555 $element_id = match ((
int) $form->getData(
"type")) {
556 StepType::Mainbar->value => $form->getData(
"mb_element_id"),
557 StepType::Metabar->value => $form->getData(
"mt_element_id"),
558 StepType::Tab->value => $form->getData(
"tab_element_id"),
561 $step = $this->data->step(
563 $this->gui->standardRequest()->getTourId(),
569 $this->step_manager->update($step);
570 $ctrl->redirectByClass(self::class,
"listSteps");
572 $new_id = $this->step_manager->create($step);
573 $ctrl->setParameterByClass(self::class,
"step_id", $new_id);
574 $ctrl->redirectByClass(ilGuidedTourPageGUI::class,
"edit");
577 $mt->setContent($form->render());
583 $mt = $this->gui->mainTemplate();
584 $lng = $this->domain->lng();
586 $mt->setOnScreenMessage(
"info",
$lng->txt(
"gdtr_edit_step_info"));
587 $ctrl = $this->gui->ctrl();
588 $ctrl->setParameterByClass(self::class,
"step_id", $step_id);
589 $step = $this->step_manager->getById($step_id);
591 $mt->setContent($form->render());
596 $ctrl = $this->gui->ctrl();
597 $ctrl->setParameterByClass(self::class,
"step_id", $step_id);
598 $ctrl->redirectByClass(ilGuidedTourPageGUI::class,
"edit");
603 $tabs = $this->gui->tabs();
604 $lng = $this->domain->lng();
605 $ctrl = $this->gui->ctrl();
608 $lng->txt(
"gdtr_tours"),
609 $ctrl->getLinkTargetByClass(self::class,
"listTours")
613 $lng->txt(
"gdtr_id_settings"),
614 $ctrl->getLinkTargetByClass(self::class,
"idSettings")
616 $tabs->activateSubTab($active);
622 $mt = $this->gui->ui()->mainTemplate();
623 $mt->setContent($this->
getIdForm()->render());
628 $lng = $this->domain->lng();
629 $id_pres = $this->domain->idPresentation();
632 ->form([self::class],
"saveIdSettings")
633 ->section(
"sec",
$lng->txt(
"gdtr_id_settings"))
636 $lng->txt(
"gdtr_id_pres_users"),
637 $lng->txt(
"gdtr_id_pres_users_info"),
638 $id_pres->getIdPresentationUsers()
644 $mt = $this->gui->ui()->mainTemplate();
645 $lng = $this->domain->lng();
646 $ctrl = $this->gui->ctrl();
648 $id_pres = $this->domain->idPresentation();
649 $id_pres->saveIdPresentationUsers($form->getData(
"users"));
650 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
651 $ctrl->redirectByClass(self::class,
"idSettings");
656 $ctrl = $this->gui->ctrl();
657 $mt = $this->gui->ui()->mainTemplate();
658 $lng = $this->domain->lng();
659 $ctrl->saveParameterByClass(self::class,
"tour_id");
662 $data = $table->getData();
663 if (is_array(
$data)) {
664 $this->step_manager->saveOrder(
665 $this->gui->standardRequest()->getTourId(),
668 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
670 $ctrl->redirectByClass(self::class,
"listSteps");
675 $lng = $this->domain->lng();
676 $ctrl = $this->gui->ctrl();
678 $step = $this->step_manager->getById($step_id);
679 $ctrl->setParameterByClass(self::class,
"step_id", $step_id);
680 $title = $this->step_manager->getStepName($step->getType());
681 if ($step->getElementId() !==
"") {
682 $title .=
" (" . $step->getElementId() .
")";
684 $table->renderDeletionConfirmation(
685 $lng->txt(
"gdtr_delete_step"),
686 $lng->txt(
"gdtr_delete_step_mess"),
696 $ctrl = $this->gui->ctrl();
697 $mt = $this->gui->ui()->mainTemplate();
698 $lng = $this->domain->lng();
699 $tour_id = $this->gui->standardRequest()->getTourId();
700 $step_id = $this->gui->standardRequest()->getStepId();
702 $this->step_manager->delete($tour_id, $step_id);
703 $mt->setOnScreenMessage(
"success",
$lng->txt(
"gdtr_deleted_step"),
true);
704 $ctrl->redirectByClass(self::class,
"listSteps");
709 $mt = $this->gui->ui()->mainTemplate();
715 $lng = $this->domain->lng();
716 return $this->gui->form([self::class],
"importTour")
717 ->section(
"sec",
$lng->txt(
"gdtr_import_tour"))
720 $lng->txt(
"import_file"),
721 $this->handleImportUpload(...),
733 $new_id = $this->
importTourFile($result->getName(), $result->getPath());
749 if ($fname[4] ==
"gdtr") {
751 $new_id = $imp->importObject(
765 $ctrl = $this->gui->ctrl();
766 $ctrl->redirectByClass(self::class,
"listTours");
Class BasicHandlerResult.
Export User Interface Class.
@ilCtrl_Calls ilGuidedTourAdminGUI: ilGuidedTourPageGUI, ilExportGUI, ilRepoStandardUploadHandlerGUI
ILIAS Help GuidedTour Step StepManager $step_manager
setSubTabs(string $active)
importTourFile(string $filename, string $path)
getDeleteTourModal(int $tour_id)
getStepForm(?Step $step=null)
ILIAS Help GuidedTour UserFinished UserFinishedManager $finish_manager
setSettingsTabs(string $active)
getResetTourModal(int $tour_id)
__construct(protected \ILIAS\Help\GuidedTour\InternalDataService $data, protected \ILIAS\Help\GuidedTour\InternalDomainService $domain, protected \ILIAS\Help\GuidedTour\InternalGUIService $gui)
confirmStepDeletion(int $step_id)
ILIAS Help GuidedTour Tour TourManager $tm
handleImportUpload(FileUpload $upload, UploadResult $result)
@ilCtrl_Calls ilGuidedTourPageGUI: ilPageEditorGUI, ilEditClipboardGUI, ilMDEditorGUI @ilCtrl_Calls i...
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.