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