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(
"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(
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()
386 $lng->txt(
"gdtr_screen_ids"),
387 $lng->txt(
"gdtr_screen_ids_info"),
388 $settings?->getScreenIds()
392 $lng->txt(
"gdtr_permission"),
394 (string) PermissionType::Read->value =>
$lng->txt(
"read"),
395 (string) PermissionType::Write->value =>
$lng->txt(
"write"),
398 $lng->txt(
"gdtr_permission_info"),
403 $lng->txt(
"gdtr_language"),
405 $lng->txt(
"gdtr_language_info"),
413 $mt = $this->gui->ui()->mainTemplate();
415 $tour_id = $this->gui->standardRequest()->getTourId();
416 $lng = $this->domain->lng();
417 $ctrl = $this->gui->ctrl();
419 $tour_settings = $this->domain->tourSettings();
420 if ($form->isValid()) {
421 $form->saveStdTitleAndDescription($tour_id,
"gdtr");
422 $tour_settings->save($this->data->settings(
424 (
bool) $form->getData(
"active"),
425 $form->getData(
"screen_ids"),
427 $form->getData(
"lang")
429 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
430 $ctrl->redirectByClass(self::class,
"editSettings");
432 $mt->setContent($form->render());
439 $tabs = $this->gui->tabs();
440 $lng = $this->domain->lng();
441 $mt = $this->gui->ui()->mainTemplate();
442 $ctrl = $this->gui->ctrl();
443 $tour = $this->tm->getByObjId($this->gui->standardRequest()->getTourId());
444 $mt->setTitle(
$lng->txt(
"guided_tour") .
": " . $tour?->getTitle());
445 $mt->setDescription($tour?->getDescription());
446 $tabs->clearTargets();
447 $tabs->setBackTarget(
449 $ctrl->getLinkTargetByClass(self::class,
"listTours")
456 $tabs = $this->gui->tabs();
457 $lng = $this->domain->lng();
458 $ctrl = $this->gui->ctrl();
459 $tabs->setBackTarget(
461 $ctrl->getLinkTargetByClass(self::class,
"listSteps")
467 $mt = $this->gui->ui()->mainTemplate();
468 $f = $this->gui->ui()->factory();
469 $ctrl = $this->gui->ctrl();
470 $lng = $this->domain->lng();
473 if ($table->handleCommand()) {
480 $b =
$f->button()->standard(
481 $lng->txt(
"gdtr_add_step"),
482 $ctrl->getLinkTarget($this,
"addStep")
484 $this->gui->toolbar()->addComponent(
$b);
486 $mt->setContent($table->render());
491 return $this->gui->stepTableGUI(
492 $this->gui->standardRequest()->getTourId(),
508 $mt = $this->gui->ui()->mainTemplate();
509 $lng = $this->domain->lng();
510 $mt->setOnScreenMessage(
"info",
$lng->txt(
"gdtr_edit_step_info"));
516 $lng = $this->domain->lng();
517 $type_val = (string) $step?->getType()->value;
518 $mb_element_id = $step?->getType()->value === StepType::Mainbar->value
519 ? $step?->getElementId()
521 $mt_element_id = $step?->getType()->value === StepType::Metabar->value
522 ? $step?->getElementId()
524 $tab_element_id = $step?->getType()->value === StepType::Tab->value
525 ? $step?->getElementId()
527 return $this->gui->form([self::class],
"saveStep")
528 ->section(
"sec",
$lng->txt(
"gdtr_step"))
529 ->
switch(
"type",
$lng->txt(
"gdtr_step_type"),
"", $type_val)
530 ->group((
string) StepType::Mainbar->value,
$lng->txt(
"gdtr_mainbar"),
$lng->txt(
"gdtr_mainbar_info"))
531 ->text(
"mb_element_id",
$lng->txt(
"gdtr_element_id"),
"", $mb_element_id)
532 ->group((
string) StepType::Metabar->value,
$lng->txt(
"gdtr_metabar"),
$lng->txt(
"gdtr_metabar_info"))
533 ->text(
"mt_element_id",
$lng->txt(
"gdtr_element_id"),
"", $mt_element_id)
534 ->group((
string) StepType::Tab->value,
$lng->txt(
"gdtr_tabs"),
$lng->txt(
"gdtr_tabs_info"))
535 ->text(
"tab_element_id",
$lng->txt(
"gdtr_element_id"),
"", $tab_element_id)
536 ->group((
string) StepType::Form->value,
$lng->txt(
"gdtr_form"),
$lng->txt(
"gdtr_form_info"))
537 ->group((
string) StepType::Table->value,
$lng->txt(
"gdtr_table"),
$lng->txt(
"gdtr_table_info"))
538 ->group((
string) StepType::Toolbar->value,
$lng->txt(
"gdtr_toolbar"),
$lng->txt(
"gdtr_toolbar_info"))
545 $ctrl = $this->gui->ctrl();
546 $mt = $this->gui->ui()->mainTemplate();
548 if (($step_id = $this->gui->standardRequest()->getStepId()) > 0) {
549 $step = $this->step_manager->getById($step_id);
550 $oder_nr = $step->getOrderNr();
553 if ($form->isValid()) {
554 $element_id = match ((
int) $form->getData(
"type")) {
555 StepType::Mainbar->value => $form->getData(
"mb_element_id"),
556 StepType::Metabar->value => $form->getData(
"mt_element_id"),
557 StepType::Tab->value => $form->getData(
"tab_element_id"),
560 $step = $this->data->step(
562 $this->gui->standardRequest()->getTourId(),
568 $this->step_manager->update($step);
569 $ctrl->redirectByClass(self::class,
"listSteps");
571 $new_id = $this->step_manager->create($step);
572 $ctrl->setParameterByClass(self::class,
"step_id", $new_id);
573 $ctrl->redirectByClass(ilGuidedTourPageGUI::class,
"edit");
576 $mt->setContent($form->render());
582 $mt = $this->gui->mainTemplate();
583 $lng = $this->domain->lng();
585 $mt->setOnScreenMessage(
"info",
$lng->txt(
"gdtr_edit_step_info"));
586 $ctrl = $this->gui->ctrl();
587 $ctrl->setParameterByClass(self::class,
"step_id", $step_id);
588 $step = $this->step_manager->getById($step_id);
590 $mt->setContent($form->render());
595 $ctrl = $this->gui->ctrl();
596 $ctrl->setParameterByClass(self::class,
"step_id", $step_id);
597 $ctrl->redirectByClass(ilGuidedTourPageGUI::class,
"edit");
602 $tabs = $this->gui->tabs();
603 $lng = $this->domain->lng();
604 $ctrl = $this->gui->ctrl();
607 $lng->txt(
"gdtr_tours"),
608 $ctrl->getLinkTargetByClass(self::class,
"listTours")
612 $lng->txt(
"gdtr_id_settings"),
613 $ctrl->getLinkTargetByClass(self::class,
"idSettings")
615 $tabs->activateSubTab($active);
621 $mt = $this->gui->ui()->mainTemplate();
622 $mt->setContent($this->
getIdForm()->render());
627 $lng = $this->domain->lng();
628 $id_pres = $this->domain->idPresentation();
631 ->form([self::class],
"saveIdSettings")
632 ->section(
"sec",
$lng->txt(
"gdtr_id_settings"))
635 $lng->txt(
"gdtr_id_pres_users"),
636 $lng->txt(
"gdtr_id_pres_users_info"),
637 $id_pres->getIdPresentationUsers()
643 $mt = $this->gui->ui()->mainTemplate();
644 $lng = $this->domain->lng();
645 $ctrl = $this->gui->ctrl();
647 $id_pres = $this->domain->idPresentation();
648 $id_pres->saveIdPresentationUsers($form->getData(
"users"));
649 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
650 $ctrl->redirectByClass(self::class,
"idSettings");
655 $ctrl = $this->gui->ctrl();
656 $mt = $this->gui->ui()->mainTemplate();
657 $lng = $this->domain->lng();
658 $ctrl->saveParameterByClass(self::class,
"tour_id");
661 $data = $table->getData();
662 if (is_array(
$data)) {
663 $this->step_manager->saveOrder(
664 $this->gui->standardRequest()->getTourId(),
667 $mt->setOnScreenMessage(
"success",
$lng->txt(
"msg_obj_modified"),
true);
669 $ctrl->redirectByClass(self::class,
"listSteps");
674 $lng = $this->domain->lng();
675 $ctrl = $this->gui->ctrl();
677 $step = $this->step_manager->getById($step_id);
678 $ctrl->setParameterByClass(self::class,
"step_id", $step_id);
679 $title = $this->step_manager->getStepName($step->getType());
680 if ($step->getElementId() !==
"") {
681 $title .=
" (" . $step->getElementId() .
")";
683 $table->renderDeletionConfirmation(
684 $lng->txt(
"gdtr_delete_step"),
685 $lng->txt(
"gdtr_delete_step_mess"),
695 $ctrl = $this->gui->ctrl();
696 $mt = $this->gui->ui()->mainTemplate();
697 $lng = $this->domain->lng();
698 $tour_id = $this->gui->standardRequest()->getTourId();
699 $step_id = $this->gui->standardRequest()->getStepId();
701 $this->step_manager->delete($tour_id, $step_id);
702 $mt->setOnScreenMessage(
"success",
$lng->txt(
"gdtr_deleted_step"),
true);
703 $ctrl->redirectByClass(self::class,
"listSteps");
708 $mt = $this->gui->ui()->mainTemplate();
714 $lng = $this->domain->lng();
715 return $this->gui->form([self::class],
"importTour")
716 ->section(
"sec",
$lng->txt(
"gdtr_import_tour"))
719 $lng->txt(
"import_file"),
720 $this->handleImportUpload(...),
732 $new_id = $this->
importTourFile($result->getName(), $result->getPath());
748 if ($fname[4] ==
"gdtr") {
750 $new_id = $imp->importObject(
764 $ctrl = $this->gui->ctrl();
765 $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.