ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
parameters.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
6 
9 
23 function parameters()
24 {
25  global $DIC;
26  $factory = $DIC->ui()->factory();
27  $renderer = $DIC->ui()->renderer();
28 
29  $df = new \ILIAS\Data\Factory();
30  $refinery = $DIC['refinery'];
31 
32  $here_uri = $df->uri($DIC->http()->request()->getUri()->__toString());
33  $url_builder = new URLBuilder($here_uri);
34 
35  //when expecting a state, we do not want to render other examples
36  $example_namespace = ['prompt', 'endpoints'];
37  list($url_builder, $endpointtoken) = $url_builder->acquireParameters($example_namespace, "endpoint");
38  $url_builder = $url_builder->withParameter($endpointtoken, "true");
39 
40  //build a prompt
41  $query_namespace = ['prompt', 'example1'];
42  list($url_builder, $action_token, $amount_token) = $url_builder->acquireParameters($query_namespace, "action", "amount");
43  $url_builder = $url_builder->withParameter($action_token, "showprompt");
44 
45  $default_uri = $url_builder->withParameter($amount_token, "1")->buildURI();
46  $prompt = $factory->prompt()->standard($default_uri);
47 
48  //build some endpoint
49  $query = $DIC->http()->wrapper()->query();
50  $icon = $factory->symbol()->icon()->standard('someExample', 'Example');
51  $item = $icon;
52  $links = [];
53 
54  if ($query->has($action_token->getName())) {
55  $action = $query->retrieve($action_token->getName(), $refinery->kindlyTo()->string());
56  $amount = $query->retrieve($amount_token->getName(), $refinery->kindlyTo()->int()) ;
57  switch ($action) {
58  case 'showprompt':
59  foreach (range(1, $amount) as $idx) {
60  $link_uri = $url_builder
61  ->withParameter($action_token, "promptlink")
62  ->withParameter($amount_token, (string) $idx)
63  ->buildURI()->__toString();
64  $links[] = $factory->link()->standard((string) $idx, $link_uri);
65  }
66  $buttons = [
67  $factory->button()->standard('OK', '#')->withOnLoadCode(
68  fn($id) => "$('#$id').on('click', (e)=> {alert('$id');});"
69  )
70  ];
71  \ilSession::set("full_amount", (string) $idx);
72  $prompt_content = $factory->messageBox()->info('some text')
73  ->withLinks($links)
74  ->withButtons($buttons);
75  break;
76 
77  case 'promptlink':
78  $back_uri = $url_builder
79  ->withParameter($action_token, "showprompt")
80  ->withParameter($amount_token, (string) \ilSession::get("full_amount"))
81  ->buildURI()->__toString();
82  $back = $factory->button()->standard('back', '#')->withOnLoadCode(
83  fn($id) => "$('#$id').on('click', (e)=> {
84  let promptId = e.target.closest('.il-prompt').id;
85  il.UI.prompt.get(promptId).show('$back_uri');
86  });"
87  );
88  $prompt_content = $factory->messageBox()->info((string) $amount)
89  ->withButtons([$back]);
90  break;
91 
92  default:
93  throw new \Exception('?' . $action . $amount);
94  }
95 
96  $response = $factory->prompt()->state()->show($prompt_content);
97  echo($renderer->renderAsync($response));
98  exit();
99  }
100 
101  if (!$query->has($endpointtoken->getName())) {
102  $show_button = $factory->button()->standard('Show Simple Prompt', $prompt->getShowSignal());
103  $close_button = $factory->button()->standard('close Simple Prompt', $prompt->getCloseSignal());
104 
105  $uri = $url_builder->withParameter($amount_token, "8")->buildURI();
106  $show_button8 = $factory->button()->standard('Show Prompt with Parameter', $prompt->getShowSignal($uri));
107 
108  $uri = $url_builder->withParameter($amount_token, "78")->buildURI();
109  $show_button78 = $factory->button()->standard('Show Prompt with a lot of Items', $prompt->getShowSignal($uri));
110 
111  return $renderer->render([
112  $prompt,
113  $show_button, $show_button8, $show_button78
114  ]);
115  }
116 }
static get(string $a_var)
parameters()
description: > This shows how different states are being used in the same Prompt according to parame...
Definition: parameters.php:23
$renderer
$response
Definition: xapitoken.php:90
global $DIC
Definition: shib_login.php:25
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24
URLBuilder.
Definition: URLBuilder.php:39
static set(string $a_var, $a_val)
Set a value.