ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
PersonalSettingsTableDeleteAction.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
28use ILIAS\UI\Factory as UIFactory;
32use Psr\Http\Message\ServerRequestInterface;
33
35{
36 public const string ACTION_ID = 'delete_template';
37
38 public function __construct(
39 private readonly Language $lng,
40 private readonly UIFactory $ui_factory,
41 private readonly GlobalTemplate $tpl,
42 private readonly PersonalSettingsRepository $repository,
43 private readonly MarksRepository $marks_repository,
44 ) {
45 }
46
47 public function getActionId(): string
48 {
49 return self::ACTION_ID;
50 }
51
52 public function buildTableAction(
53 URLBuilder $url_builder,
54 URLBuilderToken $row_id_token,
55 URLBuilderToken $action_token,
56 URLBuilderToken $action_type_token
57 ): Action {
58 return $this->ui_factory->table()->action()->standard(
59 $this->lng->txt('delete'),
60 $url_builder
61 ->withParameter($action_token, self::ACTION_ID)
62 ->withParameter($action_type_token, ParticipantTableActions::SHOW_ACTION),
63 $row_id_token
64 )->withAsync();
65 }
66
67 public function buildModal(
68 URLBuilder $url_builder,
69 array $selected_templates
70 ): ?Modal {
71 return $this->ui_factory->modal()->interruptive(
72 $this->lng->txt('confirm'),
73 $this->lng->txt('personal_settings_delete_confirmation'),
74 $url_builder->buildURI()->__toString()
75 )->withAffectedItems(
76 array_map(
77 fn(PersonalSettingsTemplate $v) => $this->ui_factory->modal()->interruptiveItem()->standard(
78 (string) $v->getId(), $v->getName()
79 ),
80 $selected_templates
81 )
82 )->withActionButtonLabel($this->lng->txt('delete'));
83 }
84
85 public function onSubmit(
86 URLBuilder $url_builder,
87 ServerRequestInterface $request,
88 array $selected_templates,
89 ): ?Modal {
90 foreach ($selected_templates as $template) {
91 $this->deleteTemplate($template);
92 }
93
94 $this->tpl->setOnScreenMessage(
95 GlobalTemplate::MESSAGE_TYPE_SUCCESS,
96 $this->lng->txt('personal_settings_delete_success'),
97 true
98 );
99 return null;
100 }
101
102 public function deleteTemplate(PersonalSettingsTemplate $template): void
103 {
104 $mark_ids = $this->repository->lookupMarkSteps($template->getId());
105 $this->repository->detachMarkSteps($template->getId(), $mark_ids);
106 $this->marks_repository->deleteSteps($mark_ids);
107
108 $this->repository->delete($template);
109 }
110}
Builds a Color from either hex- or rgb values.
Definition: Factory.php:31
onSubmit(URLBuilder $url_builder, ServerRequestInterface $request, array $selected_templates,)
__construct(private readonly Language $lng, private readonly UIFactory $ui_factory, private readonly GlobalTemplate $tpl, private readonly PersonalSettingsRepository $repository, private readonly MarksRepository $marks_repository,)
buildTableAction(URLBuilder $url_builder, URLBuilderToken $row_id_token, URLBuilderToken $action_token, URLBuilderToken $action_type_token)
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This describes commonalities between the different modals.
Definition: Modal.php:35
modal(string $title="", string $cancel_label="")
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $lng
Definition: privfeed.php:31