1<?php 2 /* 3 +----------------------------------------------------------------------------+ 4 | ILIAS open source | 5 +----------------------------------------------------------------------------+ 6 | Copyright (c) 1998-2001 ILIAS open source, University of Cologne | 7 | | 8 | This program is free software; you can redistribute it and/or | 9 | modify it under the terms of the GNU General Public License | 10 | as published by the Free Software Foundation; either version 2 | 11 | of the License, or (at your option) any later version. | 12 | | 13 | This program is distributed in the hope that it will be useful, | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | GNU General Public License for more details. | 17 | | 18 | You should have received a copy of the GNU General Public License | 19 | along with this program; if not, write to the Free Software | 20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 21 +----------------------------------------------------------------------------+ 22*/ 23 24include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php"; 25 26/** 27* Metric survey question GUI representation 28* 29* The SurveyMetricQuestionGUI class encapsulates the GUI representation 30* for metric survey question types. 31* 32* @author Helmut Schottmüller <helmut.schottmueller@mac.com> 33* @version $Id$ 34* @extends SurveyQuestionGUI 35* @ingroup ModulesSurveyQuestionPool 36*/ 37class SurveyMetricQuestionGUI extends SurveyQuestionGUI 38{ 39 protected function initObject() 40 { 41 include_once "./Modules/SurveyQuestionPool/classes/class.SurveyMetricQuestion.php"; 42 $this->object = new SurveyMetricQuestion(); 43 } 44 45 46 // 47 // EDITOR 48 // 49 50 public function setQuestionTabs() 51 { 52 $this->setQuestionTabsForClass("surveymetricquestiongui"); 53 } 54 55 protected function addFieldsToEditForm(ilPropertyFormGUI $a_form) 56 { 57 // subtype 58 $subtype = new ilRadioGroupInputGUI($this->lng->txt("subtype"), "type"); 59 $subtype->setRequired(true); 60 $a_form->addItem($subtype); 61 62 // #10652 63 $opt = new ilRadioOption($this->lng->txt('non_ratio'), SurveyMetricQuestion::SUBTYPE_NON_RATIO, $this->lng->txt("metric_subtype_description_interval")); 64 $subtype->addOption($opt); 65 66 // minimum value 67 $minimum1 = new ilNumberInputGUI($this->lng->txt("minimum"), "minimum3"); 68 $minimum1->setRequired(false); 69 $minimum1->setSize(6); 70 $opt->addSubItem($minimum1); 71 72 // maximum value 73 $maximum1 = new ilNumberInputGUI($this->lng->txt("maximum"), "maximum3"); 74 $maximum1->setRequired(false); 75 $maximum1->setSize(6); 76 $opt->addSubItem($maximum1); 77 78 $opt = new ilRadioOption($this->lng->txt('ratio_non_absolute'), SurveyMetricQuestion::SUBTYPE_RATIO_NON_ABSOLUTE, $this->lng->txt("metric_subtype_description_rationonabsolute")); 79 $subtype->addOption($opt); 80 81 // minimum value 82 $minimum2 = new ilNumberInputGUI($this->lng->txt("minimum"), "minimum4"); 83 $minimum2->setRequired(false); 84 $minimum2->setSize(6); 85 $minimum2->setMinValue(0); 86 $opt->addSubItem($minimum2); 87 88 // maximum value 89 $maximum2 = new ilNumberInputGUI($this->lng->txt("maximum"), "maximum4"); 90 $maximum2->setRequired(false); 91 $maximum2->setSize(6); 92 $opt->addSubItem($maximum2); 93 94 $opt = new ilRadioOption($this->lng->txt('ratio_absolute'), SurveyMetricQuestion::SUBTYPE_RATIO_ABSOLUTE, $this->lng->txt("metric_subtype_description_ratioabsolute")); 95 $subtype->addOption($opt); 96 97 // minimum value 98 $minimum3 = new ilNumberInputGUI($this->lng->txt("minimum"), "minimum5"); 99 $minimum3->setRequired(false); 100 $minimum3->setSize(6); 101 $minimum3->setMinValue(0); 102 $minimum3->setDecimals(0); 103 $opt->addSubItem($minimum3); 104 105 // maximum value 106 $maximum3 = new ilNumberInputGUI($this->lng->txt("maximum"), "maximum5"); 107 $maximum3->setDecimals(0); 108 $maximum3->setRequired(false); 109 $maximum3->setSize(6); 110 $opt->addSubItem($maximum3); 111 112 113 // values 114 $subtype->setValue($this->object->getSubtype()); 115 116 switch ($this->object->getSubtype()) { 117 case SurveyMetricQuestion::SUBTYPE_NON_RATIO: 118 $minimum1->setValue($this->object->getMinimum()); 119 $maximum1->setValue($this->object->getMaximum()); 120 break; 121 122 case SurveyMetricQuestion::SUBTYPE_RATIO_NON_ABSOLUTE: 123 $minimum2->setValue($this->object->getMinimum()); 124 $maximum2->setValue($this->object->getMaximum()); 125 break; 126 127 case SurveyMetricQuestion::SUBTYPE_RATIO_ABSOLUTE: 128 $minimum3->setValue($this->object->getMinimum()); 129 $maximum3->setValue($this->object->getMaximum()); 130 break; 131 } 132 } 133 134 protected function importEditFormValues(ilPropertyFormGUI $a_form) 135 { 136 $type = (int) $a_form->getInput("type"); 137 $this->object->setOrientation($a_form->getInput("orientation")); 138 $this->object->setSubtype($type); 139 $this->object->setMinimum($a_form->getInput("minimum" . $type)); 140 $this->object->setMaximum($a_form->getInput("maximum" . $type)); 141 } 142 143 public function getParsedAnswers(array $a_working_data = null, $a_only_user_anwers = false) 144 { 145 $res = array(); 146 147 if (is_array($a_working_data)) { 148 $res[] = array("value" => $a_working_data[0]["value"]); 149 } 150 151 return $res; 152 } 153 154 /** 155 * Creates a HTML representation of the question 156 * 157 * Creates a HTML representation of the question 158 * 159 * @access private 160 */ 161 public function getPrintView($question_title = 1, $show_questiontext = 1, $survey_id = null, array $a_working_data = null) 162 { 163 $user_answer = null; 164 if ($a_working_data) { 165 $user_answer = $this->getParsedAnswers($a_working_data); 166 $user_answer = $user_answer[0]["value"]; 167 } 168 169 $template = new ilTemplate("tpl.il_svy_qpl_metric_printview.html", true, true, "Modules/SurveyQuestionPool"); 170 $template->setVariable("MIN_MAX", $this->object->getMinMaxText()); 171 172 if ($show_questiontext) { 173 $this->outQuestionText($template); 174 } 175 if ($question_title) { 176 $template->setVariable("QUESTION_TITLE", $this->getPrintViewQuestionTitle($question_title)); 177 } 178 $template->setVariable("TEXT_ANSWER", $this->lng->txt("answer")); 179 $template->setVariable("QUESTION_ID", $this->object->getId()); 180 181 if (!is_array($a_working_data) || !trim($user_answer)) { 182 $solution_text = ""; 183 $len = 10; 184 for ($i = 0; $i < 10; $i++) { 185 $solution_text .= " "; 186 } 187 } else { 188 $solution_text = $user_answer; 189 } 190 $template->setVariable("TEXT_SOLUTION", $solution_text); 191 192 $template->parseCurrentBlock(); 193 return $template->get(); 194 } 195 196 197 // 198 // EXECUTION 199 // 200 201 /** 202 * Creates the question output form for the learner 203 * 204 * Creates the question output form for the learner 205 * 206 * @access public 207 */ 208 public function getWorkingForm($working_data = "", $question_title = 1, $show_questiontext = 1, $error_message = "", $survey_id = null) 209 { 210 $template = new ilTemplate("tpl.il_svy_out_metric.html", true, true, "Modules/SurveyQuestionPool"); 211 $template->setCurrentBlock("material_metric"); 212 $template->setVariable("TEXT_MATERIAL", $this->getMaterialOutput()); 213 $template->parseCurrentBlock(); 214 $template->setVariable("MIN_MAX", $this->object->getMinMaxText()); 215 /*if (strlen($this->object->getMinimum())) 216 { 217 $template->setCurrentBlock("minimum"); 218 $template->setVariable("TEXT_MINIMUM", $this->lng->txt("minimum")); 219 $template->setVariable("VALUE_MINIMUM", $this->object->getMinimum()); 220 $template->parseCurrentBlock(); 221 } 222 if (strlen($this->object->getMaximum())) 223 { 224 $template->setCurrentBlock("maximum"); 225 $template->setVariable("TEXT_MAXIMUM", $this->lng->txt("maximum")); 226 $template->setVariable("VALUE_MAXIMUM", $this->object->getMaximum()); 227 $template->parseCurrentBlock(); 228 }*/ 229 230 $template->setVariable("QUESTIONTEXT", $this->object->prepareTextareaOutput($questiontext, true)); 231 if ($show_questiontext) { 232 $this->outQuestionText($template); 233 } 234 if ($question_title) { 235 $template->setVariable("QUESTION_TITLE", $this->object->getTitle()); 236 } 237 $template->setVariable("TEXT_ANSWER", $this->lng->txt("answer")); 238 $template->setVariable("QUESTION_ID", $this->object->getId()); 239 if (is_array($working_data)) { 240 $template->setVariable("VALUE_METRIC", $working_data[0]["value"]); 241 } 242 243 $template->setVariable("INPUT_SIZE", 10); 244 245 if (strcmp($error_message, "") != 0) { 246 $template->setVariable("ERROR_MESSAGE", "<p class=\"warning\">$error_message</p>"); 247 } 248 $template->parseCurrentBlock(); 249 return $template->get(); 250 } 251} 252