1<?php 2 3/* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */ 4 5/** 6 * Metric survey question GUI representation 7 * 8 * The SurveyMetricQuestionGUI class encapsulates the GUI representation 9 * for metric survey question types. 10 * 11 * @author Helmut Schottmüller <helmut.schottmueller@mac.com> 12 */ 13class SurveyMetricQuestionGUI extends SurveyQuestionGUI 14{ 15 protected function initObject() 16 { 17 $this->object = new SurveyMetricQuestion(); 18 } 19 20 21 // 22 // EDITOR 23 // 24 25 public function setQuestionTabs() 26 { 27 $this->setQuestionTabsForClass("surveymetricquestiongui"); 28 } 29 30 protected function addFieldsToEditForm(ilPropertyFormGUI $a_form) 31 { 32 // subtype 33 $subtype = new ilRadioGroupInputGUI($this->lng->txt("subtype"), "type"); 34 $subtype->setRequired(true); 35 $a_form->addItem($subtype); 36 37 // #10652 38 $opt = new ilRadioOption($this->lng->txt('non_ratio'), SurveyMetricQuestion::SUBTYPE_NON_RATIO, $this->lng->txt("metric_subtype_description_interval")); 39 $subtype->addOption($opt); 40 41 // minimum value 42 $minimum1 = new ilNumberInputGUI($this->lng->txt("minimum"), "minimum3"); 43 $minimum1->setRequired(false); 44 $minimum1->setSize(6); 45 $opt->addSubItem($minimum1); 46 47 // maximum value 48 $maximum1 = new ilNumberInputGUI($this->lng->txt("maximum"), "maximum3"); 49 $maximum1->setRequired(false); 50 $maximum1->setSize(6); 51 $opt->addSubItem($maximum1); 52 53 $opt = new ilRadioOption($this->lng->txt('ratio_non_absolute'), SurveyMetricQuestion::SUBTYPE_RATIO_NON_ABSOLUTE, $this->lng->txt("metric_subtype_description_rationonabsolute")); 54 $subtype->addOption($opt); 55 56 // minimum value 57 $minimum2 = new ilNumberInputGUI($this->lng->txt("minimum"), "minimum4"); 58 $minimum2->setRequired(false); 59 $minimum2->setSize(6); 60 $minimum2->setMinValue(0); 61 $opt->addSubItem($minimum2); 62 63 // maximum value 64 $maximum2 = new ilNumberInputGUI($this->lng->txt("maximum"), "maximum4"); 65 $maximum2->setRequired(false); 66 $maximum2->setSize(6); 67 $opt->addSubItem($maximum2); 68 69 $opt = new ilRadioOption($this->lng->txt('ratio_absolute'), SurveyMetricQuestion::SUBTYPE_RATIO_ABSOLUTE, $this->lng->txt("metric_subtype_description_ratioabsolute")); 70 $subtype->addOption($opt); 71 72 // minimum value 73 $minimum3 = new ilNumberInputGUI($this->lng->txt("minimum"), "minimum5"); 74 $minimum3->setRequired(false); 75 $minimum3->setSize(6); 76 $minimum3->setMinValue(0); 77 $minimum3->setDecimals(0); 78 $opt->addSubItem($minimum3); 79 80 // maximum value 81 $maximum3 = new ilNumberInputGUI($this->lng->txt("maximum"), "maximum5"); 82 $maximum3->setDecimals(0); 83 $maximum3->setRequired(false); 84 $maximum3->setSize(6); 85 $opt->addSubItem($maximum3); 86 87 88 // values 89 $subtype->setValue($this->object->getSubtype()); 90 91 switch ($this->object->getSubtype()) { 92 case SurveyMetricQuestion::SUBTYPE_NON_RATIO: 93 $minimum1->setValue($this->object->getMinimum()); 94 $maximum1->setValue($this->object->getMaximum()); 95 break; 96 97 case SurveyMetricQuestion::SUBTYPE_RATIO_NON_ABSOLUTE: 98 $minimum2->setValue($this->object->getMinimum()); 99 $maximum2->setValue($this->object->getMaximum()); 100 break; 101 102 case SurveyMetricQuestion::SUBTYPE_RATIO_ABSOLUTE: 103 $minimum3->setValue($this->object->getMinimum()); 104 $maximum3->setValue($this->object->getMaximum()); 105 break; 106 } 107 } 108 109 protected function importEditFormValues(ilPropertyFormGUI $a_form) 110 { 111 $type = (int) $a_form->getInput("type"); 112 $this->object->setOrientation($a_form->getInput("orientation")); 113 $this->object->setSubtype($type); 114 $this->object->setMinimum($a_form->getInput("minimum" . $type)); 115 $this->object->setMaximum($a_form->getInput("maximum" . $type)); 116 } 117 118 public function getParsedAnswers(array $a_working_data = null, $a_only_user_anwers = false) 119 { 120 $res = array(); 121 122 if (is_array($a_working_data)) { 123 $res[] = array("value" => $a_working_data[0]["value"]); 124 } 125 126 return $res; 127 } 128 129 /** 130 * Creates a HTML representation of the question 131 * 132 * Creates a HTML representation of the question 133 * 134 * @access private 135 */ 136 public function getPrintView($question_title = 1, $show_questiontext = 1, $survey_id = null, array $a_working_data = null) 137 { 138 $user_answer = null; 139 if ($a_working_data) { 140 $user_answer = $this->getParsedAnswers($a_working_data); 141 $user_answer = $user_answer[0]["value"]; 142 } 143 144 $template = new ilTemplate("tpl.il_svy_qpl_metric_printview.html", true, true, "Modules/SurveyQuestionPool"); 145 $template->setVariable("MIN_MAX", $this->object->getMinMaxText()); 146 147 if ($show_questiontext) { 148 $this->outQuestionText($template); 149 } 150 if ($question_title) { 151 $template->setVariable("QUESTION_TITLE", $this->getPrintViewQuestionTitle($question_title)); 152 } 153 $template->setVariable("TEXT_ANSWER", $this->lng->txt("answer")); 154 $template->setVariable("QUESTION_ID", $this->object->getId()); 155 156 if (!is_array($a_working_data) || !trim($user_answer)) { 157 $solution_text = ""; 158 $len = 10; 159 for ($i = 0; $i < 10; $i++) { 160 $solution_text .= " "; 161 } 162 } else { 163 $solution_text = $user_answer; 164 } 165 $template->setVariable("TEXT_SOLUTION", $solution_text); 166 167 $template->parseCurrentBlock(); 168 return $template->get(); 169 } 170 171 172 // 173 // EXECUTION 174 // 175 176 /** 177 * Creates the question output form for the learner 178 * 179 * Creates the question output form for the learner 180 * 181 * @access public 182 */ 183 public function getWorkingForm($working_data = "", $question_title = 1, $show_questiontext = 1, $error_message = "", $survey_id = null) 184 { 185 $template = new ilTemplate("tpl.il_svy_out_metric.html", true, true, "Modules/SurveyQuestionPool"); 186 $template->setCurrentBlock("material_metric"); 187 $template->setVariable("TEXT_MATERIAL", $this->getMaterialOutput()); 188 $template->parseCurrentBlock(); 189 $template->setVariable("MIN_MAX", $this->object->getMinMaxText()); 190 /*if (strlen($this->object->getMinimum())) 191 { 192 $template->setCurrentBlock("minimum"); 193 $template->setVariable("TEXT_MINIMUM", $this->lng->txt("minimum")); 194 $template->setVariable("VALUE_MINIMUM", $this->object->getMinimum()); 195 $template->parseCurrentBlock(); 196 } 197 if (strlen($this->object->getMaximum())) 198 { 199 $template->setCurrentBlock("maximum"); 200 $template->setVariable("TEXT_MAXIMUM", $this->lng->txt("maximum")); 201 $template->setVariable("VALUE_MAXIMUM", $this->object->getMaximum()); 202 $template->parseCurrentBlock(); 203 }*/ 204 205 $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, true)); 206 if ($show_questiontext) { 207 $this->outQuestionText($template); 208 } 209 if ($question_title) { 210 $template->setVariable("QUESTION_TITLE", $this->object->getTitle()); 211 } 212 $template->setVariable("TEXT_ANSWER", $this->lng->txt("answer")); 213 $template->setVariable("QUESTION_ID", $this->object->getId()); 214 if (is_array($working_data)) { 215 $template->setVariable("VALUE_METRIC", $working_data[0]["value"]); 216 } 217 218 $template->setVariable("INPUT_SIZE", 10); 219 220 if (strcmp($error_message, "") != 0) { 221 $template->setVariable("ERROR_MESSAGE", "<p class=\"warning\">$error_message</p>"); 222 } 223 $template->parseCurrentBlock(); 224 return $template->get(); 225 } 226} 227