ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilTestRandomQuestionSetPoolDefinitionFormGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
5 
17 {
23  public $ctrl = null;
24 
30  public $lng = null;
31 
37  public $testOBJ = null;
38 
44  public $questionSetConfigGUI = null;
45 
51  public $questionSetConfig = null;
52 
53  private $saveCommand = null;
54 
58  private $saveAndNewCommand = null;
59 
61  {
62  parent::__construct();
63 
64  $this->ctrl = $ctrl;
65  $this->lng = $lng;
66  $this->testOBJ = $testOBJ;
67  $this->questionSetConfigGUI = $questionSetConfigGUI;
68  $this->questionSetConfig = $questionSetConfig;
69  }
70 
71  public function setSaveCommand($saveCommand)
72  {
73  $this->saveCommand = $saveCommand;
74  }
75 
76  public function getSaveCommand()
77  {
78  return $this->saveCommand;
79  }
80 
85  {
86  $this->saveAndNewCommand = $saveAndNewCommand;
87  }
88 
92  public function getSaveAndNewCommand()
93  {
95  }
96 
97  public function build(ilTestRandomQuestionSetSourcePoolDefinition $sourcePool, $availableTaxonomyIds)
98  {
99  $this->setFormAction($this->ctrl->getFormAction($this->questionSetConfigGUI));
100 
101  $this->setTitle($this->lng->txt('tst_rnd_quest_set_cfg_pool_form'));
102  $this->setId('tstRndQuestSetCfgPoolForm');
103 
104  $this->addCommandButton(
105  $this->getSaveCommand(),
106  $this->lng->txt('save_and_back')
107  );
108 
109  if (null !== $this->getSaveAndNewCommand()) {
110  $this->addCommandButton(
111  $this->getSaveAndNewCommand(),
112  $this->lng->txt('tst_save_and_create_new_rule')
113  );
114  }
115 
116  $this->addCommandButton(
118  $this->lng->txt('cancel')
119  );
120 
121  $hiddenDefId = new ilHiddenInputGUI('src_pool_def_id');
122  $hiddenDefId->setValue($sourcePool->getId());
123  $this->addItem($hiddenDefId);
124 
125  $hiddenPoolId = new ilHiddenInputGUI('quest_pool_id');
126  $hiddenPoolId->setValue($sourcePool->getPoolId());
127  $this->addItem($hiddenPoolId);
128 
129  $nonEditablePoolLabel = new ilNonEditableValueGUI(
130  $this->lng->txt('tst_inp_source_pool_label'),
131  'quest_pool_label'
132  );
133  $nonEditablePoolLabel->setValue($sourcePool->getPoolInfoLabel($this->lng));
134 
135  $this->addItem($nonEditablePoolLabel);
136 
137 
138  if (count($availableTaxonomyIds)) {
139  // fau: taxFilter/typeFilter - edit multiple taxonomy and node selections
140  require_once 'Services/Taxonomy/classes/class.ilTaxSelectInputGUI.php';
141 
142  // this is needed by ilTaxSelectInputGUI in some cases
143  require_once 'Services/UIComponent/Overlay/classes/class.ilOverlayGUI.php';
144  ilOverlayGUI::initJavaScript();
145 
146  $filter = $sourcePool->getOriginalTaxonomyFilter();
147  foreach ($availableTaxonomyIds as $taxId) {
148  $taxonomy = new ilObjTaxonomy($taxId);
149  $taxLabel = sprintf($this->lng->txt('tst_inp_source_pool_filter_tax_x'), $taxonomy->getTitle());
150 
151  $taxCheckbox = new ilCheckboxInputGUI($taxLabel, "filter_tax_id_$taxId");
152 
153 
154 
155  $this->ctrl->setParameterByClass('iltaxselectinputgui', 'src_pool_def_id', $sourcePool->getId());
156  $this->ctrl->setParameterByClass('iltaxselectinputgui', 'quest_pool_id', $sourcePool->getPoolId());
157  $taxSelect = new ilTaxSelectInputGUI($taxId, "filter_tax_nodes_$taxId", true);
158  $taxSelect->setRequired(true);
159 
160  if (isset($filter[$taxId])) {
161  $taxCheckbox->setChecked(true);
162  $taxSelect->setValue($filter[$taxId]);
163  }
164  $taxCheckbox->addSubItem($taxSelect);
165  $this->addItem($taxCheckbox);
166  }
167 
168  #$taxRadio = new ilRadioGroupInputGUI(
169  # $this->lng->txt('tst_inp_source_pool_filter_tax'), 'filter_tax'
170  #);
171 
172  #$taxRadio->setRequired(true);
173 
174  #$taxRadio->addOption(new ilRadioOption(
175  # $this->lng->txt('tst_inp_source_pool_no_tax_filter'), 0
176  #));
177 
178  #$taxRadio->setValue(0);
179 
180  #require_once 'Services/Taxonomy/classes/class.ilTaxSelectInputGUI.php';
181 
182  #foreach($availableTaxonomyIds as $taxId)
183  #{
184  # $taxonomy = new ilObjTaxonomy($taxId);
185  # $label = sprintf($this->lng->txt('tst_inp_source_pool_filter_tax_x'), $taxonomy->getTitle());
186 
187  # $taxRadioOption = new ilRadioOption($label, $taxId);
188 
189  # $taxRadio->addOption($taxRadioOption);
190 
191  # $taxSelect = new ilTaxSelectInputGUI($taxId, "filter_tax_$taxId", false);
192  # $taxSelect->setRequired(true);
193  # $taxRadioOption->addSubItem($taxSelect);
194 
195  # if( $taxId == $sourcePool->getOriginalFilterTaxId() )
196  # {
197  # $taxRadio->setValue( $sourcePool->getOriginalFilterTaxId() );
198  # $taxSelect->setValue( $sourcePool->getOriginalFilterTaxNodeId() );
199  # }
200  #}
201 
202  #$this->addItem($taxRadio);
203  // fau.
204  } else {
205  $hiddenNoTax = new ilHiddenInputGUI('filter_tax');
206  $hiddenNoTax->setValue(0);
207  $this->addItem($hiddenNoTax);
208 
209  $nonEditableNoTax = new ilNonEditableValueGUI(
210  $this->lng->txt('tst_inp_source_pool_filter_tax'),
211  'no_tax_label'
212  );
213  $nonEditableNoTax->setValue($this->lng->txt('tst_inp_no_available_tax_hint'));
214  $this->addItem($nonEditableNoTax);
215  }
216 
217  // fau: taxFilter/typeFilter - show type filter selection
218  $typeFilterOptions = array();
219  require_once("./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php");
220  foreach (ilObjQuestionPool::_getQuestionTypes(true) as $translation => $data) {
221  $typeFilterOptions[$data['question_type_id']] = $translation;
222  }
223  $filterIds = $sourcePool->getTypeFilter();
224  $typeCheckbox = new ilCheckboxInputGUI($this->lng->txt('tst_filter_question_type_enabled'), 'filter_type_enabled');
225  $typeCheckbox->setChecked(!empty($filterIds));
226  $typeFilter = new ilSelectInputGUI($this->lng->txt('tst_filter_question_type'), 'filter_type');
227  $typeFilter->setRequired(true);
228  $typeFilter->setMulti(true);
229  $typeFilter->setOptions($typeFilterOptions);
230  $typeFilter->setValue($filterIds);
231  $typeCheckbox->addSubItem($typeFilter);
232  $this->addItem($typeCheckbox);
233  // fau.
234 
235  if ($this->questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
236  $questionAmountPerSourcePool = new ilNumberInputGUI(
237  $this->lng->txt('tst_inp_quest_amount_per_source_pool'),
238  'question_amount_per_pool'
239  );
240 
241  $questionAmountPerSourcePool->setRequired(true);
242  $questionAmountPerSourcePool->allowDecimals(false);
243  $questionAmountPerSourcePool->setMinValue(0);
244  $questionAmountPerSourcePool->setMinvalueShouldBeGreater(true);
245  $questionAmountPerSourcePool->setSize(4);
246 
247  if ($sourcePool->getQuestionAmount()) {
248  $questionAmountPerSourcePool->setValue($sourcePool->getQuestionAmount());
249  }
250 
251  $this->addItem($questionAmountPerSourcePool);
252  }
253  }
254 
255  public function applySubmit(ilTestRandomQuestionSetSourcePoolDefinition $sourcePoolDefinition, $availableTaxonomyIds)
256  {
257  // fau: taxFilter/typeFilter - submit multiple taxonomy and node selections - submit type selections
258  $filter = array();
259  foreach ($availableTaxonomyIds as $taxId) {
260  if ($this->getItemByPostVar("filter_tax_id_$taxId")->getChecked()) {
261  $nodeIds = (array) $this->getItemByPostVar("filter_tax_nodes_$taxId")->getValue();
262  if (!empty($nodeIds)) {
263  foreach ($nodeIds as $nodeId) {
264  $filter[(int) $taxId][] = (int) $nodeId;
265  }
266  }
267  }
268  }
269  $sourcePoolDefinition->setOriginalTaxonomyFilter($filter);
270 
271  #switch( true )
272  #{
273  # case $this->getItemByPostVar('source_pool_filter_tax') === null:
274 
275  # case !in_array($this->getItemByPostVar('filter_tax')->getValue(), $availableTaxonomyIds):
276 
277  # $sourcePoolDefinition->setOriginalFilterTaxId(null);
278  # $sourcePoolDefinition->setOriginalFilterTaxNodeId(null);
279  # break;
280 
281  # default:
282 
283  # $taxId = $this->getItemByPostVar('filter_tax')->getValue();
284 
285  # $sourcePoolDefinition->setOriginalFilterTaxId( $taxId );
286 
287  # $sourcePoolDefinition->setOriginalFilterTaxNodeId( $this->getItemByPostVar("filter_tax_$taxId")->getValue() );
288  #}
289 
290  $filter = array();
291  if ($this->getItemByPostVar("filter_type_enabled")->getChecked()) {
292  $filter = $this->getItemByPostVar("filter_type")->getMultiValues();
293  }
294  $sourcePoolDefinition->setTypeFilter($filter);
295  // fau.
296 
297  if ($this->questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
298  $sourcePoolDefinition->setQuestionAmount($this->getItemByPostVar('question_amount_per_pool')->getValue());
299  }
300  }
301 }
This class provides processing control methods.
build(ilTestRandomQuestionSetSourcePoolDefinition $sourcePool, $availableTaxonomyIds)
setOriginalTaxonomyFilter($filter=array())
set the original taxonomy filter condition
Select taxonomy nodes input GUI.
getItemByPostVar($a_post_var)
Get Item by POST variable.
setId($a_id)
Set Id.
This class represents a selection list property in a property form.
This class represents a property form user interface.
__construct(ilCtrl $ctrl, ilLanguage $lng, ilObjTest $testOBJ, ilTestRandomQuestionSetConfigGUI $questionSetConfigGUI, ilTestRandomQuestionSetConfig $questionSetConfig)
This class represents a checkbox property in a property form.
setFormAction($a_formaction)
Set FormAction.
addItem($a_item)
Add Item (Property, SectionHeader).
setChecked($a_checked)
Set Checked.
This class represents a hidden form property in a property form.
setTitle($a_title)
Set Title.
This class represents a number property in a property form.
addCommandButton($a_cmd, $a_text, $a_id="")
Add Command button.
This class represents a non editable value in a property form.
applySubmit(ilTestRandomQuestionSetSourcePoolDefinition $sourcePoolDefinition, $availableTaxonomyIds)
language handling
setRequired($a_required)
Set Required.
static _getQuestionTypes($all_tags=false, $fixOrder=false, $withDeprecatedTypes=true)
$data
Definition: bench.php:6