4 require_once
'./Services/Table/classes/class.ilTable2GUI.php';
5 require_once
'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php';
115 $this->
setId(
'qpl_brows_tabl_' . $this->testOBJ->getId());
122 $this->
setStyle(
'table',
'fullwidth');
124 $this->
addColumn($this->lng->txt(
"tst_question_title"),
'title',
'');
125 $this->
addColumn($this->lng->txt(
"description"),
'description',
'');
126 $this->
addColumn($this->lng->txt(
"tst_question_type"),
'ttype',
'');
127 $this->
addColumn($this->lng->txt(
"author"),
'author',
'');
128 $this->
addColumn($this->lng->txt(
'qst_lifecycle'),
'lifecycle',
'');
129 $this->
addColumn($this->lng->txt(
"create_date"),
'created',
'');
130 $this->
addColumn($this->lng->txt(
"last_update"),
'tstamp',
'');
132 $this->
addColumn($this->lng->txt(
"working_time"),
'working_time',
'');
134 $this->
setRowTemplate(
"tpl.il_as_tst_question_browser_row.html",
"Modules/Test");
142 $this->
enable(
'select_all');
149 $this->writeAccess = $value;
160 $this->
addMultiCommand(self::CMD_INSERT_QUESTIONS, $this->lng->txt(
'insert'));
169 switch ($this->ctrl->getNextClass($this)) {
170 case strtolower(__CLASS__):
173 $cmd = $this->ctrl->getCmd() .
'Cmd';
174 return $this->$cmd();
178 $this->ctrl->setReturn($this, self::CMD_BROWSE_QUESTIONS);
179 return parent::executeCommand();
187 $this->mainTpl->setContent($this->ctrl->getHTML($this));
193 $this->ctrl->redirect($this, self::CMD_BROWSE_QUESTIONS);
199 $this->ctrl->redirect($this, self::CMD_BROWSE_QUESTIONS);
204 $selected_array = (is_array(
$_POST[
'q_id'])) ?
$_POST[
'q_id'] : array();
205 if (!count($selected_array)) {
207 $this->ctrl->redirect($this, self::CMD_BROWSE_QUESTIONS);
210 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
216 foreach ($selected_array as $key => $value) {
217 $last_question_id = $this->testOBJ->insertQuestion($testQuestionSetConfig, $value);
224 $this->testOBJ->saveCompleteStatus($testQuestionSetConfig);
229 ilUtil::sendSuccess($this->lng->txt(
"tst_questions_inserted"),
true);
239 $this->ctrl->saveParameter($this, self::CONTEXT_PARAMETER);
240 if (isset(
$_GET[self::CONTEXT_PARAMETER])) {
242 } elseif (isset(
$_POST[self::CONTEXT_PARAMETER])) {
246 $this->ctrl->saveParameter($this, self::MODE_PARAMETER);
247 if (isset(
$_GET[self::MODE_PARAMETER])) {
249 } elseif (isset(
$_POST[self::MODE_PARAMETER])) {
256 if (isset(
$_POST[self::CONTEXT_PARAMETER])) {
257 return $_POST[self::CONTEXT_PARAMETER];
260 if (isset(
$_GET[self::CONTEXT_PARAMETER])) {
261 return $_GET[self::CONTEXT_PARAMETER];
269 if (isset(
$_POST[self::MODE_PARAMETER])) {
270 return $_POST[self::MODE_PARAMETER];
273 if (isset(
$_GET[self::MODE_PARAMETER])) {
274 return $_GET[self::MODE_PARAMETER];
282 $this->tabs->clearTargets();
283 $this->tabs->clearSubTabs();
285 $this->tabs->setBackTarget(
299 return $this->lng->txt(
'backtocallingtest');
304 return $this->ctrl->getLinkTargetByClass(
313 case self::CONTEXT_LIST_VIEW:
315 return 'ilObjTestGUI';
317 case self::CONTEXT_PAGE_VIEW:
319 return 'ilTestExpressPageObjectGUI';
328 case self::CONTEXT_LIST_VIEW:
332 case self::CONTEXT_PAGE_VIEW:
343 case self::MODE_BROWSE_POOLS:
345 return $this->lng->txt(
'tst_browse_for_qpl_questions');
347 case self::MODE_BROWSE_TESTS:
349 return $this->lng->txt(
'tst_browse_for_tst_questions');
357 return $this->ctrl->getLinkTarget($this, self::CMD_BROWSE_QUESTIONS);
363 include_once(
"./Services/Form/classes/class.ilTextInputGUI.php");
364 $ti =
new ilTextInputGUI($this->lng->txt(
"tst_qbt_filter_question_title"),
"title");
365 $ti->setMaxLength(64);
367 $ti->setValidationRegexp(
'/(^[^%]+$)|(^$)/is');
369 $ti->readFromSession();
370 $this->filter[
"title"] = $ti->getValue();
373 $ti =
new ilTextInputGUI($this->lng->txt(
"description"),
"description");
374 $ti->setMaxLength(64);
376 $ti->setValidationRegexp(
'/(^[^%]+$)|(^$)/is');
378 $ti->readFromSession();
379 $this->filter[
"description"] = $ti->getValue();
383 $ti->setMaxLength(64);
386 $ti->setValidationRegexp(
'/(^[^%]+$)|(^$)/is');
387 $ti->readFromSession();
388 $this->filter[
"author"] = $ti->getValue();
391 $lifecycleOptions = array_merge(
392 array(
'' => $this->lng->txt(
'qst_lifecycle_filter_all')),
395 $lifecycleInp =
new ilSelectInputGUI($this->lng->txt(
'qst_lifecycle'),
'lifecycle');
396 $lifecycleInp->setOptions($lifecycleOptions);
398 $lifecycleInp->readFromSession();
399 $this->filter[
'lifecycle'] = $lifecycleInp->getValue();
402 include_once(
"./Services/Form/classes/class.ilSelectInputGUI.php");
403 include_once(
"./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php");
406 $options[
""] = $this->lng->txt(
'filter_all_question_types');
407 foreach ($types as $translation => $row) {
408 $options[$row[
'type_tag']] = $translation;
412 $si->setOptions($options);
414 $si->readFromSession();
415 $this->filter[
"type"] =
$si->getValue();
419 $ti->setMaxLength(64);
421 $ti->setValidationRegexp(
'/(^[^%]+$)|(^$)/is');
423 $ti->readFromSession();
424 $this->filter[
'parent_title'] = $ti->getValue();
427 require_once
'Services/Form/classes/class.ilRepositorySelectorInputGUI.php';
429 $ri->setHeaderMessage($this->lng->txt(
'question_browse_area_info'));
430 $ri->setClickableTypes(array(
'qpl'));
432 $ri->readFromSession();
433 $this->filter[
'repository_root_node'] = $ri->getValue();
439 case self::MODE_BROWSE_POOLS:
441 return $this->lng->txt(
'qpl');
443 case self::MODE_BROWSE_TESTS:
445 return $this->lng->txt(
'tst');
462 $this->tpl->setVariable(
"QUESTION_ID",
$data[
"question_id"]);
463 $this->tpl->setVariable(
"QUESTION_TITLE",
$data[
"title"]);
464 $this->tpl->setVariable(
"QUESTION_COMMENT",
$data[
"description"]);
465 include_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
467 $this->tpl->setVariable(
"QUESTION_AUTHOR",
$data[
"author"]);
471 $this->tpl->setVariable(
"QUESTION_POOL",
$data[
'parent_title']);
472 $this->tpl->setVariable(
"WORKING_TIME",
$data[
'working_time']);
480 require_once
'Modules/Test/classes/class.ilTestQuestionSetConfigFactory.php';
489 return $testQuestionSetConfigFactory->getQuestionSetConfig();
497 $questionList =
new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin);
500 $questionList->setExcludeQuestionIdsFilter($this->testOBJ->getExistingQuestions());
502 $repositoryRootNode = self::REPOSITORY_ROOT_NODE_ID;
505 if ($item->getValue() !==
false) {
506 switch ($item->getPostVar()) {
514 $questionList->addFieldFilter($item->getPostVar(), $item->getValue());
517 case 'repository_root_node':
519 $repositoryRootNode = $item->getValue();
526 if (!count($parentObjectIds)) {
530 $questionList->setParentObjIdsFilter($parentObjectIds);
532 $questionList->load();
534 return $questionList->getQuestionDataArray();
548 $parents = $this->tree->getSubTree(
549 $this->tree->getNodeData($repositoryRootNode),
554 $parentIds = array();
556 foreach ($parents as $nodeData) {
557 if ($nodeData[
'obj_id'] == $this->testOBJ->getId()) {
561 $parentIds[ $nodeData[
'obj_id'] ] = $nodeData[
'obj_id'];
564 $parentIds = array_map(
'intval', array_values($parentIds));
568 return array_intersect($parentIds, $available_pools);
571 return array_filter($parentIds,
function ($obj_id) {
573 $refId = current($refIds);
574 return $this->access->checkAccess(
'write',
'',
$refId);
getBrowseQuestionsTabUrl()
static _getAvailableQuestionpools($use_object_id=false, $equal_points=false, $could_be_offline=false, $showPath=false, $with_questioncount=false, $permission="read", $usr_id="")
Returns the available question pools for the active user.
__construct(ilCtrl $ctrl, ilGlobalTemplateInterface $mainTpl, ilTabsGUI $tabs, ilLanguage $lng, ilTree $tree, ilDBInterface $db, ilPluginAdmin $pluginAdmin, ilObjTest $testOBJ, ilAccessHandler $access)
ilTestQuestionBrowserTableGUI constructor.
static getInstance($identifier)
This class provides processing control methods.
getTranslatedLifecycle($lifecycle)
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
addHiddenInput($a_name, $a_value)
Add Hidden Input field.
setStyle($a_element, $a_style)
static _needsManualScoring($question_id)
getBrowseQuestionsTabLabel()
const REPOSITORY_ROOT_NODE_ID
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
getQuestionInstanceTypeFilter()
getQuestionParentObjectType()
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
const CMD_BROWSE_QUESTIONS
const QUESTION_INSTANCE_TYPE_DUPLICATES
getParentCmd()
Get parent command.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
static _getAllReferences($a_id)
get all reference ids of object
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
Interface ilAccessHandler.
Administration class for plugins.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
getQuestionParentObjIds($repositoryRootNode)
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
setSelectAllCheckbox($a_select_all_checkbox, $a_select_all_on_top=false)
Set the name of the checkbox that should be toggled with a select all button.
setDisableFilterHiding($a_val=true)
Set disable filter hiding.
addMultiCommand($a_cmd, $a_text)
Add Command button.
enable($a_module_name)
enables particular modules of table
setRowTemplate($a_template, $a_template_dir="")
Set row template.
writeFilterToSession()
Write filter values to session.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setFormName($a_formname="")
Set Form name.
__construct(Container $dic, ilPlugin $plugin)
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.
getFilterItems($a_optionals=false)
Get filter items.
resetFilter()
Reset filter.
static getDraftInstance()
const QUESTION_INSTANCE_TYPE_ORIGINALS
const CMD_INSERT_QUESTIONS
buildTestQuestionSetConfig()
static _getQuestionTypes($all_tags=false, $fixOrder=false, $withDeprecatedTypes=true)
setFilterCommand($a_val, $a_caption=null)
Set filter command.