ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
parameters.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
23use ILIAS\UI\Component\Prompt\PromptContent;
25
39function 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}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
$renderer
static get(string $a_var)
static set(string $a_var, $a_val)
Set a value.
exit
global $DIC
Definition: shib_login.php:26
$response
Definition: xapitoken.php:93