ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
server.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
6 
9 use ILIAS\UI;
10 
27 function server(): string
28 {
29  global $DIC;
30  $http = $DIC->http();
31  $uri = $http->request()->getUri();
32  $request = $http->wrapper()->query();
33  $factory = $DIC->ui()->factory();
34  $renderer = $DIC->ui()->renderer();
35  $data_factory = new \ILIAS\Data\Factory();
36 
37  $endpoint_flag = 'progress_bar_example_endpoint';
38  $endpoint_url = $uri . "&$endpoint_flag=1";
39  $endpoint_url = $data_factory->uri($endpoint_url);
40 
41  $progress_bar = $factory->progress()->bar('waiting about 10 seconds', $endpoint_url);
42 
43  $trigger = $factory->button()->standard('start making progress', '#');
44  $trigger = $trigger->withAdditionalOnLoadCode(
45  static fn(string $id) => "
46  document.getElementById('$id')?.addEventListener('click', (event) => {
47  // always 'kick off' async progress bars with an indeterminate state.
48  il.UI.Progress.Bar.indeterminate('{$progress_bar->getUpdateSignal()}', 'Estimating...');
49  event.target.disabled = true;
50  });
51  "
52  );
53 
54  if ($request->has($endpoint_flag)) {
56  }
57 
58  return $renderer->render([$progress_bar, $trigger]);
59 }
60 
62 {
64 
65  $task_progress = getTaskProgress();
66 
67  $state = match ($task_progress) {
68  1 => $state = $factory->progress()->state()->bar()->determinate(10, 'Start processing...'),
69  2 => $state = $factory->progress()->state()->bar()->determinate(20),
70  3 => $state = $factory->progress()->state()->bar()->determinate(30),
71  4 => $state = $factory->progress()->state()->bar()->determinate(40),
72  5 => $state = $factory->progress()->state()->bar()->determinate(50, 'Still processing...'),
73  6 => $state = $factory->progress()->state()->bar()->determinate(60),
74  7 => $state = $factory->progress()->state()->bar()->determinate(70),
75  8 => $state = $factory->progress()->state()->bar()->determinate(80),
76  9 => $state = $factory->progress()->state()->bar()->determinate(90),
77  10 => $state = $factory->progress()->state()->bar()->success("All done!"),
78  default => $state = $factory->progress()->state()->bar()->failure("An error ocurred."),
79  };
80 
81  if (10 > $task_progress) {
83  } else {
84  resetTask();
85  }
86 
87  $html = $renderer->renderAsync($state);
88 
89  $http->saveResponse(
90  $http->response()
91  ->withHeader('Content-Type', 'text/html; charset=utf-8')
92  ->withBody(Streams::ofString($html))
93  );
94  $http->sendResponse();
95  $http->close();
96 }
97 
99 {
100  if (!\ilSession::has(__NAMESPACE__ . '_example_task_progress')) {
101  \ilSession::set(__NAMESPACE__ . '_example_task_progress', 1);
102  }
103 }
104 
105 function incrementTaskProgress(): void
106 {
107  $previous_value = \ilSession::get(__NAMESPACE__ . '_example_task_progress');
108  \ilSession::set(__NAMESPACE__ . '_example_task_progress', (int) $previous_value + 1);
109 }
110 
111 function getTaskProgress(): int
112 {
113  return \ilSession::get(__NAMESPACE__ . '_example_task_progress') ?? 1;
114 }
115 
116 function resetTask(): void
117 {
118  \ilSession::clear(__NAMESPACE__ . '_example_task_progress');
119 }
static get(string $a_var)
$renderer
callArtificialTaskEndpoint(GlobalHttpState $http, UI\Factory $factory, UI\Renderer $renderer)
Definition: server.php:61
sendResponse()
Render the current response hold by ILIAS.
saveResponse(ResponseInterface $response)
Saves the given response for further use.
server()
description: > This example shows how a Progress Bar can be rendered and updated by the server...
Definition: server.php:27
$http
Definition: deliver.php:14
This is how the factory for UI elements looks.
Definition: Factory.php:37
get(string $class_name)
global $DIC
Definition: shib_login.php:25
static has($a_var)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24
response()
Returns the current psr-7 response.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static clear(string $a_var)
static set(string $a_var, $a_val)
Set a value.