ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilLegalDocumentsAdministrationGUI Class Reference
+ Collaboration diagram for ilLegalDocumentsAdministrationGUI:

Public Member Functions

 __construct (private readonly string $parent_class, private readonly Config $config, private readonly Closure $after_document_deletion, ?Container $container=null)
 
 executeCommand ()
 
 history ()
 
 searchUser ()
 
 historyResetFilter ()
 
 addDocument ()
 
 addCriterion ()
 
 editCriterion ()
 
 deleteCriterion ()
 
 upload ()
 
 documents ()
 
 deleteDocuments ()
 
 deleteDocument ()
 
 deleteConfirmed ()
 
 editDocument ()
 
 saveOrder ()
 
 tabs (array $run_after=[])
 
 admin ()
 

Private Member Functions

 tab (string $cmd, string $label, bool $can_access=true)
 
 ctrlTo (string $method,... $args)
 
 isCommand (string $cmd)
 
 deleteDocumentsConfirmation (array $documents)
 
 criterionErrorMessage ($error)
 
 returnWithMessage (string $message, string $command)
 
 returnWithResult (Result $result, string $success_message, string $target)
 

Private Attributes

readonly Container $container
 
readonly UI $ui
 
readonly Administration $admin
 

Detailed Description

Definition at line 41 of file class.ilLegalDocumentsAdministrationGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilLegalDocumentsAdministrationGUI::__construct ( private readonly string  $parent_class,
private readonly Config  $config,
private readonly Closure  $after_document_deletion,
?Container  $container = null 
)

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

References $GLOBALS, admin(), and ILIAS\Repository\ui().

52  {
53  $this->container = $container ?? $GLOBALS['DIC'];
54  $this->container->language()->loadLanguageModule('ldoc');
55  $this->ui = new UI(
56  $this->config->legalDocuments()->id(),
57  $this->container->ui(),
58  $this->container->language()
59  );
60  $this->admin = new Administration($this->config, $this->container, $this->ui);
61  }
$GLOBALS["DIC"]
Definition: wac.php:31
+ Here is the call graph for this function:

Member Function Documentation

◆ addCriterion()

ilLegalDocumentsAdministrationGUI::addCriterion ( )

Definition at line 124 of file class.ilLegalDocumentsAdministrationGUI.php.

References $url, admin(), ctrlTo(), and returnWithResult().

124  : void
125  {
126  $this->admin->requireEditable();
127  $this->container->tabs()->clearTargets();
128  $this->container->tabs()->setBackTarget($this->container->language()->txt('back'), $this->ctrlTo('getLinkTargetByClass', 'documents'));
129 
130  $document = $this->admin->currentDocument()->value();
131 
132  $this->container->language()->loadLanguageModule('meta');
133 
134  $url = $this->admin->targetWithDoc($this, $document, 'addCriterion', 'getFormAction');
135  $form = $this->admin->criterionForm($url, $document);
136 
137  $form = $this->admin->withFormData($form, function (array $x) use ($document) {
138  $content = new CriterionContent(...$x[0]['content']);
139  $this->returnWithResult($this->config->legalDocuments()->document()->validateCriteriaContent($document->criteria(), $content)->map(
140  fn() => $this->config->legalDocuments()->document()->repository()->createCriterion($document, $content)
141  ), 'doc_crit_attached', 'documents');
142  });
143 
144  $this->admin->setContent($form);
145  }
returnWithResult(Result $result, string $success_message, string $target)
$url
Definition: ltiregstart.php:35
+ Here is the call graph for this function:

◆ addDocument()

ilLegalDocumentsAdministrationGUI::addDocument ( )

Definition at line 117 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), and ctrlTo().

117  : void
118  {
119  $this->admin->requireEditable();
120  $this->ctrlTo('setParameterByClass', 'hash', $this->config->legalDocuments()->document()->hash());
121  $this->ctrlTo('redirectByClass', 'editDocument');
122  }
+ Here is the call graph for this function:

◆ admin()

◆ criterionErrorMessage()

ilLegalDocumentsAdministrationGUI::criterionErrorMessage (   $error)
private
Parameters
string | Exception$error

Definition at line 319 of file class.ilLegalDocumentsAdministrationGUI.php.

References ILIAS\Repository\ui().

Referenced by returnWithResult().

319  : string
320  {
321  if (!is_string($error)) {
322  throw $error;
323  }
324 
325  return match ($error) {
326  ProvideDocument::CRITERION_ALREADY_EXISTS => $this->ui->txt('criterion_assignment_must_be_unique'),
327  ProvideDocument::CRITERION_WOULD_NEVER_MATCH => $this->ui->txt('criterion_assignment_cannot_match'),
328  default => $error,
329  };
330  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ctrlTo()

ilLegalDocumentsAdministrationGUI::ctrlTo ( string  $method,
  $args 
)
private

Definition at line 283 of file class.ilLegalDocumentsAdministrationGUI.php.

References $path.

Referenced by addCriterion(), addDocument(), deleteDocuments(), editCriterion(), editDocument(), returnWithMessage(), returnWithResult(), saveOrder(), and tab().

284  {
285  $path = [$this->parent_class, self::class];
286  if ($method === 'setParameterByClass') {
287  $path = self::class;
288  }
289  return $this->container->ctrl()->$method($path, ...$args);
290  }
$path
Definition: ltiservices.php:32
+ Here is the caller graph for this function:

◆ deleteConfirmed()

ilLegalDocumentsAdministrationGUI::deleteConfirmed ( )

Definition at line 222 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), and returnWithMessage().

222  : void
223  {
224  $this->admin->requireEditable();
225  $docs = $this->admin->retrieveDocuments();
226  $this->admin->deleteDocuments($docs);
227  ($this->after_document_deletion)();
228  $this->returnWithMessage(count($docs) === 1 ? 'deleted_documents_s' : 'deleted_documents_p', 'documents');
229  }
+ Here is the call graph for this function:

◆ deleteCriterion()

ilLegalDocumentsAdministrationGUI::deleteCriterion ( )

Definition at line 170 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), ILIAS\LegalDocuments\Value\Criterion\id(), and returnWithMessage().

170  : void
171  {
172  $this->admin->requireEditable();
173  $this->admin->withDocumentAndCriterion(function (Document $document, Criterion $criterion) {
174  $this->config->legalDocuments()->document()->repository()->deleteCriterion($criterion->id());
175  $this->returnWithMessage('doc_crit_detached', 'documents');
176  });
177  }
+ Here is the call graph for this function:

◆ deleteDocument()

ilLegalDocumentsAdministrationGUI::deleteDocument ( )

Definition at line 217 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), and deleteDocumentsConfirmation().

217  : void
218  {
219  $this->deleteDocumentsConfirmation([$this->admin->currentDocument()->value()]);
220  }
+ Here is the call graph for this function:

◆ deleteDocuments()

ilLegalDocumentsAdministrationGUI::deleteDocuments ( )

Definition at line 207 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), ctrlTo(), deleteDocumentsConfirmation(), and ILIAS\Repository\ui().

207  : void
208  {
209  $documents = $this->admin->retrieveDocuments();
210  if ($documents === []) {
211  $this->ui->mainTemplate()->setOnScreenMessage('failure', $this->ui->txt('select_at_least_one_object'), true);
212  $this->ctrlTo('redirectByClass', 'documents');
213  }
214  $this->deleteDocumentsConfirmation($documents);
215  }
+ Here is the call graph for this function:

◆ deleteDocumentsConfirmation()

ilLegalDocumentsAdministrationGUI::deleteDocumentsConfirmation ( array  $documents)
private
Parameters
list<Document>$documents

Definition at line 304 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin().

Referenced by deleteDocument(), and deleteDocuments().

304  : void
305  {
306  $this->admin->requireEditable();
307  $this->container->tabs()->activateTab('documents');
308  $this->admin->setContent($this->admin->deleteDocumentsConfirmation(
309  $this->ctrlTo('getFormActionByClass', 'ignored'),
310  'deleteConfirmed',
311  'documents',
312  $documents
313  ));
314  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ documents()

ilLegalDocumentsAdministrationGUI::documents ( )

Definition at line 194 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin().

194  : void
195  {
196  $this->container->language()->loadLanguageModule('meta');
197  $this->container->tabs()->activateTab('documents');
198 
199  if ($this->config->editable()) {
200  $this->container->toolbar()->addStickyItem($this->admin->addDocumentButton($this->ctrlTo('getLinkTargetByClass', 'addDocument')));
201  }
202 
203  $edit_links = $this->config->editable() ? new AdministrationEditLinks($this, $this->admin) : null;
204  $this->admin->setContent($this->config->legalDocuments()->document()->table($this, __FUNCTION__, $edit_links));
205  }
+ Here is the call graph for this function:

◆ editCriterion()

ilLegalDocumentsAdministrationGUI::editCriterion ( )

Definition at line 147 of file class.ilLegalDocumentsAdministrationGUI.php.

References $data, $url, admin(), ILIAS\LegalDocuments\Value\Criterion\content(), ILIAS\LegalDocuments\Value\Document\content(), ILIAS\LegalDocuments\Value\Document\criteria(), ctrlTo(), ILIAS\LegalDocuments\Value\Criterion\id(), and returnWithResult().

147  : void
148  {
149  $this->admin->requireEditable();
150  $this->admin->withDocumentAndCriterion(function (Document $document, Criterion $criterion) {
151  $this->container->language()->loadLanguageModule('meta');
152  $url = $this->admin->targetWithDocAndCriterion($this, $document, $criterion, 'editCriterion', 'getFormAction');
153  $form = $this->admin->criterionForm($url, $document, $criterion->content());
154  $form = $this->admin->withFormData($form, function (array $data) use ($document, $criterion) {
155  $content = new CriterionContent(...$data[0]['content']);
156  $criteria = array_filter($document->criteria(), fn(Criterion $other) => $other->id() !== $criterion->id());
157  $this->returnWithResult($this->config->legalDocuments()->document()->validateCriteriaContent($criteria, $content)->map(
158  fn() => $this->config->legalDocuments()->document()->repository()->updateCriterionContent($criterion->id(), $content)
159  ), 'doc_crit_changed', 'documents');
160  });
161 
162  $this->container->tabs()->clearTargets();
163  $this->container->tabs()->setBackTarget($this->container->language()->txt('back'), $this->ctrlTo('getLinkTargetByClass', 'documents'));
164  $condition = $this->config->legalDocuments()->document()->toCondition($criterion->content());
165  $this->container->ui()->mainTemplate()->setTitle(join(' - ', [$document->content()->title(), $condition->definition()->translatedType()]));
166  $this->admin->setContent($form);
167  });
168  }
returnWithResult(Result $result, string $success_message, string $target)
$url
Definition: ltiregstart.php:35
+ Here is the call graph for this function:

◆ editDocument()

ilLegalDocumentsAdministrationGUI::editDocument ( )

Definition at line 231 of file class.ilLegalDocumentsAdministrationGUI.php.

References Vendor\Package\$d, $data, $id, admin(), ctrlTo(), and returnWithMessage().

231  : void
232  {
233  $this->admin->requireEditable();
234  $this->container->tabs()->clearTargets();
235  $this->admin->idOrHash($this, function (Closure $link, string $title, DocumentId $id, bool $may_be_new) {
236  $content = fn() => $this->config->legalDocuments()->document()->repository()->findId($id)->map(fn($d) => $d->content());
237  $form = $this->admin->documentForm($link, $title, $content, $may_be_new);
238  $form = $this->admin->withFormData($form, function ($data) use (/* $edit_link, */$id) {
239  $this->config->legalDocuments()->document()->repository()->updateDocumentTitle($id, $data[0]['title']);
240  $this->returnWithMessage('saved_successfully', 'documents');
241  });
242 
243  $this->container->tabs()->setBackTarget($this->container->language()->txt('back'), $this->ctrlTo('getLinkTargetByClass', 'documents'));
244  $this->container->tabs()->activateTab('documents');
245  $this->admin->setContent($form);
246  });
247  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ executeCommand()

ilLegalDocumentsAdministrationGUI::executeCommand ( )

Definition at line 63 of file class.ilLegalDocumentsAdministrationGUI.php.

References isCommand().

63  : void
64  {
65  $cmd = $this->container->ctrl()->getCmd('documents');
66  if (!$this->isCommand($cmd)) {
67  throw new Exception('Unknown command: ' . $cmd);
68  }
69  $this->$cmd();
70  }
+ Here is the call graph for this function:

◆ history()

ilLegalDocumentsAdministrationGUI::history ( )

Definition at line 72 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin().

Referenced by historyResetFilter().

72  : void
73  {
74  if (!$this->admin->canReadUserAdministration()) {
75  $this->container['ilErr']->raiseError($this->container->language()->txt('permission_denied'), $this->container['ilErr']->WARNING);
76  }
77  $this->container->tabs()->activateTab('history');
78  $this->admin->setContent($this->config->legalDocuments()->history()->table(
79  $this,
80  'history',
81  'historyResetFilter',
82  'searchUser'
83  ));
84  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ historyResetFilter()

ilLegalDocumentsAdministrationGUI::historyResetFilter ( )

Definition at line 112 of file class.ilLegalDocumentsAdministrationGUI.php.

References history().

112  : void
113  {
114  $this->history();
115  }
+ Here is the call graph for this function:

◆ isCommand()

ilLegalDocumentsAdministrationGUI::isCommand ( string  $cmd)
private

Definition at line 292 of file class.ilLegalDocumentsAdministrationGUI.php.

Referenced by executeCommand().

292  : bool
293  {
294  $reflection = new ReflectionClass($this);
295  return $reflection->hasMethod($cmd)
296  && $reflection->getMethod($cmd)->isPublic()
297  && (string) $reflection->getMethod($cmd)->getReturnType() === 'void'
298  && $reflection->getMethod($cmd)->getNumberOfParameters() === 0;
299  }
+ Here is the caller graph for this function:

◆ returnWithMessage()

ilLegalDocumentsAdministrationGUI::returnWithMessage ( string  $message,
string  $command 
)
private

Definition at line 332 of file class.ilLegalDocumentsAdministrationGUI.php.

References ctrlTo(), and ILIAS\Repository\ui().

Referenced by deleteConfirmed(), deleteCriterion(), editDocument(), and saveOrder().

332  : void
333  {
334  $this->ui->mainTemplate()->setOnScreenMessage('success', $this->ui->txt($message), true);
335  $this->ctrlTo('redirectByClass', $command);
336  }
$message
Definition: xapiexit.php:32
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ returnWithResult()

ilLegalDocumentsAdministrationGUI::returnWithResult ( Result  $result,
string  $success_message,
string  $target 
)
private

Definition at line 338 of file class.ilLegalDocumentsAdministrationGUI.php.

References criterionErrorMessage(), ctrlTo(), ILIAS\Data\Result\error(), and ILIAS\Repository\ui().

Referenced by addCriterion(), and editCriterion().

338  : void
339  {
340  if ($result->isOk()) {
341  $this->ui->mainTemplate()->setOnScreenMessage('success', $this->ui->txt($success_message), true);
342  } else {
343  $this->ui->mainTemplate()->setOnScreenMessage('failure', $this->criterionErrorMessage($result->error()), true);
344  }
345 
346  $this->ctrlTo('redirectByClass', $target);
347  }
error()
Get the encapsulated error.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveOrder()

ilLegalDocumentsAdministrationGUI::saveOrder ( )

Definition at line 249 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), ctrlTo(), returnWithMessage(), and ILIAS\Repository\ui().

249  : void
250  {
251  $this->admin->requireEditable();
252  try {
253  $this->admin->withDocumentsAndOrder($this->admin->saveDocumentOrder(...));
254  $this->returnWithMessage('saved_successfully', 'documents');
255  } catch (ConstraintViolationException) {
256  $this->ui->mainTemplate()->setOnScreenMessage('failure', $this->ui->txt('ldoc_order_invalid'), true);
257  $this->ctrlTo('redirectByClass', 'documents');
258  }
259 
260  }
+ Here is the call graph for this function:

◆ searchUser()

ilLegalDocumentsAdministrationGUI::searchUser ( )

Definition at line 86 of file class.ilLegalDocumentsAdministrationGUI.php.

References $response, ilUserAutoComplete\MAX_ENTRIES, and ilUtil\stripSlashes().

86  : void
87  {
88  $auto = new ilUserAutoComplete();
89  $auto->setSearchFields(['login', 'firstname', 'lastname', 'email']);
90  $auto->enableFieldSearchableCheck(false);
91  $auto->setMoreLinkAvailable(true);
92 
93  if ($this->container->http()->wrapper()->query()->has('fetchall')) {
94  $auto->setLimit(ilUserAutoComplete::MAX_ENTRIES);
95  }
96 
97  if ($this->container->http()->wrapper()->query()->has('term')) {
98  $query = ilUtil::stripSlashes(
99  $this->container->http()->wrapper()->query()->retrieve('term', $this->container->refinery()->kindlyTo()->string())
100  );
101  $response = $this->container->http()
102  ->response()
103  ->withHeader(ResponseHeader::CONTENT_TYPE, 'application/json')
104  ->withBody(Streams::ofString($auto->getList($query)));
105  $this->container->http()->saveResponse($response);
106  }
107 
108  $this->container->http()->sendResponse();
109  $this->container->http()->close();
110  }
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
$response
Definition: xapitoken.php:93
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:

◆ tab()

ilLegalDocumentsAdministrationGUI::tab ( string  $cmd,
string  $label,
bool  $can_access = true 
)
private

Definition at line 273 of file class.ilLegalDocumentsAdministrationGUI.php.

References ctrlTo().

Referenced by tabs().

273  : array
274  {
275  return [$cmd, $label, $this->ctrlTo('getLinkTargetByClass', $cmd), $can_access];
276  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tabs()

ilLegalDocumentsAdministrationGUI::tabs ( array  $run_after = [])
Parameters
array<string,Closure()void> $run_after

Definition at line 265 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), tab(), and ILIAS\Repository\ui().

265  : void
266  {
267  $this->admin->tabs([
268  $this->tab('documents', $this->ui->txt('agreement_documents_tab_label')),
269  $this->tab('history', $this->ui->txt('acceptance_history'), $this->admin->canReadUserAdministration()),
270  ], $run_after);
271  }
tab(string $cmd, string $label, bool $can_access=true)
+ Here is the call graph for this function:

◆ upload()

ilLegalDocumentsAdministrationGUI::upload ( )

Definition at line 179 of file class.ilLegalDocumentsAdministrationGUI.php.

References $id, and admin().

179  : void
180  {
181  $this->admin->requireEditable();
182  $this->admin->idOrHash($this, function (Closure $link, string $title, DocumentId $id) {
183  $raw_content = $this->admin->uploadContent();
184  $sanitised_value = trim((new HTMLPurifier())->purify($raw_content));
185  if ($this->admin->isInvalidHTML($sanitised_value)) {
186  $sanitised_value = nl2br($sanitised_value);
187  }
188 
189  $this->config->legalDocuments()->document()->repository()->updateDocumentContent($id, new DocumentContent('html', $title, $sanitised_value));
190  $this->admin->exitWithJsonResponse(['status' => 1]);
191  });
192  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

Field Documentation

◆ $admin

readonly Administration ilLegalDocumentsAdministrationGUI::$admin
private

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

Referenced by admin().

◆ $container

readonly Container ilLegalDocumentsAdministrationGUI::$container
private

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

◆ $ui

readonly UI ilLegalDocumentsAdministrationGUI::$ui
private

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


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