ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
ILIAS\Badge\ilBadgeImageTemplateTableGUI Class Reference
+ Inheritance diagram for ILIAS\Badge\ilBadgeImageTemplateTableGUI:
+ Collaboration diagram for ILIAS\Badge\ilBadgeImageTemplateTableGUI:

Public Member Functions

 __construct (protected bool $has_write=false)
 
 getRows (DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, ?array $filter_data, ?array $additional_parameters)
 
 getTotalRowCount (?array $filter_data, ?array $additional_parameters)
 Mainly for the purpose of pagination-support, it is important to know about the total number of records available. More...
 
 getColumns ()
 
 renderTable (string $url)
 
- Public Member Functions inherited from ILIAS\UI\Component\Table\DataRetrieval
 getRows (DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, ?array $filter_data, ?array $additional_parameters)
 This is called by the table to retrieve rows; map data-records to rows using the $row_builder e.g. More...
 

Private Member Functions

 getRecords ()
 
 getActions (URLBuilder $url_builder, URLBuilderToken $action_parameter_token, URLBuilderToken $row_id_token)
 

Private Attributes

readonly Factory $factory
 
readonly Renderer $renderer
 
readonly ILIAS Refinery Factory $refinery
 
readonly ServerRequestInterface RequestInterface $request
 
readonly Services $http
 
readonly ilLanguage $lng
 
readonly ilGlobalTemplateInterface $tpl
 
array $cached_records = null
 

Detailed Description

Definition at line 40 of file class.ilBadgeImageTemplateTableGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::__construct ( protected bool  $has_write = false)

Definition at line 52 of file class.ilBadgeImageTemplateTableGUI.php.

References $DIC, ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

53  {
54  global $DIC;
55  $this->lng = $DIC->language();
56  $this->tpl = $DIC->ui()->mainTemplate();
57  $this->factory = $DIC->ui()->factory();
58  $this->renderer = $DIC->ui()->renderer();
59  $this->refinery = $DIC->refinery();
60  $this->request = $DIC->http()->request();
61  $this->http = $DIC->http();
62  }
static http()
Fetches the global http state from ILIAS.
global $DIC
Definition: shib_login.php:25
+ Here is the call graph for this function:

Member Function Documentation

◆ getActions()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getActions ( URLBuilder  $url_builder,
URLBuilderToken  $action_parameter_token,
URLBuilderToken  $row_id_token 
)
private
Returns
array<string, >

Definition at line 180 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Repository\lng().

Referenced by ILIAS\Badge\ilBadgeImageTemplateTableGUI\renderTable().

184  : array {
185  return $this->has_write ? [
186  'badge_image_template_edit' => $this->factory->table()->action()->single(
187  $this->lng->txt('edit'),
188  $url_builder->withParameter($action_parameter_token, 'badge_image_template_editImageTemplate'),
189  $row_id_token
190  ),
191  'badge_image_template_delete' =>
192  $this->factory->table()->action()->standard(
193  $this->lng->txt('delete'),
194  $url_builder->withParameter($action_parameter_token, 'badge_image_template_delete'),
195  $row_id_token
196  )
197  ] : [];
198  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getColumns()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getColumns ( )
Returns
array<string, Column>

Definition at line 169 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Repository\lng().

Referenced by ILIAS\Badge\ilBadgeImageTemplateTableGUI\renderTable().

169  : array
170  {
171  return [
172  'image' => $this->factory->table()->column()->text($this->lng->txt('image'))->withIsSortable(false),
173  'title' => $this->factory->table()->column()->text($this->lng->txt('title'))
174  ];
175  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRecords()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getRecords ( )
private
Returns
list<array{id: int, image: string, title: string, title_sortable: string}>

Definition at line 67 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Badge\ilBadgeImageTemplateTableGUI\$cached_records, ilBadgeImageTemplate\getInstances(), and ILIAS\Badge\ilBadgeImage\IMAGE_SIZE_XL.

Referenced by ILIAS\Badge\ilBadgeImageTemplateTableGUI\getRows(), and ILIAS\Badge\ilBadgeImageTemplateTableGUI\getTotalRowCount().

67  : array
68  {
69  if ($this->cached_records !== null) {
70  return $this->cached_records;
71  }
72 
73  $modal_container = new ModalBuilder();
74  $rows = [];
75 
76  foreach (ilBadgeImageTemplate::getInstances() as $template) {
77  $image = '';
78  $title = $template->getTitle();
79 
80  $image_src = $template->getImageFromResourceId();
81  if ($image_src !== '') {
82  $image_component = $this->factory->image()->responsive(
83  $image_src,
84  $template->getTitle()
85  );
86  $image_html = $this->renderer->render($image_component);
87 
88  $image_src_large = $template->getImageFromResourceId(
90  );
91  $large_image_component = $this->factory->image()->responsive(
92  $image_src_large,
93  $template->getTitle()
94  );
95 
96  $modal = $modal_container->constructModal($large_image_component, $template->getTitle());
97 
98  $image = implode('', [
99  $modal_container->renderShyButton($image_html, $modal),
100  $modal_container->renderModal($modal)
101  ]);
102  $title = $modal_container->renderShyButton($template->getTitle(), $modal);
103  }
104 
105  $rows[] = [
106  'id' => $template->getId(),
107  'image' => $image,
108  'title' => $title,
109  'title_sortable' => $template->getTitle()
110  ];
111  }
112 
113  $this->cached_records = $rows;
114 
115  return $rows;
116  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRows()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getRows ( DataRowBuilder  $row_builder,
array  $visible_column_ids,
Range  $range,
Order  $order,
?array  $filter_data,
?array  $additional_parameters 
)

Definition at line 118 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Data\Order\DESC, and ILIAS\Badge\ilBadgeImageTemplateTableGUI\getRecords().

125  : Generator {
126  $records = $this->getRecords();
127 
128  if ($order) {
129  [$order_field, $order_direction] = $order->join(
130  [],
131  fn($ret, $key, $value) => [$key, $value]
132  );
133 
134  usort($records, static function (array $left, array $right) use ($order_field): int {
135  if ($order_field === 'title') {
136  return \ilStr::strCmp(
137  $left[$order_field . '_sortable'],
138  $right[$order_field . '_sortable']
139  );
140  }
141 
142  return $left[$order_field] <=> $right[$order_field];
143  });
144 
145  if ($order_direction === Order::DESC) {
146  $records = array_reverse($records);
147  }
148  }
149 
150  if ($range) {
151  $records = \array_slice($records, $range->getStart(), $range->getLength());
152  }
153 
154  foreach ($records as $record) {
155  yield $row_builder->buildDataRow((string) $record['id'], $record);
156  }
157  }
const DESC
Definition: Order.php:15
+ Here is the call graph for this function:

◆ getTotalRowCount()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::getTotalRowCount ( ?array  $filter_data,
?array  $additional_parameters 
)

Mainly for the purpose of pagination-support, it is important to know about the total number of records available.

Given the nature of a DataTable, which is, opposite to a PresentationTable, rather administrative than explorative, this information will increase user experience quite a bit. However, you may return null, if the call is to costly, but expect the View Control to look a little different in this case.

Make sure that potential filters or user restrictions are being applied to the count.

Implements ILIAS\UI\Component\Table\DataRetrieval.

Definition at line 159 of file class.ilBadgeImageTemplateTableGUI.php.

References ILIAS\Badge\ilBadgeImageTemplateTableGUI\getRecords().

162  : ?int {
163  return \count($this->getRecords());
164  }
+ Here is the call graph for this function:

◆ renderTable()

ILIAS\Badge\ilBadgeImageTemplateTableGUI::renderTable ( string  $url)

Definition at line 200 of file class.ilBadgeImageTemplateTableGUI.php.

References $id, $out, ILIAS\Data\Order\ASC, ILIAS\Badge\ilBadgeImageTemplateTableGUI\getActions(), ILIAS\Badge\ilBadgeImageTemplateTableGUI\getColumns(), ilBadgeImageTemplate\getInstances(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Filesystem\Stream\Streams\ofString(), and ILIAS\Repository\refinery().

200  : void
201  {
202  $df = new \ILIAS\Data\Factory();
203 
204  $table_uri = $df->uri($url);
205  $url_builder = new URLBuilder($table_uri);
206  $query_params_namespace = ['tid'];
207 
208  [$url_builder, $action_parameter_token, $row_id_token] = $url_builder->acquireParameters(
209  $query_params_namespace,
210  'table_action',
211  'id',
212  );
213 
214  $table = $this->factory
215  ->table()
216  ->data($this->lng->txt('badge_image_templates'), $this->getColumns(), $this)
217  ->withId(self::class)
218  ->withOrder(new Order('title', Order::ASC))
219  ->withActions($this->getActions($url_builder, $action_parameter_token, $row_id_token))
220  ->withRequest($this->request);
221 
222  $out = [$table];
223  $query = $this->http->wrapper()->query();
224  if ($query->has('tid')) {
225  $query_values = $query->retrieve(
226  'tid',
227  $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->string())
228  );
229 
230  $items = [];
231  if ($query_values === ['ALL_OBJECTS']) {
232  foreach (ilBadgeImageTemplate::getInstances() as $template) {
233  if ($template->getId() !== null) {
234  $items[] = $this->factory->modal()->interruptiveItem()->keyValue(
235  (string) $template->getId(),
236  (string) $template->getId(),
237  $template->getTitle()
238  );
239  }
240  }
241  } elseif (\is_array($query_values)) {
242  foreach ($query_values as $id) {
243  $badge = new ilBadgeImageTemplate((int) $id);
244  $items[] = $this->factory->modal()->interruptiveItem()->keyValue(
245  (string) $id,
246  (string) $badge->getId(),
247  $badge->getTitle()
248  );
249  }
250  } else {
251  $badge = new ilBadgeImageTemplate($query_values);
252  $items[] = $this->factory->modal()->interruptiveItem()->keyValue(
253  (string) $badge->getId(),
254  (string) $badge->getId(),
255  $badge->getTitle()
256  );
257  }
258  if ($query->has($action_parameter_token->getName())) {
259  $action = $query->retrieve($action_parameter_token->getName(), $this->refinery->kindlyTo()->string());
260  if ($action === 'badge_image_template_delete') {
261  $this->http->saveResponse(
262  $this->http
263  ->response()
264  ->withBody(
265  Streams::ofString($this->renderer->renderAsync([
266  $this->factory->modal()->interruptive(
267  $this->lng->txt('badge_deletion'),
268  $this->lng->txt('badge_deletion_confirmation'),
269  '#'
270  )->withAffectedItems($items)
271  ]))
272  )
273  );
274  $this->http->sendResponse();
275  $this->http->close();
276  }
277  }
278  }
279 
280  $this->tpl->setContent($this->renderer->render($out));
281  }
getActions(URLBuilder $url_builder, URLBuilderToken $action_parameter_token, URLBuilderToken $row_id_token)
$url
Definition: shib_logout.php:63
static http()
Fetches the global http state from ILIAS.
$out
Definition: buildRTE.php:24
static ofString(string $string)
Creates a new stream with an initial value.
Definition: Streams.php:41
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24
+ Here is the call graph for this function:

Field Documentation

◆ $cached_records

array ILIAS\Badge\ilBadgeImageTemplateTableGUI::$cached_records = null
private

◆ $factory

readonly Factory ILIAS\Badge\ilBadgeImageTemplateTableGUI::$factory
private

Definition at line 42 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $http

readonly Services ILIAS\Badge\ilBadgeImageTemplateTableGUI::$http
private

Definition at line 46 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $lng

readonly ilLanguage ILIAS\Badge\ilBadgeImageTemplateTableGUI::$lng
private

Definition at line 47 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $refinery

readonly ILIAS Refinery Factory ILIAS\Badge\ilBadgeImageTemplateTableGUI::$refinery
private

Definition at line 44 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $renderer

readonly Renderer ILIAS\Badge\ilBadgeImageTemplateTableGUI::$renderer
private

Definition at line 43 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $request

readonly ServerRequestInterface RequestInterface ILIAS\Badge\ilBadgeImageTemplateTableGUI::$request
private

Definition at line 45 of file class.ilBadgeImageTemplateTableGUI.php.

◆ $tpl

readonly ilGlobalTemplateInterface ILIAS\Badge\ilBadgeImageTemplateTableGUI::$tpl
private

Definition at line 48 of file class.ilBadgeImageTemplateTableGUI.php.


The documentation for this class was generated from the following file: