ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilSurveyQuestionTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 2010 Leifos, GPL, see docs/LICENSE */
3 
4 include_once("./Services/Table/classes/class.ilTable2GUI.php");
5 
15 {
16  protected $object;
17  protected $read_only;
18 
25  function __construct($a_parent_obj, $a_parent_cmd, ilObjSurvey $a_survey_obj, $a_read_only = false)
26  {
27  global $ilCtrl, $lng;
28 
29  $this->object = $a_survey_obj;
30  $this->read_only = (bool)$a_read_only;
31 
32  parent::__construct($a_parent_obj, $a_parent_cmd);
33 
34  $this->setId("il_svy_qst");
35  $this->setLimit(9999);
36 
37  // $this->setTitle($lng->txt("survey_questions"));
38 
39  if(!$this->read_only)
40  {
41  // command dropdown
42  if(!array_key_exists("move_questions", $_SESSION))
43  {
44  $this->addMultiCommand("createQuestionblock", $lng->txt("define_questionblock"));
45  $this->addMultiCommand("unfoldQuestionblock", $lng->txt("unfold"));
46  $this->addMultiCommand("removeQuestions", $lng->txt("remove_question"));
47  $this->addMultiCommand("moveQuestions", $lng->txt("move"));
48  $this->addMultiCommand("copyQuestionsToPool", $lng->txt("survey_copy_questions_to_pool"));
49  }
50  else
51  {
52  $this->addMultiCommand("insertQuestionsBefore", $lng->txt("insert_before"));
53  $this->addMultiCommand("insertQuestionsAfter", $lng->txt("insert_after"));
54  }
55 
56  // right side
57  $this->addCommandButton("saveObligatory", $lng->txt("save_obligatory_state"));
58 
59  $this->setSelectAllCheckbox("id[]");
60  $this->addColumn("", "");
61  $this->addColumn($lng->txt("survey_order"), "");
62  }
63 
64  $this->addColumn($lng->txt("title"), "");
65  $this->addColumn($lng->txt("obligatory"), "");
66  $this->addColumn($lng->txt("description"), "");
67  $this->addColumn($lng->txt("type"), "");
68  $this->addColumn($lng->txt("author"), "");
69  $this->addColumn($lng->txt("survey_question_pool"), "");
70 
71  if(!$this->read_only)
72  {
73  $this->addColumn("", "");
74  }
75 
76  $this->setDefaultOrderField("order");
77  $this->setDefaultOrderDirection("asc");
78 
79  $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
80  $this->setRowTemplate("tpl.il_svy_svy_question_table.html", "Modules/Survey");
81 
82  $this->setShowRowsSelector(true);
83 
84  $this->importData();
85  }
86 
90  protected function importData()
91  {
92  global $ilCtrl, $lng;
93 
94  $survey_questions = $this->object->getSurveyQuestions();
95  if (count($survey_questions) > 0)
96  {
97  include_once "./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php";
99 
100  $questionpools = $this->object->getQuestionpoolTitles(true);
101 
102  $table_data = array();
103  $last_questionblock_id = $position = $block_position = 0;
104  foreach ($survey_questions as $question_id => $data)
105  {
106  // question block
107  if ($data["questionblock_id"] > 0 &&
108  $data["questionblock_id"] != $last_questionblock_id)
109  {
110  $id = "qb_" . $data["questionblock_id"];
111 
112  $table_data[$id] = array("id" => $id,
113  "type" => "block",
114  "title" => $data["questionblock_title"]);
115 
116  if (!$this->read_only)
117  {
118  // order
119  if(sizeof($survey_questions) > 1)
120  {
121  $position += 10;
122  $table_data[$id]["position"] = $position;
123  }
124 
125  $ilCtrl->setParameter($this->parent_obj, "bl_id", $data["questionblock_id"]);
126  $table_data[$id]["url"] = $ilCtrl->getLinkTarget($this->parent_obj, "editQuestionblock");
127  $ilCtrl->setParameter($this->parent_obj, "bl_id", "");
128  }
129 
130  $block_position = 0;
131  }
132 
133  // question
134 
135  $id = $data["question_id"];
136 
137  $table_data[$id] = array("id" => $id,
138  "type" => "question",
139  "heading" => $data["heading"],
140  "title" => $data["title"],
141  "description" => $data["description"],
142  "author" => $data["author"],
143  "block_id" => $data["questionblock_id"],
144  "obligatory" => (bool)$data["obligatory"]);
145 
146  // question type
147  foreach ($questiontypes as $trans => $typedata)
148  {
149  if (strcmp($typedata["type_tag"], $data["type_tag"]) == 0)
150  {
151  $table_data[$id]["question_type"] = $trans;
152  }
153  }
154 
155  // pool title
156  if($data["original_id"])
157  {
158  $original_fi = SurveyQuestion::lookupObjFi($data["original_id"]);
159  if(isset($questionpools[$original_fi]))
160  {
161  $table_data[$id]["pool"] = $questionpools[$original_fi];
162  }
163  else
164  {
165  // #11186
166  $table_data[$id]["pool"] = $this->lng->txt("status_no_permission");
167  }
168  }
169 
170  if (!$this->read_only)
171  {
172  if ($data["obj_fi"] > 0)
173  {
174  // edit url
175  $q_gui = $data["type_tag"]."GUI";
176  $ilCtrl->setParameterByClass($q_gui, "q_id", $id);
177  $table_data[$id]["url"] = $ilCtrl->getLinkTargetByClass($q_gui, "editQuestion") .
178  $ilCtrl->setParameterByClass($q_gui, "q_id", "");
179  }
180 
181  // order
182  if(sizeof($survey_questions) > 1)
183  {
184  if (!$data["questionblock_id"])
185  {
186  $position += 10;
187  $table_data[$id]["position"] = $position;
188  }
189  else
190  {
191  $block_position += 10;
192  $table_data[$id]["position"] = $block_position;
193  }
194  }
195  }
196 
197  $last_questionblock_id = $data["questionblock_id"];
198  }
199  }
200 
201  $this->setData($table_data);
202  }
203 
209  protected function fillRow($a_set)
210  {
211  global $lng, $ilCtrl;
212 
213  switch($a_set["type"])
214  {
215  case "block":
216  if(!$this->read_only)
217  {
218  // checkbox
219  $this->tpl->setCurrentBlock("checkable");
220  $this->tpl->setVariable("QUESTION_ID", $a_set["id"]);
221  $this->tpl->parseCurrentBlock();
222 
223  // order
224  if($a_set["position"])
225  {
226  $this->tpl->setCurrentBlock("order");
227  $this->tpl->setVariable("ORDER_NAME", "order[".$a_set["id"]."]");
228  $this->tpl->setVariable("ORDER_VALUE", $a_set["position"]);
229  $this->tpl->parseCurrentBlock();
230  }
231  }
232 
233  $this->tpl->setVariable("TYPE", $lng->txt("questionblock"));
234  break;
235 
236  case "question":
237  $this->tpl->setVariable("DESCRIPTION", $a_set["description"]);
238  $this->tpl->setVariable("TYPE", $a_set["question_type"]);
239  $this->tpl->setVariable("AUTHOR", $a_set["author"]);
240  $this->tpl->setVariable("POOL", $a_set["pool"]);
241 
242  if($a_set["heading"])
243  {
244  $this->tpl->setCurrentBlock("heading");
245  $this->tpl->setVariable("TXT_HEADING", $a_set["heading"]);
246  $this->tpl->parseCurrentBlock();
247  }
248 
249  if($a_set["block_id"])
250  {
251  $this->tpl->setVariable("TITLE_INDENT", " style=\"padding-left:30px\"");
252  }
253 
254  if(!$this->read_only)
255  {
256  // checkbox
257  $this->tpl->setCurrentBlock("checkable");
258  $this->tpl->setVariable("QUESTION_ID", $a_set["id"]);
259  $this->tpl->parseCurrentBlock();
260 
261  if($a_set["block_id"])
262  {
263  $this->tpl->setVariable("CHECKABLE_INDENT", " style=\"padding-left:30px\"");
264  }
265 
266  // order
267  if($a_set["position"])
268  {
269  $this->tpl->setCurrentBlock("order");
270  if(!$a_set["block_id"])
271  {
272  $this->tpl->setVariable("ORDER_NAME", "order[q_".$a_set["id"]."]");
273  }
274  else
275  {
276  $this->tpl->setVariable("ORDER_NAME", "block_order[".$a_set["block_id"]."][".$a_set["id"]."]");
277  }
278  $this->tpl->setVariable("ORDER_VALUE", $a_set["position"]);
279  $this->tpl->parseCurrentBlock();
280  if($a_set["block_id"])
281  {
282  $this->tpl->setVariable("ORDER_INDENT", " style=\"padding-left:30px\"");
283  }
284  }
285 
286  // obligatory
287  $checked = $a_set["obligatory"] ? " checked=\"checked\"" : "";
288  $obligatory = "<input type=\"checkbox\" name=\"obligatory_".
289  $a_set["id"] . "\" value=\"1\"".$checked." />";
290  }
291  else if($a_set["obligatory"])
292  {
293  $obligatory = "<img src=\"".ilUtil::getImagePath("obligatory.png", "Modules/Survey").
294  "\" alt=\"".$lng->txt("question_obligatory").
295  "\" title=\"".$lng->txt("question_obligatory")."\" />";
296  }
297  $this->tpl->setVariable("OBLIGATORY", $obligatory);
298  break;
299 
300  case "heading":
301  if(!$this->read_only)
302  {
303  // checkbox
304  $this->tpl->setCurrentBlock("checkable");
305  $this->tpl->setVariable("QUESTION_ID", $a_set["id"]);
306  $this->tpl->parseCurrentBlock();
307  if($a_set["in_block"])
308  {
309  $this->tpl->setVariable("CHECKABLE_INDENT", " style=\"padding-left:30px\"");
310  $this->tpl->setVariable("TITLE_INDENT", " style=\"padding-left:30px\"");
311  }
312  }
313 
314  $this->tpl->setVariable("TYPE", $lng->txt("heading"));
315  break;
316  }
317 
318  if(!$this->read_only)
319  {
320  $this->tpl->setCurrentBlock("actions");
321 
322  $ilCtrl->setParameter($this->parent_obj, "q_id", $a_set["id"]);
323 
324  include_once "Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php";
325  $list = new ilAdvancedSelectionListGUI();
326  $list->setId($a_set["id"]);
327  $list->setListTitle($lng->txt("actions"));
328  if($a_set["url"])
329  {
330  $list->addItem($lng->txt("edit"), "", $a_set["url"]);
331  }
332 
333  if($a_set["heading"])
334  {
335  $list->addItem($lng->txt("survey_edit_heading"), "",
336  $ilCtrl->getLinkTarget($this->parent_obj, "editheading"));
337 
338  $list->addItem($lng->txt("survey_delete_heading"), "",
339  $ilCtrl->getLinkTarget($this->parent_obj, "removeheading"));
340  }
341  else if($a_set["type"] == "question")
342  {
343  $list->addItem($lng->txt("add_heading"), "",
344  $ilCtrl->getLinkTarget($this->parent_obj, "addHeading"));
345  }
346 
347  $this->tpl->setVariable("ACTION", $list->getHTML());
348 
349  $ilCtrl->setParameter($this->parent_obj, "q_id", "");
350 
351  $this->tpl->parseCurrentBlock();
352 
353  // #11186
354  if($a_set["url"])
355  {
356  $this->tpl->setCurrentBlock("title_edit");
357  $this->tpl->setVariable("TITLE", $a_set["title"]);
358  $this->tpl->setVariable("URL_TITLE", $a_set["url"]);
359  $this->tpl->parseCurrentBlock();
360  }
361  else
362  {
363  $this->tpl->setCurrentBlock("title_static");
364  $this->tpl->setVariable("TITLE", $a_set["title"]);
365  $this->tpl->parseCurrentBlock();
366  }
367  }
368  else
369  {
370  $this->tpl->setCurrentBlock("title_static");
371  $this->tpl->setVariable("TITLE", $a_set["title"]);
372  $this->tpl->parseCurrentBlock();
373  }
374  }
375 }
376 
377 ?>
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
$_SESSION["AccountId"]
static lookupObjFi($a_qid)
Lookip obj fi.
setId($a_val)
Set id.
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
Class ilTable2GUI.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
Survey question table GUI class.
__construct($a_parent_obj, $a_parent_cmd, ilObjSurvey $a_survey_obj, $a_read_only=false)
Constructor.
User interface class for advanced drop-down selection lists.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
global $lng
Definition: privfeed.php:17
static _getQuestiontypes()
Creates a list of all available question types.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
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.
setLimit($a_limit=0, $a_default_limit=0)