ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
assMatchingQuestionGUI Class Reference

Matching question GUI representation. More...

+ Inheritance diagram for assMatchingQuestionGUI:
+ Collaboration diagram for assMatchingQuestionGUI:

Public Member Functions

 __construct ($id=-1)
 assMatchingQuestionGUI constructor More...
 
 writeAnswerSpecificPostData (ilPropertyFormGUI $form)
 Extracts the answer specific values from $_POST and applies them to the data object. More...
 
 writeQuestionSpecificPostData (ilPropertyFormGUI $form)
 Extracts the question specific values from $_POST and applies them to the data object. More...
 
 uploadterms ()
 
 removeimageterms ()
 
 uploaddefinitions ()
 
 removeimagedefinitions ()
 
 addterms ()
 
 removeterms ()
 
 adddefinitions ()
 
 removedefinitions ()
 
 addpairs ()
 
 removepairs ()
 
 editQuestion ($checkonly=false)
 
 populateAnswerSpecificFormPart (\ilPropertyFormGUI $form)
 
 populateQuestionSpecificFormPart (\ilPropertyFormGUI $form)
 
 supportsIntermediateSolutionOutput ()
 Question type specific support of intermediate solution output The function getSolutionOutput respects getUseIntermediateSolution() More...
 
 getSolutionOutput ( $active_id, $pass=null, $graphicalOutput=false, $result_output=false, $show_question_only=true, $show_feedback=false, $show_correct_solution=false, $show_manual_scoring=false, $show_question_text=true)
 Get the question solution output. More...
 
 getPreview ($show_question_only=false, $showInlineFeedback=false)
 
 getTestOutput ($active_id, $pass, $is_postponed=false, $user_post_solution=false, $inlineFeedback=false)
 
 checkInput ()
 check input fields More...
 
 setQuestionTabs ()
 Sets the ILIAS tabs for this question type. More...
 
 getSpecificFeedbackOutput ($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...
 
 getAggregatedAnswersView ($relevant_answers)
 Returns an html string containing a question specific representation of the answers so far given in the test for use in the right column in the scoring adjustment user interface. More...
 
 getAnswersFrequency ($relevantAnswers, $questionIndex)
 
 getAnswerFrequencyTableGUI ($parentGui, $parentCmd, $relevantAnswers, $questionIndex)
 
 populateCorrectionsFormProperties (ilPropertyFormGUI $form)
 
 saveCorrectionsFormProperties (ilPropertyFormGUI $form)
 
- Public Member Functions inherited from assQuestionGUI
 __construct ()
 assQuestionGUI constructor More...
 
 hasInlineFeedback ()
 this method can be overwritten per question type More...
 
 addHeaderAction ()
 
 redrawHeaderAction ()
 
 getHeaderAction ()
 
 getNotesHTML ()
 
 executeCommand ()
 execute command More...
 
 getCommand ($cmd)
 
 getType ()
 needed for page editor compliance More...
 
 getPresentationContext ()
 
 setPresentationContext ($presentationContext)
 
 isTestPresentationContext ()
 
 isPreviousSolutionPrefilled ()
 
 setPreviousSolutionPrefilled ($previousSolutionPrefilled)
 
 getRenderPurpose ()
 
 setRenderPurpose ($renderPurpose)
 
 isRenderPurposePrintPdf ()
 
 isRenderPurposePreview ()
 
 isRenderPurposeInputValue ()
 
 isRenderPurposePlayback ()
 
 isRenderPurposeDemoplay ()
 
 renderPurposeSupportsFormHtml ()
 
 getEditContext ()
 
 setEditContext ($editContext)
 
 isAuthoringEditContext ()
 
 isAdjustmentEditContext ()
 
 setAdjustmentEditContext ()
 
 getNavigationGUI ()
 
 setNavigationGUI ($navigationGUI)
 
 setTaxonomyIds ($taxonomyIds)
 
 getTaxonomyIds ()
 
 setTargetGui ($linkTargetGui)
 
 setTargetGuiClass ($targetGuiClass)
 
 getTargetGuiClass ()
 
 setQuestionHeaderBlockBuilder ($questionHeaderBlockBuilder)
 
 getQuestionHeaderBlockBuilder ()
 
 setQuestionActionCmd ($questionActionCmd)
 
 getQuestionActionCmd ()
 
createQuestionGUI ($question_type, $question_id=-1)
 Creates a question gui representation. More...
 
 populateJavascriptFilesRequiredForWorkForm (ilTemplate $tpl)
 
 getQuestionTemplate ()
 get question template More...
 
 getILIASPage ($html="")
 Returns the ILIAS Page around a question. More...
 
 outQuestionPage ($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
 output question page More...
 
 cancel ()
 cancel action More...
 
 originalSyncForm ($return_to="", $return_to_feedback='')
 
 sync ()
 
 cancelSync ()
 
 saveEdit ()
 save question More...
 
 save ()
 save question More...
 
 saveReturn ()
 save question More...
 
 apply ()
 apply changes More...
 
 getContextPath ($cont_obj, $a_endnode_id, $a_startnode_id=1)
 get context path in content object tree More...
 
 setSequenceNumber ($nr)
 
 getSequenceNumber ()
 
 setQuestionCount ($a_question_count)
 
 getQuestionCount ()
 
 getErrorMessage ()
 
 setErrorMessage ($errormessage)
 
 addErrorMessage ($errormessage)
 
 outAdditionalOutput ()
 
 getQuestionType ()
 Returns the question type string. More...
 
 getAsValueAttribute ($a_value)
 Returns a HTML value attribute. More...
 
 addNewIdListener (&$a_object, $a_method, $a_parameters="")
 Add a listener that is notified with the new question ID, when a new question is saved. More...
 
 callNewIdListeners ($a_new_id)
 Call the new id listeners. More...
 
 addQuestionFormCommandButtons ($form)
 Add the command buttons of a question properties form. More...
 
 addBasicQuestionFormProperties ($form)
 Add basic question form properties: assessment: title, author, description, question, working time. More...
 
 getAnswerFeedbackOutput ($active_id, $pass)
 Returns the answer generic feedback depending on the results of the question. More...
 
 getGenericFeedbackOutput ($active_id, $pass)
 Returns the answer specific feedback for the question. More...
 
 getGenericFeedbackOutputForCorrectSolution ()
 
 getGenericFeedbackOutputForIncorrectSolution ()
 
 getSpecificFeedbackOutput ($userSolution)
 Returns the answer specific feedback for the question. More...
 
 outQuestionType ()
 
 showSuggestedSolution ()
 
 suggestedsolution ()
 Allows to add suggested solutions for questions. More...
 
 outSolutionExplorer ()
 
 saveSuggestedSolution ()
 
 cancelExplorer ()
 
 outPageSelector ()
 
 outChapterSelector ()
 
 outGlossarySelector ()
 
 linkChilds ()
 
 addPG ()
 
 addST ()
 
 addGIT ()
 
 isSaveCommand ()
 
 setQuestionTabs ()
 
 addTab_SuggestedSolution (ilTabsGUI $tabs, $classname)
 
 getEditQuestionTabCommands ()
 
 getSolutionOutput ( $active_id, $pass=null, $graphicalOutput=false, $result_output=false, $show_question_only=true, $show_feedback=false, $show_correct_solution=false, $show_manual_scoring=false, $show_question_text=true)
 
 supportsIntermediateSolutionOutput ()
 Question type specific support of intermediate solution output The function getSolutionOutput respects getUseIntermediateSolution() More...
 
 hasIntermediateSolution ($activeId, $passIndex)
 Check if the question has an intermediate solution. More...
 
 setUseIntermediateSolution ($use)
 
 getUseIntermediateSolution ()
 Get if intermediate solution should be used for solution output. More...
 
 isAutosaveable ()
 
 getPreview ($show_question_only=false, $showInlineFeedback=false)
 
 outQuestionForTest ( $formaction, $active_id, $pass, $is_question_postponed=false, $user_post_solutions=false, $show_specific_inline_feedback=false)
 
 magicAfterTestOutput ()
 
 getTestOutput ( $active_id, $pass, $is_question_postponed, $user_post_solutions, $show_specific_inline_feedback)
 
 getFormEncodingType ()
 
 setPreviewSession ($previewSession)
 
 getPreviewSession ()
 
 showHints ()
 
 buildFocusAnchorHtml ()
 
 isAnswerFreuqencyStatisticSupported ()
 
 getSubQuestionsIndex ()
 
 getAnswersFrequency ($relevantAnswers, $questionIndex)
 
 getAnswerFrequencyTableGUI ($parentGui, $parentCmd, $relevantAnswers, $questionIndex)
 
 prepareReprintableCorrectionsForm (ilPropertyFormGUI $form)
 
 populateCorrectionsFormProperties (ilPropertyFormGUI $form)
 
 saveCorrectionsFormProperties (ilPropertyFormGUI $form)
 
- Public Member Functions inherited from ilGuiQuestionScoringAdjustable
 populateQuestionSpecificFormPart (ilPropertyFormGUI $form)
 Adds the question specific forms parts to a question property form gui. More...
 
- Public Member Functions inherited from ilGuiAnswerScoringAdjustable
 populateAnswerSpecificFormPart (ilPropertyFormGUI $form)
 Adds the answer specific form parts to a question property form gui. More...
 

Protected Member Functions

 writePostData ($always=false)
 {} More...
 
 getAnswerStatisticImageHtml ($picture)
 
 getAnswerStatisticMatchingElemHtml ($elem)
 
- Protected Member Functions inherited from assQuestionGUI
 writePostData ($always=false)
 Evaluates a posted edit form and writes the form data in the question object. More...
 
 renderEditForm ($form)
 
 getUseUnchangedAnswerCheckboxHtml ()
 
 getPreviousSolutionProvidedMessage ()
 
 getPreviousSolutionConfirmationCheckboxHtml ()
 
 saveTaxonomyAssignments ()
 
 populateTaxonomyFormSection (ilPropertyFormGUI $form)
 
 getBasicEditQuestionTabCommands ()
 
 getAdditionalEditQuestionCommands ()
 
 addTab_QuestionFeedback (ilTabsGUI $tabs)
 adds the feedback tab to ilTabsGUI More...
 
 addTab_QuestionHints (ilTabsGUI $tabs)
 adds the hints tab to ilTabsGUI More...
 
 addTab_QuestionPreview (ilTabsGUI $tabsGUI)
 
 hasCorrectSolution ($activeId, $passIndex)
 
 writeQuestionGenericPostData ()
 
 completeTestOutputFormAction ($formAction, $active_id, $pass)
 
 addBackTab (ilTabsGUI $ilTabs)
 
 buildBasicEditFormObject ()
 
 buildEditForm ()
 

Private Member Functions

 isDefImgUploadCommand ()
 
 isTermImgUploadCommand ()
 
 isValidTermAndDefinitionAmount (ilPropertyFormGUI $form)
 for mode 1:1 terms count must not be less than definitions count for mode n:n this limitation is cancelled More...
 
 isCorrectMatching ($pair, $definition, $term)
 

Additional Inherited Members

- Static Public Member Functions inherited from assQuestionGUI
static _getQuestionGUI ($question_type, $question_id=-1)
 Creates a question gui representation and returns the alias to the question gui note: please do not use $this inside this method to allow static calls. More...
 
static _getGUIClassNameForId ($a_q_id)
 
static _getClassNameForQType ($q_type)
 
static getCommandsFromClassConstants ($guiClassName, $cmdConstantNameBegin='CMD_')
 extracts values of all constants of given class with given prefix as array can be used to get all possible commands in case of these commands are defined as constants More...
 
- Data Fields inherited from assQuestionGUI
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 SESSION_PREVIEW_DATA_BASE_INDEX = 'ilAssQuestionPreviewAnswers'
 
 $object
 
 $tpl
 
 $lng
 
 $error
 
 $errormessage
 
 $sequence_no
 sequence number in test More...
 
 $question_count
 question count in test More...
 
const PRESENTATION_CONTEXT_TEST = 'pContextTest'
 
const PRESENTATION_CONTEXT_RESULTS = 'pContextResults'
 
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'
 
- Protected Attributes inherited from assQuestionGUI
 $editForm
 
 $use_intermediate_solution = false
 

Detailed Description

Matching question GUI representation.

The assMatchingQuestionGUI class encapsulates the GUI representation for matching 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
Version
$Id$

assMatchingQuestionGUI: ilFormPropertyDispatchGUI

Definition at line 23 of file class.assMatchingQuestionGUI.php.

Constructor & Destructor Documentation

◆ __construct()

assMatchingQuestionGUI::__construct (   $id = -1)

assMatchingQuestionGUI constructor

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

Parameters
integer$idThe database id of a image map question object
integer$idThe database id of a image map question object
Returns

Definition at line 35 of file class.assMatchingQuestionGUI.php.

References $id, and assQuestionGUI\setErrorMessage().

36  {
37  parent::__construct();
38  include_once "./Modules/TestQuestionPool/classes/class.assMatchingQuestion.php";
39  $this->object = new assMatchingQuestion();
40  $this->setErrorMessage($this->lng->txt("msg_form_save_error"));
41  if ($id >= 0) {
42  $this->object->loadFromDb($id);
43  }
44  }
if(!array_key_exists('StateId', $_REQUEST)) $id
Class for matching questions.
setErrorMessage($errormessage)
+ Here is the call graph for this function:

Member Function Documentation

◆ adddefinitions()

assMatchingQuestionGUI::adddefinitions ( )

Definition at line 183 of file class.assMatchingQuestionGUI.php.

References $_POST, editQuestion(), and writePostData().

184  {
185  $this->writePostData();
186  $position = key($_POST["cmd"]["adddefinitions"]);
187  $this->object->insertDefinition($position + 1);
188  $this->editQuestion();
189  }
$_POST["username"]
+ Here is the call graph for this function:

◆ addpairs()

assMatchingQuestionGUI::addpairs ( )

Definition at line 199 of file class.assMatchingQuestionGUI.php.

References $_POST, editQuestion(), and writePostData().

200  {
201  $this->writePostData();
202  $position = key($_POST["cmd"]["addpairs"]);
203  $this->object->insertMatchingPair($position + 1);
204  $this->editQuestion();
205  }
$_POST["username"]
+ Here is the call graph for this function:

◆ addterms()

assMatchingQuestionGUI::addterms ( )

Definition at line 167 of file class.assMatchingQuestionGUI.php.

References $_POST, editQuestion(), and writePostData().

168  {
169  $this->writePostData();
170  $position = key($_POST["cmd"]["addterms"]);
171  $this->object->insertTerm($position + 1);
172  $this->editQuestion();
173  }
$_POST["username"]
+ Here is the call graph for this function:

◆ checkInput()

assMatchingQuestionGUI::checkInput ( )

check input fields

Definition at line 913 of file class.assMatchingQuestionGUI.php.

References $_POST.

914  {
915  if ((!$_POST["title"]) or (!$_POST["author"]) or (!$_POST["question"])) {
916  return false;
917  }
918  return true;
919  }
$_POST["username"]

◆ editQuestion()

assMatchingQuestionGUI::editQuestion (   $checkonly = false)

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

References $errors, $form, assQuestionGUI\addBasicQuestionFormProperties(), assQuestionGUI\addQuestionFormCommandButtons(), assQuestionGUI\getQuestionTemplate(), assQuestionGUI\isSaveCommand(), isValidTermAndDefinitionAmount(), assQuestionGUI\outQuestionType(), populateAnswerSpecificFormPart(), populateQuestionSpecificFormPart(), assQuestionGUI\populateTaxonomyFormSection(), and ilUtil\sendFailure().

Referenced by adddefinitions(), addpairs(), addterms(), removedefinitions(), removeimagedefinitions(), removeimageterms(), removepairs(), removeterms(), uploaddefinitions(), uploadterms(), and writePostData().

216  {
217  $save = $this->isSaveCommand();
218  $this->getQuestionTemplate();
219 
220  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
221  $form = new ilPropertyFormGUI();
222  $this->editForm = $form;
223 
224  $form->setFormAction($this->ctrl->getFormAction($this));
225  $form->setTitle($this->outQuestionType());
226  $form->setMultipart(true);
227  $form->setTableWidth("100%");
228  $form->setId("matching");
229 
230 
231  // title, author, description, question, working time (assessment mode)
237 
238  $errors = false;
239  if ($save) {
240  $form->setValuesByPost();
241  $errors = !$form->checkInput();
242  $form->setValuesByPost(); // again, because checkInput now performs the whole stripSlashes handling and we need this if we don't want to have duplication of backslashes
243  if (!$errors && !$this->isValidTermAndDefinitionAmount($form) && !$this->object->getSelfAssessmentEditingMode()) {
244  $errors = true;
245  $terms = $form->getItemByPostVar('terms');
246  $terms->setAlert($this->lng->txt("msg_number_of_terms_too_low"));
247  ilUtil::sendFailure($this->lng->txt('form_input_not_valid'));
248  }
249  if ($errors) {
250  $checkonly = false;
251  }
252  }
253 
254  if (!$checkonly) {
255  $this->tpl->setVariable("QUESTION_DATA", $form->getHTML());
256  }
257  return $errors;
258  }
addBasicQuestionFormProperties($form)
Add basic question form properties: assessment: title, author, description, question, working time.
This class represents a property form user interface.
isValidTermAndDefinitionAmount(ilPropertyFormGUI $form)
for mode 1:1 terms count must not be less than definitions count for mode n:n this limitation is canc...
getQuestionTemplate()
get question template
populateTaxonomyFormSection(ilPropertyFormGUI $form)
populateQuestionSpecificFormPart(\ilPropertyFormGUI $form)
if(isset($_POST['submit'])) $form
populateAnswerSpecificFormPart(\ilPropertyFormGUI $form)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$errors
Definition: index.php:6
addQuestionFormCommandButtons($form)
Add the command buttons of a question properties form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAfterParticipationSuppressionAnswerPostVars()

assMatchingQuestionGUI::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 1049 of file class.assMatchingQuestionGUI.php.

1050  {
1051  return array();
1052  }

◆ getAfterParticipationSuppressionQuestionPostVars()

assMatchingQuestionGUI::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 1063 of file class.assMatchingQuestionGUI.php.

1064  {
1065  return array();
1066  }

◆ getAggregatedAnswersView()

assMatchingQuestionGUI::getAggregatedAnswersView (   $relevant_answers)

Returns an html string containing a question specific representation of the answers so far given in the test for use in the right column in the scoring adjustment user interface.

Parameters
array$relevant_answers
Returns
string

Implements ilGuiQuestionScoringAdjustable.

Definition at line 1076 of file class.assMatchingQuestionGUI.php.

1077  {
1078  return ''; //print_r($relevant_answers,true);
1079  }

◆ getAnswerFrequencyTableGUI()

assMatchingQuestionGUI::getAnswerFrequencyTableGUI (   $parentGui,
  $parentCmd,
  $relevantAnswers,
  $questionIndex 
)
Parameters
$parentGui
$parentCmd
$relevantAnswers
$questionIndex
Returns
ilMatchingQuestionAnswerFreqStatTableGUI

Definition at line 1174 of file class.assMatchingQuestionGUI.php.

References $table, and getAnswersFrequency().

1175  {
1176  require_once 'Modules/TestQuestionPool/classes/tables/class.ilMatchingQuestionAnswerFreqStatTableGUI.php';
1177 
1178  $table = new ilMatchingQuestionAnswerFreqStatTableGUI($parentGui, $parentCmd, $this->object);
1179  $table->setQuestionIndex($questionIndex);
1180  $table->setData($this->getAnswersFrequency($relevantAnswers, $questionIndex));
1181  $table->initColumns();
1182 
1183  return $table;
1184  }
getAnswersFrequency($relevantAnswers, $questionIndex)
if(empty($password)) $table
Definition: pwgen.php:24
+ Here is the call graph for this function:

◆ getAnswersFrequency()

assMatchingQuestionGUI::getAnswersFrequency (   $relevantAnswers,
  $questionIndex 
)

Definition at line 1123 of file class.assMatchingQuestionGUI.php.

References $key, $row, and getAnswerStatisticMatchingElemHtml().

Referenced by getAnswerFrequencyTableGUI().

1124  {
1125  $answersByActiveAndPass = array();
1126 
1127  foreach ($relevantAnswers as $row) {
1128  $key = $row['active_fi'] . ':' . $row['pass'];
1129 
1130  if (!isset($answersByActiveAndPass[$key])) {
1131  $answersByActiveAndPass[$key] = array();
1132  }
1133 
1134  $answersByActiveAndPass[$key][$row['value1']] = $row['value2'];
1135  }
1136 
1137  $answers = array();
1138 
1139  foreach ($answersByActiveAndPass as $key => $matchingPairs) {
1140  foreach ($matchingPairs as $termId => $defId) {
1141  $hash = md5($termId . ':' . $defId);
1142 
1143  if (!isset($answers[$hash])) {
1144  $termHtml = $this->getAnswerStatisticMatchingElemHtml(
1145  $this->object->getTermWithIdentifier($termId)
1146  );
1147 
1148  $defHtml = $this->getAnswerStatisticMatchingElemHtml(
1149  $this->object->getDefinitionWithIdentifier($defId)
1150  );
1151 
1152  $answers[$hash] = array(
1153  'answer' => $termHtml . $defHtml,
1154  'term' => $termHtml,
1155  'definition' => $defHtml,
1156  'frequency' => 0
1157  );
1158  }
1159 
1160  $answers[$hash]['frequency']++;
1161  }
1162  }
1163 
1164  return $answers;
1165  }
$row
$key
Definition: croninfo.php:18
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAnswerStatisticImageHtml()

assMatchingQuestionGUI::getAnswerStatisticImageHtml (   $picture)
protected

Definition at line 1102 of file class.assMatchingQuestionGUI.php.

Referenced by getAnswerStatisticMatchingElemHtml().

1103  {
1104  $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $picture;
1105  return '<img src="' . $thumbweb . '" alt="' . $picture . '" title="' . $picture . '"/>';
1106  }
+ Here is the caller graph for this function:

◆ getAnswerStatisticMatchingElemHtml()

assMatchingQuestionGUI::getAnswerStatisticMatchingElemHtml (   $elem)
protected

Definition at line 1108 of file class.assMatchingQuestionGUI.php.

References $html, and getAnswerStatisticImageHtml().

Referenced by getAnswersFrequency().

1109  {
1110  $html = '';
1111 
1112  if (strlen($elem->text)) {
1113  $html .= $elem->text;
1114  }
1115 
1116  if (strlen($elem->picture)) {
1117  $html .= $this->getAnswerStatisticImageHtml($elem->picture);
1118  }
1119 
1120  return $html;
1121  }
$html
Definition: example_001.php:87
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPreview()

assMatchingQuestionGUI::getPreview (   $show_question_only = false,
  $showInlineFeedback = false 
)

Definition at line 595 of file class.assMatchingQuestionGUI.php.

References $DIC, $id, $template, assQuestionGUI\getILIASPage(), ilUtil\getImagePath(), assQuestionGUI\getPreviewSession(), ilUtil\getStyleSheetLocation(), iljQueryUtil\initjQuery(), and iljQueryUtil\initjQueryUI().

596  {
597  $solutions = is_object($this->getPreviewSession()) ? (array) $this->getPreviewSession()->getParticipantsSolution() : array();
598 
599  global $DIC; /* @var ILIAS\DI\Container $DIC */
600  if ($DIC['ilBrowser']->isMobile() || $DIC['ilBrowser']->isIpad()) {
601  require_once 'Services/jQuery/classes/class.iljQueryUtil.php';
604  $this->tpl->addJavaScript('./libs/bower/bower_components/jqueryui-touch-punch/jquery.ui.touch-punch.min.js');
605  } else {
606  $this->tpl->addJavaScript('Modules/TestQuestionPool/js/jquery-ui-1-10-3-fixed.js');
607  }
608  $this->tpl->addJavaScript('Modules/TestQuestionPool/js/ilMatchingQuestion.js');
609  $this->tpl->addCss(ilUtil::getStyleSheetLocation('output', 'test_javascript.css', 'Modules/TestQuestionPool'));
610 
611  $template = new ilTemplate("tpl.il_as_qpl_matching_output.html", true, true, "Modules/TestQuestionPool");
612 
613  foreach ($solutions as $defId => $terms) {
614  foreach ($terms as $termId) {
615  $template->setCurrentBlock("matching_data");
616  $template->setVariable("DEFINITION_ID", $defId);
617  $template->setVariable("TERM_ID", $termId);
618  $template->parseCurrentBlock();
619  }
620  }
621 
622  // shuffle output
623  $terms = $this->object->getTerms();
624  $definitions = $this->object->getDefinitions();
625  switch ($this->object->getShuffle()) {
626  case 1:
627  $seed = $this->object->getShuffler()->getSeed();
628  $this->object->getShuffler()->setSeed($seed . '1');
629  $terms = $this->object->getShuffler()->shuffle($terms);
630  $this->object->getShuffler()->setSeed($seed . '2');
631  $definitions = $this->object->getShuffler()->shuffle($definitions);
632  $this->object->getShuffler()->setSeed($seed);
633  break;
634  case 2:
635  $terms = $this->object->getShuffler()->shuffle($terms);
636  break;
637  case 3:
638  $definitions = $this->object->getShuffler()->shuffle($definitions);
639  break;
640  }
641 
642  // create definitions
643  $counter = 0;
644  foreach ($definitions as $definition) {
645  if (strlen($definition->picture)) {
646  $template->setCurrentBlock("definition_picture");
647  $template->setVariable("DEFINITION_ID", $definition->identifier);
648  $template->setVariable("IMAGE_HREF", $this->object->getImagePathWeb() . $definition->picture);
649  $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $definition->picture;
650  $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $definition->picture;
651  if (!@file_exists($thumb)) {
652  $this->object->rebuildThumbnails();
653  }
654  $template->setVariable("THUMBNAIL_HREF", $thumbweb);
655  $template->setVariable("THUMB_ALT", $this->lng->txt("image"));
656  $template->setVariable("THUMB_TITLE", $this->lng->txt("image"));
657  $template->setVariable("TEXT_DEFINITION", (strlen($definition->text)) ? $this->object->prepareTextareaOutput($definition->text, true, true) : '');
658  $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
659  $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
660  $template->parseCurrentBlock();
661  } else {
662  $template->setCurrentBlock("definition_text");
663  $template->setVariable("DEFINITION", $this->object->prepareTextareaOutput($definition->text, true, true));
664  $template->parseCurrentBlock();
665  }
666 
667  $template->setCurrentBlock("droparea");
668  $template->setVariable("ID_DROPAREA", $definition->identifier);
669  $template->setVariable("QUESTION_ID", $this->object->getId());
670  $template->parseCurrentBlock();
671 
672  $template->setCurrentBlock("definition_data");
673  $template->setVariable("DEFINITION_ID", $definition->identifier);
674  $template->parseCurrentBlock();
675  }
676 
677  // create terms
678  $counter = 0;
679  foreach ($terms as $term) {
680  if (strlen($term->picture)) {
681  $template->setCurrentBlock("term_picture");
682  $template->setVariable("TERM_ID", $term->identifier);
683  $template->setVariable("IMAGE_HREF", $this->object->getImagePathWeb() . $term->picture);
684  $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $term->picture;
685  $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $term->picture;
686  if (!@file_exists($thumb)) {
687  $this->object->rebuildThumbnails();
688  }
689  $template->setVariable("THUMBNAIL_HREF", $thumbweb);
690  $template->setVariable("THUMB_ALT", $this->lng->txt("image"));
691  $template->setVariable("THUMB_TITLE", $this->lng->txt("image"));
692  $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
693  $template->setVariable("TEXT_TERM", (strlen($term->text)) ? $this->object->prepareTextareaOutput($term->text, true, true) : '');
694  $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
695  $template->parseCurrentBlock();
696  } else {
697  $template->setCurrentBlock("term_text");
698  $template->setVariable("TERM_TEXT", $this->object->prepareTextareaOutput($term->text, true, true));
699  $template->parseCurrentBlock();
700  }
701  $template->setCurrentBlock("draggable");
702  $template->setVariable("ID_DRAGGABLE", $term->identifier);
703  $template->parseCurrentBlock();
704 
705  $template->setCurrentBlock("term_data");
706  $template->setVariable("TERM_ID", $term->identifier);
707  $template->parseCurrentBlock();
708  }
709 
710  $template->setVariable('MATCHING_MODE', $this->object->getMatchingMode());
711 
712  $template->setVariable("RESET_BUTTON", $this->lng->txt("reset_terms"));
713 
714  $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), true));
715 
716  $questionoutput = $template->get();
717 
718  if (!$show_question_only) {
719  // get page object output
720  $questionoutput = $this->getILIASPage($questionoutput);
721  }
722 
723  return $questionoutput;
724  }
$template
global $DIC
Definition: saml.php:7
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
getILIASPage($html="")
Returns the ILIAS Page around a question.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
special template class to simplify handling of ITX/PEAR
static initjQueryUI($a_tpl=null)
inits and adds the jQuery-UI JS-File to the global template (see included_components.txt for included components)
static initjQuery($a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
+ Here is the call graph for this function:

◆ getSolutionOutput()

assMatchingQuestionGUI::getSolutionOutput (   $active_id,
  $pass = null,
  $graphicalOutput = false,
  $result_output = false,
  $show_question_only = true,
  $show_feedback = false,
  $show_correct_solution = false,
  $show_manual_scoring = false,
  $show_question_text = true 
)

Get the question solution output.

Parameters
integer$active_idThe active user id
integer$passThe test pass
boolean$graphicalOutputShow visual feedback for right/wrong answers
boolean$result_outputShow the reached points for parts of the question
boolean$show_question_onlyShow the question without the ILIAS content around
boolean$show_feedbackShow the question feedback
boolean$show_correct_solutionShow the correct solution instead of the user solution
boolean$show_manual_scoringShow specific information for the manual scoring output
Returns
The solution output of the question as HTML code

Definition at line 431 of file class.assMatchingQuestionGUI.php.

References $i, $ok, $pass, $template, ilAssQuestionFeedback\CSS_CLASS_FEEDBACK_CORRECT, ilAssQuestionFeedback\CSS_CLASS_FEEDBACK_WRONG, assQuestionGUI\getGenericFeedbackOutput(), assQuestionGUI\getILIASPage(), ilUtil\getImagePath(), getSpecificFeedbackOutput(), assQuestionGUI\getUseIntermediateSolution(), assQuestionGUI\hasCorrectSolution(), isCorrectMatching(), assQuestionGUI\isTestPresentationContext(), ilUtil\prepareFormOutput(), and ilWACSignedPath\signFile().

441  {
442  // generate the question output
443  include_once "./Services/UICore/classes/class.ilTemplate.php";
444  $template = new ilTemplate("tpl.il_as_qpl_matching_output_solution.html", true, true, "Modules/TestQuestionPool");
445  $solutiontemplate = new ilTemplate("tpl.il_as_tst_solution_output.html", true, true, "Modules/TestQuestionPool");
446 
447  $solutions = array();
448  if (($active_id > 0) && (!$show_correct_solution)) {
449  include_once "./Modules/Test/classes/class.ilObjTest.php";
450  $solutions = $this->object->getSolutionValues($active_id, $pass, !$this->getUseIntermediateSolution());
451  $solution_script .= "";
452  } else {
453  foreach ($this->object->getMaximumScoringMatchingPairs() as $pair) {
454  $solutions[] = array(
455  "value1" => $pair->term->identifier,
456  "value2" => $pair->definition->identifier,
457  'points' => $pair->points
458  );
459  }
460  }
461 
462  $i = 0;
463 
464  foreach ($solutions as $solution) {
465  $definition = $this->object->getDefinitionWithIdentifier($solution['value2']);
466  $term = $this->object->getTermWithIdentifier($solution['value1']);
467  $points = $solution['points'];
468 
469  if (is_object($definition)) {
470  if (strlen($definition->picture)) {
471  if (strlen($definition->text)) {
472  $template->setCurrentBlock('definition_image_text');
473  $template->setVariable("TEXT_DEFINITION", ilUtil::prepareFormOutput($definition->text));
474  $template->parseCurrentBlock();
475  }
476 
477  $answerImageSrc = ilWACSignedPath::signFile(
478  $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $definition->picture
479  );
480 
481  $template->setCurrentBlock('definition_image');
482  $template->setVariable('ANSWER_IMAGE_URL', $answerImageSrc);
483  $template->setVariable('ANSWER_IMAGE_ALT', (strlen($definition->text)) ? ilUtil::prepareFormOutput($definition->text) : ilUtil::prepareFormOutput($definition->picture));
484  $template->setVariable('ANSWER_IMAGE_TITLE', (strlen($definition->text)) ? ilUtil::prepareFormOutput($definition->text) : ilUtil::prepareFormOutput($definition->picture));
485  $template->setVariable('URL_PREVIEW', $this->object->getImagePathWeb() . $definition->picture);
486  $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
487  $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
488  $template->parseCurrentBlock();
489  } else {
490  $template->setCurrentBlock('definition_text');
491  $template->setVariable("DEFINITION", $this->object->prepareTextareaOutput($definition->text, true));
492  $template->parseCurrentBlock();
493  }
494  }
495  if (is_object($term)) {
496  if (strlen($term->picture)) {
497  if (strlen($term->text)) {
498  $template->setCurrentBlock('term_image_text');
499  $template->setVariable("TEXT_TERM", ilUtil::prepareFormOutput($term->text));
500  $template->parseCurrentBlock();
501  }
502 
503  $answerImageSrc = ilWACSignedPath::signFile(
504  $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $term->picture
505  );
506 
507  $template->setCurrentBlock('term_image');
508  $template->setVariable('ANSWER_IMAGE_URL', $answerImageSrc);
509  $template->setVariable('ANSWER_IMAGE_ALT', (strlen($term->text)) ? ilUtil::prepareFormOutput($term->text) : ilUtil::prepareFormOutput($term->picture));
510  $template->setVariable('ANSWER_IMAGE_TITLE', (strlen($term->text)) ? ilUtil::prepareFormOutput($term->text) : ilUtil::prepareFormOutput($term->picture));
511  $template->setVariable('URL_PREVIEW', $this->object->getImagePathWeb() . $term->picture);
512  $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
513  $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
514  $template->parseCurrentBlock();
515  } else {
516  $template->setCurrentBlock('term_text');
517  $template->setVariable("TERM", $this->object->prepareTextareaOutput($term->text, true));
518  $template->parseCurrentBlock();
519  }
520  $i++;
521  }
522  if (($active_id > 0) && (!$show_correct_solution)) {
523  if ($graphicalOutput) {
524  // output of ok/not ok icons for user entered solutions
525  $ok = false;
526  foreach ($this->object->getMatchingPairs() as $pair) {
527  if ($this->isCorrectMatching($pair, $definition, $term)) {
528  $ok = true;
529  }
530  }
531 
532  if ($ok) {
533  $template->setCurrentBlock("icon_ok");
534  $template->setVariable("ICON_OK", ilUtil::getImagePath("icon_ok.svg"));
535  $template->setVariable("TEXT_OK", $this->lng->txt("answer_is_right"));
536  $template->parseCurrentBlock();
537  } else {
538  $template->setCurrentBlock("icon_ok");
539  $template->setVariable("ICON_NOT_OK", ilUtil::getImagePath("icon_not_ok.svg"));
540  $template->setVariable("TEXT_NOT_OK", $this->lng->txt("answer_is_wrong"));
541  $template->parseCurrentBlock();
542  }
543  }
544  }
545 
546  if ($result_output) {
547  $resulttext = ($points == 1) ? "(%s " . $this->lng->txt("point") . ")" : "(%s " . $this->lng->txt("points") . ")";
548  $template->setCurrentBlock("result_output");
549  $template->setVariable("RESULT_OUTPUT", sprintf($resulttext, $points));
550  $template->parseCurrentBlock();
551  }
552 
553  $template->setCurrentBlock("row");
554  $template->setVariable("TEXT_MATCHES", $this->lng->txt("matches"));
555  $template->parseCurrentBlock();
556  }
557 
558  $questiontext = $this->object->getQuestion();
559  if ($show_question_text == true) {
560  $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, true));
561  }
562 
563  $questionoutput = $template->get();
564 
565  $feedback = '';
566  if ($show_feedback) {
567  if (!$this->isTestPresentationContext()) {
568  $fb = $this->getGenericFeedbackOutput($active_id, $pass);
569  $feedback .= strlen($fb) ? $fb : '';
570  }
571 
572  $fb = $this->getSpecificFeedbackOutput(array());
573  $feedback .= strlen($fb) ? $fb : '';
574  }
575  if (strlen($feedback)) {
576  $cssClass = (
577  $this->hasCorrectSolution($active_id, $pass) ?
579  );
580 
581  $solutiontemplate->setVariable("ILC_FB_CSS_CLASS", $cssClass);
582  $solutiontemplate->setVariable("FEEDBACK", $this->object->prepareTextareaOutput($feedback, true));
583  }
584 
585  $solutiontemplate->setVariable("SOLUTION_OUTPUT", $questionoutput);
586 
587  $solutionoutput = $solutiontemplate->get();
588  if (!$show_question_only) {
589  // get page object output
590  $solutionoutput = $this->getILIASPage($solutionoutput);
591  }
592  return $solutionoutput;
593  }
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
hasCorrectSolution($activeId, $passIndex)
$template
getUseIntermediateSolution()
Get if intermediate solution should be used for solution output.
getILIASPage($html="")
Returns the ILIAS Page around a question.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
special template class to simplify handling of ITX/PEAR
isCorrectMatching($pair, $definition, $term)
static signFile($path_to_file)
$i
Definition: disco.tpl.php:19
getGenericFeedbackOutput($active_id, $pass)
Returns the answer specific feedback for the question.
+ Here is the call graph for this function:

◆ getSpecificFeedbackOutput()

assMatchingQuestionGUI::getSpecificFeedbackOutput (   $userSolution)

Definition at line 1003 of file class.assMatchingQuestionGUI.php.

Referenced by getSolutionOutput().

1004  {
1005  $matches = array_values($this->object->matchingpairs);
1006 
1007  if (!$this->object->feedbackOBJ->specificAnswerFeedbackExists()) {
1008  return '';
1009  }
1010 
1011  $feedback = '<table class="test_specific_feedback"><tbody>';
1012 
1013  foreach ($matches as $idx => $ans) {
1014  if (!isset($userSolution[$ans->definition->identifier])) {
1015  continue;
1016  }
1017 
1018  if (!is_array($userSolution[$ans->definition->identifier])) {
1019  continue;
1020  }
1021 
1022  if (!in_array($ans->term->identifier, $userSolution[$ans->definition->identifier])) {
1023  continue;
1024  }
1025 
1026  $fb = $this->object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation(
1027  $this->object->getId(),
1028  0,
1029  $idx
1030  );
1031  $feedback .= '<tr><td>"' . $ans->definition->text . '"&nbsp;' . $this->lng->txt("matches") . '&nbsp;"';
1032  $feedback .= $ans->term->text . '"</td><td>';
1033  $feedback .= $fb . '</td> </tr>';
1034  }
1035 
1036  $feedback .= '</tbody></table>';
1037  return $this->object->prepareTextareaOutput($feedback, true);
1038  }
+ Here is the caller graph for this function:

◆ getTestOutput()

assMatchingQuestionGUI::getTestOutput (   $active_id,
  $pass,
  $is_postponed = false,
  $user_post_solution = false,
  $inlineFeedback = false 
)

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

References $DIC, $pass, $template, ilUtil\getImagePath(), ilUtil\getStyleSheetLocation(), iljQueryUtil\initjQuery(), iljQueryUtil\initjQueryUI(), and assQuestionGUI\outQuestionPage().

758  {
759  global $DIC; /* @var ILIAS\DI\Container $DIC */
760  if ($DIC['ilBrowser']->isMobile() || $DIC['ilBrowser']->isIpad()) {
761  require_once 'Services/jQuery/classes/class.iljQueryUtil.php';
764  $this->tpl->addJavaScript('./libs/bower/bower_components/jqueryui-touch-punch/jquery.ui.touch-punch.min.js');
765  } else {
766  $this->tpl->addJavaScript('Modules/TestQuestionPool/js/jquery-ui-1-10-3-fixed.js');
767  }
768  $this->tpl->addJavaScript('Modules/TestQuestionPool/js/ilMatchingQuestion.js');
769  $this->tpl->addCss(ilUtil::getStyleSheetLocation('output', 'test_javascript.css', 'Modules/TestQuestionPool'));
770 
771  $template = new ilTemplate("tpl.il_as_qpl_matching_output.html", true, true, "Modules/TestQuestionPool");
772 
773  if ($active_id) {
774  // hey: prevPassSolutions - obsolete due to central check
775  #$solutions = NULL;
776  #include_once "./Modules/Test/classes/class.ilObjTest.php";
777  #if (!ilObjTest::_getUsePreviousAnswers($active_id, true))
778  #{
779  # if (is_null($pass)) $pass = ilObjTest::_getPass($active_id);
780  #}
781  // hey.
782  if (is_array($user_post_solution)) {
783  $solutions = array();
784  foreach ($user_post_solution['matching'][$this->object->getId()] as $definition => $term) {
785  array_push($solutions, array("value1" => $term, "value2" => $definition));
786  }
787  } else {
788  // hey: prevPassSolutions - obsolete due to central check
789  $solutions = $this->object->getTestOutputSolutions($active_id, $pass);
790  // hey.
791  }
792 
793  $counter = 0;
794  foreach ($solutions as $idx => $solution_value) {
795  if (($solution_value["value2"] > -1) && ($solution_value["value1"] > -1)) {
796  $template->setCurrentBlock("matching_data");
797  $template->setVariable("TERM_ID", $solution_value["value1"]);
798  $template->setVariable("DEFINITION_ID", $solution_value["value2"]);
799  $template->parseCurrentBlock();
800  }
801 
802  $counter++;
803  }
804  }
805 
806  $terms = $this->object->getTerms();
807  $definitions = $this->object->getDefinitions();
808  switch ($this->object->getShuffle()) {
809  case 1:
810  $seed = $this->object->getShuffler()->getSeed();
811  $this->object->getShuffler()->setSeed($seed . '1');
812  $terms = $this->object->getShuffler()->shuffle($terms);
813  if (count($solutions)) {
814  $definitions = $this->sortDefinitionsBySolution($solutions, $definitions);
815  } else {
816  $this->object->getShuffler()->setSeed($seed . '2');
817  $definitions = $this->object->getShuffler()->shuffle($definitions);
818  }
819  $this->object->getShuffler()->setSeed($seed);
820  break;
821  case 2:
822  $terms = $this->object->getShuffler()->shuffle($terms);
823  break;
824  case 3:
825  if (count($solutions)) {
826  $definitions = $this->sortDefinitionsBySolution($solutions, $definitions);
827  } else {
828  $definitions = $this->object->getShuffler()->shuffle($definitions);
829  }
830  break;
831  }
832 
833  // create definitions
834  $counter = 0;
835  foreach ($definitions as $definition) {
836  if (strlen($definition->picture)) {
837  $template->setCurrentBlock("definition_picture");
838  $template->setVariable("DEFINITION_ID", $definition->identifier);
839  $template->setVariable("IMAGE_HREF", $this->object->getImagePathWeb() . $definition->picture);
840  $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $definition->picture;
841  $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $definition->picture;
842  if (!@file_exists($thumb)) {
843  $this->object->rebuildThumbnails();
844  }
845  $template->setVariable("THUMBNAIL_HREF", $thumbweb);
846  $template->setVariable("THUMB_ALT", $this->lng->txt("image"));
847  $template->setVariable("THUMB_TITLE", $this->lng->txt("image"));
848  $template->setVariable("TEXT_DEFINITION", (strlen($definition->text)) ? $this->object->prepareTextareaOutput($definition->text, true, true) : '');
849  $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
850  $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
851  $template->parseCurrentBlock();
852  } else {
853  $template->setCurrentBlock("definition_text");
854  $template->setVariable("DEFINITION", $this->object->prepareTextareaOutput($definition->text, true, true));
855  $template->parseCurrentBlock();
856  }
857 
858  $template->setCurrentBlock("droparea");
859  $template->setVariable("ID_DROPAREA", $definition->identifier);
860  $template->setVariable("QUESTION_ID", $this->object->getId());
861  $template->parseCurrentBlock();
862 
863  $template->setCurrentBlock("definition_data");
864  $template->setVariable("DEFINITION_ID", $definition->identifier);
865  $template->parseCurrentBlock();
866  }
867 
868  // create terms
869  $counter = 0;
870  foreach ($terms as $term) {
871  if (strlen($term->picture)) {
872  $template->setCurrentBlock("term_picture");
873  $template->setVariable("TERM_ID", $term->identifier);
874  $template->setVariable("IMAGE_HREF", $this->object->getImagePathWeb() . $term->picture);
875  $thumbweb = $this->object->getImagePathWeb() . $this->object->getThumbPrefix() . $term->picture;
876  $thumb = $this->object->getImagePath() . $this->object->getThumbPrefix() . $term->picture;
877  if (!@file_exists($thumb)) {
878  $this->object->rebuildThumbnails();
879  }
880  $template->setVariable("THUMBNAIL_HREF", $thumbweb);
881  $template->setVariable("THUMB_ALT", $this->lng->txt("image"));
882  $template->setVariable("THUMB_TITLE", $this->lng->txt("image"));
883  $template->setVariable("TEXT_PREVIEW", $this->lng->txt('preview'));
884  $template->setVariable("TEXT_TERM", (strlen($term->text)) ? $this->object->prepareTextareaOutput($term->text, true, true) : '');
885  $template->setVariable("IMG_PREVIEW", ilUtil::getImagePath('enlarge.svg'));
886  $template->parseCurrentBlock();
887  } else {
888  $template->setCurrentBlock("term_text");
889  $template->setVariable("TERM_TEXT", $this->object->prepareTextareaOutput($term->text, true, true));
890  $template->parseCurrentBlock();
891  }
892  $template->setCurrentBlock("draggable");
893  $template->setVariable("ID_DRAGGABLE", $term->identifier);
894  $template->parseCurrentBlock();
895 
896  $template->setCurrentBlock('term_data');
897  $template->setVariable('TERM_ID', $term->identifier);
898  $template->parseCurrentBlock();
899  }
900 
901  $template->setVariable('MATCHING_MODE', $this->object->getMatchingMode());
902 
903  $template->setVariable("RESET_BUTTON", $this->lng->txt("reset_terms"));
904 
905  $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($this->object->getQuestion(), true));
906 
907  return $this->outQuestionPage("", $is_postponed, $active_id, $template->get());
908  }
$template
global $DIC
Definition: saml.php:7
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
special template class to simplify handling of ITX/PEAR
static initjQueryUI($a_tpl=null)
inits and adds the jQuery-UI JS-File to the global template (see included_components.txt for included components)
outQuestionPage($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
output question page
static initjQuery($a_tpl=null)
inits and adds the jQuery JS-File to the global or a passed template
+ Here is the call graph for this function:

◆ isCorrectMatching()

assMatchingQuestionGUI::isCorrectMatching (   $pair,
  $definition,
  $term 
)
private

Definition at line 1081 of file class.assMatchingQuestionGUI.php.

Referenced by getSolutionOutput().

1082  {
1083  if (!($pair->points > 0)) {
1084  return false;
1085  }
1086 
1087  if (!is_object($term)) {
1088  return false;
1089  }
1090 
1091  if ($pair->definition->identifier != $definition->identifier) {
1092  return false;
1093  }
1094 
1095  if ($pair->term->identifier != $term->identifier) {
1096  return false;
1097  }
1098 
1099  return true;
1100  }
+ Here is the caller graph for this function:

◆ isDefImgUploadCommand()

assMatchingQuestionGUI::isDefImgUploadCommand ( )
private

Definition at line 260 of file class.assMatchingQuestionGUI.php.

Referenced by populateAnswerSpecificFormPart().

261  {
262  return $this->ctrl->getCmd() == 'uploaddefinitions';
263  }
+ Here is the caller graph for this function:

◆ isTermImgUploadCommand()

assMatchingQuestionGUI::isTermImgUploadCommand ( )
private

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

Referenced by populateAnswerSpecificFormPart().

266  {
267  return $this->ctrl->getCmd() == 'uploadterms';
268  }
+ Here is the caller graph for this function:

◆ isValidTermAndDefinitionAmount()

assMatchingQuestionGUI::isValidTermAndDefinitionAmount ( ilPropertyFormGUI  $form)
private

for mode 1:1 terms count must not be less than definitions count for mode n:n this limitation is cancelled

Parameters
ilPropertyFormGUI$form
Returns
bool

Definition at line 277 of file class.assMatchingQuestionGUI.php.

References ilPropertyFormGUI\getItemByPostVar(), and assMatchingQuestion\MATCHING_MODE_N_ON_N.

Referenced by editQuestion().

278  {
279  $matchingMode = $form->getItemByPostVar('matching_mode')->getValue();
280 
281  if ($matchingMode == assMatchingQuestion::MATCHING_MODE_N_ON_N) {
282  return true;
283  }
284 
285  $numTerms = count($form->getItemByPostVar('terms')->getValues());
286  $numDefinitions = count($form->getItemByPostVar('definitions')->getValues());
287 
288  if ($numTerms >= $numDefinitions) {
289  return true;
290  }
291 
292  return false;
293  }
getItemByPostVar($a_post_var)
Get Item by POST variable.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateAnswerSpecificFormPart()

assMatchingQuestionGUI::populateAnswerSpecificFormPart ( \ilPropertyFormGUI  $form)

Definition at line 295 of file class.assMatchingQuestionGUI.php.

References $form, ilPropertyFormGUI\addItem(), isDefImgUploadCommand(), isTermImgUploadCommand(), ilMatchingWizardInputGUI\setHideImages(), and ilFormPropertyGUI\setRequired().

Referenced by editQuestion().

296  {
297  // Definitions
298  include_once "./Modules/TestQuestionPool/classes/class.ilMatchingWizardInputGUI.php";
299  $definitions = new ilMatchingWizardInputGUI($this->lng->txt("definitions"), "definitions");
300  if ($this->object->getSelfAssessmentEditingMode()) {
301  $definitions->setHideImages(true);
302  }
303 
304  $definitions->setRequired(true);
305  $definitions->setQuestionObject($this->object);
306  $definitions->setTextName($this->lng->txt('definition_text'));
307  $definitions->setImageName($this->lng->txt('definition_image'));
308  include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php";
309  if (!count($this->object->getDefinitions())) {
310  $this->object->addDefinition(new assAnswerMatchingDefinition());
311  }
312  $definitionvalues = $this->object->getDefinitions();
313  $definitions->setValues($definitionvalues);
314  if ($this->isDefImgUploadCommand()) {
315  $definitions->checkInput();
316  }
317  $form->addItem($definitions);
318 
319  // Terms
320  include_once "./Modules/TestQuestionPool/classes/class.ilMatchingWizardInputGUI.php";
321  $terms = new ilMatchingWizardInputGUI($this->lng->txt("terms"), "terms");
322  if ($this->object->getSelfAssessmentEditingMode()) {
323  $terms->setHideImages(true);
324  }
325  $terms->setRequired(true);
326  $terms->setQuestionObject($this->object);
327  $terms->setTextName($this->lng->txt('term_text'));
328  $terms->setImageName($this->lng->txt('term_image'));
329  include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php";
330  if (!count($this->object->getTerms())) {
331  $this->object->addTerm(new assAnswerMatchingTerm());
332  }
333  $termvalues = $this->object->getTerms();
334  $terms->setValues($termvalues);
335  if ($this->isTermImgUploadCommand()) {
336  $terms->checkInput();
337  }
338  $form->addItem($terms);
339 
340  // Matching Pairs
341  include_once "./Modules/TestQuestionPool/classes/class.ilMatchingPairWizardInputGUI.php";
342  $pairs = new ilMatchingPairWizardInputGUI($this->lng->txt('matching_pairs'), 'pairs');
343  $pairs->setRequired(true);
344  $pairs->setTerms($this->object->getTerms());
345  $pairs->setDefinitions($this->object->getDefinitions());
346  include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php";
347  if (count($this->object->getMatchingPairs()) == 0) {
348  $this->object->addMatchingPair(new assAnswerMatchingPair($termvalues[0], $definitionvalues[0], 0));
349  }
350  $pairs->setPairs($this->object->getMatchingPairs());
351  $form->addItem($pairs);
352 
353  return $form;
354  }
Class for matching question terms.
Class for matching question pairs.
This class represents a single choice wizard property in a property form.
setHideImages($a_hide)
Set hide images.
if(isset($_POST['submit'])) $form
Class for matching question definitions.
setRequired($a_required)
Set Required.
This class represents a key value pair wizard property in a property form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ populateCorrectionsFormProperties()

assMatchingQuestionGUI::populateCorrectionsFormProperties ( ilPropertyFormGUI  $form)

Definition at line 1186 of file class.assMatchingQuestionGUI.php.

References ilPropertyFormGUI\addItem(), and ilFormPropertyGUI\setRequired().

1187  {
1188  require_once 'Modules/TestQuestionPool/classes/forms/class.ilAssMatchingPairCorrectionsInputGUI.php';
1189  $pairs = new ilAssMatchingPairCorrectionsInputGUI($this->lng->txt('matching_pairs'), 'pairs');
1190  $pairs->setRequired(true);
1191  $pairs->setTerms($this->object->getTerms());
1192  $pairs->setDefinitions($this->object->getDefinitions());
1193  $pairs->setPairs($this->object->getMatchingPairs());
1194  $form->addItem($pairs);
1195  }
addItem($a_item)
Add Item (Property, SectionHeader).
setRequired($a_required)
Set Required.
+ Here is the call graph for this function:

◆ populateQuestionSpecificFormPart()

assMatchingQuestionGUI::populateQuestionSpecificFormPart ( \ilPropertyFormGUI  $form)

Definition at line 356 of file class.assMatchingQuestionGUI.php.

References ilPropertyFormGUI\addItem(), assMatchingQuestion\MATCHING_MODE_1_ON_1, assMatchingQuestion\MATCHING_MODE_N_ON_N, ilSelectInputGUI\setOptions(), ilFormPropertyGUI\setRequired(), ilNumberInputGUI\setValue(), and ilRadioOption\setValue().

Referenced by editQuestion().

357  {
358  // Edit mode
359  $hidden = new ilHiddenInputGUI("matching_type");
360  $hidden->setValue($matchingtype);
361  $form->addItem($hidden);
362 
363  if (!$this->object->getSelfAssessmentEditingMode()) {
364  // shuffle
365  $shuffle = new ilSelectInputGUI($this->lng->txt("shuffle_answers"), "shuffle");
366  $shuffle_options = array(
367  0 => $this->lng->txt("no"),
368  1 => $this->lng->txt("matching_shuffle_terms_definitions"),
369  2 => $this->lng->txt("matching_shuffle_terms"),
370  3 => $this->lng->txt("matching_shuffle_definitions")
371  );
372  $shuffle->setOptions($shuffle_options);
373  $shuffle->setValue($this->object->getShuffle() != null ? $this->object->getShuffle() : 1);
374  $shuffle->setRequired(false);
375  $form->addItem($shuffle);
376 
377  $geometry = new ilNumberInputGUI($this->lng->txt("thumb_geometry"), "thumb_geometry");
378  $geometry->setValue($this->object->getThumbGeometry());
379  $geometry->setRequired(true);
380  $geometry->setMaxLength(6);
381  $geometry->setMinValue(20);
382  $geometry->setSize(6);
383  $geometry->setInfo($this->lng->txt("thumb_geometry_info"));
384  $form->addItem($geometry);
385  }
386 
387  // Matching Mode
388  $mode = new ilRadioGroupInputGUI($this->lng->txt('qpl_qst_inp_matching_mode'), 'matching_mode');
389  $mode->setRequired(true);
390 
391  $modeONEonONE = new ilRadioOption(
392  $this->lng->txt('qpl_qst_inp_matching_mode_one_on_one'),
394  );
395  $mode->addOption($modeONEonONE);
396 
397  $modeALLonALL = new ilRadioOption(
398  $this->lng->txt('qpl_qst_inp_matching_mode_all_on_all'),
400  );
401  $mode->addOption($modeALLonALL);
402 
403  $mode->setValue($this->object->getMatchingMode());
404 
405  $form->addItem($mode);
406  }
This class represents an option in a radio group.
setValue($a_value)
Set Value.
This class represents a selection list property in a property form.
This class represents a hidden form property in a property form.
This class represents a property in a property form.
setValue($a_value)
Set Value.
if(isset($_POST['submit'])) $form
This class represents a number property in a property form.
setOptions($a_options)
Set Options.
setRequired($a_required)
Set Required.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removedefinitions()

assMatchingQuestionGUI::removedefinitions ( )

Definition at line 191 of file class.assMatchingQuestionGUI.php.

References $_POST, editQuestion(), and writePostData().

192  {
193  $this->writePostData();
194  $position = key($_POST["cmd"]["removedefinitions"]);
195  $this->object->deleteDefinition($position);
196  $this->editQuestion();
197  }
$_POST["username"]
+ Here is the call graph for this function:

◆ removeimagedefinitions()

assMatchingQuestionGUI::removeimagedefinitions ( )

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

References $_POST, editQuestion(), and writePostData().

160  {
161  $this->writePostData(true);
162  $position = key($_POST['cmd']['removeimagedefinitions']);
163  $this->object->removeDefinitionImage($position);
164  $this->editQuestion();
165  }
$_POST["username"]
+ Here is the call graph for this function:

◆ removeimageterms()

assMatchingQuestionGUI::removeimageterms ( )

Definition at line 145 of file class.assMatchingQuestionGUI.php.

References $_POST, editQuestion(), and writePostData().

146  {
147  $this->writePostData(true);
148  $position = key($_POST['cmd']['removeimageterms']);
149  $this->object->removeTermImage($position);
150  $this->editQuestion();
151  }
$_POST["username"]
+ Here is the call graph for this function:

◆ removepairs()

assMatchingQuestionGUI::removepairs ( )

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

References $_POST, editQuestion(), and writePostData().

208  {
209  $this->writePostData();
210  $position = key($_POST["cmd"]["removepairs"]);
211  $this->object->deleteMatchingPair($position);
212  $this->editQuestion();
213  }
$_POST["username"]
+ Here is the call graph for this function:

◆ removeterms()

assMatchingQuestionGUI::removeterms ( )

Definition at line 175 of file class.assMatchingQuestionGUI.php.

References $_POST, editQuestion(), and writePostData().

176  {
177  $this->writePostData();
178  $position = key($_POST["cmd"]["removeterms"]);
179  $this->object->deleteTerm($position);
180  $this->editQuestion();
181  }
$_POST["username"]
+ Here is the call graph for this function:

◆ saveCorrectionsFormProperties()

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

Definition at line 1200 of file class.assMatchingQuestionGUI.php.

References ilPropertyFormGUI\getItemByPostVar().

1201  {
1202  $pairs = $form->getItemByPostVar('pairs')->getPairs();
1203 
1204  foreach ($this->object->getMatchingPairs() as $idx => $matchingPair) {
1205  $matchingPair->points = (float) $pairs[$idx]->points;
1206  }
1207  }
getItemByPostVar($a_post_var)
Get Item by POST variable.
+ Here is the call graph for this function:

◆ setQuestionTabs()

assMatchingQuestionGUI::setQuestionTabs ( )

Sets the ILIAS tabs for this question type.

public

Todo:
: MOVE THIS STEPS TO COMMON QUESTION CLASS assQuestionGUI

Definition at line 928 of file class.assMatchingQuestionGUI.php.

References $_GET, $DIC, $url, assQuestionGUI\addBackTab(), assQuestionGUI\addTab_QuestionFeedback(), assQuestionGUI\addTab_QuestionHints(), assQuestionGUI\addTab_QuestionPreview(), and assQuestionGUI\addTab_SuggestedSolution().

929  {
930  global $DIC;
931  $rbacsystem = $DIC['rbacsystem'];
932  $ilTabs = $DIC['ilTabs'];
933 
934  $ilTabs->clearTargets();
935 
936  $this->ctrl->setParameterByClass("ilAssQuestionPageGUI", "q_id", $_GET["q_id"]);
937  include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php";
938  $q_type = $this->object->getQuestionType();
939 
940  if (strlen($q_type)) {
941  $classname = $q_type . "GUI";
942  $this->ctrl->setParameterByClass(strtolower($classname), "sel_question_types", $q_type);
943  $this->ctrl->setParameterByClass(strtolower($classname), "q_id", $_GET["q_id"]);
944  }
945 
946  if ($_GET["q_id"]) {
947  if ($rbacsystem->checkAccess('write', $_GET["ref_id"])) {
948  // edit page
949  $ilTabs->addTarget(
950  "edit_page",
951  $this->ctrl->getLinkTargetByClass("ilAssQuestionPageGUI", "edit"),
952  array("edit", "insert", "exec_pg"),
953  "",
954  "",
955  $force_active
956  );
957  }
958 
959  $this->addTab_QuestionPreview($ilTabs);
960  }
961 
962  $force_active = false;
963  if ($rbacsystem->checkAccess('write', $_GET["ref_id"])) {
964  $url = "";
965  if ($classname) {
966  $url = $this->ctrl->getLinkTargetByClass($classname, "editQuestion");
967  }
968  // edit question properties
969  $ilTabs->addTarget(
970  "edit_question",
971  $url,
972  array("editQuestion", "save", "saveEdit", "removeimageterms", "uploadterms", "removeimagedefinitions", "uploaddefinitions",
973  "addpairs", "removepairs", "addterms", "removeterms", "adddefinitions", "removedefinitions", "originalSyncForm"),
974  $classname,
975  "",
976  $force_active
977  );
978  }
979 
980  // add tab for question feedback within common class assQuestionGUI
981  $this->addTab_QuestionFeedback($ilTabs);
982 
983  // add tab for question hint within common class assQuestionGUI
984  $this->addTab_QuestionHints($ilTabs);
985 
986  // add tab for question's suggested solution within common class assQuestionGUI
987  $this->addTab_SuggestedSolution($ilTabs, $classname);
988 
989  // Assessment of questions sub menu entry
990  if ($_GET["q_id"]) {
991  $ilTabs->addTarget(
992  "statistics",
993  $this->ctrl->getLinkTargetByClass($classname, "assessment"),
994  array("assessment"),
995  $classname,
996  ""
997  );
998  }
999 
1000  $this->addBackTab($ilTabs);
1001  }
addTab_QuestionPreview(ilTabsGUI $tabsGUI)
addTab_QuestionHints(ilTabsGUI $tabs)
adds the hints tab to ilTabsGUI
global $DIC
Definition: saml.php:7
$_GET["client_id"]
addTab_QuestionFeedback(ilTabsGUI $tabs)
adds the feedback tab to ilTabsGUI
addBackTab(ilTabsGUI $ilTabs)
$url
addTab_SuggestedSolution(ilTabsGUI $tabs, $classname)
+ Here is the call graph for this function:

◆ supportsIntermediateSolutionOutput()

assMatchingQuestionGUI::supportsIntermediateSolutionOutput ( )

Question type specific support of intermediate solution output The function getSolutionOutput respects getUseIntermediateSolution()

Returns
bool

Definition at line 413 of file class.assMatchingQuestionGUI.php.

414  {
415  return true;
416  }

◆ uploaddefinitions()

assMatchingQuestionGUI::uploaddefinitions ( )

Definition at line 153 of file class.assMatchingQuestionGUI.php.

References editQuestion(), and writePostData().

154  {
155  $this->writePostData(true);
156  $this->editQuestion();
157  }
+ Here is the call graph for this function:

◆ uploadterms()

assMatchingQuestionGUI::uploadterms ( )

Definition at line 139 of file class.assMatchingQuestionGUI.php.

References editQuestion(), and writePostData().

140  {
141  $this->writePostData(true);
142  $this->editQuestion();
143  }
+ Here is the call graph for this function:

◆ writeAnswerSpecificPostData()

assMatchingQuestionGUI::writeAnswerSpecificPostData ( ilPropertyFormGUI  $form)

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

Parameters
bool$alwaysIf true, a check for form validity is omitted.
Returns
void

Implements ilGuiAnswerScoringAdjustable.

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

References $_POST, $filename, $index, and $name.

Referenced by writePostData().

64  {
65  // Delete all existing answers and create new answers from the form data
66  $this->object->flushMatchingPairs();
67  $this->object->flushTerms();
68  $this->object->flushDefinitions();
69 
70  // add terms
71  require_once './Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php';
72  foreach ($_POST['terms']['answer'] as $index => $answer) {
73  $filename = $_POST['terms']['imagename'][$index];
74  if (strlen($_FILES['terms']['name']['image'][$index])) {
75  // upload the new file
76  $name = $_FILES['terms']['name']['image'][$index];
77  if ($this->object->setImageFile(
78  $_FILES['terms']['tmp_name']['image'][$index],
79  $this->object->getEncryptedFilename($name)
80  )
81  ) {
82  $filename = $this->object->getEncryptedFilename($name);
83  } else {
84  $filename = "";
85  }
86  }
87  $this->object->addTerm(
88  new assAnswerMatchingTerm($answer, $filename, $_POST['terms']['identifier'][$index])
89  );
90  }
91  // add definitions
92  require_once './Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php';
93  foreach ($_POST['definitions']['answer'] as $index => $answer) {
94  $filename = $_POST['definitions']['imagename'][$index];
95  if (strlen($_FILES['definitions']['name']['image'][$index])) {
96  // upload the new file
97  $name = $_FILES['definitions']['name']['image'][$index];
98  if ($this->object->setImageFile(
99  $_FILES['definitions']['tmp_name']['image'][$index],
100  $this->object->getEncryptedFilename($name)
101  )
102  ) {
103  $filename = $this->object->getEncryptedFilename($name);
104  } else {
105  $filename = "";
106  }
107  }
108  $this->object->addDefinition(
109  new assAnswerMatchingDefinition($answer, $filename, $_POST['definitions']['identifier'][$index])
110  );
111  }
112 
113  // add matching pairs
114  if (is_array($_POST['pairs']['points'])) {
115  require_once './Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php';
116  foreach ($_POST['pairs']['points'] as $index => $points) {
117  $term_id = $_POST['pairs']['term'][$index];
118  $definition_id = $_POST['pairs']['definition'][$index];
119  $this->object->addMatchingPair(
120  $this->object->getTermWithIdentifier($term_id),
121  $this->object->getDefinitionWithIdentifier($definition_id),
122  $points
123  );
124  }
125  }
126  }
Class for matching question terms.
$index
Definition: metadata.php:60
$filename
Definition: buildRTE.php:89
Class for matching question definitions.
$_POST["username"]
+ Here is the caller graph for this function:

◆ writePostData()

assMatchingQuestionGUI::writePostData (   $always = false)
protected

{}

Definition at line 49 of file class.assMatchingQuestionGUI.php.

References editQuestion(), assQuestionGUI\saveTaxonomyAssignments(), writeAnswerSpecificPostData(), assQuestionGUI\writeQuestionGenericPostData(), and writeQuestionSpecificPostData().

Referenced by adddefinitions(), addpairs(), addterms(), removedefinitions(), removeimagedefinitions(), removeimageterms(), removepairs(), removeterms(), uploaddefinitions(), and uploadterms().

50  {
51  $hasErrors = (!$always) ? $this->editQuestion(true) : false;
52  if (!$hasErrors) {
53  require_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
57  $this->saveTaxonomyAssignments();
58  return 0;
59  }
60  return 1;
61  }
This class represents a property form user interface.
writeAnswerSpecificPostData(ilPropertyFormGUI $form)
Extracts the answer specific values from $_POST and applies them to the data object.
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
Extracts the question specific values from $_POST and applies them to the data object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ writeQuestionSpecificPostData()

assMatchingQuestionGUI::writeQuestionSpecificPostData ( ilPropertyFormGUI  $form)

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

Parameters
bool$alwaysIf true, a check for form validity is omitted.
Returns
void

Implements ilGuiQuestionScoringAdjustable.

Definition at line 128 of file class.assMatchingQuestionGUI.php.

References $_POST.

Referenced by writePostData().

129  {
130  if (!$this->object->getSelfAssessmentEditingMode()) {
131  $this->object->setShuffle($_POST["shuffle"]);
132  } else {
133  $this->object->setShuffle(1);
134  }
135  $this->object->setThumbGeometry($_POST["thumb_geometry"]);
136  $this->object->setMatchingMode($_POST['matching_mode']);
137  }
$_POST["username"]
+ Here is the caller graph for this function:

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