ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilUserActionGUI.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
23 
29 {
32 
33  public function __construct(
34  private ilUserActionProviderFactory $user_action_provider_factory,
35  private ilUserActionContext $user_action_context,
36  private ilGlobalTemplateInterface $tpl,
37  private UIFactory $ui_factory,
38  private Renderer $ui_renderer,
39  private ilLanguage $lng,
40  ilDBInterface $db,
41  int $user_id
42  ) {
43  $this->lng->loadLanguageModule('usr');
44  $this->user_action_admin = new ilUserActionAdmin($db);
45  $this->user_action_collector = new ilUserActionCollector(
46  $user_id,
49  new ilUserActionAdmin($db)
50  );
51  }
52 
53  public function init(): void
54  {
55  foreach ($this->user_action_provider_factory->getProviders() as $prov) {
56  foreach ($prov->getActionTypes() as $act_type => $txt) {
57  if ($this->user_action_admin->isActionActive(
58  $this->user_action_context->getComponentId(),
59  $this->user_action_context->getContextId(),
60  $prov->getComponentId(),
61  $act_type
62  )) {
63  foreach ($prov->getJsScripts($act_type) as $script) {
64  $this->tpl->addJavaScript($script);
65  }
66  }
67  }
68  }
69  }
70 
71  public function renderDropDown(int $target_user_id): string
72  {
73  $action_collection = $this->user_action_collector->getActionsForTargetUser($target_user_id);
74  $actions = [];
75  foreach ($action_collection->getActions() as $action) {
76  $action_link = $this->ui_factory->link()->standard($action->getText(), $action->getHref());
77  if ($action->getData() !== []) {
78  $data = $action->getData();
79  $action_link = $action_link->withAdditionalOnLoadCode(
80  static function ($id) use ($data): string {
81  $js = '';
82  foreach($data as $key => $datum) {
83  $js .= "{$id}.setAttribute('data-{$key}', '{$datum}');";
84  }
85  return $js;
86  }
87  );
88  }
89 
90  $actions[] = $action_link;
91  }
92  $action_list = $this->ui_factory->dropdown()->standard($actions)
93  ->withAriaLabel($this->lng->txt('user_actions'));
94  return $this->ui_renderer->render($action_list);
95  }
96 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
An entity that renders components to a string output.
Definition: Renderer.php:30
A class that provides a collection of actions on users.
renderDropDown(int $target_user_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilUserActionAdmin $user_action_admin
__construct(private ilUserActionProviderFactory $user_action_provider_factory, private ilUserActionContext $user_action_context, private ilGlobalTemplateInterface $tpl, private UIFactory $ui_factory, private Renderer $ui_renderer, private ilLanguage $lng, ilDBInterface $db, int $user_id)
User action administration.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$lng
string $key
Consumer key/client ID value.
Definition: System.php:193
ilUserActionCollector $user_action_collector
$txt
Definition: error.php:14
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...