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 .= "&#160;";
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