ILIAS  trunk Revision v11.0_alpha-1861-g09f3d197f78
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
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 39 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 45 of file class.ilLegalDocumentsAdministrationGUI.php.

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

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

Member Function Documentation

◆ addCriterion()

ilLegalDocumentsAdministrationGUI::addCriterion ( )

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

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

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

◆ addDocument()

ilLegalDocumentsAdministrationGUI::addDocument ( )

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

References admin(), and ctrlTo().

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

◆ admin()

◆ criterionErrorMessage()

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

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

References ILIAS\Repository\ui().

Referenced by returnWithResult().

309  : string
310  {
311  if (!is_string($error)) {
312  throw $error;
313  }
314 
315  return match ($error) {
316  ProvideDocument::CRITERION_ALREADY_EXISTS => $this->ui->txt('criterion_assignment_must_be_unique'),
317  ProvideDocument::CRITERION_WOULD_NEVER_MATCH => $this->ui->txt('criterion_assignment_cannot_match'),
318  default => $error,
319  };
320  }
+ 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 273 of file class.ilLegalDocumentsAdministrationGUI.php.

References $path.

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

274  {
275  $path = [$this->parent_class, self::class];
276  if ($method === 'setParameterByClass') {
277  $path = self::class;
278  }
279  return $this->container->ctrl()->$method($path, ...$args);
280  }
$path
Definition: ltiservices.php:29
+ Here is the caller graph for this function:

◆ deleteConfirmed()

ilLegalDocumentsAdministrationGUI::deleteConfirmed ( )

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

References admin(), and returnWithMessage().

215  : void
216  {
217  $this->admin->requireEditable();
218  $docs = $this->admin->retrieveDocuments();
219  $this->admin->deleteDocuments($docs);
220  ($this->after_document_deletion)();
221  $this->returnWithMessage(count($docs) === 1 ? 'deleted_documents_s' : 'deleted_documents_p', 'documents');
222  }
+ Here is the call graph for this function:

◆ deleteCriterion()

ilLegalDocumentsAdministrationGUI::deleteCriterion ( )

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

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

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

◆ deleteDocument()

ilLegalDocumentsAdministrationGUI::deleteDocument ( )

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

References admin(), and deleteDocumentsConfirmation().

210  : void
211  {
212  $this->deleteDocumentsConfirmation([$this->admin->currentDocument()->value()]);
213  }
+ Here is the call graph for this function:

◆ deleteDocuments()

ilLegalDocumentsAdministrationGUI::deleteDocuments ( )

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

References admin(), and deleteDocumentsConfirmation().

205  : void
206  {
207  $this->deleteDocumentsConfirmation($this->admin->retrieveDocuments());
208  }
+ Here is the call graph for this function:

◆ deleteDocumentsConfirmation()

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

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

References admin().

Referenced by deleteDocument(), and deleteDocuments().

294  : void
295  {
296  $this->admin->requireEditable();
297  $this->container->tabs()->activateTab('documents');
298  $this->admin->setContent($this->admin->deleteDocumentsConfirmation(
299  $this->ctrlTo('getFormActionByClass', 'ignored'),
300  'deleteConfirmed',
301  'documents',
302  $documents
303  ));
304  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ documents()

ilLegalDocumentsAdministrationGUI::documents ( )

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

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

192  : void
193  {
194  $this->container->language()->loadLanguageModule('meta');
195  $this->container->tabs()->activateTab('documents');
196 
197  if ($this->config->editable()) {
198  $this->container->toolbar()->addStickyItem($this->admin->addDocumentButton($this->ctrlTo('getLinkTargetByClass', 'addDocument')));
199  }
200 
201  $edit_links = $this->config->editable() ? new AdministrationEditLinks($this, $this->admin) : null;
202  $this->ui->mainTemplate()->setContent($this->config->legalDocuments()->document()->table($this, $edit_links)->render());
203  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ editCriterion()

ilLegalDocumentsAdministrationGUI::editCriterion ( )

Definition at line 145 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().

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

◆ editDocument()

ilLegalDocumentsAdministrationGUI::editDocument ( )

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

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

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

◆ executeCommand()

ilLegalDocumentsAdministrationGUI::executeCommand ( )

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

References isCommand().

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

◆ history()

ilLegalDocumentsAdministrationGUI::history ( )

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

References admin().

Referenced by historyResetFilter().

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

◆ historyResetFilter()

ilLegalDocumentsAdministrationGUI::historyResetFilter ( )

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

References history().

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

◆ isCommand()

ilLegalDocumentsAdministrationGUI::isCommand ( string  $cmd)
private

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

Referenced by executeCommand().

282  : bool
283  {
284  $reflection = new ReflectionClass($this);
285  return $reflection->hasMethod($cmd)
286  && $reflection->getMethod($cmd)->isPublic()
287  && (string) $reflection->getMethod($cmd)->getReturnType() === 'void'
288  && $reflection->getMethod($cmd)->getNumberOfParameters() === 0;
289  }
+ Here is the caller graph for this function:

◆ returnWithMessage()

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

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

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

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

322  : void
323  {
324  $this->ui->mainTemplate()->setOnScreenMessage('success', $this->ui->txt($message), true);
325  $this->ctrlTo('redirectByClass', $command);
326  }
$message
Definition: xapiexit.php:31
+ 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 328 of file class.ilLegalDocumentsAdministrationGUI.php.

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

Referenced by addCriterion(), and editCriterion().

328  : void
329  {
330  if ($result->isOk()) {
331  $this->ui->mainTemplate()->setOnScreenMessage('success', $this->ui->txt($success_message), true);
332  } else {
333  $this->ui->mainTemplate()->setOnScreenMessage('failure', $this->criterionErrorMessage($result->error()), true);
334  }
335 
336  $this->ctrlTo('redirectByClass', $target);
337  }
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 242 of file class.ilLegalDocumentsAdministrationGUI.php.

References admin(), and returnWithMessage().

242  : void
243  {
244  $this->admin->requireEditable();
245  $this->admin->withDocumentsAndOrder($this->admin->saveDocumentOrder(...));
246  $this->returnWithMessage('saved_successfully', 'documents');
247  }
+ Here is the call graph for this function:

◆ searchUser()

ilLegalDocumentsAdministrationGUI::searchUser ( )

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

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

84  : void
85  {
86  $auto = new ilUserAutoComplete();
87  $auto->setSearchFields(['login', 'firstname', 'lastname', 'email']);
88  $auto->enableFieldSearchableCheck(false);
89  $auto->setMoreLinkAvailable(true);
90 
91  if ($this->container->http()->wrapper()->query()->has('fetchall')) {
92  $auto->setLimit(ilUserAutoComplete::MAX_ENTRIES);
93  }
94 
95  if ($this->container->http()->wrapper()->query()->has('term')) {
96  $query = ilUtil::stripSlashes(
97  $this->container->http()->wrapper()->query()->retrieve('term', $this->container->refinery()->kindlyTo()->string())
98  );
99  $response = $this->container->http()
100  ->response()
101  ->withHeader(ResponseHeader::CONTENT_TYPE, 'application/json')
102  ->withBody(Streams::ofString($auto->getList($query)));
103  $this->container->http()->saveResponse($response);
104  }
105 
106  $this->container->http()->sendResponse();
107  $this->container->http()->close();
108  }
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
Returns
array{0: string, 1: string, 2: string, 3: bool}

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

References ctrlTo().

Referenced by tabs().

263  : array
264  {
265  return [$cmd, $label, $this->ctrlTo('getLinkTargetByClass', $cmd), $can_access];
266  }
+ 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 252 of file class.ilLegalDocumentsAdministrationGUI.php.

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

252  : void
253  {
254  $this->admin->tabs([
255  $this->tab('documents', $this->ui->txt('agreement_documents_tab_label')),
256  $this->tab('history', $this->ui->txt('acceptance_history'), $this->admin->canReadUserAdministration()),
257  ], $run_after);
258  }
tab(string $cmd, string $label, bool $can_access=true)
+ Here is the call graph for this function:

◆ upload()

ilLegalDocumentsAdministrationGUI::upload ( )

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

References $id, and admin().

177  : void
178  {
179  $this->admin->requireEditable();
180  $this->admin->idOrHash($this, function (Closure $link, string $title, DocumentId $id) {
181  $raw_content = $this->admin->uploadContent();
182  $sanitised_value = trim((new HTMLPurifier())->purify($raw_content));
183  if ($this->admin->isInvalidHTML($sanitised_value)) {
184  $sanitised_value = nl2br($sanitised_value);
185  }
186 
187  $this->config->legalDocuments()->document()->repository()->updateDocumentContent($id, new DocumentContent('html', $title, $sanitised_value));
188  $this->admin->exitWithJsonResponse(['status' => 1]);
189  });
190  }
$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 43 of file class.ilLegalDocumentsAdministrationGUI.php.

Referenced by admin().

◆ $container

readonly Container ilLegalDocumentsAdministrationGUI::$container
private

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

◆ $ui

readonly UI ilLegalDocumentsAdministrationGUI::$ui
private

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


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