180 $nextClass = $this->ctrl->getNextClass();
182 $command = $this->ctrl->getCmd(self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
186 $this->ctrl->redirect($this, self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
191 case strtolower(__CLASS__):
213 case self::CMD_SAVE_SKILL_QUEST_ASSIGN_PROPERTIES_FORM:
214 case self::CMD_UPDATE_SKILL_QUEST_ASSIGNS:
224 if( is_array(
$_POST[
'skill_points']) )
226 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignment.php';
230 foreach(
$_POST[
'skill_points'] as $assignmentKey => $skillPoints)
232 $assignmentKey = explode(
':',$assignmentKey);
233 $skillBaseId = (int)$assignmentKey[0];
234 $skillTrefId = (int)$assignmentKey[1];
235 $questionId = (int)$assignmentKey[2];
242 $assignment->setQuestionId($questionId);
243 $assignment->setSkillBaseId($skillBaseId);
244 $assignment->setSkillTrefId($skillTrefId);
246 if( $assignment->dbRecordExists() )
248 $assignment->loadFromDb();
250 if( !$assignment->hasEvalModeBySolution() )
252 $assignment->setSkillPoints((
int)$skillPoints);
253 $assignment->saveToDb();
261 $this->ctrl->redirect($this, self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
266 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentList.php';
268 $questionId = (int)
$_GET[
'question_id'];
274 $assignmentList->loadFromDb();
276 $handledSkills = array();
280 $skillIds = $sgui->getSelectedSkills();
282 foreach($skillIds as $skillId)
284 $skill = explode(
':',$skillId);
285 $skillBaseId = (int)$skill[0];
286 $skillTrefId = (int)$skill[1];
290 if( !$assignmentList->isAssignedToQuestionId($skillBaseId, $skillTrefId, $questionId) )
295 $assignment->setQuestionId($questionId);
296 $assignment->setSkillBaseId($skillBaseId);
297 $assignment->setSkillTrefId($skillTrefId);
301 $assignment->saveToDb();
304 $handledSkills[$skillId] = $skill;
308 foreach($assignmentList->getAssignmentsByQuestionId($questionId) as $assignment)
310 if( isset($handledSkills[
"{$assignment->getSkillBaseId()}:{$assignment->getSkillTrefId()}"]) )
315 $assignment->deleteFromDb();
323 $this->ctrl->redirect($this, self::CMD_SHOW_SYNC_ORIGINAL_CONFIRMATION);
327 $this->ctrl->redirect($this, self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
332 $this->ctrl->saveParameter($this,
'question_id');
333 $questionId = (int)
$_GET[
'question_id'];
335 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentList.php';
338 $assignmentList->loadFromDb();
341 $assignmentList->getAssignmentsByQuestionId($questionId)
344 if( !$skillSelectorExplorerGUI->handleCommand() )
346 $tpl =
new ilTemplate(
'tpl.qpl_qst_skl_assign_selection.html',
false,
false,
'Modules/TestQuestionPool');
352 $skillSelectorToolbarGUI->setOpenFormTag(
true);
353 $skillSelectorToolbarGUI->setCloseFormTag(
false);
355 $tpl->setVariable(
'SKILL_SELECTOR_TOOLBAR_TOP', $this->ctrl->getHTML($skillSelectorToolbarGUI));
357 $tpl->setVariable(
'SKILL_SELECTOR_EXPLORER', $this->ctrl->getHTML($skillSelectorExplorerGUI));
359 $skillSelectorToolbarGUI->setOpenFormTag(
false);
360 $skillSelectorToolbarGUI->setCloseFormTag(
true);
362 $tpl->setVariable(
'SKILL_SELECTOR_TOOLBAR_BOTTOM', $this->ctrl->getHTML($skillSelectorToolbarGUI));
364 $this->tpl->setContent(
$tpl->get());
376 if( $questionGUI === null )
378 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
382 if( $assignment === null )
385 (
int)
$_GET[
'question_id'], (
int)$_GET[
'skill_base_id'], (
int)$_GET[
'skill_tref_id']
398 $this->tpl->setContent( $this->ctrl->getHTML($form).
'<br />'.$questionPageHTML.$lacLegendHTML );
403 $questionId = (int)
$_GET[
'question_id'];
407 require_once
'Modules/TestQuestionPool/classes/class.assQuestionGUI.php';
411 (
int)
$_GET[
'question_id'], (
int)$_GET[
'skill_base_id'], (
int)$_GET[
'skill_tref_id']
416 $form->setValuesByPost();
418 if( !$form->checkInput() )
425 if($form->getItemByPostVar(
'eval_mode'))
427 $assignment->setEvalMode($form->getItemByPostVar(
'eval_mode')->getValue());
434 if($assignment->hasEvalModeBySolution())
436 $solCmpExprInput = $form->getItemByPostVar(
'solution_compare_expressions');
446 $assignment->initSolutionComparisonExpressionList();
447 $assignment->getSolutionComparisonExpressionList()->reset();
449 foreach($solCmpExprInput->getValues() as $expression)
451 $assignment->getSolutionComparisonExpressionList()->add($expression);
456 $assignment->setSkillPoints($form->getItemByPostVar(
'q_res_skill_points')->getValue());
459 $assignment->saveToDb();
466 $this->ctrl->redirect($this, self::CMD_SHOW_SYNC_ORIGINAL_CONFIRMATION);
470 $this->ctrl->redirect($this, self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
475 require_once
'Modules/TestQuestionPool/classes/forms/class.ilAssQuestionSkillAssignmentPropertyFormGUI.php';
478 $form->setQuestion($question);
479 $form->setAssignment($assignment);
494 $assignmentList->loadFromDb();
495 $assignmentList->loadAdditionalSkillData();
496 $table->setSkillQuestionAssignmentList($assignmentList);
499 $this->questionList->getQuestionDataArray()
502 $this->tpl->setContent($this->ctrl->getHTML($table));
507 $questionData = $this->questionList->getDataArrayForQuestionId($questionId);
509 if( !$questionData[
'original_id'] )
514 require_once
'Modules/TestQuestionPool/classes/class.assQuestion.php';
524 if( $this->access->checkAccess(
'write',
'', $parentRefId) )
535 $questionId = (int)
$_GET[
'question_id'];
537 require_once
'Services/Utilities/classes/class.ilConfirmationGUI.php';
540 $confirmation->setHeaderText($this->lng->txt(
'qpl_sync_quest_skl_assigns_confirmation'));
542 $confirmation->setFormAction($this->ctrl->getFormAction($this));
543 $confirmation->addHiddenItem(
'question_id', $questionId);
544 $confirmation->setConfirm($this->lng->txt(
'yes'), self::CMD_SYNC_ORIGINAL);
545 $confirmation->setCancel($this->lng->txt(
'no'), self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
547 $this->tpl->setContent($this->ctrl->getHTML($confirmation));
552 $questionId = (int)
$_POST[
'question_id'];
558 $question->syncSkillAssignments($question->getObjId(), $question->getId(),
559 $question->lookupParentObjId($question->getOriginalId()), $question->getOriginalId()
565 $this->ctrl->redirect($this, self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
570 require_once
'Modules/TestQuestionPool/classes/tables/class.ilAssQuestionSkillAssignmentsTableGUI.php';
580 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignmentList.php';
584 return $assignmentList;
592 require_once
'Services/Skill/classes/class.ilSkillSelectorGUI.php';
595 $this, self::CMD_SHOW_SKILL_SELECT, $this, self::CMD_UPDATE_SKILL_QUEST_ASSIGNS, self::PARAM_SKILL_SELECTION
598 $skillSelectorExplorerGUI->setSelectMode(self::PARAM_SKILL_SELECTION,
true);
599 $skillSelectorExplorerGUI->setNodeOnclickEnabled(
false);
604 foreach($assignments as $assignment)
606 $id =
"{$assignment->getSkillBaseId()}:{$assignment->getSkillTrefId()}";
608 $skillSelectorExplorerGUI->setSkillSelected($id);
611 return $skillSelectorExplorerGUI;
619 require_once
'Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php';
623 $skillSelectorToolbarGUI->setFormAction($this->ctrl->getFormAction($this));
624 $skillSelectorToolbarGUI->addFormButton($this->lng->txt(
'qpl_save_skill_assigns_update'), self::CMD_UPDATE_SKILL_QUEST_ASSIGNS);
625 $skillSelectorToolbarGUI->addFormButton($this->lng->txt(
'qpl_cancel_skill_assigns_update'), self::CMD_SHOW_SKILL_QUEST_ASSIGNS);
627 return $skillSelectorToolbarGUI;
632 $this->tpl->addCss(
'Services/COPage/css/content.css');
634 include_once(
"./Modules/TestQuestionPool/classes/class.ilAssQuestionPageGUI.php");
638 $pageGUI->setRenderPageContainer(
true);
640 $pageGUI->setPresentationTitle($questionGUI->object->getTitle());
642 $questionGUI->object->setShuffle(
false);
643 $questionHTML = $questionGUI->
getSolutionOutput(0, 0,
false,
false,
true,
false,
true,
false,
true);
644 $pageGUI->setQuestionHTML(array($questionGUI->object->getId() => $questionHTML));
646 $pageHTML = $pageGUI->presentation();
647 $pageHTML = preg_replace(
"/src=\"\\.\\//ims",
"src=\"" . ILIAS_HTTP_PATH .
"/", $pageHTML);
657 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignment.php';
662 $assignment->setQuestionId($questionId);
663 $assignment->setSkillBaseId($skillBaseId);
664 $assignment->setSkillTrefId($skillTrefId);
666 $assignment->loadFromDb();
667 $assignment->loadAdditionalSkillData();
674 return $this->questionList->isInList($questionId);
681 foreach($input->
getValues() as $expression)
687 $errors[] =
"{$this->lng->txt('ass_lac_expression')} {$expression->getOrderIndex()}: {$result}";
693 $alert = $this->lng->txt(
'ass_lac_validation_error');
694 $alert .=
'<br />'.implode(
'<br />',
$errors);
704 require_once
'Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacConditionParser.php';
705 require_once
'Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacQuestionProvider.php';
706 require_once
'Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacCompositeValidator.php';
711 $conditionComposite = $conditionParser->parse($expression->
getExpression());
713 $questionProvider->setQuestion($question);
716 $conditionValidator->validate($conditionComposite);
722 return $e->getFormAlert($this->lng);
733 $this->ctrl->saveParameter($this,
'question_id');
734 $this->ctrl->saveParameter($this,
'skill_base_id');
735 $this->ctrl->saveParameter($this,
'skill_tref_id');
740 $orderedQuestionsData = array();
746 $orderedQuestionsData[$questionId] = $questionData[$questionId];
749 return $orderedQuestionsData;
752 foreach($questionData as $questionId =>
$data)
754 $orderedQuestionsData[$questionId] =
$data[
'title'];
759 foreach($orderedQuestionsData as $questionId => $questionTitle)
761 $orderedQuestionsData[$questionId] = $questionData[$questionId];
764 return $orderedQuestionsData;
777 $questionData = $this->questionList->getDataArrayForQuestionId($questionId);
779 return sprintf($this->lng->txt(
'qpl_qst_skl_selection_for_question_header'), $questionData[
'title']);
784 $flags = SORT_REGULAR;
786 if( defined(
'SORT_NATURAL') )
788 $flags = SORT_NATURAL;
790 elseif( defined(
'SORT_STRING') )
792 $flags = SORT_STRING;
795 if( defined(
'SORT_FLAG_CASE') )
797 $flags = $flags | SORT_FLAG_CASE;
800 asort($array, $flags);
820 require_once
'Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/class.ilAssLacLegendGUI.php';
822 $legend->setQuestionOBJ($questionOBJ);
824 $lacLegendHTML = $this->ctrl->getHTML(
$legend);
825 return $lacLegendHTML;
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
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)
This class provides processing control methods.
const CMD_UPDATE_SKILL_QUEST_ASSIGNS
Class iQuestionCondition.
const CMD_SHOW_SKILL_SELECT
setAssignmentConfigurationHintMessage($assignmentConfigurationHintMessage)
sortAlphabetically($array)
setQuestionContainerId($questionContainerId)
validateSolutionCompareExpression(ilAssQuestionSolutionComparisonExpression $expression, iQuestionCondition $question)
const PARAM_SKILL_SELECTION
saveSkillQuestionAssignmentPropertiesFormCmd()
__construct(ilCtrl $ctrl, ilAccessHandler $access, ilTemplate $tpl, ilLanguage $lng, ilDB $db)
keepAssignmentParameters()
Abstract basic class which is to be extended by the concrete assessment question type classes...
isSyncOriginalPossibleAndAllowed($questionId)
doesObjectTypeMatch($objectId)
isAssignmentEditingEnabled()
setAssignmentEditingEnabled($assignmentEditingEnabled)
getSkillSelectorHeader($questionId)
$assignmentConfigurationHintMessage
showSyncOriginalConfirmationCmd()
const CMD_SAVE_SKILL_QUEST_ASSIGN_PROPERTIES_FORM
$assignmentEditingEnabled
const CMD_SAVE_SKILL_POINTS
static lookupParentObjId($questionId)
ilDB $ilDB
static _getAllReferences($a_id)
get all reference ids of object
buildSkillQuestionAssignmentPropertiesForm(assQuestion $question, ilAssQuestionSkillAssignment $assignment)
showSkillQuestionAssignmentsCmd()
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
Class CompositeValidator.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
buildQuestionSkillAssignment($questionId, $skillBaseId, $skillTrefId)
special template class to simplify handling of ITX/PEAR
setQuestionList($questionList)
& _getQuestionGUI($question_type, $question_id=-1)
Creates a question gui representation and returns the alias to the question gui note: please do not u...
setQuestionOrderSequence($questionOrderSequence)
Basic GUI class for assessment questions.
buildLacLegendHTML(assQuestion $questionOBJ, ilAssQuestionSkillAssignment $assignment)
static _lookupType($a_id, $a_reference=false)
lookup object type
static _instantiateQuestion($question_id)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
getAssignmentConfigurationHintMessage()
checkSolutionCompareExpressionInput(ilLogicalAnswerComparisonExpressionInputGUI $input, assQuestion $question)
getQuestionOrderSequence()
isAvoidManipulationRedirectRequired($command)
Explorer class that works on tree objects (Services/Tree)
const DEFAULT_COMPETENCE_POINTS
Class ilParserQuestionProvider.
buildSkillSelectorExplorerGUI($assignments)
buildSkillSelectorToolbarGUI()
isTestQuestion($questionId)
showSkillQuestionAssignmentPropertiesFormCmd(assQuestionGUI $questionGUI=null, ilAssQuestionSkillAssignment $assignment=null, ilPropertyFormGUI $form=null)
const CMD_SHOW_SYNC_ORIGINAL_CONFIRMATION
buildSkillQuestionAssignmentList()
const EVAL_MODE_BY_QUESTION_RESULT
handleAssignmentConfigurationHintMessage()
updateSkillQuestionAssignmentsCmd()
const CMD_SHOW_SKILL_QUEST_ASSIGNS
orderQuestionData($questionData)
buildQuestionPage(assQuestionGUI $questionGUI)
const CMD_SHOW_SKILL_QUEST_ASSIGN_PROPERTIES_FORM
setOutputMode($a_mode=IL_PAGE_PRESENTATION)
Set Output Mode.
Confirmation screen class.