ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilTestManScoringParticipantsBySelectedQuestionAndPassTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Services/Form/classes/class.ilNumberInputGUI.php';
5require_once 'Services/Table/classes/class.ilTable2GUI.php';
6
14{
15 const PARENT_DEFAULT_CMD = 'showManScoringByQuestionParticipantsTable';
16 const PARENT_APPLY_FILTER_CMD = 'applyManScoringByQuestionFilter';
17 const PARENT_RESET_FILTER_CMD = 'resetManScoringByQuestionFilter';
18 const PARENT_SAVE_SCORING_CMD = 'saveManScoringByQuestion';
19
20 private $manPointsPostData = array();
21
22 private $curQuestionMaxPoints = null;
23
27 protected $first_row_rendered = false;
28
29 public function __construct($parentObj)
30 {
31 $this->setFilterCommand(self::PARENT_APPLY_FILTER_CMD);
32 $this->setResetCommand(self::PARENT_RESET_FILTER_CMD);
33
37 global $ilCtrl;
38
39 $this->setId('man_scor_by_qst_' . $parentObj->object->getId());
40
41 parent::__construct($parentObj, self::PARENT_DEFAULT_CMD);
42
43 $this->disable('sort');
44
45 $this->setFormAction($ilCtrl->getFormAction($parentObj, self::PARENT_DEFAULT_CMD));
46
47 $this->setRowTemplate("tpl.il_as_tst_man_scoring_by_question_tblrow.html", "Modules/Test");
48
49 $this->setShowRowsSelector(true);
50
51 $this->addCommandButton(self::PARENT_SAVE_SCORING_CMD, $this->lng->txt('save'));
52
53 $this->initColumns();
54 $this->initFilter();
55 }
56
57 private function initColumns()
58 {
59 $this->addColumn($this->lng->txt('name'), 'lastname', '40%');
60 $this->addColumn($this->lng->txt('tst_reached_points'), 'lastname', '40%');
61 $this->addColumn('', '', '20%');
62 }
63
64 public function initFilter()
65 {
66 $this->setDisableFilterHiding(true);
67
68 include_once 'Services/Form/classes/class.ilSelectInputGUI.php';
69 $available_questions = new ilSelectInputGUI($this->lng->txt('question'), 'question');
70 $select_questions = array();
71 if(!$this->getParentObject()->object->isRandomTest())
72 {
73 $questions = $this->getParentObject()->object->getTestQuestions();
74 }
75 else
76 {
77 $questions = $this->getParentObject()->object->getPotentialRandomTestQuestions();
78 }
80 foreach($questions as $data)
81 {
82 include_once 'Modules/TestQuestionPool/classes/class.assQuestion.php';
84 $type = $info["question_type_fi"];
85 if(in_array($type, $scoring))
86 {
87 $maxpoints = assQuestion::_getMaximumPoints($data["question_id"]);
88 if($maxpoints == 1)
89 {
90 $maxpoints = ' (' . $maxpoints . ' ' . $this->lng->txt('point') . ')';
91 }
92 else
93 {
94 $maxpoints = ' (' . $maxpoints . ' ' . $this->lng->txt('points') . ')';
95 }
96
97 $select_questions[$data["question_id"]] = $data['title'] . $maxpoints. ' ['. $this->lng->txt('question_id_short') . ': ' . $data["question_id"] . ']';
98 }
99 }
100 if(!$select_questions)
101 {
102 $select_questions[0] = $this->lng->txt('tst_no_scorable_qst_available');
103 }
104 $available_questions->setOptions(array('' => $this->lng->txt('please_choose')) + $select_questions);
105 $this->addFilterItem($available_questions);
106 $available_questions->readFromSession();
107 $this->filter['question'] = $available_questions->getValue();
108
109 $pass = new ilSelectInputGUI($this->lng->txt('pass'), 'pass');
110 $passes = array();
111 $max_pass = $this->getParentObject()->object->getMaxPassOfTest();
112 for($i = 1; $i <= $max_pass; $i++)
113 {
114 $passes[$i] = $i;
115 }
116 $pass->setOptions($passes);
117 $this->addFilterItem($pass);
118 $pass->readFromSession();
119 $this->filter['pass'] = $pass->getValue();
120 }
121
127 public function fillRow($row)
128 {
132 global $ilCtrl;
133
134 if(!$this->first_row_rendered)
135 {
136 $this->first_row_rendered = true;
137 $this->tpl->touchBlock('row_js');
138 }
139
140 $this->tpl->setVariable('VAL_NAME', $row['participant']->getName());
141 $reached_points = new ilNumberInputGUI('', 'scoring[' . $row['pass_id'] . '][' . $row['active_id'] . '][' . $row['qst_id'] . ']');
142 $reached_points->allowDecimals(true);
143 $reached_points->setSize(5);
144 if( count($this->manPointsPostData) )
145 {
146 if( $this->isMaxPointsExceededByPostValue($row['pass_id'], $row['active_id'], $row['qst_id']) )
147 {
148 $reached_points->setAlert( sprintf(
149 $this->lng->txt('tst_manscoring_maxpoints_exceeded_input_alert'), $row['maximum_points']
150 ));
151
152 $this->tpl->setCurrentBlock("reached_points_alert");
153 $this->tpl->setVariable("REACHED_POINTS_IMG_ALERT", ilUtil::getImagePath("icon_alert.svg"));
154 $this->tpl->setVariable("REACHED_POINTS_ALT_ALERT", $this->lng->txt("alert"));
155 $this->tpl->setVariable("REACHED_POINTS_TXT_ALERT", $reached_points->getAlert());
156 $this->tpl->parseCurrentBlock();
157 }
158
159 $reached_points->setValue($this->manPointsPostData[$row['pass_id']][$row['active_id']][$row['qst_id']]);
160 }
161 else
162 {
163 $reached_points->setValue($row['reached_points']);
164 }
165 $this->tpl->setVariable('VAL_REACHED_POINTS', $reached_points->render());
166
167 $ilCtrl->setParameter($this->getParentObject(), 'qst_id', $row['qst_id']);
168 $ilCtrl->setParameter($this->getParentObject(), 'active_id', $row['active_id']);
169 $ilCtrl->setParameter($this->getParentObject(), 'pass_id', $row['pass_id']);
170 $this->tpl->setVariable('VAL_LINK_ANSWER', $ilCtrl->getLinkTarget($this->getParentObject(), 'getAnswerDetail', '', true, false));
171 $ilCtrl->setParameter($this->getParentObject(), 'qst_id', '');
172 $ilCtrl->setParameter($this->getParentObject(), 'active_id', '');
173 $ilCtrl->setParameter($this->getParentObject(), 'pass_id', '');
174 $this->tpl->setVariable('VAL_TXT_ANSWER', $this->lng->txt('tst_eval_show_answer'));
175 }
176
177 private function isMaxPointsExceededByPostValue($pass_id, $active_id, $qst_id)
178 {
179 if( !isset($this->manPointsPostData[$pass_id]) )
180 {
181 return false;
182 }
183
184 if( !isset($this->manPointsPostData[$pass_id][$active_id]) )
185 {
186 return false;
187 }
188
189 if( !isset($this->manPointsPostData[$pass_id][$active_id][$qst_id]) )
190 {
191 return false;
192 }
193
194 $submittedPoints = $this->manPointsPostData[$pass_id][$active_id][$qst_id];
195
196 return $submittedPoints > $this->getCurQuestionMaxPoints();
197 }
198
200 {
201 $this->manPointsPostData = $manPointsPostData;
202 }
203
204 public function getCurQuestionMaxPoints()
205 {
207 }
208
210 {
211 $this->curQuestionMaxPoints = $curQuestionMaxPoints;
212 }
213}
_getMaximumPoints($question_id)
Returns the maximum points, a learner can reach answering the question.
& _getQuestionInfo($question_id)
Returns question information from the database.
This class represents a number property in a property form.
_getManualScoring()
Retrieve the manual scoring settings.
This class represents a selection list property in a property form.
Class ilTable2GUI.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
getParentObject()
Get parent object.
fillRow($a_set)
Standard Version of Fill Row.
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
__construct($a_parent_obj, $a_parent_cmd="", $a_template_context="")
Constructor.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setFilterCommand($a_val, $a_caption=null)
Set filter command.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
disable($a_module_name)
diesables particular modules of table
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
$info
Definition: example_052.php:80
global $ilCtrl
Definition: ilias.php:18