ILIAS  release_8 Revision v8.24
class.ilAssQuestionHintsTableGUI.php
Go to the documentation of this file.
1<?php
2
28{
33 public const INDEX_TO_POSITION_FACTOR = 10;
34
38 public const TBL_MODE_TESTOUTPUT = '1';
39 public const TBL_MODE_ADMINISTRATION = '2';
40
47 private $questionOBJ = null;
48
55 private $tableMode = null;
56
57 private $hintOrderingClipboard = null;
58
70 public function __construct(
72 ilAssQuestionHintList $questionHintList,
74 $parentCmd,
75 $tableMode = self::TBL_MODE_TESTOUTPUT,
77 ) {
78 global $DIC;
79 $ilCtrl = $DIC['ilCtrl'];
80 $lng = $DIC['lng'];
81
82 $this->questionOBJ = $questionOBJ;
83 $this->tableMode = $tableMode;
84 $this->hintOrderingClipboard = $hintOrderingClipboard;
85
86 $this->setPrefix('tsthints' . $tableMode);
87 $this->setId('tsthints' . $tableMode);
88
89 parent::__construct($parentGUI, $parentCmd);
90
91 $this->setTitle(sprintf($lng->txt('tst_question_hints_table_header'), $questionOBJ->getTitleForHTMLOutput()));
92 $this->setNoEntriesText($lng->txt('tst_question_hints_table_no_items'));
93
94 // we don't take care about offset/limit values, so this avoids segmentation in general
95 // --> required for ordering via clipboard feature
96 $this->setExternalSegmentation(true);
97
98 $tableData = $questionHintList->getTableData();
99
100 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
101 require_once 'Modules/TestQuestionPool/classes/class.ilAssHintPageGUI.php';
102
103 foreach ($tableData as $key => $data) {
104 $this->questionOBJ->ensureHintPageObjectExists($data['hint_id']);
105 $pageObjectGUI = new ilAssHintPageGUI($data['hint_id']);
106 $pageObjectGUI->setOutputMode("presentation");
107 $tableData[$key]['hint_text'] = $pageObjectGUI->presentation();
108 }
109 }
110
111 $this->setData($tableData);
112
113 if ($this->tableMode == self::TBL_MODE_ADMINISTRATION) {
114 $this->setRowTemplate('tpl.tst_question_hints_administration_table_row.html', 'Modules/TestQuestionPool');
115
116 $this->setSelectAllCheckbox('hint_ids[]');
117
118 $rowCount = count($tableData);
119 $this->initAdministrationColumns($rowCount);
120 $this->initAdministrationCommands($rowCount);
121 } else {
122 $this->setRowTemplate('tpl.tst_question_hints_testoutput_table_row.html', 'Modules/TestQuestionPool');
123
124 $this->initTestoutputColumns();
125 $this->initTestoutputCommands();
126 }
127 }
128
138 private function initAdministrationCommands($rowCount): void
139 {
140 global $DIC;
141 $ilCtrl = $DIC['ilCtrl'];
142 $lng = $DIC['lng'];
143
144 $this->setFormAction($ilCtrl->getFormAction($this->parent_obj));
145
146 if ($this->hintOrderingClipboard->hasStored()) {
147 $this->addMultiCommand(
149 $lng->txt('tst_questions_hints_table_multicmd_paste_hint_before')
150 );
151
152 $this->addMultiCommand(
154 $lng->txt('tst_questions_hints_table_multicmd_paste_hint_after')
155 );
156 } elseif ($rowCount > 0) {
157 $this->addMultiCommand(
159 $lng->txt('tst_questions_hints_table_multicmd_delete_hint')
160 );
161
162 if ($rowCount > 1) {
163 $this->addMultiCommand(
165 $lng->txt('tst_questions_hints_table_multicmd_cut_hint')
166 );
167 }
168
169 $this->addCommandButton(
171 $lng->txt('tst_questions_hints_table_cmd_save_order')
172 );
173 }
174 }
175
184 private function initTestoutputCommands(): void
185 {
186 if ($this->parent_obj instanceof ilAssQuestionHintsGUI) {
187 return;
188 }
189
190 global $DIC;
191 $ilCtrl = $DIC['ilCtrl'];
192 $lng = $DIC['lng'];
193
194 $this->setFormAction($ilCtrl->getFormAction($this->parent_obj));
195
196 $this->addCommandButton(
198 $lng->txt('tst_question_hints_back_to_question')
199 );
200 }
201
210 private function initAdministrationColumns($rowCount): void
211 {
212 global $DIC;
213 $lng = $DIC['lng'];
214
215 $this->addColumn('', '', '30', true);
216
217 $this->addColumn($lng->txt('tst_question_hints_table_column_hint_order'), 'hint_index', '60');
218 $this->addColumn($lng->txt('tst_question_hints_table_column_hint_text'), 'hint_text');
219 $this->addColumn($lng->txt('tst_question_hints_table_column_hint_points'), 'hint_points', '250');
220
221 $this->addColumn('', '', '100');
222
223 $this->setDefaultOrderField("hint_index");
224 $this->setDefaultOrderDirection("asc");
225
226 if ($rowCount < 1) {
227 $this->disable('header');
228 }
229 }
230
238 private function initTestoutputColumns(): void
239 {
240 global $DIC;
241 $lng = $DIC['lng'];
242
243 $this->addColumn($lng->txt('tst_question_hints_table_column_hint_index'), 'hint_index', '200');
244 $this->addColumn($lng->txt('tst_question_hints_table_column_hint_text'), 'hint_text');
245 $this->addColumn($lng->txt('tst_question_hints_table_column_hint_points'), 'hint_points', '200');
246
247 $this->setDefaultOrderField("hint_index");
248 $this->setDefaultOrderDirection("asc");
249 }
250
258 public function numericOrdering(string $a_field): bool
259 {
260 switch ($a_field) {
261 case 'hint_index':
262 case 'hint_points':
263
264 return true;
265 }
266
267 return false;
268 }
269
277 public function fillRow(array $a_set): void
278 {
279 global $DIC;
280 $ilCtrl = $DIC['ilCtrl'];
281 $lng = $DIC['lng'];
282
283 if ($this->tableMode == self::TBL_MODE_ADMINISTRATION) {
284 $list = new ilAdvancedSelectionListGUI();
285 $list->setListTitle($lng->txt('actions'));
286 $list->setId("advsl_hint_{$a_set['hint_id']}_actions");
287
288 if ($this->questionOBJ->isAdditionalContentEditingModePageObject()) {
289 $editPointsHref = $ilCtrl->getLinkTargetByClass('ilAssQuestionHintGUI', ilAssQuestionHintGUI::CMD_SHOW_FORM);
290 $editPointsHref = ilUtil::appendUrlParameterString($editPointsHref, "hint_id={$a_set['hint_id']}", true);
291 $list->addItem($lng->txt('tst_question_hints_table_link_edit_hint_points'), '', $editPointsHref);
292
293 $editPageHref = $ilCtrl->getLinkTargetByClass('ilasshintpagegui', 'edit');
294 $editPageHref = ilUtil::appendUrlParameterString($editPageHref, "hint_id={$a_set['hint_id']}", true);
295 $list->addItem($lng->txt('tst_question_hints_table_link_edit_hint_page'), '', $editPageHref);
296 } else {
297 $editHref = $ilCtrl->getLinkTargetByClass('ilAssQuestionHintGUI', ilAssQuestionHintGUI::CMD_SHOW_FORM);
298 $editHref = ilUtil::appendUrlParameterString($editHref, "hint_id={$a_set['hint_id']}", true);
299 $list->addItem($lng->txt('tst_question_hints_table_link_edit_hint'), '', $editHref);
300 }
301
302 $deleteHref = $ilCtrl->getLinkTarget($this->parent_obj, ilAssQuestionHintsGUI::CMD_CONFIRM_DELETE);
303 $deleteHref = ilUtil::appendUrlParameterString($deleteHref, "hint_id={$a_set['hint_id']}", true);
304 $list->addItem($lng->txt('tst_question_hints_table_link_delete_hint'), '', $deleteHref);
305
306 $this->tpl->setVariable('ACTIONS', $list->getHTML());
307
308 $this->tpl->setVariable('HINT_ID', $a_set['hint_id']);
309
310 $hintIndex = $a_set['hint_index'] * self::INDEX_TO_POSITION_FACTOR;
311 } else {
312 $showHref = $this->parent_obj->getHintPresentationLinkTarget($a_set['hint_id']);
313
314 $this->tpl->setVariable('HINT_HREF', $showHref);
315
316 $hintIndex = ilAssQuestionHint::getHintIndexLabel($lng, $a_set['hint_index']);
317 }
318
319 $this->tpl->setVariable('HINT_INDEX', $hintIndex);
320 $txt = ilLegacyFormElementsUtil::prepareTextareaOutput($a_set['hint_text'], true);
321 $this->tpl->setVariable('HINT_TEXT', $txt);
322 $this->tpl->setVariable('HINT_POINTS', $a_set['hint_points']);
323 }
324}
Abstract basic class which is to be extended by the concrete assessment question type classes.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const CMD_SHOW_FORM
command constants
getTableData()
returns an array with data of the hints in this list that is adopted to be used as table gui data
static getHintIndexLabel(ilLanguage $lng, $hintIndex)
initAdministrationColumns($rowCount)
inits the required columns for administration table mode
const TBL_MODE_TESTOUTPUT
the available table modes controlling the tables behaviour
numericOrdering(string $a_field)
returns the fact wether the passed field is to be ordered numerically or not @access public
const INDEX_TO_POSITION_FACTOR
the factor the ordering position value is multiplicated with (so the user gets non decimal gaps for r...
initTestoutputColumns()
inits the required columns for testoutput table mode
__construct(assQuestion $questionOBJ, ilAssQuestionHintList $questionHintList, ilAssQuestionHintAbstractGUI $parentGUI, $parentCmd, $tableMode=self::TBL_MODE_TESTOUTPUT, ilAssQuestionHintsOrderingClipboard $hintOrderingClipboard=null)
Constructor.
fillRow(array $a_set)
renders a table row by filling wor data to table row template @access public
initTestoutputCommands()
inits the required command buttons / multi selection commands for testoutput table mode
initAdministrationCommands($rowCount)
inits the required command buttons / multi selection commands for administration table mode
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
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,...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
setExternalSegmentation(bool $a_val)
addCommandButton(string $a_cmd, string $a_text, string $a_onclick='', string $a_id="", string $a_class="")
addMultiCommand(string $a_cmd, string $a_text)
setPrefix(string $a_prefix)
set prefix for sort and offset fields (if you have two or more tables on a page that you want to sort...
setFormAction(string $a_form_action, bool $a_multipart=false)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
setDefaultOrderField(string $a_defaultorderfield)
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
setNoEntriesText(string $a_text)
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
setId(string $a_val)
setDefaultOrderDirection(string $a_defaultorderdirection)
setData(array $a_data)
Set table data.
ilLanguage $lng
disable(string $a_module_name)
static appendUrlParameterString(string $a_url, string $a_par, bool $xml_style=false)
$txt
Definition: error.php:13
global $DIC
Definition: feed.php:28
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
string $key
Consumer key/client ID value.
Definition: System.php:193