ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
assOrderingQuestionGUI Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for assOrderingQuestionGUI:
+ Collaboration diagram for assOrderingQuestionGUI:

Public Member Functions

 __construct ($id=-1)
 assOrderingQuestionGUI constructor More...
 
 changeToPictures ()
 
 changeToText ()
 
 saveNesting ()
 
 removeElementImage ()
 
 uploadElementImage ()
 
 writeQuestionSpecificPostData (ilPropertyFormGUI $form)
 Extracts the question specific values from the request and applies them to the data object. More...
 
 writeAnswerSpecificPostData (ilPropertyFormGUI $form)
 Extracts the answer specific values from the request and applies them to the data object. More...
 
 populateAnswerSpecificFormPart (ilPropertyFormGUI $form)
 Adds the answer specific form parts to a question property form gui. More...
 
 populateQuestionSpecificFormPart (\ilPropertyFormGUI $form)
 
 editQuestion (bool $checkonly=false, ?bool $is_save_cmd=null)
 
 editNesting ()
 
 supportsIntermediateSolutionOutput ()
 
 getSolutionOutput (int $active_id, ?int $pass=null, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_inline_feedback=true)
 
 renderSolutionOutput (mixed $user_solutions, int $active_id, ?int $pass, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_autosave_title=false, bool $show_inline_feedback=false,)
 
 getPreview (bool $show_question_only=false, bool $show_inline_feedback=false)
 
 getTestOutput (int $active_id, int $pass, bool $is_question_postponed=false, array|bool $user_post_solutions=false, bool $show_specific_inline_feedback=false)
 
 getSpecificFeedbackOutput (array $userSolution)
 
 getAfterParticipationSuppressionAnswerPostVars ()
 Returns a list of postvars which will be suppressed in the form output when used in scoring adjustment. More...
 
 getAfterParticipationSuppressionQuestionPostVars ()
 Returns a list of postvars which will be suppressed in the form output when used in scoring adjustment. More...
 
 getAnswersFrequency ($relevantAnswers, $questionIndex)
 
 prepareReprintableCorrectionsForm (ilPropertyFormGUI $form)
 
 populateCorrectionsFormProperties (ilPropertyFormGUI $form)
 
 saveCorrectionsFormProperties (ilPropertyFormGUI $form)
 
- Public Member Functions inherited from assQuestionGUI
 editQuestion (bool $checkonly=false, ?bool $is_save_cmd=null)
 
 getSpecificFeedbackOutput (array $userSolution)
 Returns the answer specific feedback for the question. More...
 
 getSolutionOutput (int $active_id, ?int $pass=null, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_inline_feedback=true)
 
 getPreview (bool $show_question_only=false, bool $show_inline_feedback=false)
 
 getTestOutput (int $active_id, int $pass, bool $is_question_postponed=false, array|bool $user_post_solutions=false, bool $show_specific_inline_feedback=false)
 
 renderSolutionOutput (mixed $user_solutions, int $active_id, ?int $pass, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_autosave_title=false, bool $show_inline_feedback=false,)
 
 getObject ()
 
 setObject (assQuestion $question)
 
 setCopyToExistingPoolOnSave (?int $pool_ref_id)
 
 getCopyToExistingPoolOnSave ()
 
 setCopyToNewPoolOnSave (?string $pool_title)
 
 getCopyToNewPoolOnSave ()
 
 setMoveAfterQuestionId (?int $question_id)
 
 getMoveAfterQuestionId ()
 
 hasInlineFeedback ()
 
 addHeaderAction ()
 
 redrawHeaderAction ()
 
 getHeaderAction ()
 
 getCommentsPanelHTML ()
 
 executeCommand ()
 
 getType ()
 needed for page editor compliance More...
 
 getPresentationContext ()
 
 setPresentationContext (string $presentationContext)
 
 isTestPresentationContext ()
 
 isPreviousSolutionPrefilled ()
 
 setPreviousSolutionPrefilled (bool $previousSolutionPrefilled)
 
 getRenderPurpose ()
 
 setRenderPurpose (string $renderPurpose)
 
 isRenderPurposePrintPdf ()
 
 isRenderPurposePreview ()
 
 isRenderPurposeInputValue ()
 
 isRenderPurposePlayback ()
 
 isRenderPurposeDemoplay ()
 
 renderPurposeSupportsFormHtml ()
 
 getEditContext ()
 
 setEditContext (string $editContext)
 
 isAuthoringEditContext ()
 
 isAdjustmentEditContext ()
 
 setAdjustmentEditContext ()
 
 getNavigationGUI ()
 
 setNavigationGUI (?ilTestQuestionNavigationGUI $navigationGUI)
 
 setTaxonomyIds (array $taxonomyIds)
 
 getTaxonomyIds ()
 
 setTargetGui ($linkTargetGui)
 
 setTargetGuiClass (string $targetGuiClass)
 
 getTargetGuiClass ()
 
 setQuestionHeaderBlockBuilder (\ilQuestionHeaderBlockBuilder $questionHeaderBlockBuilder)
 
 getQuestionHeaderBlockBuilder ()
 
 setQuestionActionCmd (string $questionActionCmd)
 
 getQuestionActionCmd ()
 
 assessment ()
 
 populateJavascriptFilesRequiredForWorkForm (ilGlobalTemplateInterface $tpl)
 
 getPresentationJavascripts ()
 
 getQuestionTemplate ()
 
 getILIASPage (string $html="")
 Returns the ILIAS Page around a question. More...
 
 outQuestionPage ($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
 
 syncQuestion ()
 
 saveReturn ()
 
 saveQuestion ()
 
 setAdditionalContentEditingModeFromPost ()
 
 getContextPath ($cont_obj, int $a_endnode_id, int $a_startnode_id=1)
 get context path in content object tree More...
 
 setSequenceNumber (int $nr)
 
 getSequenceNumber ()
 
 setQuestionCount (int $a_question_count)
 
 getQuestionCount ()
 
 getErrorMessage ()
 
 setErrorMessage (string $errormessage)
 
 addErrorMessage (string $errormessage)
 
 getQuestionType ()
 
 getAsValueAttribute (string $a_value)
 
 addQuestionFormCommandButtons (ilPropertyFormGUI $form)
 
 addBasicQuestionFormProperties (ilPropertyFormGUI $form)
 
 getGenericFeedbackOutput (int $active_id, ?int $pass)
 
 getGenericFeedbackOutputForCorrectSolution ()
 
 getGenericFeedbackOutputForIncorrectSolution ()
 
 outQuestionType ()
 
 saveSuggestedSolution ()
 
 cancelSuggestedSolution ()
 
 suggestedsolution (bool $save=false)
 
 outSolutionExplorer ()
 
 saveSuggestedSolutionType ()
 
 cancelExplorer ()
 
 outPageSelector ()
 
 outChapterSelector ()
 
 outGlossarySelector ()
 
 linkChilds ()
 
 addPG ()
 
 addST ()
 
 addGIT ()
 
 isSaveCommand ()
 
 setQuestionTabs ()
 
 addTab_SuggestedSolution (ilTabsGUI $tabs, string $classname)
 
 getEditQuestionTabCommands ()
 
 isAutosaveable ()
 
 outQuestionForTest (string $formaction, int $active_id, ?int $pass, bool $is_question_postponed=false, array|bool $user_post_solutions=false, bool $show_specific_inline_feedback=false)
 
 magicAfterTestOutput ()
 
 getFormEncodingType ()
 
 setPreviewSession (ilAssQuestionPreviewSession $preview_session)
 
 getPreviewSession ()
 
 showHints ()
 
 buildFocusAnchorHtml ()
 
 isAnswerFrequencyStatisticSupported ()
 
 getSubQuestionsIndex ()
 
 getAnswersFrequency ($relevantAnswers, $questionIndex)
 
 getAnswerFrequencyTableGUI ($parentGui, $parentCmd, $relevantAnswers, $questionIndex)
 
 prepareReprintableCorrectionsForm (ilPropertyFormGUI $form)
 
 populateCorrectionsFormProperties (ilPropertyFormGUI $form)
 
 saveCorrectionsFormProperties (ilPropertyFormGUI $form)
 
 isInLearningModuleContext ()
 
 setInLearningModuleContext (bool $flag)
 
 cmdNeedsExistingQuestion (string $cmd)
 
 setContextAllowsSyncToPool (bool $sync_allowed)
 
 needsSyncQuery ()
 
 getQuestionSyncModal (string $cmd, string $cmd_class='')
 
 getAutoSavedSolutionOutput (int $active_id, int $pass, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_autosave_title=false, bool $show_inline_feedback=false)
 
- Public Member Functions inherited from ilGuiQuestionScoringAdjustable
 populateQuestionSpecificFormPart (ilPropertyFormGUI $form)
 Adds the question specific forms parts to a question property form gui. More...
 

Data Fields

const CMD_EDIT_NESTING = 'editNesting'
 
const CMD_SAVE_NESTING = 'saveNesting'
 
const CMD_SWITCH_TO_TERMS = 'changeToText'
 
const CMD_SWITCH_TO_PICTURESS = 'changeToPictures'
 
const TAB_EDIT_QUESTION = 'edit_question'
 
const TAB_EDIT_NESTING = 'edit_nesting'
 
const F_USE_NESTED = 'nested_answers'
 
const F_NESTED_ORDER = 'order_elems'
 
const F_NESTED_ORDER_ORDER = 'content'
 
const F_NESTED_ORDER_INDENT = 'indentation'
 
const F_NESTED_IDENTIFIER_PREFIX = ilIdentifiedMultiValuesJsPositionIndexRemover::IDENTIFIER_INDICATOR_PREFIX
 
assQuestion $object
 
 $old_ordering_depth = []
 
 $leveled_ordering = []
 
- Data Fields inherited from assQuestionGUI
const ALLOWED_PLAIN_TEXT_TAGS = "<em>, <strong>"
 sk - 12.05.2023: This const is also used in ilKprimChoiceWizardInputGUI. More...
 
const SESSION_PREVIEW_DATA_BASE_INDEX = 'ilAssQuestionPreviewAnswers'
 
const FORM_MODE_EDIT = 'edit'
 
const FORM_MODE_ADJUST = 'adjust'
 
const FORM_ENCODING_URLENCODE = 'application/x-www-form-urlencoded'
 
const FORM_ENCODING_MULTIPART = 'multipart/form-data'
 
const CORRECTNESS_NOT_OK = 0
 
const CORRECTNESS_MOSTLY_OK = 1
 
const CORRECTNESS_OK = 2
 
const RENDER_PURPOSE_PLAYBACK = 'renderPurposePlayback'
 
const RENDER_PURPOSE_DEMOPLAY = 'renderPurposeDemoplay'
 
const RENDER_PURPOSE_PREVIEW = 'renderPurposePreview'
 
const RENDER_PURPOSE_PRINT_PDF = 'renderPurposePrintPdf'
 
const RENDER_PURPOSE_INPUT_VALUE = 'renderPurposeInputValue'
 
const EDIT_CONTEXT_AUTHORING = 'authoring'
 
const EDIT_CONTEXT_ADJUSTMENT = 'adjustment'
 
const PRESENTATION_CONTEXT_TEST = 'pContextTest'
 
const PRESENTATION_CONTEXT_RESULTS = 'pContextResults'
 
const CMD_SYNC_QUESTION_AND_RETURN = 'syncQuestionReturn'
 

Protected Member Functions

 fetchSolutionListFromSubmittedForm (ilPropertyFormGUI $form)
 
 updateImageFiles ()
 
 writePostData (bool $always=false)
 
 addEditSubtabs ($active=self::TAB_EDIT_QUESTION)
 
 buildEditForm ()
 
 buildNestingForm ()
 
 isInteractivePresentation ()
 
 getTabs ()
 
 getAnswerStatisticOrderingElementHtml (ilAssOrderingElement $element)
 
 getAnswerStatisticOrderingVariantHtml (ilAssOrderingElementList $list)
 
- Protected Member Functions inherited from assQuestionGUI
 hasSpecialQuestionCommands ()
 
 writePostData (bool $always=false)
 Evaluates a posted edit form and writes the form data in the question object. More...
 
 renderEditForm (ilPropertyFormGUI $form)
 
 getUseUnchangedAnswerCheckboxHtml ()
 
 getPreviousSolutionProvidedMessage ()
 
 getPreviousSolutionConfirmationCheckboxHtml ()
 
 setTestSpecificProperties ()
 
 addNumberOfTriesToFormIfNecessary (ilPropertyFormGUI $form)
 
 saveTaxonomyAssignments ()
 
 populateTaxonomyFormSection (ilPropertyFormGUI $form)
 
 genericFeedbackOutputBuilder (string $feedback_correct, string $feedback_incorrect, int $active_id, ?int $pass)
 
 getTypeOptions ()
 
 createSuggestedSolutionLinkingTo (string $type, string $target)
 
 setDefaultTabs (ilTabsGUI $tabs_gui)
 
 setQuestionSpecificTabs (ilTabsGUI $tabs_gui)
 
 getBasicEditQuestionTabCommands ()
 
 getAdditionalEditQuestionCommands ()
 
 addTab_QuestionFeedback (ilTabsGUI $tabs)
 
 addTab_QuestionHints (ilTabsGUI $tabs)
 
 addTab_Question (ilTabsGUI $tabs_gui)
 
 hasCorrectSolution ($activeId, $passIndex)
 
 writeQuestionGenericPostData ()
 
 completeTestOutputFormAction (string $form_action, int $active_id, int $pass)
 
 addBackTab (ilTabsGUI $tabs_gui)
 
 buildBasicEditFormObject ()
 
 escapeTemplatePlaceholders (string $text)
 
 buildEditForm ()
 
 generateCorrectnessIconsForCorrectness (int $correctness)
 
 getSuggestedSolutionsRepo ()
 
 cleanupAnswerText (array $answer_text, bool $is_rte)
 sk - 12.05.2023: This is one more of those that we need, but don't want. More...
 
 addSaveOnEnterOnLoadCode ()
 

Private Member Functions

 buildEditFormAfterTypeChange (array $values)
 

Additional Inherited Members

- Static Public Member Functions inherited from assQuestionGUI
static _getQuestionGUI (string $question_type='', int $question_id=-1)
 Creates a question gui representation and returns the alias to the question gui. More...
 
static getCommandsFromClassConstants (string $guiClassName, string $cmdConstantNameBegin='CMD_')
 
static prepareTextareaOutput (?string $txt_output, bool $prepare_for_latex_output=false, bool $omitNl2BrWhenTextArea=false)
 Prepares a string for a text area output where latex code may be in it If the text is HTML-free, CHR(13) will be converted to a line break. More...
 
- Protected Attributes inherited from assQuestionGUI
const HAS_SPECIAL_QUESTION_COMMANDS = false
 
const SUGGESTED_SOLUTION_COMMANDS_CANCEL = 'cancelSuggestedSolution'
 
const SUGGESTED_SOLUTION_COMMANDS_SAVE = 'saveSuggestedSolution'
 
const SUGGESTED_SOLUTION_COMMANDS_DEFAULT = 'suggestedsolution'
 
const QUESTION_SAVE_CMDS
 
const ADDITIONAL_CMDS_NEEDING_EXISTING_QST
 There are functions that need an existing question. More...
 
ilLogger $logger
 
GeneralQuestionPropertiesRepository $questionrepository
 
GUIService $notes_gui
 
ilCtrl $ctrl
 
assQuestion $object
 
ilGlobalPageTemplate $tpl
 
ilLanguage $lng
 
Refinery $refinery
 
 $error
 
string $errormessage
 
int $sequence_no
 sequence number in test More...
 
int $question_count
 question count in test More...
 
ilPropertyFormGUI $editForm = null
 
readonly ilTestLegacyFormsHelper $forms_helper
 
readonly RequestDataCollector $request_data_collector
 
bool $parent_type_is_lm = false
 
SuggestedSolutionsDatabaseRepository $suggestedsolution_repo = null
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning Ordering question GUI representation

The assOrderingQuestionGUI class encapsulates the GUI representation for ordering questions.

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m
Björn Heyser bheys.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Maximilian Becker mbeck.nosp@m.er@d.nosp@m.ataba.nosp@m.y.de
Nils Haagen nils..nosp@m.haag.nosp@m.en@co.nosp@m.ncep.nosp@m.ts-an.nosp@m.d-tr.nosp@m.ainin.nosp@m.g.de
Version
$Id$

\ assOrderingQuestionGUI: ilFormPropertyDispatchGUI

Definition at line 34 of file class.assOrderingQuestionGUI.php.

Constructor & Destructor Documentation

◆ __construct()

assOrderingQuestionGUI::__construct (   $id = -1)

assOrderingQuestionGUI constructor

The constructor takes possible arguments an creates an instance of the assOrderingQuestionGUI object.

Parameters
integer$idThe database id of a ordering question object

Definition at line 62 of file class.assOrderingQuestionGUI.php.

References $id, and ILIAS\GlobalScreen\Provider\__construct().

63  {
65  $this->object = new assOrderingQuestion();
66  if ($id >= 0) {
67  $this->object->loadFromDb($id);
68  }
69  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
__construct(Container $dic, ilPlugin $plugin)
Class for ordering questions.
+ Here is the call graph for this function:

Member Function Documentation

◆ addEditSubtabs()

assOrderingQuestionGUI::addEditSubtabs (   $active = self::TAB_EDIT_QUESTION)
protected

Definition at line 330 of file class.assOrderingQuestionGUI.php.

References ILIAS\Repository\ctrl(), getTabs(), assQuestionGUI\isInLearningModuleContext(), ILIAS\Repository\lng(), and ILIAS\Repository\object().

Referenced by buildEditFormAfterTypeChange(), editNesting(), editQuestion(), and writePostData().

331  {
332  $tabs = $this->getTabs();
333  $tabs->addSubTab(
334  self::TAB_EDIT_QUESTION,
335  $this->lng->txt('edit_question'),
336  $this->ctrl->getLinkTarget($this, 'editQuestion')
337  );
338  if ($this->object->isOrderingTypeNested() && !$this->isInLearningModuleContext()) {
339  $tabs->addSubTab(
340  self::TAB_EDIT_NESTING,
341  $this->lng->txt('tab_nest_answers'),
342  $this->ctrl->getLinkTarget($this, self::CMD_EDIT_NESTING)
343  );
344  }
345  $tabs->setTabActive('edit_question');
346  $tabs->setSubTabActive($active);
347  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildEditForm()

assOrderingQuestionGUI::buildEditForm ( )
protected

Definition at line 366 of file class.assOrderingQuestionGUI.php.

References assQuestionGUI\addBasicQuestionFormProperties(), ILIAS\Repository\ctrl(), ILIAS\Repository\object(), assQuestionGUI\outQuestionType(), populateAnswerSpecificFormPart(), populateQuestionSpecificFormPart(), and assQuestionGUI\populateTaxonomyFormSection().

Referenced by buildEditFormAfterTypeChange(), editQuestion(), uploadElementImage(), and writePostData().

367  {
369  $form->setFormAction($this->ctrl->getFormAction($this));
370  $form->setTitle($this->outQuestionType());
371  $form->setMultipart($this->object->isImageOrderingType());
372  $form->setTableWidth("100%");
373  $form->setId("ordering");
374 
375  $this->addBasicQuestionFormProperties($form);
376  $this->populateQuestionSpecificFormPart($form);
377  $this->populateAnswerSpecificFormPart($form);
378  $this->populateTaxonomyFormSection($form);
379 
380  $form->addSpecificOrderingQuestionCommandButtons($this->object);
381  $form->addGenericAssessmentQuestionCommandButtons($this->object);
382 
383  return $form;
384  }
populateQuestionSpecificFormPart(\ilPropertyFormGUI $form)
populateAnswerSpecificFormPart(ilPropertyFormGUI $form)
Adds the answer specific form parts to a question property form gui.
addBasicQuestionFormProperties(ilPropertyFormGUI $form)
populateTaxonomyFormSection(ilPropertyFormGUI $form)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildEditFormAfterTypeChange()

assOrderingQuestionGUI::buildEditFormAfterTypeChange ( array  $values)
private

Definition at line 94 of file class.assOrderingQuestionGUI.php.

References addEditSubtabs(), buildEditForm(), assOrderingQuestion\ORDERING_ELEMENT_FORM_FIELD_POSTVAR, and assQuestionGUI\renderEditForm().

Referenced by changeToPictures(), and changeToText().

94  : void
95  {
96  $form = $this->buildEditForm();
97 
98  $ordering_element_list = $this->object->getOrderingElementList();
99  $ordering_element_list->resetElements();
100 
102  $form->setValuesByArray($values);
103  $form->getItemByPostVar(assOrderingQuestion::ORDERING_ELEMENT_FORM_FIELD_POSTVAR)->setElementList($ordering_element_list);
104  $this->renderEditForm($form);
105  $this->addEditSubtabs();
106  }
addEditSubtabs($active=self::TAB_EDIT_QUESTION)
renderEditForm(ilPropertyFormGUI $form)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ buildNestingForm()

assOrderingQuestionGUI::buildNestingForm ( )
protected

Definition at line 386 of file class.assOrderingQuestionGUI.php.

References ILIAS\Repository\ctrl(), assQuestionGUI\isRenderPurposePrintPdf(), ILIAS\Repository\lng(), and assQuestionGUI\outQuestionType().

Referenced by editNesting(), and saveNesting().

387  {
389  $form->setFormAction($this->ctrl->getFormAction($this));
390  $form->setTitle($this->outQuestionType());
391  $form->setTableWidth("100%");
392 
393  $header = new ilFormSectionHeaderGUI();
394  $header->setTitle($this->lng->txt('oq_header_ordering_elements'));
395  $form->addItem($header);
396 
397  $orderingElementInput = $this->object->buildNestedOrderingElementInputGui();
398  $orderingElementInput->setStylingDisabled($this->isRenderPurposePrintPdf());
399 
400  $this->object->initOrderingElementAuthoringProperties($orderingElementInput);
401 
402  $list = $this->object->getOrderingElementList();
403  foreach ($list->getElements() as $element) {
404  $element = $list->ensureValidIdentifiers($element);
405  }
406 
407  $orderingElementInput->setElementList($list);
408 
409  $form->addItem($orderingElementInput);
410  $form->addCommandButton(self::CMD_SAVE_NESTING, $this->lng->txt("save"));
411  return $form;
412  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ changeToPictures()

assOrderingQuestionGUI::changeToPictures ( )

Definition at line 71 of file class.assOrderingQuestionGUI.php.

References buildEditFormAfterTypeChange().

71  : void
72  {
73  $this->object->setContentType($this->object::OQ_CT_PICTURES);
74  $this->object->saveToDb();
75 
76  $values = $this->request_data_collector->getParsedBody();
77  $values['thumb_geometry'] = $this->object->getThumbSize();
78  $this->buildEditFormAfterTypeChange($values);
79  }
+ Here is the call graph for this function:

◆ changeToText()

assOrderingQuestionGUI::changeToText ( )

Definition at line 81 of file class.assOrderingQuestionGUI.php.

References buildEditFormAfterTypeChange().

81  : void
82  {
83  $ordering_element_list = $this->object->getOrderingElementList();
84  foreach ($ordering_element_list as $element) {
85  $this->object->dropImageFile($element->getContent());
86  }
87 
88  $this->object->setContentType($this->object::OQ_CT_TERMS);
89  $this->object->saveToDb();
90 
91  $this->buildEditFormAfterTypeChange($this->request_data_collector->getParsedBody());
92  }
+ Here is the call graph for this function:

◆ editNesting()

assOrderingQuestionGUI::editNesting ( )

Definition at line 358 of file class.assOrderingQuestionGUI.php.

References addEditSubtabs(), buildNestingForm(), ilObjStyleSheet\getContentStylePath(), ilObjStyleSheet\getSyntaxStylePath(), and assQuestionGUI\renderEditForm().

Referenced by saveNesting().

359  {
360  $this->renderEditForm($this->buildNestingForm());
361  $this->addEditSubtabs(self::TAB_EDIT_NESTING);
362  $this->tpl->addCss(ilObjStyleSheet::getContentStylePath(0));
363  $this->tpl->addCss(ilObjStyleSheet::getSyntaxStylePath());
364  }
addEditSubtabs($active=self::TAB_EDIT_QUESTION)
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
renderEditForm(ilPropertyFormGUI $form)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ editQuestion()

assOrderingQuestionGUI::editQuestion ( bool  $checkonly = false,
?bool  $is_save_cmd = null 
)

Definition at line 349 of file class.assOrderingQuestionGUI.php.

References addEditSubtabs(), buildEditForm(), and assQuestionGUI\renderEditForm().

Referenced by uploadElementImage().

352  : bool {
353  $this->renderEditForm($this->buildEditForm());
354  $this->addEditSubtabs(self::TAB_EDIT_QUESTION);
355  return false;
356  }
addEditSubtabs($active=self::TAB_EDIT_QUESTION)
renderEditForm(ilPropertyFormGUI $form)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fetchSolutionListFromSubmittedForm()

assOrderingQuestionGUI::fetchSolutionListFromSubmittedForm ( ilPropertyFormGUI  $form)
protected

Definition at line 197 of file class.assOrderingQuestionGUI.php.

References ilPropertyFormGUI\getItemByPostVar(), ILIAS\Repository\object(), and assOrderingQuestion\ORDERING_ELEMENT_FORM_FIELD_POSTVAR.

Referenced by saveCorrectionsFormProperties(), uploadElementImage(), and writeAnswerSpecificPostData().

198  {
200  ->getElementList($this->object->getId());
201 
202  $use_nested = $this->request_data_collector->int(self::F_USE_NESTED) === 1;
203 
204  if ($use_nested) {
205  $existing_list = $this->object->getOrderingElementList();
206 
207  $nu = [];
208  $parent_indent = -1;
209  foreach ($list->getElements() as $element) {
210  $element = $list->ensureValidIdentifiers($element);
211 
212  if ($existing = $existing_list->getElementByRandomIdentifier($element->getRandomIdentifier())) {
213  if ($existing->getIndentation() == $parent_indent + 1) {
214  $element = $element
215  ->withIndentation($existing->getIndentation());
216  }
217  }
218  $parent_indent = $element->getIndentation();
219  $nu[] = $element;
220  }
221  $list = $list->withElements($nu);
222  }
223 
224  return $list;
225  }
getItemByPostVar(string $a_post_var)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAfterParticipationSuppressionAnswerPostVars()

assOrderingQuestionGUI::getAfterParticipationSuppressionAnswerPostVars ( )

Returns a list of postvars which will be suppressed in the form output when used in scoring adjustment.

The form elements will be shown disabled, so the users see the usual form but can only edit the settings, which make sense in the given context.

E.g. array('cloze_type', 'image_filename')

Returns
string[]

Implements ilGuiAnswerScoringAdjustable.

Definition at line 631 of file class.assOrderingQuestionGUI.php.

631  : array
632  {
633  return [];
634  }

◆ getAfterParticipationSuppressionQuestionPostVars()

assOrderingQuestionGUI::getAfterParticipationSuppressionQuestionPostVars ( )

Returns a list of postvars which will be suppressed in the form output when used in scoring adjustment.

The form elements will be shown disabled, so the users see the usual form but can only edit the settings, which make sense in the given context.

E.g. array('cloze_type', 'image_filename')

Returns
string[]

Implements ilGuiQuestionScoringAdjustable.

Definition at line 645 of file class.assOrderingQuestionGUI.php.

645  : array
646  {
647  return [];
648  }

◆ getAnswersFrequency()

assOrderingQuestionGUI::getAnswersFrequency (   $relevantAnswers,
  $questionIndex 
)

Definition at line 702 of file class.assOrderingQuestionGUI.php.

References getAnswerStatisticOrderingVariantHtml().

702  : array
703  {
704  $answersByActiveAndPass = [];
705 
706  foreach ($relevantAnswers as $row) {
707  $key = $row['active_fi'] . ':' . $row['pass'];
708 
709  if (!isset($answersByActiveAndPass[$key])) {
710  $answersByActiveAndPass[$key] = [];
711  }
712 
713  $answersByActiveAndPass[$key][$row['value1']] = $row['value2'];
714  }
715 
716  $solutionLists = [];
717 
718  foreach ($answersByActiveAndPass as $indexedSolutions) {
719  $solutionLists[] = $this->object->getSolutionOrderingElementList($indexedSolutions);
720  }
721 
722  /* @var ilAssOrderingElementList[] $answers */
723  $answers = [];
724 
725  foreach ($solutionLists as $orderingElementList) {
726  $hash = $orderingElementList->getHash();
727 
728  if (!isset($answers[$hash])) {
729  $variantHtml = $this->getAnswerStatisticOrderingVariantHtml(
730  $orderingElementList
731  );
732 
733  $answers[$hash] = [
734  'answer' => $variantHtml, 'frequency' => 0
735  ];
736  }
737 
738  $answers[$hash]['frequency']++;
739  }
740 
741  return array_values($answers);
742  }
getAnswerStatisticOrderingVariantHtml(ilAssOrderingElementList $list)
+ Here is the call graph for this function:

◆ getAnswerStatisticOrderingElementHtml()

assOrderingQuestionGUI::getAnswerStatisticOrderingElementHtml ( ilAssOrderingElement  $element)
protected

Definition at line 650 of file class.assOrderingQuestionGUI.php.

References ilAssOrderingElement\getContent(), ilAssOrderingElement\getPresentationImageUrl(), ILIAS\Repository\object(), ilAssOrderingElement\setImagePathFs(), ilAssOrderingElement\setImagePathWeb(), and ilAssOrderingElement\setImageThumbnailPrefix().

Referenced by getAnswerStatisticOrderingVariantHtml().

650  : ?string
651  {
652  if ($this->object->isImageOrderingType()) {
653  $element->setImageThumbnailPrefix($this->object->getThumbPrefix());
654  $element->setImagePathWeb($this->object->getImagePathWeb());
655  $element->setImagePathFs($this->object->getImagePath());
656 
657  $src = $element->getPresentationImageUrl();
658  $alt = $element->getContent();
659  $content = "<img src='{$src}' alt='{$alt}' title='{$alt}'/>";
660  } else {
661  $content = $element->getContent();
662  }
663 
664  return $content;
665  }
setImagePathFs(string $image_path_fs)
setImageThumbnailPrefix($imageThumbnailPrefix)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAnswerStatisticOrderingVariantHtml()

assOrderingQuestionGUI::getAnswerStatisticOrderingVariantHtml ( ilAssOrderingElementList  $list)
protected

Definition at line 667 of file class.assOrderingQuestionGUI.php.

References getAnswerStatisticOrderingElementHtml().

Referenced by getAnswersFrequency().

667  : string
668  {
669  $html = '<ul>';
670 
671  $lastIndent = 0;
672  $firstElem = true;
673 
674  foreach ($list as $elem) {
675  if ($elem->getIndentation() > $lastIndent) {
676  $html .= '<ul><li>';
677  } elseif ($elem->getIndentation() < $lastIndent) {
678  $html .= '</li></ul><li>';
679  } elseif (!$firstElem) {
680  $html .= '</li><li>';
681  } else {
682  $html .= '<li>';
683  }
684 
685  $html .= $this->getAnswerStatisticOrderingElementHtml($elem);
686 
687  $firstElem = false;
688  $lastIndent = $elem->getIndentation();
689  }
690 
691  $html .= '</li>';
692 
693  for ($i = $lastIndent; $i > 0; $i--) {
694  $html .= '</ul></li>';
695  }
696 
697  $html .= '</ul>';
698 
699  return $html;
700  }
getAnswerStatisticOrderingElementHtml(ilAssOrderingElement $element)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPreview()

assOrderingQuestionGUI::getPreview ( bool  $show_question_only = false,
bool  $show_inline_feedback = false 
)

Definition at line 530 of file class.assOrderingQuestionGUI.php.

References ilAssNestedOrderingElementsInputGUI\CONTEXT_QUESTION_PREVIEW, assQuestionGUI\getILIASPage(), assQuestionGUI\getPreviewSession(), isInteractivePresentation(), and ILIAS\Repository\object().

533  : string {
534  if ($this->getPreviewSession() && $this->getPreviewSession()->hasParticipantSolution()) {
535  $solutionOrderingElementList = unserialize(
536  $this->getPreviewSession()->getParticipantsSolution(),
537  ['allowed_classes' => true]
538  );
539  } else {
540  $solutionOrderingElementList = $this->object->getShuffledOrderingElementList();
541  }
542 
543  $answers = $this->object->buildNestedOrderingElementInputGui();
544  $answers->setNestingEnabled($this->object->isOrderingTypeNested());
546  $answers->setInteractionEnabled($this->isInteractivePresentation());
547  $answers->setElementList($solutionOrderingElementList);
548 
549  $template = new ilTemplate('tpl.il_as_qpl_ordering_output.html', true, true, 'components/ILIAS/TestQuestionPool');
550 
551  $template->setCurrentBlock('nested_ordering_output');
552  $template->setVariable('NESTED_ORDERING', $answers->getHTML());
553  $template->parseCurrentBlock();
554  $template->setVariable('QUESTIONTEXT', $this->object->getQuestionForHTMLOutput());
555 
556  if ($show_question_only) {
557  return $template->get();
558  }
559 
560  return $this->getILIASPage($template->get());
561  }
getILIASPage(string $html="")
Returns the ILIAS Page around a question.
+ Here is the call graph for this function:

◆ getSolutionOutput()

assOrderingQuestionGUI::getSolutionOutput ( int  $active_id,
?int  $pass = null,
bool  $graphical_output = false,
bool  $result_output = false,
bool  $show_question_only = true,
bool  $show_feedback = false,
bool  $show_correct_solution = false,
bool  $show_manual_scoring = false,
bool  $show_question_text = true,
bool  $show_inline_feedback = true 
)

Definition at line 419 of file class.assOrderingQuestionGUI.php.

References renderSolutionOutput().

430  : string {
431  $solution_ordering_list = $this->object->getOrderingElementListForSolutionOutput(
432  $show_correct_solution,
433  $active_id,
434  $pass
435  );
436 
437  $show_inline_feedback = false;
438  return $this->renderSolutionOutput(
439  $solution_ordering_list,
440  $active_id,
441  $pass,
442  $graphical_output,
443  $result_output,
444  $show_question_only,
445  $show_feedback,
446  $show_correct_solution,
447  $show_manual_scoring,
448  $show_question_text,
449  false,
450  $show_inline_feedback,
451  );
452  }
renderSolutionOutput(mixed $user_solutions, int $active_id, ?int $pass, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_autosave_title=false, bool $show_inline_feedback=false,)
+ Here is the call graph for this function:

◆ getSpecificFeedbackOutput()

assOrderingQuestionGUI::getSpecificFeedbackOutput ( array  $userSolution)

Definition at line 617 of file class.assOrderingQuestionGUI.php.

617  : string
618  {
619  return '';
620  }

◆ getTabs()

assOrderingQuestionGUI::getTabs ( )
protected

Definition at line 611 of file class.assOrderingQuestionGUI.php.

References $DIC.

Referenced by addEditSubtabs().

611  : ilTabsGUI
612  {
613  global $DIC;
614  return $DIC['ilTabs'];
615  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: shib_login.php:22
+ Here is the caller graph for this function:

◆ getTestOutput()

assOrderingQuestionGUI::getTestOutput ( int  $active_id,
int  $pass,
bool  $is_question_postponed = false,
array|bool  $user_post_solutions = false,
bool  $show_specific_inline_feedback = false 
)

Definition at line 563 of file class.assOrderingQuestionGUI.php.

References ilAssNestedOrderingElementsInputGUI\CONTEXT_USER_SOLUTION_SUBMISSION, ILIAS\Repository\object(), and assQuestionGUI\outQuestionPage().

569  : string {
570  $user_post_solutions = is_array($user_post_solutions) ? $user_post_solutions : [];
571 
572  $ordering_gui = $this->object->buildNestedOrderingElementInputGui();
573  $ordering_gui->setNestingEnabled($this->object->isOrderingTypeNested());
574 
575  $solutionOrderingElementList = $this->object->getSolutionOrderingElementListForTestOutput(
576  $ordering_gui,
577  $user_post_solutions,
578  $active_id,
579  $pass
580  );
581 
582  $template = new ilTemplate('tpl.il_as_qpl_ordering_output.html', true, true, 'components/ILIAS/TestQuestionPool');
583 
585  $ordering_gui->setElementList($solutionOrderingElementList);
586 
587  $template->setCurrentBlock('nested_ordering_output');
588  $template->setVariable('NESTED_ORDERING', $ordering_gui->getHTML());
589  $template->parseCurrentBlock();
590 
591  $template->setVariable('QUESTIONTEXT', $this->object->getQuestionForHTMLOutput());
592 
593  $pageoutput = $this->outQuestionPage('', $is_question_postponed, $active_id, $template->get());
594 
595  return $pageoutput;
596  }
outQuestionPage($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
+ Here is the call graph for this function:

◆ isInteractivePresentation()

assOrderingQuestionGUI::isInteractivePresentation ( )
protected

Definition at line 598 of file class.assOrderingQuestionGUI.php.

References assQuestionGUI\isRenderPurposeDemoplay(), and assQuestionGUI\isRenderPurposePlayback().

Referenced by getPreview().

598  : bool
599  {
600  if ($this->isRenderPurposePlayback()) {
601  return true;
602  }
603 
604  if ($this->isRenderPurposeDemoplay()) {
605  return true;
606  }
607 
608  return false;
609  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateAnswerSpecificFormPart()

assOrderingQuestionGUI::populateAnswerSpecificFormPart ( ilPropertyFormGUI  $form)

Adds the answer specific form parts to a question property form gui.

Implements ilGuiAnswerScoringAdjustable.

Definition at line 253 of file class.assOrderingQuestionGUI.php.

References ilPropertyFormGUI\addItem(), assQuestionGUI\isRenderPurposePrintPdf(), and ILIAS\Repository\lng().

Referenced by buildEditForm().

254  {
255  $header = new ilFormSectionHeaderGUI();
256  $header->setTitle($this->lng->txt('oq_header_ordering_elements'));
257  $form->addItem($header);
258 
259  $orderingElementInput = $this->object->buildOrderingElementInputGui();
260  $orderingElementInput->setStylingDisabled($this->isRenderPurposePrintPdf());
261  $this->object->initOrderingElementAuthoringProperties($orderingElementInput);
262 
263  $list = $this->object->getOrderingElementList();
264  $orderingElementInput->setElementList($list);
265  $form->addItem($orderingElementInput);
266 
267  return $form;
268  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateCorrectionsFormProperties()

assOrderingQuestionGUI::populateCorrectionsFormProperties ( ilPropertyFormGUI  $form)
Parameters
ilPropertyFormGUI$form

Definition at line 756 of file class.assOrderingQuestionGUI.php.

References ilPropertyFormGUI\addItem(), ilNumberInputGUI\allowDecimals(), ILIAS\Repository\lng(), and ILIAS\Repository\object().

756  : void
757  {
758  $points = new ilNumberInputGUI($this->lng->txt("points"), "points");
759  $points->allowDecimals(true);
760  $points->setValue($this->object->getPoints());
761  $points->setRequired(true);
762  $points->setSize(3);
763  $points->setMinValue(0);
764  $points->setMinvalueShouldBeGreater(true);
765  $form->addItem($points);
766 
767  $header = new ilFormSectionHeaderGUI();
768  $header->setTitle($this->lng->txt('oq_header_ordering_elements'));
769  $form->addItem($header);
770 
771  $orderingElementInput = $this->object->buildNestedOrderingElementInputGui();
772 
773  $this->object->initOrderingElementAuthoringProperties($orderingElementInput);
774 
775  $orderingElementInput->setElementList($this->object->getOrderingElementList());
776 
777  $form->addItem($orderingElementInput);
778  }
allowDecimals(bool $a_value)
This class represents a number property in a property form.
+ Here is the call graph for this function:

◆ populateQuestionSpecificFormPart()

assOrderingQuestionGUI::populateQuestionSpecificFormPart ( \ilPropertyFormGUI  $form)

Definition at line 270 of file class.assOrderingQuestionGUI.php.

References ilPropertyFormGUI\addItem(), ilNumberInputGUI\allowDecimals(), assQuestionGUI\isInLearningModuleContext(), ILIAS\Repository\lng(), ILIAS\Repository\object(), ilSelectInputGUI\setOptions(), and ilNumberInputGUI\setValue().

Referenced by buildEditForm().

271  {
272  if ($this->object->isImageOrderingType()) {
273  $thumb_size = new ilNumberInputGUI($this->lng->txt('thumb_size'), 'thumb_geometry');
274  $thumb_size->setValue($this->object->getThumbSize());
275  $thumb_size->setRequired(true);
276  $thumb_size->setMaxLength(6);
277  $thumb_size->setMinValue($this->object->getMinimumThumbSize());
278  $thumb_size->setMaxValue($this->object->getMaximumThumbSize());
279  $thumb_size->setSize(6);
280  $thumb_size->setInfo($this->lng->txt('thumb_size_info'));
281  $form->addItem($thumb_size);
282  }
283 
284  // points
285  $points = new ilNumberInputGUI($this->lng->txt("points"), "points");
286  $points->allowDecimals(true);
287  $points->setValue($this->object->getPoints());
288  $points->setRequired(true);
289  $points->setSize(3);
290  $points->setMinValue(0);
291  $points->setMinvalueShouldBeGreater(true);
292  $form->addItem($points);
293 
294  if (!$this->isInLearningModuleContext()) {
295  $nested_answers = new ilSelectInputGUI(
296  $this->lng->txt('qst_use_nested_answers'),
297  self::F_USE_NESTED
298  );
299  $nested_answers_options = [
300  0 => $this->lng->txt('qst_nested_nested_answers_off'),
301  1 => $this->lng->txt('qst_nested_nested_answers_on')
302  ];
303  $nested_answers->setOptions($nested_answers_options);
304  $nested_answers->setValue($this->object->isOrderingTypeNested());
305  $form->addItem($nested_answers);
306  }
307 
308  return $form;
309  }
This class represents a selection list property in a property form.
setOptions(array $a_options)
allowDecimals(bool $a_value)
This class represents a number property in a property form.
setValue(?string $a_value)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ prepareReprintableCorrectionsForm()

assOrderingQuestionGUI::prepareReprintableCorrectionsForm ( ilPropertyFormGUI  $form)
Parameters
ilPropertyFormGUI$form

Definition at line 747 of file class.assOrderingQuestionGUI.php.

References ilPropertyFormGUI\getItemByPostVar(), and assOrderingQuestion\ORDERING_ELEMENT_FORM_FIELD_POSTVAR.

747  : void
748  {
750  $orderingInput->prepareReprintable($this->object);
751  }
getItemByPostVar(string $a_post_var)
+ Here is the call graph for this function:

◆ removeElementImage()

assOrderingQuestionGUI::removeElementImage ( )

Definition at line 137 of file class.assOrderingQuestionGUI.php.

References uploadElementImage().

138  {
139  $this->uploadElementImage();
140  }
+ Here is the call graph for this function:

◆ renderSolutionOutput()

assOrderingQuestionGUI::renderSolutionOutput ( mixed  $user_solutions,
int  $active_id,
?int  $pass,
bool  $graphical_output = false,
bool  $result_output = false,
bool  $show_question_only = true,
bool  $show_feedback = false,
bool  $show_correct_solution = false,
bool  $show_manual_scoring = false,
bool  $show_question_text = true,
bool  $show_autosave_title = false,
bool  $show_inline_feedback = false 
)

Definition at line 454 of file class.assOrderingQuestionGUI.php.

References ilAssNestedOrderingElementsInputGUI\CONTEXT_CORRECT_SOLUTION_PRESENTATION, ilAssNestedOrderingElementsInputGUI\CONTEXT_USER_SOLUTION_PRESENTATION, ilAssQuestionFeedback\CSS_CLASS_FEEDBACK_CORRECT, ilAssQuestionFeedback\CSS_CLASS_FEEDBACK_WRONG, assQuestionGUI\getGenericFeedbackOutput(), assQuestionGUI\getILIASPage(), assQuestionGUI\hasCorrectSolution(), assQuestionGUI\isTestPresentationContext(), ILIAS\Repository\object(), and ilLegacyFormElementsUtil\prepareTextareaOutput().

Referenced by getSolutionOutput().

467  : ?string {
468  $solution_ordering_list = ($user_solutions instanceof ilAssOrderingElementList) ?
469  $user_solutions : $this->object->getSolutionOrderingElementList(
470  $this->object->fetchIndexedValuesFromValuePairs($user_solutions)
471  );
472  $answers_gui = $this->object->buildNestedOrderingElementInputGui();
473 
474  if ($show_correct_solution) {
476  } else {
478  }
479 
480  $answers_gui->setInteractionEnabled(false);
481  $answers_gui->setElementList($solution_ordering_list);
482 
483  if ($graphical_output) {
484  $answers_gui->setShowCorrectnessIconsEnabled(true);
485  }
486  $answers_gui->setCorrectnessTrueElementList(
487  $solution_ordering_list->getParityTrueElementList($this->object->getOrderingElementList())
488  );
489  $solution_html = $answers_gui->getHTML();
490 
491  $template = new ilTemplate('tpl.il_as_qpl_nested_ordering_output_solution.html', true, true, 'components/ILIAS/TestQuestionPool');
492  $template->setVariable('SOLUTION_OUTPUT', $solution_html);
493  if ($show_question_text == true) {
494  $template->setVariable('QUESTIONTEXT', $this->object->getQuestionForHTMLOutput());
495  }
496  $questionoutput = $template->get();
497 
498  $solutiontemplate = new ilTemplate('tpl.il_as_tst_solution_output.html', true, true, 'components/ILIAS/TestQuestionPool');
499  $solutiontemplate->setVariable('SOLUTION_OUTPUT', $questionoutput);
500 
501  if ($show_feedback) {
502  $feedback = '';
503 
504  if (!$this->isTestPresentationContext()) {
505  $fb = $this->getGenericFeedbackOutput((int) $active_id, $pass);
506  $feedback .= strlen($fb) ? $fb : '';
507  }
508 
509  if ($feedback !== '') {
510  $cssClass = (
511  $this->hasCorrectSolution($active_id, $pass) ?
513  );
514 
515  $solutiontemplate->setVariable('ILC_FB_CSS_CLASS', $cssClass);
516  $solutiontemplate->setVariable('FEEDBACK', ilLegacyFormElementsUtil::prepareTextareaOutput($feedback, true));
517  }
518  }
519 
520  if ($show_question_only) {
521  return $solutiontemplate->get();
522  }
523 
524  return $this->getILIASPage($solutiontemplate->get());
525 
526  // is this template still in use? it is not used at this point any longer!
527  // $template = new ilTemplate("tpl.il_as_qpl_ordering_output_solution.html", TRUE, TRUE, "components/ILIAS/TestQuestionPool");
528  }
hasCorrectSolution($activeId, $passIndex)
getILIASPage(string $html="")
Returns the ILIAS Page around a question.
static prepareTextareaOutput(string $txt_output, bool $prepare_for_latex_output=false, bool $omitNl2BrWhenTextArea=false)
Prepares a string for a text area output where latex code may be in it If the text is HTML-free...
getGenericFeedbackOutput(int $active_id, ?int $pass)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveCorrectionsFormProperties()

assOrderingQuestionGUI::saveCorrectionsFormProperties ( ilPropertyFormGUI  $form)
Parameters
ilPropertyFormGUI$form

Definition at line 783 of file class.assOrderingQuestionGUI.php.

References fetchSolutionListFromSubmittedForm(), ilPropertyFormGUI\getInput(), and ILIAS\Repository\object().

783  : void
784  {
785  $this->object->setPoints((float) str_replace(',', '.', $form->getInput('points')));
786 
787  $submittedElementList = $this->fetchSolutionListFromSubmittedForm($form);
788 
789  $curElementList = $this->object->getOrderingElementList();
790 
791  $newElementList = new ilAssOrderingElementList();
792  $newElementList->setQuestionId($this->object->getId());
793 
794  foreach ($submittedElementList as $submittedElement) {
795  if (!$curElementList->elementExistByRandomIdentifier($submittedElement->getRandomIdentifier())) {
796  continue;
797  }
798 
799  $curElement = $curElementList->getElementByRandomIdentifier($submittedElement->getRandomIdentifier());
800 
801  $curElement->setPosition($submittedElement->getPosition());
802 
803  if ($this->object->isOrderingTypeNested()) {
804  $curElement->setIndentation($submittedElement->getIndentation());
805  }
806 
807  $newElementList->addElement($curElement);
808  }
809 
810  $this->object->setOrderingElementList($newElementList);
811  }
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
fetchSolutionListFromSubmittedForm(ilPropertyFormGUI $form)
+ Here is the call graph for this function:

◆ saveNesting()

assOrderingQuestionGUI::saveNesting ( )

Definition at line 108 of file class.assOrderingQuestionGUI.php.

References $post, buildNestingForm(), editNesting(), and ILIAS\Repository\lng().

109  {
110  $form = $this->buildNestingForm();
111  $form->setValuesByPost();
112  if ($form->checkInput()) {
113  $post = $this->request_data_collector->raw(self::F_NESTED_ORDER);
114  $list = $this->object->getOrderingElementList();
115 
116  $ordered = [];
117  foreach (array_keys($post[self::F_NESTED_ORDER_ORDER]) as $idx => $identifier) {
118  $element_identifier = str_replace(self::F_NESTED_IDENTIFIER_PREFIX, '', $identifier);
119  $element = $list->getElementByRandomIdentifier($element_identifier);
120 
121  $ordered[] = $element
122  ->withPosition($idx)
123  ->withIndentation($post[self::F_NESTED_ORDER_INDENT][$identifier]);
124  }
125 
126  $list = $list->withElements($ordered);
127  $this->object->setOrderingElementList($list);
128  $this->tpl->setOnScreenMessage('success', $this->lng->txt('saved_successfully'), true);
129  } else {
130  $this->tpl->setOnScreenMessage('error', $this->lng->txt('form_input_not_valid'), true);
131  }
132 
133  $this->editNesting();
134  }
$post
Definition: ltitoken.php:46
+ Here is the call graph for this function:

◆ supportsIntermediateSolutionOutput()

assOrderingQuestionGUI::supportsIntermediateSolutionOutput ( )

Definition at line 414 of file class.assOrderingQuestionGUI.php.

415  {
416  return true;
417  }

◆ updateImageFiles()

assOrderingQuestionGUI::updateImageFiles ( )
protected

Definition at line 227 of file class.assOrderingQuestionGUI.php.

References $filename.

Referenced by writeQuestionSpecificPostData().

227  : void
228  {
229  $element_list = $this->object->getOrderingElementList();
230  $elements = [];
231  foreach ($element_list->getElements() as $element) {
232  if ($element->getContent() === '') {
233  continue;
234  }
235  $filename = $this->object->updateImageFile(
236  $element->getContent()
237  );
238 
239  $elements[] = $element->withContent($filename);
240  }
241 
242  $list = $this->object->getOrderingElementList()->withElements($elements);
243  $this->object->setOrderingElementList($list);
244  }
$filename
Definition: buildRTE.php:78
+ Here is the caller graph for this function:

◆ uploadElementImage()

assOrderingQuestionGUI::uploadElementImage ( )

Definition at line 142 of file class.assOrderingQuestionGUI.php.

References $filename, buildEditForm(), editQuestion(), fetchSolutionListFromSubmittedForm(), ILIAS\Repository\lng(), assQuestionGUI\writeQuestionGenericPostData(), and writeQuestionSpecificPostData().

Referenced by removeElementImage().

142  : void
143  {
144  $form = $this->buildEditForm();
145  $form->setValuesByPost();
146 
147  $submitted_list = $this->fetchSolutionListFromSubmittedForm($form);
148 
149  $elements = [];
150  foreach ($submitted_list->getElements() as $submitted_element) {
151  if ($submitted_element->isImageUploadAvailable()) {
152  $filename = $this->object->storeImageFile(
153  $submitted_element->getUploadImageFile(),
154  $submitted_element->getUploadImageName()
155  );
156 
157  if (is_null($filename)) {
158  $this->tpl->setOnScreenMessage('failure', $this->lng->txt('file_no_valid_file_type'));
159  } else {
160  $submitted_element = $submitted_element->withContent($filename);
161  }
162  }
163 
164  if ($submitted_element->isImageRemovalRequest()) {
165  $this->object->dropImageFile($submitted_element->getContent());
166  $submitted_element = $submitted_element->withContent('');
167  }
168 
169  $elements[] = $submitted_element;
170  }
171 
172  $list = $this->object->getOrderingElementList()->withElements($elements);
173  $this->object->setOrderingElementList($list);
174 
176  $this->writeQuestionSpecificPostData($form);
177 
178  $this->editQuestion();
179  }
fetchSolutionListFromSubmittedForm(ilPropertyFormGUI $form)
editQuestion(bool $checkonly=false, ?bool $is_save_cmd=null)
$filename
Definition: buildRTE.php:78
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
Extracts the question specific values from the request and applies them to the data object...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ writeAnswerSpecificPostData()

assOrderingQuestionGUI::writeAnswerSpecificPostData ( ilPropertyFormGUI  $form)

Extracts the answer specific values from the request and applies them to the data object.

Implements ilGuiAnswerScoringAdjustable.

Definition at line 246 of file class.assOrderingQuestionGUI.php.

References fetchSolutionListFromSubmittedForm().

Referenced by writePostData().

246  : void
247  {
248  $this->object->setOrderingElementList(
250  );
251  }
fetchSolutionListFromSubmittedForm(ilPropertyFormGUI $form)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ writePostData()

assOrderingQuestionGUI::writePostData ( bool  $always = false)
protected

Definition at line 311 of file class.assOrderingQuestionGUI.php.

References addEditSubtabs(), buildEditForm(), assQuestionGUI\renderEditForm(), assQuestionGUI\saveTaxonomyAssignments(), writeAnswerSpecificPostData(), assQuestionGUI\writeQuestionGenericPostData(), and writeQuestionSpecificPostData().

311  : int
312  {
313  $form = $this->buildEditForm();
314  $form->setValuesByPost();
315 
316  if (!$form->checkInput()) {
317  $this->renderEditForm($form);
318  $this->addEditSubtabs(self::TAB_EDIT_QUESTION);
319  return 1; // return 1 = something went wrong, no saving happened
320  }
321 
322  $this->saveTaxonomyAssignments();
324  $this->writeAnswerSpecificPostData($form);
325  $this->writeQuestionSpecificPostData($form);
326 
327  return 0; // return 0 = all fine, was saved either forced or validated
328  }
writeAnswerSpecificPostData(ilPropertyFormGUI $form)
Extracts the answer specific values from the request and applies them to the data object...
addEditSubtabs($active=self::TAB_EDIT_QUESTION)
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
Extracts the question specific values from the request and applies them to the data object...
renderEditForm(ilPropertyFormGUI $form)
+ Here is the call graph for this function:

◆ writeQuestionSpecificPostData()

assOrderingQuestionGUI::writeQuestionSpecificPostData ( ilPropertyFormGUI  $form)

Extracts the question specific values from the request and applies them to the data object.

Implements ilGuiQuestionScoringAdjustable.

Definition at line 181 of file class.assOrderingQuestionGUI.php.

References ILIAS\Repository\object(), and updateImageFiles().

Referenced by uploadElementImage(), and writePostData().

181  : void
182  {
183  $thumb_size = $this->request_data_collector->int('thumb_geometry');
184  if ($thumb_size !== 0
185  && $thumb_size !== $this->object->getThumbSize()) {
186  $this->object->setThumbSize($thumb_size);
187  $this->updateImageFiles();
188  }
189 
190  $this->object->setPoints($this->request_data_collector->float('points'));
191 
192  $use_nested = $this->request_data_collector->int(self::F_USE_NESTED) === 1;
193  $this->object->setNestingType($use_nested);
194  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $leveled_ordering

assOrderingQuestionGUI::$leveled_ordering = []

Definition at line 53 of file class.assOrderingQuestionGUI.php.

◆ $object

assQuestion assOrderingQuestionGUI::$object

Definition at line 50 of file class.assOrderingQuestionGUI.php.

◆ $old_ordering_depth

assOrderingQuestionGUI::$old_ordering_depth = []

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

◆ CMD_EDIT_NESTING

const assOrderingQuestionGUI::CMD_EDIT_NESTING = 'editNesting'

Definition at line 36 of file class.assOrderingQuestionGUI.php.

◆ CMD_SAVE_NESTING

const assOrderingQuestionGUI::CMD_SAVE_NESTING = 'saveNesting'

Definition at line 37 of file class.assOrderingQuestionGUI.php.

◆ CMD_SWITCH_TO_PICTURESS

◆ CMD_SWITCH_TO_TERMS

◆ F_NESTED_IDENTIFIER_PREFIX

◆ F_NESTED_ORDER

const assOrderingQuestionGUI::F_NESTED_ORDER = 'order_elems'

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

◆ F_NESTED_ORDER_INDENT

const assOrderingQuestionGUI::F_NESTED_ORDER_INDENT = 'indentation'

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

◆ F_NESTED_ORDER_ORDER

const assOrderingQuestionGUI::F_NESTED_ORDER_ORDER = 'content'

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

◆ F_USE_NESTED

const assOrderingQuestionGUI::F_USE_NESTED = 'nested_answers'

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

◆ TAB_EDIT_NESTING

const assOrderingQuestionGUI::TAB_EDIT_NESTING = 'edit_nesting'

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

◆ TAB_EDIT_QUESTION

const assOrderingQuestionGUI::TAB_EDIT_QUESTION = 'edit_question'

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


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