ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ILIAS\Questions\Presentation\Views\Edit Class Reference
+ Collaboration diagram for ILIAS\Questions\Presentation\Views\Edit:

Public Member Functions

 __construct (private readonly Language $lng, private readonly \ilObjUser $current_user, private readonly Refinery $refinery, private readonly UIFactory $ui_factory, private readonly UIRenderer $ui_renderer, private readonly GlobalScreen $global_screen, private readonly GlobalTemplate $global_tpl, private readonly ContentStyle $content_style, private readonly \ilCtrl $ctrl, private readonly HTTP $http, private readonly \ilTabsGUI $tabs_gui, private readonly \ilUIService $ui_services, private readonly UuidFactory $uuid_factory, private readonly ConfigurationRepository $configuration_repository, private readonly AnswerFormFactory $answer_form_factory, private readonly Repository $questions_repository, private readonly AttemptRepository $attempt_repository, private readonly LayoutFactory $layout_factory, private readonly CapabilitiesFactory $capabilities_factory, array $capability_identifiers, private readonly int $owner_object_id)
 
 withEditable (Editability $editability)
 
 withOrderingEnabled (bool $enable)
 
 getUI (URI $base_uri, int $ref_id)
 
 forwardPageCmds (URI $base_uri, int $ref_id)
 
 getCreateAnswerForm (URI $base_uri, Question $question, \ilPCAnswerForm $content_object)
 
 getEditAnswerForm (URI $base_uri, Question $question, AnswerFormProperties $answer_form_properties, Definition $type_definition)
 

Data Fields

const string ACTION_EDIT_QUESTION = 'edit'
 
const string ACTION_CLONE_QUESTION = 'clone'
 
const string ACTION_DELETE_QUESTIONS = 'delete'
 
const string ACTION_OTHER_ANSWER_FORM = 'other_af'
 

Private Member Functions

 createQuestion (DefaultEnvironment $environment)
 
 editQuestion (DefaultEnvironment $environment)
 
 cloneQuestion (DefaultEnvironment $environment)
 
 deleteQuestions (DefaultEnvironment $environment)
 
 showTable (DefaultEnvironment $environment)
 
 processCreateAnswerForm (DefaultEnvironment $environment, Question $question, \ilPCAnswerForm $content_object)
 
 forwardCreateAnswerFormCmd (DefaultEnvironment $environment, Question $question, \ilPCAnswerForm $content_object, AnswerFormEditView $answer_form_edit_view)
 
 processOtherAnswerFormAction (Environment $environment, Question $question, AnswerFormEditView $edit_view)
 
 updateAnswerFormAndRedirect (Environment $environment, Question $question, AnswerFormProperties $properties)
 
 createAnswerFormAndRedirect (Environment $environment, Question $question, \ilPCAnswerForm $content_object)
 
 initializeEditMode (DefaultEnvironment $environment)
 
 buildQuestionListSlate (DefaultEnvironment $environment)
 
 buildItemGroupForQuestionListSlate (DefaultEnvironment $environment)
 
 builEditLinksForQuestionListSlate (Environment $environment)
 
 buildEditStartView (DefaultEnvironment $environment, Question $question)
 
 buildCreateAnswerForm (DefaultEnvironment $environment)
 
 buildAffectedItems (string|array $question_ids)
 
 deleteSelectedQuestions (array $question_ids)
 
 addSaveAndNewToAnswerFormCreateIfNeeded (Environment $environment, EditForm $edit_form)
 
 buildEnvironment (URI $base_uri,)
 
 buildAfterQuestionCreationRedirectUri (DefaultEnvironment $environment, CreateModes $create_mode, Uuid $question_uuid)
 
 buildAfterAnswerFormCreationRedirectUri (DefaultEnvironment $environment,)
 

Private Attributes

const string ACTION_CREATE_QUESTION = 'create'
 
const string ACTION_CREATE_ANSWER_FORM = 'create_af'
 
Editability $editability = Editability::Full
 
bool $ordering_enabled = false
 
readonly RequiredCapabilities $required_capabilities
 

Detailed Description

Definition at line 60 of file Edit.php.

Constructor & Destructor Documentation

◆ __construct()

ILIAS\Questions\Presentation\Views\Edit::__construct ( private readonly Language  $lng,
private readonly \ilObjUser  $current_user,
private readonly Refinery  $refinery,
private readonly UIFactory  $ui_factory,
private readonly UIRenderer  $ui_renderer,
private readonly GlobalScreen  $global_screen,
private readonly GlobalTemplate  $global_tpl,
private readonly ContentStyle  $content_style,
private readonly \ilCtrl  $ctrl,
private readonly HTTP  $http,
private readonly \ilTabsGUI  $tabs_gui,
private readonly \ilUIService  $ui_services,
private readonly UuidFactory  $uuid_factory,
private readonly ConfigurationRepository  $configuration_repository,
private readonly AnswerFormFactory  $answer_form_factory,
private readonly Repository  $questions_repository,
private readonly AttemptRepository  $attempt_repository,
private readonly LayoutFactory  $layout_factory,
private readonly CapabilitiesFactory  $capabilities_factory,
array  $capability_identifiers,
private readonly int  $owner_object_id 
)
Parameters
list<class-string<Capability>>$capability_identifiers

Definition at line 77 of file Edit.php.

99 {
100 $this->required_capabilities = $this->capabilities_factory->get(
101 $capability_identifiers
102 );
103 }

Member Function Documentation

◆ addSaveAndNewToAnswerFormCreateIfNeeded()

ILIAS\Questions\Presentation\Views\Edit::addSaveAndNewToAnswerFormCreateIfNeeded ( Environment  $environment,
EditForm  $edit_form 
)
private

Definition at line 831 of file Edit.php.

834 : EditForm {
835 if ($edit_form->isFinalStep() && $environment->isCreateModeSimple()) {
836 $edit_form = $edit_form->withAdditionalAction(
837 $environment->buildURLBuilderTokenForCreateAndNew(),
838 '1',
839 $this->lng->txt('save_and_new')
840 );
841 }
842
843 return $edit_form;
844 }
withAdditionalAction(URLBuilderToken $parameter_token, string $parameter_value, string $label)
Definition: EditForm.php:168

References ILIAS\Questions\Presentation\Layout\EditForm\withAdditionalAction().

+ Here is the call graph for this function:

◆ buildAffectedItems()

ILIAS\Questions\Presentation\Views\Edit::buildAffectedItems ( string|array  $question_ids)
private
Parameters
string|array<

ILIAS\Data\UUID\Uuid> $question_ids

Returns
array<\ILIAS\UI\Component\Modal\InterruptiveItem\Standard>

Definition at line 798 of file Edit.php.

800 : array {
801 $questions = $question_ids === 'ALL_OBJECTS'
802 ? $this->questions_repository->getQuestionDataOnlyForAllQuestions()
803 : $this->questions_repository->getQuestionDataOnlyForQuestionIds($question_ids);
804 $affected_items = [];
805 foreach ($questions as $question) {
806 $affected_items[] = $this->ui_factory->modal()->interruptiveItem()->standard(
807 $question->getId()->toString(),
808 $question->getTitle()
809 );
810 }
811 return $affected_items;
812 }

◆ buildAfterAnswerFormCreationRedirectUri()

ILIAS\Questions\Presentation\Views\Edit::buildAfterAnswerFormCreationRedirectUri ( DefaultEnvironment  $environment)
private

Definition at line 891 of file Edit.php.

893 : string {
894 if (!$this->configuration_repository->isCreateModeSimple($environment)) {
895 return $this->ctrl->getLinkTargetByClass(
896 \QstsQuestionPageGUI::class,
897 'edit'
898 );
899 }
900
901 $additonal_data = $this->global_screen
902 ->tool()
903 ->context()
904 ->current()
905 ->getAdditionalData();
906
907 if ($environment->isCreateAndNewAction()) {
908 return $additonal_data
910 ->__toString();
911 }
912
913 return $additonal_data
915 ->__toString();
916 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ buildAfterQuestionCreationRedirectUri()

ILIAS\Questions\Presentation\Views\Edit::buildAfterQuestionCreationRedirectUri ( DefaultEnvironment  $environment,
CreateModes  $create_mode,
Uuid  $question_uuid 
)
private

Definition at line 864 of file Edit.php.

868 : string {
869 if ($create_mode !== CreateModes::Simple) {
870 return $environment
872 ->withActionParameter(self::ACTION_EDIT_QUESTION)
873 ->withQuestionIdParameter($question_uuid)
874 ->getUrlBuilder()
875 ->buildURI()
876 ->__toString();
877 }
878
879 $environment->setParamtersForSimpleCreateCmd($question_uuid);
880
881 return $this->ctrl->getLinkTargetByClass(
882 [
883 \QstsQuestionPageGUI::class,
884 \ilPageEditorGUI::class,
885 \ilPCAnswerFormGUI::class
886 ],
887 'insert'
888 );
889 }

References ILIAS\Questions\Presentation\Definitions\DefaultEnvironment\withDefaultSubAction().

+ Here is the call graph for this function:

◆ buildCreateAnswerForm()

ILIAS\Questions\Presentation\Views\Edit::buildCreateAnswerForm ( DefaultEnvironment  $environment)
private

Definition at line 757 of file Edit.php.

759 : EditForm {
760 $if = $this->ui_factory->input();
761
762 $inputs = [];
763 if ($this->configuration_repository->isCreateModeSimple($environment)) {
764 $inputs['question_text'] = $if->field()->textarea(
765 $this->lng->txt('question_text')
766 )->withRequired(true);
767 }
768
769 return $environment->getPresentationFactory()->getEditForm(
770 $if->field()->section(
771 $inputs + [
772 'type' => $if->field()->select(
773 $this->lng->txt('select_answer_form_type'),
774 $this->answer_form_factory
775 ->getAnswerFormTypesArrayForSelect($this->lng)
776 )->withRequired(true)
777 ->withAdditionalTransformation(
778 $this->refinery->custom()->transformation(
779 fn(string $v): ?Definition => $this->answer_form_factory
780 ->getTypeDefinitionFromSelectValue($v)
781 )
782 )
783 ],
784 $this->lng->txt('create_answer_form')
785 ),
786 $environment->withActionParameter(
787 self::ACTION_CREATE_ANSWER_FORM
788 )->getUrlBuilder(),
789 null
790 );
791 }

References ILIAS\UI\Implementation\Component\Input\$inputs, and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ buildEditStartView()

ILIAS\Questions\Presentation\Views\Edit::buildEditStartView ( DefaultEnvironment  $environment,
Question  $question 
)
private

Definition at line 739 of file Edit.php.

742 : EditForm {
743 return $question->getEditView(
744 $this->current_user,
745 $this->ctrl,
746 $this->http->wrapper()->post(),
747 $this->ui_renderer,
748 $this->uuid_factory,
749 $this->configuration_repository,
750 $this->attempt_repository,
751 $this->required_capabilities
752 )->edit(
753 $environment
754 );
755 }
getEditView(\ilObjUser $current_user, \ilCtrl $ctrl, RequestWrapper $post_wrapper, UIRenderer $ui_renderer, UuidFactory $uuid_factory, ConfigurationRepository $configuration_repository, AttemptRepository $attempt_repository, RequiredCapabilities $required_capabilities)
Definition: Question.php:336
static http()
Fetches the global http state from ILIAS.

◆ buildEnvironment()

ILIAS\Questions\Presentation\Views\Edit::buildEnvironment ( URI  $base_uri)
private

Definition at line 846 of file Edit.php.

849 return new DefaultEnvironment(
850 $this->ctrl,
851 $this->http,
852 $this->refinery,
853 $this->lng,
854 $this->tabs_gui,
855 $this->uuid_factory,
856 $this->layout_factory,
857 $this->editability,
858 $this->required_capabilities,
859 $this->owner_object_id,
860 $base_uri
861 );
862 }

◆ buildItemGroupForQuestionListSlate()

ILIAS\Questions\Presentation\Views\Edit::buildItemGroupForQuestionListSlate ( DefaultEnvironment  $environment)
private

Definition at line 715 of file Edit.php.

717 : ItemGroup {
718 return $this->ui_factory->item()->group(
719 '',
720 $this->builEditLinksForQuestionListSlate($environment)
721 );
722 }
builEditLinksForQuestionListSlate(Environment $environment)
Definition: Edit.php:724

◆ buildQuestionListSlate()

ILIAS\Questions\Presentation\Views\Edit::buildQuestionListSlate ( DefaultEnvironment  $environment)
private

Definition at line 696 of file Edit.php.

698 : LegacySlate {
699 return $this->ui_factory->mainControls()->slate()->legacy(
700 $this->lng->txt('questionlist'),
701 $this->ui_factory->symbol()->icon()->standard('', '')->withAbbreviation('QL'),
702 $this->ui_factory->legacy()->content(
703 $this->ui_renderer->render(
704 $this->ui_factory->panel()->secondary()->listing(
705 $this->lng->txt('questionlist'),
706 [
707 $this->buildItemGroupForQuestionListSlate($environment)
708 ]
709 )
710 )
711 )
712 );
713 }

◆ builEditLinksForQuestionListSlate()

ILIAS\Questions\Presentation\Views\Edit::builEditLinksForQuestionListSlate ( Environment  $environment)
private

Definition at line 724 of file Edit.php.

726 : array {
727 $links = [];
728 foreach ($this->questions_repository->getQuestionDataOnlyForAllQuestions() as $question) {
729 $links[] = $this->ui_factory->item()->standard(
730 $question->toEditLink(
731 $this->ui_factory->link(),
732 $environment->withActionParameter(self::ACTION_EDIT_QUESTION)
733 )
734 );
735 }
736 return $links;
737 }

◆ cloneQuestion()

ILIAS\Questions\Presentation\Views\Edit::cloneQuestion ( DefaultEnvironment  $environment)
private

Definition at line 413 of file Edit.php.

415 : QuestionsTable {
416 $question_to_clone = $environment->getQuestionIds();
417
418 if (!isset($question_to_clone[0])) {
419 return $this->showTable($environment);
420 }
421
422 $question = $this->questions_repository->getForQuestionId(
423 $question_to_clone[0]
424 );
425 $this->questions_repository->create(
426 [
427 $question->clone(
428 $this->uuid_factory,
429 [
430 'parent_obj_id' => $environment->getParentObjId(),
431 'new_question_page_id' => $this->questions_repository
432 ->getNextAvailableQuestionPageId(),
433 'required_capabilities' => $this->required_capabilities
434 ]
435 )->withParentObjId($environment->getParentObjId())
436 ]
437 );
438
439 $this->ctrl->redirectToURL(
440 $environment->getUrlBuilder()->buildURI()->__toString()
441 );
442 }
getQuestionIds()
This function will either return the QuestionIds from the $_GET parameter for row ids OR from an Inte...
showTable(DefaultEnvironment $environment)
Definition: Edit.php:479

◆ createAnswerFormAndRedirect()

ILIAS\Questions\Presentation\Views\Edit::createAnswerFormAndRedirect ( Environment  $environment,
Question  $question,
\ilPCAnswerForm  $content_object 
)
private

Definition at line 650 of file Edit.php.

654 : never {
655 $this->questions_repository->update(
656 [$question]
657 );
658
659 $content_object->create(
660 $environment->getAnswerFormProperties()->getAnswerFormId()
661 );
662 $content_object->getPage()->update();
663
664 $this->ctrl->redirectToURL(
665 $this->buildAfterAnswerFormCreationRedirectUri($environment)
666 );
667
668 }
buildAfterAnswerFormCreationRedirectUri(DefaultEnvironment $environment,)
Definition: Edit.php:891

◆ createQuestion()

ILIAS\Questions\Presentation\Views\Edit::createQuestion ( DefaultEnvironment  $environment)
private

Definition at line 331 of file Edit.php.

333 : EditForm {
334 $this->initializeEditMode($environment);
335 $this->tabs_gui->setBackTarget(
336 $this->lng->txt('cancel'),
337 $environment->withDefaultSubAction()->getUrlBuilder()
338 ->buildURI()
339 ->__toString()
340 );
341
342 $create = $this->questions_repository->getNew(
343 $environment->getParentObjId()
344 )->getEditView(
345 $this->current_user,
346 $this->ctrl,
347 $this->http->wrapper()->post(),
348 $this->ui_renderer,
349 $this->uuid_factory,
350 $this->configuration_repository,
351 $this->attempt_repository,
352 $this->required_capabilities
353 )->create(
354 $environment->withActionParameter(self::ACTION_CREATE_QUESTION)
355 );
356
357 if ($create instanceof EditForm) {
358 return $create;
359 }
360
361 $this->questions_repository->create([$create]);
362 $this->ctrl->redirectToURL(
364 $environment,
365 $create->getCreateMode(),
366 $create->getId()
367 )
368 );
369
370 }
buildAfterQuestionCreationRedirectUri(DefaultEnvironment $environment, CreateModes $create_mode, Uuid $question_uuid)
Definition: Edit.php:864
initializeEditMode(DefaultEnvironment $environment)
Definition: Edit.php:670

◆ deleteQuestions()

ILIAS\Questions\Presentation\Views\Edit::deleteQuestions ( DefaultEnvironment  $environment)
private

Definition at line 444 of file Edit.php.

446 : Async {
447 $question_ids = $environment->getQuestionIds();
448
449 if ($question_ids === null) {
450 return $environment->getPresentationFactory()->getAsync(
451 $this->ui_factory->messageBox()->failure(
452 $this->lng->txt('msg_no_questions_selected')
453 )
454 );
455 }
456
457 if ($environment->getSubAction() === self::ACTION_DELETE_QUESTIONS) {
458 $this->deleteSelectedQuestions($question_ids);
459 $this->ctrl->redirectToURL(
460 $environment->getUrlBuilder()->buildURI()->__toString()
461 );
462 }
463
464 return $environment->getPresentationFactory()->getAsync(
465 $this->ui_factory->modal()->interruptive(
466 $this->lng->txt('confirm'),
467 $this->lng->txt('confirm_delete_questions'),
468 $environment->withActionParameter(
469 self::ACTION_DELETE_QUESTIONS
470 )->withSubActionParameter(
471 self::ACTION_DELETE_QUESTIONS
472 )->getUrlBuilder()->buildURI()->__toString()
473 )->withAffectedItems(
474 $this->buildAffectedItems($question_ids)
475 )
476 );
477 }
deleteSelectedQuestions(array $question_ids)
Definition: Edit.php:814

References ILIAS\Questions\Presentation\Definitions\DefaultEnvironment\getPresentationFactory().

+ Here is the call graph for this function:

◆ deleteSelectedQuestions()

ILIAS\Questions\Presentation\Views\Edit::deleteSelectedQuestions ( array  $question_ids)
private

Definition at line 814 of file Edit.php.

816 : void {
817 $questions_to_delete = [];
818 foreach ($this->questions_repository->getForQuestionIds($question_ids) as $question) {
819 if (count($questions_to_delete) < 100) {
820 $questions_to_delete[] = $question;
821 continue;
822 }
823
824 $this->questions_repository->delete($questions_to_delete);
825 $questions_to_delete = [];
826 }
827
828 $this->questions_repository->delete($questions_to_delete);
829 }

◆ editQuestion()

ILIAS\Questions\Presentation\Views\Edit::editQuestion ( DefaultEnvironment  $environment)
private

Definition at line 372 of file Edit.php.

374 : EditForm {
375 $this->initializeEditMode($environment);
376 $this->tabs_gui->setBackTarget(
377 $this->lng->txt('back'),
378 $environment->withDefaultSubAction()->getUrlBuilder()->buildURI()->__toString()
379 );
380
381 $question_id = $environment->getQuestionId();
382 $question = $this->questions_repository->getForQuestionId($question_id);
383 $environment_with_question_parameter = $environment
384 ->withQuestionIdParameter($question_id);
385
386 $edit = $question->getEditView(
387 $this->current_user,
388 $this->ctrl,
389 $this->http->wrapper()->post(),
390 $this->ui_renderer,
391 $this->uuid_factory,
392 $this->configuration_repository,
393 $this->attempt_repository,
394 $this->required_capabilities
395 )->edit(
396 $environment_with_question_parameter
397 ->withActionParameter(self::ACTION_EDIT_QUESTION)
398 );
399
400 if ($edit instanceof EditForm) {
401 return $edit;
402 }
403
404 $this->questions_repository->update([$edit]);
405 return $this->buildEditStartView(
406 $environment_with_question_parameter
407 ->withDefaultSubAction()
408 ->withActionParameter(self::ACTION_EDIT_QUESTION),
409 $edit
410 );
411 }
buildEditStartView(DefaultEnvironment $environment, Question $question)
Definition: Edit.php:739

◆ forwardCreateAnswerFormCmd()

ILIAS\Questions\Presentation\Views\Edit::forwardCreateAnswerFormCmd ( DefaultEnvironment  $environment,
Question  $question,
\ilPCAnswerForm  $content_object,
AnswerFormEditView  $answer_form_edit_view 
)
private

Definition at line 539 of file Edit.php.

544 : ?EditForm {
545 $action = $environment->getAction();
546
547 $from_capabilites = $this->required_capabilities->create(
548 $this->tabs_gui,
549 $environment,
550 $answer_form_edit_view,
551 $action
552 );
553
554 if ($from_capabilites instanceof Async) {
555 $from_capabilites->render($this->ui_renderer);
556 }
557
558 if ($from_capabilites instanceof EditForm) {
560 $environment,
561 $from_capabilites
562 );
563 }
564
565 if ($from_capabilites instanceof AnswerFormProperties) {
567 $environment,
568 $question->withAnswerFormProperties($from_capabilites),
569 $content_object
570 );
571 }
572
573 $from_edit_view = $answer_form_edit_view->create(
574 $environment->withAnswerFormIdParameter(
575 $environment->getAnswerFormId()
576 )
577 );
578
579 if ($from_edit_view instanceof Async) {
580 return $from_edit_view->render($this->ui_renderer);
581 }
582
583 if ($from_edit_view instanceof EditForm) {
585 $environment,
586 $this->required_capabilities->additionalAnswerFormStepsRequired()
587 ? $from_edit_view->withIsFinalStep(false)
588 : $from_edit_view
589 );
590 }
591
592 $from_capabilities_first_step = $this->required_capabilities
593 ->doFirstFormStepAction(
594 $environment->withAnswerFormProperties($from_edit_view),
595 $answer_form_edit_view
596 );
597
598 if ($from_capabilities_first_step instanceof EditForm) {
600 $environment,
601 $from_capabilities_first_step
602 );
603 }
604
606 $environment,
607 $question->withAnswerFormProperties($from_capabilities_first_step),
608 $content_object
609 );
610 }
getAnswerFormId()
Returns the answer form id of the current context either from the answer form properties,...
createAnswerFormAndRedirect(Environment $environment, Question $question, \ilPCAnswerForm $content_object)
Definition: Edit.php:650
addSaveAndNewToAnswerFormCreateIfNeeded(Environment $environment, EditForm $edit_form)
Definition: Edit.php:831
withAnswerFormProperties(AnswerFormProperties $answer_form)
Definition: Question.php:279

◆ forwardPageCmds()

ILIAS\Questions\Presentation\Views\Edit::forwardPageCmds ( URI  $base_uri,
int  $ref_id 
)

Definition at line 149 of file Edit.php.

152 : void {
153 $environment = $this->buildEnvironment($base_uri);
154
155 if ($this->ctrl->getCmd() === 'insert'
156 && $environment->getAction() === self::ACTION_DELETE_QUESTIONS) {
157 $this->deleteQuestions($environment);
158 return;
159 }
160
161 $this->initializeEditMode($environment);
162 $environment->preserveParametersForPageEditorCmds();
163
164 $this->content_style->gui()->addCss(
165 $this->global_tpl,
166 $ref_id
167 );
168
169 $this->global_tpl->setContent(
170 $this->ctrl->forwardCommand(
172 $this->questions_repository->getForQuestionId(
173 $environment->getQuestionId()
174 ),
175 $this->owner_object_id,
176 $this->required_capabilities,
177 new ViewConfiguration(
178 true,
179 false,
180 false,
181 false
182 )
183 )->withEditView(
184 $this
185 )->withReturnURI(
186 $environment
187 ->withActionParameter(self::ACTION_EDIT_QUESTION)
188 ->withQuestionIdParameter($environment->getQuestionId())
189 ->getUrlBuilder()
190 ->buildURI()
191 )
192 )
193 );
194 }
deleteQuestions(DefaultEnvironment $environment)
Definition: Edit.php:444
@ilCtrl_Calls QstsQuestionPageGUI: ilPageEditorGUI, ilEditClipboardGUI @ilCtrl_Calls QstsQuestionPage...

◆ getCreateAnswerForm()

ILIAS\Questions\Presentation\Views\Edit::getCreateAnswerForm ( URI  $base_uri,
Question  $question,
\ilPCAnswerForm  $content_object 
)

Definition at line 196 of file Edit.php.

200 : array|Component {
201 $environment = $this->buildEnvironment($base_uri)
202 ->withIsInCreationContext(true)
203 ->withQuestionIdParameter($question->getId());
204
205 $environment->setEditAnswerFormBackTarget();
206
207 if ($this->configuration_repository->isCreateModeSimple($environment)) {
208 $environment = $environment->withCreateModeParameter();
209 }
210
211 $answer_form_type_class_hash = $environment->getTypeClassHash();
212
213 if ($answer_form_type_class_hash !== '') {
214 $type_definition = $this->answer_form_factory
215 ->getTypeDefinitionFromSelectValue($answer_form_type_class_hash);
216
217 return $this->forwardCreateAnswerFormCmd(
218 $environment->withAnswerFormProperties(
219 $type_definition->buildProperties(
220 $this->answer_form_factory->getDefaultTypeGenericProperties(
221 $question->getId(),
222 $type_definition,
223 $environment->getAnswerFormId(),
224 ),
225 null
226 )
227 )->withAnswerFormTypeHashParameter($answer_form_type_class_hash),
228 $question,
229 $content_object,
230 $type_definition->getEditView()
231 )->getUI();
232 }
233
234 return match($environment->getAction()) {
235 self::ACTION_CREATE_ANSWER_FORM => $this->processCreateAnswerForm(
236 $environment,
237 $question,
238 $content_object
239 )->getUI(),
240 default => $this->buildCreateAnswerForm($environment)->getUI()
241 };
242 }
buildCreateAnswerForm(DefaultEnvironment $environment)
Definition: Edit.php:757
forwardCreateAnswerFormCmd(DefaultEnvironment $environment, Question $question, \ilPCAnswerForm $content_object, AnswerFormEditView $answer_form_edit_view)
Definition: Edit.php:539
processCreateAnswerForm(DefaultEnvironment $environment, Question $question, \ilPCAnswerForm $content_object)
Definition: Edit.php:501

◆ getEditAnswerForm()

ILIAS\Questions\Presentation\Views\Edit::getEditAnswerForm ( URI  $base_uri,
Question  $question,
AnswerFormProperties  $answer_form_properties,
Definition  $type_definition 
)

Definition at line 244 of file Edit.php.

249 : array|Component {
250 $environment = $this->buildEnvironment($base_uri)
251 ->withAnswerFormProperties($answer_form_properties)
252 ->withQuestionIdParameter($question->getId());
253
254 $action = $environment->getAction();
255 $edit_view = $type_definition->getEditView();
256
257 $from_capabilites = $this->required_capabilities->edit(
258 $this->tabs_gui,
259 $environment,
260 $edit_view,
261 $action
262 );
263
264 if ($from_capabilites instanceof AnswerFormProperties) {
266 $environment,
267 $question,
268 $from_capabilites
269 );
270 }
271
272 if ($from_capabilites instanceof Async) {
273 $from_capabilites->render($this->ui_renderer);
274 }
275
276 if ($from_capabilites instanceof Viewable) {
277 return $from_capabilites->getUI();
278 }
279
280 if ($action === self::ACTION_OTHER_ANSWER_FORM) {
281 return $this->processOtherAnswerFormAction(
282 $environment->withActionParameter(self::ACTION_OTHER_ANSWER_FORM),
283 $question,
284 $edit_view
285 )->getUI();
286 }
287
288 $from_edit_view = $edit_view->edit($environment);
289 if ($from_edit_view instanceof EditForm
290 && $this->required_capabilities->additionalAnswerFormStepsRequired()) {
291 return $from_edit_view->withIsFinalStep(false)->getUI();
292 }
293
294 if ($from_edit_view instanceof Async) {
295 $from_edit_view->render($this->ui_renderer);
296 }
297
298 if ($from_edit_view instanceof Viewable) {
299 return $from_edit_view->getUI();
300 }
301
302 if ($from_edit_view instanceof ForImmediateStorage) {
304 $environment,
305 $question,
306 $from_edit_view->unpack()
307 );
308 }
309
310 $return_form_step_actions = $this->required_capabilities
311 ->doFirstFormStepAction(
312 $environment->withAnswerFormProperties($from_edit_view),
313 $edit_view
314 );
315
316 if ($return_form_step_actions instanceof Async) {
317 $return_form_step_actions->render($this->ui_renderer);
318 }
319
320 if ($return_form_step_actions instanceof Viewable) {
321 return $return_form_step_actions->getUI();
322 }
323
325 $environment,
326 $question,
327 $from_edit_view
328 );
329 }
processOtherAnswerFormAction(Environment $environment, Question $question, AnswerFormEditView $edit_view)
Definition: Edit.php:612
updateAnswerFormAndRedirect(Environment $environment, Question $question, AnswerFormProperties $properties)
Definition: Edit.php:634

◆ getUI()

ILIAS\Questions\Presentation\Views\Edit::getUI ( URI  $base_uri,
int  $ref_id 
)

Definition at line 121 of file Edit.php.

124 : array|Component {
125 $this->content_style->gui()->addCss(
126 $this->global_tpl,
127 $ref_id
128 );
129
130 $environment = $this->buildEnvironment($base_uri);
131
132 $view = match($environment->getAction()) {
133 self::ACTION_CREATE_QUESTION => $this->createQuestion(
134 $environment->withIsInCreationContext(true)
135 ),
136 self::ACTION_EDIT_QUESTION => $this->editQuestion($environment),
137 self::ACTION_CLONE_QUESTION => $this->cloneQuestion($environment),
138 self::ACTION_DELETE_QUESTIONS => $this->deleteQuestions($environment),
139 default => $this->showTable($environment)
140 };
141
142 if ($view instanceof Async) {
143 $view->render($this->ui_renderer);
144 }
145
146 return $view->getUI();
147 }
createQuestion(DefaultEnvironment $environment)
Definition: Edit.php:331
editQuestion(DefaultEnvironment $environment)
Definition: Edit.php:372
cloneQuestion(DefaultEnvironment $environment)
Definition: Edit.php:413

◆ initializeEditMode()

ILIAS\Questions\Presentation\Views\Edit::initializeEditMode ( DefaultEnvironment  $environment)
private

Definition at line 670 of file Edit.php.

672 : void {
673 $this->tabs_gui->clearTargets();
674
675 $this->global_screen->tool()->context()->current()->addAdditionalData(
677 true
678 );
679 $this->global_screen->tool()->context()->current()->addAdditionalData(
681 $this->buildQuestionListSlate($environment)
682 );
683 $this->global_screen->tool()->context()->current()->addAdditionalData(
685 $environment->getUrlBuilder()->buildURI()
686 );
687 $this->global_screen->tool()->context()->current()->addAdditionalData(
689 $environment
690 ->withActionParameter(self::ACTION_CREATE_QUESTION)
691 ->getUrlBuilder()
692 ->buildURI()
693 );
694 }
buildQuestionListSlate(DefaultEnvironment $environment)
Definition: Edit.php:696

◆ processCreateAnswerForm()

ILIAS\Questions\Presentation\Views\Edit::processCreateAnswerForm ( DefaultEnvironment  $environment,
Question  $question,
\ilPCAnswerForm  $content_object 
)
private

Definition at line 501 of file Edit.php.

505 : EditForm {
506 $form = $this->buildCreateAnswerForm($environment)
507 ->withRequest($this->http->request());
508
509 $data = $form->getData();
510 if ($data === null) {
511 return $form;
512 }
513
514 if ($this->configuration_repository->isCreateModeSimple($environment)) {
515 $question_page = new \QstsQuestionPage($question->getPageId());
516 $question_page->setQuestion($question);
517 $question_page->addQuestionText($data['question_text']);
518 }
519
520 $type_definition = $data['type'];
521 return $this->forwardCreateAnswerFormCmd(
522 $environment->withAnswerFormProperties(
523 $type_definition->buildProperties(
524 $this->answer_form_factory->getDefaultTypeGenericProperties(
525 $question->getId(),
526 $type_definition
527 ),
528 null
529 )
530 )->withAnswerFormTypeHashParameter(
531 $this->answer_form_factory->getHashedClass($type_definition::class)
532 ),
533 $question,
534 $content_object,
535 $type_definition->getEditView()
536 );
537 }
$data
Definition: storeScorm.php:45

◆ processOtherAnswerFormAction()

ILIAS\Questions\Presentation\Views\Edit::processOtherAnswerFormAction ( Environment  $environment,
Question  $question,
AnswerFormEditView  $edit_view 
)
private

Definition at line 612 of file Edit.php.

616 : Viewable {
617 $from_edit_view = $edit_view->other($environment);
618
619 if ($from_edit_view instanceof Viewable) {
620 return $from_edit_view;
621 }
622
623 if ($from_edit_view instanceof Async) {
624 $from_edit_view->render($this->ui_renderer);
625 }
626
628 $environment,
629 $question,
630 $from_edit_view
631 );
632 }

◆ showTable()

ILIAS\Questions\Presentation\Views\Edit::showTable ( DefaultEnvironment  $environment)
private

Definition at line 479 of file Edit.php.

481 : QuestionsTable {
482 $this->questions_repository->migrateQuestionPages($environment);
483
484 return new QuestionsTable(
485 $this->ui_services,
486 $this->answer_form_factory,
487 $this->questions_repository,
488 $environment,
489 $this->required_capabilities
490 )->withCreateQuestionButton(
491 $this->ui_factory->button()->primary(
492 $this->lng->txt('create'),
493 $environment->withActionParameter(self::ACTION_CREATE_QUESTION)
494 ->getUrlBuilder()
495 ->buildURI()
496 ->__toString()
497 )
498 );
499 }

◆ updateAnswerFormAndRedirect()

ILIAS\Questions\Presentation\Views\Edit::updateAnswerFormAndRedirect ( Environment  $environment,
Question  $question,
AnswerFormProperties  $properties 
)
private

Definition at line 634 of file Edit.php.

638 : never {
639 $this->questions_repository->update(
640 [$question->withAnswerFormProperties($properties)]
641 );
642
643 $this->required_capabilities->onAnswerFormUpdate($properties);
644
645 $this->ctrl->redirectToURL(
646 $environment->getUrlBuilder()->buildURI()->__toString()
647 );
648 }

◆ withEditable()

ILIAS\Questions\Presentation\Views\Edit::withEditable ( Editability  $editability)

Definition at line 105 of file Edit.php.

107 : self {
108 $clone = clone $this;
109 $clone->editability = $editability;
110 return $clone;
111 }

◆ withOrderingEnabled()

ILIAS\Questions\Presentation\Views\Edit::withOrderingEnabled ( bool  $enable)

Definition at line 113 of file Edit.php.

115 : self {
116 $clone = clone $this;
117 $clone->ordering_enabled = $enable;
118 return $clone;
119 }

Field Documentation

◆ $editability

Editability ILIAS\Questions\Presentation\Views\Edit::$editability = Editability::Full
private

Definition at line 69 of file Edit.php.

◆ $ordering_enabled

bool ILIAS\Questions\Presentation\Views\Edit::$ordering_enabled = false
private

Definition at line 70 of file Edit.php.

◆ $required_capabilities

readonly RequiredCapabilities ILIAS\Questions\Presentation\Views\Edit::$required_capabilities
private

Definition at line 72 of file Edit.php.

◆ ACTION_CLONE_QUESTION

const string ILIAS\Questions\Presentation\Views\Edit::ACTION_CLONE_QUESTION = 'clone'

Definition at line 64 of file Edit.php.

◆ ACTION_CREATE_ANSWER_FORM

const string ILIAS\Questions\Presentation\Views\Edit::ACTION_CREATE_ANSWER_FORM = 'create_af'
private

Definition at line 66 of file Edit.php.

◆ ACTION_CREATE_QUESTION

const string ILIAS\Questions\Presentation\Views\Edit::ACTION_CREATE_QUESTION = 'create'
private

Definition at line 62 of file Edit.php.

◆ ACTION_DELETE_QUESTIONS

const string ILIAS\Questions\Presentation\Views\Edit::ACTION_DELETE_QUESTIONS = 'delete'

Definition at line 65 of file Edit.php.

◆ ACTION_EDIT_QUESTION

const string ILIAS\Questions\Presentation\Views\Edit::ACTION_EDIT_QUESTION = 'edit'

Definition at line 63 of file Edit.php.

◆ ACTION_OTHER_ANSWER_FORM

const string ILIAS\Questions\Presentation\Views\Edit::ACTION_OTHER_ANSWER_FORM = 'other_af'

Definition at line 67 of file Edit.php.


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